dstack 0.19.15rc1__py3-none-any.whl → 0.19.16__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 dstack might be problematic. Click here for more details.

Files changed (57) hide show
  1. dstack/_internal/core/backends/cloudrift/__init__.py +0 -0
  2. dstack/_internal/core/backends/cloudrift/api_client.py +208 -0
  3. dstack/_internal/core/backends/cloudrift/backend.py +16 -0
  4. dstack/_internal/core/backends/cloudrift/compute.py +138 -0
  5. dstack/_internal/core/backends/cloudrift/configurator.py +66 -0
  6. dstack/_internal/core/backends/cloudrift/models.py +40 -0
  7. dstack/_internal/core/backends/configurators.py +9 -0
  8. dstack/_internal/core/backends/models.py +7 -0
  9. dstack/_internal/core/compatibility/logs.py +15 -0
  10. dstack/_internal/core/compatibility/runs.py +2 -0
  11. dstack/_internal/core/models/backends/base.py +2 -0
  12. dstack/_internal/core/models/configurations.py +22 -2
  13. dstack/_internal/core/models/logs.py +2 -1
  14. dstack/_internal/core/models/runs.py +10 -1
  15. dstack/_internal/server/background/tasks/process_fleets.py +1 -1
  16. dstack/_internal/server/background/tasks/process_gateways.py +1 -1
  17. dstack/_internal/server/background/tasks/process_instances.py +1 -1
  18. dstack/_internal/server/background/tasks/process_placement_groups.py +1 -1
  19. dstack/_internal/server/background/tasks/process_running_jobs.py +1 -1
  20. dstack/_internal/server/background/tasks/process_runs.py +21 -2
  21. dstack/_internal/server/background/tasks/process_submitted_jobs.py +10 -4
  22. dstack/_internal/server/background/tasks/process_terminating_jobs.py +2 -2
  23. dstack/_internal/server/background/tasks/process_volumes.py +1 -1
  24. dstack/_internal/server/routers/gateways.py +6 -3
  25. dstack/_internal/server/routers/projects.py +63 -0
  26. dstack/_internal/server/routers/prometheus.py +5 -5
  27. dstack/_internal/server/schemas/logs.py +10 -1
  28. dstack/_internal/server/schemas/projects.py +12 -0
  29. dstack/_internal/server/security/permissions.py +75 -2
  30. dstack/_internal/server/services/fleets.py +1 -1
  31. dstack/_internal/server/services/gateways/__init__.py +1 -1
  32. dstack/_internal/server/services/jobs/configurators/base.py +7 -1
  33. dstack/_internal/server/services/logs/aws.py +38 -38
  34. dstack/_internal/server/services/logs/filelog.py +48 -14
  35. dstack/_internal/server/services/logs/gcp.py +17 -16
  36. dstack/_internal/server/services/projects.py +164 -5
  37. dstack/_internal/server/services/prometheus/__init__.py +0 -0
  38. dstack/_internal/server/services/prometheus/client_metrics.py +52 -0
  39. dstack/_internal/server/services/runs.py +3 -3
  40. dstack/_internal/server/services/services/__init__.py +2 -1
  41. dstack/_internal/server/services/users.py +1 -3
  42. dstack/_internal/server/services/volumes.py +1 -1
  43. dstack/_internal/server/statics/index.html +1 -1
  44. dstack/_internal/server/statics/{main-0ac1e1583684417ae4d1.js → main-a4eafa74304e587d037c.js} +51 -43
  45. dstack/_internal/server/statics/{main-0ac1e1583684417ae4d1.js.map → main-a4eafa74304e587d037c.js.map} +1 -1
  46. dstack/_internal/server/statics/{main-f39c418b05fe14772dd8.css → main-f53d6d0d42f8d61df1de.css} +1 -1
  47. dstack/_internal/settings.py +1 -0
  48. dstack/api/_public/runs.py +6 -5
  49. dstack/api/server/_logs.py +5 -1
  50. dstack/api/server/_projects.py +24 -0
  51. dstack/version.py +1 -1
  52. {dstack-0.19.15rc1.dist-info → dstack-0.19.16.dist-info}/METADATA +1 -1
  53. {dstack-0.19.15rc1.dist-info → dstack-0.19.16.dist-info}/RECORD +57 -48
  54. /dstack/_internal/server/services/{prometheus.py → prometheus/custom_metrics.py} +0 -0
  55. {dstack-0.19.15rc1.dist-info → dstack-0.19.16.dist-info}/WHEEL +0 -0
  56. {dstack-0.19.15rc1.dist-info → dstack-0.19.16.dist-info}/entry_points.txt +0 -0
  57. {dstack-0.19.15rc1.dist-info → dstack-0.19.16.dist-info}/licenses/LICENSE.md +0 -0
