dstack 0.19.10__py3-none-any.whl → 0.19.11__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.
Files changed (39) hide show
  1. dstack/_internal/cli/commands/metrics.py +25 -10
  2. dstack/_internal/cli/commands/offer.py +2 -0
  3. dstack/_internal/cli/services/configurators/run.py +1 -1
  4. dstack/_internal/cli/utils/updates.py +13 -1
  5. dstack/_internal/core/backends/aws/compute.py +21 -9
  6. dstack/_internal/core/backends/azure/compute.py +7 -5
  7. dstack/_internal/core/backends/base/compute.py +9 -4
  8. dstack/_internal/core/backends/gcp/compute.py +43 -20
  9. dstack/_internal/core/backends/gcp/resources.py +18 -2
  10. dstack/_internal/core/backends/local/compute.py +4 -2
  11. dstack/_internal/core/models/configurations.py +2 -1
  12. dstack/_internal/core/models/runs.py +2 -1
  13. dstack/_internal/proxy/gateway/resources/nginx/00-log-format.conf +11 -1
  14. dstack/_internal/proxy/gateway/resources/nginx/service.jinja2 +12 -6
  15. dstack/_internal/proxy/gateway/services/stats.py +17 -3
  16. dstack/_internal/server/background/tasks/process_submitted_jobs.py +3 -3
  17. dstack/_internal/server/routers/repos.py +9 -4
  18. dstack/_internal/server/services/fleets.py +2 -2
  19. dstack/_internal/server/services/gateways/__init__.py +1 -1
  20. dstack/_internal/server/services/jobs/__init__.py +4 -4
  21. dstack/_internal/server/services/jobs/configurators/base.py +15 -1
  22. dstack/_internal/server/services/jobs/configurators/extensions/cursor.py +3 -1
  23. dstack/_internal/server/services/jobs/configurators/extensions/vscode.py +3 -1
  24. dstack/_internal/server/services/plugins.py +64 -32
  25. dstack/_internal/server/services/runs.py +2 -2
  26. dstack/_internal/server/services/volumes.py +1 -1
  27. dstack/_internal/server/statics/index.html +1 -1
  28. dstack/_internal/server/statics/{main-b4803049eac16aea9a49.js → main-5b9786c955b42bf93581.js} +5 -5
  29. dstack/_internal/server/statics/{main-b4803049eac16aea9a49.js.map → main-5b9786c955b42bf93581.js.map} +1 -1
  30. dstack/plugins/builtin/__init__.py +0 -0
  31. dstack/plugins/builtin/rest_plugin/__init__.py +18 -0
  32. dstack/plugins/builtin/rest_plugin/_models.py +48 -0
  33. dstack/plugins/builtin/rest_plugin/_plugin.py +127 -0
  34. dstack/version.py +2 -2
  35. {dstack-0.19.10.dist-info → dstack-0.19.11.dist-info}/METADATA +1 -2
  36. {dstack-0.19.10.dist-info → dstack-0.19.11.dist-info}/RECORD +39 -35
  37. {dstack-0.19.10.dist-info → dstack-0.19.11.dist-info}/WHEEL +0 -0
  38. {dstack-0.19.10.dist-info → dstack-0.19.11.dist-info}/entry_points.txt +0 -0
  39. {dstack-0.19.10.dist-info → dstack-0.19.11.dist-info}/licenses/LICENSE.md +0 -0
