skypilot-nightly 1.0.0.dev20250925__py3-none-any.whl → 1.0.0.dev20250926__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 skypilot-nightly might be problematic. Click here for more details.

Files changed (54) hide show
  1. sky/__init__.py +2 -2
  2. sky/backends/backend_utils.py +13 -10
  3. sky/client/cli/command.py +16 -8
  4. sky/client/common.py +4 -2
  5. sky/client/sdk.py +4 -2
  6. sky/core.py +3 -2
  7. sky/dashboard/out/404.html +1 -1
  8. sky/dashboard/out/_next/static/{bn-NHt5qTzeTN2PefXuDA → VXU6_xE28M55BOdwmUUJS}/_buildManifest.js +1 -1
  9. sky/dashboard/out/_next/static/chunks/1121-d0782b9251f0fcd3.js +1 -0
  10. sky/dashboard/out/_next/static/chunks/9037-d0c00018a5ba198c.js +6 -0
  11. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-ad77b12fc736dca3.js +16 -0
  12. sky/dashboard/out/_next/static/chunks/{webpack-16ba1d7187d2e3b1.js → webpack-8e64d11e58eab5cb.js} +1 -1
  13. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  14. sky/dashboard/out/clusters/[cluster].html +1 -1
  15. sky/dashboard/out/clusters.html +1 -1
  16. sky/dashboard/out/config.html +1 -1
  17. sky/dashboard/out/index.html +1 -1
  18. sky/dashboard/out/infra/[context].html +1 -1
  19. sky/dashboard/out/infra.html +1 -1
  20. sky/dashboard/out/jobs/[job].html +1 -1
  21. sky/dashboard/out/jobs/pools/[pool].html +1 -1
  22. sky/dashboard/out/jobs.html +1 -1
  23. sky/dashboard/out/users.html +1 -1
  24. sky/dashboard/out/volumes.html +1 -1
  25. sky/dashboard/out/workspace/new.html +1 -1
  26. sky/dashboard/out/workspaces/[name].html +1 -1
  27. sky/dashboard/out/workspaces.html +1 -1
  28. sky/global_user_state.py +54 -31
  29. sky/jobs/constants.py +2 -0
  30. sky/jobs/controller.py +4 -0
  31. sky/jobs/server/core.py +2 -0
  32. sky/provision/runpod/__init__.py +2 -0
  33. sky/schemas/db/global_user_state/009_last_activity_and_launched_at.py +89 -0
  34. sky/server/requests/payloads.py +2 -1
  35. sky/setup_files/dependencies.py +1 -1
  36. sky/skylet/constants.py +4 -1
  37. sky/skylet/events.py +42 -0
  38. sky/templates/jobs-controller.yaml.j2 +3 -0
  39. sky/templates/kubernetes-ray.yml.j2 +8 -3
  40. sky/utils/db/db_utils.py +5 -1
  41. sky/utils/db/migration_utils.py +1 -1
  42. sky/utils/kubernetes/kubernetes_deploy_utils.py +35 -12
  43. sky/volumes/server/core.py +1 -0
  44. sky/volumes/volume.py +16 -17
  45. {skypilot_nightly-1.0.0.dev20250925.dist-info → skypilot_nightly-1.0.0.dev20250926.dist-info}/METADATA +37 -37
  46. {skypilot_nightly-1.0.0.dev20250925.dist-info → skypilot_nightly-1.0.0.dev20250926.dist-info}/RECORD +51 -50
  47. sky/dashboard/out/_next/static/chunks/1121-b911fc0a0b4742f0.js +0 -1
  48. sky/dashboard/out/_next/static/chunks/9037-472ee1222cb1e158.js +0 -6
  49. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-2cb9b15e09cda628.js +0 -16
  50. /sky/dashboard/out/_next/static/{bn-NHt5qTzeTN2PefXuDA → VXU6_xE28M55BOdwmUUJS}/_ssgManifest.js +0 -0
  51. {skypilot_nightly-1.0.0.dev20250925.dist-info → skypilot_nightly-1.0.0.dev20250926.dist-info}/WHEEL +0 -0
  52. {skypilot_nightly-1.0.0.dev20250925.dist-info → skypilot_nightly-1.0.0.dev20250926.dist-info}/entry_points.txt +0 -0
  53. {skypilot_nightly-1.0.0.dev20250925.dist-info → skypilot_nightly-1.0.0.dev20250926.dist-info}/licenses/LICENSE +0 -0
  54. {skypilot_nightly-1.0.0.dev20250925.dist-info → skypilot_nightly-1.0.0.dev20250926.dist-info}/top_level.txt +0 -0
@@ -1,11 +1,12 @@
1
1
  """Utility functions for deploying Kubernetes clusters."""
2
2
  import os
3
+ import random
3
4
  import shlex
4
5
  import subprocess
5
6
  import sys
6
7
  import tempfile
7
8
  import textwrap
8
- from typing import List, Optional
9
+ from typing import List, Optional, Tuple
9
10
 
10
11
  import colorama
11
12
 
@@ -26,8 +27,9 @@ logger = sky_logging.init_logger(__name__)
26
27
  # Default path for Kubernetes configuration file
27
28
  DEFAULT_KUBECONFIG_PATH = os.path.expanduser('~/.kube/config')
28
29
  DEFAULT_LOCAL_CLUSTER_NAME = 'skypilot'
29
- LOCAL_CLUSTER_PORT_RANGE = 101
30
+ LOCAL_CLUSTER_PORT_RANGE = 100
30
31
  LOCAL_CLUSTER_INTERNAL_PORT_START = 30000
32
+ LOCAL_CLUSTER_INTERNAL_PORT_END = 30099
31
33
 
32
34
 
