modal 1.0.6.dev58__py3-none-any.whl → 1.2.3.dev7__py3-none-any.whl
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.
Potentially problematic release.
This version of modal might be problematic. Click here for more details.
- modal/__main__.py +3 -4
- modal/_billing.py +80 -0
- modal/_clustered_functions.py +7 -3
- modal/_clustered_functions.pyi +4 -2
- modal/_container_entrypoint.py +41 -49
- modal/_functions.py +424 -195
- modal/_grpc_client.py +171 -0
- modal/_load_context.py +105 -0
- modal/_object.py +68 -20
- modal/_output.py +58 -45
- modal/_partial_function.py +36 -11
- modal/_pty.py +7 -3
- modal/_resolver.py +21 -35
- modal/_runtime/asgi.py +4 -3
- modal/_runtime/container_io_manager.py +301 -186
- modal/_runtime/container_io_manager.pyi +70 -61
- modal/_runtime/execution_context.py +18 -2
- modal/_runtime/execution_context.pyi +4 -1
- modal/_runtime/gpu_memory_snapshot.py +170 -63
- modal/_runtime/user_code_imports.py +28 -58
- modal/_serialization.py +57 -1
- modal/_utils/async_utils.py +33 -12
- modal/_utils/auth_token_manager.py +2 -5
- modal/_utils/blob_utils.py +110 -53
- modal/_utils/function_utils.py +49 -42
- modal/_utils/grpc_utils.py +80 -50
- modal/_utils/mount_utils.py +26 -1
- modal/_utils/name_utils.py +17 -3
- modal/_utils/task_command_router_client.py +536 -0
- modal/_utils/time_utils.py +34 -6
- modal/app.py +219 -83
- modal/app.pyi +229 -56
- modal/billing.py +5 -0
- modal/{requirements → builder}/2025.06.txt +1 -0
- modal/{requirements → builder}/PREVIEW.txt +1 -0
- modal/cli/_download.py +19 -3
- modal/cli/_traceback.py +3 -2
- modal/cli/app.py +4 -4
- modal/cli/cluster.py +15 -7
- modal/cli/config.py +5 -3
- modal/cli/container.py +7 -6
- modal/cli/dict.py +22 -16
- modal/cli/entry_point.py +12 -5
- modal/cli/environment.py +5 -4
- modal/cli/import_refs.py +3 -3
- modal/cli/launch.py +102 -5
- modal/cli/network_file_system.py +9 -13
- modal/cli/profile.py +3 -2
- modal/cli/programs/launch_instance_ssh.py +94 -0
- modal/cli/programs/run_jupyter.py +1 -1
- modal/cli/programs/run_marimo.py +95 -0
- modal/cli/programs/vscode.py +1 -1
- modal/cli/queues.py +57 -26
- modal/cli/run.py +58 -16
- modal/cli/secret.py +48 -22
- modal/cli/utils.py +3 -4
- modal/cli/volume.py +28 -25
- modal/client.py +13 -116
- modal/client.pyi +9 -91
- modal/cloud_bucket_mount.py +5 -3
- modal/cloud_bucket_mount.pyi +5 -1
- modal/cls.py +130 -102
- modal/cls.pyi +45 -85
- modal/config.py +29 -10
- modal/container_process.py +291 -13
- modal/container_process.pyi +95 -32
- modal/dict.py +282 -63
- modal/dict.pyi +423 -73
- modal/environments.py +15 -27
- modal/environments.pyi +5 -15
- modal/exception.py +8 -0
- modal/experimental/__init__.py +143 -38
- modal/experimental/flash.py +247 -78
- modal/experimental/flash.pyi +137 -9
- modal/file_io.py +14 -28
- modal/file_io.pyi +2 -2
- modal/file_pattern_matcher.py +25 -16
- modal/functions.pyi +134 -61
- modal/image.py +255 -86
- modal/image.pyi +300 -62
- modal/io_streams.py +436 -126
- modal/io_streams.pyi +236 -171
- modal/mount.py +62 -157
- modal/mount.pyi +45 -172
- modal/network_file_system.py +30 -53
- modal/network_file_system.pyi +16 -76
- modal/object.pyi +42 -8
- modal/parallel_map.py +821 -113
- modal/parallel_map.pyi +134 -0
- modal/partial_function.pyi +4 -1
- modal/proxy.py +16 -7
- modal/proxy.pyi +10 -2
- modal/queue.py +263 -61
- modal/queue.pyi +409 -66
- modal/runner.py +112 -92
- modal/runner.pyi +45 -27
- modal/sandbox.py +451 -124
- modal/sandbox.pyi +513 -67
- modal/secret.py +291 -67
- modal/secret.pyi +425 -19
- modal/serving.py +7 -11
- modal/serving.pyi +7 -8
- modal/snapshot.py +11 -8
- modal/token_flow.py +4 -4
- modal/volume.py +344 -98
- modal/volume.pyi +464 -68
- {modal-1.0.6.dev58.dist-info → modal-1.2.3.dev7.dist-info}/METADATA +9 -8
- modal-1.2.3.dev7.dist-info/RECORD +195 -0
- modal_docs/mdmd/mdmd.py +11 -1
- modal_proto/api.proto +399 -67
- modal_proto/api_grpc.py +241 -1
- modal_proto/api_pb2.py +1395 -1000
- modal_proto/api_pb2.pyi +1239 -79
- modal_proto/api_pb2_grpc.py +499 -4
- modal_proto/api_pb2_grpc.pyi +162 -14
- modal_proto/modal_api_grpc.py +175 -160
- modal_proto/sandbox_router.proto +145 -0
- modal_proto/sandbox_router_grpc.py +105 -0
- modal_proto/sandbox_router_pb2.py +149 -0
- modal_proto/sandbox_router_pb2.pyi +333 -0
- modal_proto/sandbox_router_pb2_grpc.py +203 -0
- modal_proto/sandbox_router_pb2_grpc.pyi +75 -0
- modal_proto/task_command_router.proto +144 -0
- modal_proto/task_command_router_grpc.py +105 -0
- modal_proto/task_command_router_pb2.py +149 -0
- modal_proto/task_command_router_pb2.pyi +333 -0
- modal_proto/task_command_router_pb2_grpc.py +203 -0
- modal_proto/task_command_router_pb2_grpc.pyi +75 -0
- modal_version/__init__.py +1 -1
- modal-1.0.6.dev58.dist-info/RECORD +0 -183
- modal_proto/modal_options_grpc.py +0 -3
- modal_proto/options.proto +0 -19
- modal_proto/options_grpc.py +0 -3
- modal_proto/options_pb2.py +0 -35
- modal_proto/options_pb2.pyi +0 -20
- modal_proto/options_pb2_grpc.py +0 -4
- modal_proto/options_pb2_grpc.pyi +0 -7
- /modal/{requirements → builder}/2023.12.312.txt +0 -0
- /modal/{requirements → builder}/2023.12.txt +0 -0
- /modal/{requirements → builder}/2024.04.txt +0 -0
- /modal/{requirements → builder}/2024.10.txt +0 -0
- /modal/{requirements → builder}/README.md +0 -0
- /modal/{requirements → builder}/base-images.json +0 -0
- {modal-1.0.6.dev58.dist-info → modal-1.2.3.dev7.dist-info}/WHEEL +0 -0
- {modal-1.0.6.dev58.dist-info → modal-1.2.3.dev7.dist-info}/entry_points.txt +0 -0
- {modal-1.0.6.dev58.dist-info → modal-1.2.3.dev7.dist-info}/licenses/LICENSE +0 -0
- {modal-1.0.6.dev58.dist-info → modal-1.2.3.dev7.dist-info}/top_level.txt +0 -0
modal_proto/api.proto
CHANGED
|
@@ -4,9 +4,9 @@ option go_package = "github.com/modal-labs/modal/go/proto";
|
|
|
4
4
|
|
|
5
5
|
package modal.client;
|
|
6
6
|
|
|
7
|
-
import "modal_proto/options.proto";
|
|
8
7
|
import "google/protobuf/empty.proto";
|
|
9
8
|
import "google/protobuf/struct.proto";
|
|
9
|
+
import "google/protobuf/timestamp.proto";
|
|
10
10
|
import "google/protobuf/wrappers.proto";
|
|
11
11
|
|
|
12
12
|
enum AppDeployVisibility {
|
|
@@ -111,6 +111,7 @@ enum DataFormat {
|
|
|
111
111
|
DATA_FORMAT_PICKLE = 1; // Cloudpickle
|
|
112
112
|
DATA_FORMAT_ASGI = 2; // "Asgi" protobuf message
|
|
113
113
|
DATA_FORMAT_GENERATOR_DONE = 3; // "GeneratorDone" protobuf message
|
|
114
|
+
DATA_FORMAT_CBOR = 4;
|
|
114
115
|
}
|
|
115
116
|
|
|
116
117
|
enum DeploymentNamespace {
|
|
@@ -240,6 +241,13 @@ enum SystemErrorCode {
|
|
|
240
241
|
SYSTEM_ERROR_CODE_NOSPC = 28; // ENOSPC: No space left on device
|
|
241
242
|
}
|
|
242
243
|
|
|
244
|
+
enum TaskSnapshotBehavior {
|
|
245
|
+
TASK_SNAPSHOT_BEHAVIOR_UNSPECIFIED = 0;
|
|
246
|
+
TASK_SNAPSHOT_BEHAVIOR_SNAPSHOT = 1;
|
|
247
|
+
TASK_SNAPSHOT_BEHAVIOR_RESTORE = 2;
|
|
248
|
+
TASK_SNAPSHOT_BEHAVIOR_NONE = 3;
|
|
249
|
+
}
|
|
250
|
+
|
|
243
251
|
enum TaskState {
|
|
244
252
|
TASK_STATE_UNSPECIFIED = 0;
|
|
245
253
|
TASK_STATE_CREATED = 6;
|
|
@@ -289,10 +297,11 @@ message AppClientDisconnectRequest {
|
|
|
289
297
|
}
|
|
290
298
|
|
|
291
299
|
message AppCreateRequest {
|
|
292
|
-
string client_id = 1
|
|
300
|
+
string client_id = 1;
|
|
293
301
|
string description = 2; // Human readable label for the app
|
|
294
302
|
string environment_name = 5;
|
|
295
303
|
AppState app_state = 6;
|
|
304
|
+
map<string, string> tags = 7; // Additional metadata to attach to the App
|
|
296
305
|
}
|
|
297
306
|
|
|
298
307
|
message AppCreateResponse {
|
|
@@ -302,7 +311,7 @@ message AppCreateResponse {
|
|
|
302
311
|
}
|
|
303
312
|
|
|
304
313
|
message AppDeployRequest {
|
|
305
|
-
string app_id = 1
|
|
314
|
+
string app_id = 1;
|
|
306
315
|
reserved 2; // namespace
|
|
307
316
|
string name = 3;
|
|
308
317
|
string object_entity = 4;
|
|
@@ -358,6 +367,7 @@ message AppGetLogsRequest {
|
|
|
358
367
|
float timeout = 2;
|
|
359
368
|
string last_entry_id = 4;
|
|
360
369
|
string function_id = 5;
|
|
370
|
+
string parametrized_function_id = 11;
|
|
361
371
|
string input_id = 6;
|
|
362
372
|
string task_id = 7;
|
|
363
373
|
string function_call_id = 9;
|
|
@@ -390,6 +400,14 @@ message AppGetOrCreateResponse {
|
|
|
390
400
|
string app_id = 1;
|
|
391
401
|
}
|
|
392
402
|
|
|
403
|
+
message AppGetTagsRequest {
|
|
404
|
+
string app_id = 1;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
message AppGetTagsResponse {
|
|
408
|
+
map<string, string> tags = 1;
|
|
409
|
+
}
|
|
410
|
+
|
|
393
411
|
message AppHeartbeatRequest {
|
|
394
412
|
string app_id = 1;
|
|
395
413
|
}
|
|
@@ -427,7 +445,7 @@ message AppLookupResponse {
|
|
|
427
445
|
}
|
|
428
446
|
|
|
429
447
|
message AppPublishRequest {
|
|
430
|
-
string app_id = 1
|
|
448
|
+
string app_id = 1;
|
|
431
449
|
string name = 2;
|
|
432
450
|
string deployment_tag = 3; // Additional metadata to identify a deployment
|
|
433
451
|
AppState app_state = 4; // Published app will be in this state
|
|
@@ -437,6 +455,7 @@ message AppPublishRequest {
|
|
|
437
455
|
uint32 rollback_version = 8; // Unused by client, but used internally
|
|
438
456
|
string client_version = 9; // Unused by client, but used internally
|
|
439
457
|
CommitInfo commit_info = 10; // Git information for deployment tracking
|
|
458
|
+
map<string, string> tags = 11; // Additional metadata to attach to the App
|
|
440
459
|
}
|
|
441
460
|
|
|
442
461
|
message AppPublishResponse {
|
|
@@ -458,8 +477,14 @@ message AppSetObjectsRequest {
|
|
|
458
477
|
reserved 6;
|
|
459
478
|
}
|
|
460
479
|
|
|
480
|
+
message AppSetTagsRequest {
|
|
481
|
+
string app_id = 1;
|
|
482
|
+
map<string, string> tags = 2;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
|
|
461
486
|
message AppStopRequest {
|
|
462
|
-
string app_id = 1
|
|
487
|
+
string app_id = 1;
|
|
463
488
|
AppStopSource source = 2;
|
|
464
489
|
}
|
|
465
490
|
|
|
@@ -621,11 +646,26 @@ message AuthTokenGetResponse {
|
|
|
621
646
|
string token = 1;
|
|
622
647
|
}
|
|
623
648
|
|
|
649
|
+
// Message representing the current (coalesced) state of the autoscaler configuration
|
|
650
|
+
// As well as the different sources that were used to create it.
|
|
651
|
+
message AutoscalerConfiguration {
|
|
652
|
+
// The settings that are currently in effect.
|
|
653
|
+
AutoscalerSettings settings = 1;
|
|
654
|
+
// For tracking the source of the overridden value; keys correspond to fields in `settings`.
|
|
655
|
+
map<string, UserActionInfo> override_events = 2;
|
|
656
|
+
// The default settings that are used when no static settings are provided and no overrides are in effect.
|
|
657
|
+
AutoscalerSettings default_settings = 3;
|
|
658
|
+
// The static settings that were used to initialize the configuration.
|
|
659
|
+
AutoscalerSettings static_settings = 4;
|
|
660
|
+
// The merge of all overrides that were used to create the current configuration.
|
|
661
|
+
AutoscalerSettings override_settings = 5;
|
|
662
|
+
}
|
|
663
|
+
|
|
624
664
|
message AutoscalerSettings {
|
|
625
665
|
// A collection of user-configurable settings for Function autoscaling
|
|
626
666
|
// These are used for static configuration and for dynamic autoscaler updates
|
|
627
667
|
|
|
628
|
-
// Minimum containers when scale-to-zero is not
|
|
668
|
+
// Minimum containers when scale-to-zero is not desired; pka "keep_warm" or "warm_pool_size"
|
|
629
669
|
optional uint32 min_containers = 1;
|
|
630
670
|
// Limit on the number of containers that can be running for each Function; pka "concurrency_limit"
|
|
631
671
|
optional uint32 max_containers = 2;
|
|
@@ -635,6 +675,15 @@ message AutoscalerSettings {
|
|
|
635
675
|
optional uint32 scaleup_window = 4;
|
|
636
676
|
// Maximum amount of time a container can be idle before being scaled down, in seconds; pka "container_idle_timeout"
|
|
637
677
|
optional uint32 scaledown_window = 5;
|
|
678
|
+
reserved 6;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
// Used for flash autoscaling
|
|
682
|
+
message AutoscalingMetrics {
|
|
683
|
+
double cpu_usage_percent = 1;
|
|
684
|
+
double memory_usage_percent = 2;
|
|
685
|
+
uint32 concurrent_requests = 3;
|
|
686
|
+
double timestamp = 4;
|
|
638
687
|
}
|
|
639
688
|
|
|
640
689
|
message BaseImage {
|
|
@@ -696,7 +745,7 @@ message CheckpointInfo {
|
|
|
696
745
|
}
|
|
697
746
|
|
|
698
747
|
message ClassCreateRequest {
|
|
699
|
-
string app_id = 1
|
|
748
|
+
string app_id = 1 ;
|
|
700
749
|
string existing_class_id = 2;
|
|
701
750
|
repeated ClassMethod methods = 3;
|
|
702
751
|
reserved 4; // removed class_function_id
|
|
@@ -801,6 +850,12 @@ message CloudBucketMount {
|
|
|
801
850
|
GCP = 3;
|
|
802
851
|
}
|
|
803
852
|
|
|
853
|
+
enum MetadataTTLType {
|
|
854
|
+
METADATA_TTL_TYPE_UNSPECIFIED = 0;
|
|
855
|
+
METADATA_TTL_TYPE_MINIMAL = 1;
|
|
856
|
+
METADATA_TTL_TYPE_INDEFINITE = 2;
|
|
857
|
+
}
|
|
858
|
+
|
|
804
859
|
string bucket_name = 1;
|
|
805
860
|
string mount_path = 2;
|
|
806
861
|
string credentials_secret_id = 3;
|
|
@@ -810,6 +865,11 @@ message CloudBucketMount {
|
|
|
810
865
|
optional string bucket_endpoint_url = 7;
|
|
811
866
|
optional string key_prefix = 8;
|
|
812
867
|
optional string oidc_auth_role_arn = 9;
|
|
868
|
+
bool force_path_style = 10;
|
|
869
|
+
oneof metadata_ttl_oneof {
|
|
870
|
+
MetadataTTLType metadata_ttl_type = 11;
|
|
871
|
+
uint64 metadata_ttl_seconds = 12;
|
|
872
|
+
}
|
|
813
873
|
}
|
|
814
874
|
|
|
815
875
|
message ClusterGetRequest {
|
|
@@ -858,6 +918,7 @@ message ContainerArguments { // This is used to pass data from the worker to th
|
|
|
858
918
|
string environment_name = 13;
|
|
859
919
|
optional string checkpoint_id = 14;
|
|
860
920
|
AppLayout app_layout = 15;
|
|
921
|
+
string input_plane_server_url = 16;
|
|
861
922
|
}
|
|
862
923
|
|
|
863
924
|
message ContainerCheckpointRequest {
|
|
@@ -1029,12 +1090,19 @@ message ContainerReloadVolumesRequest {
|
|
|
1029
1090
|
message ContainerReloadVolumesResponse { }
|
|
1030
1091
|
|
|
1031
1092
|
message ContainerStopRequest {
|
|
1032
|
-
string task_id = 1
|
|
1093
|
+
string task_id = 1;
|
|
1033
1094
|
}
|
|
1034
1095
|
|
|
1035
1096
|
message ContainerStopResponse {
|
|
1036
1097
|
}
|
|
1037
1098
|
|
|
1099
|
+
|
|
1100
|
+
message CreationInfo {
|
|
1101
|
+
// This message is used in metadata for resource objects like Dict, Queue, Volume, etc.
|
|
1102
|
+
double created_at = 1; // Timestamp of resource creation
|
|
1103
|
+
string created_by = 2; // User name or service name
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1038
1106
|
message CustomDomainConfig {
|
|
1039
1107
|
string name = 1;
|
|
1040
1108
|
}
|
|
@@ -1090,7 +1158,7 @@ message DictEntry {
|
|
|
1090
1158
|
}
|
|
1091
1159
|
|
|
1092
1160
|
message DictGetOrCreateRequest {
|
|
1093
|
-
string deployment_name = 1
|
|
1161
|
+
string deployment_name = 1;
|
|
1094
1162
|
reserved 2; // removed namespace
|
|
1095
1163
|
string environment_name = 3;
|
|
1096
1164
|
ObjectCreationType object_creation_type = 4;
|
|
@@ -1099,6 +1167,7 @@ message DictGetOrCreateRequest {
|
|
|
1099
1167
|
|
|
1100
1168
|
message DictGetOrCreateResponse {
|
|
1101
1169
|
string dict_id = 1;
|
|
1170
|
+
DictMetadata metadata = 2;
|
|
1102
1171
|
}
|
|
1103
1172
|
|
|
1104
1173
|
message DictGetRequest {
|
|
@@ -1125,15 +1194,24 @@ message DictLenResponse {
|
|
|
1125
1194
|
|
|
1126
1195
|
message DictListRequest {
|
|
1127
1196
|
string environment_name = 1;
|
|
1197
|
+
ListPagination pagination = 2;
|
|
1128
1198
|
}
|
|
1129
1199
|
|
|
1130
1200
|
message DictListResponse {
|
|
1131
1201
|
message DictInfo {
|
|
1132
1202
|
string name = 1;
|
|
1133
|
-
double created_at = 2;
|
|
1203
|
+
double created_at = 2; // Superseded by metadata, used by clients up to 1.1.2
|
|
1204
|
+
string dict_id = 3;
|
|
1205
|
+
DictMetadata metadata = 4;
|
|
1134
1206
|
}
|
|
1135
1207
|
|
|
1136
1208
|
repeated DictInfo dicts = 1;
|
|
1209
|
+
string environment_name = 2;
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
message DictMetadata {
|
|
1213
|
+
string name = 1;
|
|
1214
|
+
CreationInfo creation_info = 2;
|
|
1137
1215
|
}
|
|
1138
1216
|
|
|
1139
1217
|
message DictPopRequest {
|
|
@@ -1147,7 +1225,7 @@ message DictPopResponse {
|
|
|
1147
1225
|
}
|
|
1148
1226
|
|
|
1149
1227
|
message DictUpdateRequest {
|
|
1150
|
-
string dict_id = 1
|
|
1228
|
+
string dict_id = 1;
|
|
1151
1229
|
repeated DictEntry updates = 2;
|
|
1152
1230
|
bool if_not_exists = 3;
|
|
1153
1231
|
}
|
|
@@ -1173,7 +1251,7 @@ message DomainCertificateVerifyResponse {
|
|
|
1173
1251
|
}
|
|
1174
1252
|
|
|
1175
1253
|
message DomainCreateRequest {
|
|
1176
|
-
string domain_name = 1
|
|
1254
|
+
string domain_name = 1 ;
|
|
1177
1255
|
}
|
|
1178
1256
|
|
|
1179
1257
|
message DomainCreateResponse {
|
|
@@ -1189,14 +1267,14 @@ message DomainListResponse {
|
|
|
1189
1267
|
}
|
|
1190
1268
|
|
|
1191
1269
|
message EnvironmentCreateRequest {
|
|
1192
|
-
string name = 1
|
|
1270
|
+
string name = 1;
|
|
1193
1271
|
}
|
|
1194
1272
|
|
|
1195
1273
|
message EnvironmentDeleteRequest {
|
|
1196
|
-
string name = 1
|
|
1274
|
+
string name = 1;
|
|
1197
1275
|
}
|
|
1198
1276
|
message EnvironmentGetOrCreateRequest {
|
|
1199
|
-
string deployment_name = 1
|
|
1277
|
+
string deployment_name = 1;
|
|
1200
1278
|
ObjectCreationType object_creation_type = 2;
|
|
1201
1279
|
}
|
|
1202
1280
|
|
|
@@ -1210,6 +1288,12 @@ message EnvironmentListItem {
|
|
|
1210
1288
|
string webhook_suffix = 2;
|
|
1211
1289
|
double created_at = 3;
|
|
1212
1290
|
bool default = 4;
|
|
1291
|
+
bool is_managed = 5;
|
|
1292
|
+
string environment_id = 6;
|
|
1293
|
+
optional int32 max_concurrent_tasks = 7;
|
|
1294
|
+
optional int32 max_concurrent_gpus = 8;
|
|
1295
|
+
int32 current_concurrent_tasks = 9;
|
|
1296
|
+
int32 current_concurrent_gpus = 10;
|
|
1213
1297
|
}
|
|
1214
1298
|
|
|
1215
1299
|
message EnvironmentListResponse {
|
|
@@ -1230,9 +1314,11 @@ message EnvironmentSettings {
|
|
|
1230
1314
|
}
|
|
1231
1315
|
|
|
1232
1316
|
message EnvironmentUpdateRequest {
|
|
1233
|
-
string current_name = 1
|
|
1317
|
+
string current_name = 1;
|
|
1234
1318
|
google.protobuf.StringValue name = 2;
|
|
1235
1319
|
google.protobuf.StringValue web_suffix = 3;
|
|
1320
|
+
optional int32 max_concurrent_tasks = 4;
|
|
1321
|
+
optional int32 max_concurrent_gpus = 5;
|
|
1236
1322
|
}
|
|
1237
1323
|
|
|
1238
1324
|
// A file entry when listing files in a volume or network file system.
|
|
@@ -1287,6 +1373,19 @@ message FlashContainerRegisterResponse {
|
|
|
1287
1373
|
string url = 1;
|
|
1288
1374
|
}
|
|
1289
1375
|
|
|
1376
|
+
message FlashProxyUpstreamRequest {
|
|
1377
|
+
uint32 upstream_requests = 1;
|
|
1378
|
+
double timestamp = 2;
|
|
1379
|
+
}
|
|
1380
|
+
|
|
1381
|
+
message FlashSetTargetSlotsMetricsRequest {
|
|
1382
|
+
// TODO(claudia): add other metrics to use in autoscaling decisions
|
|
1383
|
+
string function_id = 1;
|
|
1384
|
+
uint32 target_slots = 2;
|
|
1385
|
+
}
|
|
1386
|
+
|
|
1387
|
+
message FlashSetTargetSlotsMetricsResponse {}
|
|
1388
|
+
|
|
1290
1389
|
message Function {
|
|
1291
1390
|
string module_name = 1;
|
|
1292
1391
|
string function_name = 2;
|
|
@@ -1446,6 +1545,10 @@ message Function {
|
|
|
1446
1545
|
string flash_service_label = 84;
|
|
1447
1546
|
|
|
1448
1547
|
bool enable_gpu_snapshot = 85; // GPU memory snapshotting (alpha)
|
|
1548
|
+
|
|
1549
|
+
uint32 startup_timeout_secs = 86;
|
|
1550
|
+
repeated DataFormat supported_input_formats = 87; // can be used as inputs
|
|
1551
|
+
repeated DataFormat supported_output_formats = 88;
|
|
1449
1552
|
}
|
|
1450
1553
|
|
|
1451
1554
|
message FunctionAsyncInvokeRequest {
|
|
@@ -1464,6 +1567,7 @@ message FunctionBindParamsRequest {
|
|
|
1464
1567
|
bytes serialized_params = 2;
|
|
1465
1568
|
FunctionOptions function_options = 3;
|
|
1466
1569
|
string environment_name = 4;
|
|
1570
|
+
string auth_secret = 5; // Only used for the input plane.
|
|
1467
1571
|
}
|
|
1468
1572
|
|
|
1469
1573
|
message FunctionBindParamsResponse {
|
|
@@ -1484,10 +1588,23 @@ message FunctionCallCancelRequest {
|
|
|
1484
1588
|
optional string function_id = 3; // Only provided for sync input cancellation on the input plane. Async input cancellation does not provide this field this.
|
|
1485
1589
|
}
|
|
1486
1590
|
|
|
1487
|
-
message
|
|
1591
|
+
message FunctionCallFromIdRequest {
|
|
1592
|
+
string function_call_id = 1;
|
|
1593
|
+
}
|
|
1594
|
+
|
|
1595
|
+
// Everything you need to build a FunctionCallHandler.
|
|
1596
|
+
message FunctionCallFromIdResponse {
|
|
1488
1597
|
string function_call_id = 1;
|
|
1598
|
+
int32 num_inputs = 2;
|
|
1599
|
+
}
|
|
1600
|
+
|
|
1601
|
+
message FunctionCallGetDataRequest {
|
|
1602
|
+
oneof call_info {
|
|
1603
|
+
string function_call_id = 1;
|
|
1604
|
+
string attempt_token = 3;
|
|
1605
|
+
}
|
|
1489
1606
|
uint64 last_index = 2;
|
|
1490
|
-
|
|
1607
|
+
bool use_gapless_read = 4;
|
|
1491
1608
|
}
|
|
1492
1609
|
|
|
1493
1610
|
message FunctionCallInfo {
|
|
@@ -1514,14 +1631,16 @@ message FunctionCallListResponse {
|
|
|
1514
1631
|
}
|
|
1515
1632
|
|
|
1516
1633
|
message FunctionCallPutDataRequest {
|
|
1517
|
-
|
|
1634
|
+
oneof call_info {
|
|
1635
|
+
string function_call_id = 1;
|
|
1636
|
+
string attempt_token = 3;
|
|
1637
|
+
}
|
|
1518
1638
|
repeated DataChunk data_chunks = 2;
|
|
1519
|
-
reserved 3; // attempt_token
|
|
1520
1639
|
}
|
|
1521
1640
|
|
|
1522
1641
|
message FunctionCreateRequest {
|
|
1523
1642
|
Function function = 1;
|
|
1524
|
-
string app_id = 2
|
|
1643
|
+
string app_id = 2 ;
|
|
1525
1644
|
Schedule schedule = 6 [deprecated=true]; // Deprecated: now passed in the Function definition
|
|
1526
1645
|
string existing_function_id = 7;
|
|
1527
1646
|
reserved 8; // defer_updates
|
|
@@ -1604,6 +1723,10 @@ message FunctionData {
|
|
|
1604
1723
|
|
|
1605
1724
|
repeated string flash_service_urls = 34;
|
|
1606
1725
|
string flash_service_label = 35;
|
|
1726
|
+
|
|
1727
|
+
uint32 startup_timeout_secs = 36;
|
|
1728
|
+
repeated DataFormat supported_input_formats = 37;
|
|
1729
|
+
repeated DataFormat supported_output_formats = 38;
|
|
1607
1730
|
}
|
|
1608
1731
|
|
|
1609
1732
|
message FunctionExtended {
|
|
@@ -1618,6 +1741,12 @@ message FunctionExtended {
|
|
|
1618
1741
|
}
|
|
1619
1742
|
}
|
|
1620
1743
|
|
|
1744
|
+
message FunctionFinishInputsRequest {
|
|
1745
|
+
string function_id = 1;
|
|
1746
|
+
string function_call_id = 2;
|
|
1747
|
+
uint32 num_inputs = 3;
|
|
1748
|
+
}
|
|
1749
|
+
|
|
1621
1750
|
|
|
1622
1751
|
message FunctionGetCallGraphRequest {
|
|
1623
1752
|
// TODO: use input_id once we switch client submit API to return those.
|
|
@@ -1651,6 +1780,8 @@ message FunctionGetInputsItem {
|
|
|
1651
1780
|
string function_call_id = 5;
|
|
1652
1781
|
FunctionCallInvocationType function_call_invocation_type = 6;
|
|
1653
1782
|
uint32 retry_count = 7;
|
|
1783
|
+
optional int32 function_map_idx = 8; // intercepted and only used by the worker.
|
|
1784
|
+
string attempt_token = 9;
|
|
1654
1785
|
}
|
|
1655
1786
|
|
|
1656
1787
|
message FunctionGetInputsRequest {
|
|
@@ -1691,6 +1822,7 @@ message FunctionGetOutputsRequest {
|
|
|
1691
1822
|
// The jwts the client expects the server to be processing. This is optional and used for sync inputs only.
|
|
1692
1823
|
repeated string input_jwts = 9;
|
|
1693
1824
|
optional int32 start_idx = 10; // for async batch requests. this indicates which index to start from.
|
|
1825
|
+
optional int32 end_idx = 11; // for async batch requests. this indicates which index to end at.
|
|
1694
1826
|
}
|
|
1695
1827
|
|
|
1696
1828
|
message FunctionGetOutputsResponse {
|
|
@@ -1743,6 +1875,9 @@ message FunctionHandleMetadata {
|
|
|
1743
1875
|
optional string input_plane_region = 47;
|
|
1744
1876
|
// Use optional to ensure unset values default to None instead of 0
|
|
1745
1877
|
optional uint64 max_object_size_bytes = 48;
|
|
1878
|
+
repeated string _experimental_flash_urls = 49; // (Optional) urls for flash services
|
|
1879
|
+
repeated DataFormat supported_input_formats = 50;
|
|
1880
|
+
repeated DataFormat supported_output_formats = 51;
|
|
1746
1881
|
}
|
|
1747
1882
|
|
|
1748
1883
|
message FunctionInput {
|
|
@@ -1792,11 +1927,15 @@ message FunctionOptions {
|
|
|
1792
1927
|
optional uint32 max_concurrent_inputs = 14;
|
|
1793
1928
|
optional uint32 batch_max_size = 15;
|
|
1794
1929
|
optional uint64 batch_linger_ms = 16;
|
|
1930
|
+
optional SchedulerPlacement scheduler_placement = 17;
|
|
1931
|
+
optional string cloud_provider_str = 18;
|
|
1932
|
+
bool replace_cloud_bucket_mounts = 19;
|
|
1933
|
+
repeated CloudBucketMount cloud_bucket_mounts = 20;
|
|
1795
1934
|
}
|
|
1796
1935
|
|
|
1797
1936
|
message FunctionPrecreateRequest {
|
|
1798
1937
|
string app_id = 1;
|
|
1799
|
-
string function_name = 2
|
|
1938
|
+
string function_name = 2 ;
|
|
1800
1939
|
string existing_function_id = 3;
|
|
1801
1940
|
Function.FunctionType function_type = 4;
|
|
1802
1941
|
WebhookConfig webhook_config = 5;
|
|
@@ -1805,6 +1944,8 @@ message FunctionPrecreateRequest {
|
|
|
1805
1944
|
// Mapping of method names to method definitions, only non-empty for class service functions
|
|
1806
1945
|
map<string, MethodDefinition> method_definitions = 8;
|
|
1807
1946
|
FunctionSchema function_schema = 9;
|
|
1947
|
+
repeated DataFormat supported_input_formats = 10;
|
|
1948
|
+
repeated DataFormat supported_output_formats = 11;
|
|
1808
1949
|
}
|
|
1809
1950
|
|
|
1810
1951
|
message FunctionPrecreateResponse {
|
|
@@ -1816,7 +1957,8 @@ message FunctionPutInputsItem {
|
|
|
1816
1957
|
int32 idx = 1;
|
|
1817
1958
|
FunctionInput input = 2;
|
|
1818
1959
|
bool r2_failed = 3;
|
|
1819
|
-
|
|
1960
|
+
reserved 4; // r2_latency_ms
|
|
1961
|
+
uint64 r2_throughput_bytes_s = 5;
|
|
1820
1962
|
}
|
|
1821
1963
|
|
|
1822
1964
|
message FunctionPutInputsRequest {
|
|
@@ -1842,6 +1984,8 @@ message FunctionPutOutputsItem {
|
|
|
1842
1984
|
double output_created_at = 4;
|
|
1843
1985
|
DataFormat data_format = 7; // for result.data_oneof
|
|
1844
1986
|
uint32 retry_count = 8;
|
|
1987
|
+
string function_call_id = 9; // injected by the worker
|
|
1988
|
+
optional int32 function_map_idx = 10; // injected by the worker
|
|
1845
1989
|
}
|
|
1846
1990
|
|
|
1847
1991
|
message FunctionPutOutputsRequest {
|
|
@@ -1922,6 +2066,8 @@ message GenericResult { // Used for both tasks and function outputs
|
|
|
1922
2066
|
// Terminates the function and all remaining inputs.
|
|
1923
2067
|
GENERIC_STATUS_INIT_FAILURE = 5;
|
|
1924
2068
|
GENERIC_STATUS_INTERNAL_FAILURE = 6;
|
|
2069
|
+
// Used when sandboxes are terminated due to idle_timeout
|
|
2070
|
+
GENERIC_STATUS_IDLE_TIMEOUT = 7;
|
|
1925
2071
|
}
|
|
1926
2072
|
|
|
1927
2073
|
GenericStatus status = 1; // Status of the task or function output.
|
|
@@ -1964,6 +2110,9 @@ message Image {
|
|
|
1964
2110
|
|
|
1965
2111
|
// Build arguments for the image (--build-arg) for ARG substitution in Dockerfile.
|
|
1966
2112
|
map<string, string> build_args = 22;
|
|
2113
|
+
|
|
2114
|
+
// Volume mount for RUN commands
|
|
2115
|
+
repeated VolumeMount volume_mounts = 23;
|
|
1967
2116
|
}
|
|
1968
2117
|
|
|
1969
2118
|
message ImageContextFile {
|
|
@@ -1971,6 +2120,10 @@ message ImageContextFile {
|
|
|
1971
2120
|
bytes data = 2;
|
|
1972
2121
|
}
|
|
1973
2122
|
|
|
2123
|
+
message ImageDeleteRequest {
|
|
2124
|
+
string image_id = 1;
|
|
2125
|
+
}
|
|
2126
|
+
|
|
1974
2127
|
message ImageFromIdRequest {
|
|
1975
2128
|
string image_id = 1;
|
|
1976
2129
|
}
|
|
@@ -1982,7 +2135,7 @@ message ImageFromIdResponse {
|
|
|
1982
2135
|
|
|
1983
2136
|
message ImageGetOrCreateRequest {
|
|
1984
2137
|
Image image = 2;
|
|
1985
|
-
string app_id = 4
|
|
2138
|
+
string app_id = 4;
|
|
1986
2139
|
string existing_image_id = 5; // ignored
|
|
1987
2140
|
string build_function_id = 6;
|
|
1988
2141
|
bool force_build = 7;
|
|
@@ -2069,6 +2222,63 @@ message InputInfo {
|
|
|
2069
2222
|
bool task_first_input = 7;
|
|
2070
2223
|
}
|
|
2071
2224
|
|
|
2225
|
+
message ListPagination {
|
|
2226
|
+
int32 max_objects = 1;
|
|
2227
|
+
double created_before = 2;
|
|
2228
|
+
}
|
|
2229
|
+
|
|
2230
|
+
message MapAwaitRequest {
|
|
2231
|
+
oneof call_info {
|
|
2232
|
+
string function_call_id = 1;
|
|
2233
|
+
string map_token = 5;
|
|
2234
|
+
}
|
|
2235
|
+
string last_entry_id = 2;
|
|
2236
|
+
double requested_at = 3; // Used for waypoints.
|
|
2237
|
+
float timeout = 4;
|
|
2238
|
+
}
|
|
2239
|
+
|
|
2240
|
+
message MapAwaitResponse {
|
|
2241
|
+
repeated FunctionGetOutputsItem outputs = 1;
|
|
2242
|
+
string last_entry_id = 2;
|
|
2243
|
+
}
|
|
2244
|
+
|
|
2245
|
+
message MapCheckInputsRequest {
|
|
2246
|
+
string last_entry_id = 1;
|
|
2247
|
+
float timeout = 2;
|
|
2248
|
+
repeated string attempt_tokens = 3;
|
|
2249
|
+
}
|
|
2250
|
+
|
|
2251
|
+
message MapCheckInputsResponse {
|
|
2252
|
+
repeated bool lost = 1;
|
|
2253
|
+
}
|
|
2254
|
+
|
|
2255
|
+
message MapStartOrContinueItem {
|
|
2256
|
+
FunctionPutInputsItem input = 1;
|
|
2257
|
+
optional string attempt_token = 2; // None if this is a fresh input, otherwise it is the attempt token for a retry.
|
|
2258
|
+
}
|
|
2259
|
+
|
|
2260
|
+
message MapStartOrContinueRequest {
|
|
2261
|
+
string function_id = 1;
|
|
2262
|
+
string parent_input_id = 2;
|
|
2263
|
+
// Clients will send call_info on map continue requests.
|
|
2264
|
+
oneof call_info {
|
|
2265
|
+
string function_call_id = 3;
|
|
2266
|
+
string map_token = 5;
|
|
2267
|
+
}
|
|
2268
|
+
repeated MapStartOrContinueItem items = 4;
|
|
2269
|
+
}
|
|
2270
|
+
|
|
2271
|
+
message MapStartOrContinueResponse {
|
|
2272
|
+
// function_id and function_call_id are not necessary if map_token is provided.
|
|
2273
|
+
// All 3 will be sent until it is safe to only send map_token.
|
|
2274
|
+
string map_token = 6;
|
|
2275
|
+
string function_id = 1;
|
|
2276
|
+
string function_call_id = 2;
|
|
2277
|
+
uint32 max_inputs_outstanding = 3;
|
|
2278
|
+
repeated string attempt_tokens = 4;
|
|
2279
|
+
FunctionRetryPolicy retry_policy = 5;
|
|
2280
|
+
}
|
|
2281
|
+
|
|
2072
2282
|
message MethodDefinition {
|
|
2073
2283
|
string function_name = 1;
|
|
2074
2284
|
Function.FunctionType function_type = 2;
|
|
@@ -2077,6 +2287,8 @@ message MethodDefinition {
|
|
|
2077
2287
|
WebUrlInfo web_url_info = 5;
|
|
2078
2288
|
repeated CustomDomainInfo custom_domain_info = 6;
|
|
2079
2289
|
FunctionSchema function_schema = 7;
|
|
2290
|
+
repeated DataFormat supported_input_formats = 8;
|
|
2291
|
+
repeated DataFormat supported_output_formats = 9;
|
|
2080
2292
|
}
|
|
2081
2293
|
|
|
2082
2294
|
message MountFile {
|
|
@@ -2237,6 +2449,7 @@ message PTYInfo {
|
|
|
2237
2449
|
PTY_TYPE_SHELL = 2; // Replace function with shell
|
|
2238
2450
|
}
|
|
2239
2451
|
PTYType pty_type = 7;
|
|
2452
|
+
bool no_terminate_on_idle_stdin = 8;
|
|
2240
2453
|
}
|
|
2241
2454
|
|
|
2242
2455
|
message PortSpec {
|
|
@@ -2253,12 +2466,13 @@ message Proxy {
|
|
|
2253
2466
|
string name = 1;
|
|
2254
2467
|
double created_at = 2;
|
|
2255
2468
|
string environment_name = 3;
|
|
2256
|
-
string proxy_id = 5;
|
|
2257
2469
|
repeated ProxyIp proxy_ips = 4;
|
|
2470
|
+
string proxy_id = 5;
|
|
2471
|
+
string region = 6;
|
|
2258
2472
|
}
|
|
2259
2473
|
|
|
2260
2474
|
message ProxyAddIpRequest {
|
|
2261
|
-
string proxy_id = 1
|
|
2475
|
+
string proxy_id = 1;
|
|
2262
2476
|
}
|
|
2263
2477
|
|
|
2264
2478
|
message ProxyAddIpResponse {
|
|
@@ -2266,8 +2480,9 @@ message ProxyAddIpResponse {
|
|
|
2266
2480
|
}
|
|
2267
2481
|
|
|
2268
2482
|
message ProxyCreateRequest {
|
|
2269
|
-
string name = 1
|
|
2483
|
+
string name = 1;
|
|
2270
2484
|
string environment_name = 2;
|
|
2485
|
+
string region = 3;
|
|
2271
2486
|
}
|
|
2272
2487
|
|
|
2273
2488
|
message ProxyCreateResponse {
|
|
@@ -2275,11 +2490,11 @@ message ProxyCreateResponse {
|
|
|
2275
2490
|
}
|
|
2276
2491
|
|
|
2277
2492
|
message ProxyDeleteRequest {
|
|
2278
|
-
string proxy_id = 1
|
|
2493
|
+
string proxy_id = 1;
|
|
2279
2494
|
}
|
|
2280
2495
|
|
|
2281
2496
|
message ProxyGetOrCreateRequest {
|
|
2282
|
-
string deployment_name = 1
|
|
2497
|
+
string deployment_name = 1;
|
|
2283
2498
|
reserved 2; // namespace
|
|
2284
2499
|
string environment_name = 3;
|
|
2285
2500
|
ObjectCreationType object_creation_type = 4; // must be UNSPECIFIED
|
|
@@ -2290,7 +2505,7 @@ message ProxyGetOrCreateResponse {
|
|
|
2290
2505
|
}
|
|
2291
2506
|
|
|
2292
2507
|
message ProxyGetRequest {
|
|
2293
|
-
string name = 1
|
|
2508
|
+
string name = 1;
|
|
2294
2509
|
string environment_name = 2;
|
|
2295
2510
|
}
|
|
2296
2511
|
|
|
@@ -2318,7 +2533,7 @@ message ProxyListResponse {
|
|
|
2318
2533
|
}
|
|
2319
2534
|
|
|
2320
2535
|
message ProxyRemoveIpRequest {
|
|
2321
|
-
string proxy_ip = 1
|
|
2536
|
+
string proxy_ip = 1;
|
|
2322
2537
|
}
|
|
2323
2538
|
|
|
2324
2539
|
message QueueClearRequest {
|
|
@@ -2328,7 +2543,7 @@ message QueueClearRequest {
|
|
|
2328
2543
|
}
|
|
2329
2544
|
|
|
2330
2545
|
message QueueDeleteRequest {
|
|
2331
|
-
string queue_id = 1
|
|
2546
|
+
string queue_id = 1;
|
|
2332
2547
|
}
|
|
2333
2548
|
|
|
2334
2549
|
message QueueGetOrCreateRequest {
|
|
@@ -2340,6 +2555,7 @@ message QueueGetOrCreateRequest {
|
|
|
2340
2555
|
|
|
2341
2556
|
message QueueGetOrCreateResponse {
|
|
2342
2557
|
string queue_id = 1;
|
|
2558
|
+
QueueMetadata metadata = 2;
|
|
2343
2559
|
}
|
|
2344
2560
|
|
|
2345
2561
|
message QueueGetRequest {
|
|
@@ -2374,19 +2590,27 @@ message QueueLenResponse {
|
|
|
2374
2590
|
|
|
2375
2591
|
message QueueListRequest {
|
|
2376
2592
|
string environment_name = 1;
|
|
2377
|
-
|
|
2378
|
-
|
|
2593
|
+
int32 total_size_limit = 2; // Limit on "number of partitions" reported, since checking them is costly
|
|
2594
|
+
ListPagination pagination = 3;
|
|
2379
2595
|
}
|
|
2380
2596
|
|
|
2381
2597
|
message QueueListResponse {
|
|
2382
2598
|
message QueueInfo {
|
|
2383
2599
|
string name = 1;
|
|
2384
|
-
double created_at = 2;
|
|
2600
|
+
double created_at = 2; // Superseded by metadata, used by clients up to 1.1.2
|
|
2385
2601
|
int32 num_partitions = 3;
|
|
2386
2602
|
int32 total_size = 4;
|
|
2603
|
+
string queue_id = 5;
|
|
2604
|
+
QueueMetadata metadata = 6;
|
|
2387
2605
|
}
|
|
2388
2606
|
|
|
2389
2607
|
repeated QueueInfo queues = 1;
|
|
2608
|
+
string environment_name = 2;
|
|
2609
|
+
}
|
|
2610
|
+
|
|
2611
|
+
message QueueMetadata {
|
|
2612
|
+
string name = 1;
|
|
2613
|
+
CreationInfo creation_info = 2;
|
|
2390
2614
|
}
|
|
2391
2615
|
|
|
2392
2616
|
message QueueNextItemsRequest {
|
|
@@ -2463,7 +2687,7 @@ message Sandbox {
|
|
|
2463
2687
|
Resources resources = 5;
|
|
2464
2688
|
CloudProvider cloud_provider = 6; // Deprecated at some point
|
|
2465
2689
|
|
|
2466
|
-
uint32 timeout_secs = 7;
|
|
2690
|
+
uint32 timeout_secs = 7; // The max lifetime of a sandbox in seconds.
|
|
2467
2691
|
|
|
2468
2692
|
optional string workdir = 8;
|
|
2469
2693
|
|
|
@@ -2520,10 +2744,33 @@ message Sandbox {
|
|
|
2520
2744
|
|
|
2521
2745
|
// If set, the sandbox will be created with a name.
|
|
2522
2746
|
optional string name = 30;
|
|
2747
|
+
|
|
2748
|
+
// Experimental options
|
|
2749
|
+
map<string, bool> experimental_options = 31;
|
|
2750
|
+
|
|
2751
|
+
repeated string preload_path_prefixes = 32; // Internal use only.
|
|
2752
|
+
|
|
2753
|
+
// Optional idle timeout in seconds. If set, the sandbox will be terminated after being idle for this duration.
|
|
2754
|
+
optional uint32 idle_timeout_secs = 33;
|
|
2755
|
+
|
|
2756
|
+
// If set, the sandbox will be created with direct sandbox commands enabled.
|
|
2757
|
+
// Exec commands for the sandbox will be issued directly to the sandbox
|
|
2758
|
+
// command router running on the Modal worker.
|
|
2759
|
+
bool direct_sandbox_commands_enabled = 34;
|
|
2760
|
+
}
|
|
2761
|
+
|
|
2762
|
+
message SandboxCreateConnectTokenRequest {
|
|
2763
|
+
string sandbox_id = 1;
|
|
2764
|
+
string user_metadata = 2;
|
|
2765
|
+
}
|
|
2766
|
+
|
|
2767
|
+
message SandboxCreateConnectTokenResponse {
|
|
2768
|
+
string url = 1;
|
|
2769
|
+
string token = 2;
|
|
2523
2770
|
}
|
|
2524
2771
|
|
|
2525
2772
|
message SandboxCreateRequest {
|
|
2526
|
-
string app_id = 1
|
|
2773
|
+
string app_id = 1;
|
|
2527
2774
|
Sandbox definition = 2;
|
|
2528
2775
|
string environment_name = 3; // *DEPRECATED* 7/16/2025
|
|
2529
2776
|
}
|
|
@@ -2624,6 +2871,19 @@ message SandboxRestoreResponse {
|
|
|
2624
2871
|
string sandbox_id = 1;
|
|
2625
2872
|
}
|
|
2626
2873
|
|
|
2874
|
+
message SandboxSnapshotFsAsyncGetRequest {
|
|
2875
|
+
string image_id = 1;
|
|
2876
|
+
float timeout = 2;
|
|
2877
|
+
}
|
|
2878
|
+
|
|
2879
|
+
message SandboxSnapshotFsAsyncRequest {
|
|
2880
|
+
string sandbox_id = 1;
|
|
2881
|
+
}
|
|
2882
|
+
|
|
2883
|
+
message SandboxSnapshotFsAsyncResponse {
|
|
2884
|
+
string image_id = 1;
|
|
2885
|
+
}
|
|
2886
|
+
|
|
2627
2887
|
message SandboxSnapshotFsRequest {
|
|
2628
2888
|
string sandbox_id = 1;
|
|
2629
2889
|
float timeout = 2;
|
|
@@ -2676,6 +2936,14 @@ message SandboxTag {
|
|
|
2676
2936
|
string tag_value = 2;
|
|
2677
2937
|
}
|
|
2678
2938
|
|
|
2939
|
+
message SandboxTagsGetRequest {
|
|
2940
|
+
string sandbox_id = 1;
|
|
2941
|
+
}
|
|
2942
|
+
|
|
2943
|
+
message SandboxTagsGetResponse {
|
|
2944
|
+
repeated SandboxTag tags = 1;
|
|
2945
|
+
}
|
|
2946
|
+
|
|
2679
2947
|
message SandboxTagsSetRequest {
|
|
2680
2948
|
string environment_name = 1;
|
|
2681
2949
|
string sandbox_id = 2;
|
|
@@ -2720,23 +2988,18 @@ message Schedule {
|
|
|
2720
2988
|
}
|
|
2721
2989
|
|
|
2722
2990
|
message SchedulerPlacement {
|
|
2723
|
-
// TODO(irfansharif):
|
|
2724
|
-
// - Fold in cloud, resource needs here too.
|
|
2725
|
-
// - Allow specifying list of zones, cloud, fallback and alternative
|
|
2726
|
-
// GPU types.
|
|
2727
|
-
|
|
2728
2991
|
repeated string regions = 4;
|
|
2729
|
-
// TODO
|
|
2730
|
-
optional string
|
|
2731
|
-
|
|
2732
|
-
|
|
2992
|
+
optional string _zone = 2; // TODO: Deprecate
|
|
2993
|
+
optional string _lifecycle = 3; // TODO: Deprecate
|
|
2994
|
+
repeated string _instance_types = 5; // TODO: Deprecate
|
|
2995
|
+
bool nonpreemptible = 6;
|
|
2733
2996
|
|
|
2734
2997
|
reserved 1;
|
|
2735
2998
|
}
|
|
2736
2999
|
|
|
2737
3000
|
message SecretCreateRequest { // Not used by client anymore
|
|
2738
3001
|
map<string, string> env_dict = 1;
|
|
2739
|
-
string app_id = 2
|
|
3002
|
+
string app_id = 2;
|
|
2740
3003
|
string template_type = 3; // todo: not used?
|
|
2741
3004
|
string existing_secret_id = 4;
|
|
2742
3005
|
}
|
|
@@ -2750,7 +3013,7 @@ message SecretDeleteRequest {
|
|
|
2750
3013
|
}
|
|
2751
3014
|
|
|
2752
3015
|
message SecretGetOrCreateRequest {
|
|
2753
|
-
string deployment_name = 1
|
|
3016
|
+
string deployment_name = 1;
|
|
2754
3017
|
reserved 2; // removed namespace
|
|
2755
3018
|
string environment_name = 3;
|
|
2756
3019
|
ObjectCreationType object_creation_type = 4; // Not used atm
|
|
@@ -2761,25 +3024,35 @@ message SecretGetOrCreateRequest {
|
|
|
2761
3024
|
|
|
2762
3025
|
message SecretGetOrCreateResponse {
|
|
2763
3026
|
string secret_id = 1;
|
|
3027
|
+
SecretMetadata metadata = 2;
|
|
2764
3028
|
}
|
|
2765
3029
|
|
|
2766
3030
|
message SecretListItem {
|
|
2767
3031
|
string label = 1;
|
|
2768
|
-
double created_at = 2;
|
|
3032
|
+
double created_at = 2; // Superseded by metadata, used by clients up to 1.1.2
|
|
2769
3033
|
double last_used_at = 3;
|
|
2770
|
-
string environment_name = 4;
|
|
3034
|
+
string environment_name = 4; // Unused by client
|
|
2771
3035
|
string secret_id = 5;
|
|
3036
|
+
SecretMetadata metadata = 6;
|
|
2772
3037
|
}
|
|
2773
3038
|
|
|
2774
3039
|
message SecretListRequest {
|
|
2775
|
-
string environment_name = 1;
|
|
3040
|
+
string environment_name = 1;
|
|
3041
|
+
ListPagination pagination = 2;
|
|
2776
3042
|
}
|
|
2777
3043
|
|
|
2778
3044
|
message SecretListResponse {
|
|
2779
3045
|
repeated SecretListItem items = 1;
|
|
2780
|
-
string environment_name = 2;
|
|
3046
|
+
string environment_name = 2;
|
|
3047
|
+
}
|
|
3048
|
+
|
|
3049
|
+
message SecretMetadata {
|
|
3050
|
+
string name = 1;
|
|
3051
|
+
CreationInfo creation_info = 2;
|
|
2781
3052
|
}
|
|
2782
3053
|
|
|
3054
|
+
// SharedVolume in the backend corresponds to NetworkFileSystem in the current API
|
|
3055
|
+
|
|
2783
3056
|
message SharedVolumeDeleteRequest {
|
|
2784
3057
|
string shared_volume_id = 1;
|
|
2785
3058
|
}
|
|
@@ -2797,7 +3070,7 @@ message SharedVolumeGetFileResponse {
|
|
|
2797
3070
|
}
|
|
2798
3071
|
|
|
2799
3072
|
message SharedVolumeGetOrCreateRequest {
|
|
2800
|
-
string deployment_name = 1
|
|
3073
|
+
string deployment_name = 1;
|
|
2801
3074
|
reserved 2; // removed namespace
|
|
2802
3075
|
string environment_name = 3;
|
|
2803
3076
|
ObjectCreationType object_creation_type = 4;
|
|
@@ -2841,11 +3114,11 @@ message SharedVolumeMount {
|
|
|
2841
3114
|
string mount_path = 1;
|
|
2842
3115
|
string shared_volume_id = 2;
|
|
2843
3116
|
CloudProvider cloud_provider = 3;
|
|
2844
|
-
|
|
3117
|
+
reserved 4; // allow_cross_region
|
|
2845
3118
|
}
|
|
2846
3119
|
|
|
2847
3120
|
message SharedVolumePutFileRequest {
|
|
2848
|
-
string shared_volume_id = 1
|
|
3121
|
+
string shared_volume_id = 1;
|
|
2849
3122
|
string path = 2;
|
|
2850
3123
|
string sha256_hex = 3;
|
|
2851
3124
|
oneof data_oneof {
|
|
@@ -2860,7 +3133,7 @@ message SharedVolumePutFileResponse {
|
|
|
2860
3133
|
}
|
|
2861
3134
|
|
|
2862
3135
|
message SharedVolumeRemoveFileRequest {
|
|
2863
|
-
string shared_volume_id = 1
|
|
3136
|
+
string shared_volume_id = 1;
|
|
2864
3137
|
string path = 2;
|
|
2865
3138
|
bool recursive = 3;
|
|
2866
3139
|
}
|
|
@@ -2878,14 +3151,27 @@ message TaskClusterHelloRequest {
|
|
|
2878
3151
|
message TaskClusterHelloResponse {
|
|
2879
3152
|
string cluster_id = 1;
|
|
2880
3153
|
uint32 cluster_rank = 2;
|
|
2881
|
-
// All
|
|
3154
|
+
// All IPv6 addresses in cluster, ordered by cluster rank
|
|
2882
3155
|
repeated string container_ips = 3;
|
|
3156
|
+
repeated string container_ipv4_ips = 4;
|
|
2883
3157
|
}
|
|
2884
3158
|
|
|
2885
3159
|
message TaskCurrentInputsResponse {
|
|
2886
3160
|
repeated string input_ids = 1;
|
|
2887
3161
|
}
|
|
2888
3162
|
|
|
3163
|
+
// Used to get a JWT and URL for direct access to a task command router
|
|
3164
|
+
// running on the modal-worker, so the client can issue exec commands (and other
|
|
3165
|
+
// operations as they become available) directly to the worker.
|
|
3166
|
+
message TaskGetCommandRouterAccessRequest {
|
|
3167
|
+
string task_id = 1;
|
|
3168
|
+
}
|
|
3169
|
+
|
|
3170
|
+
message TaskGetCommandRouterAccessResponse {
|
|
3171
|
+
string jwt = 1;
|
|
3172
|
+
string url = 2;
|
|
3173
|
+
}
|
|
3174
|
+
|
|
2889
3175
|
message TaskInfo {
|
|
2890
3176
|
string id = 1;
|
|
2891
3177
|
double started_at = 2;
|
|
@@ -2894,6 +3180,8 @@ message TaskInfo {
|
|
|
2894
3180
|
double enqueued_at = 5;
|
|
2895
3181
|
string gpu_type = 6;
|
|
2896
3182
|
string sandbox_id = 7;
|
|
3183
|
+
TaskSnapshotBehavior snapshot_behavior = 8;
|
|
3184
|
+
GPUConfig gpu_config = 9;
|
|
2897
3185
|
}
|
|
2898
3186
|
|
|
2899
3187
|
message TaskListRequest {
|
|
@@ -2926,6 +3214,7 @@ message TaskLogsBatch {
|
|
|
2926
3214
|
bool eof = 14;
|
|
2927
3215
|
string pty_exec_id = 15; // Used for interactive functions
|
|
2928
3216
|
string root_function_id = 16;
|
|
3217
|
+
uint32 ttl_days = 17;
|
|
2929
3218
|
}
|
|
2930
3219
|
|
|
2931
3220
|
message TaskProgress {
|
|
@@ -3016,10 +3305,16 @@ message UploadUrlList {
|
|
|
3016
3305
|
repeated string items = 1;
|
|
3017
3306
|
}
|
|
3018
3307
|
|
|
3308
|
+
// Used for capturing context about an action performed by a user
|
|
3309
|
+
message UserActionInfo {
|
|
3310
|
+
string user_id = 1;
|
|
3311
|
+
double timestamp = 2;
|
|
3312
|
+
}
|
|
3313
|
+
|
|
3019
3314
|
message VolumeCommitRequest {
|
|
3020
3315
|
// NOTE(staffan): Mounting a volume in multiple locations is not supported, so volume_id alone uniquely identifies
|
|
3021
3316
|
// a volume mount.
|
|
3022
|
-
string volume_id = 1
|
|
3317
|
+
string volume_id = 1;
|
|
3023
3318
|
}
|
|
3024
3319
|
|
|
3025
3320
|
message VolumeCommitResponse {
|
|
@@ -3077,7 +3372,7 @@ message VolumeGetFileResponse {
|
|
|
3077
3372
|
}
|
|
3078
3373
|
|
|
3079
3374
|
message VolumeGetOrCreateRequest {
|
|
3080
|
-
string deployment_name = 1
|
|
3375
|
+
string deployment_name = 1;
|
|
3081
3376
|
reserved 2; // removed namespace
|
|
3082
3377
|
string environment_name = 3;
|
|
3083
3378
|
ObjectCreationType object_creation_type = 4;
|
|
@@ -3087,7 +3382,7 @@ message VolumeGetOrCreateRequest {
|
|
|
3087
3382
|
|
|
3088
3383
|
message VolumeGetOrCreateResponse {
|
|
3089
3384
|
string volume_id = 1;
|
|
3090
|
-
VolumeFsVersion version = 2;
|
|
3385
|
+
VolumeFsVersion version = 2; // Not used directly; version is part of the metadata
|
|
3091
3386
|
VolumeMetadata metadata = 3;
|
|
3092
3387
|
}
|
|
3093
3388
|
|
|
@@ -3120,11 +3415,13 @@ message VolumeListFilesResponse {
|
|
|
3120
3415
|
message VolumeListItem {
|
|
3121
3416
|
string label = 1; // app name of object entity app
|
|
3122
3417
|
string volume_id = 2;
|
|
3123
|
-
double created_at = 3;
|
|
3418
|
+
double created_at = 3; // Superseded by metadata, used by clients up to 1.1.2
|
|
3419
|
+
VolumeMetadata metadata = 4;
|
|
3124
3420
|
}
|
|
3125
3421
|
|
|
3126
3422
|
message VolumeListRequest {
|
|
3127
3423
|
string environment_name = 1;
|
|
3424
|
+
ListPagination pagination = 2;
|
|
3128
3425
|
}
|
|
3129
3426
|
|
|
3130
3427
|
message VolumeListResponse {
|
|
@@ -3134,6 +3431,8 @@ message VolumeListResponse {
|
|
|
3134
3431
|
|
|
3135
3432
|
message VolumeMetadata {
|
|
3136
3433
|
VolumeFsVersion version = 1;
|
|
3434
|
+
string name = 2;
|
|
3435
|
+
CreationInfo creation_info = 3;
|
|
3137
3436
|
}
|
|
3138
3437
|
|
|
3139
3438
|
message VolumeMount {
|
|
@@ -3225,19 +3524,19 @@ message VolumeReloadRequest {
|
|
|
3225
3524
|
}
|
|
3226
3525
|
|
|
3227
3526
|
message VolumeRemoveFile2Request {
|
|
3228
|
-
string volume_id = 1
|
|
3527
|
+
string volume_id = 1;
|
|
3229
3528
|
string path = 2;
|
|
3230
3529
|
bool recursive = 3;
|
|
3231
3530
|
}
|
|
3232
3531
|
|
|
3233
3532
|
message VolumeRemoveFileRequest {
|
|
3234
|
-
string volume_id = 1
|
|
3533
|
+
string volume_id = 1;
|
|
3235
3534
|
string path = 2;
|
|
3236
3535
|
bool recursive = 3;
|
|
3237
3536
|
}
|
|
3238
3537
|
|
|
3239
3538
|
message VolumeRenameRequest {
|
|
3240
|
-
string volume_id = 1
|
|
3539
|
+
string volume_id = 1;
|
|
3241
3540
|
string name = 2;
|
|
3242
3541
|
}
|
|
3243
3542
|
|
|
@@ -3261,13 +3560,31 @@ message WebUrlInfo {
|
|
|
3261
3560
|
message WebhookConfig {
|
|
3262
3561
|
WebhookType type = 1;
|
|
3263
3562
|
string method = 2;
|
|
3264
|
-
string requested_suffix = 4;
|
|
3563
|
+
string requested_suffix = 4; // User-supplied "label" component of URL
|
|
3265
3564
|
WebhookAsyncMode async_mode = 5;
|
|
3266
3565
|
repeated CustomDomainConfig custom_domains = 6;
|
|
3267
3566
|
uint32 web_server_port = 7;
|
|
3268
3567
|
float web_server_startup_timeout = 8;
|
|
3269
3568
|
bool web_endpoint_docs = 9;
|
|
3270
3569
|
bool requires_proxy_auth = 10;
|
|
3570
|
+
string ephemeral_suffix = 11; // Additional URL suffix added for ephemeral Apps
|
|
3571
|
+
}
|
|
3572
|
+
|
|
3573
|
+
message WorkspaceBillingReportItem {
|
|
3574
|
+
string object_id = 1;
|
|
3575
|
+
string description = 2;
|
|
3576
|
+
string environment_name = 3;
|
|
3577
|
+
google.protobuf.Timestamp interval = 4;
|
|
3578
|
+
string cost = 5;
|
|
3579
|
+
map<string, string> tags = 6;
|
|
3580
|
+
}
|
|
3581
|
+
|
|
3582
|
+
message WorkspaceBillingReportRequest {
|
|
3583
|
+
// Workspace ID will be implicit in the request metadata
|
|
3584
|
+
google.protobuf.Timestamp start_timestamp = 1;
|
|
3585
|
+
google.protobuf.Timestamp end_timestamp = 2;
|
|
3586
|
+
string resolution = 3; // e.g. 'd' or 'h'; server defines what we accept
|
|
3587
|
+
repeated string tag_names = 4;
|
|
3271
3588
|
}
|
|
3272
3589
|
|
|
3273
3590
|
message WorkspaceNameLookupResponse {
|
|
@@ -3287,17 +3604,17 @@ service ModalClient {
|
|
|
3287
3604
|
rpc AppGetLogs(AppGetLogsRequest) returns (stream TaskLogsBatch);
|
|
3288
3605
|
rpc AppGetObjects(AppGetObjectsRequest) returns (AppGetObjectsResponse);
|
|
3289
3606
|
rpc AppGetOrCreate(AppGetOrCreateRequest) returns (AppGetOrCreateResponse);
|
|
3607
|
+
rpc AppGetTags(AppGetTagsRequest) returns (AppGetTagsResponse);
|
|
3290
3608
|
rpc AppHeartbeat(AppHeartbeatRequest) returns (google.protobuf.Empty);
|
|
3291
3609
|
rpc AppList(AppListRequest) returns (AppListResponse);
|
|
3292
3610
|
rpc AppLookup(AppLookupRequest) returns (AppLookupResponse);
|
|
3293
3611
|
rpc AppPublish(AppPublishRequest) returns (AppPublishResponse);
|
|
3294
3612
|
rpc AppRollback(AppRollbackRequest) returns (google.protobuf.Empty);
|
|
3295
3613
|
rpc AppSetObjects(AppSetObjectsRequest) returns (google.protobuf.Empty);
|
|
3614
|
+
rpc AppSetTags(AppSetTagsRequest) returns (google.protobuf.Empty);
|
|
3296
3615
|
rpc AppStop(AppStopRequest) returns (google.protobuf.Empty);
|
|
3297
3616
|
|
|
3298
3617
|
// Input Plane
|
|
3299
|
-
// These RPCs are experimental, not deployed to production, and can be changed / removed
|
|
3300
|
-
// without needing to worry about backwards compatibility.
|
|
3301
3618
|
rpc AttemptAwait(AttemptAwaitRequest) returns (AttemptAwaitResponse);
|
|
3302
3619
|
rpc AttemptRetry(AttemptRetryRequest) returns (AttemptRetryResponse);
|
|
3303
3620
|
rpc AttemptStart(AttemptStartRequest) returns (AttemptStartResponse);
|
|
@@ -3363,16 +3680,19 @@ service ModalClient {
|
|
|
3363
3680
|
rpc FlashContainerDeregister(FlashContainerDeregisterRequest) returns (google.protobuf.Empty);
|
|
3364
3681
|
rpc FlashContainerList(FlashContainerListRequest) returns (FlashContainerListResponse);
|
|
3365
3682
|
rpc FlashContainerRegister(FlashContainerRegisterRequest) returns (FlashContainerRegisterResponse);
|
|
3683
|
+
rpc FlashSetTargetSlotsMetrics(FlashSetTargetSlotsMetricsRequest) returns (FlashSetTargetSlotsMetricsResponse);
|
|
3366
3684
|
|
|
3367
3685
|
// Functions
|
|
3368
3686
|
rpc FunctionAsyncInvoke(FunctionAsyncInvokeRequest) returns (FunctionAsyncInvokeResponse);
|
|
3369
3687
|
rpc FunctionBindParams(FunctionBindParamsRequest) returns (FunctionBindParamsResponse);
|
|
3370
3688
|
rpc FunctionCallCancel(FunctionCallCancelRequest) returns (google.protobuf.Empty);
|
|
3689
|
+
rpc FunctionCallFromId(FunctionCallFromIdRequest) returns (FunctionCallFromIdResponse);
|
|
3371
3690
|
rpc FunctionCallGetDataIn(FunctionCallGetDataRequest) returns (stream DataChunk);
|
|
3372
3691
|
rpc FunctionCallGetDataOut(FunctionCallGetDataRequest) returns (stream DataChunk);
|
|
3373
3692
|
rpc FunctionCallList(FunctionCallListRequest) returns (FunctionCallListResponse);
|
|
3374
3693
|
rpc FunctionCallPutDataOut(FunctionCallPutDataRequest) returns (google.protobuf.Empty);
|
|
3375
3694
|
rpc FunctionCreate(FunctionCreateRequest) returns (FunctionCreateResponse);
|
|
3695
|
+
rpc FunctionFinishInputs(FunctionFinishInputsRequest) returns (google.protobuf.Empty); // For map RPCs, to signal that all inputs have been sent
|
|
3376
3696
|
rpc FunctionGet(FunctionGetRequest) returns (FunctionGetResponse);
|
|
3377
3697
|
rpc FunctionGetCallGraph(FunctionGetCallGraphRequest) returns (FunctionGetCallGraphResponse);
|
|
3378
3698
|
rpc FunctionGetCurrentStats(FunctionGetCurrentStatsRequest) returns (FunctionStats);
|
|
@@ -3389,10 +3709,16 @@ service ModalClient {
|
|
|
3389
3709
|
rpc FunctionUpdateSchedulingParams(FunctionUpdateSchedulingParamsRequest) returns (FunctionUpdateSchedulingParamsResponse);
|
|
3390
3710
|
|
|
3391
3711
|
// Images
|
|
3712
|
+
rpc ImageDelete(ImageDeleteRequest) returns (google.protobuf.Empty);
|
|
3392
3713
|
rpc ImageFromId(ImageFromIdRequest) returns (ImageFromIdResponse);
|
|
3393
3714
|
rpc ImageGetOrCreate(ImageGetOrCreateRequest) returns (ImageGetOrCreateResponse);
|
|
3394
3715
|
rpc ImageJoinStreaming(ImageJoinStreamingRequest) returns (stream ImageJoinStreamingResponse);
|
|
3395
3716
|
|
|
3717
|
+
// Input Plane Map
|
|
3718
|
+
rpc MapAwait(MapAwaitRequest) returns (MapAwaitResponse);
|
|
3719
|
+
rpc MapCheckInputs(MapCheckInputsRequest) returns (MapCheckInputsResponse);
|
|
3720
|
+
rpc MapStartOrContinue(MapStartOrContinueRequest) returns (MapStartOrContinueResponse);
|
|
3721
|
+
|
|
3396
3722
|
// Mounts
|
|
3397
3723
|
rpc MountGetOrCreate(MountGetOrCreateRequest) returns (MountGetOrCreateResponse);
|
|
3398
3724
|
rpc MountPutFile(MountPutFileRequest) returns (MountPutFileResponse);
|
|
@@ -3422,6 +3748,7 @@ service ModalClient {
|
|
|
3422
3748
|
|
|
3423
3749
|
// Sandboxes
|
|
3424
3750
|
rpc SandboxCreate(SandboxCreateRequest) returns (SandboxCreateResponse);
|
|
3751
|
+
rpc SandboxCreateConnectToken(SandboxCreateConnectTokenRequest) returns (SandboxCreateConnectTokenResponse);
|
|
3425
3752
|
rpc SandboxGetFromName(SandboxGetFromNameRequest) returns (SandboxGetFromNameResponse);
|
|
3426
3753
|
rpc SandboxGetLogs(SandboxGetLogsRequest) returns (stream TaskLogsBatch);
|
|
3427
3754
|
rpc SandboxGetResourceUsage(SandboxGetResourceUsageRequest) returns (SandboxGetResourceUsageResponse);
|
|
@@ -3431,9 +3758,12 @@ service ModalClient {
|
|
|
3431
3758
|
rpc SandboxRestore(SandboxRestoreRequest) returns (SandboxRestoreResponse);
|
|
3432
3759
|
rpc SandboxSnapshot(SandboxSnapshotRequest) returns (SandboxSnapshotResponse);
|
|
3433
3760
|
rpc SandboxSnapshotFs(SandboxSnapshotFsRequest) returns (SandboxSnapshotFsResponse);
|
|
3761
|
+
rpc SandboxSnapshotFsAsync(SandboxSnapshotFsAsyncRequest) returns (SandboxSnapshotFsAsyncResponse);
|
|
3762
|
+
rpc SandboxSnapshotFsAsyncGet(SandboxSnapshotFsAsyncGetRequest) returns (SandboxSnapshotFsResponse);
|
|
3434
3763
|
rpc SandboxSnapshotGet(SandboxSnapshotGetRequest) returns (SandboxSnapshotGetResponse);
|
|
3435
3764
|
rpc SandboxSnapshotWait(SandboxSnapshotWaitRequest) returns (SandboxSnapshotWaitResponse);
|
|
3436
3765
|
rpc SandboxStdinWrite(SandboxStdinWriteRequest) returns (SandboxStdinWriteResponse);
|
|
3766
|
+
rpc SandboxTagsGet(SandboxTagsGetRequest) returns (SandboxTagsGetResponse);
|
|
3437
3767
|
rpc SandboxTagsSet(SandboxTagsSetRequest) returns (google.protobuf.Empty);
|
|
3438
3768
|
rpc SandboxTerminate(SandboxTerminateRequest) returns (SandboxTerminateResponse);
|
|
3439
3769
|
rpc SandboxWait(SandboxWaitRequest) returns (SandboxWaitResponse);
|
|
@@ -3457,6 +3787,7 @@ service ModalClient {
|
|
|
3457
3787
|
// Tasks
|
|
3458
3788
|
rpc TaskClusterHello(TaskClusterHelloRequest) returns (TaskClusterHelloResponse);
|
|
3459
3789
|
rpc TaskCurrentInputs(google.protobuf.Empty) returns (TaskCurrentInputsResponse);
|
|
3790
|
+
rpc TaskGetCommandRouterAccess(TaskGetCommandRouterAccessRequest) returns (TaskGetCommandRouterAccessResponse);
|
|
3460
3791
|
rpc TaskList(TaskListRequest) returns (TaskListResponse);
|
|
3461
3792
|
rpc TaskResult(TaskResultRequest) returns (google.protobuf.Empty);
|
|
3462
3793
|
|
|
@@ -3488,5 +3819,6 @@ service ModalClient {
|
|
|
3488
3819
|
rpc VolumeRename(VolumeRenameRequest) returns (google.protobuf.Empty);
|
|
3489
3820
|
|
|
3490
3821
|
// Workspaces
|
|
3822
|
+
rpc WorkspaceBillingReport(WorkspaceBillingReportRequest) returns (stream WorkspaceBillingReportItem);
|
|
3491
3823
|
rpc WorkspaceNameLookup(google.protobuf.Empty) returns (WorkspaceNameLookupResponse);
|
|
3492
3824
|
}
|