File without changes
@@ -0,0 +1,18 @@
1
+ # ruff: noqa: F401
2
+ from dstack.plugins.builtin.rest_plugin._models import (
3
+ FleetSpecRequest,
4
+ FleetSpecResponse,
5
+ GatewaySpecRequest,
6
+ GatewaySpecResponse,
7
+ RunSpecRequest,
8
+ RunSpecResponse,
9
+ SpecApplyRequest,
10
+ SpecApplyResponse,
11
+ VolumeSpecRequest,
12
+ VolumeSpecResponse,
13
+ )
14
+ from dstack.plugins.builtin.rest_plugin._plugin import (
15
+ PLUGIN_SERVICE_URI_ENV_VAR_NAME,
16
+ CustomApplyPolicy,
17
+ RESTPlugin,
18
+ )
@@ -0,0 +1,48 @@
1
+ from typing import Generic, Optional, TypeVar
2
+
3
+ from pydantic import BaseModel, Field
4
+ from typing_extensions import Annotated
5
+
6
+ from dstack._internal.core.models.fleets import FleetSpec
7
+ from dstack._internal.core.models.gateways import GatewaySpec
8
+ from dstack._internal.core.models.runs import RunSpec
9
+ from dstack._internal.core.models.volumes import VolumeSpec
10
+
11
+ SpecType = TypeVar("SpecType", RunSpec, FleetSpec, VolumeSpec, GatewaySpec)
12
+
13
+
14
+ class SpecApplyRequest(BaseModel, Generic[SpecType]):
15
+ user: Annotated[str, Field(description="The name of the user making the apply request")]
16
+ project: Annotated[str, Field(description="The name of the project the request is for")]
17
+ spec: Annotated[SpecType, Field(description="The spec to be applied")]
18
+
19
+ # Override dict() to remove __orig_class__ attribute and avoid "TypeError: Object of type _GenericAlias is not JSON serializable"
20
+ # error. This issue doesn't happen though when running the code in pytest, only when running the server.
21
+ def dict(self, *args, **kwargs):
22
+ d = super().dict(*args, **kwargs)
23
+ d.pop("__orig_class__", None)
24
+ return d
25
+
26
+
27
+ RunSpecRequest = SpecApplyRequest[RunSpec]
28
+ FleetSpecRequest = SpecApplyRequest[FleetSpec]
29
+ VolumeSpecRequest = SpecApplyRequest[VolumeSpec]
30
+ GatewaySpecRequest = SpecApplyRequest[GatewaySpec]
31
+
32
+
33
+ class SpecApplyResponse(BaseModel, Generic[SpecType]):
34
+ spec: Annotated[
35
+ SpecType,
36
+ Field(
37
+ description="The spec to apply, original spec if error otherwise original or mutated by plugin service if approved"
38
+ ),
39
+ ]
40
+ error: Annotated[
41
+ Optional[str], Field(description="Error message if request is rejected", min_length=1)
42
+ ] = None
43
+
44
+
45
+ RunSpecResponse = SpecApplyResponse[RunSpec]
46
+ FleetSpecResponse = SpecApplyResponse[FleetSpec]
47
+ VolumeSpecResponse = SpecApplyResponse[VolumeSpec]
48
+ GatewaySpecResponse = SpecApplyResponse[GatewaySpec]
@@ -0,0 +1,127 @@
1
+ import json
2
+ import os
3
+ from typing import Type
4
+
5
+ import requests
6
+ from pydantic import ValidationError
7
+
8
+ from dstack._internal.core.errors import ServerClientError
9
+ from dstack._internal.core.models.fleets import FleetSpec
10
+ from dstack._internal.core.models.gateways import GatewaySpec
11
+ from dstack._internal.core.models.volumes import VolumeSpec
12
+ from dstack.plugins import ApplyPolicy, ApplySpec, Plugin, RunSpec, get_plugin_logger
13
+ from dstack.plugins.builtin.rest_plugin import (
14
+ FleetSpecRequest,
15
+ FleetSpecResponse,
16
+ GatewaySpecRequest,
17
+ GatewaySpecResponse,
18
+ RunSpecRequest,
19
+ RunSpecResponse,
20
+ SpecApplyRequest,
21
+ SpecApplyResponse,
22
+ VolumeSpecRequest,
23
+ VolumeSpecResponse,
24
+ )
25
+
26
+ logger = get_plugin_logger(__name__)
27
+
28
+ PLUGIN_SERVICE_URI_ENV_VAR_NAME = "DSTACK_PLUGIN_SERVICE_URI"
29
+ PLUGIN_REQUEST_TIMEOUT_SEC = 8
30
+
31
+
32
+ class CustomApplyPolicy(ApplyPolicy):
33
+ def __init__(self):
34
+ self._plugin_service_uri = os.getenv(PLUGIN_SERVICE_URI_ENV_VAR_NAME)
35
+ logger.info(f"Found plugin service at {self._plugin_service_uri}")
36
+ if not self._plugin_service_uri:
37
+ logger.error(
38
+ f"Cannot create policy because {PLUGIN_SERVICE_URI_ENV_VAR_NAME} is not set"
39
+ )
40
+ raise ServerClientError(f"{PLUGIN_SERVICE_URI_ENV_VAR_NAME} is not set")
41
+
42
+ def _check_request_rejected(self, response: SpecApplyResponse):
43
+ if response.error is not None:
44
+ logger.error(f"Plugin service rejected apply request: {response.error}")
45
+ raise ServerClientError(f"Apply request rejected: {response.error}")
46
+
47
+ def _call_plugin_service(self, spec_request: SpecApplyRequest, endpoint: str) -> ApplySpec:
48
+ response = None
49
+ try:
50
+ response = requests.post(
51
+ f"{self._plugin_service_uri}{endpoint}",
52
+ json=spec_request.dict(),
53
+ headers={"accept": "application/json", "Content-Type": "application/json"},
54
+ timeout=PLUGIN_REQUEST_TIMEOUT_SEC,
55
+ )
56
+ response.raise_for_status()
57
+ spec_json = json.loads(response.text)
58
+ return spec_json
59
+ except requests.exceptions.ConnectionError as e:
60
+ logger.error(
61
+ f"Could not connect to plugin service at {self._plugin_service_uri}: %s", e
62
+ )
63
+ raise ServerClientError(
64
+ f"Could not connect to plugin service at {self._plugin_service_uri}"
65
+ )
66
+ except requests.RequestException as e:
67
+ logger.error("Request to the plugin service failed: %s", e)
68
+ raise ServerClientError("Request to the plugin service failed")
69
+
70
+ def _on_apply(
71
+ self,
72
+ request_cls: Type[SpecApplyRequest],
73
+ response_cls: Type[SpecApplyResponse],
74
+ endpoint: str,
75
+ user: str,
76
+ project: str,
77
+ spec: ApplySpec,
78
+ ) -> ApplySpec:
79
+ try:
80
+ spec_request = request_cls(user=user, project=project, spec=spec)
81
+ spec_json = self._call_plugin_service(spec_request, endpoint)
82
+ response = response_cls(**spec_json)
83
+ self._check_request_rejected(response)
84
+ return response.spec
85
+ except ValidationError:
86
+ logger.error(f"Plugin service returned invalid response:\n{spec_json}")
87
+ raise ServerClientError("Plugin service returned an invalid response")
88
+
89
+ def on_run_apply(self, user: str, project: str, spec: RunSpec) -> RunSpec:
90
+ return self._on_apply(
91
+ RunSpecRequest, RunSpecResponse, "/apply_policies/on_run_apply", user, project, spec
92
+ )
93
+
94
+ def on_fleet_apply(self, user: str, project: str, spec: FleetSpec) -> FleetSpec:
95
+ return self._on_apply(
96
+ FleetSpecRequest,
97
+ FleetSpecResponse,
98
+ "/apply_policies/on_fleet_apply",
99
+ user,
100
+ project,
101
+ spec,
102
+ )
103
+
104
+ def on_volume_apply(self, user: str, project: str, spec: VolumeSpec) -> VolumeSpec:
105
+ return self._on_apply(
106
+ VolumeSpecRequest,
107
+ VolumeSpecResponse,
108
+ "/apply_policies/on_volume_apply",
109
+ user,
110
+ project,
111
+ spec,
112
+ )
113
+
114
+ def on_gateway_apply(self, user: str, project: str, spec: GatewaySpec) -> GatewaySpec:
115
+ return self._on_apply(
116
+ GatewaySpecRequest,
117
+ GatewaySpecResponse,
118
+ "/apply_policies/on_gateway_apply",
119
+ user,
120
+ project,
121
+ spec,
122
+ )
123
+
124
+
125
+ class RESTPlugin(Plugin):
126
+ def get_apply_policies(self) -> list[ApplyPolicy]:
127
+ return [CustomApplyPolicy()]
dstack/version.py CHANGED
@@ -1,3 +1,3 @@
1
- __version__ = "0.19.10"
1
+ __version__ = "0.19.11"
2
2
  __is_release__ = True
3
- base_image = "0.7"
3
+ base_image = "0.8"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dstack
3
- Version: 0.19.10
3
+ Version: 0.19.11
4
4
  Summary: dstack is an open-source orchestration engine for running AI workloads on any cloud or on-premises.
5
5
  Project-URL: Homepage, https://dstack.ai
