skypilot-nightly 1.0.0.dev20250513__py3-none-any.whl → 1.0.0.dev20250515__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.
- sky/__init__.py +2 -2
- sky/backends/backend.py +3 -2
- sky/backends/backend_utils.py +16 -17
- sky/backends/cloud_vm_ray_backend.py +47 -16
- sky/clouds/aws.py +11 -9
- sky/clouds/azure.py +16 -13
- sky/clouds/cloud.py +4 -3
- sky/clouds/cudo.py +3 -2
- sky/clouds/do.py +3 -2
- sky/clouds/fluidstack.py +3 -3
- sky/clouds/gcp.py +25 -9
- sky/clouds/ibm.py +12 -10
- sky/clouds/kubernetes.py +3 -2
- sky/clouds/lambda_cloud.py +6 -6
- sky/clouds/nebius.py +6 -5
- sky/clouds/oci.py +9 -7
- sky/clouds/paperspace.py +3 -2
- sky/clouds/runpod.py +9 -9
- sky/clouds/scp.py +5 -3
- sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +33 -11
- sky/clouds/service_catalog/gcp_catalog.py +7 -1
- sky/clouds/vast.py +8 -7
- sky/clouds/vsphere.py +4 -2
- sky/core.py +18 -12
- sky/dashboard/out/404.html +1 -1
- sky/dashboard/out/_next/static/chunks/pages/index-6b0d9e5031b70c58.js +1 -0
- sky/dashboard/out/_next/static/{2dkponv64SfFShA8Rnw0D → jFI0Y-uJZ_XDK5IGJpKFU}/_buildManifest.js +1 -1
- sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- sky/dashboard/out/clusters/[cluster].html +1 -1
- sky/dashboard/out/clusters.html +1 -1
- sky/dashboard/out/index.html +1 -1
- sky/dashboard/out/jobs/[job].html +1 -1
- sky/dashboard/out/jobs.html +1 -1
- sky/execution.py +33 -0
- sky/jobs/recovery_strategy.py +4 -1
- sky/jobs/server/core.py +6 -12
- sky/optimizer.py +19 -13
- sky/provision/kubernetes/utils.py +26 -1
- sky/resources.py +206 -43
- sky/serve/server/core.py +0 -5
- sky/serve/spot_placer.py +3 -0
- sky/server/server.py +51 -13
- sky/skylet/log_lib.py +12 -3
- sky/skylet/log_lib.pyi +5 -0
- sky/task.py +8 -6
- sky/templates/nebius-ray.yml.j2 +3 -1
- sky/utils/cli_utils/status_utils.py +6 -5
- sky/utils/controller_utils.py +39 -43
- sky/utils/dag_utils.py +4 -2
- sky/utils/resources_utils.py +3 -0
- sky/utils/schemas.py +33 -24
- {skypilot_nightly-1.0.0.dev20250513.dist-info → skypilot_nightly-1.0.0.dev20250515.dist-info}/METADATA +1 -1
- {skypilot_nightly-1.0.0.dev20250513.dist-info → skypilot_nightly-1.0.0.dev20250515.dist-info}/RECORD +58 -58
- {skypilot_nightly-1.0.0.dev20250513.dist-info → skypilot_nightly-1.0.0.dev20250515.dist-info}/WHEEL +1 -1
- sky/dashboard/out/_next/static/chunks/pages/index-f9f039532ca8cbc4.js +0 -1
- /sky/dashboard/out/_next/static/{2dkponv64SfFShA8Rnw0D → jFI0Y-uJZ_XDK5IGJpKFU}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250513.dist-info → skypilot_nightly-1.0.0.dev20250515.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250513.dist-info → skypilot_nightly-1.0.0.dev20250515.dist-info}/licenses/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250513.dist-info → skypilot_nightly-1.0.0.dev20250515.dist-info}/top_level.txt +0 -0
sky/clouds/kubernetes.py
CHANGED
@@ -414,8 +414,9 @@ class Kubernetes(clouds.Cloud):
|
|
414
414
|
context = region.name
|
415
415
|
assert context is not None, 'No context found in kubeconfig'
|
416
416
|
|
417
|
-
|
418
|
-
acc_dict = self.get_accelerators_from_instance_type(
|
417
|
+
resources = resources.assert_launchable()
|
418
|
+
acc_dict = self.get_accelerators_from_instance_type(
|
419
|
+
resources.instance_type)
|
419
420
|
custom_resources = resources_utils.make_ray_custom_resources_str(
|
420
421
|
acc_dict)
|
421
422
|
|
sky/clouds/lambda_cloud.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"""Lambda Cloud."""
|
2
2
|
import typing
|
3
|
-
from typing import Dict, Iterator, List, Optional, Tuple, Union
|
3
|
+
from typing import Any, Dict, Iterator, List, Optional, Tuple, Union
|
4
4
|
|
5
5
|
from sky import clouds
|
6
6
|
from sky.adaptors import common as adaptors_common
|
@@ -162,16 +162,16 @@ class Lambda(clouds.Cloud):
|
|
162
162
|
region: 'clouds.Region',
|
163
163
|
zones: Optional[List['clouds.Zone']],
|
164
164
|
num_nodes: int,
|
165
|
-
dryrun: bool = False) -> Dict[str,
|
165
|
+
dryrun: bool = False) -> Dict[str, Any]:
|
166
166
|
del cluster_name, dryrun # Unused.
|
167
167
|
assert zones is None, 'Lambda does not support zones.'
|
168
|
-
|
169
|
-
|
170
|
-
|
168
|
+
resources = resources.assert_launchable()
|
169
|
+
acc_dict = self.get_accelerators_from_instance_type(
|
170
|
+
resources.instance_type)
|
171
171
|
custom_resources = resources_utils.make_ray_custom_resources_str(
|
172
172
|
acc_dict)
|
173
173
|
|
174
|
-
resources_vars = {
|
174
|
+
resources_vars: Dict[str, Any] = {
|
175
175
|
'instance_type': resources.instance_type,
|
176
176
|
'custom_resources': custom_resources,
|
177
177
|
'region': region.name,
|
sky/clouds/nebius.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
""" Nebius Cloud. """
|
2
2
|
import os
|
3
3
|
import typing
|
4
|
-
from typing import Dict, Iterator, List, Optional, Tuple, Union
|
4
|
+
from typing import Any, Dict, Iterator, List, Optional, Tuple, Union
|
5
5
|
|
6
6
|
from sky import clouds
|
7
7
|
from sky.adaptors import nebius
|
@@ -191,12 +191,13 @@ class Nebius(clouds.Cloud):
|
|
191
191
|
region: 'clouds.Region',
|
192
192
|
zones: Optional[List['clouds.Zone']],
|
193
193
|
num_nodes: int,
|
194
|
-
dryrun: bool = False) -> Dict[str,
|
194
|
+
dryrun: bool = False) -> Dict[str, Any]:
|
195
195
|
del dryrun, cluster_name
|
196
196
|
assert zones is None, ('Nebius does not support zones', zones)
|
197
197
|
|
198
|
-
|
199
|
-
acc_dict = self.get_accelerators_from_instance_type(
|
198
|
+
resources = resources.assert_launchable()
|
199
|
+
acc_dict = self.get_accelerators_from_instance_type(
|
200
|
+
resources.instance_type)
|
200
201
|
custom_resources = resources_utils.make_ray_custom_resources_str(
|
201
202
|
acc_dict)
|
202
203
|
platform, _ = resources.instance_type.split('_')
|
@@ -209,7 +210,7 @@ class Nebius(clouds.Cloud):
|
|
209
210
|
raise RuntimeError('Unsupported instance type for Nebius cloud:'
|
210
211
|
f' {resources.instance_type}')
|
211
212
|
|
212
|
-
resources_vars = {
|
213
|
+
resources_vars: Dict[str, Any] = {
|
213
214
|
'instance_type': resources.instance_type,
|
214
215
|
'custom_resources': custom_resources,
|
215
216
|
'region': region.name,
|
sky/clouds/oci.py
CHANGED
@@ -23,7 +23,7 @@ History:
|
|
23
23
|
import logging
|
24
24
|
import os
|
25
25
|
import typing
|
26
|
-
from typing import Dict, Iterator, List, Optional, Tuple, Union
|
26
|
+
from typing import Any, Dict, Iterator, List, Optional, Tuple, Union
|
27
27
|
|
28
28
|
from sky import clouds
|
29
29
|
from sky import exceptions
|
@@ -213,10 +213,11 @@ class OCI(clouds.Cloud):
|
|
213
213
|
region: Optional['clouds.Region'],
|
214
214
|
zones: Optional[List['clouds.Zone']],
|
215
215
|
num_nodes: int,
|
216
|
-
dryrun: bool = False) -> Dict[str,
|
216
|
+
dryrun: bool = False) -> Dict[str, Any]:
|
217
217
|
del cluster_name, dryrun # Unused.
|
218
218
|
assert region is not None, resources
|
219
219
|
|
220
|
+
resources = resources.assert_launchable()
|
220
221
|
acc_dict = self.get_accelerators_from_instance_type(
|
221
222
|
resources.instance_type)
|
222
223
|
custom_resources = resources_utils.make_ray_custom_resources_str(
|
@@ -245,7 +246,8 @@ class OCI(clouds.Cloud):
|
|
245
246
|
image_id, os_type = image_id.replace(' ', '').split(':')
|
246
247
|
|
247
248
|
cpus = resources.cpus
|
248
|
-
|
249
|
+
original_instance_type = resources.instance_type
|
250
|
+
instance_type_arr = original_instance_type.split(
|
249
251
|
oci_utils.oci_config.INSTANCE_TYPE_RES_SPERATOR)
|
250
252
|
instance_type = instance_type_arr[0]
|
251
253
|
|
@@ -259,12 +261,12 @@ class OCI(clouds.Cloud):
|
|
259
261
|
else:
|
260
262
|
if cpus is None:
|
261
263
|
cpus, mems = OCI.get_vcpus_mem_from_instance_type(
|
262
|
-
|
264
|
+
original_instance_type)
|
263
265
|
resources = resources.copy(
|
264
266
|
cpus=cpus,
|
265
267
|
memory=mems,
|
266
268
|
)
|
267
|
-
if cpus is None and
|
269
|
+
if cpus is None and original_instance_type.startswith(
|
268
270
|
oci_utils.oci_config.VM_PREFIX):
|
269
271
|
cpus = f'{oci_utils.oci_config.DEFAULT_NUM_VCPUS}'
|
270
272
|
|
@@ -273,7 +275,7 @@ class OCI(clouds.Cloud):
|
|
273
275
|
# If zone is not specified, try to get the first zone.
|
274
276
|
if zones is None:
|
275
277
|
regions = service_catalog.get_region_zones_for_instance_type(
|
276
|
-
instance_type=
|
278
|
+
instance_type=original_instance_type,
|
277
279
|
use_spot=resources.use_spot,
|
278
280
|
clouds='oci')
|
279
281
|
zones = [r for r in iter(regions) if r.name == region.name
|
@@ -313,7 +315,7 @@ class OCI(clouds.Cloud):
|
|
313
315
|
# OS type is not determined yet. So try to get it from vms.csv
|
314
316
|
image_str = self._get_image_str(
|
315
317
|
image_id=resources.image_id,
|
316
|
-
instance_type=
|
318
|
+
instance_type=original_instance_type,
|
317
319
|
region=region.name)
|
318
320
|
|
319
321
|
# pylint: disable=import-outside-toplevel
|
sky/clouds/paperspace.py
CHANGED
@@ -185,8 +185,9 @@ class Paperspace(clouds.Cloud):
|
|
185
185
|
dryrun: bool = False) -> Dict[str, Optional[str]]:
|
186
186
|
del zones, dryrun, cluster_name
|
187
187
|
|
188
|
-
|
189
|
-
acc_dict = self.get_accelerators_from_instance_type(
|
188
|
+
resources = resources.assert_launchable()
|
189
|
+
acc_dict = self.get_accelerators_from_instance_type(
|
190
|
+
resources.instance_type)
|
190
191
|
custom_resources = resources_utils.make_ray_custom_resources_str(
|
191
192
|
acc_dict)
|
192
193
|
|
sky/clouds/runpod.py
CHANGED
@@ -164,27 +164,27 @@ class RunPod(clouds.Cloud):
|
|
164
164
|
region: 'clouds.Region',
|
165
165
|
zones: Optional[List['clouds.Zone']],
|
166
166
|
num_nodes: int,
|
167
|
-
dryrun: bool = False) -> Dict[str, Optional[str]]:
|
167
|
+
dryrun: bool = False) -> Dict[str, Optional[Union[str, bool]]]:
|
168
168
|
del dryrun, cluster_name # unused
|
169
169
|
assert zones is not None, (region, zones)
|
170
170
|
|
171
171
|
zone_names = [zone.name for zone in zones]
|
172
172
|
|
173
|
-
|
174
|
-
acc_dict = self.get_accelerators_from_instance_type(
|
173
|
+
resources = resources.assert_launchable()
|
174
|
+
acc_dict = self.get_accelerators_from_instance_type(
|
175
|
+
resources.instance_type)
|
175
176
|
custom_resources = resources_utils.make_ray_custom_resources_str(
|
176
177
|
acc_dict)
|
177
178
|
|
178
|
-
if
|
179
|
-
image_id = 'runpod/base:0.0.2'
|
180
|
-
elif
|
181
|
-
image_id =
|
179
|
+
if resources.image_id is None:
|
180
|
+
image_id: Optional[str] = 'runpod/base:0.0.2'
|
181
|
+
elif resources.extract_docker_image() is not None:
|
182
|
+
image_id = resources.extract_docker_image()
|
182
183
|
else:
|
183
|
-
image_id =
|
184
|
+
image_id = resources.image_id[resources.region]
|
184
185
|
|
185
186
|
instance_type = resources.instance_type
|
186
187
|
use_spot = resources.use_spot
|
187
|
-
|
188
188
|
hourly_cost = self.instance_type_to_hourly_cost(
|
189
189
|
instance_type=instance_type, use_spot=use_spot)
|
190
190
|
|
sky/clouds/scp.py
CHANGED
@@ -189,12 +189,14 @@ class SCP(clouds.Cloud):
|
|
189
189
|
del cluster_name, dryrun # Unused.
|
190
190
|
assert zones is None, 'SCP does not support zones.'
|
191
191
|
|
192
|
-
|
193
|
-
acc_dict = self.get_accelerators_from_instance_type(
|
192
|
+
resources = resources.assert_launchable()
|
193
|
+
acc_dict = self.get_accelerators_from_instance_type(
|
194
|
+
resources.instance_type)
|
194
195
|
custom_resources = resources_utils.make_ray_custom_resources_str(
|
195
196
|
acc_dict)
|
196
197
|
|
197
|
-
image_id = self._get_image_id(
|
198
|
+
image_id = self._get_image_id(resources.image_id, region.name,
|
199
|
+
resources.instance_type)
|
198
200
|
return {
|
199
201
|
'instance_type': resources.instance_type,
|
200
202
|
'custom_resources': custom_resources,
|
@@ -182,6 +182,9 @@ TPU_V4_HOST_DF = pd.read_csv(
|
|
182
182
|
SERIES_TO_DISCRIPTION = {
|
183
183
|
'a2': 'A2 Instance',
|
184
184
|
'a3': 'A3 Instance',
|
185
|
+
# TODO(zhwu): GCP does not have A4 instance in SKUs API yet. We keep it here
|
186
|
+
# for completeness.
|
187
|
+
'a4': 'A4 Instance',
|
185
188
|
'c2': 'Compute optimized',
|
186
189
|
'c2d': 'C2D AMD Instance',
|
187
190
|
'c3': 'C3 Instance',
|
@@ -198,6 +201,7 @@ SERIES_TO_DISCRIPTION = {
|
|
198
201
|
't2a': 'T2A Arm Instance',
|
199
202
|
't2d': 'T2D AMD Instance',
|
200
203
|
}
|
204
|
+
|
201
205
|
creds, project_id = google.auth.default()
|
202
206
|
gcp_client = discovery.build('compute', 'v1')
|
203
207
|
tpu_client = discovery.build('tpu', 'v1')
|
@@ -434,10 +438,18 @@ def _get_gpus_for_zone(zone: str) -> 'pd.DataFrame':
|
|
434
438
|
gpu_name = gpu_name.upper()
|
435
439
|
if 'H100-80GB' in gpu_name:
|
436
440
|
gpu_name = 'H100'
|
437
|
-
|
441
|
+
|
442
|
+
if 'H100-MEGA' in gpu_name:
|
438
443
|
gpu_name = 'H100-MEGA'
|
439
444
|
if count != 8:
|
440
|
-
|
445
|
+
continue
|
446
|
+
elif 'H200' in gpu_name:
|
447
|
+
gpu_name = 'H200'
|
448
|
+
if count != 8:
|
449
|
+
continue
|
450
|
+
elif 'B200' in gpu_name:
|
451
|
+
gpu_name = 'B200'
|
452
|
+
if count != 8:
|
441
453
|
continue
|
442
454
|
if 'VWS' in gpu_name:
|
443
455
|
continue
|
@@ -468,6 +480,8 @@ def _gpu_info_from_name(name: str) -> Optional[Dict[str, List[Dict[str, Any]]]]:
|
|
468
480
|
'A100': 40 * 1024,
|
469
481
|
'H100': 80 * 1024,
|
470
482
|
'H100-MEGA': 80 * 1024,
|
483
|
+
'H200': 141 * 1024,
|
484
|
+
'B200': 180 * 1024,
|
471
485
|
'P4': 8 * 1024,
|
472
486
|
'T4': 16 * 1024,
|
473
487
|
'V100': 16 * 1024,
|
@@ -507,22 +521,30 @@ def get_gpu_df(skus: List[Dict[str, Any]],
|
|
507
521
|
ondemand_or_spot = 'OnDemand' if not spot else 'Preemptible'
|
508
522
|
gpu_price = None
|
509
523
|
for sku in gpu_skus:
|
524
|
+
row_gpu_name = row['AcceleratorName']
|
510
525
|
if row['Region'] not in sku['serviceRegions']:
|
511
526
|
continue
|
512
527
|
if sku['category']['usageType'] != ondemand_or_spot:
|
513
528
|
continue
|
514
529
|
|
515
|
-
gpu_names = [
|
516
|
-
if
|
517
|
-
gpu_names = ['A100 80GB']
|
518
|
-
|
519
|
-
gpu_names = ['H100 80GB']
|
520
|
-
|
530
|
+
gpu_names = [f'{row_gpu_name} GPU']
|
531
|
+
if row_gpu_name == 'A100-80GB':
|
532
|
+
gpu_names = ['A100 80GB GPU']
|
533
|
+
elif row_gpu_name == 'H100':
|
534
|
+
gpu_names = ['H100 80GB GPU']
|
535
|
+
elif row_gpu_name == 'H100-MEGA':
|
521
536
|
# Seems that H100-MEGA has two different descriptions in SKUs in
|
522
537
|
# different regions: 'H100 80GB Mega' and 'H100 80GB Plus'.
|
523
|
-
gpu_names = [
|
524
|
-
|
525
|
-
|
538
|
+
gpu_names = [
|
539
|
+
'H100 80GB Mega GPU', 'H100 Mega 80GB GPU',
|
540
|
+
'H100 80GB Plus GPU'
|
541
|
+
]
|
542
|
+
elif row_gpu_name == 'H200':
|
543
|
+
gpu_names = ['H200 141GB GPU']
|
544
|
+
elif row_gpu_name == 'B200':
|
545
|
+
gpu_names = ['Nvidia B200 (1 gpu slice)']
|
546
|
+
if not any(
|
547
|
+
gpu_name in sku['description'] for gpu_name in gpu_names):
|
526
548
|
continue
|
527
549
|
|
528
550
|
unit_price = _get_unit_price(sku)
|
@@ -104,7 +104,13 @@ _ACC_INSTANCE_TYPE_DICTS = {
|
|
104
104
|
},
|
105
105
|
'H100-MEGA': {
|
106
106
|
8: ['a3-megagpu-8g'],
|
107
|
-
}
|
107
|
+
},
|
108
|
+
'H200': {
|
109
|
+
8: ['a3-ultragpu-8g'],
|
110
|
+
},
|
111
|
+
'B200': {
|
112
|
+
8: ['a4-highgpu-8g'],
|
113
|
+
},
|
108
114
|
}
|
109
115
|
# Enable GPU type inference from instance types
|
110
116
|
_INSTANCE_TYPE_TO_ACC = {
|
sky/clouds/vast.py
CHANGED
@@ -161,17 +161,18 @@ class Vast(clouds.Cloud):
|
|
161
161
|
dryrun: bool = False) -> Dict[str, Optional[str]]:
|
162
162
|
del zones, dryrun, cluster_name, num_nodes # unused
|
163
163
|
|
164
|
-
|
165
|
-
acc_dict = self.get_accelerators_from_instance_type(
|
164
|
+
resources = resources.assert_launchable()
|
165
|
+
acc_dict = self.get_accelerators_from_instance_type(
|
166
|
+
resources.instance_type)
|
166
167
|
custom_resources = resources_utils.make_ray_custom_resources_str(
|
167
168
|
acc_dict)
|
168
169
|
|
169
|
-
if
|
170
|
-
image_id = 'vastai/base:0.0.2'
|
171
|
-
elif
|
172
|
-
image_id =
|
170
|
+
if resources.image_id is None:
|
171
|
+
image_id: Optional[str] = 'vastai/base:0.0.2'
|
172
|
+
elif resources.extract_docker_image() is not None:
|
173
|
+
image_id = resources.extract_docker_image()
|
173
174
|
else:
|
174
|
-
image_id =
|
175
|
+
image_id = resources.image_id[resources.region]
|
175
176
|
|
176
177
|
return {
|
177
178
|
'instance_type': resources.instance_type,
|
sky/clouds/vsphere.py
CHANGED
@@ -186,8 +186,10 @@ class Vsphere(clouds.Cloud):
|
|
186
186
|
del cluster_name, dryrun # unused
|
187
187
|
assert zones is not None, (region, zones)
|
188
188
|
zone_names = [zone.name for zone in zones]
|
189
|
-
|
190
|
-
|
189
|
+
|
190
|
+
resources = resources.assert_launchable()
|
191
|
+
acc_dict = self.get_accelerators_from_instance_type(
|
192
|
+
resources.instance_type)
|
191
193
|
custom_resources = resources_utils.make_ray_custom_resources_str(
|
192
194
|
acc_dict)
|
193
195
|
|
sky/core.py
CHANGED
@@ -369,9 +369,18 @@ def _start(
|
|
369
369
|
'supported when starting SkyPilot controllers. To '
|
370
370
|
f'fix: omit the {arguments_str} to use the '
|
371
371
|
f'default autostop settings from config.')
|
372
|
-
|
373
|
-
|
374
|
-
|
372
|
+
|
373
|
+
# Get the autostop resources, from which we extract the correct autostop
|
374
|
+
# config.
|
375
|
+
controller_resources = controller_utils.get_controller_resources(
|
376
|
+
controller, [])
|
377
|
+
# All resources should have the same autostop config.
|
378
|
+
controller_autostop_config = list(
|
379
|
+
controller_resources)[0].autostop_config
|
380
|
+
if (controller_autostop_config is not None and
|
381
|
+
controller_autostop_config.enabled):
|
382
|
+
idle_minutes_to_autostop = controller_autostop_config.idle_minutes
|
383
|
+
down = controller_autostop_config.down
|
375
384
|
|
376
385
|
usage_lib.record_cluster_name_for_current_operation(cluster_name)
|
377
386
|
|
@@ -627,29 +636,26 @@ def autostop(
|
|
627
636
|
)
|
628
637
|
backend = backend_utils.get_backend_from_handle(handle)
|
629
638
|
|
639
|
+
resources = handle.launched_resources.assert_launchable()
|
630
640
|
# Check cloud supports stopping spot instances
|
631
|
-
cloud =
|
632
|
-
assert cloud is not None, handle
|
641
|
+
cloud = resources.cloud
|
633
642
|
|
634
643
|
if not isinstance(backend, backends.CloudVmRayBackend):
|
635
644
|
raise exceptions.NotSupportedError(
|
636
645
|
f'{operation} cluster {cluster_name!r} with backend '
|
637
646
|
f'{backend.__class__.__name__!r} is not supported.')
|
638
|
-
|
647
|
+
|
639
648
|
# Check if autostop/autodown is required and supported
|
640
649
|
if not is_cancel:
|
641
650
|
try:
|
642
651
|
if down:
|
643
652
|
cloud.check_features_are_supported(
|
644
|
-
|
645
|
-
{clouds.CloudImplementationFeatures.AUTODOWN})
|
653
|
+
resources, {clouds.CloudImplementationFeatures.AUTODOWN})
|
646
654
|
else:
|
647
655
|
cloud.check_features_are_supported(
|
648
|
-
|
649
|
-
{clouds.CloudImplementationFeatures.STOP})
|
656
|
+
resources, {clouds.CloudImplementationFeatures.STOP})
|
650
657
|
cloud.check_features_are_supported(
|
651
|
-
|
652
|
-
{clouds.CloudImplementationFeatures.AUTOSTOP})
|
658
|
+
resources, {clouds.CloudImplementationFeatures.AUTOSTOP})
|
653
659
|
except exceptions.NotSupportedError as e:
|
654
660
|
raise exceptions.NotSupportedError(
|
655
661
|
f'{colorama.Fore.YELLOW}{operation} on cluster '
|
sky/dashboard/out/404.html
CHANGED
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-1be831200e60c5c0.js" defer=""></script><script src="/dashboard/_next/static/
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-1be831200e60c5c0.js" defer=""></script><script src="/dashboard/_next/static/jFI0Y-uJZ_XDK5IGJpKFU/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/jFI0Y-uJZ_XDK5IGJpKFU/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"jFI0Y-uJZ_XDK5IGJpKFU","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
@@ -0,0 +1 @@
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[405],{5557:function(n,u,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/",function(){return t(6158)}])},6158:function(n,u,t){"use strict";t.r(u),t.d(u,{default:function(){return r}});var e=t(7294),s=t(1163);function r(){let n=(0,s.useRouter)();return(0,e.useEffect)(()=>{"/"===n.asPath?n.push("/clusters"):n.push(n.asPath)},[n]),null}},1163:function(n,u,t){n.exports=t(6036)}},function(n){n.O(0,[888,774,179],function(){return n(n.s=5557)}),_N_E=n.O()}]);
|
sky/dashboard/out/_next/static/{2dkponv64SfFShA8Rnw0D → jFI0Y-uJZ_XDK5IGJpKFU}/_buildManifest.js
RENAMED
@@ -1 +1 @@
|
|
1
|
-
self.__BUILD_MANIFEST=function(s,c,e,t,a,b){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/chunks/pages/index-
|
1
|
+
self.__BUILD_MANIFEST=function(s,c,e,t,a,b){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/chunks/pages/index-6b0d9e5031b70c58.js"],"/_error":["static/chunks/pages/_error-1be831200e60c5c0.js"],"/clusters":[s,e,c,t,a,"static/chunks/pages/clusters-a93b93e10b8b074e.js"],"/clusters/[cluster]":[s,e,c,t,b,a,"static/chunks/pages/clusters/[cluster]-f383db7389368ea7.js"],"/clusters/[cluster]/[job]":[s,c,"static/chunks/pages/clusters/[cluster]/[job]-e15db85d0ea1fbe1.js"],"/jobs":[s,e,c,t,b,"static/chunks/pages/jobs-a75029b67aab6a2e.js"],"/jobs/[job]":[s,c,"static/chunks/pages/jobs/[job]-03f279c6741fb48b.js"],sortedPages:["/","/_app","/_error","/clusters","/clusters/[cluster]","/clusters/[cluster]/[job]","/jobs","/jobs/[job]"]}}("static/chunks/678-206dddca808e6d16.js","static/chunks/979-7bf73a4c7cea0f5c.js","static/chunks/312-c3c8845990db8ffc.js","static/chunks/845-0ca6f2c1ba667c3b.js","static/chunks/37-0a572fe0dbb89c4d.js","static/chunks/236-f49500b82ad5392d.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-e15db85d0ea1fbe1.js" defer=""></script><script src="/dashboard/_next/static/
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-e15db85d0ea1fbe1.js" defer=""></script><script src="/dashboard/_next/static/jFI0Y-uJZ_XDK5IGJpKFU/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/jFI0Y-uJZ_XDK5IGJpKFU/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"jFI0Y-uJZ_XDK5IGJpKFU","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-0ca6f2c1ba667c3b.js" defer=""></script><script src="/dashboard/_next/static/chunks/236-f49500b82ad5392d.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-0a572fe0dbb89c4d.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-f383db7389368ea7.js" defer=""></script><script src="/dashboard/_next/static/
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-0ca6f2c1ba667c3b.js" defer=""></script><script src="/dashboard/_next/static/chunks/236-f49500b82ad5392d.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-0a572fe0dbb89c4d.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-f383db7389368ea7.js" defer=""></script><script src="/dashboard/_next/static/jFI0Y-uJZ_XDK5IGJpKFU/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/jFI0Y-uJZ_XDK5IGJpKFU/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"jFI0Y-uJZ_XDK5IGJpKFU","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/clusters.html
CHANGED
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><link rel="preload" href="/dashboard/skypilot.svg" as="image" fetchpriority="high"/><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-0ca6f2c1ba667c3b.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-0a572fe0dbb89c4d.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-a93b93e10b8b074e.js" defer=""></script><script src="/dashboard/_next/static/2dkponv64SfFShA8Rnw0D/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/2dkponv64SfFShA8Rnw0D/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="min-h-screen bg-gray-50"><div class="fixed top-0 left-0 right-0 z-50 shadow-sm"><div class="fixed top-0 left-0 right-0 bg-white z-30 h-14 px-4 border-b border-gray-200 shadow-sm"><div class="flex items-center h-full"><div class="flex items-center space-x-4 mr-6"><a class="flex items-center px-1 pt-1 h-full" href="/dashboard"><div class="h-20 w-20 flex items-center justify-center"><img alt="SkyPilot Logo" fetchpriority="high" width="80" height="80" decoding="async" data-nimg="1" class="w-full h-full object-contain" style="color:transparent" src="/dashboard/skypilot.svg"/></div></a></div><div class="flex items-center space-x-2 md:space-x-6 mr-6"><a class="inline-flex items-center border-b-2 border-transparent text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/clusters"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span>Clusters</span></a><a class="inline-flex items-center border-b-2 border-transparent hover:text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/jobs"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Jobs</span></a><div class="inline-flex items-center px-1 pt-1 text-gray-400"><svg class="w-4 h-4" viewBox="0 0 423.683 423.683" width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><g><path d="M54.376,287.577h310.459c26.48,0,48.02-13.979,48.02-40.453c0-17.916-10.001-34.07-25.559-42.292 c-19.021-72.951-86.061-125.196-162.002-125.223v-3.431h-3.854V61.814h3.854v-9.569h-31.38v9.569h3.854v14.363h-3.854v3.431 c-75.941,0.026-142.97,52.272-161.988,125.217c-15.56,8.216-25.573,24.376-25.573,42.291 C6.36,273.597,27.896,287.577,54.376,287.577z M47.676,227.145l7.214-2.424l1.617-7.447 c13.884-64.232,71.707-110.862,137.467-110.862h31.274c65.763,0,123.582,46.63,137.473,110.862l1.607,7.447l7.223,2.424 c8.678,2.92,14.506,10.946,14.506,19.979c0,11.703-9.517,13.647-21.221,13.647H54.376c-11.7,0-21.22-1.944-21.22-13.647 C33.162,238.091,38.984,230.065,47.676,227.145z M423.683,334.602v36.836H0v-36.836h25.348v-18.418h372.99v18.418H423.683z"></path></g></g></svg><span class="ml-2">Services</span><span class="text-xs ml-2 px-1.5 py-0.5 bg-gray-100 text-gray-500 rounded">Soon</span></div></div><div class="flex items-center space-x-1 ml-auto"><a href="https://skypilot.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-2 py-1 text-gray-600 hover:text-blue-600 transition-colors duration-150 cursor-pointer" title="Docs"><span class="mr-1">Docs</span><svg class="w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg></a><div class="border-l border-gray-200 h-6 mx-1"></div><a href="https://github.com/skypilot-org/skypilot" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="GitHub"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></a><a href="https://slack.skypilot.co/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Slack"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path transform="scale(0.85) translate(1.8, 1.8)" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"></path></svg></a><a href="https://github.com/skypilot-org/skypilot/issues/new" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Leave Feedback"><svg class="w-5 h-5" stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><path fill="none" d="M0 0h24v24H0z"></path><path d="M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6.455zM4 18.385L5.763 17H20V5H4v13.385zM11 13h2v2h-2v-2zm0-6h2v5h-2V7z"></path></g></svg></a></div></div></div></div><div class="transition-all duration-200 ease-in-out min-h-screen" style="padding-top:56px"><main class="p-6"><div class="flex items-center justify-between mb-4 h-5"><div class="text-base"><a class="text-sky-blue hover:underline leading-none" href="/dashboard/clusters">Sky Clusters</a></div><div class="flex items-center"><button class="justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent h-10 px-4 py-2 text-sky-blue hover:text-sky-blue-bright flex items-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-cw h-4 w-4 mr-1.5"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path></svg><span>Refresh</span></button></div></div><div><div class="rounded-lg border bg-card text-card-foreground shadow-sm"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-base"><thead class="[&_tr]:border-b"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Status</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Cluster</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">User</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Resources</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Region</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Started</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0">Actions</th></tr></thead><tbody class="[&_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><td class="p-4 align-middle [&:has([role=checkbox])]:pr-0 text-center py-6 text-gray-500" colSpan="8">No active clusters</td></tr></tbody></table></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"2dkponv64SfFShA8Rnw0D","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><link rel="preload" href="/dashboard/skypilot.svg" as="image" fetchpriority="high"/><meta name="next-head-count" content="3"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/312-c3c8845990db8ffc.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/845-0ca6f2c1ba667c3b.js" defer=""></script><script src="/dashboard/_next/static/chunks/37-0a572fe0dbb89c4d.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-a93b93e10b8b074e.js" defer=""></script><script src="/dashboard/_next/static/jFI0Y-uJZ_XDK5IGJpKFU/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/jFI0Y-uJZ_XDK5IGJpKFU/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div class="min-h-screen bg-gray-50"><div class="fixed top-0 left-0 right-0 z-50 shadow-sm"><div class="fixed top-0 left-0 right-0 bg-white z-30 h-14 px-4 border-b border-gray-200 shadow-sm"><div class="flex items-center h-full"><div class="flex items-center space-x-4 mr-6"><a class="flex items-center px-1 pt-1 h-full" href="/dashboard"><div class="h-20 w-20 flex items-center justify-center"><img alt="SkyPilot Logo" fetchpriority="high" width="80" height="80" decoding="async" data-nimg="1" class="w-full h-full object-contain" style="color:transparent" src="/dashboard/skypilot.svg"/></div></a></div><div class="flex items-center space-x-2 md:space-x-6 mr-6"><a class="inline-flex items-center border-b-2 border-transparent text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/clusters"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span>Clusters</span></a><a class="inline-flex items-center border-b-2 border-transparent hover:text-blue-600 px-1 pt-1 space-x-2" href="/dashboard/jobs"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Jobs</span></a><div class="inline-flex items-center px-1 pt-1 text-gray-400"><svg class="w-4 h-4" viewBox="0 0 423.683 423.683" width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"><g><path d="M54.376,287.577h310.459c26.48,0,48.02-13.979,48.02-40.453c0-17.916-10.001-34.07-25.559-42.292 c-19.021-72.951-86.061-125.196-162.002-125.223v-3.431h-3.854V61.814h3.854v-9.569h-31.38v9.569h3.854v14.363h-3.854v3.431 c-75.941,0.026-142.97,52.272-161.988,125.217c-15.56,8.216-25.573,24.376-25.573,42.291 C6.36,273.597,27.896,287.577,54.376,287.577z M47.676,227.145l7.214-2.424l1.617-7.447 c13.884-64.232,71.707-110.862,137.467-110.862h31.274c65.763,0,123.582,46.63,137.473,110.862l1.607,7.447l7.223,2.424 c8.678,2.92,14.506,10.946,14.506,19.979c0,11.703-9.517,13.647-21.221,13.647H54.376c-11.7,0-21.22-1.944-21.22-13.647 C33.162,238.091,38.984,230.065,47.676,227.145z M423.683,334.602v36.836H0v-36.836h25.348v-18.418h372.99v18.418H423.683z"></path></g></g></svg><span class="ml-2">Services</span><span class="text-xs ml-2 px-1.5 py-0.5 bg-gray-100 text-gray-500 rounded">Soon</span></div></div><div class="flex items-center space-x-1 ml-auto"><a href="https://skypilot.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center px-2 py-1 text-gray-600 hover:text-blue-600 transition-colors duration-150 cursor-pointer" title="Docs"><span class="mr-1">Docs</span><svg class="w-3.5 h-3.5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg></a><div class="border-l border-gray-200 h-6 mx-1"></div><a href="https://github.com/skypilot-org/skypilot" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="GitHub"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path></svg></a><a href="https://slack.skypilot.co/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Slack"><svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path transform="scale(0.85) translate(1.8, 1.8)" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"></path></svg></a><a href="https://github.com/skypilot-org/skypilot/issues/new" target="_blank" rel="noopener noreferrer" class="inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer" title="Leave Feedback"><svg class="w-5 h-5" stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><path fill="none" d="M0 0h24v24H0z"></path><path d="M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6.455zM4 18.385L5.763 17H20V5H4v13.385zM11 13h2v2h-2v-2zm0-6h2v5h-2V7z"></path></g></svg></a></div></div></div></div><div class="transition-all duration-200 ease-in-out min-h-screen" style="padding-top:56px"><main class="p-6"><div class="flex items-center justify-between mb-4 h-5"><div class="text-base"><a class="text-sky-blue hover:underline leading-none" href="/dashboard/clusters">Sky Clusters</a></div><div class="flex items-center"><button class="justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent h-10 px-4 py-2 text-sky-blue hover:text-sky-blue-bright flex items-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-cw h-4 w-4 mr-1.5"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path></svg><span>Refresh</span></button></div></div><div><div class="rounded-lg border bg-card text-card-foreground shadow-sm"><div class="relative w-full overflow-auto"><table class="w-full caption-bottom text-base"><thead class="[&_tr]:border-b"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Status</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Cluster</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">User</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Resources</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Region</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0 sortable whitespace-nowrap">Started</th><th class="h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0">Actions</th></tr></thead><tbody class="[&_tr:last-child]:border-0"><tr class="border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"><td class="p-4 align-middle [&:has([role=checkbox])]:pr-0 text-center py-6 text-gray-500" colSpan="8">No active clusters</td></tr></tbody></table></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"jFI0Y-uJZ_XDK5IGJpKFU","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
sky/dashboard/out/index.html
CHANGED
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-6b0d9e5031b70c58.js" defer=""></script><script src="/dashboard/_next/static/jFI0Y-uJZ_XDK5IGJpKFU/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/jFI0Y-uJZ_XDK5IGJpKFU/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"jFI0Y-uJZ_XDK5IGJpKFU","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-03f279c6741fb48b.js" defer=""></script><script src="/dashboard/_next/static/
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/c6933bbb2ce7f4dd.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-830f59b8404e96b8.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-e6b013bc3f77ad60.js" defer=""></script><script src="/dashboard/_next/static/chunks/678-206dddca808e6d16.js" defer=""></script><script src="/dashboard/_next/static/chunks/979-7bf73a4c7cea0f5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-03f279c6741fb48b.js" defer=""></script><script src="/dashboard/_next/static/jFI0Y-uJZ_XDK5IGJpKFU/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/jFI0Y-uJZ_XDK5IGJpKFU/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div>Loading...</div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"jFI0Y-uJZ_XDK5IGJpKFU","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|