modal 0.10.2-dev.9 → 0.11.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.
package/dist/index.cjs CHANGED
@@ -64,6 +64,7 @@ __export(index_exports, {
64
64
  QueueFullError: () => QueueFullError,
65
65
  QueueService: () => QueueService,
66
66
  RemoteError: () => RemoteError,
67
+ ResourceExhaustedError: () => ResourceExhaustedError,
67
68
  Retries: () => Retries,
68
69
  Sandbox: () => Sandbox2,
69
70
  SandboxFilesystem: () => SandboxFilesystem,
@@ -3416,6 +3417,56 @@ function cloudBucketMount_MetadataTTLTypeToJSON(object) {
3416
3417
  return "UNRECOGNIZED";
3417
3418
  }
3418
3419
  }
3420
+ function endpointGetInfoResponse_EndpointStatusFromJSON(object) {
3421
+ switch (object) {
3422
+ case 0:
3423
+ case "ENDPOINT_STATUS_UNSPECIFIED":
3424
+ return 0 /* ENDPOINT_STATUS_UNSPECIFIED */;
3425
+ case 1:
3426
+ case "ENDPOINT_STATUS_PROVISIONING":
3427
+ return 1 /* ENDPOINT_STATUS_PROVISIONING */;
3428
+ case 2:
3429
+ case "ENDPOINT_STATUS_LIVE":
3430
+ return 2 /* ENDPOINT_STATUS_LIVE */;
3431
+ case 3:
3432
+ case "ENDPOINT_STATUS_FAILED":
3433
+ return 3 /* ENDPOINT_STATUS_FAILED */;
3434
+ case 4:
3435
+ case "ENDPOINT_STATUS_CANCELLING":
3436
+ return 4 /* ENDPOINT_STATUS_CANCELLING */;
3437
+ case 5:
3438
+ case "ENDPOINT_STATUS_CANCELLED":
3439
+ return 5 /* ENDPOINT_STATUS_CANCELLED */;
3440
+ case 6:
3441
+ case "ENDPOINT_STATUS_STOPPED":
3442
+ return 6 /* ENDPOINT_STATUS_STOPPED */;
3443
+ case -1:
3444
+ case "UNRECOGNIZED":
3445
+ default:
3446
+ return -1 /* UNRECOGNIZED */;
3447
+ }
3448
+ }
3449
+ function endpointGetInfoResponse_EndpointStatusToJSON(object) {
3450
+ switch (object) {
3451
+ case 0 /* ENDPOINT_STATUS_UNSPECIFIED */:
3452
+ return "ENDPOINT_STATUS_UNSPECIFIED";
3453
+ case 1 /* ENDPOINT_STATUS_PROVISIONING */:
3454
+ return "ENDPOINT_STATUS_PROVISIONING";
3455
+ case 2 /* ENDPOINT_STATUS_LIVE */:
3456
+ return "ENDPOINT_STATUS_LIVE";
3457
+ case 3 /* ENDPOINT_STATUS_FAILED */:
3458
+ return "ENDPOINT_STATUS_FAILED";
3459
+ case 4 /* ENDPOINT_STATUS_CANCELLING */:
3460
+ return "ENDPOINT_STATUS_CANCELLING";
3461
+ case 5 /* ENDPOINT_STATUS_CANCELLED */:
3462
+ return "ENDPOINT_STATUS_CANCELLED";
3463
+ case 6 /* ENDPOINT_STATUS_STOPPED */:
3464
+ return "ENDPOINT_STATUS_STOPPED";
3465
+ case -1 /* UNRECOGNIZED */:
3466
+ default:
3467
+ return "UNRECOGNIZED";
3468
+ }
3469
+ }
3419
3470
  function fileEntry_FileTypeFromJSON(object) {
3420
3471
  switch (object) {
3421
3472
  case 0:
@@ -18347,6 +18398,407 @@ var EndpointGetByNameResponse = {
18347
18398
  return message;
18348
18399
  }
18349
18400
  };
18401
+ function createBaseEndpointGetInfoRequest() {
18402
+ return { endpointId: "" };
18403
+ }
18404
+ var EndpointGetInfoRequest = {
18405
+ encode(message, writer = new BinaryWriter()) {
18406
+ if (message.endpointId !== "") {
18407
+ writer.uint32(10).string(message.endpointId);
18408
+ }
18409
+ return writer;
18410
+ },
18411
+ decode(input, length) {
18412
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
18413
+ let end = length === void 0 ? reader.len : reader.pos + length;
18414
+ const message = createBaseEndpointGetInfoRequest();
18415
+ while (reader.pos < end) {
18416
+ const tag = reader.uint32();
18417
+ switch (tag >>> 3) {
18418
+ case 1: {
18419
+ if (tag !== 10) {
18420
+ break;
18421
+ }
18422
+ message.endpointId = reader.string();
18423
+ continue;
18424
+ }
18425
+ }
18426
+ if ((tag & 7) === 4 || tag === 0) {
18427
+ break;
18428
+ }
18429
+ reader.skip(tag & 7);
18430
+ }
18431
+ return message;
18432
+ },
18433
+ fromJSON(object) {
18434
+ return { endpointId: isSet5(object.endpointId) ? globalThis.String(object.endpointId) : "" };
18435
+ },
18436
+ toJSON(message) {
18437
+ const obj = {};
18438
+ if (message.endpointId !== "") {
18439
+ obj.endpointId = message.endpointId;
18440
+ }
18441
+ return obj;
18442
+ },
18443
+ create(base) {
18444
+ return EndpointGetInfoRequest.fromPartial(base ?? {});
18445
+ },
18446
+ fromPartial(object) {
18447
+ const message = createBaseEndpointGetInfoRequest();
18448
+ message.endpointId = object.endpointId ?? "";
18449
+ return message;
18450
+ }
18451
+ };
18452
+ function createBaseEndpointGetInfoResponse() {
18453
+ return { info: void 0, metadata: void 0 };
18454
+ }
18455
+ var EndpointGetInfoResponse = {
18456
+ encode(message, writer = new BinaryWriter()) {
18457
+ if (message.info !== void 0) {
18458
+ EndpointGetInfoResponse_EndpointInfoSummary.encode(message.info, writer.uint32(10).fork()).join();
18459
+ }
18460
+ if (message.metadata !== void 0) {
18461
+ EndpointGetInfoResponse_EndpointHandleMetadata.encode(message.metadata, writer.uint32(18).fork()).join();
18462
+ }
18463
+ return writer;
18464
+ },
18465
+ decode(input, length) {
18466
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
18467
+ let end = length === void 0 ? reader.len : reader.pos + length;
18468
+ const message = createBaseEndpointGetInfoResponse();
18469
+ while (reader.pos < end) {
18470
+ const tag = reader.uint32();
18471
+ switch (tag >>> 3) {
18472
+ case 1: {
18473
+ if (tag !== 10) {
18474
+ break;
18475
+ }
18476
+ message.info = EndpointGetInfoResponse_EndpointInfoSummary.decode(reader, reader.uint32());
18477
+ continue;
18478
+ }
18479
+ case 2: {
18480
+ if (tag !== 18) {
18481
+ break;
18482
+ }
18483
+ message.metadata = EndpointGetInfoResponse_EndpointHandleMetadata.decode(reader, reader.uint32());
18484
+ continue;
18485
+ }
18486
+ }
18487
+ if ((tag & 7) === 4 || tag === 0) {
18488
+ break;
18489
+ }
18490
+ reader.skip(tag & 7);
18491
+ }
18492
+ return message;
18493
+ },
18494
+ fromJSON(object) {
18495
+ return {
18496
+ info: isSet5(object.info) ? EndpointGetInfoResponse_EndpointInfoSummary.fromJSON(object.info) : void 0,
18497
+ metadata: isSet5(object.metadata) ? EndpointGetInfoResponse_EndpointHandleMetadata.fromJSON(object.metadata) : void 0
18498
+ };
18499
+ },
18500
+ toJSON(message) {
18501
+ const obj = {};
18502
+ if (message.info !== void 0) {
18503
+ obj.info = EndpointGetInfoResponse_EndpointInfoSummary.toJSON(message.info);
18504
+ }
18505
+ if (message.metadata !== void 0) {
18506
+ obj.metadata = EndpointGetInfoResponse_EndpointHandleMetadata.toJSON(message.metadata);
18507
+ }
18508
+ return obj;
18509
+ },
18510
+ create(base) {
18511
+ return EndpointGetInfoResponse.fromPartial(base ?? {});
18512
+ },
18513
+ fromPartial(object) {
18514
+ const message = createBaseEndpointGetInfoResponse();
18515
+ message.info = object.info !== void 0 && object.info !== null ? EndpointGetInfoResponse_EndpointInfoSummary.fromPartial(object.info) : void 0;
18516
+ message.metadata = object.metadata !== void 0 && object.metadata !== null ? EndpointGetInfoResponse_EndpointHandleMetadata.fromPartial(object.metadata) : void 0;
18517
+ return message;
18518
+ }
18519
+ };
18520
+ function createBaseEndpointGetInfoResponse_EndpointInfoSummary() {
18521
+ return {
18522
+ name: "",
18523
+ repoId: "",
18524
+ revision: "",
18525
+ serviceUrl: "",
18526
+ requiresProxyAuth: false,
18527
+ servingMode: 0,
18528
+ status: 0,
18529
+ lifecycle: void 0,
18530
+ volumeId: "",
18531
+ modelPath: ""
18532
+ };
18533
+ }
18534
+ var EndpointGetInfoResponse_EndpointInfoSummary = {
18535
+ encode(message, writer = new BinaryWriter()) {
18536
+ if (message.name !== "") {
18537
+ writer.uint32(10).string(message.name);
18538
+ }
18539
+ if (message.repoId !== "") {
18540
+ writer.uint32(18).string(message.repoId);
18541
+ }
18542
+ if (message.revision !== "") {
18543
+ writer.uint32(26).string(message.revision);
18544
+ }
18545
+ if (message.serviceUrl !== "") {
18546
+ writer.uint32(34).string(message.serviceUrl);
18547
+ }
18548
+ if (message.requiresProxyAuth !== false) {
18549
+ writer.uint32(40).bool(message.requiresProxyAuth);
18550
+ }
18551
+ if (message.servingMode !== 0) {
18552
+ writer.uint32(48).int32(message.servingMode);
18553
+ }
18554
+ if (message.status !== 0) {
18555
+ writer.uint32(56).int32(message.status);
18556
+ }
18557
+ if (message.lifecycle !== void 0) {
18558
+ EndpointLifecycle.encode(message.lifecycle, writer.uint32(66).fork()).join();
18559
+ }
18560
+ if (message.volumeId !== "") {
18561
+ writer.uint32(90).string(message.volumeId);
18562
+ }
18563
+ if (message.modelPath !== "") {
18564
+ writer.uint32(98).string(message.modelPath);
18565
+ }
18566
+ return writer;
18567
+ },
18568
+ decode(input, length) {
18569
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
18570
+ let end = length === void 0 ? reader.len : reader.pos + length;
18571
+ const message = createBaseEndpointGetInfoResponse_EndpointInfoSummary();
18572
+ while (reader.pos < end) {
18573
+ const tag = reader.uint32();
18574
+ switch (tag >>> 3) {
18575
+ case 1: {
18576
+ if (tag !== 10) {
18577
+ break;
18578
+ }
18579
+ message.name = reader.string();
18580
+ continue;
18581
+ }
18582
+ case 2: {
18583
+ if (tag !== 18) {
18584
+ break;
18585
+ }
18586
+ message.repoId = reader.string();
18587
+ continue;
18588
+ }
18589
+ case 3: {
18590
+ if (tag !== 26) {
18591
+ break;
18592
+ }
18593
+ message.revision = reader.string();
18594
+ continue;
18595
+ }
18596
+ case 4: {
18597
+ if (tag !== 34) {
18598
+ break;
18599
+ }
18600
+ message.serviceUrl = reader.string();
18601
+ continue;
18602
+ }
18603
+ case 5: {
18604
+ if (tag !== 40) {
18605
+ break;
18606
+ }
18607
+ message.requiresProxyAuth = reader.bool();
18608
+ continue;
18609
+ }
18610
+ case 6: {
18611
+ if (tag !== 48) {
18612
+ break;
18613
+ }
18614
+ message.servingMode = reader.int32();
18615
+ continue;
18616
+ }
18617
+ case 7: {
18618
+ if (tag !== 56) {
18619
+ break;
18620
+ }
18621
+ message.status = reader.int32();
18622
+ continue;
18623
+ }
18624
+ case 8: {
18625
+ if (tag !== 66) {
18626
+ break;
18627
+ }
18628
+ message.lifecycle = EndpointLifecycle.decode(reader, reader.uint32());
18629
+ continue;
18630
+ }
18631
+ case 11: {
18632
+ if (tag !== 90) {
18633
+ break;
18634
+ }
18635
+ message.volumeId = reader.string();
18636
+ continue;
18637
+ }
18638
+ case 12: {
18639
+ if (tag !== 98) {
18640
+ break;
18641
+ }
18642
+ message.modelPath = reader.string();
18643
+ continue;
18644
+ }
18645
+ }
18646
+ if ((tag & 7) === 4 || tag === 0) {
18647
+ break;
18648
+ }
18649
+ reader.skip(tag & 7);
18650
+ }
18651
+ return message;
18652
+ },
18653
+ fromJSON(object) {
18654
+ return {
18655
+ name: isSet5(object.name) ? globalThis.String(object.name) : "",
18656
+ repoId: isSet5(object.repoId) ? globalThis.String(object.repoId) : "",
18657
+ revision: isSet5(object.revision) ? globalThis.String(object.revision) : "",
18658
+ serviceUrl: isSet5(object.serviceUrl) ? globalThis.String(object.serviceUrl) : "",
18659
+ requiresProxyAuth: isSet5(object.requiresProxyAuth) ? globalThis.Boolean(object.requiresProxyAuth) : false,
18660
+ servingMode: isSet5(object.servingMode) ? endpointServingModeFromJSON(object.servingMode) : 0,
18661
+ status: isSet5(object.status) ? endpointGetInfoResponse_EndpointStatusFromJSON(object.status) : 0,
18662
+ lifecycle: isSet5(object.lifecycle) ? EndpointLifecycle.fromJSON(object.lifecycle) : void 0,
18663
+ volumeId: isSet5(object.volumeId) ? globalThis.String(object.volumeId) : "",
18664
+ modelPath: isSet5(object.modelPath) ? globalThis.String(object.modelPath) : ""
18665
+ };
18666
+ },
18667
+ toJSON(message) {
18668
+ const obj = {};
18669
+ if (message.name !== "") {
18670
+ obj.name = message.name;
18671
+ }
18672
+ if (message.repoId !== "") {
18673
+ obj.repoId = message.repoId;
18674
+ }
18675
+ if (message.revision !== "") {
18676
+ obj.revision = message.revision;
18677
+ }
18678
+ if (message.serviceUrl !== "") {
18679
+ obj.serviceUrl = message.serviceUrl;
18680
+ }
18681
+ if (message.requiresProxyAuth !== false) {
18682
+ obj.requiresProxyAuth = message.requiresProxyAuth;
18683
+ }
18684
+ if (message.servingMode !== 0) {
18685
+ obj.servingMode = endpointServingModeToJSON(message.servingMode);
18686
+ }
18687
+ if (message.status !== 0) {
18688
+ obj.status = endpointGetInfoResponse_EndpointStatusToJSON(message.status);
18689
+ }
18690
+ if (message.lifecycle !== void 0) {
18691
+ obj.lifecycle = EndpointLifecycle.toJSON(message.lifecycle);
18692
+ }
18693
+ if (message.volumeId !== "") {
18694
+ obj.volumeId = message.volumeId;
18695
+ }
18696
+ if (message.modelPath !== "") {
18697
+ obj.modelPath = message.modelPath;
18698
+ }
18699
+ return obj;
18700
+ },
18701
+ create(base) {
18702
+ return EndpointGetInfoResponse_EndpointInfoSummary.fromPartial(base ?? {});
18703
+ },
18704
+ fromPartial(object) {
18705
+ const message = createBaseEndpointGetInfoResponse_EndpointInfoSummary();
18706
+ message.name = object.name ?? "";
18707
+ message.repoId = object.repoId ?? "";
18708
+ message.revision = object.revision ?? "";
18709
+ message.serviceUrl = object.serviceUrl ?? "";
18710
+ message.requiresProxyAuth = object.requiresProxyAuth ?? false;
18711
+ message.servingMode = object.servingMode ?? 0;
18712
+ message.status = object.status ?? 0;
18713
+ message.lifecycle = object.lifecycle !== void 0 && object.lifecycle !== null ? EndpointLifecycle.fromPartial(object.lifecycle) : void 0;
18714
+ message.volumeId = object.volumeId ?? "";
18715
+ message.modelPath = object.modelPath ?? "";
18716
+ return message;
18717
+ }
18718
+ };
18719
+ function createBaseEndpointGetInfoResponse_EndpointHandleMetadata() {
18720
+ return { appId: "", serverId: "", environmentName: "" };
18721
+ }
18722
+ var EndpointGetInfoResponse_EndpointHandleMetadata = {
18723
+ encode(message, writer = new BinaryWriter()) {
18724
+ if (message.appId !== "") {
18725
+ writer.uint32(10).string(message.appId);
18726
+ }
18727
+ if (message.serverId !== "") {
18728
+ writer.uint32(18).string(message.serverId);
18729
+ }
18730
+ if (message.environmentName !== "") {
18731
+ writer.uint32(26).string(message.environmentName);
18732
+ }
18733
+ return writer;
18734
+ },
18735
+ decode(input, length) {
18736
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
18737
+ let end = length === void 0 ? reader.len : reader.pos + length;
18738
+ const message = createBaseEndpointGetInfoResponse_EndpointHandleMetadata();
18739
+ while (reader.pos < end) {
18740
+ const tag = reader.uint32();
18741
+ switch (tag >>> 3) {
18742
+ case 1: {
18743
+ if (tag !== 10) {
18744
+ break;
18745
+ }
18746
+ message.appId = reader.string();
18747
+ continue;
18748
+ }
18749
+ case 2: {
18750
+ if (tag !== 18) {
18751
+ break;
18752
+ }
18753
+ message.serverId = reader.string();
18754
+ continue;
18755
+ }
18756
+ case 3: {
18757
+ if (tag !== 26) {
18758
+ break;
18759
+ }
18760
+ message.environmentName = reader.string();
18761
+ continue;
18762
+ }
18763
+ }
18764
+ if ((tag & 7) === 4 || tag === 0) {
18765
+ break;
18766
+ }
18767
+ reader.skip(tag & 7);
18768
+ }
18769
+ return message;
18770
+ },
18771
+ fromJSON(object) {
18772
+ return {
18773
+ appId: isSet5(object.appId) ? globalThis.String(object.appId) : "",
18774
+ serverId: isSet5(object.serverId) ? globalThis.String(object.serverId) : "",
18775
+ environmentName: isSet5(object.environmentName) ? globalThis.String(object.environmentName) : ""
18776
+ };
18777
+ },
18778
+ toJSON(message) {
18779
+ const obj = {};
18780
+ if (message.appId !== "") {
18781
+ obj.appId = message.appId;
18782
+ }
18783
+ if (message.serverId !== "") {
18784
+ obj.serverId = message.serverId;
18785
+ }
18786
+ if (message.environmentName !== "") {
18787
+ obj.environmentName = message.environmentName;
18788
+ }
18789
+ return obj;
18790
+ },
18791
+ create(base) {
18792
+ return EndpointGetInfoResponse_EndpointHandleMetadata.fromPartial(base ?? {});
18793
+ },
18794
+ fromPartial(object) {
18795
+ const message = createBaseEndpointGetInfoResponse_EndpointHandleMetadata();
18796
+ message.appId = object.appId ?? "";
18797
+ message.serverId = object.serverId ?? "";
18798
+ message.environmentName = object.environmentName ?? "";
18799
+ return message;
18800
+ }
18801
+ };
18350
18802
  function createBaseEndpointGetLifecycleRequest() {
18351
18803
  return { endpointId: "" };
18352
18804
  }
@@ -22612,7 +23064,6 @@ function createBaseFunctionMessage() {
22612
23064
  ExperimentalFabricSize: 0,
22613
23065
  untrusted: false,
22614
23066
  ExperimentalBufferContainers: 0,
22615
- ExperimentalProxyIp: void 0,
22616
23067
  runtimePerfRecord: false,
22617
23068
  schedule: void 0,
22618
23069
  snapshotDebug: false,
@@ -22806,9 +23257,6 @@ var FunctionMessage = {
22806
23257
  if (message.ExperimentalBufferContainers !== 0) {
22807
23258
  writer.uint32(552).uint32(message.ExperimentalBufferContainers);
22808
23259
  }
22809
- if (message.ExperimentalProxyIp !== void 0) {
22810
- writer.uint32(562).string(message.ExperimentalProxyIp);
22811
- }
22812
23260
  if (message.runtimePerfRecord !== false) {
22813
23261
  writer.uint32(568).bool(message.runtimePerfRecord);
22814
23262
  }
@@ -23279,13 +23727,6 @@ var FunctionMessage = {
23279
23727
  message.ExperimentalBufferContainers = reader.uint32();
23280
23728
  continue;
23281
23729
  }
23282
- case 70: {
23283
- if (tag !== 562) {
23284
- break;
23285
- }
23286
- message.ExperimentalProxyIp = reader.string();
23287
- continue;
23288
- }
23289
23730
  case 71: {
23290
23731
  if (tag !== 568) {
23291
23732
  break;
@@ -23539,7 +23980,6 @@ var FunctionMessage = {
23539
23980
  ExperimentalFabricSize: isSet5(object.ExperimentalFabricSize) ? globalThis.Number(object.ExperimentalFabricSize) : 0,
23540
23981
  untrusted: isSet5(object.untrusted) ? globalThis.Boolean(object.untrusted) : false,
23541
23982
  ExperimentalBufferContainers: isSet5(object.ExperimentalBufferContainers) ? globalThis.Number(object.ExperimentalBufferContainers) : 0,
23542
- ExperimentalProxyIp: isSet5(object.ExperimentalProxyIp) ? globalThis.String(object.ExperimentalProxyIp) : void 0,
23543
23983
  runtimePerfRecord: isSet5(object.runtimePerfRecord) ? globalThis.Boolean(object.runtimePerfRecord) : false,
23544
23984
  schedule: isSet5(object.schedule) ? Schedule.fromJSON(object.schedule) : void 0,
23545
23985
  snapshotDebug: isSet5(object.snapshotDebug) ? globalThis.Boolean(object.snapshotDebug) : false,
@@ -23739,9 +24179,6 @@ var FunctionMessage = {
23739
24179
  if (message.ExperimentalBufferContainers !== 0) {
23740
24180
  obj.ExperimentalBufferContainers = Math.round(message.ExperimentalBufferContainers);
23741
24181
  }
23742
- if (message.ExperimentalProxyIp !== void 0) {
23743
- obj.ExperimentalProxyIp = message.ExperimentalProxyIp;
23744
- }
23745
24182
  if (message.runtimePerfRecord !== false) {
23746
24183
  obj.runtimePerfRecord = message.runtimePerfRecord;
23747
24184
  }
@@ -23888,7 +24325,6 @@ var FunctionMessage = {
23888
24325
  message.ExperimentalFabricSize = object.ExperimentalFabricSize ?? 0;
23889
24326
  message.untrusted = object.untrusted ?? false;
23890
24327
  message.ExperimentalBufferContainers = object.ExperimentalBufferContainers ?? 0;
23891
- message.ExperimentalProxyIp = object.ExperimentalProxyIp ?? void 0;
23892
24328
  message.runtimePerfRecord = object.runtimePerfRecord ?? false;
23893
24329
  message.schedule = object.schedule !== void 0 && object.schedule !== null ? Schedule.fromPartial(object.schedule) : void 0;
23894
24330
  message.snapshotDebug = object.snapshotDebug ?? false;
@@ -25995,7 +26431,6 @@ function createBaseFunctionData() {
25995
26431
  webUrlInfo: void 0,
25996
26432
  webhookConfig: void 0,
25997
26433
  customDomainInfo: [],
25998
- ExperimentalProxyIp: void 0,
25999
26434
  methodDefinitions: {},
26000
26435
  methodDefinitionsSet: false,
26001
26436
  isClass: false,
@@ -26074,9 +26509,6 @@ var FunctionData = {
26074
26509
  for (const v of message.customDomainInfo) {
26075
26510
  CustomDomainInfo.encode(v, writer.uint32(98).fork()).join();
26076
26511
  }
26077
- if (message.ExperimentalProxyIp !== void 0) {
26078
- writer.uint32(194).string(message.ExperimentalProxyIp);
26079
- }
26080
26512
  Object.entries(message.methodDefinitions).forEach(([key, value]) => {
26081
26513
  FunctionData_MethodDefinitionsEntry.encode({ key, value }, writer.uint32(202).fork()).join();
26082
26514
  });
@@ -26278,13 +26710,6 @@ var FunctionData = {
26278
26710
  message.customDomainInfo.push(CustomDomainInfo.decode(reader, reader.uint32()));
26279
26711
  continue;
26280
26712
  }
26281
- case 24: {
26282
- if (tag !== 194) {
26283
- break;
26284
- }
26285
- message.ExperimentalProxyIp = reader.string();
26286
- continue;
26287
- }
26288
26713
  case 25: {
26289
26714
  if (tag !== 202) {
26290
26715
  break;
@@ -26493,7 +26918,6 @@ var FunctionData = {
26493
26918
  webUrlInfo: isSet5(object.webUrlInfo) ? WebUrlInfo.fromJSON(object.webUrlInfo) : void 0,
26494
26919
  webhookConfig: isSet5(object.webhookConfig) ? WebhookConfig.fromJSON(object.webhookConfig) : void 0,
26495
26920
  customDomainInfo: globalThis.Array.isArray(object?.customDomainInfo) ? object.customDomainInfo.map((e) => CustomDomainInfo.fromJSON(e)) : [],
26496
- ExperimentalProxyIp: isSet5(object.ExperimentalProxyIp) ? globalThis.String(object.ExperimentalProxyIp) : void 0,
26497
26921
  methodDefinitions: isObject2(object.methodDefinitions) ? Object.entries(object.methodDefinitions).reduce((acc, [key, value]) => {
26498
26922
  acc[key] = MethodDefinition.fromJSON(value);
26499
26923
  return acc;
@@ -26578,9 +27002,6 @@ var FunctionData = {
26578
27002
  if (message.customDomainInfo?.length) {
26579
27003
  obj.customDomainInfo = message.customDomainInfo.map((e) => CustomDomainInfo.toJSON(e));
26580
27004
  }
26581
- if (message.ExperimentalProxyIp !== void 0) {
26582
- obj.ExperimentalProxyIp = message.ExperimentalProxyIp;
26583
- }
26584
27005
  if (message.methodDefinitions) {
26585
27006
  const entries = Object.entries(message.methodDefinitions);
26586
27007
  if (entries.length > 0) {
@@ -26686,7 +27107,6 @@ var FunctionData = {
26686
27107
  message.webUrlInfo = object.webUrlInfo !== void 0 && object.webUrlInfo !== null ? WebUrlInfo.fromPartial(object.webUrlInfo) : void 0;
26687
27108
  message.webhookConfig = object.webhookConfig !== void 0 && object.webhookConfig !== null ? WebhookConfig.fromPartial(object.webhookConfig) : void 0;
26688
27109
  message.customDomainInfo = object.customDomainInfo?.map((e) => CustomDomainInfo.fromPartial(e)) || [];
26689
- message.ExperimentalProxyIp = object.ExperimentalProxyIp ?? void 0;
26690
27110
  message.methodDefinitions = Object.entries(object.methodDefinitions ?? {}).reduce((acc, [key, value]) => {
26691
27111
  if (value !== void 0) {
26692
27112
  acc[key] = MethodDefinition.fromPartial(value);
@@ -61285,6 +61705,14 @@ var ModalClientDefinition = {
61285
61705
  responseStream: false,
61286
61706
  options: {}
61287
61707
  },
61708
+ endpointGetInfo: {
61709
+ name: "EndpointGetInfo",
61710
+ requestType: EndpointGetInfoRequest,
61711
+ requestStream: false,
61712
+ responseType: EndpointGetInfoResponse,
61713
+ responseStream: false,
61714
+ options: {}
61715
+ },
61288
61716
  endpointGetLifecycle: {
61289
61717
  name: "EndpointGetLifecycle",
61290
61718
  requestType: EndpointGetLifecycleRequest,
@@ -62936,6 +63364,12 @@ var QueueFullError = class extends Error {
62936
63364
  this.name = "QueueFullError";
62937
63365
  }
62938
63366
  };
63367
+ var ResourceExhaustedError = class extends Error {
63368
+ constructor(message) {
63369
+ super(message);
63370
+ this.name = "ResourceExhaustedError";
63371
+ }
63372
+ };
62939
63373
  var SandboxFilesystemError = class extends Error {
62940
63374
  constructor(message) {
62941
63375
  super(message);
@@ -63458,6 +63892,16 @@ var CloudBucketMount2 = class {
63458
63892
  });
63459
63893
  }
63460
63894
  };
63895
+ function buildCloudBucketMountProtos(mounts) {
63896
+ return Object.entries(mounts ?? {}).map(([mountPath, mount]) => {
63897
+ if (!mount) {
63898
+ throw new InvalidError(
63899
+ `CloudBucketMount mounted at "${mountPath}" must not be null or undefined`
63900
+ );
63901
+ }
63902
+ return mount.toProto(mountPath);
63903
+ });
63904
+ }
63461
63905
 
63462
63906
  // src/secret.ts
63463
63907
  var import_nice_grpc2 = require("nice-grpc");
@@ -63491,7 +63935,7 @@ var SecretService = class {
63491
63935
  "secret_name",
63492
63936
  name
63493
63937
  );
63494
- return new Secret(resp.secretId, name);
63938
+ return new Secret(resp.secretId, name, void 0, resp.metadata?.keys);
63495
63939
  } catch (err) {
63496
63940
  if (err instanceof import_nice_grpc2.ClientError && err.code === import_nice_grpc2.Status.NOT_FOUND)
63497
63941
  throw new NotFoundError(err.details);
@@ -63590,16 +64034,20 @@ var Secret = class {
63590
64034
  // constructed already-hydrated (e.g. from fromName), and not consulted again
63591
64035
  // once secretId is set.
63592
64036
  #hydrator;
64037
+ // Names of the env vars a server-side Secret defines, as reported by the
64038
+ // control plane on fromName. Undefined when unknown.
64039
+ #keys;
63593
64040
  // Caches the single in-flight (or successfully completed) hydration so the
63594
64041
  // ephemeral Secret is created at most once, even if multiple callers hydrate
63595
64042
  // the same Secret concurrently. Cleared on failure so a transient error
63596
64043
  // doesn't permanently break the Secret; subsequent calls can retry.
63597
64044
  #hydratePromise;
63598
64045
  /** @ignore */
63599
- constructor(secretId, name, hydrator) {
64046
+ constructor(secretId, name, hydrator, keys) {
63600
64047
  this.#secretId = secretId;
63601
64048
  this.name = name;
63602
64049
  this.#hydrator = hydrator;
64050
+ this.#keys = keys !== void 0 ? new Set(keys) : void 0;
63603
64051
  }
63604
64052
  /** The ID of the server-side Secret, or an empty string if not yet hydrated. */
63605
64053
  get secretId() {
@@ -63615,6 +64063,16 @@ var Secret = class {
63615
64063
  get _hydrator() {
63616
64064
  return this.#hydrator;
63617
64065
  }
64066
+ /**
64067
+ * Names of the env vars this server-side Secret defines, or `undefined` if
64068
+ * unknown (e.g. for lazy fromObject Secrets or Secrets constructed by id).
64069
+ *
64070
+ * @internal
64071
+ * @hidden
64072
+ */
64073
+ get _keys() {
64074
+ return this.#keys;
64075
+ }
63618
64076
  /**
63619
64077
  * Lazily create the ephemeral server-side Secret backing a fromObject Secret
63620
64078
  * and populate {@link Secret#secretId secretId}. A no-op once secretId is set
@@ -63682,6 +64140,9 @@ function splitEnvDictAndResolvableSecrets(secrets) {
63682
64140
  if (hydrator !== void 0) {
63683
64141
  Object.assign(envDict, hydrator.envDict);
63684
64142
  } else {
64143
+ for (const key of secret?._keys ?? []) {
64144
+ delete envDict[key];
64145
+ }
63685
64146
  resolvable.push(secret);
63686
64147
  }
63687
64148
  }
@@ -65377,7 +65838,8 @@ function createBaseTaskContainerCreateRequest() {
65377
65838
  secretIds: [],
65378
65839
  volumeMounts: [],
65379
65840
  networkAccess: void 0,
65380
- ptyInfo: void 0
65841
+ ptyInfo: void 0,
65842
+ memoryReserveConsumeMib: void 0
65381
65843
  };
65382
65844
  }
65383
65845
  var TaskContainerCreateRequest = {
@@ -65412,6 +65874,9 @@ var TaskContainerCreateRequest = {
65412
65874
  if (message.ptyInfo !== void 0) {
65413
65875
  PTYInfo.encode(message.ptyInfo, writer.uint32(90).fork()).join();
65414
65876
  }
65877
+ if (message.memoryReserveConsumeMib !== void 0) {
65878
+ writer.uint32(96).uint32(message.memoryReserveConsumeMib);
65879
+ }
65415
65880
  return writer;
65416
65881
  },
65417
65882
  decode(input, length) {
@@ -65494,6 +65959,13 @@ var TaskContainerCreateRequest = {
65494
65959
  message.ptyInfo = PTYInfo.decode(reader, reader.uint32());
65495
65960
  continue;
65496
65961
  }
65962
+ case 12: {
65963
+ if (tag !== 96) {
65964
+ break;
65965
+ }
65966
+ message.memoryReserveConsumeMib = reader.uint32();
65967
+ continue;
65968
+ }
65497
65969
  }
65498
65970
  if ((tag & 7) === 4 || tag === 0) {
65499
65971
  break;
@@ -65516,7 +65988,8 @@ var TaskContainerCreateRequest = {
65516
65988
  secretIds: globalThis.Array.isArray(object?.secretIds) ? object.secretIds.map((e) => globalThis.String(e)) : [],
65517
65989
  volumeMounts: globalThis.Array.isArray(object?.volumeMounts) ? object.volumeMounts.map((e) => VolumeMount.fromJSON(e)) : [],
65518
65990
  networkAccess: isSet6(object.networkAccess) ? NetworkAccess.fromJSON(object.networkAccess) : void 0,
65519
- ptyInfo: isSet6(object.ptyInfo) ? PTYInfo.fromJSON(object.ptyInfo) : void 0
65991
+ ptyInfo: isSet6(object.ptyInfo) ? PTYInfo.fromJSON(object.ptyInfo) : void 0,
65992
+ memoryReserveConsumeMib: isSet6(object.memoryReserveConsumeMib) ? globalThis.Number(object.memoryReserveConsumeMib) : void 0
65520
65993
  };
65521
65994
  },
65522
65995
  toJSON(message) {
@@ -65557,6 +66030,9 @@ var TaskContainerCreateRequest = {
65557
66030
  if (message.ptyInfo !== void 0) {
65558
66031
  obj.ptyInfo = PTYInfo.toJSON(message.ptyInfo);
65559
66032
  }
66033
+ if (message.memoryReserveConsumeMib !== void 0) {
66034
+ obj.memoryReserveConsumeMib = Math.round(message.memoryReserveConsumeMib);
66035
+ }
65560
66036
  return obj;
65561
66037
  },
65562
66038
  create(base) {
@@ -65579,6 +66055,7 @@ var TaskContainerCreateRequest = {
65579
66055
  message.volumeMounts = object.volumeMounts?.map((e) => VolumeMount.fromPartial(e)) || [];
65580
66056
  message.networkAccess = object.networkAccess !== void 0 && object.networkAccess !== null ? NetworkAccess.fromPartial(object.networkAccess) : void 0;
65581
66057
  message.ptyInfo = object.ptyInfo !== void 0 && object.ptyInfo !== null ? PTYInfo.fromPartial(object.ptyInfo) : void 0;
66058
+ message.memoryReserveConsumeMib = object.memoryReserveConsumeMib ?? void 0;
65582
66059
  return message;
65583
66060
  }
65584
66061
  };
@@ -70956,7 +71433,11 @@ var MAIN_CONTAINER_NAME = "main";
70956
71433
  var CONTAINER_WAIT_POLL_TIMEOUT_SECONDS = 10;
70957
71434
  var CONTROL_PLANE_SIDECAR_CREATE_ENV_VAR = "MODAL_USE_CONTROL_PLANE_SIDECAR_CREATE";
70958
71435
  function useControlPlaneSidecarCreate(sandboxId) {
70959
- return getSandboxVersion(sandboxId) === "V2" /* V2 */ && process.env[CONTROL_PLANE_SIDECAR_CREATE_ENV_VAR] === "1";
71436
+ if (getSandboxVersion(sandboxId) !== "V2" /* V2 */) {
71437
+ return false;
71438
+ }
71439
+ const value = process.env[CONTROL_PLANE_SIDECAR_CREATE_ENV_VAR];
71440
+ return value === void 0 || parseBooleanFlag(value);
70960
71441
  }
70961
71442
  function validateSidecarName(name) {
70962
71443
  if (name === "") {
@@ -71021,14 +71502,44 @@ var SidecarService = class {
71021
71502
  const command = params?.command ?? [];
71022
71503
  validateExecArgs(command);
71023
71504
  validateWorkdir(params?.workdir);
71505
+ if (params?.experimentalMemoryReserveConsumeMiB !== void 0 && (!Number.isInteger(params.experimentalMemoryReserveConsumeMiB) || params.experimentalMemoryReserveConsumeMiB <= 0)) {
71506
+ throw new InvalidError(
71507
+ `experimentalMemoryReserveConsumeMiB must be a positive integer number of MiB, got: ${params.experimentalMemoryReserveConsumeMiB}`
71508
+ );
71509
+ }
71510
+ const viaControlPlane = useControlPlaneSidecarCreate(
71511
+ this.#access.sandboxId
71512
+ );
71513
+ const cloudBucketMountEntries = Object.entries(
71514
+ params?.cloudBucketMounts ?? {}
71515
+ );
71516
+ if (cloudBucketMountEntries.length > 0) {
71517
+ if (getSandboxVersion(this.#access.sandboxId) !== "V2" /* V2 */) {
71518
+ throw new InvalidError(
71519
+ "cloudBucketMounts are not supported in sidecars of V1 Sandboxes. A Sandbox is V1 when it has a GPU or MODAL_SANDBOX_V2=0 is set; contact Modal support for more information"
71520
+ );
71521
+ }
71522
+ if (!viaControlPlane) {
71523
+ throw new InvalidError(
71524
+ `cloudBucketMounts are not supported in sidecars when ${CONTROL_PLANE_SIDECAR_CREATE_ENV_VAR}=0 is set; unset it to use them`
71525
+ );
71526
+ }
71527
+ }
71024
71528
  validateEnvVarKeys(params?.env ?? {});
71025
71529
  const [envDict, resolvableSecrets] = splitEnvDictAndResolvableSecrets(
71026
71530
  params?.secrets ?? []
71027
71531
  );
71028
71532
  Object.assign(envDict, params?.env ?? {});
71029
- await hydrateSecrets(this.#access.client, resolvableSecrets);
71533
+ await hydrateSandboxSecrets(
71534
+ this.#access.client,
71535
+ resolvableSecrets,
71536
+ params?.cloudBucketMounts
71537
+ );
71030
71538
  const secretIds = collectSecretIds(resolvableSecrets);
71031
71539
  const volumeMounts = buildSidecarVolumeMounts(params?.volumes);
71540
+ const cloudBucketMounts = buildCloudBucketMountProtos(
71541
+ params?.cloudBucketMounts
71542
+ );
71032
71543
  const ptyInfo = params?.pty ? defaultSandboxPTYInfo() : void 0;
71033
71544
  const networkAccess = buildOutboundNetworkAccess(
71034
71545
  false,
@@ -71037,7 +71548,7 @@ var SidecarService = class {
71037
71548
  );
71038
71549
  let resp;
71039
71550
  try {
71040
- if (useControlPlaneSidecarCreate(this.#access.sandboxId)) {
71551
+ if (viaControlPlane) {
71041
71552
  const ephemeralSecrets = Object.keys(envDict).length > 0 ? StringMap.create({ contents: envDict }) : void 0;
71042
71553
  resp = await this.#access.client.cpClient.sandboxContainerCreateV2(
71043
71554
  SandboxContainerCreateV2Request.create({
@@ -71049,8 +71560,12 @@ var SidecarService = class {
71049
71560
  workdir: params?.workdir ?? void 0,
71050
71561
  secretIds,
71051
71562
  volumeMounts,
71563
+ cloudBucketMounts,
71052
71564
  networkAccess,
71053
- ptyInfo
71565
+ ptyInfo,
71566
+ resources: params?.experimentalMemoryReserveConsumeMiB !== void 0 ? Resources.create({
71567
+ memoryMb: params.experimentalMemoryReserveConsumeMiB
71568
+ }) : void 0
71054
71569
  }),
71055
71570
  ephemeralSecrets
71056
71571
  })
@@ -71068,7 +71583,8 @@ var SidecarService = class {
71068
71583
  secretIds,
71069
71584
  volumeMounts,
71070
71585
  networkAccess,
71071
- ptyInfo
71586
+ ptyInfo,
71587
+ memoryReserveConsumeMib: params?.experimentalMemoryReserveConsumeMiB
71072
71588
  })
71073
71589
  );
71074
71590
  }
@@ -71479,6 +71995,14 @@ var SB_LOGS_INITIAL_DELAY_MS = 10;
71479
71995
  var SB_LOGS_DELAY_FACTOR = 2;
71480
71996
  var SB_LOGS_MAX_RETRIES = 10;
71481
71997
  var SB_LOGS_TASK_ID_TIMEOUT_SECONDS = 0.5;
71998
+ var SANDBOX_SCHEDULING_TIMEOUT_MS = 21 * 60 * 1e3;
71999
+ var GET_TASK_ID_TIMEOUT_MS = 5 * 60 * 1e3;
72000
+ function isTransientTaskIDLookupError(err) {
72001
+ if (!(err instanceof import_nice_grpc12.ClientError)) {
72002
+ return false;
72003
+ }
72004
+ return err.code === import_nice_grpc12.Status.UNAVAILABLE || err.code === import_nice_grpc12.Status.DEADLINE_EXCEEDED || err.code === import_nice_grpc12.Status.INTERNAL;
72005
+ }
71482
72006
  var TTL_NO_EXPIRY_SENTINEL = -1;
71483
72007
  var CUSTOMER_SUPPLIED_ENCRYPTION_KEY_MIN_LENGTH = 16;
71484
72008
  var CUSTOMER_SUPPLIED_ENCRYPTION_KEY_MAX_LENGTH = 512;
@@ -71678,9 +72202,9 @@ async function buildSandboxCreateRequestProto(appId, imageId, params = {}) {
71678
72202
  const volumeMounts = params.volumes ? Object.entries(params.volumes).map(
71679
72203
  ([mountPath, volume]) => volumeToMountProto(mountPath, volume)
71680
72204
  ) : [];
71681
- const cloudBucketMounts = params.cloudBucketMounts ? Object.entries(params.cloudBucketMounts).map(
71682
- ([mountPath, mount]) => mount.toProto(mountPath)
71683
- ) : [];
72205
+ const cloudBucketMounts = buildCloudBucketMountProtos(
72206
+ params.cloudBucketMounts
72207
+ );
71684
72208
  const openPorts = [];
71685
72209
  if (params.encryptedPorts) {
71686
72210
  openPorts.push(
@@ -71912,7 +72436,9 @@ var SandboxService = class {
71912
72436
  "sandbox_id",
71913
72437
  createResp.sandboxId
71914
72438
  );
71915
- return new Sandbox2(this.#client, createResp.sandboxId);
72439
+ const sb = new Sandbox2(this.#client, createResp.sandboxId);
72440
+ await sb._waitForScheduling(SANDBOX_SCHEDULING_TIMEOUT_MS);
72441
+ return sb;
71916
72442
  }
71917
72443
  /**
71918
72444
  * Create a new {@link Sandbox} using the experimental V2 backend.
@@ -72354,7 +72880,7 @@ function buildTaskSnapshotDirectoryRequestProto(taskId, path2, snapshotId, ttlSe
72354
72880
  containerId
72355
72881
  });
72356
72882
  }
72357
- var Sandbox2 = class _Sandbox {
72883
+ var Sandbox2 = class {
72358
72884
  #client;
72359
72885
  sandboxId;
72360
72886
  #appId;
@@ -72655,15 +73181,15 @@ var Sandbox2 = class _Sandbox {
72655
73181
  }
72656
73182
  return this.#client.cpClient.sandboxWait(req);
72657
73183
  }
72658
- #sandboxGetTaskId(signal, timeout) {
73184
+ #sandboxGetTaskId(timeoutSecs, options) {
72659
73185
  const req = SandboxGetTaskIdRequest.create({
72660
73186
  sandboxId: this.sandboxId,
72661
- timeout
73187
+ timeout: timeoutSecs
72662
73188
  });
72663
73189
  if (this.#isV2) {
72664
- return this.#client.cpClient.sandboxGetTaskIdV2(req, { signal });
73190
+ return this.#client.cpClient.sandboxGetTaskIdV2(req, options);
72665
73191
  }
72666
- return this.#client.cpClient.sandboxGetTaskId(req, { signal });
73192
+ return this.#client.cpClient.sandboxGetTaskId(req, options);
72667
73193
  }
72668
73194
  #sandboxGetTunnels(timeoutMs) {
72669
73195
  const req = { sandboxId: this.sandboxId, timeout: timeoutMs / 1e3 };
@@ -72687,8 +73213,6 @@ var Sandbox2 = class _Sandbox {
72687
73213
  }
72688
73214
  await this.#client.cpClient.sandboxTerminate(req);
72689
73215
  }
72690
- static #maxGetTaskIdAttempts = 600;
72691
- // 5 minutes at 500ms intervals
72692
73216
  async #getAppId() {
72693
73217
  if (this.#appId !== void 0) {
72694
73218
  return this.#appId;
@@ -72709,10 +73233,7 @@ var Sandbox2 = class _Sandbox {
72709
73233
  }
72710
73234
  let resp;
72711
73235
  try {
72712
- resp = await this.#sandboxGetTaskId(
72713
- void 0,
72714
- SB_LOGS_TASK_ID_TIMEOUT_SECONDS
72715
- );
73236
+ resp = await this.#sandboxGetTaskId(SB_LOGS_TASK_ID_TIMEOUT_SECONDS);
72716
73237
  } catch (error) {
72717
73238
  if (error instanceof import_nice_grpc12.ClientError && error.code === import_nice_grpc12.Status.DEADLINE_EXCEEDED) {
72718
73239
  throw new ExecutionError("Sandbox task ID is not available yet.");
@@ -72726,28 +73247,92 @@ var Sandbox2 = class _Sandbox {
72726
73247
  return this.#taskId;
72727
73248
  }
72728
73249
  async #getTaskId(signal) {
73250
+ return await this.#waitForTaskId(GET_TASK_ID_TIMEOUT_MS, false, signal);
73251
+ }
73252
+ /**
73253
+ * Blocks until the Sandbox has a task. If the wait fails, the Sandbox is
73254
+ * terminated so a queued one cannot start later with no caller. A timeout
73255
+ * surfaces as a ResourceExhaustedError.
73256
+ *
73257
+ * @internal
73258
+ * @hidden
73259
+ */
73260
+ async _waitForScheduling(timeoutMs) {
73261
+ try {
73262
+ await this.#waitForTaskId(timeoutMs, true);
73263
+ } catch (err) {
73264
+ if (err instanceof ConflictError) {
73265
+ throw err;
73266
+ }
73267
+ try {
73268
+ await this.#sandboxTerminate();
73269
+ } catch (terminateErr) {
73270
+ this.#client.logger.debug(
73271
+ "Failed to terminate unscheduled Sandbox",
73272
+ "sandbox_id",
73273
+ this.sandboxId,
73274
+ "error",
73275
+ terminateErr
73276
+ );
73277
+ }
73278
+ if (err instanceof TimeoutError) {
73279
+ throw new ResourceExhaustedError(
73280
+ "Insufficient capacity to create sandbox."
73281
+ );
73282
+ }
73283
+ throw err;
73284
+ }
73285
+ }
73286
+ /**
73287
+ * Polls until the Sandbox has been assigned a task. Throws a ConflictError
73288
+ * if the Sandbox finished before that happened and a TimeoutError once
73289
+ * timeoutMs elapses. With retryTransient, lookups that fail with a
73290
+ * transient error keep polling until the deadline instead of failing.
73291
+ */
73292
+ async #waitForTaskId(timeoutMs, retryTransient, signal) {
72729
73293
  if (this.#taskId !== void 0) {
72730
73294
  return this.#taskId;
72731
73295
  }
72732
- for (let i = 0; i < _Sandbox.#maxGetTaskIdAttempts; i++) {
72733
- const resp = await this.#sandboxGetTaskId(signal);
73296
+ const deadline = Date.now() + timeoutMs;
73297
+ const timedOut = () => new TimeoutError(
73298
+ `Timed out waiting for task ID for Sandbox ${this.sandboxId}`
73299
+ );
73300
+ const pollIntervalMs = 500;
73301
+ const noTimeLeft = () => deadline - Date.now() <= pollIntervalMs;
73302
+ while (true) {
73303
+ let resp;
73304
+ try {
73305
+ resp = await this.#sandboxGetTaskId(void 0, { signal });
73306
+ } catch (err) {
73307
+ if (signal?.aborted || !isTransientTaskIDLookupError(err)) {
73308
+ throw err;
73309
+ }
73310
+ if (!retryTransient && Date.now() < deadline) {
73311
+ throw err;
73312
+ }
73313
+ if (noTimeLeft()) {
73314
+ if (err instanceof import_nice_grpc12.ClientError && err.code === import_nice_grpc12.Status.INTERNAL) {
73315
+ throw err;
73316
+ }
73317
+ throw timedOut();
73318
+ }
73319
+ await (0, import_promises3.setTimeout)(pollIntervalMs, void 0, { signal });
73320
+ continue;
73321
+ }
72734
73322
  if (resp.taskId) {
72735
73323
  this.#taskId = resp.taskId;
72736
73324
  return this.#taskId;
72737
73325
  }
72738
73326
  if (resp.taskResult) {
72739
- if (resp.taskResult.status === 1 /* GENERIC_STATUS_SUCCESS */ || !resp.taskResult.exception) {
72740
- throw new Error(`Sandbox ${this.sandboxId} has already completed`);
72741
- }
72742
- throw new Error(
72743
- `Sandbox ${this.sandboxId} has already completed with result: exception:"${resp.taskResult.exception}"`
73327
+ throw new ConflictError(
73328
+ resp.taskResult.exception || `Sandbox ${this.sandboxId} has already finished`
72744
73329
  );
72745
73330
  }
72746
- await (0, import_promises3.setTimeout)(500, void 0, { signal });
73331
+ if (noTimeLeft()) {
73332
+ throw timedOut();
73333
+ }
73334
+ await (0, import_promises3.setTimeout)(pollIntervalMs, void 0, { signal });
72747
73335
  }
72748
- throw new Error(
72749
- `Timed out waiting for task ID for Sandbox ${this.sandboxId}`
72750
- );
72751
73336
  }
72752
73337
  async #getOrCreateCommandRouterClient(taskId) {
72753
73338
  if (this.#commandRouterClient !== void 0) {
@@ -73735,7 +74320,7 @@ var AuthTokenManager = class {
73735
74320
  };
73736
74321
 
73737
74322
  // src/version.ts
73738
- var SDK_VERSION = "0.10.2-dev.9";
74323
+ var SDK_VERSION = "0.11.0";
73739
74324
  function getSDKVersion() {
73740
74325
  return SDK_VERSION;
73741
74326
  }
@@ -76315,6 +76900,7 @@ var ExperimentalOutboundPolicy = class _ExperimentalOutboundPolicy {
76315
76900
  QueueFullError,
76316
76901
  QueueService,
76317
76902
  RemoteError,
76903
+ ResourceExhaustedError,
76318
76904
  Retries,
76319
76905
  Sandbox,
76320
76906
  SandboxFilesystem,