6
6
  Project-URL: Source, https://github.com/dstackai/dstack
@@ -22,7 +22,6 @@ Requires-Dist: cursor
22
22
  Requires-Dist: filelock
23
23
  Requires-Dist: gitpython
24
24
  Requires-Dist: gpuhunt==0.1.6
25
- Requires-Dist: humanize>=4.12.3
26
25
  Requires-Dist: jsonschema
27
26
  Requires-Dist: packaging
28
27
  Requires-Dist: paramiko>=3.2.0
@@ -1,5 +1,5 @@
1
1
  dstack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- dstack/version.py,sha256=1w-1PVkazoEpWhJboy2UsLiK2Ezuk8Le2ZyTHPXYf7E,65
2
+ dstack/version.py,sha256=lQetIXqi5PEphQLgvFE03vjCxxfiFWfDJSVdrG8NV9c,65
3
3
  dstack/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  dstack/_internal/compat.py,sha256=bF9U9fTMfL8UVhCouedoUSTYFl7UAOiU0WXrnRoByxw,40
5
5
  dstack/_internal/settings.py,sha256=GOqfcLEONWC1hGU36IYPuOhJXP_qC3Y6d2SQge_NdpY,953
@@ -15,8 +15,8 @@ dstack/_internal/cli/commands/fleet.py,sha256=J0Yi5CAYvIQF_NC4ZBsDYGc3grTOtvaF7s
15
15
  dstack/_internal/cli/commands/gateway.py,sha256=DcD6P_MvXbSL9aXkLX9hgGYSAzARjgY6RSbrCMzdNcg,6075
16
16
  dstack/_internal/cli/commands/init.py,sha256=bLhSlViNWtjflB6xNq_PuCR2o2A06h222luh1NeUgVA,1169
17
17
  dstack/_internal/cli/commands/logs.py,sha256=o8ehPAKM12Xn9thg2jjnYdr7_wKqF-00ziVry8IVVwE,1528
18
- dstack/_internal/cli/commands/metrics.py,sha256=nxdTcyCvHNev7Mn19zGQ7vTHUBGY6hyvPtY6Z731SOU,5373
19
- dstack/_internal/cli/commands/offer.py,sha256=rf10T9ohEC77GmZexdqF_RBCQkLYzVSAwTzZlxukNYM,4085
18
+ dstack/_internal/cli/commands/metrics.py,sha256=ZS_dHD4_YK135J09xKpVTY_3CXzhj8QhDo18Ail9Pas,5862
19
+ dstack/_internal/cli/commands/offer.py,sha256=6gem4Wz6WJmHur9-eiC65JwqObrGIAybROCAp5pr59k,4221
20
20
  dstack/_internal/cli/commands/project.py,sha256=V8gJwQWQGvGKQJPUyce_M7Ij_B7bOxYzo2IQgkLLHFE,6151
21
21
  dstack/_internal/cli/commands/ps.py,sha256=5RU4mcL4-FT4PcXktfKb4htCOPqia7mIuVGgfK7x9lY,1894
22
22
  dstack/_internal/cli/commands/server.py,sha256=4K0tp_tIUStCEMpWrUkRLwe27IgAt99RPpk2H1AWnXk,2817
@@ -32,7 +32,7 @@ dstack/_internal/cli/services/configurators/__init__.py,sha256=z94VPBFqybP8Zpwy3
32
32
  dstack/_internal/cli/services/configurators/base.py,sha256=bGfde2zoma28lLE8MUACO4-NKT1CdJJQJoXrzjpz0mQ,3360
33
33
  dstack/_internal/cli/services/configurators/fleet.py,sha256=jm4tNH6QQVplLdboCTlvRYUee3nZ0UYb_qLTrvtYVYM,14049
34
34
  dstack/_internal/cli/services/configurators/gateway.py,sha256=czB2s89s7IowOmWnpDwWErPAUlW3FvFMizImhrkQiBM,8927
35
- dstack/_internal/cli/services/configurators/run.py,sha256=nXNjFrM5YT6RFqPXJQa4MOiEsG6IFiANyGKP-PXILdc,25518
35
+ dstack/_internal/cli/services/configurators/run.py,sha256=PvaetsuW6p5rM-nH06uIQR7xXL4GDnbr2O8Sh9r0Dcw,25534
36
36
  dstack/_internal/cli/services/configurators/volume.py,sha256=riMXLQbgvHIIFwLKdHfad-_0iE9wE3G_rUmXU5P3ZS8,8519
37
37
  dstack/_internal/cli/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  dstack/_internal/cli/utils/common.py,sha256=rfmzqrsgR3rXW3wj0vxDdvrhUUg2aIy4A6E9MZbd55g,1763
@@ -40,7 +40,7 @@ dstack/_internal/cli/utils/fleet.py,sha256=ch-LN1X9boSm-rFLW4mAJRmz0XliLhH0LvKD2
40
40
  dstack/_internal/cli/utils/gateway.py,sha256=qMYa1NTAT_O98x2_mSyWDRbiHj5fqt6xUXFh9NIUwAM,1502
41
41
  dstack/_internal/cli/utils/rich.py,sha256=Gx1MJU929kMKsbdo9qF7XHARNta2426Ssb-xMLVhwbQ,5710
42
42
  dstack/_internal/cli/utils/run.py,sha256=nCQwAU3VDS8ec2oWNjRKi5xIGdwwKI_YNr8vgGyDPzQ,9202
43
- dstack/_internal/cli/utils/updates.py,sha256=sAPYYptkFzQnGaRjv7FV7HOj-Be3IXGe63xj-sVEpv4,2566
43
+ dstack/_internal/cli/utils/updates.py,sha256=pGr5keEmHojnbY0ayjWL4GWTz4ParY6fP85tHpJ11pI,3043
44
44
  dstack/_internal/cli/utils/volume.py,sha256=mU9I06dVMFbpjfkefxrZNoSWadKLoib3U14rHudNQN4,1975
45
45
  dstack/_internal/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
46
  dstack/_internal/core/consts.py,sha256=c1Yd5UY6Qx7KeuYgloXWncWhMsYj6TqwlElda7NtB98,254
@@ -51,21 +51,21 @@ dstack/_internal/core/backends/models.py,sha256=aKQOrDEStouuwY4MacSen7SkoyAa6HR6
51
51
  dstack/_internal/core/backends/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