@@ -17,6 +17,7 @@ DSTACK_BASE_IMAGE_VERSION = os.getenv("DSTACK_BASE_IMAGE_VERSION", version.base_
17
17
  DSTACK_BASE_IMAGE_UBUNTU_VERSION = os.getenv(
18
18
  "DSTACK_BASE_IMAGE_UBUNTU_VERSION", version.base_image_ubuntu_version
19
19
  )
20
+ DSTACK_DIND_IMAGE = os.getenv("DSTACK_DIND_IMAGE", "dstackai/dind")
20
21
 
21
22
 
22
23
  class FeatureFlags:
@@ -204,25 +204,26 @@ class Run(ABC):
204
204
  job = self._find_job(replica_num=replica_num, job_num=job_num)
205
205
  if job is None:
206
206
  return []
207
- next_start_time = start_time
207
+ next_token = None
208
208
  while True:
209
209
  resp = self._api_client.logs.poll(
210
210
  project_name=self._project,
211
211
  body=PollLogsRequest(
212
212
  run_name=self.name,
213
213
  job_submission_id=job.job_submissions[-1].id,
214
- start_time=next_start_time,
214
+ start_time=start_time,
215
215
  end_time=None,
216
216
  descending=False,
217
217
  limit=1000,
218
218
  diagnose=diagnose,
219
+ next_token=next_token,
219
220
  ),
220
221
  )
221
- if len(resp.logs) == 0:
222
- return []
223
222
  for log in resp.logs:
224
223
  yield base64.b64decode(log.message)
225
- next_start_time = resp.logs[-1].timestamp
224
+ next_token = resp.next_token
225
+ if next_token is None:
226
+ break
226
227
 
227
228
  def refresh(self):
228
229
  """
@@ -1,5 +1,6 @@
1
1
  from pydantic import parse_obj_as
2
2
 
3
+ from dstack._internal.core.compatibility.logs import get_poll_logs_excludes
3
4
  from dstack._internal.core.models.logs import JobSubmissionLogs
4
5
  from dstack._internal.server.schemas.logs import PollLogsRequest
5
6
  from dstack.api.server._group import APIClientGroup
@@ -7,5 +8,8 @@ from dstack.api.server._group import APIClientGroup
7
8
 
8
9
  class LogsAPIClient(APIClientGroup):
9
10
  def poll(self, project_name: str, body: PollLogsRequest) -> JobSubmissionLogs:
10
- resp = self._request(f"/api/project/{project_name}/logs/poll", body=body.json())
11
+ resp = self._request(
12
+ f"/api/project/{project_name}/logs/poll",
13
+ body=body.json(exclude=get_poll_logs_excludes(body)),
14
+ )
11
15
  return parse_obj_as(JobSubmissionLogs.__response__, resp.json())
@@ -3,10 +3,13 @@ from typing import List
3
3
  from pydantic import parse_obj_as
4
4
 
5
5
  from dstack._internal.core.models.projects import Project
6
+ from dstack._internal.core.models.users import ProjectRole
6
7
  from dstack._internal.server.schemas.projects import (
8
+ AddProjectMemberRequest,
7
9
  CreateProjectRequest,
8
10
  DeleteProjectsRequest,
9
11
  MemberSetting,
12
+ RemoveProjectMemberRequest,
10
13
  SetProjectMembersRequest,
11
14
  )
12
15
  from dstack.api.server._group import APIClientGroup
@@ -34,3 +37,24 @@ class ProjectsAPIClient(APIClientGroup):
34
37
  body = SetProjectMembersRequest(members=members)
35
38
  resp = self._request(f"/api/projects/{project_name}/set_members", body=body.json())
36
39
  return parse_obj_as(Project.__response__, resp.json())
40
+
41
+ def add_member(self, project_name: str, username: str, project_role: ProjectRole) -> Project:
42
+ member_setting = MemberSetting(username=username, project_role=project_role)
43
+ body = AddProjectMemberRequest(members=[member_setting])
44
+ resp = self._request(f"/api/projects/{project_name}/add_members", body=body.json())
45
+ return parse_obj_as(Project.__response__, resp.json())
46
+
47
+ def add_members(self, project_name: str, members: List[MemberSetting]) -> Project:
48
+ body = AddProjectMemberRequest(members=members)
49
+ resp = self._request(f"/api/projects/{project_name}/add_members", body=body.json())
50
+ return parse_obj_as(Project.__response__, resp.json())
51
+
52
+ def remove_member(self, project_name: str, username: str) -> Project:
53
+ body = RemoveProjectMemberRequest(usernames=[username])
54
+ resp = self._request(f"/api/projects/{project_name}/remove_members", body=body.json())
55
+ return parse_obj_as(Project.__response__, resp.json())
56
+
57
+ def remove_members(self, project_name: str, usernames: List[str]) -> Project:
58
+ body = RemoveProjectMemberRequest(usernames=usernames)
59
+ resp = self._request(f"/api/projects/{project_name}/remove_members", body=body.json())
60
+ return parse_obj_as(Project.__response__, resp.json())
dstack/version.py CHANGED
@@ -1,4 +1,4 @@
1
- __version__ = "0.19.15rc1"
1
+ __version__ = "0.19.16"
2
2
  __is_release__ = True
3
3
  base_image = "0.10"
4
4
  base_image_ubuntu_version = "22.04"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dstack
3
- Version: 0.19.15rc1
3
+ Version: 0.19.16
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
@@ -1,8 +1,8 @@
1
1
  dstack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- dstack/version.py,sha256=FyZR2pNzdnR7Z385j--i8IZGCkQWzBIhLuPjA-KcwbA,105
2
+ dstack/version.py,sha256=l4VG9XatLyzeZvnOByb8CNgiIJabgI25lw5qJ7Sx130,102
3
3
  dstack/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  dstack/_internal/compat.py,sha256=bF9U9fTMfL8UVhCouedoUSTYFl7UAOiU0WXrnRoByxw,40
5
- dstack/_internal/settings.py,sha256=aB4wf5_ISiTQILZYky2VtAy0BvAP_yD0TxaHxuzYmBA,1075
5
+ dstack/_internal/settings.py,sha256=024Q8_hgyiO-e11wl648lDOtuQBvWAtY_5Yw-PHBmT0,1143
6
6
  dstack/_internal/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  dstack/_internal/cli/main.py,sha256=cuOcaRxeWxO7zYM9dFRe5uc6U_RxEFjzS5sd4-8KkFA,3798
8
8
  dstack/_internal/cli/commands/__init__.py,sha256=e8EjD8Ej7Q3_APlxAN7NBwY7dGnW-DR91nH_RgcjBXg,2023
@@ -46,8 +46,8 @@ dstack/_internal/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
46
46
  dstack/_internal/core/consts.py,sha256=c1Yd5UY6Qx7KeuYgloXWncWhMsYj6TqwlElda7NtB98,254
47
47
  dstack/_internal/core/errors.py,sha256=tJcZXwrvWvvtzIqkzLxJJMrhDuAQl8eOk0xpKCqqHzw,3313
48
48
  dstack/_internal/core/backends/__init__.py,sha256=fwgV8CN8Ap6MZmWklMGHHf0roliBtqne-ijjVOpWcgc,2467
49
- dstack/_internal/core/backends/configurators.py,sha256=JxGfZwcmL90akMFkAzzZ_fzPvU2No0pBaBqU_g0D-y0,3775
50
- dstack/_internal/core/backends/models.py,sha256=aKQOrDEStouuwY4MacSen7SkoyAa6HR6a6PFq5-cbNk,4088
49
+ dstack/_internal/core/backends/configurators.py,sha256=7LFad72b6zdzzDRaFUaQrJLf6PxGRsxR3tfyn15rQbA,3976
50
+ dstack/_internal/core/backends/models.py,sha256=byP6YFXQHbkOyuX8MxwRvPfjtk87o9oCefR8U-lvsAI,4319
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
@@ -69,6 +69,12 @@ dstack/_internal/core/backends/base/compute.py,sha256=D4rRxUHUZOkUfAhmDE6MaS4AyH
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=2BARohq0sJk0a9K0Z4OuIbpIQNSSq8ZTzAnO8pCxO4M,6228
72
+ dstack/_internal/core/backends/cloudrift/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ dstack/_internal/core/backends/cloudrift/api_client.py,sha256=oGIFJ3FiNVl5BvAlY_6SSWaUcQbg5pbjPf4jeixivmo,7565
74
+ dstack/_internal/core/backends/cloudrift/backend.py,sha256=Jz3nIQsa3TnMISVXK6EU43O0B7FgIMxwwaEBmd_s5BY,596
75
+ dstack/_internal/core/backends/cloudrift/compute.py,sha256=fmCaUliSRKDjAPT8YFwX-7xSk0eMnxryFsDBFBcS7VQ,5141
76
+ dstack/_internal/core/backends/cloudrift/configurator.py,sha256=wZ4HswqGeK0sffcbGvfNPIAdT_VsOt1ZKN7UXZ4WliI,2331
77
+ dstack/_internal/core/backends/cloudrift/models.py,sha256=tFpcG68OghznpzmspjdnlVEWY_GDvFPt_d41p9ceLrk,1119
72
78
  dstack/_internal/core/backends/cudo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
79
  dstack/_internal/core/backends/cudo/api_client.py,sha256=ygq1Gx7ZvwKaifdXtvzDSw4xR4ZH6UWd5J47BjuaGh0,3685
74
80
  dstack/_internal/core/backends/cudo/backend.py,sha256=i13YoAkUfIStc3Yyyt_3YmL30eVrKtrhwnE9_B1iBRI,546
@@ -156,23 +162,24 @@ dstack/_internal/core/backends/vultr/models.py,sha256=TkqK_lW6w5k_7wsoFiKDb6NXuT
156
162
  dstack/_internal/core/compatibility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
157
163
  dstack/_internal/core/compatibility/fleets.py,sha256=Ndrib4Wtam-az1o2O4unBrSj3MpNwIBfU3Q8uSPNGHc,2674
158
164
  dstack/_internal/core/compatibility/gateways.py,sha256=gMAHSyhStn1ij51efEhEpUCZg7y8FPeppNITUctJqyU,1284
159
- dstack/_internal/core/compatibility/runs.py,sha256=6ZgT8Iu6KzBbyoKPWDv5e-cyK7xgWZAZBFGbooGs2oE,6017
165
+ dstack/_internal/core/compatibility/logs.py,sha256=ETqp59CXRocZrJ34L1nYQ_WfJN24I9AV03tXxWjyEho,522
166
+ dstack/_internal/core/compatibility/runs.py,sha256=BDN0Vbbtkw94GEu-L_79J3ezTThftoNSvnLGOjmUelk,6102
160
167
  dstack/_internal/core/compatibility/volumes.py,sha256=WVsnAh3pWEkytFWp9irV4QPfkXCH-rfAUOcye7XDoDs,1252
161
168
  dstack/_internal/core/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
162
169
  dstack/_internal/core/models/common.py,sha256=XWd79dmFGMrdpTcStH5fVmNXCKE0s7FsIorPL0saQ8w,2138
163
170
  dstack/_internal/core/models/config.py,sha256=JJ7rT7dztzTWCY5TkoyxXxTvG5D4IFYhGe7EzwkLOWQ,581
164
- dstack/_internal/core/models/configurations.py,sha256=PA_u1gdTBCwKKIiGo7tH95Wv_ZZYX89mTCBOKs5cYko,19069
171
+ dstack/_internal/core/models/configurations.py,sha256=lYbVQC6Kz3rA3c1pmfdRi-B53kZF5R_jACUthvQg4qU,20004
165
172
  dstack/_internal/core/models/envs.py,sha256=yq84YRFBILOy4x3XnGcTgYpbZ69eFTCQPgBCr9Ndov4,4969
166
173
  dstack/_internal/core/models/fleets.py,sha256=aqDVlZMc71NjLrzwBF3qz-dHzocQT5Qip7QWl8ZbKuA,12263
167
174
  dstack/_internal/core/models/gateways.py,sha256=_O8EWwHWLdgNoWY4P4u71KM-uEr5DDp42LXfyv1qMDI,4054
168
175
  dstack/_internal/core/models/instances.py,sha256=Vwh-D3WB_NBdG_1BPHBEaX60n4MtYksN2gf7zA-icYs,6642
169
- dstack/_internal/core/models/logs.py,sha256=Lsmtd_NrnChMjBJahUZpFb1j8Xobix9FHWf1L47FOGs,443
176
+ dstack/_internal/core/models/logs.py,sha256=vCMJFnebmTk5chodUQvghsyT1Funir1-InAcDHr-M68,483
170
177
  dstack/_internal/core/models/metrics.py,sha256=Xb8hCXUL-ncQ3PMsErIUAJTe9gwh5jyrQ4UQoZbibsc,269
171
178
  dstack/_internal/core/models/placement.py,sha256=WJVq5ENJykyRarQzL2EeYQag_9_jV7VSAtR_xoFvPVM,720
172
179
  dstack/_internal/core/models/profiles.py,sha256=SSbslQfKoa6Sg8A_Z26xDNTujGZc51we11G5rlqfBpY,11659
173
180
  dstack/_internal/core/models/projects.py,sha256=HmmlrvUSSEjfGfX7X5tmGJ-CbKeyGK6shHD5OghDNks,671
174
181
  dstack/_internal/core/models/resources.py,sha256=rsf6hAhi5bfSb_Z9VcS3UoEG0G8Ohl6ekyrOStLOAqw,14114
175
- dstack/_internal/core/models/runs.py,sha256=sq3kxtidqKIzNIgauiKoViJVbQ5K6ah6R8JQVoxZVnA,23269
182
+ dstack/_internal/core/models/runs.py,sha256=LqZWEfHyNvWf3-7wy8OgEIyZcTEic5pjp2PC3V8BcNc,23605
176
183
  dstack/_internal/core/models/secrets.py,sha256=IQyemsNpSzqOCB-VlVTuc4gyPFmXXO4mhko0Ur0ey3I,221
177
184
  dstack/_internal/core/models/server.py,sha256=Hkc1v2s3KOiwslsWVmhUOAzcSeREoG-HD1SzSX9WUGg,152
178
185
  dstack/_internal/core/models/services.py,sha256=2Hpi7j0Q1shaf_0wd0C0044AJAmuYi-D3qx3PH849oI,3076
@@ -180,7 +187,7 @@ dstack/_internal/core/models/unix.py,sha256=KxnSQELnkAjjuUgYcQKVkf-UAbYREBD8WCWD
180
187
  dstack/_internal/core/models/users.py,sha256=o_rd0GAmd6jufypVUs9P12NRri3rgAPDt-KxnqNNsGw,703
181
188
  dstack/_internal/core/models/volumes.py,sha256=WBqG6zNt0iE9ZqhoaBCdfkZsM9R-khJWWQEE_ImcGNY,6707
182
189
  dstack/_internal/core/models/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
- dstack/_internal/core/models/backends/base.py,sha256=Fbhs90NBMceXhjORwj7c2_pVriapCGSUMBFwuR-wRIg,1091
190
+ dstack/_internal/core/models/backends/base.py,sha256=4Y76IaLImBF8heXmmMKBL7APM0zzX20NkXRDbS0322g,1162
184
191
  dstack/_internal/core/models/repos/__init__.py,sha256=7Qo1QgJ852LklUuM-mlCNFodp_XrQ4iqV7uRPiX_qm0,885
185
192
  dstack/_internal/core/models/repos/base.py,sha256=nErlSR3AbG9fwDE5vuJK5DIrP8JB3fG8a7mXqosJ9gY,846
186
193
  dstack/_internal/core/models/repos/local.py,sha256=zKnEOyN7hSDQ7EKn8q9aJ3uikiTTtGdGEN_3896HTTc,2913
@@ -261,17 +268,17 @@ dstack/_internal/server/settings.py,sha256=7f2ur03yIElq2y6XvRtWMSOWWycx1jQMqCjks
261
268
  dstack/_internal/server/background/__init__.py,sha256=8kTbhEHCeXTibsOlHY1HwqIO6gGb4q8fUa2fcDrah1c,3893
262
269
  dstack/_internal/server/background/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
263
270
  dstack/_internal/server/background/tasks/common.py,sha256=N7xSXbf2MoBWgbJ1e3AEzYBTf1Gn-pDXYND8Zr_YCJQ,970
264
- dstack/_internal/server/background/tasks/process_fleets.py,sha256=LsD3I7iCbQs_nexJ1kfnn1VPz3BffFmALRgpk5DHGO4,2985
265
- dstack/_internal/server/background/tasks/process_gateways.py,sha256=hoUI1CSqbHt_uMwnzTRAEDl-LBw0wUk_W4xobIbdvRc,7017
266
- dstack/_internal/server/background/tasks/process_instances.py,sha256=E1NLac4ubiF6jUr9M7rj8cjQf4zFZCBVr428UBgFeGI,42855
271
+ dstack/_internal/server/background/tasks/process_fleets.py,sha256=IgZcNHPl_qG22SrQvVR2rrPPDclWT06kE4agjVWhSMM,3001
272
+ dstack/_internal/server/background/tasks/process_gateways.py,sha256=C76dfaeCoiyhfmnFrY4gmNKy8IoY4P9-4kjo37xqeH8,7033
273
+ dstack/_internal/server/background/tasks/process_instances.py,sha256=iOdRCG8K7PnTPfl2Ya2rTuSz01jo6B97OkstBvrb918,42871
267
274
  dstack/_internal/server/background/tasks/process_metrics.py,sha256=aJPHnmKQE19JVxJVwGFyyK7buUcbp9Smw9CkFO2DPAk,6135
268
- dstack/_internal/server/background/tasks/process_placement_groups.py,sha256=gJ8Um3Vx-brazHVWdtVXPnov4rwvDr-0Vn1Voq1cYBQ,4108
275
+ dstack/_internal/server/background/tasks/process_placement_groups.py,sha256=SQ9DaZHC18d6koRQf2UxuDV9-gxIUJIvhLnuclodIeQ,4124
269
276
  dstack/_internal/server/background/tasks/process_prometheus_metrics.py,sha256=9VoGFqdiXcVkCi_NV1VqQdqllDkB0bHIqOHKMIZK1Fg,5183
270
- dstack/_internal/server/background/tasks/process_running_jobs.py,sha256=s8vdO2LiBLhStCmZ06lpXUuJKkrQq9BfV7QY7lc0TSo,39264
271
- dstack/_internal/server/background/tasks/process_runs.py,sha256=jVKkhUic91OaSLoGo1ZDKeZninl0usuJz8l36F8HWPc,20980
272
- dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=tLLpdtLHN2xC6Ohc6f0we3oevw3pBt0_XrsufaFtIvE,27383
273
- dstack/_internal/server/background/tasks/process_terminating_jobs.py,sha256=0Z3Q409RwSxOL_pgK8JktBthjtESEUH3ahwTLsTdYPk,3800
274
- dstack/_internal/server/background/tasks/process_volumes.py,sha256=206rbT4ICeZtEmqh_94Rry_fgHfFLLaSEX9W-svwFk4,5089
277
+ dstack/_internal/server/background/tasks/process_running_jobs.py,sha256=KPPpLLtl0XyfOusZ5zG-wVmTA83GDVDQqb5AgYfvEJI,39280
278
+ dstack/_internal/server/background/tasks/process_runs.py,sha256=WQrzQuaSI8b6hC9JAdsPINZm_NVkCNg1QkIxt10R8dw,21962
279
+ dstack/_internal/server/background/tasks/process_submitted_jobs.py,sha256=FLThK7Xdf4llGbRyfNZEdoewX33zB7R4EVgqOqRo6Xs,27635
280
+ dstack/_internal/server/background/tasks/process_terminating_jobs.py,sha256=QrlLMrTFrdc5-YdK6lwlD4V9E_KVJPp-LDT2z0Ahk00,3832
281
+ dstack/_internal/server/background/tasks/process_volumes.py,sha256=TqeGVu4h-bcOTKgQ5C8r3rDb39DetTHS6sLXPWnaVI0,5105
275
282
  dstack/_internal/server/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
276
283
  dstack/_internal/server/migrations/env.py,sha256=RuhcN-CST86VzMatjqBMdYcG0fGGMZl_o1YgZTL-WDw,2831
277
284
  dstack/_internal/server/migrations/script.py.mako,sha256=Xi-IcoSN51tKWbAq1-nNVX7j6_89mf9AuX9DjnqUO_o,574
@@ -348,12 +355,12 @@ dstack/_internal/server/migrations/versions/ffa99edd1988_add_jobterminationreaso
348
355
  dstack/_internal/server/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
349
356
  dstack/_internal/server/routers/backends.py,sha256=vSCP-wbH-fsoKDR1TrMyQCz5UA-biiY0Lo7ERVz_L_g,4684
350
357
  dstack/_internal/server/routers/fleets.py,sha256=ikXeJ7phoVocU3i-_S6V5RIMygjh-KHuhEIAS5Cw1wo,5565
351
- dstack/_internal/server/routers/gateways.py,sha256=K_VG5Dt_2F_cykWjtFj4GBwtm_D3xfsE3Bf-lDgQx_w,3171
358
+ dstack/_internal/server/routers/gateways.py,sha256=CFqfwX9VHsjFCaDblh80T8LaoV6RMHd3EZ-QDDXu5cY,3226
352
359
  dstack/_internal/server/routers/instances.py,sha256=XOogTC9My2Zv0ck37_PbHKoZI-j4QeGrP2sN5wpX7Ow,1579
353
360
  dstack/_internal/server/routers/logs.py,sha256=_Euk283LbhlwHibJTKM-7YcpbeQFtWBqMfbOry3PSkU,1159
354
361
  dstack/_internal/server/routers/metrics.py,sha256=VFgWhkOvxVFDLlRM_kXHYFylLcfCD6UjXInvcd7H4dY,2314
355
- dstack/_internal/server/routers/projects.py,sha256=MIXqjfx7vY-uS2EPpVqSvAk6oUF6OwSvvujHKavo0Hc,2790
356
- dstack/_internal/server/routers/prometheus.py,sha256=uKXEDP8jozzK0SdXjiKV1Xc6b0LLWwVm-tMneKWMXcM,1099
362
+ dstack/_internal/server/routers/projects.py,sha256=lk1xDz02GSzgIC6nG9eJQ62WIB6UffhUsiR1OaY6mBU,4571
363
+ dstack/_internal/server/routers/prometheus.py,sha256=INRxPLYVJ6CTm2AwtSJ1z455RiCOpPJ3rbXMKGonGm8,1109
357
364
  dstack/_internal/server/routers/repos.py,sha256=Si27qslFefmvRBuR2khvuFyjpd88-Hys-pvIbi9YJK0,3943
358
365
  dstack/_internal/server/routers/runs.py,sha256=p44c_0bqwG1v5S_qX-HKbap1nmk1F2JVqaIXihjiUfY,5388
359
366
  dstack/_internal/server/routers/secrets.py,sha256=50_qJCTYRpnGSlLyS93gqoV17wWewOVmM65PcG1bT_Y,856
@@ -366,8 +373,8 @@ dstack/_internal/server/schemas/common.py,sha256=FCt3EwntxkykIK8ykKATmJM_gq3X3js
366
373
  dstack/_internal/server/schemas/fleets.py,sha256=9JcKe8VQM6p705lsgrp0xO08aTC32R88BJah7vZ-LgM,1101
367
374
  dstack/_internal/server/schemas/gateways.py,sha256=wrLQgSFkpxf-pijeyl2UjR8SpQXVshal6pW8wZf73Yk,1142
368
375
  dstack/_internal/server/schemas/instances.py,sha256=MedAVbKa_1F9zhdSPrjMmL-Og5Dp0cxxvfApKj29194,431
369
- dstack/_internal/server/schemas/logs.py,sha256=JGt39fBEFRjHhlGT1jIC6kwQhujxPO8uecjplzjTZXY,402
370
- dstack/_internal/server/schemas/projects.py,sha256=clcWvGdufczeh3ZazWME7AEz79MSWZulYDnq1b6PNKk,594
376
+ dstack/_internal/server/schemas/logs.py,sha256=IMuyFt4ZcSBE4RtQ0X_gd49BDd5QXzq-SpREA9xVrRw,739
377
+ dstack/_internal/server/schemas/projects.py,sha256=sXm9KMecLYaLemE4rPr8MzvlkHvpwzawmL5GNB87wuY,804
371
378
  dstack/_internal/server/schemas/repos.py,sha256=Sit0Tqol79VOMGGp8ncZXLLsZ4INcF-pAA_jwRchYqA,666
372
379
  dstack/_internal/server/schemas/runner.py,sha256=CqlP90yvPKaavAqxLOxewIMq3cHeT_NWfR0YO81JfU0,5151
373
380
  dstack/_internal/server/schemas/runs.py,sha256=XhlTnn67g4NWVmIJFQdy2yPK_EcnSIYOCCSex0XOIes,1341
@@ -375,11 +382,11 @@ dstack/_internal/server/schemas/secrets.py,sha256=mfqLSM7PqxVQ-GIWB6RfPRUOvSvvaR
375
382
  dstack/_internal/server/schemas/users.py,sha256=FuDqwRVe3mOmv497vOZKjI0a_d4Wt2g4ZiCJcyfHEKA,495
376
383
  dstack/_internal/server/schemas/volumes.py,sha256=9iwaQLMhA6aj9XmtdU_9jWVhpzNOtFbDByAe-WYfYh0,673
377
384
  dstack/_internal/server/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
378
- dstack/_internal/server/security/permissions.py,sha256=xFbvMvAIVJGvTHvAJiRB0poK29IpeNdUXR0kT2ljrDA,5994
385
+ dstack/_internal/server/security/permissions.py,sha256=7lWM9jiNt-6cMms6t5g9Fn0H3B3-MEJ7gDCtL7xZ9Lg,8187
379
386
  dstack/_internal/server/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
380
387
  dstack/_internal/server/services/config.py,sha256=yo8njslwfS7_blhbPPhOtzCMyg8N_mmFSw5aPvirSzw,10691
381
388
  dstack/_internal/server/services/docker.py,sha256=zAvjFHxIP03Td92NzbGEScz0piLjloE60tQ7vz0AeCA,5328
382
- dstack/_internal/server/services/fleets.py,sha256=9UL9mHo0IJhYrxiFHQUaLUA61PAQQ8gGwYNHpknlVqU,26599
389
+ dstack/_internal/server/services/fleets.py,sha256=uzufBa8nHJZDkYjzgse40E1ctCt-g_rUGJFd6ra2Mc0,26613
383
390
  dstack/_internal/server/services/instances.py,sha256=4feu9RfixOIVsLoFPHiYYUe0L6sf3v3h1asTBSF5cyc,18686
384
391
  dstack/_internal/server/services/locking.py,sha256=7JUgNSplKRx7dxC4LIpmWw81agUtslEDTeDiNMPbAVg,3013
385
392
  dstack/_internal/server/services/logging.py,sha256=Nu1628kW2hqB__N0Eyr07wGWjVWxfyJnczonTJ72kSM,417
@@ -388,13 +395,12 @@ dstack/_internal/server/services/offers.py,sha256=4hhqLzmo14_IY84FSDG59Sib1DrmTA
388
395
  dstack/_internal/server/services/permissions.py,sha256=l7Ngdelmn65vjw13NcOdaC6lBYMRuSw6FbHzYwdK3nE,1005
389
396
  dstack/_internal/server/services/placement.py,sha256=U-7z4kJ6ZyrCXzkDychWoOhniz19ooFwiNI2InoTLls,2420
390
397
  dstack/_internal/server/services/plugins.py,sha256=KgBqBUqxjQirRcYNuXVetE4OQj0EPkdC7ccbrNV1WQE,3825
391
- dstack/_internal/server/services/projects.py,sha256=n-J7qgY6nmqDdIaH3Tk0YbC_Hm3UZOBCoV5GBUPAL_Y,16701
392
- dstack/_internal/server/services/prometheus.py,sha256=xq5G-Q2BJup9lS2F6__0wUVTs-k1Gr3dYclGzo2WoWo,12474
398
+ dstack/_internal/server/services/projects.py,sha256=UMcqUvT4n02iTgvPSqzlPx0CoQIoi5bWsmrN78747_k,22346
393
399
  dstack/_internal/server/services/repos.py,sha256=f9ztN7jz_2gvD9hXF5sJwWDVyG2-NHRfjIdSukowPh8,9342
394
400
  dstack/_internal/server/services/resources.py,sha256=VRFOih_cMJdc0c2m9nSGsX8vWAJQV3M6N87aqS_JXfw,699
395
- dstack/_internal/server/services/runs.py,sha256=6sHi7fcYjbrqK3Cbq-Ype6fKRAP_npu1d4gXgZtxR70,39713
396
- dstack/_internal/server/services/users.py,sha256=W-5xL7zsHNjeG7BBK54RWGvIrBOrw-FF0NcG_z9qhoE,7466
397
- dstack/_internal/server/services/volumes.py,sha256=vxjFn3ijrvwi9-aXipT0iQgNjgebdwcBRn1mKFL9zAQ,16244
401
+ dstack/_internal/server/services/runs.py,sha256=utbHUjsEih8lZnXnI8uv-N5IDnmMcNsfU5OQ1-gQy2A,39755
402
+ dstack/_internal/server/services/users.py,sha256=eBmkvLIt5KpRo8jvSeHifu7V4G8KUzDybTNsYjIVmwo,7379
403
+ dstack/_internal/server/services/volumes.py,sha256=nGCXwXvI414vjNkU1PDOT0eLuEDPH-lMgyEpHjGVL24,16258
398
404
  dstack/_internal/server/services/backends/__init__.py,sha256=Aqo1GoqhZ_FsLEkCcBrvReKSq6E5w4QbBLrDXfGjiKU,13154
399
405
  dstack/_internal/server/services/backends/handlers.py,sha256=j-MhBxrpdepoDG7f2tApjFnE23RVO5I15-hxHyOWnew,3251
400
406
  dstack/_internal/server/services/encryption/__init__.py,sha256=3kCw_cxC3-Un1OIofdW5Gqsm0ZCXXTlGz09cULBx_uc,3155
@@ -402,13 +408,13 @@ dstack/_internal/server/services/encryption/keys/__init__.py,sha256=47DEQpj8HBSa
402
408
  dstack/_internal/server/services/encryption/keys/aes.py,sha256=2He1p2_Rg6hnCeLIGJo-Yfdsij7so_338oY49RXuL3Q,2276
403
409
  dstack/_internal/server/services/encryption/keys/base.py,sha256=mqumJiidoexUPoqxhQG6J_SpC1WGYwkdjKm1MUWnXo8,352
404
410
  dstack/_internal/server/services/encryption/keys/identity.py,sha256=ryb_YSV6u4c7W1OsVfEpzJvZCrR4zZYlzLw_GpjpD2Q,741
405
- dstack/_internal/server/services/gateways/__init__.py,sha256=aDTpr45rkaQ2zBHnDQycwEDSQSno7bQ0buRPqTEDRxg,21536
411
+ dstack/_internal/server/services/gateways/__init__.py,sha256=XIolTvb5ZJZpMquDpuGoJB72J1ej40lhww9JuiGlQoE,21550
406
412
  dstack/_internal/server/services/gateways/client.py,sha256=XIJX3fGBbZ_AG8qZMTSE8KAB_ojq5YJFa0OXoD_dofg,7493
407
413
  dstack/_internal/server/services/gateways/connection.py,sha256=ot3lV85XdmCT45vBWeyj57nLPcLPNm316zu3jMyeWjA,5625
408
414
  dstack/_internal/server/services/gateways/pool.py,sha256=0LclTl1tyx-doS78LeaAKjr-SMp98zuwh5f9s06JSd0,1914
409
415
  dstack/_internal/server/services/jobs/__init__.py,sha256=diy01gm7UQWGzkD-gH3YN_frIXzhppxPV3sebCmiAbI,25603
410
416
  dstack/_internal/server/services/jobs/configurators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
411
- dstack/_internal/server/services/jobs/configurators/base.py,sha256=mkrbrOCIda8AQ9dzkpIjI4452GYfg3RurKS1sYPE1QU,12266
417
+ dstack/_internal/server/services/jobs/configurators/base.py,sha256=MXiV-S3zFnkfaCCdstpr2wWylnkve8kS2sTYQYYRleE,12540
412
418
  dstack/_internal/server/services/jobs/configurators/dev.py,sha256=ufN6Sd8TwIsjQYNZE32fkAqJI7o2zjgoZThbrP-bd7U,2378
413
419
  dstack/_internal/server/services/jobs/configurators/service.py,sha256=FOWrLE-6YFSMuGqjOwYTLMV4FuIM5lCMDFjS0l0CoLI,929
414
420
  dstack/_internal/server/services/jobs/configurators/task.py,sha256=0-B3oO-61Eq4-mmlLmqJPliFKHhvvIV0tqc12slcQuA,1436
@@ -417,10 +423,13 @@ dstack/_internal/server/services/jobs/configurators/extensions/base.py,sha256=xJ
417
423
  dstack/_internal/server/services/jobs/configurators/extensions/cursor.py,sha256=r6Cgdd-P5C63xXyrqC6E0yNKIeTX6KabRLO92VEpJRY,1719
418
424
  dstack/_internal/server/services/jobs/configurators/extensions/vscode.py,sha256=WRg_jqi4eSqbs3XRVASMFF7OQHYRDtVBNn6NCroJY1I,1694
419
425
  dstack/_internal/server/services/logs/__init__.py,sha256=NAjO1KeYvuDznN2EkfAaJt9S6Y00fo_dl3ob3WmsdGQ,3088
420
- dstack/_internal/server/services/logs/aws.py,sha256=MuRVGgYwkh0TA11Y2H0upSj56-k_Bs-vT_oa2X-5yZE,13834
426
+ dstack/_internal/server/services/logs/aws.py,sha256=Pk-awolRKnvCOOWwDWQHjPdGHwPXDjQpiHRVppoPVUI,13443
421
427
  dstack/_internal/server/services/logs/base.py,sha256=7eCB6SPF9iWviv4vZ_34SvfM_Bvi9DeVj1t7TxmrXKs,1273
422
- dstack/_internal/server/services/logs/filelog.py,sha256=2IAFQgLf5NwA1NTibe3ybn47TEddgUKZ_7b4B4yiQOY,3856
423
- dstack/_internal/server/services/logs/gcp.py,sha256=xV-BJ4NcU8bRVAEXa0dmdYpqNy93dIKC6axo0viQi5c,6867
428
+ dstack/_internal/server/services/logs/filelog.py,sha256=y7A3TqEopQWZBxZuoODeAZ8E8r_MvfFo_A6VFoYYpOI,4911
429
+ dstack/_internal/server/services/logs/gcp.py,sha256=VyxFxOPET8WX0Vu4kfdlE89twT9eic2HzmdgyaohIA4,7026
430
+ dstack/_internal/server/services/prometheus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
431
+ dstack/_internal/server/services/prometheus/client_metrics.py,sha256=nGhvOHEoWONGAfbNh5gC23It7B46A6hfQ8mErUQIcYI,1541
432
+ dstack/_internal/server/services/prometheus/custom_metrics.py,sha256=xq5G-Q2BJup9lS2F6__0wUVTs-k1Gr3dYclGzo2WoWo,12474
424
433
  dstack/_internal/server/services/proxy/__init__.py,sha256=aklmvGaGXISztQft-nH8R98WRU6x_L0Fx3RwVDhwt3g,85
425
434
  dstack/_internal/server/services/proxy/auth.py,sha256=AVhDCnk9KvxJ7Jsd8Xmotl_29V4lNuBw8mQNBhx90Ws,485
426
435
  dstack/_internal/server/services/proxy/deps.py,sha256=u4dHHKBlTgC8Fnnl3onErgE1HGKFwyZTwvq0uT6IdQ4,846
@@ -432,7 +441,7 @@ dstack/_internal/server/services/proxy/services/service_proxy.py,sha256=4JrSxHqh
432
441
  dstack/_internal/server/services/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
433
442
  dstack/_internal/server/services/runner/client.py,sha256=8xcZNdnQPHtXCVS2RdVS2_KDcrCUa1K6cnqcDZsisBU,15653
434
443
  dstack/_internal/server/services/runner/ssh.py,sha256=H-X0015ZPwYq5tc31ytFF1uNaUAr9itAsABI2oPJWrk,5017
435
- dstack/_internal/server/services/services/__init__.py,sha256=tV7-WyhPf2MFtYPO6j4tC5Gtg1iz6RzP_l0Oy8oMrWw,11597
444
+ dstack/_internal/server/services/services/__init__.py,sha256=O3P-PiXpakh3cIBW8DcKu4VnaKlxFmJJr8cSz8mpk9E,11632
436
445
  dstack/_internal/server/services/services/autoscalers.py,sha256=wg3QgfdKcaBdbtyJJlAzeMlicGKQMuRGpMPZKyemK5U,4447
437
446
  dstack/_internal/server/services/services/options.py,sha256=BEpZbRY4PKFVkNNWxLtY--QISqBL1_aPPzZYLPpRgvM,2234
438
447
  dstack/_internal/server/services/storage/__init__.py,sha256=ZjlLdCQiclM7h_dKJM9HXjMJDKCFOAf3yI4iO6K3HHk,1384
@@ -464,10 +473,10 @@ dstack/_internal/server/statics/e467d7d60aae81ab198b.svg,sha256=_XHc9mfQZgGkcy4h
464
473
  dstack/_internal/server/statics/eb9b344b73818fe2b71a.png,sha256=2H14eOCQRyZhFGJ1Kn2LH1j70kTF1Qop4vH-tiKqyPI,85
465
474
  dstack/_internal/server/statics/f517dd626eb964120de0.png,sha256=4QQuNa8SqmcZ67HK6739OHCyjnAJseU1bkcn454KRQs,159
466
475
  dstack/_internal/server/statics/f958aecddee5d8e3222c.png,sha256=8CoZkVNgRfOAe62X1dU-AZDvwh_nESKaQblEmaX2Xrs,87
467
- dstack/_internal/server/statics/index.html,sha256=RZEf5ld8bD0jUQaSdaTE2A5SppiPKW83GnA3WDhB22c,10468
468
- dstack/_internal/server/statics/main-0ac1e1583684417ae4d1.js,sha256=5MhxVHWpjhG1yUn1_EuxaqZnTKiyxh7EvT6AewCtZR8,6640162
469
- dstack/_internal/server/statics/main-0ac1e1583684417ae4d1.js.map,sha256=ichOiyuaMldNYBY7wc5PA7fYilYXbDU-HyRuh8MBO5c,8708636
470
- dstack/_internal/server/statics/main-f39c418b05fe14772dd8.css,sha256=Rpuq_7-gUuuWprZuHa4xN0Mkk08_65nmPAF4uXzuT8k,1355497
476
+ dstack/_internal/server/statics/index.html,sha256=apMUqlAxBJXvcmWtLg0OFmCOgB4oGXYI3KUjJRLtWYw,10468
477
+ dstack/_internal/server/statics/main-a4eafa74304e587d037c.js,sha256=Mmv1S4z-_x-Cl-jCFcjMCt1AWahYO7R_mpHwHQezlgo,6666929
478
+ dstack/_internal/server/statics/main-a4eafa74304e587d037c.js.map,sha256=9hOZRSJ1SpZaTo6_YQYqedFTHHYxkvaEME43yULzyI0,8758270
479
+ dstack/_internal/server/statics/main-f53d6d0d42f8d61df1de.css,sha256=vUU4m71rhWOSFLAJyxV_EV49RmNNxv97jSq69d2_5Mc,1354847
471
480
  dstack/_internal/server/statics/manifest.json,sha256=430w2BoWVmYYVr14lDvUxx-ROPt3VjigzeMqfLeiSCM,340
472
481
  dstack/_internal/server/statics/robots.txt,sha256=kNJLw79pisHhc3OVAimMzKcq3x9WT6sF9IS4xI0crdI,67
473
482
  dstack/_internal/server/statics/assets/android-chrome-144x144.png,sha256=tB3V-95O-VVEoawN5V1XFoMQRSK0I6gthraV8bATGaw,23414
@@ -572,16 +581,16 @@ dstack/api/utils.py,sha256=_la3CRk1vgrPGkInPI1SOr33e8Jvh8ziJC32fjvKnaU,4188
572
581
  dstack/api/_public/__init__.py,sha256=mbzsdV3nWUJRksc7czX5C0iPT3NA6YRpriQQRiXwIbY,3429
573
582
  dstack/api/_public/backends.py,sha256=w_cIUVU3L1tN8VoPH6-ltq-oJewlfXWTiEFXfDvm-1Q,1056
574
583
  dstack/api/_public/repos.py,sha256=2ufUtxY8WyPci9tCGYzsnyIFTXNJfTuPzDYvpTydZ6k,6133
575
- dstack/api/_public/runs.py,sha256=lm_Xa7z_dfGQquGntxOcaOmCl7T5eo5T_kNv8QkKW9I,28456
584
+ dstack/api/_public/runs.py,sha256=rw1Wv0ogg1xlQm2TvEy19lRj5mF0DCjC7woc1eVrct8,28469
576
585
  dstack/api/huggingface/__init__.py,sha256=oIrEij3wttLZ1yrywEGvCMd6zswMQrX5pPjrqdSi0UA,2201
577
586
  dstack/api/server/__init__.py,sha256=Zyl1M51tifn4pB150yIsh39N96qUgMjg5XplcElHDxg,6097
578
587
  dstack/api/server/_backends.py,sha256=tSvJ4j-yp-S-4IYo7pKHluDaSsx6Xbwo08Ff6Do85fo,1639
579
588
  dstack/api/server/_fleets.py,sha256=6Duz5-SF1HI4qIkgdJr8OikzDosYtavJZOEyMwyDu_8,2882
580
589
  dstack/api/server/_gateways.py,sha256=2wyoERBl9R-uWtBI0AiRgLFLtNRlagQxlcgOWHkAlhA,2274
581
590
  dstack/api/server/_group.py,sha256=f9a_YvwZ7s1vDTQhOWHLwm3kO84C5R_zXToD4cxAnvY,432
582
- dstack/api/server/_logs.py,sha256=ng8QvFAIaoVOVChTK6Wuu5BeM6y7gAdx30KEYRsn9xA,500
591
+ dstack/api/server/_logs.py,sha256=MOs7P_EX0qhwIodEumXeE2CK3o_5YmUVvkMd8rA_4mk,647
583
592
  dstack/api/server/_metrics.py,sha256=OPb8sLhI_U605sHOPrELgy0_6cNFLJVfpvr-qkEukRM,670
584
- dstack/api/server/_projects.py,sha256=r0v0xlrRLtXCrI3QyjWF3LD2rAQx1F2ON8lCVQ9X5Qk,1486
593
+ dstack/api/server/_projects.py,sha256=1nlsm7CRaTKqaUX93un8BY845YWEuxXFGrwg3IJvGNw,2910
585
594
  dstack/api/server/_repos.py,sha256=bqsKuZWyiNLE8UAdSZrYNtk1J3Gu5MXXnTMIoM9jxpI,1770
586
595
  dstack/api/server/_runs.py,sha256=9XjsjH05Q26iagDwv8PZ4PbzG8KfSL1mEOHkem2FZ74,3086
587
596
  dstack/api/server/_secrets.py,sha256=VqLfrIcmBJtPxNDRkXTG44H5SWoY788YJapScUukvdY,1576
@@ -597,8 +606,8 @@ dstack/plugins/builtin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
597
606
  dstack/plugins/builtin/rest_plugin/__init__.py,sha256=lgTsq8Z6Km2F2UhPRChVB4vDM5ZpWtdk1iB1aa20ypA,440
598
607
  dstack/plugins/builtin/rest_plugin/_models.py,sha256=9hgVuU6OGSxidar88XhQnNo9izYWeQvVH45ciErv-Es,1910
599
608
  dstack/plugins/builtin/rest_plugin/_plugin.py,sha256=iv8TmQh959iEUZjCFTzmGnFW8fHukTVpPmD4iBzOfS4,5361
600
- dstack-0.19.15rc1.dist-info/METADATA,sha256=2GTDR6vPXhmDhlrFN_Hfeo27viDk0hrw2I2a4w0SvIs,20516
601
- dstack-0.19.15rc1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
602
- dstack-0.19.15rc1.dist-info/entry_points.txt,sha256=GnLrMS8hx3rWAySQjA7tPNhtixV6a-brRkmal1PKoHc,58
603
- dstack-0.19.15rc1.dist-info/licenses/LICENSE.md,sha256=qDABaRGjSKVOib1U8viw2P_96sIK7Puo426784oD9f8,15976
604
- dstack-0.19.15rc1.dist-info/RECORD,,
609
+ dstack-0.19.16.dist-info/METADATA,sha256=uq-rzc_xFZ_uLBJgt3soCtMXjkwuLW7CiRFHSTVurfQ,20513
610
+ dstack-0.19.16.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
611
+ dstack-0.19.16.dist-info/entry_points.txt,sha256=GnLrMS8hx3rWAySQjA7tPNhtixV6a-brRkmal1PKoHc,58
612
+ dstack-0.19.16.dist-info/licenses/LICENSE.md,sha256=qDABaRGjSKVOib1U8viw2P_96sIK7Puo426784oD9f8,15976
613
+ dstack-0.19.16.dist-info/RECORD,,