33
35
  def check_ssh_cluster_dependencies(
@@ -262,7 +264,7 @@ def generate_kind_config(port_start: int,
262
264
  """Generate a kind cluster config with ports mapped from host to container
263
265
 
264
266
  Port range will be [port_start, port_start + LOCAL_CLUSTER_PORT_RANGE)
265
- Internally, this will map to ports 30000 - 30100
267
+ Internally, this will map to ports 30000 - 30099
266
268
 
267
269
  Args:
268
270
  path: Path to generate the config file at
@@ -274,7 +276,7 @@ def generate_kind_config(port_start: int,
274
276
  The kind cluster config
275
277
  """
276
278
  internal_start = LOCAL_CLUSTER_INTERNAL_PORT_START
277
- internal_end = internal_start + LOCAL_CLUSTER_PORT_RANGE - 1
279
+ internal_end = LOCAL_CLUSTER_INTERNAL_PORT_END
278
280
 
279
281
  config = textwrap.dedent(f"""
280
282
  apiVersion: kind.x-k8s.io/v1alpha4
@@ -315,8 +317,33 @@ def generate_kind_config(port_start: int,
315
317
  return config
316
318
 
317
319
 
318
- def deploy_local_cluster(name: Optional[str], gpus: bool):
320
+ def _get_port_range(name: str, port_start: Optional[int]) -> Tuple[int, int]:
321
+ is_default = name == DEFAULT_LOCAL_CLUSTER_NAME
322
+ if port_start is None:
323
+ if is_default:
324
+ port_start = LOCAL_CLUSTER_INTERNAL_PORT_START
325
+ else:
326
+ port_start = random.randint(301, 399) * 100
327
+ port_end = port_start + LOCAL_CLUSTER_PORT_RANGE - 1
328
+
329
+ port_range = f'Current port range: {port_start}-{port_end}'
330
+ if is_default and port_start != LOCAL_CLUSTER_INTERNAL_PORT_START:
331
+ raise ValueError('Default local cluster `skypilot` should have '
332
+ f'port range from 30000 to 30099. {port_range}.')
333
+ if not is_default and port_start == LOCAL_CLUSTER_INTERNAL_PORT_START:
334
+ raise ValueError('Port range 30000 to 30099 is reserved for '
335
+ f'default local cluster `skypilot`. {port_range}.')
336
+ if port_start % 100 != 0:
337
+ raise ValueError('Local cluster port start must be a multiple of 100. '
338
+ f'{port_range}.')
339
+
340
+ return port_start, port_end
341
+
342
+
343
+ def deploy_local_cluster(name: Optional[str], port_start: Optional[int],
344
+ gpus: bool):
319
345
  name = name or DEFAULT_LOCAL_CLUSTER_NAME
346
+ port_start, port_end = _get_port_range(name, port_start)
320
347
  context_name = f'kind-{name}'
321
348
  cluster_created = False
322
349
 
@@ -341,12 +368,7 @@ def deploy_local_cluster(name: Optional[str], gpus: bool):
341
368
  delete=True) as f:
342
369
  # Choose random port range to use on the host machine.
343
370
  # Port range is port_start - port_start + 99 (exactly 100 ports).
344
- # port_start = random.randint(300, 399) * 100
345
- # TODO (kyuds): hard coding to pass smoketests. Need to figure out
346
- # how to deal with this later.
347
- port_start = LOCAL_CLUSTER_INTERNAL_PORT_START
348
- port_end = port_start + LOCAL_CLUSTER_PORT_RANGE - 1
349
- logger.debug(f'Using port range {port_start}-{port_end}')
371
+ logger.debug(f'Using host port range {port_start}-{port_end}')
350
372
  f.write(generate_kind_config(port_start, gpus=gpus))
351
373
  f.flush()
352
374
 
@@ -458,7 +480,8 @@ def deploy_local_cluster(name: Optional[str], gpus: bool):
458
480
  ux_utils.finishing_message(
459
481
  message=(
460
482
  f'Local Kubernetes cluster {name} created successfully '
461
- f'with {num_cpus} CPUs{gpu_message}.'),
483
+ f'with {num_cpus} CPUs{gpu_message} on host port range '
484
+ f'{port_start}-{port_end}.'),
462
485
  log_path=log_path,
463
486
  is_local=True,
464
487
  follow_up_message=(
@@ -213,6 +213,7 @@ def volume_apply(
213
213
  # generate the storage name on cloud.
214
214
  cloud_obj = registry.CLOUD_REGISTRY.from_str(cloud)
215
215
  assert cloud_obj is not None
216
+ region, zone = cloud_obj.validate_region_zone(region, zone)
216
217
  name_uuid = str(uuid.uuid4())[:6]
217
218
  name_on_cloud = common_utils.make_cluster_name_on_cloud(
218
219
  name, max_length=cloud_obj.max_cluster_name_length())
sky/volumes/volume.py CHANGED
@@ -100,7 +100,7 @@ class Volume:
100
100
  }
101
101
 
102
102
  def _normalize_config(self) -> None:
103
- """Adjust and validate the config."""
103
+ """Normalize and validate the config."""
104
104
  # Validate schema
105
105
  common_utils.validate_schema(self.to_yaml_config(),
106
106
  schemas.get_volume_schema(),
@@ -115,6 +115,18 @@ class Volume:
115
115
  self.region = infra_info.region
116
116
  self.zone = infra_info.zone
117
117
 
118
+ # Set cloud from volume type if not specified
119
+ cloud_obj_from_type = VOLUME_TYPE_TO_CLOUD.get(
120
+ volume_lib.VolumeType(self.type))
121
+ if self.cloud:
122
+ cloud_obj = registry.CLOUD_REGISTRY.from_str(self.cloud)
123
+ assert cloud_obj is not None
124
+ if not cloud_obj.is_same_cloud(cloud_obj_from_type):
125
+ raise ValueError(
126
+ f'Invalid cloud {self.cloud} for volume type {self.type}')
127
+ else:
128
+ self.cloud = str(cloud_obj_from_type)
129
+
118
130
  def _adjust_config(self) -> None:
119
131
  """Adjust the volume config (e.g., parse size)."""
120
132
  if self.size is None:
@@ -150,22 +162,9 @@ class Volume:
150
162
  'use the --size flag.')
151
163
 
152
164
  def validate_cloud_compatibility(self) -> None:
153
- """Validates that the specified cloud is compatible with volume type."""
154
- cloud_obj_from_type = VOLUME_TYPE_TO_CLOUD.get(
155
- volume_lib.VolumeType(self.type))
156
- if self.cloud:
157
- cloud_obj = registry.CLOUD_REGISTRY.from_str(self.cloud)
158
- assert cloud_obj is not None
159
- if not cloud_obj.is_same_cloud(cloud_obj_from_type):
160
- raise ValueError(
161
- f'Invalid cloud {self.cloud} for volume type {self.type}')
162
- else:
163
- self.cloud = str(cloud_obj_from_type)
164
- cloud_obj = cloud_obj_from_type
165
- assert cloud_obj is not None
166
-
167
- self.region, self.zone = cloud_obj.validate_region_zone(
168
- self.region, self.zone)
165
+ """Validates region, zone, name, labels with the cloud."""
166
+ cloud_obj = registry.CLOUD_REGISTRY.from_str(self.cloud)
167
+ assert cloud_obj is not None
169
168
 
170
169
  valid, err_msg = cloud_obj.is_volume_name_valid(self.name)
171
170
  if not valid:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250925
3
+ Version: 1.0.0.dev20250926
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -59,7 +59,7 @@ Requires-Dist: casbin
59
59
  Requires-Dist: sqlalchemy_adapter
60
60
  Requires-Dist: prometheus_client>=0.8.0
61
61
  Requires-Dist: passlib
62
- Requires-Dist: bcrypt
62
+ Requires-Dist: bcrypt==4.0.1
63
63
  Requires-Dist: pyjwt
64
64
  Requires-Dist: gitpython
65
65
  Requires-Dist: types-paramiko
@@ -154,51 +154,51 @@ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "server"
154
154
  Requires-Dist: aiosqlite; extra == "server"
155
155
  Requires-Dist: greenlet; extra == "server"
156
156
  Provides-Extra: all
157
- Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
158
- Requires-Dist: msgraph-sdk; extra == "all"
159
- Requires-Dist: tomli; python_version < "3.11" and extra == "all"
160
- Requires-Dist: azure-mgmt-compute>=33.0.0; extra == "all"
157
+ Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
158
+ Requires-Dist: azure-core>=1.31.0; extra == "all"
161
159
  Requires-Dist: docker; extra == "all"
162
- Requires-Dist: cudo-compute>=0.1.10; extra == "all"
163
- Requires-Dist: passlib; extra == "all"
164
- Requires-Dist: botocore>=1.29.10; extra == "all"
165
- Requires-Dist: websockets; extra == "all"
160
+ Requires-Dist: ibm-cos-sdk; extra == "all"
161
+ Requires-Dist: azure-identity>=1.19.0; extra == "all"
162
+ Requires-Dist: azure-mgmt-compute>=33.0.0; extra == "all"
166
163
  Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
167
- Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
168
- Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
169
- Requires-Dist: runpod>=1.6.1; extra == "all"
170
- Requires-Dist: nebius>=0.2.47; extra == "all"
171
- Requires-Dist: pyjwt; extra == "all"
172
164
  Requires-Dist: azure-cli>=2.65.0; extra == "all"
173
- Requires-Dist: oci; extra == "all"
174
- Requires-Dist: python-dateutil; extra == "all"
165
+ Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
166
+ Requires-Dist: boto3>=1.26.1; extra == "all"
167
+ Requires-Dist: msrestazure; extra == "all"
168
+ Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
169
+ Requires-Dist: aiohttp; extra == "all"
170
+ Requires-Dist: colorama<0.4.5; extra == "all"
171
+ Requires-Dist: websockets; extra == "all"
172
+ Requires-Dist: ecsapi>=0.2.0; extra == "all"
173
+ Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
174
+ Requires-Dist: tomli; python_version < "3.11" and extra == "all"
175
+ Requires-Dist: pydo>=0.3.0; extra == "all"
175
176
  Requires-Dist: casbin; extra == "all"
177
+ Requires-Dist: ray[default]>=2.6.1; extra == "all"
176
178
  Requires-Dist: azure-core>=1.24.0; extra == "all"
177
- Requires-Dist: aiosqlite; extra == "all"
178
- Requires-Dist: greenlet; extra == "all"
179
- Requires-Dist: msrestazure; extra == "all"
179
+ Requires-Dist: cudo-compute>=0.1.10; extra == "all"
180
180
  Requires-Dist: sqlalchemy_adapter; extra == "all"
181
- Requires-Dist: azure-identity>=1.19.0; extra == "all"
182
- Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
183
- Requires-Dist: pydo>=0.3.0; extra == "all"
184
- Requires-Dist: boto3>=1.26.1; extra == "all"
185
- Requires-Dist: awscli>=1.27.10; extra == "all"
181
+ Requires-Dist: ibm-vpc; extra == "all"
182
+ Requires-Dist: runpod>=1.6.1; extra == "all"
183
+ Requires-Dist: passlib; extra == "all"
184
+ Requires-Dist: anyio; extra == "all"
186
185
  Requires-Dist: grpcio>=1.63.0; extra == "all"
187
- Requires-Dist: google-cloud-storage; extra == "all"
186
+ Requires-Dist: python-dateutil; extra == "all"
187
+ Requires-Dist: nebius>=0.2.47; extra == "all"
188
188
  Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
189
- Requires-Dist: ibm-cloud-sdk-core; extra == "all"
190
- Requires-Dist: ray[default]>=2.6.1; extra == "all"
191
- Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
192
- Requires-Dist: anyio; extra == "all"
193
- Requires-Dist: colorama<0.4.5; extra == "all"
194
- Requires-Dist: ecsapi>=0.2.0; extra == "all"
195
- Requires-Dist: azure-core>=1.31.0; extra == "all"
196
- Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
197
- Requires-Dist: ibm-vpc; extra == "all"
189
+ Requires-Dist: oci; extra == "all"
190
+ Requires-Dist: pyjwt; extra == "all"
191
+ Requires-Dist: msgraph-sdk; extra == "all"
198
192
  Requires-Dist: azure-common; extra == "all"
199
193
  Requires-Dist: azure-mgmt-network>=27.0.0; extra == "all"
200
- Requires-Dist: aiohttp; extra == "all"
201
- Requires-Dist: ibm-cos-sdk; extra == "all"
194
+ Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
195
+ Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
196
+ Requires-Dist: ibm-cloud-sdk-core; extra == "all"
197
+ Requires-Dist: aiosqlite; extra == "all"
198
+ Requires-Dist: awscli>=1.27.10; extra == "all"
199
+ Requires-Dist: botocore>=1.29.10; extra == "all"
200
+ Requires-Dist: google-cloud-storage; extra == "all"
201
+ Requires-Dist: greenlet; extra == "all"
202
202
  Dynamic: author
203
203
  Dynamic: classifier
204
204
  Dynamic: description
@@ -1,14 +1,14 @@
1
- sky/__init__.py,sha256=smOXMaNWr2TYt2XnE46K5ZD5z6SSrTRfUGo0jWyJryc,6713
1
+ sky/__init__.py,sha256=5DzNcNmJww2JcDpdra9LeeOy5UrWFipeCU8W9qAYpyk,6713
2
2
  sky/admin_policy.py,sha256=XdcJnYqmude-LGGop-8U-FeiJcqtfYsYtIy4rmoCJnM,9799
3
3
  sky/authentication.py,sha256=xWdnHD4b172-FPTcVFmRhYvt_JNVLYvgFkaFS5qvs-k,28210
4
4
  sky/check.py,sha256=Z7D6txaOAEL7fyEQ8q-Zxk1aWaHpEcl412Rj2mThbQ0,31025
5
5
  sky/cli.py,sha256=VXIZryeTtJPYpPTBKymVPmuOCyh8knfWrq-qnkr6R-4,178
6
6
  sky/cloud_stores.py,sha256=Ln5GBpel-sEs7rVx7bBrMkfLwA_bctI05Rox2uoz7Lo,26388
7
- sky/core.py,sha256=SM_iYRn4jaemWJSr49eU-xZy6Fd-pd54FqMB5PqdBPw,58150
7
+ sky/core.py,sha256=R9TT3NrPKGChKgOvHNwyiU2_EwQa_sffWu82NURdm7I,58209
8
8
  sky/dag.py,sha256=0ZpAEDXuIFo1SP7YJpF9vXiFxpRwqP8od-UXMg95td8,3929
9
9
  sky/exceptions.py,sha256=IprWNwo6z5cHE-vTuQ5bMcjCfE2kgwZ3PRuawLPucXY,20466
10
10
  sky/execution.py,sha256=NIAywx4e3dOWv6eW2mc55nCcdaVl2gh0e_BO78w5BxY,35087
11
- sky/global_user_state.py,sha256=QghWYuGUqxU_HF0dVMmVXZNu0ATDEMr4sbihy83Pifw,101524
11
+ sky/global_user_state.py,sha256=Lc6NkhTNpW9ki-kEH7VYP-avK1BH8sUZPZ7hSRWBVUc,102511
12
12
  sky/models.py,sha256=ZKisLai7vqUr6_BPev6Oziu5N23WLzTh9nRtHSlRchw,3999
13
13
  sky/optimizer.py,sha256=iR57bL_8BeG6bh1sH3J6n6i65EBFjmyftezYM4nnDZA,64150
14
14
  sky/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -37,7 +37,7 @@ sky/adaptors/vast.py,sha256=tpvmHi7IkQNzbbHVkeo04kUSajoEpSzXr2XgeO_I1LU,695
37
37
  sky/adaptors/vsphere.py,sha256=zJP9SeObEoLrpgHW2VHvZE48EhgVf8GfAEIwBeaDMfM,2129
38
38
  sky/backends/__init__.py,sha256=l1xXpkzPFMma0ZkT4GzVMu7uvgS3AsECg6zLc0S3JHQ,702
39
39
  sky/backends/backend.py,sha256=6bvW1K1hVgxWiD4B8NiBD8OJ9ihfEdhyY5p60-3aQf4,8433
40
- sky/backends/backend_utils.py,sha256=9IsLdldvRha0iydu8x0GnyywDdFEKm41tdUhSlYFaFU,176120
40
+ sky/backends/backend_utils.py,sha256=osrNzT8w03ZZHq35YCx69p4F70yIKTsEKj1pq0t0r_M,176246
41
41
  sky/backends/cloud_vm_ray_backend.py,sha256=h24UBmdG1dG7reIKKJlZG0uz7XsMV7di33x6FkSCeMI,301736
42
42
  sky/backends/docker_utils.py,sha256=_EhM6NStZDAwcegppQqExaB5iuSn1qL4xFFUqXAz2Uk,8392
43
43
  sky/backends/local_docker_backend.py,sha256=EyLYwJSihhOEOwpgzXVtykjByEJuZOrqEr9N0cta3k4,17563
@@ -81,13 +81,13 @@ sky/catalog/data_fetchers/fetch_seeweb.py,sha256=jzFpZy5Fb0UCFdRUFTqoZGsPzlaIAjv
81
81
  sky/catalog/data_fetchers/fetch_vast.py,sha256=xoVDSsQVgMLzyibCFN7yDgyH1Y96gk5G53to1ZAGRyg,5017
82
82
  sky/catalog/data_fetchers/fetch_vsphere.py,sha256=Yf7tKzwJsQ_4f64IT1EAP108C1D3Rg35RUIwp7UX8KI,21438
83
83
  sky/client/__init__.py,sha256=pz6xvVSd9X-gwqbsDL0E9QOojYqM0KAD0j-NCyCIF1k,38
84
- sky/client/common.py,sha256=aYkFeiWgiyJTXm25z_o3ISrvMA-SthbggmKG6qPtwj8,16740
84
+ sky/client/common.py,sha256=j8ENgeRN3KdKBf0-pi1K9w1HtkqrkBR12QtF_wGWG8M,16950
85
85
  sky/client/oauth.py,sha256=sNJ_DMsSTcxluj5FeNQ2IafZJLImRFmCAZ79bXeABn4,2871
86
- sky/client/sdk.py,sha256=-o2DHXUHil8mPxG2sLKwhC4gyT1NLRFnLfiaqJEJbR4,107519
86
+ sky/client/sdk.py,sha256=T7EYx9EKO7FKy_YT4LJDXcgRQQxEQzsVZGGZBBH9d6E,107621
87
87
  sky/client/sdk_async.py,sha256=9ThZq9kmaXjB5T__7Gmcgvqlr_T8JEPsPXPaFo58Rk8,31100
88
88
  sky/client/service_account_auth.py,sha256=5jXk0G6ufuW-SHCO7BEHQeTO0_2a8KfFmA63auXFRj4,1529
89
89
  sky/client/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
- sky/client/cli/command.py,sha256=5lzqDcldrDsqFyimUeuQsiJQ3h4uakW7hitKbodsvRc,249441
90
+ sky/client/cli/command.py,sha256=s2BHJot_2GAxBiiqIHUlSeyKXa6KJlz51iD3rOAoqPQ,249732
91
91
  sky/client/cli/deprecation_utils.py,sha256=H_d5UyF2CekEoThduAzt5cihBO8hwKYMu0-Wqfbjv5E,3370
92
92
  sky/client/cli/flags.py,sha256=lLXHooU4HEslbHJuGAiCrKYkJZx99hAKaJbstw7s1bc,12136
93
93
  sky/clouds/__init__.py,sha256=hX6oZM4U6WuXQclg9-8mP2OAeFbzTbaVuPzJxqudKIc,1750
@@ -118,20 +118,20 @@ sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4
118
118
  sky/clouds/utils/gcp_utils.py,sha256=09MF4Vx0EW7S-GXGpyxpl2aQlHrqeu9ioV0nyionAyk,9890
119
119
  sky/clouds/utils/oci_utils.py,sha256=TFqAqRLggg4Z0bhxrrq8nouSSomZy-ub1frHXEkud2M,7302
120
120
  sky/clouds/utils/scp_utils.py,sha256=VGuccVO5uFGr8-yolWSoYrgr11z6cIeDBGcqkBzAyOs,18409
121
- sky/dashboard/out/404.html,sha256=QtbJvKFfsbVXP10N1gH5cD2jra5g0qfwLqYaVbOLw7w,1423
122
- sky/dashboard/out/clusters.html,sha256=WMIvK5gjLD3UDLchLWWU_mw4c4dsweSvKsai8jfZ1es,1418
123
- sky/dashboard/out/config.html,sha256=tN7BiP_JvhkHxCDwmL_xI55FPxCuqVz7qLPs4kttkiM,1414
121
+ sky/dashboard/out/404.html,sha256=j1FmpIHZ8tqQ7uzP6e4qYdgHSITKVM-srSd9wwT1lnk,1423
122
+ sky/dashboard/out/clusters.html,sha256=uyvxY-4mq32q2yMCtwHfEbNOOoxuUE-TWGnslzEv-yY,1418
123
+ sky/dashboard/out/config.html,sha256=SGJ-SbCHyZt3r2Ite0jaVMWiKJLSdXuvb6TA3292c-s,1414
124
124
  sky/dashboard/out/favicon.ico,sha256=XilUZZglAl_1zRsg85QsbQgmQAzGPQjcUIJ-A3AzYn8,93590
125
- sky/dashboard/out/index.html,sha256=XLTvVn5_SHAtOuVuZ78mMggAxqqIqH5DwMKahsHDsTc,1407
126
- sky/dashboard/out/infra.html,sha256=o4YxP26aupY_mYkAZv_FDTmEK4fL5A8RkU1RD4ss3jQ,1412
127
- sky/dashboard/out/jobs.html,sha256=1XSlFRsdTNXGIK33QNrQQIQyEkbWE-_KtnxQJgm-9fk,1410
125
+ sky/dashboard/out/index.html,sha256=h2KEu7h-jUQSEJtrT1y8dTQXRff85notBMrNQCxdefU,1407
126
+ sky/dashboard/out/infra.html,sha256=xAjw88z6T_yd9YiO_IAvK8sDC977eNoZpYQuJP6OKxY,1412
127
+ sky/dashboard/out/jobs.html,sha256=1K4pNsxWiWB3tknC0gsq4qXpGXzpYtzlwoeki4umfts,1410
128
128
  sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
129
- sky/dashboard/out/users.html,sha256=YNq6mNiM4VlK_fujSP5GmvuilnD9bWe_vVKGtX_32Mg,1412
130
- sky/dashboard/out/volumes.html,sha256=z50-snYemarPJwYkCi4CPTxmbzAA3hGlqGsU5tcygII,1416
131
- sky/dashboard/out/workspaces.html,sha256=tZQ5YPFP0JkujlkTEcgSxYSB-6ImHfx4jyzkQVdgzn0,1422
132
- sky/dashboard/out/_next/static/bn-NHt5qTzeTN2PefXuDA/_buildManifest.js,sha256=hCxtSLctB9yS_nLcBwiuJ5CINiAQmNCc3zyszG7hNww,2428
133
- sky/dashboard/out/_next/static/bn-NHt5qTzeTN2PefXuDA/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
134
- sky/dashboard/out/_next/static/chunks/1121-b911fc0a0b4742f0.js,sha256=eMTIb1p_HT5n1oxX9KTp7PIVFZ2b-7X-1145ljT9Btw,8824
129
+ sky/dashboard/out/users.html,sha256=dWVmL888KaFitx2fF0dzo_GCA5tNWsKw1o_MXPLgBwc,1412
130
+ sky/dashboard/out/volumes.html,sha256=LWby354l0oPPdL7Audo3YtmsynS1cKr1BFIQtjckm0M,1416
131
+ sky/dashboard/out/workspaces.html,sha256=imFmUD30DiZ_4WBmmAMldoVFHbnVx6FdO5JEbfDhMyE,1422
132
+ sky/dashboard/out/_next/static/VXU6_xE28M55BOdwmUUJS/_buildManifest.js,sha256=2VOffezYWwqKP0NKG6tfQPnNZnMOt7zo80K1WvXbqzM,2428
133
+ sky/dashboard/out/_next/static/VXU6_xE28M55BOdwmUUJS/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
134
+ sky/dashboard/out/_next/static/chunks/1121-d0782b9251f0fcd3.js,sha256=jIvnDxaTleAz3HdZK9-RScSB0ZMg8-D63KQmn8avaHI,8883
135
135
  sky/dashboard/out/_next/static/chunks/1141-159df2d4c441a9d1.js,sha256=kdYh_Ek9hdib5emC7Iezojh3qASBnOIUHH5zX_ScR0U,17355
136
136
  sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js,sha256=VJ6y-Z6Eg2T93hQIRfWAbjAkQ7nQhglmIaVbEpKSILY,38451
137
137
  sky/dashboard/out/_next/static/chunks/1836-37fede578e2da5f8.js,sha256=2ibdKVUjO2N62T4dtfY0xsRFwG-IJh41sK450Dv0_48,10554
@@ -160,13 +160,13 @@ sky/dashboard/out/_next/static/chunks/754-d0da8ab45f9509e9.js,sha256=R6UUmK1P1Pf
160
160
  sky/dashboard/out/_next/static/chunks/7669.1f5d9a402bf5cc42.js,sha256=FbppLXkHKPxzVKrJg15FwCoqLU18yn5jBgYgDkjqDGM,52179
161
161
  sky/dashboard/out/_next/static/chunks/8969-d8bc3a2b9cf839a9.js,sha256=zlNQBdtDWArQvpMDp0STGPDJ3DtCsWOwwGhqUwiI694,13411
162
162
  sky/dashboard/out/_next/static/chunks/9025.c12318fb6a1a9093.js,sha256=1Txv8nMuBYtB0UoWdwmFbkA2iB85jgKB1EJJrE1ETDo,10605
163
- sky/dashboard/out/_next/static/chunks/9037-472ee1222cb1e158.js,sha256=dM8Nxccil5uKAum598vcOVEfbnuoC41dSKyuxT3S3cs,18957
163
+ sky/dashboard/out/_next/static/chunks/9037-d0c00018a5ba198c.js,sha256=6P21MKO405fAX4VTgiwOI6OMzey3HW2TfPvOMUMmUVQ,19843
164
164
  sky/dashboard/out/_next/static/chunks/fd9d1056-86323a29a8f7e46a.js,sha256=2lquiZSfbI-gX4j4TW4JSMLL_D5ShqwydgWpFyXrTy8,172834
165
165
  sky/dashboard/out/_next/static/chunks/framework-cf60a09ccd051a10.js,sha256=_QbamfAbTV4_xMVOTjz0rhiAPAi8ET5MuSNjjW5oMng,140965
166
166
  sky/dashboard/out/_next/static/chunks/main-app-587214043926b3cc.js,sha256=t7glRfataAjNw691Wni-ZU4a3BsygRzPKoI8NOm-lsY,116244
167
167
  sky/dashboard/out/_next/static/chunks/main-f15ccb73239a3bf1.js,sha256=jxOPLDVX3rkMc_jvGx2a-N2v6mvfOa8O6V0o-sLT0tI,110208
168
168
  sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
169
- sky/dashboard/out/_next/static/chunks/webpack-16ba1d7187d2e3b1.js,sha256=7wbv7mZIrVjZ4fAHZaebMFiCkSOse-mryvrTsuSDguI,4742
169
+ sky/dashboard/out/_next/static/chunks/webpack-8e64d11e58eab5cb.js,sha256=iVnZXu5Q8BDmUOV-UCi0MjABZiWI5MK1DAYhcxITIZQ,4742
170
170
  sky/dashboard/out/_next/static/chunks/pages/_app-ce361c6959bc2001.js,sha256=mllo4Yasw61zRtEO49uE_MrAutg9josSJShD0DNSjf0,95518
171
171
  sky/dashboard/out/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js,sha256=vjERjtMAbVk-19LyPf1Jc-H6TMcrSznSz6brzNqbqf8,253
172
172
  sky/dashboard/out/_next/static/chunks/pages/clusters-469814d711d63b1b.js,sha256=p8CQtv5n745WbV7QdyCapmglI2s_2UBB-f_KZE4RAZg,879
@@ -178,21 +178,21 @@ sky/dashboard/out/_next/static/chunks/pages/users-018bf31cda52e11b.js,sha256=mZu
178
178
  sky/dashboard/out/_next/static/chunks/pages/volumes-739726d6b823f532.js,sha256=URJ4PMHh15XCXB6os2a7ymR3mG3MfTNrKyizYEhW2OE,836
179
179
  sky/dashboard/out/_next/static/chunks/pages/workspaces-7528cc0ef8c522c5.js,sha256=y_qEXM9YPRja20D8IVLj8mgIEHQPQr2Le733bVrsXJw,863
180
180
  sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-e052384df65ef200.js,sha256=i9XnmK5y5f83bYYZIAdMHPsPixB5FcTgOPKtIl3ADFM,19942
181
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-2cb9b15e09cda628.js,sha256=qLvofPlKn4aYhGO65ME5UFdC--lzzM2lXlISYwFY4dk,26027
181
+ sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-ad77b12fc736dca3.js,sha256=DJ5SwyD8Jl58gx8M3uU1aBAaQJX6fL_fjFlIEXpLXA4,26086
182
182
  sky/dashboard/out/_next/static/chunks/pages/infra/[context]-6563820e094f68ca.js,sha256=P3fWbG3DX-Q1SusyuaCuJILvs9suIxNsdo1SRAenZpc,847
183
183
  sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-dd64309c3fe67ed2.js,sha256=pDCMgJauG-gMgWzCSTF3CBcc_WduZw75NhuyRBbm8bg,29203
184
184
  sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-07349868f7905d37.js,sha256=Q0LIzBnqZxcH4wL87way-kjcfK74u2K75ytBzz4W0PY,25590
185
185
  sky/dashboard/out/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js,sha256=83s5N5CZwIaRcmYMfqn2we60n2VRmgFw6Tbx18b8-e0,762
186
186
  sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-af76bb06dbb3954f.js,sha256=cGCpDszMI6ckUHVelwAh9ZVk1erfz_UXSLz9GCqGUAE,1495
187
187
  sky/dashboard/out/_next/static/css/4614e06482d7309e.css,sha256=nk6GriyGVd1aGXrLd7BcMibnN4v0z-Q_mXGxrHFWqrE,56126
188
- sky/dashboard/out/clusters/[cluster].html,sha256=o_ioOW5XPPRfeGgqrPWd8O5HAcn12XXEHdmXIg0b2ag,2936
189
- sky/dashboard/out/clusters/[cluster]/[job].html,sha256=NrJdgBmdFMgn3R3LnVAV2G950K8HGv8wsSGfSE92fSA,2073
190
- sky/dashboard/out/infra/[context].html,sha256=wgGANkMh6y2z6nfD_iiuOImO4rE4iLD2wcK8xxQVC1I,1436
191
- sky/dashboard/out/jobs/[job].html,sha256=VDa8W4itk4SDvaquLYURDYgM18fvcVY4-2upCEq4fvc,2304
192
- sky/dashboard/out/jobs/pools/[pool].html,sha256=fY3gl8BtZizc4J5ViiQuBjGa_LR4dOkcONl_vr6V7ME,2142
188
+ sky/dashboard/out/clusters/[cluster].html,sha256=0FdegFVZqZ8-93X5sdOW2XQ6km0s2Srv2JQzFLt0kng,2936
189
+ sky/dashboard/out/clusters/[cluster]/[job].html,sha256=M0C5NvVDSgKNLDDV3IDd6APdN2FTvEVt3vG3SWIHpl4,2073
190
+ sky/dashboard/out/infra/[context].html,sha256=l-3tLT9GQOlcVUiW8_SeBWg0o_0nIFPiAqxkMhDItdE,1436
191
+ sky/dashboard/out/jobs/[job].html,sha256=YkiySFCOVLyNw1osIrSWb-ZmyTSEvNZeH4Kafjm4ceQ,2304
192
+ sky/dashboard/out/jobs/pools/[pool].html,sha256=YGjVcFNdruCVYJCaEvyClbEk51BJD2N6PUZqkOX5xN8,2142
193
193
  sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
194
- sky/dashboard/out/workspace/new.html,sha256=qADWRLJe4zLwRvEQE4tfykQMmJAy7UybTwgmSN7Lc14,1428
195
- sky/dashboard/out/workspaces/[name].html,sha256=Iz907qYuHi-DOgN2wHvmWqnjXs64haodFMhffH6cNH8,2759
194
+ sky/dashboard/out/workspace/new.html,sha256=tt5ucivgKN-S48YbNmJKW2X4Xwfj_GzQnVJlNtgF7MI,1428
195
+ sky/dashboard/out/workspaces/[name].html,sha256=am7TjP_9iW-8LayUfOdcTiPaW9RYezRtDXwecCfSbds,2759
196
196
  sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
197
197
  sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
198
198
  sky/data/data_utils.py,sha256=AjEA_JRjo9NBMlv-Lq5iV4lBED_YZ1VqBR9pG6fGVWE,35179
@@ -200,8 +200,8 @@ sky/data/mounting_utils.py,sha256=QZjcSNB3HiQgzIodbx0I-IyKaW_XUzUuNTpgJAZAfEk,24
200
200
  sky/data/storage.py,sha256=T26wy8eFQRaP-gH1PPp6fhIaVdPfyeb0RKvKf8oZjl0,208910
201
201
  sky/data/storage_utils.py,sha256=YVLrBdZvQr5wvug0TYOpuSuSriySIiqkD-xsdAIB84s,14978
202
202
  sky/jobs/__init__.py,sha256=BiABNdlab7xZDOv4C34kc1XuxG6C_Ip7Q96mT2iCnIg,1686
203
- sky/jobs/constants.py,sha256=5ok5fqByL2pM8B5bR5QTklZMnHubkPtCQFF9Dv7uJiY,3439
204
- sky/jobs/controller.py,sha256=zuhDjJ8Cxc04-43i8ACeucTTDAbGdqIHTrmKG_-9Nag,55836
203
+ sky/jobs/constants.py,sha256=74kv_hCMbzDCYIXqa8Tc2BmECweNZIO2s5mP0IDunmg,3500
204
+ sky/jobs/controller.py,sha256=G9uaLk8hkc5MTSgMTcU5EHbA5mzQsws11FGGPBiaK0E,56048
205
205
  sky/jobs/recovery_strategy.py,sha256=w8HqSnnVJ10nH-ENFO3NpIM70cyxBzTijzH6EFggiaM,36948
206
206
  sky/jobs/scheduler.py,sha256=rUait5vQoIxAMuxWDRkR6DtFpmmVqQHxECHyhhrY9HI,16564
207
207
  sky/jobs/state.py,sha256=LTpmMrEdFoaXXrPDVWM9yzBpBkFkYRj3RAJr-iBvBnc,77472
@@ -210,7 +210,7 @@ sky/jobs/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
210
210
  sky/jobs/client/sdk.py,sha256=IL2zVKiXLbgiZY0ewCPv42dFvQ5FAB_QwwGwZlMqMBo,17071
211
211
  sky/jobs/client/sdk_async.py,sha256=hsyPshdpbKG0RUzw2ntDeAJAkOIl-O9WDoSREV_km3o,4875
212
212
  sky/jobs/server/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
213
- sky/jobs/server/core.py,sha256=-UV0_e05t4Ww2x3O5762JIFcr7uwtzg-g_TqBjU3atI,43445
213
+ sky/jobs/server/core.py,sha256=CnDjJmFTERoMs0RFUonG6m3Ua2fpD9tlGiSnwN4-6nE,43567
214
214
  sky/jobs/server/server.py,sha256=mklShi9XBUyyF8Wv_hdK8ag0_8mK4Bh769NzGLWYBeg,8890
215
215
  sky/jobs/server/utils.py,sha256=eb4QSaNQb-d_m8yJFt2Q8iaj6xkJrxz1v2b7Iq2nhmM,3573
216
216
  sky/logs/__init__.py,sha256=zW4gAEvWDz5S53FlLp3krAuKrmTSJ0e3kZDnhxSbW4E,722
@@ -292,7 +292,7 @@ sky/provision/primeintellect/__init__.py,sha256=gzCdC0CBJ2au7JA5ZvKlQY0vJuoNe5WA
292
292
  sky/provision/primeintellect/config.py,sha256=IsPoOAdTFHx8k6VsaNgOJItFS0Z0V6cjwFH9QQ8k7PE,330
293
293
  sky/provision/primeintellect/instance.py,sha256=GjvlOwlT4PTtQfk61X1v94HrFDvA1o_pxsu4GDvcLhI,18318
294
294
  sky/provision/primeintellect/utils.py,sha256=-5rrZ3hTchqcyJasJtv2PRKxj938A_ZcWmF6hfQRgzQ,15320
295
- sky/provision/runpod/__init__.py,sha256=Rq8uoito8KvrN57JCO4_HEjV3XlNc6LH1Ac493csNO8,721
295
+ sky/provision/runpod/__init__.py,sha256=fAIjLnvrRIUXKxz4yIS_VrdlYqPu0wGeKmXjsoXYpS8,847
296
296
  sky/provision/runpod/config.py,sha256=9ulZJVL7nHuxhTdoj8D7lNn7SdicJ5zc6FIcHIG9tcg,321
297
297
  sky/provision/runpod/instance.py,sha256=FjQxgZ8TSmH7rwUqyOYiXji5YOlntzOfpSXVYHpv7cA,11238
298
298
  sky/provision/runpod/utils.py,sha256=rScHrVpM__V_a4m1LDKaOJZVQIBquFxfc0tfIPVfh1Q,14127
@@ -340,6 +340,7 @@ sky/schemas/db/global_user_state/005_cluster_event.py,sha256=ceIhoILBxESCIhhEXSE
340
340
  sky/schemas/db/global_user_state/006_provision_log.py,sha256=oj5Av1Zn58k_BWQqXpYB--8O4JrlUYXY5ndLCNU-ziM,1252
341
341
  sky/schemas/db/global_user_state/007_cluster_event_request_id.py,sha256=LpXRCAzQZ1ly3dR-kMlMNHuEgiGpPdF7tA2sbMxa6_M,900
342
342
  sky/schemas/db/global_user_state/008_skylet_ssh_tunnel_metadata.py,sha256=z8yfOVHFyaZlt4K-93nCLPPXcgeJMrg1MySET5pXEe0,937
343
+ sky/schemas/db/global_user_state/009_last_activity_and_launched_at.py,sha256=Q45bY_9_yRnZRpWBYDB4-GQhFkJggqzlhyaoeQMR8MU,3297
343
344
  sky/schemas/db/serve_state/001_initial_schema.py,sha256=9vy5hO4Zqe-DN-33vBJQTvgJnDFcTgz18gKfO3UB62g,2595
344
345
  sky/schemas/db/spot_jobs/001_initial_schema.py,sha256=eHT3GxFHQhySA1rO5uZq9QlloJdtTMQp93f0CRmayf8,3759
345
346
  sky/schemas/db/spot_jobs/002_cluster_pool.py,sha256=9ef0D_lUb4WB0e9uz8E0my_X4cgK_oX-WIj4p8usbOA,1369
@@ -395,7 +396,7 @@ sky/server/html/token_page.html,sha256=eUndS5u1foL9vaWGPRTLMt7lCzD1g0wYJ2v_EeeFz
395
396
  sky/server/requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
396
397
  sky/server/requests/event_loop.py,sha256=OhpPbuce65bbjpGRlcJa78AVnYSm08SzFKt70ypCUuQ,1211
397
398
  sky/server/requests/executor.py,sha256=0TVY8OhASBtBqFPUlvBu0BjyqKfKQfJuLck2DAuu-yw,33070
398
- sky/server/requests/payloads.py,sha256=2dcBva_n8YQ9HQaWuRsB73uRuV8dHZohUOH9I7MWR-w,27985
399
+ sky/server/requests/payloads.py,sha256=4ZXDJuu35lQiQ06aJNfTzSGQxCGSxZZgBsAWcf3nKJc,28022
399
400
  sky/server/requests/preconditions.py,sha256=En-mSIe8JXDkiRCMlpgyJGFgYDnhthGReihV5u0oqy8,7283
400
401
  sky/server/requests/process.py,sha256=UpJp5rZizNMFRCNRtudFSjbcJhFarFbtAGDWI9x_ZyE,13197
401
402
  sky/server/requests/requests.py,sha256=wqiAiH4miFz3C2ZC5tDK-YQgAVMnpbE0wBiKx0nI39c,30146
@@ -407,15 +408,15 @@ sky/server/requests/serializers/decoders.py,sha256=3SSfn1S1H0zEwncMRw3D8pfyqz_sW
407
408
  sky/server/requests/serializers/encoders.py,sha256=nAiFssF3UD6dt0LdiGVpvpod90HmnyXZVZ2fO-UE8iA,7900
408
409
  sky/setup_files/MANIFEST.in,sha256=4gbgHHwSdP6BbMJv5XOt-2K6wUVWF_T9CGsdESvh918,776
409
410
  sky/setup_files/alembic.ini,sha256=854_UKvCaFmZ8vI16tSHbGgP9IMFQ42Td6c9Zmn2Oxs,5079
410
- sky/setup_files/dependencies.py,sha256=IlCl_59KawrcDMcYTp0SUi-nyYHxfxVNtNlmFbI4xoo,8881
411
+ sky/setup_files/dependencies.py,sha256=sgsKCFkGlZXFm1xi50X9TvwM4L_pIhxls-ySAbfZJ94,8888
411
412
  sky/setup_files/setup.py,sha256=4M8u9Y4wwmFCJk-EfsnMWtpNq7ynzqbjdVTKW3w5GXA,7820
412
413
  sky/skylet/LICENSE,sha256=BnFrJSvUFpMUoH5mOpWnEvaC5R6Uux8W6WXgrte8iYg,12381
413
414
  sky/skylet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
414
415
  sky/skylet/attempt_skylet.py,sha256=BbnCgMDGc1wxZx6Olp7ezhsXC0E1aYhmfug-9NrJ00g,2137
415
416
  sky/skylet/autostop_lib.py,sha256=2eab980ckQ5dA2DFAJlI5bAJ6EI7YI-JSlzFoTA9XwU,9698
416
417
  sky/skylet/configs.py,sha256=nNBnpuzoU696FbC3Nv0qKVSDuTw4GAbr7eCcg0_Sldo,2135
417
- sky/skylet/constants.py,sha256=yOu9a0USOjzJcHrRCqKHjJmw-zxgd-yhgfScgrBDJsA,24668
418
- sky/skylet/events.py,sha256=2BX2fr-vLpu2kAP3D4W6DmLPVa0jmZAotZ7g_cTIwqg,13558
418
+ sky/skylet/constants.py,sha256=4iMNVMHpNEtXDWYvxScAw7rDsNPt5z0Yyy8eL6jQOgs,24823
419
+ sky/skylet/events.py,sha256=9MFVSSzHZNPPuS5mKjCRdpJv9i5pou7Hk7qxL-0u1F8,15826
419
420
  sky/skylet/job_lib.py,sha256=-qzv1nCGrrN5zB8ZueBFlLDOlmQtP7DRuCu62GrJQus,54232
420
421
  sky/skylet/log_lib.py,sha256=EC-Vmnz86Uz5SLpiz9p14J3owBaF-GbFkyixQ3KfPqg,23775
421
422
  sky/skylet/log_lib.pyi,sha256=OI4izel66u3Rr3H6OFXRIJfmM8HJD30VPpdlfwqM3IU,4762
@@ -454,11 +455,11 @@ sky/templates/fluidstack-ray.yml.j2,sha256=dNr9svMNp0z6-PHyQeRa6Hl3SbgqMESgBdfpv
454
455
  sky/templates/gcp-ray.yml.j2,sha256=WO07ZUGBS6mWCMcdrmcXNGKSNTxhmOb6lMqwycnEFc4,11860
455
456
  sky/templates/hyperbolic-ray.yml.j2,sha256=ThGcxd9m6RbgnZcT6imdikimwRhO5baYrP2h3Wx4HXM,2488
456
457
  sky/templates/ibm-ray.yml.j2,sha256=n_EsoqQx1DUPDh7ZgCxvlEEZnROJ4rBXrFcHYVRIN2c,6907
457
- sky/templates/jobs-controller.yaml.j2,sha256=1MCDvL9GAlggGXRDEHr66RUX7n9WrDrc2JrRZ-nCBOw,2816
458
+ sky/templates/jobs-controller.yaml.j2,sha256=Yif85ihH1Q7YziQ55-KkLaBkkbZUrtE5lmQf8vYpAwM,2935
458
459
  sky/templates/kubernetes-ingress.yml.j2,sha256=73iDklVDWBMbItg0IexCa6_ClXPJOxw7PWz3leku4nE,1340
459
460
  sky/templates/kubernetes-loadbalancer.yml.j2,sha256=Dc44sC_-EwDG69eZoD4pkLKQjzxH_qrlhd-rZ2gePJc,804
460
461
  sky/templates/kubernetes-port-forward-proxy-command.sh,sha256=iw7mypHszg6Ggq9MbyiYMFOkSlXaQZulaxqC5IWYGCc,3381
461
- sky/templates/kubernetes-ray.yml.j2,sha256=HFmDr10DebUqi5Mhd9sAG86K4hbwe_CsnzFJp6Pv4O0,64227
462
+ sky/templates/kubernetes-ray.yml.j2,sha256=DlNsBu4nUSTCG5FIdYq-v4-98vScv4S60Ol3s6OQN24,64776
462
463
  sky/templates/kubernetes-ssh-jump.yml.j2,sha256=k5W5sOIMppU7dDkJMwPlqsUcb92y7L5_TVG3hkgMy8M,2747
463
464
  sky/templates/lambda-ray.yml.j2,sha256=PbUjxrGhyxhXxL2cmONAI_PRsua3I3Xr5V8yoEy7H6c,4760
464
465
  sky/templates/local-ray.yml.j2,sha256=FNHeyHF6nW9nU9QLIZceUWfvrFTTcO51KqhTnYCEFaA,1185
@@ -531,8 +532,8 @@ sky/utils/aws/get_default_security_group.py,sha256=LPzz5133ZUMbzDD3iqqACL9Pdlgqi
531
532
  sky/utils/cli_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
532
533
  sky/utils/cli_utils/status_utils.py,sha256=_hdPmlFC3YOnJkttHx2GMGc9lBQqRWY8WTWc1ZWR4GI,16183
533
534
  sky/utils/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
534
- sky/utils/db/db_utils.py,sha256=2zGbjZ50fmstGuXSNXO4vY13ZlrXueNdgIPcbsUT6go,16324
535
- sky/utils/db/migration_utils.py,sha256=oAwIf4SXDUafX3ys6c6iakPSXnXfzBm3aPLauzRXnRk,4438
535
+ sky/utils/db/db_utils.py,sha256=TMmgKOKpuKOscXGM6Hu-7ZTVTyfbBib-eiysNQqDQ60,16504
536
+ sky/utils/db/migration_utils.py,sha256=5MkXajbf9WGbZCnUZr7ntTr_d0ynDg3pnHvoPwgez4w,4438
536
537
  sky/utils/kubernetes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
537
538
  sky/utils/kubernetes/cleanup-tunnel.sh,sha256=rXMXuMfyB9bzKjLvXdMCjimDVvdjGPMXuqeo2ZNx9OA,2244
538
539
  sky/utils/kubernetes/config_map_utils.py,sha256=Qq-Glt1SeYDfhcCqcpRtBDRPum0CYR50gpoa_Xm7u1s,4754
@@ -545,26 +546,26 @@ sky/utils/kubernetes/generate_kubeconfig.sh,sha256=JnHiFJ8RTULB55jpbbmQrixzxLpc2
545
546
  sky/utils/kubernetes/gpu_labeler.py,sha256=9Jr-8p8NdWhvwB9C8aCx3CB8WExOzCoRhdwCPx7G30s,10389
546
547
  sky/utils/kubernetes/k8s_gpu_labeler_job.yaml,sha256=k0TBoQ4zgf79-sVkixKSGYFHQ7ZWF5gdVIZPupCCo9A,1224
547
548
  sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml,sha256=VLKT2KKimZu1GDg_4AIlIt488oMQvhRZWwsj9vBbPUg,3812
548
- sky/utils/kubernetes/kubernetes_deploy_utils.py,sha256=2Ii8nzVI3k90kgHF7qbIeZV0BH9nlVT73Ejs93t_0kM,21134
549
+ sky/utils/kubernetes/kubernetes_deploy_utils.py,sha256=B8pjaEl1JE9uAEmIqY1kfVj7vbuztWPa8Xacdbp58sU,22142
549
550
  sky/utils/kubernetes/rsync_helper.sh,sha256=MT29sI5iD2QxYlXFwrN16oq0Er4TPFQVs4Z4A3U4a7Q,2483
550
551
  sky/utils/kubernetes/ssh-tunnel.sh,sha256=60eHKF7phJe9pFEkGlqdwWzI80tpog8QCkL7fAbIAic,12143
551
552
  sky/utils/kubernetes/ssh_jump_lifecycle_manager.py,sha256=Kq1MDygF2IxFmu9FXpCxqucXLmeUrvs6OtRij6XTQbo,6554
552
553
  sky/utils/kubernetes/ssh_utils.py,sha256=hPV2gU6j3j1aVf8kFvkux_KE88R5j8-JUDEopG6v70o,9046
553
554
  sky/volumes/__init__.py,sha256=oy7JTgRXxkK2nOOF-OWivr0xeSL1-Syz703kZEuUnn0,241
554
555
  sky/volumes/utils.py,sha256=rBUDbR2nGmoreVXGs_6DbxHKzp9Yyg36eTnsqo4JKQk,7408
555
- sky/volumes/volume.py,sha256=5b5ANhLDUAXPKxaTTX6tXkEwrqVujHU8Tpq0os-j-QM,7883
556
+ sky/volumes/volume.py,sha256=8K0EfriVslXmVnbIj0FJEv0TAoCvUpls9pSrdLAMujc,7842
556
557
  sky/volumes/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
557
558
  sky/volumes/client/sdk.py,sha256=o6facpXM6s2CYxTeVsKgkeGoXYMBK84HfYTBLnFkhCA,4148
558
559
  sky/volumes/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
559
- sky/volumes/server/core.py,sha256=CrKQdyrZwY6PpR-3iFYVn1wzhmIgpPYo5qv6gTmJtTc,9834
560
+ sky/volumes/server/core.py,sha256=IqqcmZiPo46Kz_69_P2pHubhXvwIDPYidRajil3Or5Q,9902
560
561
  sky/volumes/server/server.py,sha256=eCRCygyGeaTkrae7gxjscqTpJ3EaaRjS_mnsHBkrR5E,4552
561
562
  sky/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
562
563
  sky/workspaces/core.py,sha256=kRrdh-8MhX1953pML1B_DoStnDuNrsmHcZlnWoAxVo0,27218
563
564
  sky/workspaces/server.py,sha256=Box45DS54xXGHy7I3tGKGy-JP0a8G_z6IhfvGlEXtsA,3439
564
565
  sky/workspaces/utils.py,sha256=IIAiFoS6sdb2t0X5YoX9AietpTanZUQNTK8cePun-sY,2143
565
- skypilot_nightly-1.0.0.dev20250925.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
566
- skypilot_nightly-1.0.0.dev20250925.dist-info/METADATA,sha256=JIJJmJajl2OVLUjnu_2c_KLROzBn4IyLLhTglVTG1gg,20426
567
- skypilot_nightly-1.0.0.dev20250925.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
568
- skypilot_nightly-1.0.0.dev20250925.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
569
- skypilot_nightly-1.0.0.dev20250925.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
570
- skypilot_nightly-1.0.0.dev20250925.dist-info/RECORD,,
566
+ skypilot_nightly-1.0.0.dev20250926.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
567
+ skypilot_nightly-1.0.0.dev20250926.dist-info/METADATA,sha256=37tf3tUL8ThZYnsKNSfY22KkDTl3sjEB_M7MxX_Y0us,20433
568
+ skypilot_nightly-1.0.0.dev20250926.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
569
+ skypilot_nightly-1.0.0.dev20250926.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
570
+ skypilot_nightly-1.0.0.dev20250926.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
571
+ skypilot_nightly-1.0.0.dev20250926.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1121],{50326:function(e,t,a){a.d(t,{$N:function(){return m},Be:function(){return h},Vq:function(){return c},cN:function(){return _},cZ:function(){return d},fK:function(){return f}});var r=a(85893),s=a(67294),o=a(6327),n=a(32350),l=a(43767);let c=o.fC;o.xz;let u=o.h_;o.x8;let i=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(o.aV,{ref:t,className:(0,n.cn)("fixed inset-0 z-50 bg-black/50 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...s})});i.displayName=o.aV.displayName;let d=s.forwardRef((e,t)=>{let{className:a,children:s,...c}=e;return(0,r.jsxs)(u,{children:[(0,r.jsx)(i,{}),(0,r.jsxs)(o.VY,{ref:t,className:(0,n.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-gray-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),...c,children:[s,(0,r.jsxs)(o.x8,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100 data-[state=open]:text-gray-500",children:[(0,r.jsx)(l.Z,{className:"h-4 w-4"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});d.displayName=o.VY.displayName;let f=e=>{let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,n.cn)("flex flex-col space-y-1.5 text-center sm:text-left",t),...a})};f.displayName="DialogHeader";let _=e=>{let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,n.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...a})};_.displayName="DialogFooter";let m=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(o.Dx,{ref:t,className:(0,n.cn)("text-lg font-semibold leading-none tracking-tight",a),...s})});m.displayName=o.Dx.displayName;let h=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(o.dk,{ref:t,className:(0,n.cn)("text-sm text-gray-500",a),...s})});h.displayName=o.dk.displayName},23266:function(e,t,a){a.d(t,{GH:function(){return f},QL:function(){return m},Sl:function(){return d},getClusters:function(){return u},uR:function(){return i}});var r=a(67294),s=a(15821),o=a(47145),n=a(93225),l=a(6378);let c={UP:"RUNNING",STOPPED:"STOPPED",INIT:"LAUNCHING",null:"TERMINATED"};async function u(){let{clusterNames:e=null}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{return(await o.x.fetch("/status",{cluster_names:e,all_users:!0,include_credentials:!1,summary_response:null==e})).map(e=>{let t="",a=t=e.zone?e.zone:e.region;return t&&t.length>25&&(t=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15;if(!e||e.length<=t)return e;if(t<=3)return"...";let a=Math.floor((t-3)/2),r=a+(t-3)%2;return 0===a?e.substring(0,r)+"...":e.substring(0,r)+"..."+e.substring(e.length-a)}(t,25)),{status:c[e.status],cluster:e.name,user:e.user_name,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:e.cloud,region:e.region,infra:t?e.cloud+" ("+t+")":e.cloud,full_infra:a?"".concat(e.cloud," (").concat(a,")"):e.cloud,cpus:e.cpus,mem:e.memory,gpus:e.accelerators,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:new Date(1e3*e.launched_at),num_nodes:e.nodes,workspace:e.workspace,autostop:e.autostop,last_event:e.last_event,to_down:e.to_down,cluster_name_on_cloud:e.cluster_name_on_cloud,jobs:[],command:e.last_creation_command||e.last_use,task_yaml:e.last_creation_yaml||"{}",events:[{time:new Date(1e3*e.launched_at),event:"Cluster created."}]}})}catch(e){return console.error("Error fetching clusters:",e),[]}}async function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;try{let t={days:30,dashboard_summary_response:!0};e&&(t.cluster_hashes=[e]);let a=await o.x.fetch("/cost_report",t);console.log("Raw cluster history data:",a);let r=a.map(e=>{let t="Unknown";e.cloud?t=e.cloud:e.resources&&e.resources.cloud&&(t=e.resources.cloud);let a=e.user_name||"-";return{status:e.status?c[e.status]:"TERMINATED",cluster:e.name,user:a,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:t,region:"",infra:t,full_infra:t,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:e.launched_at?new Date(1e3*e.launched_at):null,num_nodes:e.num_nodes||1,duration:e.duration,total_cost:e.total_cost,workspace:e.workspace||"default",autostop:-1,last_event:e.last_event,to_down:!1,cluster_name_on_cloud:null,usage_intervals:e.usage_intervals,command:e.last_creation_command||"",task_yaml:e.last_creation_yaml||"{}",events:[{time:e.launched_at?new Date(1e3*e.launched_at):new Date,event:"Cluster created."}]}});return console.log("Processed cluster history data:",r),r}catch(e){return console.error("Error fetching cluster history:",e),[]}}async function d(e){let{clusterName:t,jobId:a,onNewLog:r,workspace:n}=e;try{await o.x.stream("/logs",{follow:!1,cluster_name:t,job_id:a,tail:1e4,override_skypilot_config:{active_workspace:n||"default"}},r)}catch(e){console.error("Error in streamClusterJobLogs:",e),(0,s.C)("Error in streamClusterJobLogs: ".concat(e.message),"error")}}async function f(e){let{clusterName:t,jobIds:a=null,workspace:r}=e;try{let e=await o.x.fetch("/download_logs",{cluster_name:t,job_ids:a?a.map(String):null,override_skypilot_config:{active_workspace:r||"default"}}),l=Object.values(e||{});if(!l.length){(0,s.C)("No logs found to download.","warning");return}let c=window.location.origin,u="".concat(c).concat(n.f4,"/download"),i=await fetch("".concat(u,"?relative=items"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({folder_paths:l})});if(!i.ok){let e=await i.text();throw Error("Download failed: ".concat(i.status," ").concat(e))}let d=await i.blob(),f=window.URL.createObjectURL(d),_=document.createElement("a"),m=new Date().toISOString().replace(/[:.]/g,"-"),h=a&&1===a.length?"job-".concat(a[0]):"jobs";_.href=f,_.download="".concat(t,"-").concat(h,"-logs-").concat(m,".zip"),document.body.appendChild(_),_.click(),_.remove(),window.URL.revokeObjectURL(f)}catch(e){console.error("Error downloading logs:",e),(0,s.C)("Error downloading logs: ".concat(e.message),"error")}}async function _(e){let{clusterName:t,workspace:a}=e;try{return(await o.x.fetch("/queue",{cluster_name:t,all_users:!0,override_skypilot_config:{active_workspace:a}})).map(e=>{var r;let s=e.end_at?e.end_at:Date.now()/1e3,o=0,n=0;return e.submitted_at&&(o=s-e.submitted_at),e.start_at&&(n=s-e.start_at),{id:e.job_id,status:e.status,job:e.job_name,user:e.username,user_hash:e.user_hash,gpus:e.accelerators||{},submitted_at:e.submitted_at?new Date(1e3*e.submitted_at):null,resources:e.resources,cluster:t,total_duration:o,job_duration:n,infra:"",logs:"",workspace:a||"default",git_commit:(null===(r=e.metadata)||void 0===r?void 0:r.git_commit)||"-"}})}catch(e){return console.error("Error fetching cluster jobs:",e),[]}}function m(e){let{cluster:t,job:a=null}=e,[s,o]=(0,r.useState)(null),[n,c]=(0,r.useState)(null),[i,d]=(0,r.useState)(!0),[f,m]=(0,r.useState)(!0),h=(0,r.useCallback)(async()=>{if(t)try{d(!0);let e=await l.default.get(u,[{clusterNames:[t]}]);return o(e[0]),e[0]}catch(e){console.error("Error fetching cluster data:",e)}finally{d(!1)}return null},[t]),g=(0,r.useCallback)(async e=>{if(t)try{m(!0);let a=await l.default.get(_,[{clusterName:t,workspace:e||"default"}]);c(a)}catch(e){console.error("Error fetching cluster job data:",e)}finally{m(!1)}},[t]),p=(0,r.useCallback)(async()=>{l.default.invalidate(u,[{clusterNames:[t]}]);let e=await h();e&&(l.default.invalidate(_,[{clusterName:t,workspace:e.workspace||"default"}]),await g(e.workspace))},[h,g,t]),w=(0,r.useCallback)(async()=>{s&&(l.default.invalidate(_,[{clusterName:t,workspace:s.workspace||"default"}]),await g(s.workspace))},[g,s,t]);return(0,r.useEffect)(()=>{(async()=>{let e=await h();e&&g(e.workspace)})()},[t,a,h,g]),{clusterData:s,clusterJobData:n,loading:i,clusterDetailsLoading:i,clusterJobsLoading:f,refreshData:p,refreshClusterJobsOnly:w}}},53081:function(e,t,a){a.d(t,{R:function(){return s}}),a(23266),a(68969);var r=a(47145);async function s(){try{let e=await r.x.get("/users");if(!e.ok)throw Error("HTTP error! status: ".concat(e.status));return(await e.json()).map(e=>({userId:e.id,username:e.name,role:e.role,created_at:e.created_at}))||[]}catch(e){return console.error("Failed to fetch users:",e),[]}}}}]);
@@ -1,6 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9037],{39037:function(e,s,t){t.r(s),t.d(s,{ClusterTable:function(){return I},Clusters:function(){return _},Status2Actions:function(){return V},enabledActions:function(){return F},handleVSCodeConnection:function(){return H}});var r=t(85893),a=t(67294),l=t(11163),n=t(55739),c=t(36989),i=t(41664),o=t.n(i),u=t(30803),d=t(37673),h=t(68764),x=t(23266),p=t(17324),m=t(94545),f=t(13626),j=t(60998);/**
2
- * @license lucide-react v0.407.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */let g=(0,j.Z)("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]),v=(0,j.Z)("SquareCode",[["path",{d:"M10 9.5 8 12l2 2.5",key:"3mjy60"}],["path",{d:"m14 9.5 2 2.5-2 2.5",key:"1bir2l"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);t(6135);var w=t(92128),y=t(99307),b=t(23001),k=t(88950),N=t(6378),C=t(36856);t(1272);var S=t(20546);let L=[{label:"Status",value:"status"},{label:"Cluster",value:"cluster"},{label:"User",value:"user"},{label:"Workspace",value:"workspace"},{label:"Infra",value:"infra"}],M=(e,s)=>{let t="",r="";return e>=0&&(t=e+"m",r=" "),s&&(t+="".concat(r,"(down)")),""===t&&(t="-"),t},R=(e,s)=>{if(e&&e.includes("@")){let t=e.split("@")[0];return s&&s!==t?"".concat(t," (").concat(s,")"):t}let t=e||s||"N/A";return s&&s!==t?"".concat(t," (").concat(s,")"):t},E=e=>{if(!e||0===e)return"-";let s=e=Math.floor(e),t="",r=0;for(let e of[{value:31536e3,label:"y"},{value:2592e3,label:"mo"},{value:86400,label:"d"},{value:3600,label:"h"},{value:60,label:"m"},{value:1,label:"s"}])if(s>=e.value&&r<2){let a=Math.floor(s/e.value);t+="".concat(a).concat(e.label," "),s%=e.value,r++}return t.trim()||"0s"};function _(){let e=(0,l.useRouter)(),[s,t]=(0,a.useState)(!1),i=a.useRef(null),[u,d]=(0,a.useState)(!1),[h,m]=(0,a.useState)(!1),[j,g]=(0,a.useState)(null),[v,y]=(0,a.useState)(()=>!!e.isReady&&"true"===e.query.history),[k,S]=(0,a.useState)(!0),M=(0,b.X)(),[E,_]=(0,a.useState)([]),[H,O]=(0,a.useState)({status:[],cluster:[],user:[],workspace:[],infra:[]}),[F,W]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(e.isReady){A();let s="true"===e.query.history;v!==s&&(S(!1),y(s),setTimeout(()=>S(!0),50))}},[e.isReady,e.query.history]),(0,a.useEffect)(()=>{(async()=>{try{await C.ZP.preloadForPage("clusters");let e=await N.default.get(p.getWorkspaces),s=Object.keys(e),t=await N.default.get(x.getClusters),r=[...new Set(t.map(e=>e.workspace||"default").filter(e=>e))],a=new Set(s);r.includes("default")&&a.has("default"),r.forEach(e=>a.add(e));let l=[...new Set(t.map(e=>({userId:e.user_hash||e.user,username:e.user})).filter(e=>e.userId)).values()],n=new Map;l.forEach(e=>{n.set(e.userId,{userId:e.userId,username:e.username,display:R(e.username,e.userId)})}),W(!0)}catch(e){console.error("Error fetching data for filters:",e),W(!0)}})()},[]);let V=s=>{let t={...e.query},r=[],a=[],l=[];s.map((e,s)=>{var t;r.push(null!==(t=e.property.toLowerCase())&&void 0!==t?t:""),a.push(e.operator),l.push(e.value)}),t.property=r,t.operator=a,t.value=l,e.replace({pathname:e.pathname,query:t},void 0,{shallow:!0})},Z=s=>{let t={...e.query};t.history=s.toString(),e.replace({pathname:e.pathname,query:t},void 0,{shallow:!0})},A=()=>{let s={...e.query},t=s.property,r=s.operator,a=s.value;if(void 0===t)return;let l=[],n=Array.isArray(t)?t.length:1,c=new Map;if(c.set("",""),c.set("status","Status"),c.set("cluster","Cluster"),c.set("user","User"),c.set("workspace","Workspace"),c.set("infra","Infra"),1===n)l.push({property:c.get(t),operator:r,value:a});else for(let e=0;e<n;e++)l.push({property:c.get(t[e]),operator:r[e],value:a[e]});_(l)};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mb-1 min-h-[20px]",children:[(0,r.jsx)("div",{className:"flex items-center gap-2",children:(0,r.jsx)(o(),{href:"/clusters",className:"text-sky-blue hover:underline leading-none text-base",children:"Sky Clusters"})}),(0,r.jsx)("div",{className:"w-full sm:w-auto",children:(0,r.jsx)(q,{propertyList:L,valueList:H,setFilters:_,updateURLParams:V,placeholder:"Filter clusters"})}),(0,r.jsxs)("div",{className:"flex items-center gap-2 ml-auto",children:[(0,r.jsxs)("label",{className:"flex items-center cursor-pointer",children:[(0,r.jsx)("input",{type:"checkbox",checked:v,onChange:e=>{let s=e.target.checked;y(s),Z(s)},className:"sr-only"}),(0,r.jsx)("div",{className:"relative inline-flex h-5 w-9 items-center rounded-full ".concat(k?"transition-colors":""," ").concat(v?"bg-sky-600":"bg-gray-300"),children:(0,r.jsx)("span",{className:"inline-block h-3 w-3 transform rounded-full bg-white ".concat(k?"transition-transform":""," ").concat(v?"translate-x-5":"translate-x-1")})}),(0,r.jsx)("span",{className:"ml-2 text-sm text-gray-700",children:"Show history (Last 30 days)"})]}),s&&(0,r.jsxs)("div",{className:"flex items-center",children:[(0,r.jsx)(n.Z,{size:15,className:"mt-0"}),(0,r.jsx)("span",{className:"ml-2 text-gray-500 text-sm",children:"Loading..."})]}),(0,r.jsxs)("button",{onClick:()=>{N.default.invalidate(x.getClusters),N.default.invalidate(p.getWorkspaces),v&&N.default.invalidate(x.uR),W(!1),C.ZP.preloadForPage("clusters",{force:!0}).then(()=>{W(!0),i.current&&i.current()})},disabled:s,className:"text-sky-blue hover:text-sky-blue-bright flex items-center",children:[(0,r.jsx)(f.Z,{className:"h-4 w-4 mr-1.5"}),!M&&(0,r.jsx)("span",{children:"Refresh"})]})]})]}),(0,r.jsx)(z,{filters:E,setFilters:_,updateURLParams:V}),(0,r.jsx)(I,{refreshInterval:c.yc,setLoading:t,refreshDataRef:i,filters:E,showHistory:v,onOpenSSHModal:e=>{g(e),d(!0)},onOpenVSCodeModal:e=>{g(e),m(!0)},setOptionValues:O,preloadingComplete:F}),(0,r.jsx)(w.Oh,{isOpen:u,onClose:()=>d(!1),cluster:j}),(0,r.jsx)(w._R,{isOpen:h,onClose:()=>m(!1),cluster:j})]})}function I(e){let{refreshInterval:s,setLoading:t,refreshDataRef:l,filters:i,showHistory:p,onOpenSSHModal:f,onOpenVSCodeModal:j,setOptionValues:g,preloadingComplete:v}=e,[w,b]=(0,a.useState)([]),[k,C]=(0,a.useState)({key:null,direction:"ascending"}),[L,R]=(0,a.useState)(!1),[_,I]=(0,a.useState)(!0),[H,O]=(0,a.useState)(1),[F,W]=(0,a.useState)(10),q=e=>{let s={status:[],cluster:[],user:[],workspace:[],infra:[]},t=(e,s)=>{e.includes(s)||e.push(s)};return e.map(e=>{t(s.status,e.status),t(s.cluster,e.cluster),t(s.user,e.user),t(s.workspace,e.workspace),t(s.infra,e.infra)}),s},z=a.useCallback(async()=>{t(!0),R(!0);try{let e=await N.default.get(x.getClusters);if(p){let s=await N.default.get(x.uR),t=e.map(e=>({...e,isHistorical:!1})),r=s.map(e=>({...e,isHistorical:!0})),a=[...t];r.forEach(s=>{e.some(e=>e.cluster_hash===s.cluster_hash)||a.push(s)}),g(q(a)),b(a)}else{let s=e.map(e=>({...e,isHistorical:!1}));g(q(s)),b(s)}}catch(e){console.error("Error fetching cluster data:",e),g(q([])),b([])}t(!1),R(!1),I(!1)},[t,p,g]),Z=(e,s)=>{var t;let{property:r,operator:a,value:l}=s;if(!l)return!0;if(!r){let s=l.toLowerCase();return Object.values(e).some(e=>null==e?void 0:e.toString().toLowerCase().includes(s))}let n=null===(t=e[r.toLowerCase()])||void 0===t?void 0:t.toString().toLowerCase(),c=l.toString().toLowerCase();switch(a){case"=":return n===c;case":":return null==n?void 0:n.includes(c);default:return!0}},A=a.useMemo(()=>{let e=0===i.length?w:w.filter(e=>{let s=null;for(let t=0;t<i.length;t++){let r=Z(e,i[t]);s=null===s?r:s&&r}return s});return(0,m.R0)(e,k.key,k.direction)},[w,k,i]);a.useEffect(()=>{l&&(l.current=z)},[l,z]),(0,a.useEffect)(()=>{b([]);let e=!0;if(v){z();let t=setInterval(()=>{e&&z()},s);return()=>{e=!1,clearInterval(t)}}return()=>{e=!1}},[s,z,v]),(0,a.useEffect)(()=>{O(1)},[w.length]);let P=e=>{let s="ascending";k.key===e&&"ascending"===k.direction&&(s="descending"),C({key:e,direction:s})},B=e=>k.key===e?"ascending"===k.direction?" ↑":" ↓":"",U=Math.ceil(A.length/F),D=(H-1)*F,T=D+F,X=A.slice(D,T);return(0,r.jsxs)("div",{children:[(0,r.jsx)(d.Zb,{children:(0,r.jsx)("div",{className:"overflow-x-auto rounded-lg",children:(0,r.jsxs)(h.iA,{className:"min-w-full",children:[(0,r.jsx)(h.xD,{children:(0,r.jsxs)(h.SC,{children:[(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>P("status"),children:["Status",B("status")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>P("cluster"),children:["Cluster",B("cluster")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>P("user"),children:["User",B("user")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>P("workspace"),children:["Workspace",B("workspace")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>P("infra"),children:["Infra",B("infra")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>P("resources_str"),children:["Resources",B("resources_str")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>P("time"),children:["Started",B("time")]}),p&&(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>P("duration"),children:["Duration",B("duration")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>P("autostop"),children:["Autostop",B("autostop")]}),(0,r.jsx)(h.ss,{className:"md:sticky md:right-0 md:bg-white",children:"Actions"})]})}),(0,r.jsx)(h.RM,{children:L||!v?(0,r.jsx)(h.SC,{children:(0,r.jsx)(h.pj,{colSpan:9,className:"text-center py-6 text-gray-500",children:(0,r.jsxs)("div",{className:"flex justify-center items-center",children:[(0,r.jsx)(n.Z,{size:20,className:"mr-2"}),(0,r.jsx)("span",{children:"Loading..."})]})})}):X.length>0?X.map((e,s)=>(0,r.jsxs)(h.SC,{children:[(0,r.jsx)(h.pj,{children:(0,r.jsx)(y.OE,{status:e.status})}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(o(),{href:"/clusters/".concat(e.isHistorical?e.cluster_hash:e.cluster||e.name),className:"text-blue-600",children:e.cluster||e.name})}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(S.H,{username:e.user,userHash:e.user_hash})}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(o(),{href:"/workspaces",className:"text-gray-700 hover:text-blue-600 hover:underline",children:e.workspace||"default"})}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(c.Md,{content:e.full_infra||e.infra,className:"text-sm text-muted-foreground",children:(0,r.jsxs)("span",{children:[(0,r.jsx)(o(),{href:"/infra",className:"text-blue-600 hover:underline",children:e.cloud}),e.infra.includes("(")&&(0,r.jsx)("span",{children:" "+e.infra.substring(e.infra.indexOf("("))})]})})}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(c.Md,{content:e.resources_str_full||e.resources_str,className:"text-sm text-muted-foreground",children:(0,r.jsx)("span",{children:e.resources_str})})}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(c.Zg,{date:e.time})}),p&&(0,r.jsx)(h.pj,{children:E(e.duration)}),(0,r.jsx)(h.pj,{children:e.isHistorical?"-":M(e.autostop,e.to_down)}),(0,r.jsx)(h.pj,{className:"text-left md:sticky md:right-0 md:bg-white",children:!e.isHistorical&&(0,r.jsx)(V,{cluster:e.cluster,status:e.status,onOpenSSHModal:f,onOpenVSCodeModal:j})})]},s)):(0,r.jsx)(h.SC,{children:(0,r.jsx)(h.pj,{colSpan:9,className:"text-center py-6 text-gray-500",children:p?"No clusters found":"No active clusters"})})})]})})}),w.length>0&&(0,r.jsx)("div",{className:"flex justify-end items-center py-2 px-4 text-sm text-gray-700",children:(0,r.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,r.jsxs)("div",{className:"flex items-center",children:[(0,r.jsx)("span",{className:"mr-2",children:"Rows per page:"}),(0,r.jsxs)("div",{className:"relative inline-block",children:[(0,r.jsxs)("select",{value:F,onChange:e=>{W(parseInt(e.target.value,10)),O(1)},className:"py-1 pl-2 pr-6 appearance-none outline-none cursor-pointer border-none bg-transparent",style:{minWidth:"40px"},children:[(0,r.jsx)("option",{value:10,children:"10"}),(0,r.jsx)("option",{value:30,children:"30"}),(0,r.jsx)("option",{value:50,children:"50"}),(0,r.jsx)("option",{value:100,children:"100"}),(0,r.jsx)("option",{value:200,children:"200"})]}),(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4 text-gray-500 absolute right-0 top-1/2 transform -translate-y-1/2 pointer-events-none",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})]}),(0,r.jsx)("div",{children:"".concat(D+1," - ").concat(Math.min(T,A.length)," of ").concat(A.length)}),(0,r.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,r.jsx)(u.z,{variant:"ghost",size:"icon",onClick:()=>{O(e=>Math.max(e-1,1))},disabled:1===H,className:"text-gray-500 h-8 w-8 p-0",children:(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-left",children:(0,r.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,r.jsx)(u.z,{variant:"ghost",size:"icon",onClick:()=>{O(e=>Math.min(e+1,U))},disabled:H===U||0===U,className:"text-gray-500 h-8 w-8 p-0",children:(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-right",children:(0,r.jsx)("path",{d:"M9 18l6-6-6-6"})})})]})]})})]})}let H=(e,s)=>{s&&s(e)},O=(e,s)=>{s?s(e):window.open("ssh://".concat(e))},F=e=>"RUNNING"===e?["connect","VSCode"]:[],W={connect:(0,r.jsx)(g,{className:"w-4 h-4 text-gray-500 inline-block"}),VSCode:(0,r.jsx)(v,{className:"w-4 h-4 text-gray-500 inline-block"})};function V(e){let{withLabel:s=!1,cluster:t,status:a,onOpenSSHModal:l,onOpenVSCodeModal:n}=e,i=F(a),o=(0,b.X)(),u=e=>{switch(e){case"connect":O(t,l);break;case"VSCode":H(t,n);break;default:return}};return(0,r.jsx)(r.Fragment,{children:(0,r.jsx)("div",{className:"flex items-center space-x-4",children:Object.entries(W).map(e=>{let t,a,[l,n]=e;switch(l){case"connect":t="Connect",a="Connect with SSH";break;case"VSCode":t="VSCode",a="Open in VS Code"}return(s||(t=""),i.includes(l))?(0,r.jsx)(c.WH,{content:a,className:"capitalize text-sm text-muted-foreground",children:(0,r.jsxs)("button",{onClick:()=>u(l),className:"text-sky-blue hover:text-sky-blue-bright font-medium inline-flex items-center",children:[n,!o&&(0,r.jsx)("span",{className:"ml-1.5",children:t})]})},l):(0,r.jsx)(c.WH,{content:a,className:"capitalize text-sm text-muted-foreground",children:(0,r.jsxs)("span",{className:"opacity-30 flex items-center cursor-not-allowed text-sm",title:l,children:[n,!o&&(0,r.jsx)("span",{className:"ml-1.5",children:t})]})},l)})})})}let q=e=>{let{propertyList:s=[],valueList:t,setFilters:l,updateURLParams:n,placeholder:c="Filter clusters"}=e,i=(0,a.useRef)(null),o=(0,a.useRef)(null),[u,d]=(0,a.useState)(!1),[h,x]=(0,a.useState)(""),[p,m]=(0,a.useState)("status"),[f,j]=(0,a.useState)([]);(0,a.useEffect)(()=>{let e=e=>{o.current&&!o.current.contains(e.target)&&i.current&&!i.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[]),(0,a.useEffect)(()=>{let e=[];if(t&&"object"==typeof t)switch(p){case"status":e=t.status||[];break;case"user":e=t.user||[];break;case"cluster":e=t.cluster||[];break;case"workspace":e=t.workspace||[];break;case"infra":e=t.infra||[]}""!==h.trim()&&(e=e.filter(e=>e&&e.toString().toLowerCase().includes(h.toLowerCase()))),j(e)},[p,t,h]);let g=e=>{let t=s.find(s=>s.value===e);return t?t.label:e},v=e=>{l(s=>{let t=[...s,{property:g(p),operator:":",value:e}];return n(t),t}),d(!1),x(""),i.current.focus()};return(0,r.jsxs)("div",{className:"flex flex-row border border-gray-300 rounded-md overflow-visible",children:[(0,r.jsx)("div",{className:"border-r border-gray-300 flex-shrink-0",children:(0,r.jsxs)(k.Ph,{onValueChange:m,value:p,children:[(0,r.jsx)(k.i4,{"aria-label":"Filter Property",className:"focus:ring-0 focus:ring-offset-0 border-none rounded-l-md rounded-r-none w-20 sm:w-24 md:w-32 h-8 text-xs sm:text-sm",children:(0,r.jsx)(k.ki,{placeholder:"Status"})}),(0,r.jsx)(k.Bw,{children:s.map((e,s)=>(0,r.jsx)(k.Ql,{value:e.value,children:e.label},"property-item-".concat(s)))})]})}),(0,r.jsxs)("div",{className:"relative flex-1",children:[(0,r.jsx)("input",{type:"text",ref:i,placeholder:c,value:h,onChange:e=>{x(e.target.value),u||d(!0)},onFocus:()=>{d(!0)},onKeyDown:e=>{"Enter"===e.key&&""!==h.trim()?(l(e=>{let s=[...e,{property:g(p),operator:":",value:h}];return n(s),s}),x(""),d(!1)):"Escape"===e.key&&(d(!1),i.current.blur())},className:"h-8 w-full sm:w-96 px-3 pr-8 text-sm border-none rounded-l-none rounded-r-md focus:ring-0 focus:outline-none",autoComplete:"off"}),h&&(0,r.jsx)("button",{onClick:()=>{x(""),d(!1)},className:"absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600",title:"Clear filter",tabIndex:-1,children:(0,r.jsx)("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})}),u&&f.length>0&&(0,r.jsx)("div",{ref:o,className:"absolute z-50 mt-1 w-full bg-white border border-gray-200 rounded-md shadow-lg max-h-60 overflow-y-auto",style:{zIndex:9999},children:f.map((e,s)=>(0,r.jsx)("div",{className:"px-3 py-2 cursor-pointer hover:bg-gray-50 text-sm ".concat(s!==f.length-1?"border-b border-gray-100":""),onClick:()=>v(e),children:(0,r.jsx)("span",{className:"text-sm text-gray-700",children:e})},"".concat(e,"-").concat(s)))})]})]})},z=e=>{let{filters:s=[],setFilters:t,updateURLParams:a}=e,l=e=>{t(s=>{let t=s.filter((s,t)=>t!==e);return a(t),t})};return(0,r.jsx)(r.Fragment,{children:(0,r.jsx)("div",{className:"flex items-center gap-4 py-2 px-2",children:(0,r.jsxs)("div",{className:"flex flex-wrap items-content gap-2",children:[s.map((e,s)=>(0,r.jsx)(Z,{filter:e,onRemove:()=>l(s)},"filteritem-".concat(s))),s.length>0&&(0,r.jsx)(r.Fragment,{children:(0,r.jsx)("button",{onClick:()=>{a([]),t([])},className:"rounded-full px-4 py-1 text-sm text-gray-700 bg-gray-200 hover:bg-gray-300",children:"Clear filters"})})]})})})},Z=e=>{let{filter:s,onRemove:t}=e;return(0,r.jsx)(r.Fragment,{children:(0,r.jsxs)("div",{className:"flex items-center text-blue-600 bg-blue-100 px-1 py-1 rounded-full text-sm",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1 px-2",children:[(0,r.jsx)("span",{children:"".concat(s.property," ")}),(0,r.jsx)("span",{children:"".concat(s.operator," ")}),(0,r.jsx)("span",{children:" ".concat(s.value)})]}),(0,r.jsx)("button",{onClick:()=>t(),className:"p-0.5 ml-1 transform text-gray-400 hover:text-gray-600 bg-blue-500 hover:bg-blue-600 rounded-full flex flex-col items-center",title:"Clear filter",children:(0,r.jsx)("svg",{className:"h-3 w-3",fill:"none",stroke:"white",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:5,d:"M6 18L18 6M6 6l12 12"})})})]})})}}}]);