52
  dstack/_internal/core/backends/aws/auth.py,sha256=BAe3HAedoAO42Fbv7YhpODKWlyil8M0PuRJsL-_u_kw,978
53
53
  dstack/_internal/core/backends/aws/backend.py,sha256=pjROH-S9pgrSMm-Eox_ocL7cTU6mIMRxvURq7Vi-2J8,876
54
- dstack/_internal/core/backends/aws/compute.py,sha256=f__9FTpXaCLoypdw9VPZ6AswfmiNcf8MS3ftGztYmJA,35711
54
+ dstack/_internal/core/backends/aws/compute.py,sha256=GKxwfoDA_qVE1znwRGfvkPhvrl3XUDL9tAlFidB4SYs,36040
55
55
  dstack/_internal/core/backends/aws/configurator.py,sha256=gGynfTQW89hUt7acAjVnZnRtCbzhno7l4baCKnBEuQI,7499
56
56
  dstack/_internal/core/backends/aws/models.py,sha256=EUCHXHmZnshe3rwI9UtjilwcUMu1Z7MO4Y4-nlZ_IcA,4404
57
57
  dstack/_internal/core/backends/aws/resources.py,sha256=Wht_USG8ps9HQBhAYfxDxjaob9kUnr7_WDCaXNzCeE0,22837
58
58
  dstack/_internal/core/backends/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
59
  dstack/_internal/core/backends/azure/auth.py,sha256=CHp3QRNx3tIwkhyOY_l8WU-ElY4Pxhavoy9JSdwr15g,1259
60
60
  dstack/_internal/core/backends/azure/backend.py,sha256=XySTor8v_tLkZctDBryrFHrbVzQgNf_RUPkXQYplvwM,746
61
- dstack/_internal/core/backends/azure/compute.py,sha256=3CH6m1ytCG-cvj3sAQG3BPpehZQ7XQkAFE8JOyja0V8,24433
61
+ dstack/_internal/core/backends/azure/compute.py,sha256=waunprBzpiJBMtVDJMjFCxEdmtO52E7ckzcc6OcZLf4,24488
62
62
  dstack/_internal/core/backends/azure/configurator.py,sha256=cC0YhiayPtrOEEr8Lr-9nDDq6v2-sbxK-1QhixpM1YY,18228
63
63
  dstack/_internal/core/backends/azure/models.py,sha256=ap0WsYBSFdDCxY0G3W1sg2DBN2k0xknz6bp8Ypf6phs,3356
64
64
  dstack/_internal/core/backends/azure/resources.py,sha256=cJWS2Yjxdg-XtjpdBxfVDZaX_gTbuoEpmdjTxdA9uIw,3431
65
65
  dstack/_internal/core/backends/azure/utils.py,sha256=taHMJq6UHRzUXLUcO2P5VCKy3wJaye2bG-6QdkEPNdY,1741
66
66
  dstack/_internal/core/backends/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
67
  dstack/_internal/core/backends/base/backend.py,sha256=hdFMHED1RMV9GVfLSU0yGhGE-cXlbLvt1coDA885PMM,505
68
- dstack/_internal/core/backends/base/compute.py,sha256=0APW_2yo4zO-mHw6vg-5nnMnwppR4QPGrFN3GQmD-EU,28542
68
+ dstack/_internal/core/backends/base/compute.py,sha256=D4rRxUHUZOkUfAhmDE6MaS4AyHEPdRVcnS4LxQ-DF9E,28719
69
69
  dstack/_internal/core/backends/base/configurator.py,sha256=OCv8N2oxcxy3In2zS1PKiCJ0a-COZwxGjBz2FYkQnfg,3807
70
70
  dstack/_internal/core/backends/base/models.py,sha256=Ij0osOl-T-ABsKLoVg2eY81DMkwdWkevAnjXj2QnLXI,532
71
71
  dstack/_internal/core/backends/base/offers.py,sha256=AzAAx5eSTaHv8CbWuGERTHS151x4oJuQn3tr_Bz9HKQ,6282
@@ -85,10 +85,10 @@ dstack/_internal/core/backends/dstack/models.py,sha256=Jbe0Syez43N5i97TlIc8l-5Vn
85
85
  dstack/_internal/core/backends/gcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
86
  dstack/_internal/core/backends/gcp/auth.py,sha256=VWCn34hapaZ3E0OHCoiAVL97o3s64RF9w85CZ6xdtmk,2235
87
87
  dstack/_internal/core/backends/gcp/backend.py,sha256=OvTv1c7j4LTPCIEtkwD3-q6Eo1QET8xlM8CzbY0hLmI,572
88
- dstack/_internal/core/backends/gcp/compute.py,sha256=NRAb_2ThZ4lEzDhr5q6ecxMlALnJFGYpJsaWu6uJ_VI,41511
88
+ dstack/_internal/core/backends/gcp/compute.py,sha256=OObZgsOyQC-FvcA75xdO7MIoiFr9ncl5-Av6TtCOxdQ,42218
89
89
  dstack/_internal/core/backends/gcp/configurator.py,sha256=mvI7WMz8cC1YnN-0KFIIEqkfcEBehRJI0WgKnqILjv0,6730
90
90
  dstack/_internal/core/backends/gcp/models.py,sha256=biLA3rlFcoPatAZpKycuIl-8PdnNSAFiDCJjov65_zo,4612
91
- dstack/_internal/core/backends/gcp/resources.py,sha256=gLoRo9Z1--n55JTEDVaofUsBo-8h5Nfbhsb_2ydvmK8,16487
91
+ dstack/_internal/core/backends/gcp/resources.py,sha256=2jpg24NH4Ov4J4Of1F3DPkwEWkRxEi-x4ZTx8XSNGIQ,16926
92
92
  dstack/_internal/core/backends/gcp/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
93
  dstack/_internal/core/backends/gcp/features/tcpx.py,sha256=8bDR5kwF5qke5EWNdBscdbZQnC7oVXKSls3WPcoXgZI,2902
94
94
  dstack/_internal/core/backends/kubernetes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -105,7 +105,7 @@ dstack/_internal/core/backends/lambdalabs/configurator.py,sha256=JYtAFemQRi6tXTt
105
105
  dstack/_internal/core/backends/lambdalabs/models.py,sha256=c9dAYd0wjun2dvMLUZO4D09XvEskBRehjLDN_nwbSEU,1036
