modal 0.8.2 → 0.10.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.d.ts CHANGED
@@ -28,6 +28,13 @@ interface MessageFns$2<T> {
28
28
  fromPartial(object: DeepPartial$2<T>): T;
29
29
  }
30
30
 
31
+ /**
32
+ * gRPC protos for Modal's public API surface.
33
+ * Warning: direct usage of Modal's gRPC API is discouraged,
34
+ * and no support or compatibility guarantees are provided.
35
+ * Message fields or entire RPCs may be changed or removed
36
+ * without notice. We recommend using official SDKs instead.
37
+ */
31
38
  declare enum AppDeployVisibility {
32
39
  APP_DEPLOY_VISIBILITY_UNSPECIFIED = 0,
33
40
  APP_DEPLOY_VISIBILITY_WORKSPACE = 1,
@@ -126,6 +133,15 @@ declare enum DeploymentNamespace {
126
133
  DEPLOYMENT_NAMESPACE_GLOBAL = 3,
127
134
  UNRECOGNIZED = -1
128
135
  }
136
+ declare enum DeploymentType {
137
+ DEPLOYMENT_TYPE_UNSPECIFIED = 0,
138
+ DEPLOYMENT_TYPE_STANDARD = 1,
139
+ DEPLOYMENT_TYPE_ROLLBACK = 2,
140
+ DEPLOYMENT_TYPE_ROLLOVER = 3,
141
+ DEPLOYMENT_TYPE_PROMOTION = 4,
142
+ DEPLOYMENT_TYPE_STAGED = 5,
143
+ UNRECOGNIZED = -1
144
+ }
129
145
  declare enum EndpointApiSurface {
130
146
  ENDPOINT_API_SURFACE_UNSPECIFIED = 0,
131
147
  ENDPOINT_API_SURFACE_OPENAI_CHAT_COMPLETIONS = 1,
@@ -156,6 +172,12 @@ declare enum EndpointProvisioningStatus {
156
172
  ENDPOINT_PROVISIONING_STATUS_CANCELLED = 6,
157
173
  UNRECOGNIZED = -1
158
174
  }
175
+ declare enum EndpointServingMode {
176
+ ENDPOINT_SERVING_MODE_UNSPECIFIED = 0,
177
+ ENDPOINT_SERVING_MODE_DEDICATED = 1,
178
+ ENDPOINT_SERVING_MODE_SHARED = 2,
179
+ UNRECOGNIZED = -1
180
+ }
159
181
  declare enum EndpointStopSource {
160
182
  ENDPOINT_STOP_SOURCE_UNSPECIFIED = 0,
161
183
  ENDPOINT_STOP_SOURCE_CLI = 1,
@@ -166,6 +188,17 @@ declare enum EnvironmentRole {
166
188
  ENVIRONMENT_ROLE_UNSPECIFIED = 0,
167
189
  ENVIRONMENT_ROLE_VIEWER = 1,
168
190
  ENVIRONMENT_ROLE_CONTRIBUTOR = 2,
191
+ ENVIRONMENT_ROLE_NO_ACCESS = 3,
192
+ UNRECOGNIZED = -1
193
+ }
194
+ /**
195
+ * Creation-time environment classification. Captures whether an environment
196
+ * is public. is_managed and machine_generated may be folded in as future
197
+ * values.
198
+ */
199
+ declare enum EnvironmentType {
200
+ ENVIRONMENT_TYPE_UNSPECIFIED = 0,
201
+ ENVIRONMENT_TYPE_PUBLIC = 1,
169
202
  UNRECOGNIZED = -1
170
203
  }
171
204
  declare enum ExecOutputOption {
@@ -433,6 +466,11 @@ declare enum GenericResult_GenericStatus {
433
466
  GENERIC_STATUS_INTERNAL_FAILURE = 6,
434
467
  /** GENERIC_STATUS_IDLE_TIMEOUT - Used when sandboxes are terminated due to idle_timeout */
435
468
  GENERIC_STATUS_IDLE_TIMEOUT = 7,
469
+ /**
470
+ * GENERIC_STATUS_MEMORY_MANAGER_EVICTION - Used when a task was killed because it was evicted by the memory manager when the worker was
471
+ * under memory pressure.
472
+ */
473
+ GENERIC_STATUS_MEMORY_MANAGER_EVICTION = 8,
436
474
  UNRECOGNIZED = -1
437
475
  }
438
476
  declare enum NetworkAccess_NetworkAccessType {
@@ -451,6 +489,12 @@ declare enum PTYInfo_PTYType {
451
489
  PTY_TYPE_SHELL = 2,
452
490
  UNRECOGNIZED = -1
453
491
  }
492
+ declare enum SandboxGetExitSnapshotResponse_ErrorCode {
493
+ ERROR_CODE_UNSPECIFIED = 0,
494
+ ERROR_CODE_TIMEOUT = 1,
495
+ ERROR_CODE_INTERNAL = 2,
496
+ UNRECOGNIZED = -1
497
+ }
454
498
  declare enum SandboxRestoreRequest_SandboxNameOverrideType {
455
499
  SANDBOX_NAME_OVERRIDE_TYPE_UNSPECIFIED = 0,
456
500
  SANDBOX_NAME_OVERRIDE_TYPE_NONE = 1,
@@ -536,6 +580,7 @@ interface AppDeploymentHistory {
536
580
  rollbackVersion: number;
537
581
  rollbackAllowed: boolean;
538
582
  commitInfo?: CommitInfo | undefined;
583
+ deploymentType: DeploymentType;
539
584
  }
540
585
  declare const AppDeploymentHistory: MessageFns$1<AppDeploymentHistory>;
541
586
  interface AppDeploymentHistoryRequest {
@@ -544,6 +589,7 @@ interface AppDeploymentHistoryRequest {
544
589
  declare const AppDeploymentHistoryRequest: MessageFns$1<AppDeploymentHistoryRequest>;
545
590
  interface AppDeploymentHistoryResponse {
546
591
  appDeploymentHistories: AppDeploymentHistory[];
592
+ productionAppVersion: number;
547
593
  }
548
594
  declare const AppDeploymentHistoryResponse: MessageFns$1<AppDeploymentHistoryResponse>;
549
595
  interface AppFetchLogsRequest {
@@ -705,6 +751,17 @@ interface AppLookupResponse {
705
751
  appId: string;
706
752
  }
707
753
  declare const AppLookupResponse: MessageFns$1<AppLookupResponse>;
754
+ interface AppPromoteRequest {
755
+ appId: string;
756
+ version: number;
757
+ }
758
+ declare const AppPromoteRequest: MessageFns$1<AppPromoteRequest>;
759
+ interface AppPromoteResponse {
760
+ url: string;
761
+ serverWarnings: Warning[];
762
+ deployedAt: number;
763
+ }
764
+ declare const AppPromoteResponse: MessageFns$1<AppPromoteResponse>;
708
765
  interface AppPublishRequest {
709
766
  appId: string;
710
767
  name: string;
@@ -734,6 +791,12 @@ interface AppPublishRequest {
734
791
  tags: {
735
792
  [key: string]: string;
736
793
  };
794
+ /**
795
+ * If true, create a version pinned deployment but don't update the production deployment
796
+ * definition on publish
797
+ */
798
+ staged: boolean;
799
+ deploymentType: DeploymentType;
737
800
  }
738
801
  declare const AppPublishRequest: MessageFns$1<AppPublishRequest>;
739
802
  interface AppPublishResponse {
@@ -813,6 +876,7 @@ interface AttemptStartRequest {
813
876
  functionId: string;
814
877
  parentInputId: string;
815
878
  input: FunctionPutInputsItem | undefined;
879
+ proxied: boolean;
816
880
  }
817
881
  declare const AttemptStartRequest: MessageFns$1<AttemptStartRequest>;
818
882
  interface AttemptStartResponse {
@@ -842,10 +906,15 @@ interface AutoscalerSettings {
842
906
  scaleupWindow?: number | undefined;
843
907
  /** Maximum amount of time a container can be idle before being scaled down, in seconds; pka "container_idle_timeout" */
844
908
  scaledownWindow?: number | undefined;
845
- /** Target concurrent inputs per replica for Flash autoscaling. */
909
+ /**
910
+ * Integer-valued target concurrent requests per replica for Flash autoscaling.
911
+ * Superseded by `target_concurrency_float`, which allows non-integer targets.
912
+ */
846
913
  targetConcurrency?: number | undefined;
847
914
  /** Maximum number of containers that can be scaled down per minute for Flash autoscaling. */
848
915
  scaledownRateLimit?: number | undefined;
916
+ /** Target concurrent requests per replica for Flash autoscaling; may be fractional. */
917
+ targetConcurrencyFloat?: number | undefined;
849
918
  }
850
919
  declare const AutoscalerSettings: MessageFns$1<AutoscalerSettings>;
851
920
  interface BaseImage {
@@ -1012,6 +1081,11 @@ interface ClusterStats {
1012
1081
  startedAt: number;
1013
1082
  }
1014
1083
  declare const ClusterStats: MessageFns$1<ClusterStats>;
1084
+ interface CommandRouterAccess$1 {
1085
+ jwt: string;
1086
+ url: string;
1087
+ }
1088
+ declare const CommandRouterAccess$1: MessageFns$1<CommandRouterAccess$1>;
1015
1089
  interface CommitInfo {
1016
1090
  /** Only git is supported for now */
1017
1091
  vcs: string;
@@ -1197,6 +1271,13 @@ declare const ContainerReloadVolumesRequest: MessageFns$1<ContainerReloadVolumes
1197
1271
  interface ContainerReloadVolumesResponse {
1198
1272
  }
1199
1273
  declare const ContainerReloadVolumesResponse: MessageFns$1<ContainerReloadVolumesResponse>;
1274
+ /**
1275
+ * Sent by server containers once lifecycle enter methods have completed.
1276
+ * Only handled on worker by server_io_manager.
1277
+ */
1278
+ interface ContainerServerLifecycleReadyRequest {
1279
+ }
1280
+ declare const ContainerServerLifecycleReadyRequest: MessageFns$1<ContainerServerLifecycleReadyRequest>;
1200
1281
  interface ContainerStopRequest {
1201
1282
  taskId: string;
1202
1283
  /** Let a Function container finish processing any inputs before exiting. */
@@ -1415,6 +1496,7 @@ interface EndpointCreateRequest {
1415
1496
  inputModalities: EndpointInputModality[];
1416
1497
  environmentName: string;
1417
1498
  unauthenticated: boolean;
1499
+ servingMode: EndpointServingMode;
1418
1500
  }
1419
1501
  declare const EndpointCreateRequest: MessageFns$1<EndpointCreateRequest>;
1420
1502
  interface EndpointCreateResponse {
@@ -1477,6 +1559,7 @@ interface EndpointListItem {
1477
1559
  createdByAvatarUrl: string;
1478
1560
  provisioningStatus: EndpointProvisioningStatus;
1479
1561
  status: string;
1562
+ servingMode: EndpointServingMode;
1480
1563
  }
1481
1564
  declare const EndpointListItem: MessageFns$1<EndpointListItem>;
1482
1565
  interface EndpointListRequest {
@@ -1512,10 +1595,34 @@ declare const EndpointStopRequest: MessageFns$1<EndpointStopRequest>;
1512
1595
  interface EndpointStopResponse {
1513
1596
  }
1514
1597
  declare const EndpointStopResponse: MessageFns$1<EndpointStopResponse>;
1598
+ interface EnvironmentBillingSummaryRequest {
1599
+ /** all query intervals are implicitly one month long (to line up with billing cycles) */
1600
+ startTimestamp: Date | undefined;
1601
+ environmentId: string;
1602
+ }
1603
+ declare const EnvironmentBillingSummaryRequest: MessageFns$1<EnvironmentBillingSummaryRequest>;
1604
+ interface EnvironmentBillingSummaryResponse {
1605
+ startTimestamp: Date | undefined;
1606
+ endTimestamp: Date | undefined;
1607
+ /**
1608
+ * not showing credits, reservations, etc as those are applied
1609
+ * at the workspace level
1610
+ */
1611
+ meteredCost: string;
1612
+ /** keyed by deployed, ephemeral, volume, notebook */
1613
+ meteredCostBreakdown: {
1614
+ [key: string]: string;
1615
+ };
1616
+ }
1617
+ declare const EnvironmentBillingSummaryResponse: MessageFns$1<EnvironmentBillingSummaryResponse>;
1515
1618
  interface EnvironmentCreateRequest {
1516
1619
  name: string;
1517
1620
  isManaged: boolean;
1518
1621
  settings: EnvironmentSettings | undefined;
1622
+ environmentType: EnvironmentType;
1623
+ defaultMemberRole?: EnvironmentRole | undefined;
1624
+ /** String representation; parsed when the enum is unspecified. */
1625
+ defaultMemberRoleStr: string;
1519
1626
  }
1520
1627
  declare const EnvironmentCreateRequest: MessageFns$1<EnvironmentCreateRequest>;
1521
1628
  interface EnvironmentDeleteRequest {
@@ -1566,6 +1673,33 @@ interface EnvironmentGetOrCreateResponse {
1566
1673
  metadata: EnvironmentMetadata | undefined;
1567
1674
  }
1568
1675
  declare const EnvironmentGetOrCreateResponse: MessageFns$1<EnvironmentGetOrCreateResponse>;
1676
+ interface EnvironmentGetRolesRequest {
1677
+ environmentId: string;
1678
+ }
1679
+ declare const EnvironmentGetRolesRequest: MessageFns$1<EnvironmentGetRolesRequest>;
1680
+ interface EnvironmentGetRolesResponse {
1681
+ name: string;
1682
+ createdAt: number;
1683
+ principalRoles: EnvironmentGetRolesResponse_Principal[];
1684
+ defaultMemberRole?: EnvironmentRole | undefined;
1685
+ }
1686
+ declare const EnvironmentGetRolesResponse: MessageFns$1<EnvironmentGetRolesResponse>;
1687
+ interface EnvironmentGetRolesResponse_Principal {
1688
+ userId: string;
1689
+ serviceUserId: string;
1690
+ email: string;
1691
+ avatarUrl: string;
1692
+ userName: string;
1693
+ serviceUserName: string;
1694
+ role: EnvironmentRole;
1695
+ /** String representation for the CLI */
1696
+ roleStr: string;
1697
+ choosableRoles: EnvironmentRole[];
1698
+ memberRole: MemberRole;
1699
+ inheritsDefaultMemberRole?: boolean | undefined;
1700
+ hasRoleAssignment?: boolean | undefined;
1701
+ }
1702
+ declare const EnvironmentGetRolesResponse_Principal: MessageFns$1<EnvironmentGetRolesResponse_Principal>;
1569
1703
  interface EnvironmentListItem {
1570
1704
  name: string;
1571
1705
  webhookSuffix: string;
@@ -1582,6 +1716,8 @@ interface EnvironmentListItem {
1582
1716
  effectiveCycleSpendLimit: number;
1583
1717
  currentCycleUsage: number;
1584
1718
  spendLimitReached: boolean;
1719
+ environmentType: EnvironmentType;
1720
+ defaultMemberRole?: EnvironmentRole | undefined;
1585
1721
  }
1586
1722
  declare const EnvironmentListItem: MessageFns$1<EnvironmentListItem>;
1587
1723
  interface EnvironmentListResponse {
@@ -1591,6 +1727,7 @@ declare const EnvironmentListResponse: MessageFns$1<EnvironmentListResponse>;
1591
1727
  interface EnvironmentMetadata {
1592
1728
  name: string;
1593
1729
  settings: EnvironmentSettings | undefined;
1730
+ environmentType: EnvironmentType;
1594
1731
  }
1595
1732
  declare const EnvironmentMetadata: MessageFns$1<EnvironmentMetadata>;
1596
1733
  interface EnvironmentRoleSetRequest {
@@ -1598,6 +1735,8 @@ interface EnvironmentRoleSetRequest {
1598
1735
  userId: string;
1599
1736
  serviceUserId: string;
1600
1737
  role: EnvironmentRole;
1738
+ /** String representation from the CLI; parsed when role is unspecified */
1739
+ roleStr: string;
1601
1740
  }
1602
1741
  declare const EnvironmentRoleSetRequest: MessageFns$1<EnvironmentRoleSetRequest>;
1603
1742
  interface EnvironmentSetBudgetRequest {
@@ -1606,9 +1745,15 @@ interface EnvironmentSetBudgetRequest {
1606
1745
  clearBudget: boolean;
1607
1746
  }
1608
1747
  declare const EnvironmentSetBudgetRequest: MessageFns$1<EnvironmentSetBudgetRequest>;
1748
+ interface EnvironmentSetDefaultMemberRoleRequest {
1749
+ environmentId: string;
1750
+ defaultMemberRole: EnvironmentRole;
1751
+ }
1752
+ declare const EnvironmentSetDefaultMemberRoleRequest: MessageFns$1<EnvironmentSetDefaultMemberRoleRequest>;
1609
1753
  interface EnvironmentSetManagedRequest {
1610
1754
  environmentId: string;
1611
1755
  managed: boolean;
1756
+ defaultMemberRole?: EnvironmentRole | undefined;
1612
1757
  }
1613
1758
  declare const EnvironmentSetManagedRequest: MessageFns$1<EnvironmentSetManagedRequest>;
1614
1759
  /**
@@ -1765,6 +1910,11 @@ interface FunctionMessage {
1765
1910
  * to schedule in tandem.
1766
1911
  */
1767
1912
  ExperimentalGroupSize: number;
1913
+ /**
1914
+ * When set on a "grouped" function, constrains placement across GPU-memory
1915
+ * fabrics: the cluster is placed in co-fabric blocks of this size.
1916
+ */
1917
+ ExperimentalFabricSize: number;
1768
1918
  /** If set, the function will be run in an untrusted environment. */
1769
1919
  untrusted: boolean;
1770
1920
  /** To be replaced by autoscaler_settings.buffer_containers */
@@ -1828,6 +1978,8 @@ interface FunctionMessage {
1828
1978
  isServer: boolean;
1829
1979
  /** Where inputs to a function should be routed through. */
1830
1980
  routingRegion: string;
1981
+ /** True when the function is a Sessioned Server. Only valid together with is_server. */
1982
+ isSessioned: boolean;
1831
1983
  }
1832
1984
  declare const FunctionMessage: MessageFns$1<FunctionMessage>;
1833
1985
  interface FunctionAsyncInvokeRequest {
@@ -1877,6 +2029,7 @@ declare const FunctionCallFromIdRequest: MessageFns$1<FunctionCallFromIdRequest>
1877
2029
  interface FunctionCallFromIdResponse {
1878
2030
  functionCallId: string;
1879
2031
  numInputs: number;
2032
+ metadata: FunctionCallHandleMetadata | undefined;
1880
2033
  }
1881
2034
  declare const FunctionCallFromIdResponse: MessageFns$1<FunctionCallFromIdResponse>;
1882
2035
  interface FunctionCallGetDataRequest {
@@ -1885,6 +2038,20 @@ interface FunctionCallGetDataRequest {
1885
2038
  lastIndex: number;
1886
2039
  }
1887
2040
  declare const FunctionCallGetDataRequest: MessageFns$1<FunctionCallGetDataRequest>;
2041
+ interface FunctionCallGetInfoRequest {
2042
+ functionId: string;
2043
+ functionCallId: string;
2044
+ }
2045
+ declare const FunctionCallGetInfoRequest: MessageFns$1<FunctionCallGetInfoRequest>;
2046
+ interface FunctionCallGetInfoResponse {
2047
+ info: FunctionCallInfo | undefined;
2048
+ }
2049
+ declare const FunctionCallGetInfoResponse: MessageFns$1<FunctionCallGetInfoResponse>;
2050
+ interface FunctionCallHandleMetadata {
2051
+ appId: string;
2052
+ functionId: string;
2053
+ }
2054
+ declare const FunctionCallHandleMetadata: MessageFns$1<FunctionCallHandleMetadata>;
1888
2055
  interface FunctionCallInfo {
1889
2056
  functionCallId: string;
1890
2057
  idx: number;
@@ -1936,9 +2103,11 @@ interface FunctionCreateResponse {
1936
2103
  * @deprecated
1937
2104
  */
1938
2105
  DeprecatedWebUrl: string;
2106
+ /** deprecated soon */
1939
2107
  function: FunctionMessage | undefined;
1940
2108
  handleMetadata: FunctionHandleMetadata | undefined;
1941
2109
  serverWarnings: Warning[];
2110
+ functionData: FunctionData | undefined;
1942
2111
  }
1943
2112
  declare const FunctionCreateResponse: MessageFns$1<FunctionCreateResponse>;
1944
2113
  /**
@@ -1964,6 +2133,7 @@ interface FunctionData {
1964
2133
  * to schedule in tandem.
1965
2134
  */
1966
2135
  ExperimentalGroupSize: number;
2136
+ ExperimentalFabricSize: number;
1967
2137
  ExperimentalBufferContainers: number;
1968
2138
  ExperimentalCustomScaling: boolean;
1969
2139
  ExperimentalEnableGpuSnapshot: boolean;
@@ -2023,6 +2193,8 @@ interface FunctionData {
2023
2193
  isServer: boolean;
2024
2194
  /** Where inputs to a function should be routed through. */
2025
2195
  routingRegion: string;
2196
+ /** True when the function is a Sessioned Server. Only valid together with is_server. */
2197
+ isSessioned: boolean;
2026
2198
  }
2027
2199
  declare const FunctionData: MessageFns$1<FunctionData>;
2028
2200
  interface FunctionData_RankedFunction {
@@ -2074,8 +2246,6 @@ interface FunctionGetInputsItem {
2074
2246
  declare const FunctionGetInputsItem: MessageFns$1<FunctionGetInputsItem>;
2075
2247
  interface FunctionGetInputsRequest {
2076
2248
  functionId: string;
2077
- maxValues: number;
2078
- averageCallTime: number;
2079
2249
  /** Container aims to fetch multiple inputs at the same time */
2080
2250
  inputConcurrency: number;
2081
2251
  /** Maximum number of inputs to fetch at once */
@@ -2139,6 +2309,7 @@ interface FunctionGetResponse {
2139
2309
  functionId: string;
2140
2310
  handleMetadata: FunctionHandleMetadata | undefined;
2141
2311
  serverWarnings: Warning[];
2312
+ function: FunctionData | undefined;
2142
2313
  }
2143
2314
  declare const FunctionGetResponse: MessageFns$1<FunctionGetResponse>;
2144
2315
  interface FunctionGetSerializedRequest {
@@ -2150,6 +2321,54 @@ interface FunctionGetSerializedResponse {
2150
2321
  classSerialized: Uint8Array;
2151
2322
  }
2152
2323
  declare const FunctionGetSerializedResponse: MessageFns$1<FunctionGetSerializedResponse>;
2324
+ interface FunctionGetTimeRangeStatsRequest {
2325
+ functionId: string;
2326
+ /** Inclusive. */
2327
+ since: Date | undefined;
2328
+ /** Exclusive. */
2329
+ until: Date | undefined;
2330
+ /** Aggregate the root Function pool and its non-version-pinned variant pools. */
2331
+ rollup: boolean;
2332
+ }
2333
+ declare const FunctionGetTimeRangeStatsRequest: MessageFns$1<FunctionGetTimeRangeStatsRequest>;
2334
+ interface FunctionGetTimeRangeStatsResponse {
2335
+ /** Inclusive. */
2336
+ since: Date | undefined;
2337
+ /** Exclusive. */
2338
+ until: Date | undefined;
2339
+ /**
2340
+ * Per-input latency distributions.
2341
+ * Execution time derived from inputs that finish in the window
2342
+ */
2343
+ executionTimeSeconds: FunctionStatsPercentiles | undefined;
2344
+ /**
2345
+ * Purposely omitted for now since it can't be computed
2346
+ * from the desired tables without caveats that are confusing
2347
+ * to explain to users
2348
+ */
2349
+ queueTimeSeconds: FunctionStatsPercentiles | undefined;
2350
+ endToEndLatencySeconds: FunctionStatsPercentiles | undefined;
2351
+ /** Container startup is measured from enqueue to start. */
2352
+ containerStartupTimeSeconds: FunctionStatsPercentiles | undefined;
2353
+ /** Counts of inputs that finish in the requested time range. */
2354
+ inputSuccessCount: number;
2355
+ inputFailureCount: number;
2356
+ inputTimeoutCount: number;
2357
+ /**
2358
+ * Resource distributions are computed from normalized container heartbeat
2359
+ * observations and expressed as fractions, where 1.0 represents 100% utilization.
2360
+ * A missing message indicates that no observations were available.
2361
+ */
2362
+ cpuUtilization: FunctionStatsPercentiles | undefined;
2363
+ memoryUtilization: FunctionStatsPercentiles | undefined;
2364
+ gpuUtilization: FunctionStatsPercentiles | undefined;
2365
+ /**
2366
+ * Number of direct non-version-pinned variants included in the roll-up.
2367
+ * Zero when roll-up is disabled or the base Function has no variants.
2368
+ */
2369
+ variantCount: number;
2370
+ }
2371
+ declare const FunctionGetTimeRangeStatsResponse: MessageFns$1<FunctionGetTimeRangeStatsResponse>;
2153
2372
  /**
2154
2373
  * contains all the info about a function that is needed to trigger the right
2155
2374
  * behaviour when using a FunctionHandler. Notably excludes things purely
@@ -2176,10 +2395,12 @@ interface FunctionHandleMetadata {
2176
2395
  inputPlaneRegion?: string | undefined;
2177
2396
  /** Use optional to ensure unset values default to None instead of 0 */
2178
2397
  maxObjectSizeBytes?: number | undefined;
2398
+ maxAsyncObjectSizeBytes?: number | undefined;
2179
2399
  /** (Optional) urls for flash services */
2180
2400
  ExperimentalFlashUrls: string[];
2181
2401
  supportedInputFormats: DataFormat[];
2182
2402
  supportedOutputFormats: DataFormat[];
2403
+ appId: string;
2183
2404
  }
2184
2405
  declare const FunctionHandleMetadata: MessageFns$1<FunctionHandleMetadata>;
2185
2406
  interface FunctionInput {
@@ -2344,6 +2565,11 @@ interface FunctionStats$1 {
2344
2565
  inputHeadroom: number;
2345
2566
  }
2346
2567
  declare const FunctionStats$1: MessageFns$1<FunctionStats$1>;
2568
+ interface FunctionStatsPercentiles {
2569
+ p50: number;
2570
+ p90: number;
2571
+ }
2572
+ declare const FunctionStatsPercentiles: MessageFns$1<FunctionStatsPercentiles>;
2347
2573
  interface FunctionUpdateSchedulingParamsRequest {
2348
2574
  functionId: string;
2349
2575
  warmPoolSizeOverride: number;
@@ -2351,6 +2577,7 @@ interface FunctionUpdateSchedulingParamsRequest {
2351
2577
  }
2352
2578
  declare const FunctionUpdateSchedulingParamsRequest: MessageFns$1<FunctionUpdateSchedulingParamsRequest>;
2353
2579
  interface FunctionUpdateSchedulingParamsResponse {
2580
+ currentSettings: AutoscalerSettings | undefined;
2354
2581
  }
2355
2582
  declare const FunctionUpdateSchedulingParamsResponse: MessageFns$1<FunctionUpdateSchedulingParamsResponse>;
2356
2583
  interface GPUConfig {
@@ -2428,6 +2655,22 @@ interface Image$1 {
2428
2655
  volumeMounts: VolumeMount[];
2429
2656
  }
2430
2657
  declare const Image$1: MessageFns$1<Image$1>;
2658
+ interface ImageBuildChainGetRequest {
2659
+ imageId: string;
2660
+ }
2661
+ declare const ImageBuildChainGetRequest: MessageFns$1<ImageBuildChainGetRequest>;
2662
+ interface ImageBuildChainGetResponse {
2663
+ buildSteps: ImageBuildStep[];
2664
+ }
2665
+ declare const ImageBuildChainGetResponse: MessageFns$1<ImageBuildChainGetResponse>;
2666
+ interface ImageBuildStep {
2667
+ imageId: string;
2668
+ startedAt: Date | undefined;
2669
+ finishedAt: Date | undefined;
2670
+ builderAppId: string;
2671
+ builderTaskId: string;
2672
+ }
2673
+ declare const ImageBuildStep: MessageFns$1<ImageBuildStep>;
2431
2674
  interface ImageContextFile {
2432
2675
  filename: string;
2433
2676
  data: Uint8Array;
@@ -2447,8 +2690,15 @@ interface ImageFromIdResponse {
2447
2690
  }
2448
2691
  declare const ImageFromIdResponse: MessageFns$1<ImageFromIdResponse>;
2449
2692
  interface ImageGetByTagRequest {
2450
- /** Full "name:tag" string. Must be non-empty. */
2693
+ /**
2694
+ * Named image reference: "[[workspace/]environment/]name[:tag]".
2695
+ * The tag suffix defaults to "latest" when omitted.
2696
+ */
2451
2697
  tag: string;
2698
+ /**
2699
+ * New clients should send environment name as a /-separated prefix of the `tag` field.
2700
+ * environment_name only accepted when tag has no environment or workspace prefix.
2701
+ */
2452
2702
  environmentName: string;
2453
2703
  }
2454
2704
  declare const ImageGetByTagRequest: MessageFns$1<ImageGetByTagRequest>;
@@ -2545,11 +2795,18 @@ interface ImageMetadata {
2545
2795
  declare const ImageMetadata: MessageFns$1<ImageMetadata>;
2546
2796
  interface ImagePublishRequest {
2547
2797
  imageId: string;
2548
- /** Full "name:tag" string. Must be non-empty. Each ImagePublish RPC writes exactly one tag. */
2798
+ /**
2799
+ * Named image reference: "[[workspace/]environment/]name[:tag]".
2800
+ * The tag suffix defaults to "latest" when omitted.
2801
+ */
2549
2802
  tag: string;
2803
+ /**
2804
+ * New clients should send environment name as a /-separated prefix of the `tag` field.
2805
+ * environment_name only accepted when tag has no environment or workspace prefix.
2806
+ */
2550
2807
  environmentName: string;
2551
- /** Marks the published tag as public. Public read protocol is defined separately. */
2552
- isPublic: boolean;
2808
+ /** Explicit opt-in required when publishing to a public environment. */
2809
+ allowPublic: boolean;
2553
2810
  }
2554
2811
  declare const ImagePublishRequest: MessageFns$1<ImagePublishRequest>;
2555
2812
  interface ImagePublishResponse {
@@ -2570,8 +2827,15 @@ interface ImageTagRevisionsItem {
2570
2827
  }
2571
2828
  declare const ImageTagRevisionsItem: MessageFns$1<ImageTagRevisionsItem>;
2572
2829
  interface ImageTagRevisionsRequest {
2573
- /** Full "name:tag" string. Must be non-empty. */
2830
+ /**
2831
+ * Named image reference: "[[workspace/]environment/]name[:tag]".
2832
+ * The tag suffix defaults to "latest" when omitted.
2833
+ */
2574
2834
  tag: string;
2835
+ /**
2836
+ * New clients should send environment name as a /-separated prefix of the `tag` field.
2837
+ * environment_name only accepted when tag has no environment or workspace prefix.
2838
+ */
2575
2839
  environmentName: string;
2576
2840
  /** Defaults to 100. Values above 100 are rejected by the server. */
2577
2841
  maxObjects: number;
@@ -2648,6 +2912,7 @@ interface MapStartOrContinueRequest {
2648
2912
  functionCallId?: string | undefined;
2649
2913
  mapToken?: string | undefined;
2650
2914
  items: MapStartOrContinueItem[];
2915
+ proxied: boolean;
2651
2916
  }
2652
2917
  declare const MapStartOrContinueRequest: MessageFns$1<MapStartOrContinueRequest>;
2653
2918
  interface MapStartOrContinueResponse {
@@ -2675,6 +2940,14 @@ interface MethodDefinition {
2675
2940
  supportedOutputFormats: DataFormat[];
2676
2941
  }
2677
2942
  declare const MethodDefinition: MessageFns$1<MethodDefinition>;
2943
+ interface MountBatchedCheckExistenceRequest {
2944
+ sha256HexHashes: string[];
2945
+ }
2946
+ declare const MountBatchedCheckExistenceRequest: MessageFns$1<MountBatchedCheckExistenceRequest>;
2947
+ interface MountBatchedCheckExistenceResponse {
2948
+ missingSha256HexHashes: string[];
2949
+ }
2950
+ declare const MountBatchedCheckExistenceResponse: MessageFns$1<MountBatchedCheckExistenceResponse>;
2678
2951
  interface MountFile {
2679
2952
  filename: string;
2680
2953
  /** SHA-256 checksum of the file. */
@@ -3218,18 +3491,25 @@ interface SandboxCreateRequest {
3218
3491
  declare const SandboxCreateRequest: MessageFns$1<SandboxCreateRequest>;
3219
3492
  interface SandboxCreateResponse {
3220
3493
  sandboxId: string;
3494
+ metadata: SandboxHandleMetadata | undefined;
3221
3495
  }
3222
3496
  declare const SandboxCreateResponse: MessageFns$1<SandboxCreateResponse>;
3223
3497
  interface SandboxCreateV2Request {
3224
3498
  appId: string;
3225
3499
  definition: Sandbox$1 | undefined;
3226
3500
  ephemeralSecrets: StringMap | undefined;
3501
+ tags: SandboxTag[];
3502
+ cloudBucketMountCredentials: {
3503
+ [key: string]: StringMap;
3504
+ };
3227
3505
  }
3228
3506
  declare const SandboxCreateV2Request: MessageFns$1<SandboxCreateV2Request>;
3229
3507
  interface SandboxCreateV2Response {
3230
3508
  sandboxId: string;
3231
3509
  tunnels: TunnelData[];
3232
3510
  taskId: string;
3511
+ metadata: SandboxHandleMetadata | undefined;
3512
+ commandRouterAccess: CommandRouterAccess$1 | undefined;
3233
3513
  }
3234
3514
  declare const SandboxCreateV2Response: MessageFns$1<SandboxCreateV2Response>;
3235
3515
  /**
@@ -3237,7 +3517,8 @@ declare const SandboxCreateV2Response: MessageFns$1<SandboxCreateV2Response>;
3237
3517
  * For all other use cases, use TaskGetCommandRouterAccess instead.
3238
3518
  */
3239
3519
  interface SandboxGetCommandRouterAccessRequest {
3240
- sandboxId: string;
3520
+ sandboxId?: string | undefined;
3521
+ taskId?: string | undefined;
3241
3522
  }
3242
3523
  declare const SandboxGetCommandRouterAccessRequest: MessageFns$1<SandboxGetCommandRouterAccessRequest>;
3243
3524
  interface SandboxGetCommandRouterAccessResponse {
@@ -3251,6 +3532,29 @@ interface SandboxGetCommandRouterAccessResponse {
3251
3532
  workerIpv4Address: string;
3252
3533
  }
3253
3534
  declare const SandboxGetCommandRouterAccessResponse: MessageFns$1<SandboxGetCommandRouterAccessResponse>;
3535
+ interface SandboxGetExitSnapshotRequest {
3536
+ sandboxId: string;
3537
+ timeout: number;
3538
+ }
3539
+ declare const SandboxGetExitSnapshotRequest: MessageFns$1<SandboxGetExitSnapshotRequest>;
3540
+ interface SandboxGetExitSnapshotResponse {
3541
+ success?: SandboxGetExitSnapshotResponse_Success | undefined;
3542
+ pending?: SandboxGetExitSnapshotResponse_Pending | undefined;
3543
+ error?: SandboxGetExitSnapshotResponse_Error | undefined;
3544
+ }
3545
+ declare const SandboxGetExitSnapshotResponse: MessageFns$1<SandboxGetExitSnapshotResponse>;
3546
+ interface SandboxGetExitSnapshotResponse_Success {
3547
+ imageId: string;
3548
+ }
3549
+ declare const SandboxGetExitSnapshotResponse_Success: MessageFns$1<SandboxGetExitSnapshotResponse_Success>;
3550
+ interface SandboxGetExitSnapshotResponse_Pending {
3551
+ }
3552
+ declare const SandboxGetExitSnapshotResponse_Pending: MessageFns$1<SandboxGetExitSnapshotResponse_Pending>;
3553
+ interface SandboxGetExitSnapshotResponse_Error {
3554
+ errorCode: SandboxGetExitSnapshotResponse_ErrorCode;
3555
+ message: string;
3556
+ }
3557
+ declare const SandboxGetExitSnapshotResponse_Error: MessageFns$1<SandboxGetExitSnapshotResponse_Error>;
3254
3558
  interface SandboxGetFromNameRequest {
3255
3559
  sandboxName: string;
3256
3560
  environmentName: string;
@@ -3259,6 +3563,7 @@ interface SandboxGetFromNameRequest {
3259
3563
  declare const SandboxGetFromNameRequest: MessageFns$1<SandboxGetFromNameRequest>;
3260
3564
  interface SandboxGetFromNameResponse {
3261
3565
  sandboxId: string;
3566
+ metadata: SandboxHandleMetadata | undefined;
3262
3567
  }
3263
3568
  declare const SandboxGetFromNameResponse: MessageFns$1<SandboxGetFromNameResponse>;
3264
3569
  interface SandboxGetLogsRequest {
@@ -3306,6 +3611,7 @@ interface SandboxGetTunnelsResponse {
3306
3611
  declare const SandboxGetTunnelsResponse: MessageFns$1<SandboxGetTunnelsResponse>;
3307
3612
  interface SandboxHandleMetadata {
3308
3613
  result: GenericResult | undefined;
3614
+ appId: string;
3309
3615
  }
3310
3616
  declare const SandboxHandleMetadata: MessageFns$1<SandboxHandleMetadata>;
3311
3617
  interface SandboxInfo {
@@ -3324,6 +3630,7 @@ interface SandboxInfo {
3324
3630
  readyAt?: number | undefined;
3325
3631
  readinessProbe?: Probe$1 | undefined;
3326
3632
  tunnels: TunnelData[];
3633
+ metadata: SandboxHandleMetadata | undefined;
3327
3634
  }
3328
3635
  declare const SandboxInfo: MessageFns$1<SandboxInfo>;
3329
3636
  interface SandboxListRequest {
@@ -3352,6 +3659,30 @@ interface SandboxRestoreResponse {
3352
3659
  sandboxId: string;
3353
3660
  }
3354
3661
  declare const SandboxRestoreResponse: MessageFns$1<SandboxRestoreResponse>;
3662
+ interface SandboxRestoreV2Request {
3663
+ snapshotId: string;
3664
+ sandboxNameOverride: string;
3665
+ sandboxNameOverrideType: SandboxRestoreRequest_SandboxNameOverrideType;
3666
+ /** For internal debugging use only. */
3667
+ workerId: string;
3668
+ }
3669
+ declare const SandboxRestoreV2Request: MessageFns$1<SandboxRestoreV2Request>;
3670
+ interface SandboxRestoreV2Response {
3671
+ sandboxId: string;
3672
+ tunnels: TunnelData[];
3673
+ taskId: string;
3674
+ metadata: SandboxHandleMetadata | undefined;
3675
+ commandRouterAccess: CommandRouterAccess$1 | undefined;
3676
+ }
3677
+ declare const SandboxRestoreV2Response: MessageFns$1<SandboxRestoreV2Response>;
3678
+ interface SandboxSetNameRequest {
3679
+ sandboxId: string;
3680
+ name: string;
3681
+ }
3682
+ declare const SandboxSetNameRequest: MessageFns$1<SandboxSetNameRequest>;
3683
+ interface SandboxSetNameResponse {
3684
+ }
3685
+ declare const SandboxSetNameResponse: MessageFns$1<SandboxSetNameResponse>;
3355
3686
  interface SandboxSnapshotFsAsyncGetRequest {
3356
3687
  imageId: string;
3357
3688
  timeout: number;
@@ -3383,8 +3714,13 @@ interface SandboxSnapshotGetRequest {
3383
3714
  declare const SandboxSnapshotGetRequest: MessageFns$1<SandboxSnapshotGetRequest>;
3384
3715
  interface SandboxSnapshotGetResponse {
3385
3716
  snapshotId: string;
3717
+ handleMetadata: SandboxSnapshotHandleMetadata | undefined;
3386
3718
  }
3387
3719
  declare const SandboxSnapshotGetResponse: MessageFns$1<SandboxSnapshotGetResponse>;
3720
+ interface SandboxSnapshotHandleMetadata {
3721
+ isV2: boolean;
3722
+ }
3723
+ declare const SandboxSnapshotHandleMetadata: MessageFns$1<SandboxSnapshotHandleMetadata>;
3388
3724
  interface SandboxSnapshotRequest {
3389
3725
  sandboxId: string;
3390
3726
  }
@@ -3446,6 +3782,7 @@ interface SandboxWaitRequest {
3446
3782
  declare const SandboxWaitRequest: MessageFns$1<SandboxWaitRequest>;
3447
3783
  interface SandboxWaitResponse {
3448
3784
  result: GenericResult | undefined;
3785
+ metadata: SandboxHandleMetadata | undefined;
3449
3786
  }
3450
3787
  declare const SandboxWaitResponse: MessageFns$1<SandboxWaitResponse>;
3451
3788
  interface SandboxWaitUntilReadyRequest {
@@ -3675,10 +4012,12 @@ interface TaskClusterHelloResponse {
3675
4012
  containerIps: string[];
3676
4013
  containerIpv4Ips: string[];
3677
4014
  /**
3678
- * Host IPs of every gang member's nvidia-imex daemon, ordered by cluster rank,
4015
+ * All nvidia-imex IPs in fabric, ordered by cluster rank,
3679
4016
  * and otherwise absent on non-NVL72 systems
3680
4017
  */
3681
4018
  imexPeerIps: string[];
4019
+ /** GPU-memory-fabric labels, ordered by cluster rank */
4020
+ fabricIds: string[];
3682
4021
  }
3683
4022
  declare const TaskClusterHelloResponse: MessageFns$1<TaskClusterHelloResponse>;
3684
4023
  interface TaskCurrentInputsResponse {
@@ -3710,6 +4049,7 @@ interface TaskGetInfoResponse {
3710
4049
  declare const TaskGetInfoResponse: MessageFns$1<TaskGetInfoResponse>;
3711
4050
  interface TaskInfo {
3712
4051
  id: string;
4052
+ /** For Function containers, this corresponds to the "ready" time, after startup phase */
3713
4053
  startedAt: number;
3714
4054
  finishedAt: number;
3715
4055
  result: GenericResult | undefined;
@@ -3737,7 +4077,7 @@ interface TaskLogs {
3737
4077
  taskProgress: TaskProgress | undefined;
3738
4078
  functionCallId: string;
3739
4079
  inputId: string;
3740
- timestampNs: number;
4080
+ timestampNs: string;
3741
4081
  containerId: string;
3742
4082
  containerName: string;
3743
4083
  }
@@ -3885,6 +4225,12 @@ interface UploadUrlList {
3885
4225
  items: string[];
3886
4226
  }
3887
4227
  declare const UploadUrlList: MessageFns$1<UploadUrlList>;
4228
+ interface UserGroupEnvironmentSetRequest {
4229
+ environmentId: string;
4230
+ userGroupId: string;
4231
+ role: EnvironmentRole;
4232
+ }
4233
+ declare const UserGroupEnvironmentSetRequest: MessageFns$1<UserGroupEnvironmentSetRequest>;
3888
4234
  interface UserIdentity {
3889
4235
  userId: string;
3890
4236
  username: string;
@@ -3922,6 +4268,12 @@ interface VolumeCopyFilesRequest {
3922
4268
  recursive: boolean;
3923
4269
  }
3924
4270
  declare const VolumeCopyFilesRequest: MessageFns$1<VolumeCopyFilesRequest>;
4271
+ interface VolumeCreateOptions {
4272
+ experimentalOptions: {
4273
+ [key: string]: string;
4274
+ };
4275
+ }
4276
+ declare const VolumeCreateOptions: MessageFns$1<VolumeCreateOptions>;
3925
4277
  interface VolumeDeleteRequest {
3926
4278
  volumeId: string;
3927
4279
  /** @deprecated */
@@ -3981,6 +4333,7 @@ interface VolumeGetOrCreateRequest {
3981
4333
  /** only used with OBJECT_CREATION_TYPE_ANONYMOUS_OWNED_BY_APP */
3982
4334
  appId: string;
3983
4335
  version: VolumeFsVersion;
4336
+ createOptions?: VolumeCreateOptions | undefined;
3984
4337
  }
3985
4338
  declare const VolumeGetOrCreateRequest: MessageFns$1<VolumeGetOrCreateRequest>;
3986
4339
  interface VolumeGetOrCreateResponse {
@@ -4220,6 +4573,23 @@ interface WebhookTokenListResponse {
4220
4573
  tokens: WebhookToken[];
4221
4574
  }
4222
4575
  declare const WebhookTokenListResponse: MessageFns$1<WebhookTokenListResponse>;
4576
+ interface WorkspaceBillingRatesRequest {
4577
+ }
4578
+ declare const WorkspaceBillingRatesRequest: MessageFns$1<WorkspaceBillingRatesRequest>;
4579
+ interface WorkspaceBillingRatesResponse {
4580
+ /** compute rates are per unit per hour, storage rate is per GiB-month */
4581
+ rates: {
4582
+ [key: string]: string;
4583
+ };
4584
+ deprecationWarnings: {
4585
+ [key: string]: string;
4586
+ };
4587
+ deprecationErrors: {
4588
+ [key: string]: string;
4589
+ };
4590
+ formatted: string;
4591
+ }
4592
+ declare const WorkspaceBillingRatesResponse: MessageFns$1<WorkspaceBillingRatesResponse>;
4223
4593
  interface WorkspaceBillingReportItem {
4224
4594
  objectId: string;
4225
4595
  description: string;
@@ -4229,10 +4599,6 @@ interface WorkspaceBillingReportItem {
4229
4599
  tags: {
4230
4600
  [key: string]: string;
4231
4601
  };
4232
- /** old field to be removed */
4233
- costByResourceFloat: {
4234
- [key: string]: number;
4235
- };
4236
4602
  costByResource: {
4237
4603
  [key: string]: string;
4238
4604
  };
@@ -4249,6 +4615,26 @@ interface WorkspaceBillingReportRequest {
4249
4615
  appIds: string[];
4250
4616
  }
4251
4617
  declare const WorkspaceBillingReportRequest: MessageFns$1<WorkspaceBillingReportRequest>;
4618
+ interface WorkspaceBillingSummaryRequest {
4619
+ /** all query intervals are implicitly one month long (to line up with billing cycles) */
4620
+ startTimestamp: Date | undefined;
4621
+ }
4622
+ declare const WorkspaceBillingSummaryRequest: MessageFns$1<WorkspaceBillingSummaryRequest>;
4623
+ interface WorkspaceBillingSummaryResponse {
4624
+ startTimestamp: Date | undefined;
4625
+ endTimestamp: Date | undefined;
4626
+ meteredCost: string;
4627
+ billedCost: string;
4628
+ /** keyed by deployed, ephemeral, volume, notebook, tokens */
4629
+ meteredCostBreakdown: {
4630
+ [key: string]: string;
4631
+ };
4632
+ /** keyed by plan, credits, reservations, storage */
4633
+ adjustments: {
4634
+ [key: string]: string;
4635
+ };
4636
+ }
4637
+ declare const WorkspaceBillingSummaryResponse: MessageFns$1<WorkspaceBillingSummaryResponse>;
4252
4638
  interface WorkspaceDashboardUrlRequest {
4253
4639
  environmentName: string;
4254
4640
  }
@@ -4432,6 +4818,14 @@ declare const ModalClientDefinition: {
4432
4818
  readonly responseStream: false;
4433
4819
  readonly options: {};
4434
4820
  };
4821
+ readonly appPromote: {
4822
+ readonly name: "AppPromote";
4823
+ readonly requestType: MessageFns$1<AppPromoteRequest>;
4824
+ readonly requestStream: false;
4825
+ readonly responseType: MessageFns$1<AppPromoteResponse>;
4826
+ readonly responseStream: false;
4827
+ readonly options: {};
4828
+ };
4435
4829
  readonly appPublish: {
4436
4830
  readonly name: "AppPublish";
4437
4831
  readonly requestType: MessageFns$1<AppPublishRequest>;
@@ -4663,6 +5057,14 @@ declare const ModalClientDefinition: {
4663
5057
  readonly responseStream: false;
4664
5058
  readonly options: {};
4665
5059
  };
5060
+ readonly containerServerLifecycleReady: {
5061
+ readonly name: "ContainerServerLifecycleReady";
5062
+ readonly requestType: MessageFns$1<ContainerServerLifecycleReadyRequest>;
5063
+ readonly requestStream: false;
5064
+ readonly responseType: MessageFns$2<Empty>;
5065
+ readonly responseStream: false;
5066
+ readonly options: {};
5067
+ };
4666
5068
  readonly containerStop: {
4667
5069
  readonly name: "ContainerStop";
4668
5070
  readonly requestType: MessageFns$1<ContainerStopRequest>;
@@ -4844,6 +5246,14 @@ declare const ModalClientDefinition: {
4844
5246
  readonly options: {};
4845
5247
  };
4846
5248
  /** Environments */
5249
+ readonly environmentBillingSummary: {
5250
+ readonly name: "EnvironmentBillingSummary";
5251
+ readonly requestType: MessageFns$1<EnvironmentBillingSummaryRequest>;
5252
+ readonly requestStream: false;
5253
+ readonly responseType: MessageFns$1<EnvironmentBillingSummaryResponse>;
5254
+ readonly responseStream: false;
5255
+ readonly options: {};
5256
+ };
4847
5257
  readonly environmentCreate: {
4848
5258
  readonly name: "EnvironmentCreate";
4849
5259
  readonly requestType: MessageFns$1<EnvironmentCreateRequest>;
@@ -4884,6 +5294,14 @@ declare const ModalClientDefinition: {
4884
5294
  readonly responseStream: false;
4885
5295
  readonly options: {};
4886
5296
  };
5297
+ readonly environmentGetRoles: {
5298
+ readonly name: "EnvironmentGetRoles";
5299
+ readonly requestType: MessageFns$1<EnvironmentGetRolesRequest>;
5300
+ readonly requestStream: false;
5301
+ readonly responseType: MessageFns$1<EnvironmentGetRolesResponse>;
5302
+ readonly responseStream: false;
5303
+ readonly options: {};
5304
+ };
4887
5305
  readonly environmentList: {
4888
5306
  readonly name: "EnvironmentList";
4889
5307
  readonly requestType: MessageFns$2<Empty>;
@@ -4908,6 +5326,14 @@ declare const ModalClientDefinition: {
4908
5326
  readonly responseStream: false;
4909
5327
  readonly options: {};
4910
5328
  };
5329
+ readonly environmentSetDefaultMemberRole: {
5330
+ readonly name: "EnvironmentSetDefaultMemberRole";
5331
+ readonly requestType: MessageFns$1<EnvironmentSetDefaultMemberRoleRequest>;
5332
+ readonly requestStream: false;
5333
+ readonly responseType: MessageFns$2<Empty>;
5334
+ readonly responseStream: false;
5335
+ readonly options: {};
5336
+ };
4911
5337
  readonly environmentSetManaged: {
4912
5338
  readonly name: "EnvironmentSetManaged";
4913
5339
  readonly requestType: MessageFns$1<EnvironmentSetManagedRequest>;
@@ -5006,6 +5432,14 @@ declare const ModalClientDefinition: {
5006
5432
  readonly responseStream: true;
5007
5433
  readonly options: {};
5008
5434
  };
5435
+ readonly functionCallGetInfo: {
5436
+ readonly name: "FunctionCallGetInfo";
5437
+ readonly requestType: MessageFns$1<FunctionCallGetInfoRequest>;
5438
+ readonly requestStream: false;
5439
+ readonly responseType: MessageFns$1<FunctionCallGetInfoResponse>;
5440
+ readonly responseStream: false;
5441
+ readonly options: {};
5442
+ };
5009
5443
  readonly functionCallList: {
5010
5444
  readonly name: "FunctionCallList";
5011
5445
  readonly requestType: MessageFns$1<FunctionCallListRequest>;
@@ -5097,6 +5531,14 @@ declare const ModalClientDefinition: {
5097
5531
  readonly responseStream: false;
5098
5532
  readonly options: {};
5099
5533
  };
5534
+ readonly functionGetTimeRangeStats: {
5535
+ readonly name: "FunctionGetTimeRangeStats";
5536
+ readonly requestType: MessageFns$1<FunctionGetTimeRangeStatsRequest>;
5537
+ readonly requestStream: false;
5538
+ readonly responseType: MessageFns$1<FunctionGetTimeRangeStatsResponse>;
5539
+ readonly responseStream: false;
5540
+ readonly options: {};
5541
+ };
5100
5542
  readonly functionMap: {
5101
5543
  readonly name: "FunctionMap";
5102
5544
  readonly requestType: MessageFns$1<FunctionMapRequest>;
@@ -5155,6 +5597,14 @@ declare const ModalClientDefinition: {
5155
5597
  readonly options: {};
5156
5598
  };
5157
5599
  /** Images */
5600
+ readonly imageBuildChainGet: {
5601
+ readonly name: "ImageBuildChainGet";
5602
+ readonly requestType: MessageFns$1<ImageBuildChainGetRequest>;
5603
+ readonly requestStream: false;
5604
+ readonly responseType: MessageFns$1<ImageBuildChainGetResponse>;
5605
+ readonly responseStream: false;
5606
+ readonly options: {};
5607
+ };
5158
5608
  readonly imageDelete: {
5159
5609
  readonly name: "ImageDelete";
5160
5610
  readonly requestType: MessageFns$1<ImageDeleteRequest>;
@@ -5245,6 +5695,14 @@ declare const ModalClientDefinition: {
5245
5695
  readonly options: {};
5246
5696
  };
5247
5697
  /** Mounts */
5698
+ readonly mountBatchedCheckExistence: {
5699
+ readonly name: "MountBatchedCheckExistence";
5700
+ readonly requestType: MessageFns$1<MountBatchedCheckExistenceRequest>;
5701
+ readonly requestStream: false;
5702
+ readonly responseType: MessageFns$1<MountBatchedCheckExistenceResponse>;
5703
+ readonly responseStream: false;
5704
+ readonly options: {};
5705
+ };
5248
5706
  readonly mountGetOrCreate: {
5249
5707
  readonly name: "MountGetOrCreate";
5250
5708
  readonly requestType: MessageFns$1<MountGetOrCreateRequest>;
@@ -5425,6 +5883,14 @@ declare const ModalClientDefinition: {
5425
5883
  readonly responseStream: false;
5426
5884
  readonly options: {};
5427
5885
  };
5886
+ readonly sandboxCreateConnectTokenV2: {
5887
+ readonly name: "SandboxCreateConnectTokenV2";
5888
+ readonly requestType: MessageFns$1<SandboxCreateConnectTokenRequest>;
5889
+ readonly requestStream: false;
5890
+ readonly responseType: MessageFns$1<SandboxCreateConnectTokenResponse>;
5891
+ readonly responseStream: false;
5892
+ readonly options: {};
5893
+ };
5428
5894
  readonly sandboxCreateV2: {
5429
5895
  readonly name: "SandboxCreateV2";
5430
5896
  readonly requestType: MessageFns$1<SandboxCreateV2Request>;
@@ -5441,6 +5907,22 @@ declare const ModalClientDefinition: {
5441
5907
  readonly responseStream: false;
5442
5908
  readonly options: {};
5443
5909
  };
5910
+ readonly sandboxGetExitSnapshot: {
5911
+ readonly name: "SandboxGetExitSnapshot";
5912
+ readonly requestType: MessageFns$1<SandboxGetExitSnapshotRequest>;
5913
+ readonly requestStream: false;
5914
+ readonly responseType: MessageFns$1<SandboxGetExitSnapshotResponse>;
5915
+ readonly responseStream: false;
5916
+ readonly options: {};
5917
+ };
5918
+ readonly sandboxGetExitSnapshotV2: {
5919
+ readonly name: "SandboxGetExitSnapshotV2";
5920
+ readonly requestType: MessageFns$1<SandboxGetExitSnapshotRequest>;
5921
+ readonly requestStream: false;
5922
+ readonly responseType: MessageFns$1<SandboxGetExitSnapshotResponse>;
5923
+ readonly responseStream: false;
5924
+ readonly options: {};
5925
+ };
5444
5926
  readonly sandboxGetFromName: {
5445
5927
  readonly name: "SandboxGetFromName";
5446
5928
  readonly requestType: MessageFns$1<SandboxGetFromNameRequest>;
@@ -5449,6 +5931,14 @@ declare const ModalClientDefinition: {
5449
5931
  readonly responseStream: false;
5450
5932
  readonly options: {};
5451
5933
  };
5934
+ readonly sandboxGetFromNameV2: {
5935
+ readonly name: "SandboxGetFromNameV2";
5936
+ readonly requestType: MessageFns$1<SandboxGetFromNameRequest>;
5937
+ readonly requestStream: false;
5938
+ readonly responseType: MessageFns$1<SandboxGetFromNameResponse>;
5939
+ readonly responseStream: false;
5940
+ readonly options: {};
5941
+ };
5452
5942
  readonly sandboxGetLogs: {
5453
5943
  readonly name: "SandboxGetLogs";
5454
5944
  readonly requestType: MessageFns$1<SandboxGetLogsRequest>;
@@ -5522,6 +6012,22 @@ declare const ModalClientDefinition: {
5522
6012
  readonly responseStream: false;
5523
6013
  readonly options: {};
5524
6014
  };
6015
+ readonly sandboxRestoreV2: {
6016
+ readonly name: "SandboxRestoreV2";
6017
+ readonly requestType: MessageFns$1<SandboxRestoreV2Request>;
6018
+ readonly requestStream: false;
6019
+ readonly responseType: MessageFns$1<SandboxRestoreV2Response>;
6020
+ readonly responseStream: false;
6021
+ readonly options: {};
6022
+ };
6023
+ readonly sandboxSetName: {
6024
+ readonly name: "SandboxSetName";
6025
+ readonly requestType: MessageFns$1<SandboxSetNameRequest>;
6026
+ readonly requestStream: false;
6027
+ readonly responseType: MessageFns$1<SandboxSetNameResponse>;
6028
+ readonly responseStream: false;
6029
+ readonly options: {};
6030
+ };
5525
6031
  readonly sandboxSnapshot: {
5526
6032
  readonly name: "SandboxSnapshot";
5527
6033
  readonly requestType: MessageFns$1<SandboxSnapshotRequest>;
@@ -5586,6 +6092,14 @@ declare const ModalClientDefinition: {
5586
6092
  readonly responseStream: false;
5587
6093
  readonly options: {};
5588
6094
  };
6095
+ readonly sandboxTagsGetV2: {
6096
+ readonly name: "SandboxTagsGetV2";
6097
+ readonly requestType: MessageFns$1<SandboxTagsGetRequest>;
6098
+ readonly requestStream: false;
6099
+ readonly responseType: MessageFns$1<SandboxTagsGetResponse>;
6100
+ readonly responseStream: false;
6101
+ readonly options: {};
6102
+ };
5589
6103
  readonly sandboxTagsSet: {
5590
6104
  readonly name: "SandboxTagsSet";
5591
6105
  readonly requestType: MessageFns$1<SandboxTagsSetRequest>;
@@ -5594,6 +6108,14 @@ declare const ModalClientDefinition: {
5594
6108
  readonly responseStream: false;
5595
6109
  readonly options: {};
5596
6110
  };
6111
+ readonly sandboxTagsSetV2: {
6112
+ readonly name: "SandboxTagsSetV2";
6113
+ readonly requestType: MessageFns$1<SandboxTagsSetRequest>;
6114
+ readonly requestStream: false;
6115
+ readonly responseType: MessageFns$2<Empty>;
6116
+ readonly responseStream: false;
6117
+ readonly options: {};
6118
+ };
5597
6119
  readonly sandboxTerminate: {
5598
6120
  readonly name: "SandboxTerminate";
5599
6121
  readonly requestType: MessageFns$1<SandboxTerminateRequest>;
@@ -5849,6 +6371,15 @@ declare const ModalClientDefinition: {
5849
6371
  readonly responseStream: false;
5850
6372
  readonly options: {};
5851
6373
  };
6374
+ /** User groups */
6375
+ readonly userGroupEnvironmentSet: {
6376
+ readonly name: "UserGroupEnvironmentSet";
6377
+ readonly requestType: MessageFns$1<UserGroupEnvironmentSetRequest>;
6378
+ readonly requestStream: false;
6379
+ readonly responseType: MessageFns$2<Empty>;
6380
+ readonly responseStream: false;
6381
+ readonly options: {};
6382
+ };
5852
6383
  /** Volumes */
5853
6384
  readonly volumeCommit: {
5854
6385
  readonly name: "VolumeCommit";
@@ -6052,6 +6583,14 @@ declare const ModalClientDefinition: {
6052
6583
  readonly options: {};
6053
6584
  };
6054
6585
  /** Workspaces */
6586
+ readonly workspaceBillingRates: {
6587
+ readonly name: "WorkspaceBillingRates";
6588
+ readonly requestType: MessageFns$1<WorkspaceBillingRatesRequest>;
6589
+ readonly requestStream: false;
6590
+ readonly responseType: MessageFns$1<WorkspaceBillingRatesResponse>;
6591
+ readonly responseStream: false;
6592
+ readonly options: {};
6593
+ };
6055
6594
  readonly workspaceBillingReport: {
6056
6595
  readonly name: "WorkspaceBillingReport";
6057
6596
  readonly requestType: MessageFns$1<WorkspaceBillingReportRequest>;
@@ -6060,6 +6599,14 @@ declare const ModalClientDefinition: {
6060
6599
  readonly responseStream: true;
6061
6600
  readonly options: {};
6062
6601
  };
6602
+ readonly workspaceBillingSummary: {
6603
+ readonly name: "WorkspaceBillingSummary";
6604
+ readonly requestType: MessageFns$1<WorkspaceBillingSummaryRequest>;
6605
+ readonly requestStream: false;
6606
+ readonly responseType: MessageFns$1<WorkspaceBillingSummaryResponse>;
6607
+ readonly responseStream: false;
6608
+ readonly options: {};
6609
+ };
6063
6610
  readonly workspaceDashboardUrlGet: {
6064
6611
  readonly name: "WorkspaceDashboardUrlGet";
6065
6612
  readonly requestType: MessageFns$1<WorkspaceDashboardUrlRequest>;
@@ -6151,7 +6698,16 @@ declare class SecretService {
6151
6698
  constructor(client: ModalClient);
6152
6699
  /** Reference a {@link Secret} by its name. */
6153
6700
  fromName(name: string, params?: SecretFromNameParams): Promise<Secret>;
6154
- /** Create a {@link Secret} from a plain object of key-value pairs. */
6701
+ /**
6702
+ * Create a {@link Secret} from a plain object of key-value pairs.
6703
+ *
6704
+ * The returned Secret is lazy: no server-side Secret is created (and
6705
+ * {@link Secret#secretId secretId} stays empty) until it is first used. When
6706
+ * used with {@link Sandbox#exec Sandbox.exec()} or
6707
+ * {@link SandboxService#experimentalCreate client.sandboxes.experimentalCreate()},
6708
+ * the values are sent directly to the worker as environment variables,
6709
+ * avoiding a `SecretGetOrCreate` round-trip entirely.
6710
+ */
6155
6711
  fromObject(entries: Record<string, string>, params?: SecretFromObjectParams): Promise<Secret>;
6156
6712
  /**
6157
6713
  * Delete a named {@link Secret}.
@@ -6160,12 +6716,42 @@ declare class SecretService {
6160
6716
  */
6161
6717
  delete(name: string, params?: SecretDeleteParams): Promise<void>;
6162
6718
  }
6719
+ /**
6720
+ * Resolves a lazy {@link Secret} to a server-side secretId. Each construction
6721
+ * path (fromName, fromObject, ...) supplies its own implementation carrying
6722
+ * whatever inputs that path needs.
6723
+ *
6724
+ * @internal
6725
+ * @hidden
6726
+ */
6727
+ interface SecretHydrator {
6728
+ hydrate(client: ModalClient): Promise<string>;
6729
+ }
6163
6730
  /** Secrets provide a dictionary of environment variables for {@link Image}s. */
6164
6731
  declare class Secret {
6165
- readonly secretId: string;
6732
+ #private;
6166
6733
  readonly name?: string;
6167
6734
  /** @ignore */
6168
- constructor(secretId: string, name?: string);
6735
+ constructor(secretId: string, name?: string, hydrator?: SecretHydrator);
6736
+ /** The ID of the server-side Secret, or an empty string if not yet hydrated. */
6737
+ get secretId(): string;
6738
+ /**
6739
+ * The hydrator resolving a lazy Secret to a secretId, or `undefined` for
6740
+ * Secrets that already reference a server-side Secret (e.g. from fromName).
6741
+ *
6742
+ * @internal
6743
+ * @hidden
6744
+ */
6745
+ get _hydrator(): SecretHydrator | undefined;
6746
+ /**
6747
+ * Lazily create the ephemeral server-side Secret backing a fromObject Secret
6748
+ * and populate {@link Secret#secretId secretId}. A no-op once secretId is set
6749
+ * (e.g. for Secrets returned by fromName).
6750
+ *
6751
+ * @internal
6752
+ * @hidden
6753
+ */
6754
+ _hydrate(client: ModalClient): Promise<void>;
6169
6755
  }
6170
6756
 
6171
6757
  declare class CloudBucketMountService {
@@ -6196,6 +6782,227 @@ declare class CloudBucketMount {
6196
6782
  toProto(mountPath: string): CloudBucketMount$1;
6197
6783
  }
6198
6784
 
6785
+ type LogSource = "system" | "stdout" | "stderr";
6786
+ interface LogEntry {
6787
+ readonly message: string;
6788
+ readonly source: LogSource;
6789
+ readonly timestamp: Date;
6790
+ readonly objectId: string;
6791
+ readonly contextIds: string[];
6792
+ }
6793
+ interface FunctionLogFetchParams {
6794
+ /** Start of the UTC time range. */
6795
+ since: Date;
6796
+ /** End of the UTC time range. Defaults to the current time. */
6797
+ until?: Date;
6798
+ /** Filter by source: `stdout`, `stderr`, or `system`. */
6799
+ source?: LogSource;
6800
+ /** Filter by text contained in the log message. */
6801
+ searchText?: string;
6802
+ }
6803
+ interface FunctionLogTailParams {
6804
+ /** Number of log entries to return. Defaults to 100. */
6805
+ entries?: number;
6806
+ /** Filter by source: `stdout`, `stderr`, or `system`. */
6807
+ source?: LogSource;
6808
+ }
6809
+ interface FunctionCallLogTailParams {
6810
+ /** Number of log entries to return. Defaults to 100. */
6811
+ entries?: number;
6812
+ /** Filter by source: `stdout`, `stderr`, or `system`. */
6813
+ source?: LogSource;
6814
+ }
6815
+ type LogTailParams = FunctionCallLogTailParams | FunctionLogTailParams;
6816
+ interface FunctionLogStreamParams {
6817
+ /**
6818
+ * Number of milliseconds to wait between log entries before ending the
6819
+ * stream. By default, the stream blocks until it is interrupted.
6820
+ */
6821
+ timeoutMs?: number;
6822
+ }
6823
+ interface FunctionCallLogStreamParams {
6824
+ /**
6825
+ * Number of milliseconds to wait between log entries before ending the
6826
+ * stream. By default, the stream blocks until it is interrupted.
6827
+ */
6828
+ timeoutMs?: number;
6829
+ }
6830
+ type LogStreamParams = FunctionCallLogStreamParams | FunctionLogStreamParams;
6831
+ interface FunctionCallLogFetchParams {
6832
+ /**
6833
+ * Start of the UTC time range. Defaults to the start of the FunctionCall.
6834
+ */
6835
+ since?: Date;
6836
+ /** End of the UTC time range. Defaults to the current time. */
6837
+ until?: Date;
6838
+ /** Filter by source: `stdout`, `stderr`, or `system`. */
6839
+ source?: LogSource;
6840
+ /** Filter by text contained in the log message. */
6841
+ searchText?: string;
6842
+ }
6843
+ interface FunctionLogs {
6844
+ fetch(params: FunctionLogFetchParams): AsyncIterable<LogEntry>;
6845
+ tail(params?: FunctionLogTailParams): AsyncIterable<LogEntry>;
6846
+ stream(params?: FunctionLogStreamParams): AsyncIterable<LogEntry>;
6847
+ }
6848
+ interface FunctionCallLogs extends Omit<FunctionLogs, "fetch"> {
6849
+ fetch(params?: FunctionCallLogFetchParams): AsyncIterable<LogEntry>;
6850
+ tail(params?: FunctionCallLogTailParams): AsyncIterable<LogEntry>;
6851
+ stream(params?: FunctionCallLogStreamParams): AsyncIterable<LogEntry>;
6852
+ }
6853
+ interface LogQueryParams {
6854
+ client: ModalClient;
6855
+ objectId: string;
6856
+ appId: string;
6857
+ functionId: string;
6858
+ functionCallId: string;
6859
+ }
6860
+ declare class LogsManager {
6861
+ protected readonly params: LogQueryParams;
6862
+ constructor(params: LogQueryParams);
6863
+ fetch(params: FunctionLogFetchParams): AsyncIterable<LogEntry>;
6864
+ tail(params?: LogTailParams): AsyncIterable<LogEntry>;
6865
+ stream(params?: LogStreamParams): AsyncIterable<LogEntry>;
6866
+ }
6867
+ /** Namespace for Function log APIs. */
6868
+ declare class FunctionLogsManager extends LogsManager implements FunctionLogs {
6869
+ /** @ignore */
6870
+ constructor(client: ModalClient, objectId: string, appId: string);
6871
+ /**
6872
+ * Fetch Function logs corresponding to a UTC time range and optional
6873
+ * filters.
6874
+ *
6875
+ * Entries are returned in chronological order.
6876
+ *
6877
+ * @returns An async iterable of {@link LogEntry} objects.
6878
+ *
6879
+ * @example
6880
+ * ```typescript
6881
+ * import { ModalClient } from "modal";
6882
+ *
6883
+ * const modal = new ModalClient();
6884
+ * const function_ = await modal.functions.fromName("my-app", "train");
6885
+ *
6886
+ * for await (const entry of function_.logs.fetch({
6887
+ * since: new Date(Date.now() - 4 * 60 * 60 * 1_000),
6888
+ * source: "stdout",
6889
+ * })) {
6890
+ * process.stdout.write(entry.message);
6891
+ * }
6892
+ * ```
6893
+ */
6894
+ fetch(params: FunctionLogFetchParams): AsyncIterable<LogEntry>;
6895
+ /**
6896
+ * Fetch the most recent Function logs.
6897
+ *
6898
+ * Entries are returned in chronological order.
6899
+ *
6900
+ * @returns An async iterable of {@link LogEntry} objects.
6901
+ *
6902
+ * @example
6903
+ * ```typescript
6904
+ * import { ModalClient } from "modal";
6905
+ *
6906
+ * const modal = new ModalClient();
6907
+ * const function_ = await modal.functions.fromName("my-app", "train");
6908
+ *
6909
+ * for await (const entry of function_.logs.tail({ entries: 20 })) {
6910
+ * process.stdout.write(entry.message);
6911
+ * }
6912
+ * ```
6913
+ */
6914
+ tail(params?: FunctionLogTailParams): AsyncIterable<LogEntry>;
6915
+ /**
6916
+ * Stream new Function logs until the timeout is reached.
6917
+ *
6918
+ * @returns An async iterable of {@link LogEntry} objects as they arrive.
6919
+ *
6920
+ * @example
6921
+ * ```typescript
6922
+ * import { ModalClient } from "modal";
6923
+ *
6924
+ * const modal = new ModalClient();
6925
+ * const function_ = await modal.functions.fromName("my-app", "train");
6926
+ *
6927
+ * for await (const entry of function_.logs.stream({ timeoutMs: 60_000 })) {
6928
+ * process.stdout.write(entry.message);
6929
+ * }
6930
+ * ```
6931
+ */
6932
+ stream(params?: FunctionLogStreamParams): AsyncIterable<LogEntry>;
6933
+ }
6934
+ /** Namespace for FunctionCall log APIs. */
6935
+ declare class FunctionCallLogsManager extends LogsManager implements FunctionCallLogs {
6936
+ constructor(client: ModalClient, objectId: string, appId: string, functionId: string);
6937
+ /**
6938
+ * Fetch logs associated with this FunctionCall corresponding to a UTC time
6939
+ * range and optional filters.
6940
+ *
6941
+ * When `since` is omitted, logs are fetched from the start of the
6942
+ * FunctionCall. Entries are returned in chronological order.
6943
+ *
6944
+ * @returns An async iterable of {@link LogEntry} objects.
6945
+ *
6946
+ * @example
6947
+ * ```typescript
6948
+ * import { ModalClient } from "modal";
6949
+ *
6950
+ * const modal = new ModalClient();
6951
+ * const function_ = await modal.functions.fromName("my-app", "train");
6952
+ * const call = await function_.spawn([]);
6953
+ *
6954
+ * for await (const entry of call.logs.fetch()) {
6955
+ * console.log(entry.timestamp, entry.message);
6956
+ * }
6957
+ * ```
6958
+ */
6959
+ fetch(params?: FunctionCallLogFetchParams): AsyncIterable<LogEntry>;
6960
+ /**
6961
+ * Fetch the most recent FunctionCall logs.
6962
+ *
6963
+ * Entries are returned in chronological order.
6964
+ *
6965
+ * @returns An async iterable of {@link LogEntry} objects.
6966
+ *
6967
+ * @example
6968
+ * ```typescript
6969
+ * import { ModalClient } from "modal";
6970
+ *
6971
+ * const modal = new ModalClient();
6972
+ * const function_ = await modal.functions.fromName("my-app", "train");
6973
+ * const call = await function_.spawn([]);
6974
+ *
6975
+ * for await (const entry of call.logs.tail({ entries: 10 })) {
6976
+ * console.log(entry.timestamp, entry.message);
6977
+ * }
6978
+ * ```
6979
+ */
6980
+ tail(params?: FunctionCallLogTailParams): AsyncIterable<LogEntry>;
6981
+ /**
6982
+ * Stream new FunctionCall logs until the timeout is reached or the
6983
+ * FunctionCall is observed to have completed.
6984
+ *
6985
+ * The completion check is best-effort. If completion cannot be determined,
6986
+ * the stream continues until the timeout is reached.
6987
+ *
6988
+ * @returns An async iterable of {@link LogEntry} objects as they arrive.
6989
+ *
6990
+ * @example
6991
+ * ```typescript
6992
+ * import { ModalClient } from "modal";
6993
+ *
6994
+ * const modal = new ModalClient();
6995
+ * const function_ = await modal.functions.fromName("my-app", "train");
6996
+ * const call = await function_.spawn([]);
6997
+ *
6998
+ * for await (const entry of call.logs.stream()) {
6999
+ * process.stdout.write(entry.message);
7000
+ * }
7001
+ * ```
7002
+ */
7003
+ stream(params?: FunctionCallLogStreamParams): AsyncIterable<LogEntry>;
7004
+ }
7005
+
6199
7006
  /**
6200
7007
  * Service for managing {@link FunctionCall}s.
6201
7008
  *
@@ -6231,11 +7038,23 @@ declare class FunctionCall {
6231
7038
  #private;
6232
7039
  readonly functionCallId: string;
6233
7040
  /** @ignore */
6234
- constructor(client: ModalClient, functionCallId: string);
7041
+ constructor(client: ModalClient, functionCallId: string, appId: string, functionId: string);
6235
7042
  /** Get the result of a FunctionCall, optionally waiting with a timeout. */
6236
7043
  get(params?: FunctionCallGetParams): Promise<any>;
6237
7044
  /** Cancel a running FunctionCall. */
6238
7045
  cancel(params?: FunctionCallCancelParams): Promise<void>;
7046
+ /**
7047
+ * Access logs for this FunctionCall.
7048
+ *
7049
+ * Use {@link FunctionCallLogsManager#fetch fetch()} to read logs from a UTC
7050
+ * time range, {@link FunctionCallLogsManager#tail tail()} to read the most
7051
+ * recent logs, and {@link FunctionCallLogsManager#stream stream()} to follow
7052
+ * new logs as they arrive.
7053
+ *
7054
+ * See also: [`modal app logs`](https://modal.com/docs/cli/latest/app#modal-app-logs)
7055
+ * for CLI access to logs for an App.
7056
+ */
7057
+ get logs(): FunctionCallLogsManager;
6239
7058
  }
6240
7059
 
6241
7060
  type HeartbeatFunction = () => Promise<any>;
@@ -6313,12 +7132,12 @@ declare class Volume {
6313
7132
  * Configure options used when mounting this Volume. Fields left undefined preserve their value
6314
7133
  * from any previous withMountOptions call on the same Volume (stacking).
6315
7134
  */
6316
- withMountOptions(params?: VolumeMountOptions): Volume;
7135
+ withMountOptions(params?: VolumeMountOptionsParams): Volume;
6317
7136
  /** Delete the ephemeral Volume. Only usable with emphemeral Volumes. */
6318
7137
  closeEphemeral(): void;
6319
7138
  }
6320
7139
  /** Options for mounting a {@link Volume}. */
6321
- type VolumeMountOptions = {
7140
+ type VolumeMountOptionsParams = {
6322
7141
  readOnly?: boolean;
6323
7142
  subPath?: string;
6324
7143
  };
@@ -6340,7 +7159,8 @@ declare class Retries {
6340
7159
  /** Optional parameters for `client.functions.fromName()`. */
6341
7160
  type FunctionFromNameParams = {
6342
7161
  environment?: string;
6343
- createIfMissing?: boolean;
7162
+ /** Look up a version-pinned Function deployed at this App version. */
7163
+ version?: number;
6344
7164
  };
6345
7165
  /**
6346
7166
  * Service for managing {@link Function_ Function}s.
@@ -6371,6 +7191,12 @@ interface FunctionUpdateAutoscalerParams {
6371
7191
  bufferContainers?: number;
6372
7192
  scaledownWindowMs?: number;
6373
7193
  }
7194
+ type FunctionAutoscalerSettings = {
7195
+ minContainers?: number;
7196
+ maxContainers?: number;
7197
+ bufferContainers?: number;
7198
+ scaledownWindowMs?: number;
7199
+ };
6374
7200
  /** Configuration options for {@link Function_#withOptions Function_.withOptions()}. */
6375
7201
  type FunctionWithOptionsParams = {
6376
7202
  cpu?: number;
@@ -6386,6 +7212,7 @@ type FunctionWithOptionsParams = {
6386
7212
  bufferContainers?: number;
6387
7213
  scaledownWindowMs?: number;
6388
7214
  timeoutMs?: number;
7215
+ routingRegion?: string;
6389
7216
  };
6390
7217
  /** Configuration options for {@link Function_#withConcurrency Function_.withConcurrency()}. */
6391
7218
  type FunctionWithConcurrencyParams = {
@@ -6411,6 +7238,18 @@ declare class Function_ {
6411
7238
  readonly methodName?: string;
6412
7239
  /** @ignore */
6413
7240
  constructor(client: ModalClient, functionId: string, methodName?: string, functionHandleMetadata?: FunctionHandleMetadata, options?: FunctionOptions);
7241
+ /**
7242
+ * Access logs for this Function.
7243
+ *
7244
+ * Use {@link FunctionLogsManager#fetch fetch()} to read logs from a UTC time
7245
+ * range, {@link FunctionLogsManager#tail tail()} to read the most recent
7246
+ * logs, and {@link FunctionLogsManager#stream stream()} to follow new logs as
7247
+ * they arrive.
7248
+ *
7249
+ * See also: [`modal app logs`](https://modal.com/docs/cli/latest/app#modal-app-logs)
7250
+ * for CLI access to logs for an App.
7251
+ */
7252
+ get logs(): FunctionLogsManager;
6414
7253
  /** Override the static Function configuration at runtime. */
6415
7254
  withOptions(options: FunctionWithOptionsParams): Function_;
6416
7255
  /** Override the static Function concurrency configuration at runtime. */
@@ -6424,7 +7263,7 @@ declare class Function_ {
6424
7263
  remote(args?: any[], kwargs?: Record<string, any>): Promise<any>;
6425
7264
  spawn(args?: any[], kwargs?: Record<string, any>): Promise<FunctionCall>;
6426
7265
  getCurrentStats(): Promise<FunctionStats>;
6427
- updateAutoscaler(params: FunctionUpdateAutoscalerParams): Promise<void>;
7266
+ updateAutoscaler(params: FunctionUpdateAutoscalerParams): Promise<FunctionAutoscalerSettings>;
6428
7267
  /**
6429
7268
  * URL for addressing the Web Function via HTTP.
6430
7269
  * @returns The web URL, or undefined if this is not a Web Function
@@ -6435,7 +7274,8 @@ declare class Function_ {
6435
7274
  /** Optional parameters for {@link ClsService#fromName client.cls.fromName()}. */
6436
7275
  type ClsFromNameParams = {
6437
7276
  environment?: string;
6438
- createIfMissing?: boolean;
7277
+ /** Look up a version-pinned Cls deployed at this App version. */
7278
+ version?: number;
6439
7279
  };
6440
7280
  /**
6441
7281
  * Service for managing {@link Cls}.
@@ -6483,6 +7323,13 @@ type ImageFromNameParams = {
6483
7323
  /** Modal Environment to resolve the named Image in. */
6484
7324
  environment?: string;
6485
7325
  };
7326
+ /**
7327
+ * A closure that hydrates the registry-auth {@link Secret} (if any) and builds
7328
+ * the {@link ImageRegistryConfig} for the base build layer. It runs at build
7329
+ * time rather than when the Image is constructed, since the Secret may be lazy
7330
+ * (created via {@link SecretService#fromObject}).
7331
+ */
7332
+ type BuildRegistryConfig = (client: ModalClient) => Promise<ImageRegistryConfig>;
6486
7333
  /**
6487
7334
  * Service for managing {@link Image}s.
6488
7335
  *
@@ -6572,7 +7419,7 @@ type Layer = {
6572
7419
  declare class Image {
6573
7420
  #private;
6574
7421
  /** @ignore */
6575
- constructor(client: ModalClient, imageId: string, tag: string, imageRegistryConfig?: ImageRegistryConfig, layers?: Layer[], baseImageId?: string);
7422
+ constructor(client: ModalClient, imageId: string, tag: string, buildRegistryConfig?: BuildRegistryConfig, layers?: Layer[], baseImageId?: string);
6576
7423
  get imageId(): string;
6577
7424
  private static validateDockerfileCommands;
6578
7425
  /**
@@ -6803,6 +7650,14 @@ interface TaskContainerCreateRequest {
6803
7650
  secretIds: string[];
6804
7651
  /** Volumes to mount into the container. */
6805
7652
  volumeMounts: VolumeMount[];
7653
+ /**
7654
+ * Outbound network policy for the sidecar, independent of the main
7655
+ * container. When unset, defaults to open network access. BLOCKED is not
7656
+ * accepted: a blocked sidecar has no IP and cannot reach the main container.
7657
+ */
7658
+ networkAccess?: NetworkAccess | undefined;
7659
+ /** Optional PTY info for sidecar. */
7660
+ ptyInfo?: PTYInfo | undefined;
6806
7661
  }
6807
7662
  declare const TaskContainerCreateRequest: MessageFns<TaskContainerCreateRequest>;
6808
7663
  interface TaskContainerCreateResponse {
@@ -6908,6 +7763,17 @@ declare const TaskExecStartRequest: MessageFns<TaskExecStartRequest>;
6908
7763
  interface TaskExecStartResponse {
6909
7764
  }
6910
7765
  declare const TaskExecStartResponse: MessageFns<TaskExecStartResponse>;
7766
+ interface TaskExecStdinStatusResponse {
7767
+ /**
7768
+ * Number of bytes the server has accepted for this exec so far.
7769
+ * A streaming client that lost its connection should resume sending at this
7770
+ * offset.
7771
+ */
7772
+ numBytesWritten: number;
7773
+ /** True if stdin has already been closed (EOF sent) for this exec. */
7774
+ closed: boolean;
7775
+ }
7776
+ declare const TaskExecStdinStatusResponse: MessageFns<TaskExecStdinStatusResponse>;
6911
7777
  interface TaskExecStdinWriteResponse {
6912
7778
  }
6913
7779
  declare const TaskExecStdinWriteResponse: MessageFns<TaskExecStdinWriteResponse>;
@@ -6932,10 +7798,14 @@ interface TaskMountDirectoryRequest {
6932
7798
  * This key is not persisted by Modal.
6933
7799
  */
6934
7800
  customerSuppliedEncryptionKey?: Uint8Array | undefined;
7801
+ /** Fully qualified target container ID. Empty targets the main container. */
7802
+ containerId: string;
6935
7803
  }
6936
7804
  declare const TaskMountDirectoryRequest: MessageFns<TaskMountDirectoryRequest>;
6937
7805
  interface TaskReloadVolumesRequest {
6938
7806
  taskId: string;
7807
+ /** Fully qualified target container ID. Empty targets the main container. */
7808
+ containerId: string;
6939
7809
  }
6940
7810
  declare const TaskReloadVolumesRequest: MessageFns<TaskReloadVolumesRequest>;
6941
7811
  interface TaskSetNetworkAccessRequest {
@@ -6971,6 +7841,8 @@ interface TaskSnapshotDirectoryRequest {
6971
7841
  * metadata keys. This key is not persisted by Modal.
6972
7842
  */
6973
7843
  customerSuppliedEncryptionKey?: Uint8Array | undefined;
7844
+ /** Fully qualified target container ID. Empty targets the main container. */
7845
+ containerId: string;
6974
7846
  }
6975
7847
  declare const TaskSnapshotDirectoryRequest: MessageFns<TaskSnapshotDirectoryRequest>;
6976
7848
  interface TaskSnapshotDirectoryResponse {
@@ -6996,15 +7868,28 @@ interface TaskSnapshotFilesystemRequest {
6996
7868
  * metadata keys. This key is not persisted by Modal.
6997
7869
  */
6998
7870
  customerSuppliedEncryptionKey?: Uint8Array | undefined;
7871
+ /** Fully qualified target container ID. Empty targets the main container. */
7872
+ containerId: string;
6999
7873
  }
7000
7874
  declare const TaskSnapshotFilesystemRequest: MessageFns<TaskSnapshotFilesystemRequest>;
7001
7875
  interface TaskSnapshotFilesystemResponse {
7002
7876
  imageId: string;
7003
7877
  }
7004
7878
  declare const TaskSnapshotFilesystemResponse: MessageFns<TaskSnapshotFilesystemResponse>;
7879
+ interface TaskSnapshotMemoryRequest {
7880
+ taskId: string;
7881
+ idempotencyKey: string;
7882
+ }
7883
+ declare const TaskSnapshotMemoryRequest: MessageFns<TaskSnapshotMemoryRequest>;
7884
+ interface TaskSnapshotMemoryResponse {
7885
+ snapshotId: string;
7886
+ }
7887
+ declare const TaskSnapshotMemoryResponse: MessageFns<TaskSnapshotMemoryResponse>;
7005
7888
  interface TaskUnmountDirectoryRequest {
7006
7889
  taskId: string;
7007
7890
  path: Uint8Array;
7891
+ /** Fully qualified target container ID. Empty targets the main container. */
7892
+ containerId: string;
7008
7893
  }
7009
7894
  declare const TaskUnmountDirectoryRequest: MessageFns<TaskUnmountDirectoryRequest>;
7010
7895
  type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
@@ -7040,6 +7925,27 @@ interface Profile {
7040
7925
  maxThrottleWaitSecs?: number;
7041
7926
  }
7042
7927
 
7928
+ /**
7929
+ * @internal
7930
+ * @hidden
7931
+ */
7932
+ type CommandRouterAccess = {
7933
+ url: string;
7934
+ jwt: string;
7935
+ };
7936
+ /**
7937
+ * Seekable byte source for streaming stdin uploads.
7938
+ *
7939
+ * @internal
7940
+ * @hidden
7941
+ */
7942
+ interface StdinSource {
7943
+ /**
7944
+ * Return a fresh iterable over the source's bytes starting at `offset`,
7945
+ * so an upload can resume mid-stream after a transient failure.
7946
+ */
7947
+ readFrom(offset: number): AsyncIterable<Uint8Array>;
7948
+ }
7043
7949
  /** @ignore */
7044
7950
  declare class TaskCommandRouterClientImpl {
7045
7951
  private stub;
@@ -7054,7 +7960,12 @@ declare class TaskCommandRouterClientImpl {
7054
7960
  private jwtRefreshLock;
7055
7961
  private logger;
7056
7962
  private closed;
7057
- static tryInit(serverClient: ModalGrpcClient, taskId: string, sandboxId: string, isV2: boolean, logger: Logger, profile: Profile): Promise<TaskCommandRouterClientImpl | null>;
7963
+ /**
7964
+ * `access` is the router access returned by SandboxCreateV2, which lets a
7965
+ * freshly created sandbox connect without a round-trip. Pass undefined to look
7966
+ * it up — a re-attached sandbox, or the server could not mint a token.
7967
+ */
7968
+ static tryInit(serverClient: ModalGrpcClient, taskId: string, sandboxId: string, isV2: boolean, access: CommandRouterAccess | undefined, logger: Logger, profile: Profile): Promise<TaskCommandRouterClientImpl | null>;
7058
7969
  private constructor();
7059
7970
  close(): void;
7060
7971
  /** Run a unary RPC against the command router with the default retry policy. */
@@ -7067,15 +7978,38 @@ declare class TaskCommandRouterClientImpl {
7067
7978
  containerWait(request: TaskContainerWaitRequest): Promise<TaskContainerWaitResponse>;
7068
7979
  execStdioRead(taskId: string, execId: string, fileDescriptor: FileDescriptor, deadline?: number | null): AsyncGenerator<TaskExecStdioReadResponse>;
7069
7980
  execStdinWrite(taskId: string, execId: string, offset: number, data: Uint8Array, eof: boolean): Promise<TaskExecStdinWriteResponse>;
7981
+ /**
7982
+ * Read the current stdin write status for an exec'd command.
7983
+ *
7984
+ * Used by streaming clients to find the resume offset after a stream
7985
+ * failure. Evicts any in-flight stdin stream for the exec.
7986
+ */
7987
+ execStdinStatus(taskId: string, execId: string): Promise<TaskExecStdinStatusResponse>;
7988
+ /**
7989
+ * Stream `source` into the exec's stdin, with bounded resume on transient
7990
+ * failures.
7991
+ *
7992
+ * Streams the full contents of `source` in one client-streaming RPC and
7993
+ * closes stdin (EOF) on success. On a resumable error, queries
7994
+ * `execStdinStatus` for the server's offset and reopens the
7995
+ * stream from that point. Returns the total bytes streamed.
7996
+ */
7997
+ execStdinWriteStream(taskId: string, execId: string, source: StdinSource, chunkSize?: number, maxResumeAttempts?: number): Promise<number>;
7070
7998
  execPoll(taskId: string, execId: string, deadline?: number | null): Promise<TaskExecPollResponse>;
7071
7999
  execWait(taskId: string, execId: string, deadline?: number | null): Promise<TaskExecWaitResponse>;
7072
8000
  mountDirectory(request: TaskMountDirectoryRequest): Promise<void>;
7073
8001
  snapshotDirectory(request: TaskSnapshotDirectoryRequest, options?: TimeoutOptions): Promise<TaskSnapshotDirectoryResponse>;
7074
8002
  snapshotFilesystem(request: TaskSnapshotFilesystemRequest, options?: TimeoutOptions): Promise<TaskSnapshotFilesystemResponse>;
8003
+ snapshotMemory(request: TaskSnapshotMemoryRequest, options?: TimeoutOptions): Promise<TaskSnapshotMemoryResponse>;
7075
8004
  unmountDirectory(request: TaskUnmountDirectoryRequest): Promise<void>;
7076
8005
  setNetworkAccess(request: TaskSetNetworkAccessRequest): Promise<void>;
7077
- /** Reload all Volumes mounted in the task to reflect their latest committed state. */
7078
- reloadVolumes(request: TaskReloadVolumesRequest): Promise<void>;
8006
+ /**
8007
+ * Reload all Volumes mounted in the task to reflect their latest committed state.
8008
+ *
8009
+ * `timeoutMs` is the client-side deadline. If the reload does not complete
8010
+ * within this window, the call is cancelled and a TimeoutError is thrown.
8011
+ */
8012
+ reloadVolumes(request: TaskReloadVolumesRequest, options?: TimeoutOptions): Promise<void>;
7079
8013
  sandboxWaitUntilReady(taskId: string, timeoutMs: number): Promise<SandboxWaitUntilReadyTcrResponse>;
7080
8014
  private refreshJwt;
7081
8015
  private callWithAuthRetry;
@@ -7098,8 +8032,23 @@ interface FileInfo {
7098
8032
  readonly modifiedTime: number;
7099
8033
  readonly symlinkTarget: string | null;
7100
8034
  }
8035
+ /** Type of a filesystem watch event. */
8036
+ type FileWatchEventType = "Access" | "Create" | "Modify" | "Remove" | "Unknown";
8037
+ /** A filesystem change event.
8038
+ *
8039
+ * `paths` contains the absolute path(s) affected by the event. For most event
8040
+ * types it holds a single entry. Rename operations are reported as `Modify`
8041
+ * events: when both the source and destination fall within the watched scope,
8042
+ * `paths` holds `[source, destination]`; when only one side of the rename is
8043
+ * visible, `paths` holds that single path.
8044
+ */
8045
+ interface FileWatchEvent {
8046
+ readonly eventType: FileWatchEventType;
8047
+ readonly paths: string[];
8048
+ }
7101
8049
  /** Namespace for Sandbox filesystem APIs. */
7102
8050
  declare class SandboxFilesystem {
8051
+ #private;
7103
8052
  private readonly exec;
7104
8053
  /** @ignore */
7105
8054
  constructor(exec: (command: string[], params?: SandboxExecParams) => Promise<ContainerProcess>);
@@ -7219,6 +8168,36 @@ declare class SandboxFilesystem {
7219
8168
  * @throws {SandboxFilesystemError} the command fails for any other reason.
7220
8169
  */
7221
8170
  stat(remotePath: string): Promise<FileInfo>;
8171
+ /**
8172
+ * Watch a path in the Sandbox for filesystem changes.
8173
+ *
8174
+ * `remotePath` must be an absolute path in the Sandbox. If it points to a
8175
+ * file, events for that file are reported. If it points to a directory,
8176
+ * events for entries directly inside it are reported. Set `recursive: true`
8177
+ * to also receive events for all nested subdirectories. If `remotePath` is
8178
+ * a symlink, it is followed and events reference paths under the resolved
8179
+ * target.
8180
+ *
8181
+ * Yields {@link FileWatchEvent} objects as changes occur, until either the
8182
+ * timeout elapses, the iterator is closed, or the Sandbox is terminated.
8183
+ *
8184
+ * Optionally restrict the kinds of events emitted to those included in
8185
+ * `filter`. An undefined `filter` permits all types; passing an empty array
8186
+ * suppresses all events.
8187
+ *
8188
+ * `timeoutMs` is truncated to whole seconds. Omit it to watch indefinitely.
8189
+ * When the timeout elapses, the iterator stops without raising an exception.
8190
+ *
8191
+ * @throws {SandboxFilesystemNotFoundError} `remotePath` does not exist.
8192
+ * @throws {SandboxFilesystemPermissionError} watch access is denied.
8193
+ * @throws {InvalidError} the filesystem does not support watching.
8194
+ * @throws {SandboxFilesystemError} the command fails for any other reason.
8195
+ */
8196
+ watch(remotePath: string, params?: {
8197
+ filter?: FileWatchEventType[];
8198
+ recursive?: boolean;
8199
+ timeoutMs?: number;
8200
+ }): AsyncIterable<FileWatchEvent>;
7222
8201
  /**
7223
8202
  * Write binary content to a file in the Sandbox.
7224
8203
  *
@@ -7251,8 +8230,10 @@ declare class SandboxFilesystem {
7251
8230
 
7252
8231
  type SandboxSidecarCommandRouter = Pick<TaskCommandRouterClientImpl, "containerCreate" | "containerGet" | "containerList" | "containerTerminate" | "containerWait">;
7253
8232
  type SandboxSidecarAccess = {
8233
+ client: ModalClient;
7254
8234
  exec(command: string[], params: SandboxExecParams | undefined, containerId: string): Promise<ContainerProcess>;
7255
8235
  commandRouter(): Promise<[string, SandboxSidecarCommandRouter]>;
8236
+ reloadVolumes(containerId: string, params: SidecarReloadVolumesParams | undefined): Promise<void>;
7256
8237
  };
7257
8238
  /** Options for {@link SidecarService#create SidecarService.create()}. */
7258
8239
  type SidecarCreateParams = {
@@ -7264,6 +8245,19 @@ type SidecarCreateParams = {
7264
8245
  secrets?: Secret[];
7265
8246
  /** Working directory of the sidecar container. */
7266
8247
  workdir?: string;
8248
+ /**
8249
+ * List of CIDRs the sidecar is allowed to access. Independent of the main
8250
+ * container; if not set, all CIDRs are allowed. An empty list blocks all
8251
+ * external egress while preserving connectivity to the main container.
8252
+ */
8253
+ outboundCidrAllowlist?: string[];
8254
+ /**
8255
+ * List of domain names the sidecar is allowed to access. Supports wildcard
8256
+ * prefixes (`*.example.com`). Independent of the main container.
8257
+ */
8258
+ outboundDomainAllowlist?: string[];
8259
+ /** Enable a PTY for the sidecar. */
8260
+ pty?: boolean;
7267
8261
  };
7268
8262
  /** Options for {@link SidecarService#get SidecarService.get()}. */
7269
8263
  type SidecarGetParams = {
@@ -7282,6 +8276,11 @@ type SidecarTerminateParams = {
7282
8276
  /** If true, wait for the sidecar container to terminate. */
7283
8277
  wait?: boolean;
7284
8278
  };
8279
+ /** Optional parameters for {@link SidecarContainer#reloadVolumes SidecarContainer.reloadVolumes()}. */
8280
+ type SidecarReloadVolumesParams = {
8281
+ /** Overall budget in milliseconds. Defaults to 55000. */
8282
+ timeoutMs?: number;
8283
+ };
7285
8284
  /**
7286
8285
  * Creates and manages sidecar containers inside a Sandbox.
7287
8286
  *
@@ -7335,6 +8334,13 @@ declare class SidecarContainer {
7335
8334
  terminate(params: {
7336
8335
  wait: true;
7337
8336
  }): Promise<number>;
8337
+ /**
8338
+ * Reload all Volumes mounted in this sidecar container.
8339
+ *
8340
+ * Blocks until the reload completes, or throws a `TimeoutError` on timeout
8341
+ * (the reload may still complete in the background).
8342
+ */
8343
+ reloadVolumes(params?: SidecarReloadVolumesParams): Promise<void>;
7338
8344
  }
7339
8345
 
7340
8346
  /**
@@ -7374,6 +8380,48 @@ interface ModalWriteStream<R = any> extends WritableStream<R> {
7374
8380
  writeBytes(bytes: Uint8Array): Promise<void>;
7375
8381
  }
7376
8382
 
8383
+ /**
8384
+ * > Sandbox memory snapshots are in **early preview**.
8385
+ *
8386
+ * A `SandboxSnapshot` object lets you interact with a stored Sandbox snapshot that was created by calling
8387
+ * {@link Sandbox#experimentalSnapshot} on a Sandbox instance. This includes both the filesystem and memory state of
8388
+ * the original Sandbox at the time the snapshot was taken.
8389
+ */
8390
+ declare class SandboxSnapshot {
8391
+ #private;
8392
+ readonly snapshotId: string;
8393
+ /** @ignore */
8394
+ constructor(client: ModalClient, snapshotId: string, params?: {
8395
+ isV2?: boolean;
8396
+ });
8397
+ /**
8398
+ * @internal
8399
+ * Whether the snapshot came from a V2 sandbox. `undefined` until hydrated.
8400
+ */
8401
+ get _isV2(): boolean | undefined;
8402
+ /** @internal */
8403
+ _hydrate(): Promise<void>;
8404
+ }
8405
+ /**
8406
+ * Service for managing {@link SandboxSnapshot}s.
8407
+ *
8408
+ * Normally only ever accessed via the client as:
8409
+ * ```typescript
8410
+ * const modal = new ModalClient();
8411
+ * const snapshot = await modal.sandboxSnapshots.fromId(snapshotId);
8412
+ * ```
8413
+ */
8414
+ declare class SandboxSnapshotService {
8415
+ #private;
8416
+ constructor(client: ModalClient);
8417
+ /**
8418
+ * Construct a {@link SandboxSnapshot} for an existing snapshot ID.
8419
+ *
8420
+ * @param snapshotId - Snapshot ID returned when the snapshot was created.
8421
+ */
8422
+ fromId(snapshotId: string): Promise<SandboxSnapshot>;
8423
+ }
8424
+
7377
8425
  /**
7378
8426
  * Stdin is always present, but this option allow you to drop stdout or stderr
7379
8427
  * if you don't need them. The default is "pipe", matching Node.js behavior.
@@ -7474,6 +8522,8 @@ type SandboxCreateParams = {
7474
8522
  customDomain?: string;
7475
8523
  /** If true, the sandbox will receive a MODAL_IDENTITY_TOKEN env var for OIDC-based auth (e.g. to AWS, GCP). */
7476
8524
  includeOidcIdentityToken?: boolean;
8525
+ /** Enable memory snapshots. */
8526
+ experimentalEnableSnapshot?: boolean;
7477
8527
  };
7478
8528
  /**
7479
8529
  * Service for managing {@link Sandbox}es.
@@ -7497,17 +8547,21 @@ declare class SandboxService {
7497
8547
  * Supported features include exec, encrypted tunnels, wait/poll/terminate,
7498
8548
  * CPU and memory configuration, region placement, volumes, cloud bucket
7499
8549
  * mounts (with static credentials via {@link Secret} or `oidcAuthRoleArn`),
7500
- * OIDC identity tokens, {@link Proxy proxies}, and filesystem snapshots.
8550
+ * OIDC identity tokens, {@link Proxy proxies}, filesystem snapshots, and
8551
+ * custom domains (`customDomain` allows connections to the Sandbox via a
8552
+ * subdomain of that parent domain rather than a default Modal domain;
8553
+ * requires prior setup by Modal).
7501
8554
  *
7502
- * Features like tags, memory snapshots, GPUs, and custom domains are not
7503
- * supported.
8555
+ * Pass `experimentalEnableSnapshot: true` to create a sandbox that can be
8556
+ * snapshotted with {@link Sandbox#experimentalSnapshot}. Features like network
8557
+ * file systems and GPUs are not supported.
7504
8558
  *
7505
8559
  * V2 sandboxes created with this method are not currently returned by
7506
- * {@link SandboxService#list client.sandboxes.list()} and cannot be looked up
7507
- * with {@link SandboxService#fromName client.sandboxes.fromName()}. Store
7508
- * {@link Sandbox#sandboxId sandbox.sandboxId} if you need to retrieve the
7509
- * sandbox later, and use {@link SandboxService#fromId client.sandboxes.fromId()}
7510
- * to reattach.
8560
+ * {@link SandboxService#list client.sandboxes.list()}. A named Sandbox can be
8561
+ * looked up with
8562
+ * {@link SandboxService#experimentalFromName client.sandboxes.experimentalFromName()};
8563
+ * otherwise store {@link Sandbox#sandboxId sandbox.sandboxId} and use
8564
+ * {@link SandboxService#fromId client.sandboxes.fromId()} to reattach.
7511
8565
  */
7512
8566
  experimentalCreate(app: App, image: Image, params?: SandboxCreateParams): Promise<Sandbox>;
7513
8567
  /** Returns a running {@link Sandbox} object from an ID.
@@ -7526,25 +8580,47 @@ declare class SandboxService {
7526
8580
  * @returns Promise that resolves to a Sandbox
7527
8581
  */
7528
8582
  fromName(appName: string, name: string, params?: SandboxFromNameParams): Promise<Sandbox>;
8583
+ /**
8584
+ * Get a running V2 {@link Sandbox} by name from a deployed {@link App}.
8585
+ *
8586
+ * This looks up V2 Sandboxes, i.e. Sandboxes created via
8587
+ * {@link SandboxService#experimentalCreate client.sandboxes.experimentalCreate()}.
8588
+ *
8589
+ * EXPERIMENTAL: the API is subject to change.
8590
+ *
8591
+ * @param appName - Name of the deployed App
8592
+ * @param name - Name of the Sandbox
8593
+ * @param params - Optional parameters for getting the Sandbox
8594
+ * @returns Promise that resolves to a Sandbox
8595
+ */
8596
+ experimentalFromName(appName: string, name: string, params?: SandboxExperimentalFromNameParams): Promise<Sandbox>;
8597
+ /**
8598
+ * Restore a {@link Sandbox} from a memory snapshot.
8599
+ *
8600
+ * The restore targets the same backend the snapshot was taken from. A V1
8601
+ * snapshot restores as a V1 sandbox, a V2 snapshot as a V2 sandbox.
8602
+ *
8603
+ * EXPERIMENTAL: the API is subject to change.
8604
+ */
8605
+ experimentalFromSnapshot(snapshot: SandboxSnapshot, params?: SandboxExperimentalFromSnapshotParams): Promise<Sandbox>;
7529
8606
  /**
7530
8607
  * List all {@link Sandbox}es for the current Environment or App ID (if specified).
7531
8608
  * If tags are specified, only Sandboxes that have at least those tags are returned.
7532
8609
  */
7533
8610
  list(params?: SandboxListParams): AsyncGenerator<Sandbox, void, unknown>;
7534
8611
  /**
7535
- * List the V2 {@link Sandbox}es in an {@link App}.
8612
+ * List V2 {@link Sandbox}es.
7536
8613
  *
7537
- * This lists V2 Sandboxes, i.e. Sandboxes created via
7538
- * {@link SandboxService#experimentalCreate client.sandboxes.experimentalCreate()}.
7539
- * Such Sandboxes are not returned by
7540
- * {@link SandboxService#list client.sandboxes.list()}. Filtering based on tags
7541
- * is not yet supported.
8614
+ * This lists all Sandboxes (both v1 and v2).
8615
+ * Pass `appId` to scope to an App; omit it to list across the current
8616
+ * environment (deprecated prefer scoping by `appId`). If tags are specified,
8617
+ * only Sandboxes that have at least those tags are returned.
7542
8618
  *
7543
- * Yields {@link Sandbox} objects that are currently running in the App.
8619
+ * Yields {@link Sandbox} objects that are currently running.
7544
8620
  *
7545
8621
  * EXPERIMENTAL: the API is subject to change.
7546
8622
  */
7547
- experimentalList(params: SandboxExperimentalListParams): AsyncGenerator<Sandbox, void, unknown>;
8623
+ experimentalList(params?: SandboxExperimentalListParams): AsyncGenerator<Sandbox, void, unknown>;
7548
8624
  }
7549
8625
  /** Optional parameters for {@link SandboxService#list client.sandboxes.list()}. */
7550
8626
  type SandboxListParams = {
@@ -7557,13 +8633,29 @@ type SandboxListParams = {
7557
8633
  };
7558
8634
  /** Parameters for {@link SandboxService#experimentalList client.sandboxes.experimentalList()}. */
7559
8635
  type SandboxExperimentalListParams = {
7560
- /** The App to list Sandboxes under. */
7561
- appId: string;
8636
+ /** The App to list Sandboxes under. Omit to list across the environment (deprecated). */
8637
+ appId?: string;
8638
+ /** Only return Sandboxes that include all specified tags. */
8639
+ tags?: Record<string, string>;
8640
+ /** Override environment for the request; defaults to current profile. */
8641
+ environment?: string;
7562
8642
  };
7563
8643
  /** Optional parameters for {@link SandboxService#fromName client.sandboxes.fromName()}. */
7564
8644
  type SandboxFromNameParams = {
7565
8645
  environment?: string;
7566
8646
  };
8647
+ /** Optional parameters for {@link SandboxService#experimentalFromName client.sandboxes.experimentalFromName()}. */
8648
+ type SandboxExperimentalFromNameParams = {
8649
+ environment?: string;
8650
+ };
8651
+ /** Optional parameters for {@link SandboxService#experimentalFromSnapshot client.sandboxes.experimentalFromSnapshot()}. */
8652
+ type SandboxExperimentalFromSnapshotParams = {
8653
+ /**
8654
+ * Name for the restored Sandbox. Omit to reuse the original Sandbox's name,
8655
+ * pass `null` to leave it unnamed, or pass a string to override it.
8656
+ */
8657
+ name?: string | null;
8658
+ };
7567
8659
  /** Optional parameters for {@link Sandbox#exec Sandbox.exec()}. */
7568
8660
  type SandboxExecParams = {
7569
8661
  /** Specifies text or binary encoding for input and output streams. */
@@ -7604,6 +8696,21 @@ type SandboxSnapshotFilesystemParams = {
7604
8696
  */
7605
8697
  ttlMs?: number | null;
7606
8698
  };
8699
+ /** Optional parameters for Sandbox.experimentalGetExitSnapshot(). */
8700
+ type SandboxExperimentalGetExitSnapshotParams = {
8701
+ /**
8702
+ * Total time to wait in milliseconds, spread across repeated long polls of
8703
+ * at most `EXIT_SNAPSHOT_LONG_POLL_TIMEOUT` seconds each. `undefined` (the
8704
+ * default) waits until the snapshot reaches a terminal state. `0` performs
8705
+ * an immediate check without waiting.
8706
+ */
8707
+ timeoutMs?: number;
8708
+ };
8709
+ /** Optional parameters for {@link Sandbox#reloadVolumes Sandbox.reloadVolumes()}. */
8710
+ type SandboxReloadVolumesParams = {
8711
+ /** Overall budget in milliseconds. Defaults to 55000. */
8712
+ timeoutMs?: number;
8713
+ };
7607
8714
  /** Optional parameters for {@link Sandbox#snapshotDirectory Sandbox.snapshotDirectory()}. */
7608
8715
  type SandboxSnapshotDirectoryParams = {
7609
8716
  /**
@@ -7679,11 +8786,16 @@ declare class Tunnel {
7679
8786
  declare class Sandbox {
7680
8787
  #private;
7681
8788
  readonly sandboxId: string;
7682
- /** @ignore */
8789
+ /**
8790
+ * Creates a Sandbox handle for a server-returned ID, deducing the backend
8791
+ * version from the ID shape.
8792
+ *
8793
+ * @ignore
8794
+ */
7683
8795
  constructor(client: ModalClient, sandboxId: string, params?: {
7684
- isV2?: boolean;
7685
8796
  taskId?: string;
7686
8797
  tunnels?: Record<number, Tunnel>;
8798
+ initCommandRouterAccess?: CommandRouterAccess;
7687
8799
  });
7688
8800
  get stdin(): ModalWriteStream<string>;
7689
8801
  get stdout(): ModalReadStream<string>;
@@ -7696,10 +8808,31 @@ declare class Sandbox {
7696
8808
  * EXPERIMENTAL: the API is subject to change.
7697
8809
  */
7698
8810
  get experimentalSidecars(): SidecarService;
7699
- /** Set tags (key-value pairs) on the Sandbox. Tags can be used to filter results in {@link SandboxService#list client.sandboxes.list}. */
8811
+ /**
8812
+ * Set tags (key-value pairs) on the Sandbox. Tags can be used to filter results in {@link SandboxService#list client.sandboxes.list}.
8813
+ *
8814
+ * Setting tags replaces the Sandbox's entire tag set; passing an empty object clears all tags.
8815
+ */
7700
8816
  setTags(tags: Record<string, string>): Promise<void>;
7701
8817
  /** Get tags (key-value pairs) currently attached to this Sandbox from the server. */
7702
8818
  getTags(): Promise<Record<string, string>>;
8819
+ /**
8820
+ * Assign a name to a running V2 {@link Sandbox} that was created without one.
8821
+ *
8822
+ * This is only supported for V2 Sandboxes, i.e. Sandboxes created via
8823
+ * {@link SandboxService#experimentalCreate client.sandboxes.experimentalCreate()}.
8824
+ * A name may only be set once, and only on a Sandbox that has never had one;
8825
+ * afterwards the Sandbox can be looked up with
8826
+ * {@link SandboxService#experimentalFromName client.sandboxes.experimentalFromName()}.
8827
+ *
8828
+ * EXPERIMENTAL: the API is subject to change.
8829
+ *
8830
+ * @param name - Name to assign to the Sandbox. Must be unique within the App.
8831
+ * @throws {AlreadyExistsError} If another running Sandbox in the App already holds the name.
8832
+ * @throws {InvalidError} If the server rejects the name as invalid.
8833
+ * @throws {ConflictError} If the Sandbox already has a name or is no longer running.
8834
+ */
8835
+ experimentalSetName(name: string): Promise<void>;
7703
8836
  exec(command: string[], params?: SandboxExecParams & {
7704
8837
  mode?: "text";
7705
8838
  }): Promise<ContainerProcess<string>>;
@@ -7751,6 +8884,29 @@ declare class Sandbox {
7751
8884
  * @returns Promise that resolves to an {@link Image}
7752
8885
  */
7753
8886
  snapshotFilesystem(params?: SandboxSnapshotFilesystemParams): Promise<Image>;
8887
+ /**
8888
+ * Get the exit filesystem snapshot image.
8889
+ *
8890
+ * EXPERIMENTAL: the API is subject to change.
8891
+ *
8892
+ * @param params - Optional parameters; see SandboxExperimentalGetExitSnapshotParams.
8893
+ * @returns The exit snapshot Image.
8894
+ * @throws {TimeoutError} If `timeoutMs` elapses before the snapshot
8895
+ * reaches a terminal state. This includes `timeoutMs = 0` when the
8896
+ * snapshot is still pending.
8897
+ */
8898
+ experimentalGetExitSnapshot(params?: SandboxExperimentalGetExitSnapshotParams): Promise<Image>;
8899
+ /**
8900
+ * Snapshot the filesystem and memory of the Sandbox.
8901
+ *
8902
+ * Returns a {@link SandboxSnapshot} which can be restored into a new Sandbox
8903
+ * with {@link SandboxService#experimentalFromSnapshot client.sandboxes.experimentalFromSnapshot()}.
8904
+ *
8905
+ * The Sandbox must have been created with `experimentalEnableSnapshot: true`.
8906
+ *
8907
+ * EXPERIMENTAL: the API is subject to change.
8908
+ */
8909
+ experimentalSnapshot(): Promise<SandboxSnapshot>;
7754
8910
  /**
7755
8911
  * Mount an {@link Image} at a path in the Sandbox filesystem.
7756
8912
  *
@@ -7775,8 +8931,13 @@ declare class Sandbox {
7775
8931
  updateNetworkPolicy(params: SandboxUpdateNetworkPolicyParams): Promise<void>;
7776
8932
  /**
7777
8933
  * Reload all Volumes mounted in the Sandbox.
8934
+ *
8935
+ * Blocks until the reload completes, or throws a `TimeoutError` on timeout
8936
+ * (the reload may still complete in the background).
8937
+ *
8938
+ * @param params - Optional parameters; see {@link SandboxReloadVolumesParams}.
7778
8939
  */
7779
- reloadVolumes(): Promise<void>;
8940
+ reloadVolumes(params?: SandboxReloadVolumesParams): Promise<void>;
7780
8941
  /**
7781
8942
  * Snapshots and creates a new {@link Image} from a directory in the running sandbox.
7782
8943
  *
@@ -7814,6 +8975,23 @@ declare class ContainerProcess<R extends string | Uint8Array = any> {
7814
8975
  * Useful for when an stdin write has failed.
7815
8976
  */
7816
8977
  closeStdin(): Promise<void>;
8978
+ /**
8979
+ * @internal
8980
+ * @hidden
8981
+ * Stream `source` into the process's stdin and close it (EOF) on success.
8982
+ *
8983
+ * Returns the total bytes streamed.
8984
+ */
8985
+ _stdinWriteStream(source: StdinSource): Promise<number>;
8986
+ /**
8987
+ * @internal
8988
+ * @hidden
8989
+ * Check if the container process has finished running.
8990
+ *
8991
+ * Returns `null` if the process is still running, else returns the exit
8992
+ * code.
8993
+ */
8994
+ _poll(): Promise<number | null>;
7817
8995
  /** Wait for process completion and return the exit code. */
7818
8996
  wait(): Promise<number>;
7819
8997
  }
@@ -7847,7 +9025,7 @@ type ModalGrpcClient = Client<typeof ModalClientDefinition, TimeoutOptions & Ret
7847
9025
  *
7848
9026
  * ModalClient provides access to all Modal services through service properties.
7849
9027
  * Create a client instance and use its service properties to manage {@link App}s,
7850
- * {@link Function_ Function}s, * {@link Sandbox}es, and other Modal resources.
9028
+ * {@link Function_ Function}s, {@link Sandbox}es, and other Modal resources.
7851
9029
  *
7852
9030
  * @example
7853
9031
  * ```typescript
@@ -7870,6 +9048,7 @@ declare class ModalClient {
7870
9048
  readonly proxies: ProxyService;
7871
9049
  readonly queues: QueueService;
7872
9050
  readonly sandboxes: SandboxService;
9051
+ readonly sandboxSnapshots: SandboxSnapshotService;
7873
9052
  readonly secrets: SecretService;
7874
9053
  readonly volumes: VolumeService;
7875
9054
  /** @ignore */
@@ -7960,6 +9139,10 @@ declare class FunctionTimeoutError extends Error {
7960
9139
  declare class RemoteError extends Error {
7961
9140
  constructor(message: string);
7962
9141
  }
9142
+ /** Something unexpected happened during runtime. */
9143
+ declare class ExecutionError extends Error {
9144
+ constructor(message: string);
9145
+ }
7963
9146
  /** A retryable internal error from Modal. */
7964
9147
  declare class InternalFailure extends Error {
7965
9148
  constructor(message: string);
@@ -7972,6 +9155,10 @@ declare class NotFoundError extends Error {
7972
9155
  declare class AlreadyExistsError extends Error {
7973
9156
  constructor(message: string);
7974
9157
  }
9158
+ /** The current state of a resource conflicts with the requested operation. */
9159
+ declare class ConflictError extends Error {
9160
+ constructor(message: string);
9161
+ }
7975
9162
  /** A request or other operation was invalid. */
7976
9163
  declare class InvalidError extends Error {
7977
9164
  constructor(message: string);
@@ -8020,6 +9207,10 @@ declare class SandboxFilesystemPermissionError extends SandboxFilesystemError {
8020
9207
  declare class SandboxTimeoutError extends Error {
8021
9208
  constructor(message?: string);
8022
9209
  }
9210
+ /** No snapshot image will be produced for a Sandbox. */
9211
+ declare class SnapshotCreationError extends Error {
9212
+ constructor(message: string);
9213
+ }
8023
9214
  /** Thrown when attempting operations on a detached Sandbox. */
8024
9215
  declare class ClientClosedError extends Error {
8025
9216
  constructor(message?: string);
@@ -8027,4 +9218,4 @@ declare class ClientClosedError extends Error {
8027
9218
 
8028
9219
  declare function checkForRenamedParams(params: any, renames: Record<string, string>): void;
8029
9220
 
8030
- export { AlreadyExistsError, App, type AppFromNameParams, AppService, ClientClosedError, CloudBucketMount, CloudBucketMountService, Cls, type ClsFromNameParams, ClsInstance, ClsService, type ClsWithBatchingParams, type ClsWithConcurrencyParams, type ClsWithOptionsParams, ContainerProcess, type FileInfo, type FileType, FunctionCall, type FunctionCallCancelParams, type FunctionCallGetParams, FunctionCallService, type FunctionFromNameParams, FunctionService, type FunctionStats, FunctionTimeoutError, type FunctionUpdateAutoscalerParams, type FunctionWithBatchingParams, type FunctionWithConcurrencyParams, type FunctionWithOptionsParams, Function_, Image, type ImageDeleteParams, type ImageDockerfileCommandsParams, type ImageFromNameParams, type ImagePublishParams, ImageService, InternalFailure, InvalidError, type LogLevel, type Logger, ModalClient, type ModalClientParams, type ModalReadStream, type ModalWriteStream, NotFoundError, Probe, type ProbeParams, type Profile, Proxy, type ProxyFromNameParams, ProxyService, Queue, type QueueClearParams, type QueueDeleteParams, QueueEmptyError, type QueueEphemeralParams, type QueueFromNameParams, QueueFullError, type QueueGetParams, type QueueIterateParams, type QueueLenParams, type QueuePutParams, QueueService, RemoteError, Retries, Sandbox, type SandboxCreateConnectCredentials, type SandboxCreateConnectTokenParams, type SandboxCreateParams, type SandboxExecParams, type SandboxExperimentalListParams, SandboxFilesystem, SandboxFilesystemDirectoryNotEmptyError, SandboxFilesystemError, SandboxFilesystemFileTooLargeError, SandboxFilesystemIsADirectoryError, SandboxFilesystemNotADirectoryError, SandboxFilesystemNotFoundError, SandboxFilesystemPathAlreadyExistsError, SandboxFilesystemPermissionError, type SandboxFromNameParams, type SandboxListParams, type SandboxMountImageParams, SandboxService, type SandboxSnapshotDirectoryParams, type SandboxSnapshotFilesystemParams, type SandboxTerminateParams, SandboxTimeoutError, type SandboxUpdateNetworkPolicyParams, Secret, type SecretDeleteParams, type SecretFromNameParams, type SecretFromObjectParams, SecretService, SidecarContainer, type SidecarCreateParams, type SidecarExecParams, type SidecarGetParams, type SidecarListParams, SidecarService, type SidecarTerminateParams, type StdioBehavior, type StreamMode, TimeoutError, Tunnel, Volume, type VolumeDeleteParams, type VolumeEphemeralParams, type VolumeFromNameParams, type VolumeMountOptions, VolumeService, checkForRenamedParams };
9221
+ export { AlreadyExistsError, App, type AppFromNameParams, AppService, ClientClosedError, CloudBucketMount, CloudBucketMountService, Cls, type ClsFromNameParams, ClsInstance, ClsService, type ClsWithBatchingParams, type ClsWithConcurrencyParams, type ClsWithOptionsParams, ConflictError, ContainerProcess, ExecutionError, type FileInfo, type FileType, type FileWatchEvent, type FileWatchEventType, type FunctionAutoscalerSettings, FunctionCall, type FunctionCallCancelParams, type FunctionCallGetParams, type FunctionCallLogFetchParams, type FunctionCallLogStreamParams, type FunctionCallLogTailParams, FunctionCallLogsManager, FunctionCallService, type FunctionFromNameParams, type FunctionLogFetchParams, type FunctionLogStreamParams, type FunctionLogTailParams, FunctionLogsManager, FunctionService, type FunctionStats, FunctionTimeoutError, type FunctionUpdateAutoscalerParams, type FunctionWithBatchingParams, type FunctionWithConcurrencyParams, type FunctionWithOptionsParams, Function_, Image, type ImageDeleteParams, type ImageDockerfileCommandsParams, type ImageFromNameParams, type ImagePublishParams, ImageService, InternalFailure, InvalidError, type LogEntry, type FunctionLogFetchParams as LogFetchParams, type LogLevel, type LogSource, type Logger, ModalClient, type ModalClientParams, type ModalReadStream, type ModalWriteStream, NotFoundError, Probe, type ProbeParams, type Profile, Proxy, type ProxyFromNameParams, ProxyService, Queue, type QueueClearParams, type QueueDeleteParams, QueueEmptyError, type QueueEphemeralParams, type QueueFromNameParams, QueueFullError, type QueueGetParams, type QueueIterateParams, type QueueLenParams, type QueuePutParams, QueueService, RemoteError, Retries, Sandbox, type SandboxCreateConnectCredentials, type SandboxCreateConnectTokenParams, type SandboxCreateParams, type SandboxExecParams, type SandboxExperimentalFromNameParams, type SandboxExperimentalFromSnapshotParams, type SandboxExperimentalGetExitSnapshotParams, type SandboxExperimentalListParams, SandboxFilesystem, SandboxFilesystemDirectoryNotEmptyError, SandboxFilesystemError, SandboxFilesystemFileTooLargeError, SandboxFilesystemIsADirectoryError, SandboxFilesystemNotADirectoryError, SandboxFilesystemNotFoundError, SandboxFilesystemPathAlreadyExistsError, SandboxFilesystemPermissionError, type SandboxFromNameParams, type SandboxListParams, type SandboxMountImageParams, type SandboxReloadVolumesParams, SandboxService, SandboxSnapshot, type SandboxSnapshotDirectoryParams, type SandboxSnapshotFilesystemParams, SandboxSnapshotService, type SandboxTerminateParams, SandboxTimeoutError, type SandboxUpdateNetworkPolicyParams, Secret, type SecretDeleteParams, type SecretFromNameParams, type SecretFromObjectParams, SecretService, SidecarContainer, type SidecarCreateParams, type SidecarExecParams, type SidecarGetParams, type SidecarListParams, SidecarService, type SidecarTerminateParams, SnapshotCreationError, type StdioBehavior, type StreamMode, TimeoutError, Tunnel, Volume, type VolumeDeleteParams, type VolumeEphemeralParams, type VolumeFromNameParams, type VolumeMountOptionsParams, VolumeService, checkForRenamedParams };