106
106
  dstack/_internal/core/backends/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
107
  dstack/_internal/core/backends/local/backend.py,sha256=KJuNXUXrg60NhLywnExD1EXH2gK0TL-kzNWUPRNZ_Zg,427
108
- dstack/_internal/core/backends/local/compute.py,sha256=ZEUvlXyPtuGZSCQn-iDctfmwSbk7lAV95PGrQfrl1so,3730
108
+ dstack/_internal/core/backends/local/compute.py,sha256=-FUD8Ii5VTBtygAV1U3k1j10MFdK1whGvrSeRwTk29Y,3788
109
109
  dstack/_internal/core/backends/nebius/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
110
  dstack/_internal/core/backends/nebius/backend.py,sha256=2XqZIbSR8VzlfOnuVklXlDxNmwAkQj7txQN8VXF1j2E,566
111
111
  dstack/_internal/core/backends/nebius/compute.py,sha256=OUNvDk9rU13NR0CADFqn7nQL8kxgSvL7kbNEV4cLzyQ,14761
@@ -156,7 +156,7 @@ dstack/_internal/core/backends/vultr/models.py,sha256=TkqK_lW6w5k_7wsoFiKDb6NXuT
156
156
  dstack/_internal/core/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
157
157
  dstack/_internal/core/models/common.py,sha256=XWd79dmFGMrdpTcStH5fVmNXCKE0s7FsIorPL0saQ8w,2138
158
158
  dstack/_internal/core/models/config.py,sha256=JJ7rT7dztzTWCY5TkoyxXxTvG5D4IFYhGe7EzwkLOWQ,581
159
- dstack/_internal/core/models/configurations.py,sha256=I-BRBls-oSZ2EZy5glC4_PJbdM-_KnoAxl6gm1u16tg,19027
159
+ dstack/_internal/core/models/configurations.py,sha256=yG5GaCbTK4QhSh0UMYrYpFSeFvD0f-Uhi3TT_XviGhQ,19068
160
160
  dstack/_internal/core/models/envs.py,sha256=yq84YRFBILOy4x3XnGcTgYpbZ69eFTCQPgBCr9Ndov4,4969
161
161
  dstack/_internal/core/models/fleets.py,sha256=gbP2rj1ODDuy4IfTbPNB-ae050thvzTtA8uDb5iTmdY,12059
162
162
  dstack/_internal/core/models/gateways.py,sha256=_O8EWwHWLdgNoWY4P4u71KM-uEr5DDp42LXfyv1qMDI,4054
@@ -167,7 +167,7 @@ dstack/_internal/core/models/placement.py,sha256=WJVq5ENJykyRarQzL2EeYQag_9_jV7V
167
167
  dstack/_internal/core/models/profiles.py,sha256=seeysTuMv1vVUmpHAZgrMUGcbMtH7hSMFIvfx0Qk__0,10406
168
168
  dstack/_internal/core/models/projects.py,sha256=H5ZZRiyUEKifpTFAhl45KBi5ly7ooE0WmI329myK360,643
169
169
  dstack/_internal/core/models/resources.py,sha256=rsf6hAhi5bfSb_Z9VcS3UoEG0G8Ohl6ekyrOStLOAqw,14114
170
- dstack/_internal/core/models/runs.py,sha256=Xkv1kY68JA0eJUeCVJjM9YWRkfy6P1RGXslBIMtox2E,18985
170
+ dstack/_internal/core/models/runs.py,sha256=6egFnxV0qGs-XCr22RvJc-rSpc3zsNIk2UF3cRdWlX4,19017
171
171
  dstack/_internal/core/models/secrets.py,sha256=IQyemsNpSzqOCB-VlVTuc4gyPFmXXO4mhko0Ur0ey3I,221
172
172
  dstack/_internal/core/models/server.py,sha256=Hkc1v2s3KOiwslsWVmhUOAzcSeREoG-HD1SzSX9WUGg,152
173
173
  dstack/_internal/core/models/services.py,sha256=2Hpi7j0Q1shaf_0wd0C0044AJAmuYi-D3qx3PH849oI,3076
@@ -204,9 +204,9 @@ dstack/_internal/proxy/gateway/models.py,sha256=OLarOKJj-6teeg9dvxp3ueRv2_7yDJJf
204
204
  dstack/_internal/proxy/gateway/repo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
205
205
  dstack/_internal/proxy/gateway/repo/repo.py,sha256=0i9FaLwDLnf8hijtRjT8hBooWj7EJ6L0_WJMbFaIBmo,4629
206
206
  dstack/_internal/proxy/gateway/repo/state_v1.py,sha256=fngXqJWONuoJZEQcKHgiOGvs-ZQ3NATMzUFn67w4xxY,5943
207
- dstack/_internal/proxy/gateway/resources/nginx/00-log-format.conf,sha256=hqo9-5Ss1htl6s0dxXnnj1Mgjgs3ijJS8QmZ529CQaI,68
207
+ dstack/_internal/proxy/gateway/resources/nginx/00-log-format.conf,sha256=-nVcJRFb4qbxy-t9BOq03dvdBtZ-P-Fi81gOzS0GnPc,361
208
208
  dstack/_internal/proxy/gateway/resources/nginx/entrypoint.jinja2,sha256=umnUlm34wfoLNik3GFr1Gn2jtZMAx1-kgjBYcY3sLAU,817
209
- dstack/_internal/proxy/gateway/resources/nginx/service.jinja2,sha256=9ulU4qh1fQwJvh478srAlRcay6s9nONsEnO7NYcMa7A,2547
209
+ dstack/_internal/proxy/gateway/resources/nginx/service.jinja2,sha256=sccX4pIfdErti7VPhvN_9ObEJgbvsZc-COTJk1dUe8U,2780
210
210
  dstack/_internal/proxy/gateway/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
211
211
  dstack/_internal/proxy/gateway/routers/auth.py,sha256=PCMYEy2HLbiSZgqrtMUH90hbMAMXHp1nSZ0j13Nlrhs,253
212
212
  dstack/_internal/proxy/gateway/routers/config.py,sha256=1UKHAPSYkeG8ULl9X3Eu6nPg94Xp-fecTObRa5Yw294,908
@@ -221,7 +221,7 @@ dstack/_internal/proxy/gateway/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5J
221
221
  dstack/_internal/proxy/gateway/services/nginx.py,sha256=tGvs0Ci1X0aO8HjaflCgkxEXop0Z7o6euw7ADfCUOro,6149
222
222
  dstack/_internal/proxy/gateway/services/registry.py,sha256=Gqyri5PaJW79iRYufawS09XHO_q7a1Re3tx2dGjBTfQ,13580
223
223
  dstack/_internal/proxy/gateway/services/server_client.py,sha256=KSnpO8iPm5wxQPU0DcW7kqUzwliaQrb3b0K8Jmk8iA0,3630
224
- dstack/_internal/proxy/gateway/services/stats.py,sha256=i88GpWMUlB8tZTWAQHPNh420qbgSGAhnaxNgQN2zK78,5326
224
+ dstack/_internal/proxy/gateway/services/stats.py,sha256=F1LI34oXk_vF3VkWqpRnf_aO2ykECv6_WmBlZVa2jU8,5945
225
225
  dstack/_internal/proxy/gateway/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
226
  dstack/_internal/proxy/gateway/testing/common.py,sha256=K50IHpdxM9NpojVPrFFEaZyMwTAHvDU76VLB3qlZBn8,269
227
227
  dstack/_internal/proxy/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -264,7 +264,7 @@ dstack/_internal/server/background/tasks/process_placement_groups.py,sha256=gJ8U
264
264
  dstack/_internal/server/background/tasks/process_prometheus_metrics.py,sha256=9VoGFqdiXcVkCi_NV1VqQdqllDkB0bHIqOHKMIZK1Fg,5183
265
265
  dstack/_internal/server/background/tasks/process_running_jobs.py,sha256=jyuYOQfXIVGu5ugTennwSGXL_c6VDNJN96-Qrz7Hgic,36441
266
266
  dstack/_internal/server/background/tasks/process_runs.py,sha256=EI1W6HUyB-og3g8BDP_GsBrJjQ-Z3JvZHTuJf7CRKRM,17974
267
- dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=9Etgo9-Fdx5g9xk0OsJXcfVm2dssLTKLT0FLvWJO4kU,27397
267
+ dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=tLLpdtLHN2xC6Ohc6f0we3oevw3pBt0_XrsufaFtIvE,27383
268
268
  dstack/_internal/server/background/tasks/process_terminating_jobs.py,sha256=0Z3Q409RwSxOL_pgK8JktBthjtESEUH3ahwTLsTdYPk,3800
269
269
  dstack/_internal/server/background/tasks/process_volumes.py,sha256=206rbT4ICeZtEmqh_94Rry_fgHfFLLaSEX9W-svwFk4,5089
270
270
  dstack/_internal/server/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -347,7 +347,7 @@ dstack/_internal/server/routers/logs.py,sha256=_Euk283LbhlwHibJTKM-7YcpbeQFtWBqM
347
347
  dstack/_internal/server/routers/metrics.py,sha256=VFgWhkOvxVFDLlRM_kXHYFylLcfCD6UjXInvcd7H4dY,2314
348
348
  dstack/_internal/server/routers/projects.py,sha256=0R-w_6WXUbNo6fREAexFUQ3RoOJF2D_Iz35elKjym14,2717
349
349
  dstack/_internal/server/routers/prometheus.py,sha256=UAcOE8dpGZe4Wd0EOIlFPMbjaNjzX8A7iHlooeRvsfo,944
350
- dstack/_internal/server/routers/repos.py,sha256=wXtfQBEwGtHIWg1-EMMigMAby42Exe7iFhwPKkg8JQ4,3723
350
+ dstack/_internal/server/routers/repos.py,sha256=Si27qslFefmvRBuR2khvuFyjpd88-Hys-pvIbi9YJK0,3943
351
351
  dstack/_internal/server/routers/runs.py,sha256=p44c_0bqwG1v5S_qX-HKbap1nmk1F2JVqaIXihjiUfY,5388
352
352
  dstack/_internal/server/routers/secrets.py,sha256=50_qJCTYRpnGSlLyS93gqoV17wWewOVmM65PcG1bT_Y,856
353
353
  dstack/_internal/server/routers/server.py,sha256=8pQmfyZj0nbebeOK9JuKhw9JmYuIYfJnY0LuYynWnGY,346
@@ -372,7 +372,7 @@ dstack/_internal/server/security/permissions.py,sha256=FJ_8YPhjmebA4jQjtQoAGEaj1
372
372
  dstack/_internal/server/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
373
373
  dstack/_internal/server/services/config.py,sha256=yo8njslwfS7_blhbPPhOtzCMyg8N_mmFSw5aPvirSzw,10691
374
374
  dstack/_internal/server/services/docker.py,sha256=zAvjFHxIP03Td92NzbGEScz0piLjloE60tQ7vz0AeCA,5328
375
- dstack/_internal/server/services/fleets.py,sha256=5BQ3DYBx0XWfcJJjaOemNoYPkvlkNsZ_uqA01YjjKxY,26587
375
+ dstack/_internal/server/services/fleets.py,sha256=9UL9mHo0IJhYrxiFHQUaLUA61PAQQ8gGwYNHpknlVqU,26599
376
376
  dstack/_internal/server/services/instances.py,sha256=4feu9RfixOIVsLoFPHiYYUe0L6sf3v3h1asTBSF5cyc,18686
377
377
  dstack/_internal/server/services/locking.py,sha256=7JUgNSplKRx7dxC4LIpmWw81agUtslEDTeDiNMPbAVg,3013
378
378
  dstack/_internal/server/services/logging.py,sha256=Nu1628kW2hqB__N0Eyr07wGWjVWxfyJnczonTJ72kSM,417
@@ -380,15 +380,15 @@ dstack/_internal/server/services/metrics.py,sha256=jKLy1jSCVR_crqVu_CmsOMbvMkucW
380
380
  dstack/_internal/server/services/offers.py,sha256=4hhqLzmo14_IY84FSDG59Sib1DrmTAOk-_q8M4aYoLU,7737
381
381
  dstack/_internal/server/services/permissions.py,sha256=l7Ngdelmn65vjw13NcOdaC6lBYMRuSw6FbHzYwdK3nE,1005
382
382
  dstack/_internal/server/services/placement.py,sha256=U-7z4kJ6ZyrCXzkDychWoOhniz19ooFwiNI2InoTLls,2420
383
- dstack/_internal/server/services/plugins.py,sha256=e5ESJVw5EaxkmxLXdvZdIGaFNxy8k5QOiPQD2zN9w84,2650
383
+ dstack/_internal/server/services/plugins.py,sha256=KgBqBUqxjQirRcYNuXVetE4OQj0EPkdC7ccbrNV1WQE,3825
384
384
  dstack/_internal/server/services/projects.py,sha256=Je1iWZ-ArmyFxK1yMUzod5WRXyiIDxtuVp6pHcdctTQ,14988
385
385
  dstack/_internal/server/services/prometheus.py,sha256=xq5G-Q2BJup9lS2F6__0wUVTs-k1Gr3dYclGzo2WoWo,12474
386
386
  dstack/_internal/server/services/repos.py,sha256=f9ztN7jz_2gvD9hXF5sJwWDVyG2-NHRfjIdSukowPh8,9342
387
387
  dstack/_internal/server/services/resources.py,sha256=VRFOih_cMJdc0c2m9nSGsX8vWAJQV3M6N87aqS_JXfw,699
388
- dstack/_internal/server/services/runs.py,sha256=Vm-dWX8-ZL6TANnyh0KdEg_UIMaKOky8N8SYoMSQRCQ,39167
388
+ dstack/_internal/server/services/runs.py,sha256=7nj4iQ6CZT3SEW9h3Vb8CBV65MUSSeQfZwgP_J4YlMo,39179
389
389
  dstack/_internal/server/services/storage.py,sha256=6I0xI_3_RpJNbKZwHjDnjrEwXGdHfiaeb5li15T-M1I,1884
390
390
  dstack/_internal/server/services/users.py,sha256=W-5xL7zsHNjeG7BBK54RWGvIrBOrw-FF0NcG_z9qhoE,7466
391
- dstack/_internal/server/services/volumes.py,sha256=vfKY6eZp64I58Mfdvrk9Wig7deveD2Rw4ET1cbc1Sog,16238
391
+ dstack/_internal/server/services/volumes.py,sha256=vxjFn3ijrvwi9-aXipT0iQgNjgebdwcBRn1mKFL9zAQ,16244
392
392
  dstack/_internal/server/services/backends/__init__.py,sha256=Aqo1GoqhZ_FsLEkCcBrvReKSq6E5w4QbBLrDXfGjiKU,13154
393
393
  dstack/_internal/server/services/backends/handlers.py,sha256=j-MhBxrpdepoDG7f2tApjFnE23RVO5I15-hxHyOWnew,3251
394
394
  dstack/_internal/server/services/encryption/__init__.py,sha256=3kCw_cxC3-Un1OIofdW5Gqsm0ZCXXTlGz09cULBx_uc,3155
@@ -396,20 +396,20 @@ dstack/_internal/server/services/encryption/keys/__init__.py,sha256=47DEQpj8HBSa
396
396
  dstack/_internal/server/services/encryption/keys/aes.py,sha256=2He1p2_Rg6hnCeLIGJo-Yfdsij7so_338oY49RXuL3Q,2276
397
397
  dstack/_internal/server/services/encryption/keys/base.py,sha256=mqumJiidoexUPoqxhQG6J_SpC1WGYwkdjKm1MUWnXo8,352
398
398
  dstack/_internal/server/services/encryption/keys/identity.py,sha256=ryb_YSV6u4c7W1OsVfEpzJvZCrR4zZYlzLw_GpjpD2Q,741
399
- dstack/_internal/server/services/gateways/__init__.py,sha256=Up8uFsEQDBE0yOXn7n5o7Q8MkY0XJfbMWViMFd2EIL4,21530
399
+ dstack/_internal/server/services/gateways/__init__.py,sha256=aDTpr45rkaQ2zBHnDQycwEDSQSno7bQ0buRPqTEDRxg,21536
400
400
  dstack/_internal/server/services/gateways/client.py,sha256=XIJX3fGBbZ_AG8qZMTSE8KAB_ojq5YJFa0OXoD_dofg,7493
401
401
  dstack/_internal/server/services/gateways/connection.py,sha256=ot3lV85XdmCT45vBWeyj57nLPcLPNm316zu3jMyeWjA,5625
402
402
  dstack/_internal/server/services/gateways/pool.py,sha256=0LclTl1tyx-doS78LeaAKjr-SMp98zuwh5f9s06JSd0,1914
403
- dstack/_internal/server/services/jobs/__init__.py,sha256=GU3vMC0SZKyvL564A7t_QRoDjf83-8GsUkguDWK5x6c,25578
403
+ dstack/_internal/server/services/jobs/__init__.py,sha256=hoQsjkUWdJ8xsO03WRwKOX-sHJuhVfsX-1rl26nQwR0,25554
404
404
  dstack/_internal/server/services/jobs/configurators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
405
- dstack/_internal/server/services/jobs/configurators/base.py,sha256=kgCbEom7hGPunrUxXI0NjXGlTdNq_Q27u56lrExDnT8,11390
405
+ dstack/_internal/server/services/jobs/configurators/base.py,sha256=WLRIBM50P8mfvpotzYjK3Gtf5ScQsuijGieH_zaYqCg,11984
406
406
  dstack/_internal/server/services/jobs/configurators/dev.py,sha256=ufN6Sd8TwIsjQYNZE32fkAqJI7o2zjgoZThbrP-bd7U,2378
407
407
  dstack/_internal/server/services/jobs/configurators/service.py,sha256=FOWrLE-6YFSMuGqjOwYTLMV4FuIM5lCMDFjS0l0CoLI,929
408
408
  dstack/_internal/server/services/jobs/configurators/task.py,sha256=0-B3oO-61Eq4-mmlLmqJPliFKHhvvIV0tqc12slcQuA,1436
409
409
  dstack/_internal/server/services/jobs/configurators/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
410
410
  dstack/_internal/server/services/jobs/configurators/extensions/base.py,sha256=xJbHxaaSJ1zjn8zuuApP1Xt2uBaedPhhc-IY0NtDDJQ,418
411
- dstack/_internal/server/services/jobs/configurators/extensions/cursor.py,sha256=00HB1kC_eMlioEW0nZI7Ly78b-RSehySVNhC9pajBP8,1636
412
- dstack/_internal/server/services/jobs/configurators/extensions/vscode.py,sha256=DAj8OEVLyL1x8Jko2EXKhnAkcSnlO1sJk6o6eiiVkDI,1611
411
+ dstack/_internal/server/services/jobs/configurators/extensions/cursor.py,sha256=r6Cgdd-P5C63xXyrqC6E0yNKIeTX6KabRLO92VEpJRY,1719
412
+ dstack/_internal/server/services/jobs/configurators/extensions/vscode.py,sha256=WRg_jqi4eSqbs3XRVASMFF7OQHYRDtVBNn6NCroJY1I,1694
413
413
  dstack/_internal/server/services/logs/__init__.py,sha256=NAjO1KeYvuDznN2EkfAaJt9S6Y00fo_dl3ob3WmsdGQ,3088
414
414
  dstack/_internal/server/services/logs/aws.py,sha256=MuRVGgYwkh0TA11Y2H0upSj56-k_Bs-vT_oa2X-5yZE,13834
415
415
  dstack/_internal/server/services/logs/base.py,sha256=7eCB6SPF9iWviv4vZ_34SvfM_Bvi9DeVj1t7TxmrXKs,1273
@@ -454,10 +454,10 @@ dstack/_internal/server/statics/e467d7d60aae81ab198b.svg,sha256=_XHc9mfQZgGkcy4h
454
454
  dstack/_internal/server/statics/eb9b344b73818fe2b71a.png,sha256=2H14eOCQRyZhFGJ1Kn2LH1j70kTF1Qop4vH-tiKqyPI,85
455
455
  dstack/_internal/server/statics/f517dd626eb964120de0.png,sha256=4QQuNa8SqmcZ67HK6739OHCyjnAJseU1bkcn454KRQs,159
456
456
  dstack/_internal/server/statics/f958aecddee5d8e3222c.png,sha256=8CoZkVNgRfOAe62X1dU-AZDvwh_nESKaQblEmaX2Xrs,87
457
- dstack/_internal/server/statics/index.html,sha256=UmT1blYXopnvIglSx7EM67YQYx-Wpx5jrXL37UvSJqM,10468
457
+ dstack/_internal/server/statics/index.html,sha256=WcJyCA-G5vPq0xyJH8UcyEdw-df77u9C_3S0EdfxvT8,10468
458
+ dstack/_internal/server/statics/main-5b9786c955b42bf93581.js,sha256=zhAnUUbO4YDnSGFJ77XNOIraIcw19ov7gokS2DLhy9E,6523313
459
+ dstack/_internal/server/statics/main-5b9786c955b42bf93581.js.map,sha256=6SX5ZigfpMVtB3xLBJb4IME1ifg1IwqsyMy8NKTSiq8,8561465
458
460
  dstack/_internal/server/statics/main-8f9c66f404e9c7e7e020.css,sha256=RC2sAxRMpIK3myvsxKEhLk4OsxTOt7DgWunCwyn-B34,1336694
459
- dstack/_internal/server/statics/main-b4803049eac16aea9a49.js,sha256=uk2mEKXEKDP5nWO6cjSGK0GUh63YbvSBCgHCiengeKk,6521276
460
- dstack/_internal/server/statics/main-b4803049eac16aea9a49.js.map,sha256=tDM8-Gh0SsJV87gQICQKhrvprc5eb33M4OCpLGa982c,8559017
461
461
  dstack/_internal/server/statics/manifest.json,sha256=430w2BoWVmYYVr14lDvUxx-ROPt3VjigzeMqfLeiSCM,340
462
462
  dstack/_internal/server/statics/robots.txt,sha256=kNJLw79pisHhc3OVAimMzKcq3x9WT6sF9IS4xI0crdI,67
463
463
  dstack/_internal/server/statics/assets/android-chrome-144x144.png,sha256=tB3V-95O-VVEoawN5V1XFoMQRSK0I6gthraV8bATGaw,23414
@@ -584,8 +584,12 @@ dstack/plugins/__init__.py,sha256=buT1pcyORLgVbl89ATkRWJPhvejriVz7sNBjvuZRCRE,40
584
584
  dstack/plugins/_base.py,sha256=-etiB-EozaJCg2wtmONfj8ic-K03qXvXyl_TIDp-kNE,2662
585
585
  dstack/plugins/_models.py,sha256=1Gw--mDQ1_0FFr9Zur9LE8UbMoWESUpTdHHt12AyIZo,341
586
586
  dstack/plugins/_utils.py,sha256=FqeWYb7zOrgZkO9Bd8caL5I81_TUEsysIzvxsULrmzk,392
587
- dstack-0.19.10.dist-info/METADATA,sha256=kOxSPHWY8taNRczMVwanWtP_p-0KmFJbOSE7vCKQsKk,20509
588
- dstack-0.19.10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
589
- dstack-0.19.10.dist-info/entry_points.txt,sha256=GnLrMS8hx3rWAySQjA7tPNhtixV6a-brRkmal1PKoHc,58
590
- dstack-0.19.10.dist-info/licenses/LICENSE.md,sha256=qDABaRGjSKVOib1U8viw2P_96sIK7Puo426784oD9f8,15976
591
- dstack-0.19.10.dist-info/RECORD,,
587
+ dstack/plugins/builtin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
588
+ dstack/plugins/builtin/rest_plugin/__init__.py,sha256=lgTsq8Z6Km2F2UhPRChVB4vDM5ZpWtdk1iB1aa20ypA,440
589
+ dstack/plugins/builtin/rest_plugin/_models.py,sha256=9hgVuU6OGSxidar88XhQnNo9izYWeQvVH45ciErv-Es,1910
590
+ dstack/plugins/builtin/rest_plugin/_plugin.py,sha256=LbtjnXqd-51pR19Cr5rYxoIyDKjSOG4hIpXmv1Mpfnc,4615
591
+ dstack-0.19.11.dist-info/METADATA,sha256=WdGEI1rw_aam9NPXPRqXLnFna175U_PlkuWYbwBJoUE,20477
592
+ dstack-0.19.11.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
593
+ dstack-0.19.11.dist-info/entry_points.txt,sha256=GnLrMS8hx3rWAySQjA7tPNhtixV6a-brRkmal1PKoHc,58
594
+ dstack-0.19.11.dist-info/licenses/LICENSE.md,sha256=qDABaRGjSKVOib1U8viw2P_96sIK7Puo426784oD9f8,15976
595
+ dstack-0.19.11.dist-info/RECORD,,