skypilot-nightly 1.0.0.dev20250713__py3-none-any.whl → 1.0.0.dev20250716__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. sky/__init__.py +2 -2
  2. sky/adaptors/nebius.py +6 -0
  3. sky/catalog/data_fetchers/fetch_nebius.py +308 -0
  4. sky/client/cli/command.py +10 -6
  5. sky/clouds/hyperbolic.py +2 -0
  6. sky/clouds/nebius.py +6 -4
  7. sky/dashboard/out/404.html +1 -1
  8. sky/dashboard/out/_next/static/chunks/1141-d8c6404a7c6fffe6.js +11 -0
  9. sky/dashboard/out/_next/static/chunks/1746.27d40aedc22bd2d6.js +60 -0
  10. sky/dashboard/out/_next/static/chunks/1871-76491ac174a95278.js +6 -0
  11. sky/dashboard/out/_next/static/chunks/2641.35edc9ccaeaad9e3.js +1 -0
  12. sky/dashboard/out/_next/static/chunks/{3785.b3cc2bc1d49d2c3c.js → 3785.95b94f18aaec7233.js} +1 -1
  13. sky/dashboard/out/_next/static/chunks/4869.c139c0124e677fc8.js +16 -0
  14. sky/dashboard/out/_next/static/chunks/6990-dcb411b566e64cde.js +1 -0
  15. sky/dashboard/out/_next/static/chunks/{9025.a7c44babfe56ce09.js → 9025.133e9ba5c780afeb.js} +1 -1
  16. sky/dashboard/out/_next/static/chunks/9847.46e613d000c55859.js +30 -0
  17. sky/dashboard/out/_next/static/chunks/pages/{_app-49ff6c04332cc621.js → _app-771a40cde532309b.js} +1 -1
  18. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-9096ea50b8e2cf9e.js +6 -0
  19. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-14d404b7dd28502a.js +16 -0
  20. sky/dashboard/out/_next/static/chunks/pages/{users-cd43fb3c122eedde.js → users-19e98664bdd61643.js} +1 -1
  21. sky/dashboard/out/_next/static/chunks/pages/volumes-61ea7ba7e56f8d06.js +1 -0
  22. sky/dashboard/out/_next/static/chunks/pages/{workspaces-06bde99155fa6292.js → workspaces-a1e43d9ef51a9cea.js} +1 -1
  23. sky/dashboard/out/_next/static/chunks/{webpack-4d50ce5087a63a95.js → webpack-3fad5d4a0541a02d.js} +1 -1
  24. sky/dashboard/out/_next/static/css/219887b94512388c.css +3 -0
  25. sky/dashboard/out/_next/static/gVXjeFhvtWXyOsx9xYNvM/_buildManifest.js +1 -0
  26. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  27. sky/dashboard/out/clusters/[cluster].html +1 -1
  28. sky/dashboard/out/clusters.html +1 -1
  29. sky/dashboard/out/config.html +1 -1
  30. sky/dashboard/out/index.html +1 -1
  31. sky/dashboard/out/infra/[context].html +1 -1
  32. sky/dashboard/out/infra.html +1 -1
  33. sky/dashboard/out/jobs/[job].html +1 -1
  34. sky/dashboard/out/jobs.html +1 -1
  35. sky/dashboard/out/users.html +1 -1
  36. sky/dashboard/out/volumes.html +1 -1
  37. sky/dashboard/out/workspace/new.html +1 -1
  38. sky/dashboard/out/workspaces/[name].html +1 -1
  39. sky/dashboard/out/workspaces.html +1 -1
  40. sky/execution.py +4 -0
  41. sky/provision/hyperbolic/__init__.py +1 -0
  42. sky/provision/hyperbolic/instance.py +10 -0
  43. sky/server/requests/executor.py +20 -7
  44. sky/server/requests/process.py +46 -3
  45. sky/server/server.py +3 -0
  46. sky/setup_files/dependencies.py +1 -1
  47. sky/utils/command_runner.py +3 -2
  48. sky/utils/tempstore.py +20 -1
  49. {skypilot_nightly-1.0.0.dev20250713.dist-info → skypilot_nightly-1.0.0.dev20250716.dist-info}/METADATA +3 -3
  50. {skypilot_nightly-1.0.0.dev20250713.dist-info → skypilot_nightly-1.0.0.dev20250716.dist-info}/RECORD +62 -61
  51. sky/dashboard/out/_next/static/JnRZeU80MTbNRfWV2kd8w/_buildManifest.js +0 -1
  52. sky/dashboard/out/_next/static/chunks/1141-726e5a3f00b67185.js +0 -11
  53. sky/dashboard/out/_next/static/chunks/1691.44e378727a41f3b5.js +0 -21
  54. sky/dashboard/out/_next/static/chunks/1871-cf1a47986d716dd2.js +0 -6
  55. sky/dashboard/out/_next/static/chunks/3256.7257acd01b481bed.js +0 -11
  56. sky/dashboard/out/_next/static/chunks/4697.f5421144224da9fc.js +0 -20
  57. sky/dashboard/out/_next/static/chunks/6990-d0dc765474fa0eca.js +0 -1
  58. sky/dashboard/out/_next/static/chunks/8982.a2e214068f30a857.js +0 -1
  59. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-4608dc89f95eba89.js +0 -6
  60. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-980d6f6b64ca7833.js +0 -16
  61. sky/dashboard/out/_next/static/chunks/pages/volumes-4ebf6484f7216387.js +0 -1
  62. sky/dashboard/out/_next/static/css/a713705ccc8fe059.css +0 -3
  63. /sky/dashboard/out/_next/static/chunks/{1043-5e5ef6198735ff7e.js → 1043-90a88c46f27b3df5.js} +0 -0
  64. /sky/dashboard/out/_next/static/chunks/{3698-52ad1ca228faa776.js → 3698-9fa11dafb5cad4a6.js} +0 -0
  65. /sky/dashboard/out/_next/static/chunks/{6601-d38d10f957dff832.js → 6601-d4a381403a8bae91.js} +0 -0
  66. /sky/dashboard/out/_next/static/chunks/{8969-13bb52ce3cffa4e3.js → 8969-743abf4bc86baf48.js} +0 -0
  67. /sky/dashboard/out/_next/static/chunks/{938-8e25c8ea0baa271a.js → 938-6a9ffdaa21eee969.js} +0 -0
  68. /sky/dashboard/out/_next/static/chunks/{9470-21d059a1dfa03f61.js → 9470-b6f6a35283863a6f.js} +0 -0
  69. /sky/dashboard/out/_next/static/chunks/pages/clusters/{[cluster]-0fbfb1dd0b08c90c.js → [cluster]-0c37ee1ac5f3474d.js} +0 -0
  70. /sky/dashboard/out/_next/static/{JnRZeU80MTbNRfWV2kd8w → gVXjeFhvtWXyOsx9xYNvM}/_ssgManifest.js +0 -0
  71. {skypilot_nightly-1.0.0.dev20250713.dist-info → skypilot_nightly-1.0.0.dev20250716.dist-info}/WHEEL +0 -0
  72. {skypilot_nightly-1.0.0.dev20250713.dist-info → skypilot_nightly-1.0.0.dev20250716.dist-info}/entry_points.txt +0 -0
  73. {skypilot_nightly-1.0.0.dev20250713.dist-info → skypilot_nightly-1.0.0.dev20250716.dist-info}/licenses/LICENSE +0 -0
  74. {skypilot_nightly-1.0.0.dev20250713.dist-info → skypilot_nightly-1.0.0.dev20250716.dist-info}/top_level.txt +0 -0
@@ -176,7 +176,7 @@ class RequestWorker:
176
176
  if request_element is None:
177
177
  time.sleep(0.1)
178
178
  return
179
- request_id, ignore_return_value, retryable = request_element
179
+ request_id, ignore_return_value, _ = request_element
180
180
  request = api_requests.get_request(request_id)
181
181
  assert request is not None, f'Request with ID {request_id} is None'
182
182
  if request.status == api_requests.RequestStatus.CANCELLED:
@@ -190,12 +190,10 @@ class RequestWorker:
190
190
  # the process, such as subprocess_daemon.py.
191
191
  fut = executor.submit_until_success(_request_execution_wrapper,
192
192
  request_id, ignore_return_value)
193
- if retryable:
194
- # If the task might fail and be retried, start a thread to
195
- # monitor the future and process retry.
196
- threading.Thread(target=self.handle_task_result,
197
- args=(fut, request_element),
198
- daemon=True).start()
193
+ # Monitor the result of the request execution.
194
+ threading.Thread(target=self.handle_task_result,
195
+ args=(fut, request_element),
196
+ daemon=True).start()
199
197
 
200
198
  logger.info(f'[{self}] Submitted request: {request_id}')
201
199
  except (Exception, SystemExit) as e: # pylint: disable=broad-except
@@ -209,6 +207,21 @@ class RequestWorker:
209
207
  request_element: Tuple[str, bool, bool]) -> None:
210
208
  try:
211
209
  fut.result()
210
+ except concurrent.futures.process.BrokenProcessPool as e:
211
+ # Happens when the worker process dies unexpectedly, e.g. OOM
212
+ # killed.
213
+ request_id, _, retryable = request_element
214
+ # Ensure the request status.
215
+ api_requests.set_request_failed(request_id, e)
216
+ logger.error(
217
+ f'Request {request_id} failed to get processed '
218
+ f'{common_utils.format_exception(e, use_bracket=True)}')
219
+ if retryable:
220
+ # If the request is retryable and disrupted by broken
221
+ # process pool, reschedule it immediately to get it
222
+ # retried in the new process pool.
223
+ queue = _get_queue(self.schedule_type)
224
+ queue.put(request_element)
212
225
  except exceptions.ExecutionRetryableError as e:
213
226
  time.sleep(e.retry_wait_seconds)
214
227
  # Reschedule the request.
@@ -202,6 +202,9 @@ class BurstableExecutor:
202
202
  burst_workers: int = 0,
203
203
  **kwargs):
204
204
  if garanteed_workers > 0:
205
+ self._guaranteed_workers = garanteed_workers
206
+ self._guaranteed_pool_kwargs = kwargs
207
+ self._guaranteed_pool_lock = threading.Lock()
205
208
  self._executor = PoolExecutor(max_workers=garanteed_workers,
206
209
  **kwargs)
207
210
  if burst_workers > 0:
@@ -225,8 +228,7 @@ class BurstableExecutor:
225
228
 
226
229
  while True:
227
230
  if self._executor is not None and self._executor.has_idle_workers():
228
- logger.info('Submitting to the guaranteed pool')
229
- return self._executor.submit(fn, *args, **kwargs)
231
+ return self._submit_to_guaranteed_pool(fn, *args, **kwargs)
230
232
  if (self._burst_executor is not None and
231
233
  self._burst_executor.has_idle_workers()):
232
234
  try:
@@ -238,11 +240,52 @@ class BurstableExecutor:
238
240
  if self._executor is not None:
239
241
  # No idle workers in either pool, still queue the request
240
242
  # to the guaranteed pool to keep behavior consistent.
241
- return self._executor.submit(fn, *args, **kwargs)
243
+ return self._submit_to_guaranteed_pool(fn, *args, **kwargs)
242
244
  logger.debug('No guaranteed pool set and the burst pool is full, '
243
245
  'retry later.')
244
246
  time.sleep(0.1)
245
247
 
248
+ def _submit_to_guaranteed_pool(self, fn, *args,
249
+ **kwargs) -> concurrent.futures.Future:
250
+ """Submit to the guaranteed pool with retry.
251
+
252
+ The concurrent.futures.ProcessPoolExecutor will terminate all child
253
+ processes and reject new tasks if any of the child process died, e.g.
254
+ OOM killed. So when the pool is broken, we have to rebuild a new pool
255
+ to execute tasks.
256
+
257
+ Alternatives considered:
258
+ - multiprocessing.Pool: individual process failure does not affect the
259
+ pool, but it lacks of lazy-init support and does not handle process
260
+ failure gracefully.
261
+ - inherit from concurrent.futures.ProcessPoolExecutor: If a child
262
+ process dies when executing a task, we have to set an exception
263
+ in the Future object of the task. But there is a race condition
264
+ that the child process may dies exactly after get the task from
265
+ queue so there is no (obviously) safe way to record process PID
266
+ to task mapping in the current architecture of
267
+ ProcessPoolExecutor. It is more feasible to implement a custom
268
+ ProcessPoolExecutor with an new architecture.
269
+ - a custom ProcessPoolExecutor: non-trivial to implement, keep for
270
+ future improvement as BrokenProcessPool is not expected to be
271
+ a common case, i.e. it usually indicates there a bug elsewhere
272
+ when this happens.
273
+ """
274
+ with self._guaranteed_pool_lock:
275
+ assert self._executor is not None
276
+ try:
277
+ return self._executor.submit(fn, *args, **kwargs)
278
+ except concurrent.futures.process.BrokenProcessPool as e:
279
+ logger.warning('The guaranteed pool is broken, '
280
+ f'replacing the pool and retrying. Error: {e}')
281
+ broken_pool = self._executor
282
+ threading.Thread(target=broken_pool.shutdown,
283
+ daemon=True).start()
284
+ self._executor = PoolExecutor(
285
+ max_workers=self._guaranteed_workers,
286
+ **self._guaranteed_pool_kwargs)
287
+ return self._submit_to_guaranteed_pool(fn, *args, **kwargs)
288
+
246
289
  def shutdown(self) -> None:
247
290
  """Shutdown the executor."""
248
291
 
sky/server/server.py CHANGED
@@ -491,6 +491,9 @@ async def lifespan(app: fastapi.FastAPI): # pylint: disable=redefined-outer-nam
491
491
  func=event.run_event,
492
492
  schedule_type=requests_lib.ScheduleType.SHORT,
493
493
  is_skypilot_system=True,
494
+ # Request deamon should be retried if the process pool is
495
+ # broken.
496
+ retryable=True,
494
497
  )
495
498
  except exceptions.RequestAlreadyExistsError:
496
499
  # Lifespan will be executed in each uvicorn worker process, we
@@ -174,7 +174,7 @@ extras_require: Dict[str, List[str]] = {
174
174
  # 'vsphere-automation-sdk @ git+https://github.com/vmware/vsphere-automation-sdk-python.git@v8.0.1.0' pylint: disable=line-too-long
175
175
  ],
176
176
  'nebius': [
177
- 'nebius>=0.2.0',
177
+ 'nebius>=0.2.37',
178
178
  ] + aws_dependencies,
179
179
  'hyperbolic': [], # No dependencies needed for hyperbolic
180
180
  'server': server_dependencies,
@@ -956,8 +956,9 @@ class KubernetesCommandRunner(CommandRunner):
956
956
  return remote_home_dir
957
957
 
958
958
  # Build command.
959
- helper_path = os.path.join(os.path.abspath(os.path.dirname(__file__)),
960
- 'kubernetes', 'rsync_helper.sh')
959
+ helper_path = shlex.quote(
960
+ os.path.join(os.path.abspath(os.path.dirname(__file__)),
961
+ 'kubernetes', 'rsync_helper.sh'))
961
962
  namespace_context = f'{self.namespace}+{self.context}'
962
963
  # Avoid rsync interpreting :, /, and + in namespace_context as the
963
964
  # default delimiter for options and arguments.
sky/utils/tempstore.py CHANGED
@@ -2,9 +2,11 @@
2
2
 
3
3
  import contextlib
4
4
  import contextvars
5
+ import functools
5
6
  import os
6
7
  import tempfile
7
- from typing import Iterator, Optional
8
+ import typing
9
+ from typing import Any, Callable, Iterator, Optional, TypeVar
8
10
 
9
11
  _TEMP_DIR: contextvars.ContextVar[Optional[str]] = contextvars.ContextVar(
10
12
  'temp_store_dir', default=None)
@@ -49,3 +51,20 @@ def mkdtemp(suffix: Optional[str] = None,
49
51
  os.makedirs(dir, exist_ok=True)
50
52
 
51
53
  return tempfile.mkdtemp(suffix=suffix, prefix=prefix, dir=dir)
54
+
55
+
56
+ F = TypeVar('F', bound=Callable[..., Any])
57
+
58
+
59
+ def with_tempdir(func: F) -> F:
60
+ """Decorator that wraps a function call with tempdir() context manager.
61
+
62
+ Refer to `tempdir` for more details.
63
+ """
64
+
65
+ @functools.wraps(func)
66
+ def wrapper(*args, **kwargs):
67
+ with tempdir():
68
+ return func(*args, **kwargs)
69
+
70
+ return typing.cast(F, wrapper)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250713
3
+ Version: 1.0.0.dev20250716
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -118,7 +118,7 @@ Requires-Dist: vastai-sdk>=0.1.12; extra == "vast"
118
118
  Provides-Extra: vsphere
119
119
  Requires-Dist: pyvmomi==8.0.1.0.2; extra == "vsphere"
120
120
  Provides-Extra: nebius
121
- Requires-Dist: nebius>=0.2.0; extra == "nebius"
121
+ Requires-Dist: nebius>=0.2.37; extra == "nebius"
122
122
  Requires-Dist: awscli>=1.27.10; extra == "nebius"
123
123
  Requires-Dist: botocore>=1.29.10; extra == "nebius"
124
124
  Requires-Dist: boto3>=1.26.1; extra == "nebius"
@@ -174,7 +174,7 @@ Requires-Dist: azure-core>=1.24.0; extra == "all"
174
174
  Requires-Dist: azure-common; extra == "all"
175
175
  Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
176
176
  Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
177
- Requires-Dist: nebius>=0.2.0; extra == "all"
177
+ Requires-Dist: nebius>=0.2.37; extra == "all"
178
178
  Requires-Dist: awscli>=1.27.10; extra == "all"
179
179
  Requires-Dist: botocore>=1.29.10; extra == "all"
180
180
  Requires-Dist: boto3>=1.26.1; extra == "all"
@@ -1,4 +1,4 @@
1
- sky/__init__.py,sha256=uL6TLno1cSb72P4G5uOKkHFHWevrA8YD--yHL7Y5UzQ,6419
1
+ sky/__init__.py,sha256=GESLKWuHS4YDwBX1YGyWiGeqkjvqKk0d2ysHcU4ULYY,6419
2
2
  sky/admin_policy.py,sha256=FMiizgvVTmD9gFA2OUaveXnuY3lbNU-fCbUYAODBZj4,9427
3
3
  sky/authentication.py,sha256=V7zGSV7bqcAKC_EGOOS0KhJ01ZFLnme0WnjLFO7zavs,25603
4
4
  sky/check.py,sha256=R0pFsTq2v-wr3NFePlX9DmDhsbvWEoFJAXsys3pUmT4,30338
@@ -7,7 +7,7 @@ sky/cloud_stores.py,sha256=Ln5GBpel-sEs7rVx7bBrMkfLwA_bctI05Rox2uoz7Lo,26388
7
7
  sky/core.py,sha256=KbPCVZpCZTJF-vtyWqk1rGFzrT8cGHQI93YN9WRp8P4,56338
8
8
  sky/dag.py,sha256=5MFXlP43y9U54zxfYGhVyBiWEInoFFlt_zJ7ASJntXw,3889
9
9
  sky/exceptions.py,sha256=Vn7VVhyrTaMBTdVxsro325aKSMM4_KRJOghFX31xIVM,19164
10
- sky/execution.py,sha256=BhI4paGKpXMhWJoelHFe7LGFbCnW7hl0rIAmdIay-dk,33223
10
+ sky/execution.py,sha256=MDbjsPDHhrLixiULkLu3xHfTIh79Bz8fwX4-0Qj_5Dk,33416
11
11
  sky/global_user_state.py,sha256=L_NMe0e8on_4aRmZ4wuIJP98RXXxaWaV1TozhaTVx14,73098
12
12
  sky/models.py,sha256=Eor-cT4D71QTimogcnJ5ey1G1PXK-OXN-snEtE8Uu_g,3152
13
13
  sky/optimizer.py,sha256=rcH6CVix1PJWWSwe1XWItfsmG8igwbKtRE5QVWRlpR4,63804
@@ -27,7 +27,7 @@ sky/adaptors/gcp.py,sha256=oEb9jClEtApw6PQnxdxDYxOCYsedvM3aiko1EW1FDVo,3501
27
27
  sky/adaptors/hyperbolic.py,sha256=iyHDmtLFVTK9QajpAmObk0XO2OZnnO_1LbvDffPpt68,245
28
28
  sky/adaptors/ibm.py,sha256=7YbHrWbYcZsJDgxMBNZr1yBI03mjs_C3pnCTCz-MNtQ,5068
29
29
  sky/adaptors/kubernetes.py,sha256=I0DS2nrwb4rZMf8uPNR_dVdOXBqo1JU01yroBJz81sI,9888
30
- sky/adaptors/nebius.py,sha256=aQYsK9dgMSj4L2JTUz_w1KJQdebEiLznafmhLKbS_gc,8707
30
+ sky/adaptors/nebius.py,sha256=EXONbdbNEm61KeezeJvbE8WrRBD0Zu4zJKsQqO0FHeE,8869
31
31
  sky/adaptors/oci.py,sha256=xJt6J9xBSFIENa6FwEt1V1sZE8puAZ_vPEoGlyQACPs,2839
32
32
  sky/adaptors/runpod.py,sha256=4Nt_BfZhJAKQNA3wO8cxvvNI8x4NsDGHu_4EhRDlGYQ,225
33
33
  sky/adaptors/vast.py,sha256=tpvmHi7IkQNzbbHVkeo04kUSajoEpSzXr2XgeO_I1LU,695
@@ -71,6 +71,7 @@ sky/catalog/data_fetchers/fetch_gcp.py,sha256=y3boC2NBLRErLyY12078AS7QWGx9ItrzmF
71
71
  sky/catalog/data_fetchers/fetch_hyperbolic.py,sha256=VLBJXWvrKJH5QbMUiREPEMfO3x37_XsqMAmOo7bCQtc,4537
72
72
  sky/catalog/data_fetchers/fetch_ibm.py,sha256=WPzR1y5ZaTdv-R3HLIdSUnOfWh4N9cqzKoKiKJQkjFk,7414
73
73
  sky/catalog/data_fetchers/fetch_lambda_cloud.py,sha256=MUzogyLruLQmIt-To6TsfnGPgv_nnlp49XYbeshsd7I,5003
74
+ sky/catalog/data_fetchers/fetch_nebius.py,sha256=qmk7wkz8-L8XxYXZyDpneAuvOPY2Pzw7H3GwrdM1MXo,10772
74
75
  sky/catalog/data_fetchers/fetch_vast.py,sha256=xoVDSsQVgMLzyibCFN7yDgyH1Y96gk5G53to1ZAGRyg,5017
75
76
  sky/catalog/data_fetchers/fetch_vsphere.py,sha256=Yf7tKzwJsQ_4f64IT1EAP108C1D3Rg35RUIwp7UX8KI,21438
76
77
  sky/client/__init__.py,sha256=pz6xvVSd9X-gwqbsDL0E9QOojYqM0KAD0j-NCyCIF1k,38
@@ -79,7 +80,7 @@ sky/client/oauth.py,sha256=sNJ_DMsSTcxluj5FeNQ2IafZJLImRFmCAZ79bXeABn4,2871
79
80
  sky/client/sdk.py,sha256=hZ2SLsHItKJOs-t_suVDMxIrvEixr1ZWzDehkOYycSc,91024
80
81
  sky/client/service_account_auth.py,sha256=5jXk0G6ufuW-SHCO7BEHQeTO0_2a8KfFmA63auXFRj4,1529
81
82
  sky/client/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
- sky/client/cli/command.py,sha256=tuK-39aOz9xresShPe4uvGAjn7OgnyxLovnycJUAzaE,217309
83
+ sky/client/cli/command.py,sha256=i_ls96k9DClqjePdjOyJMTWbLrkpTLF43Zz7cBN4Y_M,217541
83
84
  sky/client/cli/deprecation_utils.py,sha256=H_d5UyF2CekEoThduAzt5cihBO8hwKYMu0-Wqfbjv5E,3370
84
85
  sky/client/cli/flags.py,sha256=6IdS_G2lB1C6r8kJMzLVREY_qV50VHiSfWlmppVrWuc,11623
85
86
  sky/clouds/__init__.py,sha256=tC9_Vi6GvVceWUi6uZvm7vXzBa0uH3CjRQ-QCYqdJMw,1624
@@ -90,11 +91,11 @@ sky/clouds/cudo.py,sha256=iNgiCg2gYAfsmeFNG8xuO7ysUjXbNj45Q57QIfDimyU,13809
90
91
  sky/clouds/do.py,sha256=bO5NZ3nvHHTW_7oByUY4817U0fAXQ1t5F4P4qZYg5n4,12167
91
92
  sky/clouds/fluidstack.py,sha256=TkFHChRa7HH_-f5SDRgtFqKCmUCYcSfPCf4lpQH90do,13222
92
93
  sky/clouds/gcp.py,sha256=92qzPagPCabVScWMqbDh4Nd14LzcZnK5ojb_phw9bRA,68430
93
- sky/clouds/hyperbolic.py,sha256=cvcYeTs7js36OOXwehme4vzzjtDWqjPyqtxmb4XuUk4,11492
94
+ sky/clouds/hyperbolic.py,sha256=DyWiV5RvfitVPCEajkEuqOxy4PAaCCCkmd7zA05G33c,11628
94
95
  sky/clouds/ibm.py,sha256=JQTJQ5wVxVSqH7O05GOld8X5iO16g6Idd_YmRAGZmB8,22567
95
96
  sky/clouds/kubernetes.py,sha256=Xu9jyJYchGHuaBqGzLBNvpG-PlMh98GcHmERZFwM_r0,54201
96
97
  sky/clouds/lambda_cloud.py,sha256=ZoKSseOGYlZFNhue2OK75dTU836AAE_pkuVod4yZX68,13260
97
- sky/clouds/nebius.py,sha256=0ceJUwl1kjwhTJOSDERke8jCrfRxeyb9nLMkQfjBktQ,20926
98
+ sky/clouds/nebius.py,sha256=RNPuZRXU-KTRyziNFp8rnE3DisTCQ35XWLaHeplpY7Y,21000
98
99
  sky/clouds/oci.py,sha256=Tos4hgXhYJ4kNkh6aa8_WsaxcD_JmbarR_1GltV-YrM,28158
99
100
  sky/clouds/paperspace.py,sha256=yvtD93p79ttpbL8bw8dlJcG-7pvqAGuUolSyHK-XsNo,11582
100
101
  sky/clouds/runpod.py,sha256=6fHlT75kYdPWZSfV-mhOvCxum-OkoTlD1iKYEAtlHP4,12973
@@ -108,79 +109,79 @@ sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4
108
109
  sky/clouds/utils/gcp_utils.py,sha256=zpdibyvdROgDGqllcvQuST3pKqj6pzqX-gxCw-DsCfc,9873
109
110
  sky/clouds/utils/oci_utils.py,sha256=yv_Y9oM5WNCnOofu44aKyOPTZZdKfpFLCx3ewZ2VBFY,7994
110
111
  sky/clouds/utils/scp_utils.py,sha256=VGuccVO5uFGr8-yolWSoYrgr11z6cIeDBGcqkBzAyOs,18409
111
- sky/dashboard/out/404.html,sha256=TgvRcdiaZ2aR7DO-bQM5jSB2GpWZUKHe5cu-ikAERRE,1423
112
- sky/dashboard/out/clusters.html,sha256=VgpYf4YcvGmumYuKKYOvwXIZwy4tWe-hGm-G8DcN39E,1418
113
- sky/dashboard/out/config.html,sha256=CLkqxLGmzrN62KsL2icfSWgs6YDToNQjZbjTS0bHW1Q,1414
112
+ sky/dashboard/out/404.html,sha256=SGhBWASItFyf4v3zYTa-Ja7-mmyhkDu5g4hKUnU-PpI,1423
113
+ sky/dashboard/out/clusters.html,sha256=nfKlsgkeOb5O2c36lkCWOxIXDYcUph7Ld2Xuwu86xSs,1418
114
+ sky/dashboard/out/config.html,sha256=11P0Q99G7IbVLXp6dvK_2JMWJVBLc7I2mIAZmhU9OHs,1414
114
115
  sky/dashboard/out/favicon.ico,sha256=XilUZZglAl_1zRsg85QsbQgmQAzGPQjcUIJ-A3AzYn8,93590
115
- sky/dashboard/out/index.html,sha256=X_kIWHYdeE4JQgKAQWf7O1BeUpgygFrWUJWAtUqZ1WE,1407
116
- sky/dashboard/out/infra.html,sha256=l01ZUUtdWcG65LXGCrr4O0xB0MXOAZc405WpzSESGYw,1412
117
- sky/dashboard/out/jobs.html,sha256=_wxGeln9nSP1e_fRji1cJn5h9Tmjxv2gSNuZ5yfmMnI,1410
116
+ sky/dashboard/out/index.html,sha256=hkZa9BveMEOSh2-fgNLb6sPD7TVR311R5mQgsMxaJ30,1407
117
+ sky/dashboard/out/infra.html,sha256=mKS3PwqvdIuQi9UbmekYDY_GEvDk5sDURZjQtngD_HY,1412
118
+ sky/dashboard/out/jobs.html,sha256=IDxbC8LqKVwhG3JA7P6yc8WqaS9vIZju8qEgofhKd50,1410
118
119
  sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
119
- sky/dashboard/out/users.html,sha256=_I669YA5EHvErQXN5AJDbEymi48DmVSCakdGV1UjV18,1412
120
- sky/dashboard/out/volumes.html,sha256=HwJ7ClNykGTm1qCleY5U3RuaupVNONtMjS5ZmQRryk0,1416
121
- sky/dashboard/out/workspaces.html,sha256=htBYzE33QgeIPOHLgf6VJNEsD_SEh1rYOk4I4kucsJs,1422
122
- sky/dashboard/out/_next/static/JnRZeU80MTbNRfWV2kd8w/_buildManifest.js,sha256=ADYwhgJrpI4Y_llj8b1zhUCnq8_s04Iu3bPSyrYQuYY,2235
123
- sky/dashboard/out/_next/static/JnRZeU80MTbNRfWV2kd8w/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
124
- sky/dashboard/out/_next/static/chunks/1043-5e5ef6198735ff7e.js,sha256=-9qAHQCv3B2H3wlAqzPknzAuG0lciC0BbpK2mhx5t9o,18216
125
- sky/dashboard/out/_next/static/chunks/1141-726e5a3f00b67185.js,sha256=lEAVPk_18NZpZuPrGx1Xy9VWqE_5n3JuqWbIPS1_ZMw,17823
120
+ sky/dashboard/out/users.html,sha256=YPicQXrftOVsUfqajNZIgdQtcKOHKQJ2rdHXzzS8hYE,1412
121
+ sky/dashboard/out/volumes.html,sha256=UXxpMoyppXGcxgNx_bAFqCKehFXEXux2y2qt9UFI88w,1416
122
+ sky/dashboard/out/workspaces.html,sha256=TR9Obtmu6n93KkDp_Yxq1by76aU2ror5Tgsg7kD1G9k,1422
123
+ sky/dashboard/out/_next/static/chunks/1043-90a88c46f27b3df5.js,sha256=-9qAHQCv3B2H3wlAqzPknzAuG0lciC0BbpK2mhx5t9o,18216
124
+ sky/dashboard/out/_next/static/chunks/1141-d8c6404a7c6fffe6.js,sha256=ghpPWK4ZTu0gPqZR-UU8tHrwdmZuW4rVZ-cqdUjf_oA,17818
126
125
  sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js,sha256=VJ6y-Z6Eg2T93hQIRfWAbjAkQ7nQhglmIaVbEpKSILY,38451
127
126
  sky/dashboard/out/_next/static/chunks/1664-d65361e92b85e786.js,sha256=hMjNU7ss4lTqwShmHJ45jVOjTSdq-EI04DeVMnTRvRc,6557
128
- sky/dashboard/out/_next/static/chunks/1691.44e378727a41f3b5.js,sha256=t1oN2P9Lsz7sMZy2fvhPrcLwlWAhF9v39t33TaJLerg,51065
129
- sky/dashboard/out/_next/static/chunks/1871-cf1a47986d716dd2.js,sha256=4e3x1AQr-5p5gL_Ye8eokWc_EEu3DOEAp5xekA05goc,19373
127
+ sky/dashboard/out/_next/static/chunks/1746.27d40aedc22bd2d6.js,sha256=UL_dnIQxaOjmBlJhFuJqn4LeavYAdp_AA5o76629Xis,13121
128
+ sky/dashboard/out/_next/static/chunks/1871-76491ac174a95278.js,sha256=v4ZxUUQ_ntzWvPLTl55PD6rpFgwQaL7HEqmekVIw_3M,19782
130
129
  sky/dashboard/out/_next/static/chunks/2544.27f70672535675ed.js,sha256=93-1mEA2lUkeOp5V7MPh2e6SFTLd_N0exVSiCBnNf9s,307
130
+ sky/dashboard/out/_next/static/chunks/2641.35edc9ccaeaad9e3.js,sha256=2yNFhFmkhE_hGjD7mteo2bSn6fCbyFLPnepakrTjh0w,48655
131
131
  sky/dashboard/out/_next/static/chunks/2875.c24c6d57dc82e436.js,sha256=af3HVjuqsxD6wZyPzEDEb7FMq02fb1XB7O9mobwXTos,10053
132
- sky/dashboard/out/_next/static/chunks/3256.7257acd01b481bed.js,sha256=TSlzBVoGlzZE0e6mHhbT-29OEQ7iJXms0k4fnYQFpYU,30514
133
- sky/dashboard/out/_next/static/chunks/3698-52ad1ca228faa776.js,sha256=WogAxkOj2hCCvWBODLEG9CwZk34_IW4jfW9lpL1DCUA,7784
134
- sky/dashboard/out/_next/static/chunks/3785.b3cc2bc1d49d2c3c.js,sha256=LmCeOam_QpIjprSUJkRTtxcMLNYIFCLzmwDSXHYPFCs,4593
132
+ sky/dashboard/out/_next/static/chunks/3698-9fa11dafb5cad4a6.js,sha256=WogAxkOj2hCCvWBODLEG9CwZk34_IW4jfW9lpL1DCUA,7784
133
+ sky/dashboard/out/_next/static/chunks/3785.95b94f18aaec7233.js,sha256=nKS_ShG6pkesTYPtHQVmqGI_AusbCdftWS_a_TnxiGM,4591
135
134
  sky/dashboard/out/_next/static/chunks/3937.d7f1c55d1916c7f2.js,sha256=EoRS8IfcAMrWLz9Pli9csCTez8gG-FupfQv2SKBY6RE,54557
136
135
  sky/dashboard/out/_next/static/chunks/3947-b059261d6fa88a1f.js,sha256=jRCwpxWd7Gy-wU3-CosmwiIZdKAHHl6S67k-5wj1w38,10019
137
136
  sky/dashboard/out/_next/static/chunks/430.ed51037d1a4a438b.js,sha256=vczgwkklvp5g6SroggeUauhjstjg2oPR0fmpTS9t5Qc,925
138
- sky/dashboard/out/_next/static/chunks/4697.f5421144224da9fc.js,sha256=tjUsemiZOArTgwQi-KXFqJzlAcOfZoW0t4GQ9YUkorw,9414
139
137
  sky/dashboard/out/_next/static/chunks/4725.4c849b1e05c8e9ad.js,sha256=NOkZDUb1wPV7qhwfvxtB7O0Od6y1Rc0MXW_BpV4zJSg,14946
138
+ sky/dashboard/out/_next/static/chunks/4869.c139c0124e677fc8.js,sha256=HklWfDYtHDgG6MM0dTNA4Xnhp8j_o0iF9_TX4OgV1pM,17834
140
139
  sky/dashboard/out/_next/static/chunks/5230-df791914b54d91d9.js,sha256=jy8KepJn43jZhaJUCF2PSK8jJjIEpNO2fMXVQIPQliY,22584
141
140
  sky/dashboard/out/_next/static/chunks/5491.918ffed0ba7a5294.js,sha256=zi9QGpZSoMnyZa9F8JB13haVGnx4gI88520-vdp9AXc,8487
142
141
  sky/dashboard/out/_next/static/chunks/5739-5ea3ffa10fc884f2.js,sha256=3X5yHbRwhHhC96Dcx3-jV__MFmMSjar6ZvmYFzKljlE,65357
143
142
  sky/dashboard/out/_next/static/chunks/616-162f3033ffcd3d31.js,sha256=p-UXLnK6MHA4gij1kki4bFdhk8ANfnn-XzCInpzoDj0,179264
144
- sky/dashboard/out/_next/static/chunks/6601-d38d10f957dff832.js,sha256=349Wv6Ua29bfbBpnCwCjI33UFemyyIeBXzS3obGapw4,9053
143
+ sky/dashboard/out/_next/static/chunks/6601-d4a381403a8bae91.js,sha256=349Wv6Ua29bfbBpnCwCjI33UFemyyIeBXzS3obGapw4,9053
145
144
  sky/dashboard/out/_next/static/chunks/6989-eab0e9c16b64fd9f.js,sha256=nUs4DAMCOn7QvwRXZ4MLN0GLkdVcFPK7LBR7cxAcFb0,9433
146
- sky/dashboard/out/_next/static/chunks/6990-d0dc765474fa0eca.js,sha256=6yYTJ0jYQvnwON-rVGIdusJM-oEtEx1FVrHFxX7YCBM,16116
145
+ sky/dashboard/out/_next/static/chunks/6990-dcb411b566e64cde.js,sha256=tgaAxMIKhfF57bZohuSarNp7EdQ_WpLOQKzRgwopa9E,16092
147
146
  sky/dashboard/out/_next/static/chunks/804-9f5e98ce84d46bdd.js,sha256=yC-hYtK6OPB30EDHw7JG50eDF5-CufVV-lCg4__Fg-w,11465
148
- sky/dashboard/out/_next/static/chunks/8969-13bb52ce3cffa4e3.js,sha256=YrTrcR303uCovqxoDQRUBm8KKUmLGZ2fWIgYEjWVYBQ,9949
149
- sky/dashboard/out/_next/static/chunks/8982.a2e214068f30a857.js,sha256=fQlHyU9rqSfks7lbZ-C6FYSRjG_XyaPSw_gojuY7TeU,17059
150
- sky/dashboard/out/_next/static/chunks/9025.a7c44babfe56ce09.js,sha256=0ciCX9lNsRd3HNYlFQ29BXu2S-xCuoqUwGcrawVwiZM,10637
151
- sky/dashboard/out/_next/static/chunks/938-8e25c8ea0baa271a.js,sha256=2nR5pla_QWFUVhhu_liYREnQC_dIYnZIpisq4kRm03Y,25826
152
- sky/dashboard/out/_next/static/chunks/9470-21d059a1dfa03f61.js,sha256=CPmGRW2grevoF93p_jmh9tgO2X15tldm-_xFa4-qXXU,7887
147
+ sky/dashboard/out/_next/static/chunks/8969-743abf4bc86baf48.js,sha256=YrTrcR303uCovqxoDQRUBm8KKUmLGZ2fWIgYEjWVYBQ,9949
148
+ sky/dashboard/out/_next/static/chunks/9025.133e9ba5c780afeb.js,sha256=st4-ZeYt5iVYkXIlWhNy4Uq638FPLOUjQh7O5tjgw1U,10635
149
+ sky/dashboard/out/_next/static/chunks/938-6a9ffdaa21eee969.js,sha256=2nR5pla_QWFUVhhu_liYREnQC_dIYnZIpisq4kRm03Y,25826
150
+ sky/dashboard/out/_next/static/chunks/9470-b6f6a35283863a6f.js,sha256=CPmGRW2grevoF93p_jmh9tgO2X15tldm-_xFa4-qXXU,7887
151
+ sky/dashboard/out/_next/static/chunks/9847.46e613d000c55859.js,sha256=T9cr8tmlxojVEYt2ARei33ByVWlE8VJS5A5MmaEucNM,39848
153
152
  sky/dashboard/out/_next/static/chunks/9984.b56614f3c4c5961d.js,sha256=kij2wjmGv52Dl66I9E_Nrc7aG9JN_orwMY-GqPJriN8,41450
154
153
  sky/dashboard/out/_next/static/chunks/fd9d1056-61f2257a9cd8b32b.js,sha256=49S_KmXpB4D3U299iKHRbYnFxJnoeN36awxwhBbUn8U,172832
155
154
  sky/dashboard/out/_next/static/chunks/framework-efc06c2733009cd3.js,sha256=XKYUV5T_2HxRwN7wZa9-Lj1J5gHLS0TKT2t2GobVewY,140943
156
155
  sky/dashboard/out/_next/static/chunks/main-app-68c028b1bc5e1b72.js,sha256=zSukg-WO1Xy-B2xEIIGHXYApy2KOY9xWHcLqAYQvF3A,115883
157
156
  sky/dashboard/out/_next/static/chunks/main-c0a4f1ea606d48d2.js,sha256=DPLM6ccDgTnITBgsqZPN3gmcI2szGCi9b_60PJZkTJQ,109885
158
157
  sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
159
- sky/dashboard/out/_next/static/chunks/webpack-4d50ce5087a63a95.js,sha256=0PyZZcb4LwWHds7ZEmDs2wL7_ZD5OzOkW249JaRYz7A,4655
160
- sky/dashboard/out/_next/static/chunks/pages/_app-49ff6c04332cc621.js,sha256=H1r6Y8kJC7-I-8jRr71VINRghHy_yaY6scBkjN4cyxw,7587
158
+ sky/dashboard/out/_next/static/chunks/webpack-3fad5d4a0541a02d.js,sha256=ZVGYpe4EI46HJv1YIJfOdLZbavqWGWoI5lWXaKsEjSg,4655
159
+ sky/dashboard/out/_next/static/chunks/pages/_app-771a40cde532309b.js,sha256=-Fb7hImRuSHVFvnqq2sxp4B5V-KezsPj24AdJWaDP28,7587
161
160
  sky/dashboard/out/_next/static/chunks/pages/_error-c72a1f77a3c0be1b.js,sha256=D2OpMaqpdtCPyq6iPhZHuF2ekyMjleRchSNCLR6fqps,250
162
161
  sky/dashboard/out/_next/static/chunks/pages/clusters-102d169e87913ba1.js,sha256=wzNhCoIzkSiOuaTm9dGBVIYYIYWf4COJOklBr1aaLxE,859
163
162
  sky/dashboard/out/_next/static/chunks/pages/config-a2673b256b6d416f.js,sha256=DYGB9Imk5FCe9uF7M_4nolQ0KbyaB9OHtI-Btilhk0I,787
164
163
  sky/dashboard/out/_next/static/chunks/pages/index-927ddeebe57a8ac3.js,sha256=HNHKZ1ZGl68cTrJtLgtcXdVxfZpOAb1kU7F-DKbdzDc,516
165
164
  sky/dashboard/out/_next/static/chunks/pages/infra-ae9d2f705ce582c9.js,sha256=VQCeBoIUFxwk21fCG5bRlJCAZGhPJYw6l-ewEXxodU0,829
166
165
  sky/dashboard/out/_next/static/chunks/pages/jobs-5bbdc71878f0a068.js,sha256=DzFFkeiqV3zM2q7h9jrCByud3E9qaJ_GMj64IYEZqXU,858
167
- sky/dashboard/out/_next/static/chunks/pages/users-cd43fb3c122eedde.js,sha256=ZmBi5Bo3Nuc8h98X3A1f3Wf5vXXoJhSdf4dMArPfe0s,830
168
- sky/dashboard/out/_next/static/chunks/pages/volumes-4ebf6484f7216387.js,sha256=1F6IwI6S3p3hsDBy_fuLwFRz3Elg0IfrWNj5z3fhxdg,827
169
- sky/dashboard/out/_next/static/chunks/pages/workspaces-06bde99155fa6292.js,sha256=l9iLMdY_ShOHIo368M98I4mADuUWtiu_ZDHci8ffJjM,874
170
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-0fbfb1dd0b08c90c.js,sha256=GqMjMN3_Z8kYZWCz01aabcu8epNuKAUihohv9wxF34Y,16659
171
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-4608dc89f95eba89.js,sha256=ClLqov9b9n96ZNcjlTnUizh15Vv99iTYnfS61KKuyLE,21283
166
+ sky/dashboard/out/_next/static/chunks/pages/users-19e98664bdd61643.js,sha256=q9tNDBEUTgzW45YyC6FfF_bUFxcO7y4I5uX0lcGvuNE,830
167
+ sky/dashboard/out/_next/static/chunks/pages/volumes-61ea7ba7e56f8d06.js,sha256=xbOOckYP3Ur6V8RDcYbACbdp-NvaOlM5B1v2GxHiPwg,817
168
+ sky/dashboard/out/_next/static/chunks/pages/workspaces-a1e43d9ef51a9cea.js,sha256=oYmmr6GczgrRKhFroNQb-BeWC7Q_9rjhIzh6kWAIZ9o,874
169
+ sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-0c37ee1ac5f3474d.js,sha256=GqMjMN3_Z8kYZWCz01aabcu8epNuKAUihohv9wxF34Y,16659
170
+ sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-9096ea50b8e2cf9e.js,sha256=p8a0Vq0MGjYiyAjDyKdrfko1phl3A7cGiTh_BsPkf4Q,21259
172
171
  sky/dashboard/out/_next/static/chunks/pages/infra/[context]-8b0809f59034d509.js,sha256=2X6wnNqROGTzwZorrDJpUmO6XnUmS9VN3ImpTvhJ4IM,839
173
- sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-980d6f6b64ca7833.js,sha256=70rKHgzg09E4f-4BLRsq3lpW9Uz3695K9Rf4TCLFEwM,25266
172
+ sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-14d404b7dd28502a.js,sha256=YQnczaJsLALfG3pAV_SFApECqPKJYaUMlJpUzlb1woA,25242
174
173
  sky/dashboard/out/_next/static/chunks/pages/workspace/new-5629d4e551dba1ee.js,sha256=K9tqKHcB2kiSHTAddLaM2oL1PzmqZNTdLDOuNzCaJNM,765
175
174
  sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-7c0187f43757a548.js,sha256=FsoenC6VRkPLE29KkLd4nlSq2qociH4zFexYMxgetOM,1530
176
- sky/dashboard/out/_next/static/css/a713705ccc8fe059.css,sha256=M6xEDExt5iFLUOEZxyPOVUE4y4vtcHBhRE0wwuVR4Os,45488
177
- sky/dashboard/out/clusters/[cluster].html,sha256=kq3pXSCBegasB1796j3bfbSKECosVSGxE_7V3-1ADwk,2847
178
- sky/dashboard/out/clusters/[cluster]/[job].html,sha256=Wzx0leoXimIoAtIGsT766F6GQDhot1laxJ24A5QfsWI,2160
179
- sky/dashboard/out/infra/[context].html,sha256=KvBhK8CwV46rS0IKa8k2f4aV1yzjCBE4yu924YfnVCk,1436
180
- sky/dashboard/out/jobs/[job].html,sha256=3rzOptZv1-sHtaiTjOz5mTRTG9M4u0JNdMW5tHbUKs8,2304
175
+ sky/dashboard/out/_next/static/css/219887b94512388c.css,sha256=e_2-i85AX4kLpT-t-PuzH7GzHJ7VOzRZDfAz64JRQQY,45397
176
+ sky/dashboard/out/_next/static/gVXjeFhvtWXyOsx9xYNvM/_buildManifest.js,sha256=JMbLeJA2GWcsfkPy5YSiiUVoFu3fq69LJOFyYgVTryQ,2235
177
+ sky/dashboard/out/_next/static/gVXjeFhvtWXyOsx9xYNvM/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
178
+ sky/dashboard/out/clusters/[cluster].html,sha256=15ihUi0RpQw0KDx-KM8IBFuWlYz79R6CySBRSPn7A6Q,2847
179
+ sky/dashboard/out/clusters/[cluster]/[job].html,sha256=UhO4-K1t47b-V72EZh8QGWYuqxYBsNIVgLE0txPMOQw,2160
180
+ sky/dashboard/out/infra/[context].html,sha256=CCsKEFB4-c3XSZi--Qpmfgh7P2FcC22zaHKbjkeocDc,1436
181
+ sky/dashboard/out/jobs/[job].html,sha256=22DSXoACPu47-ly8vEE5cL0FjybC30nWEXKWf3cztcs,2304
181
182
  sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
182
- sky/dashboard/out/workspace/new.html,sha256=0gg4In1R_pkludmWvnJk1DtRMZno74DdYsfQg1Gy_Aw,1428
183
- sky/dashboard/out/workspaces/[name].html,sha256=S417ZstoKqwaRG-RMpaPNGVTg96wGGl1aHhwI6gZKNk,2845
183
+ sky/dashboard/out/workspace/new.html,sha256=ek6CxuPVfFScJHU7HZvM1dHUNdumYqRvy809xLPRoXA,1428
184
+ sky/dashboard/out/workspaces/[name].html,sha256=ZU3iPS9n7V0eI1EWXwlxjOQtQZgA6Ac1aACxgigG6mY,2845
184
185
  sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
185
186
  sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
186
187
  sky/data/data_utils.py,sha256=CNYPM963qby5ddW0DZNbhiWXkqgB9MHh_jrC5DoBctM,33437
@@ -243,9 +244,9 @@ sky/provision/gcp/instance.py,sha256=AZmqFDckqkPKhDvN6fDBRFGNVkrWzoZRcWI57HI3o9A
243
244
  sky/provision/gcp/instance_utils.py,sha256=RM5KOAk56TU8q1LNRoo9yl4VwQ3DDq7FAfTxpgdZVTc,72094
244
245
  sky/provision/gcp/mig_utils.py,sha256=oFpcFZoapHMILSE4iIm8V5bxP1RhbMHRF7cciqq8qAk,7883
245
246
  sky/provision/gcp/volume_utils.py,sha256=tTZ8QFbssPYJQlFZ48_DUUemywn248__Jr1-l429WK8,11856
246
- sky/provision/hyperbolic/__init__.py,sha256=aRsbh9iBXe9ChrksPoV0s9oX5HyIylnAy3LcWtR0hGo,598
247
+ sky/provision/hyperbolic/__init__.py,sha256=76Z9YhSwNvnisvnYto2wIEtWg1qt4Y4hG3Nmttqbp1U,673
247
248
  sky/provision/hyperbolic/config.py,sha256=N7ekDE57bc8GPQc4zabQ1f9y95syadpADRRH6gZZiNI,276
248
- sky/provision/hyperbolic/instance.py,sha256=eFsOWWn9-ll_-6yP063-_Jtd8wwuLnzOuvRR1XZdmow,16814
249
+ sky/provision/hyperbolic/instance.py,sha256=LM6tYpS8aZpIrQcR-PKaW11Oa4qCZl6cLgRmWhwyRW4,17131
249
250
  sky/provision/hyperbolic/utils.py,sha256=NCa3ULvIi64-YHYoOnPd3SShlJ6VuQsEwaTBqHFrqpg,14953
250
251
  sky/provision/kubernetes/__init__.py,sha256=xzVA9OCga0pCdUAQ7zZiCZMdq-Y0182oHlIKWESA15A,896
251
252
  sky/provision/kubernetes/config.py,sha256=iuKFZdivSaEOZf6PWz3JLju3bqyIuO58jTb9fFUn8nE,29632
@@ -327,7 +328,7 @@ sky/server/config.py,sha256=XWf5Kw4am6vMO5wcyWevbQAFH-dmKb7AMEgDzD083-M,8538
327
328
  sky/server/constants.py,sha256=v6RP8ZEwCNsxO2s2IukgOcEldZO5bvcQaxmOTA0Cf0g,2321
328
329
  sky/server/metrics.py,sha256=6H6n6dq_C5HMaU97mJlRUB9bqOEA_k205PO15wE3AWk,3648
329
330
  sky/server/rest.py,sha256=elMpi-cS301OqTwmFZb7fWYXr1vdJ28YT1zIDH1IpBk,5968
330
- sky/server/server.py,sha256=OLWzK9SBfPwaBIdbMPxtngMEXCDQQuRC7ooOpw6d9kE,73466
331
+ sky/server/server.py,sha256=kSgxuqCI7ERRweqNThaCGci34nCC4-anaPR6pf3cB2I,73598
331
332
  sky/server/state.py,sha256=YbVOMJ1JipQQv17gLIGyiGN7MKfnP83qlUa5MB1z0Yk,747
332
333
  sky/server/stream_utils.py,sha256=RS4RuMxQqTGqp3uxzZVtmFWzos4d49P7hMX_VklzEVU,9189
333
334
  sky/server/uvicorn.py,sha256=I-JUJwgUznt87hboDd66NTRaw0WtfFVzxxtoxowNqBg,9266
@@ -336,10 +337,10 @@ sky/server/html/log.html,sha256=TSGZktua9Ysl_ysg3w60rjxAxhH61AJnsYDHdtqrjmI,6929
336
337
  sky/server/html/token_page.html,sha256=eUndS5u1foL9vaWGPRTLMt7lCzD1g0wYJ2v_EeeFzlc,7046
337
338
  sky/server/requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
338
339
  sky/server/requests/event_loop.py,sha256=OhpPbuce65bbjpGRlcJa78AVnYSm08SzFKt70ypCUuQ,1211
339
- sky/server/requests/executor.py,sha256=_wQSD_3qAmXup5eTHs_GUzTRYemModz1gECsDRQmxg4,26424
340
+ sky/server/requests/executor.py,sha256=_BaE4QDTowLyaSyWCFVX_GqfrHknNRWuBexpDPMEdes,27100
340
341
  sky/server/requests/payloads.py,sha256=UXulzuo5dY1uQTemYhAhYR0AL92AW6vxCdpI6ZgsxXk,23374
341
342
  sky/server/requests/preconditions.py,sha256=uUQjzFFHf7O5-WvBypMzqViGmd1CXksbqrrDPmY_s_Y,7178
342
- sky/server/requests/process.py,sha256=I0ToOcF_cMJi5TfZMJOn9rDmJYewQOV07Pnetzqj2IU,10805
343
+ sky/server/requests/process.py,sha256=UpJp5rZizNMFRCNRtudFSjbcJhFarFbtAGDWI9x_ZyE,13197
343
344
  sky/server/requests/requests.py,sha256=jp81kMjXkBVqQK2v4GtLQstXvMR0EOPOOsn88kYJh5g,28670
344
345
  sky/server/requests/queues/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
345
346
  sky/server/requests/queues/local_queue.py,sha256=X6VkBiUmgd_kfqIK1hCtMWG1b8GiZbY70TBiBR6c6GY,416
@@ -348,7 +349,7 @@ sky/server/requests/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
348
349
  sky/server/requests/serializers/decoders.py,sha256=qphN79pRAaaitCbcsZIrslphgZn1iYndl6JnmergEe4,6361
349
350
  sky/server/requests/serializers/encoders.py,sha256=4bQV5yTg8RTPT_HkRyQpjaBY_uUvBJ4NH189W0-6Pi0,5578
350
351
  sky/setup_files/MANIFEST.in,sha256=BzWGsYZz9fO40HN1Uxm1Ca4pn1FkKn3lcoY1B9-YRiA,644
351
- sky/setup_files/dependencies.py,sha256=Nzs_KTcDHUS8HRuItWi1U3N6ZAHhWfeL78N1Ye9U1XU,7150
352
+ sky/setup_files/dependencies.py,sha256=cEqPoh4IOLIJ3GXzihFx98oAtEG7VLQDu5jyaNFqwT0,7151
352
353
  sky/setup_files/setup.py,sha256=GTXvAi65S4_TSLhQ1GzkmaWf_yzciHiaxMbZumcTtKU,7522
353
354
  sky/skylet/LICENSE,sha256=BnFrJSvUFpMUoH5mOpWnEvaC5R6Uux8W6WXgrte8iYg,12381
354
355
  sky/skylet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -420,7 +421,7 @@ sky/utils/admin_policy_utils.py,sha256=VkE3FGzv5a7KnRO0R1PX0buJ274vF__n1xgXJ_9yk
420
421
  sky/utils/annotations.py,sha256=-rfacB30Sl0xkFriejGvxma3oKctGfXXLZkQPHG33eo,1626
421
422
  sky/utils/atomic.py,sha256=vrw-7XCnckF0xCx-ttamao7evPdGtVsnjaTtgMlBXIE,1280
422
423
  sky/utils/cluster_utils.py,sha256=s6DFRXktv6_gF_DnwDEXJ7CniifHp8CAPeGciRCbXgI,14432
423
- sky/utils/command_runner.py,sha256=mPNdPhQX6TtQ7c5MTrdiMEx8yMcKrULMFQas66vJSpQ,43912
424
+ sky/utils/command_runner.py,sha256=5-RbJQXMFeKbVcHwAtroJVJGoARVBZ1wrTm4mhNYjfI,43928
424
425
  sky/utils/command_runner.pyi,sha256=IS3qeCTgWys94KhaHx3S2Pty8qDWn_zFht7bgDLJFcw,9593
425
426
  sky/utils/common.py,sha256=nTg-mjNu0diZjs2UvyiMc84Tu1ZonRLRAmfqFIP1TtY,2242
426
427
  sky/utils/common_utils.py,sha256=3cBop3bbR11XXsaxgH8oWK9YR8_F_cwvR7904LsRNU0,36285
@@ -444,7 +445,7 @@ sky/utils/rich_utils.py,sha256=ZKztFc0D5q7ma_NE2p9UKjVS9zqcJ3L53FRw6SPoUvg,14707
444
445
  sky/utils/schemas.py,sha256=L-FD12KpFWgch3ynBQjkaOszv_fB_u6f5iTRgg7Zq-A,52466
445
446
  sky/utils/status_lib.py,sha256=QGkd6COD1GX1h30Mk9RMUdyeUOMJs5971GkxTcFgdsU,1705
446
447
  sky/utils/subprocess_utils.py,sha256=tOpFY_1ml7JkVGAN1o473lcKPklGR95qBCW61eu8kEo,15773
447
- sky/utils/tempstore.py,sha256=TvCVXnPHzy_BLAXHhWvUcldqOY8iXh1vEWtBGHcpbmo,1725
448
+ sky/utils/tempstore.py,sha256=3S5fJ3UjnE12ve38c3MpTXpoRWfDSGndZpqNe7P_8aU,2148
448
449
  sky/utils/timeline.py,sha256=ob6s3bc7nwAuSI76yLKBrSR5bzOHnOhbozz1avwoet4,4070
449
450
  sky/utils/ux_utils.py,sha256=-fxqsar64eZWZ7vSH6gy1voxsDZTqcTR02a9uf_uRZg,10292
450
451
  sky/utils/validator.py,sha256=AHIYEBpxzpC2Eg8TulruFqQSjTxeynB0Dc7cfP1RX2M,1159
@@ -481,9 +482,9 @@ sky/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
481
482
  sky/workspaces/core.py,sha256=MkQoVqWN67tf4VRq284U9vgAw4lwb_cpUfwHQT4V9Ow,16598
482
483
  sky/workspaces/server.py,sha256=Box45DS54xXGHy7I3tGKGy-JP0a8G_z6IhfvGlEXtsA,3439
483
484
  sky/workspaces/utils.py,sha256=IIAiFoS6sdb2t0X5YoX9AietpTanZUQNTK8cePun-sY,2143
484
- skypilot_nightly-1.0.0.dev20250713.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
485
- skypilot_nightly-1.0.0.dev20250713.dist-info/METADATA,sha256=suJmleiT3cbxKguMNZZx7lsXHuZBUuqVFIYZB6Jng6M,18952
486
- skypilot_nightly-1.0.0.dev20250713.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
487
- skypilot_nightly-1.0.0.dev20250713.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
488
- skypilot_nightly-1.0.0.dev20250713.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
489
- skypilot_nightly-1.0.0.dev20250713.dist-info/RECORD,,
485
+ skypilot_nightly-1.0.0.dev20250716.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
486
+ skypilot_nightly-1.0.0.dev20250716.dist-info/METADATA,sha256=fVy_msGcnJ6VSqUIUIhwcVh871RmnZQn20N2_Dtea1o,18954
487
+ skypilot_nightly-1.0.0.dev20250716.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
488
+ skypilot_nightly-1.0.0.dev20250716.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
489
+ skypilot_nightly-1.0.0.dev20250716.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
490
+ skypilot_nightly-1.0.0.dev20250716.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST=function(s,c,a,e,t,f,u,n,r,i,b,j,d,k,o){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/chunks/pages/index-927ddeebe57a8ac3.js"],"/_error":["static/chunks/pages/_error-c72a1f77a3c0be1b.js"],"/clusters":["static/chunks/pages/clusters-102d169e87913ba1.js"],"/clusters/[cluster]":[s,c,a,e,t,r,b,f,u,n,j,i,d,k,o,"static/chunks/1871-cf1a47986d716dd2.js","static/chunks/pages/clusters/[cluster]-0fbfb1dd0b08c90c.js"],"/clusters/[cluster]/[job]":[s,c,a,e,t,f,u,n,"static/chunks/pages/clusters/[cluster]/[job]-4608dc89f95eba89.js"],"/config":["static/chunks/pages/config-a2673b256b6d416f.js"],"/infra":["static/chunks/pages/infra-ae9d2f705ce582c9.js"],"/infra/[context]":["static/chunks/pages/infra/[context]-8b0809f59034d509.js"],"/jobs":["static/chunks/pages/jobs-5bbdc71878f0a068.js"],"/jobs/[job]":[s,c,a,e,t,r,f,u,n,i,"static/chunks/pages/jobs/[job]-980d6f6b64ca7833.js"],"/users":["static/chunks/pages/users-cd43fb3c122eedde.js"],"/volumes":["static/chunks/pages/volumes-4ebf6484f7216387.js"],"/workspace/new":["static/chunks/pages/workspace/new-5629d4e551dba1ee.js"],"/workspaces":["static/chunks/pages/workspaces-06bde99155fa6292.js"],"/workspaces/[name]":[s,c,a,e,t,r,b,f,u,n,j,i,d,k,o,"static/chunks/1141-726e5a3f00b67185.js","static/chunks/pages/workspaces/[name]-7c0187f43757a548.js"],sortedPages:["/","/_app","/_error","/clusters","/clusters/[cluster]","/clusters/[cluster]/[job]","/config","/infra","/infra/[context]","/jobs","/jobs/[job]","/users","/volumes","/workspace/new","/workspaces","/workspaces/[name]"]}}("static/chunks/616-162f3033ffcd3d31.js","static/chunks/5230-df791914b54d91d9.js","static/chunks/5739-5ea3ffa10fc884f2.js","static/chunks/1664-d65361e92b85e786.js","static/chunks/804-9f5e98ce84d46bdd.js","static/chunks/6989-eab0e9c16b64fd9f.js","static/chunks/3698-52ad1ca228faa776.js","static/chunks/9470-21d059a1dfa03f61.js","static/chunks/1272-1ef0bf0237faccdb.js","static/chunks/8969-13bb52ce3cffa4e3.js","static/chunks/3947-b059261d6fa88a1f.js","static/chunks/6990-d0dc765474fa0eca.js","static/chunks/1043-5e5ef6198735ff7e.js","static/chunks/6601-d38d10f957dff832.js","static/chunks/938-8e25c8ea0baa271a.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1,11 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1141],{9333:function(e,s,l){l.d(s,{Z:function(){return r}});/**
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 r=(0,l(998).Z)("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]])},8418:function(e,s,l){l.d(s,{Z:function(){return r}});/**
7
- * @license lucide-react v0.407.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */let r=(0,l(998).Z)("Trash",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}]])},1812:function(e,s,l){l.d(s,{X:function(){return n}});var r=l(5893),a=l(7294);let t=e=>{if(!(null==e?void 0:e.message))return"An unexpected error occurred.";let s=e.message;return s.includes("failed:")&&(s=s.split("failed:")[1].trim()),s},n=e=>{let{error:s,title:l="Error",onDismiss:n}=e,[c,i]=(0,a.useState)(!1);if((0,a.useEffect)(()=>{s&&i(!1)},[s]),!s||c)return null;let o="string"==typeof s?s:t(s);return(0,r.jsx)("div",{className:"bg-red-50 border border-red-200 rounded-md p-3 mb-4",children:(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("div",{className:"flex",children:[(0,r.jsx)("div",{className:"flex-shrink-0",children:(0,r.jsx)("svg",{className:"h-5 w-5 text-red-400",viewBox:"0 0 20 20",fill:"currentColor",children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"})})}),(0,r.jsx)("div",{className:"ml-3",children:(0,r.jsxs)("div",{className:"text-sm text-red-800",children:[(0,r.jsxs)("strong",{children:[l,":"]})," ",o]})})]}),(0,r.jsx)("button",{onClick:()=>{i(!0),n&&n()},className:"flex-shrink-0 ml-4 text-red-400 hover:text-red-600 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 focus:ring-offset-red-50 rounded","aria-label":"Dismiss error",children:(0,r.jsx)("svg",{className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]})})}},9123:function(e,s,l){l.d(s,{g:function(){return n}});var r=l(5893),a=l(7294),t=l(2350);let n=a.forwardRef((e,s)=>{let{className:l,...a}=e;return(0,r.jsx)("textarea",{className:(0,t.cn)("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",l),ref:s,...a})});n.displayName="Textarea"},1141:function(e,s,l){l.r(s),l.d(s,{WorkspaceEditor:function(){return R}});var r=l(5893),a=l(7294),t=l(1163),n=l(7324),c=l(3266),i=l(8969);l(9470);var o=l(1664),d=l.n(o),u=l(9008),x=l.n(u),m=l(7673),h=l(803),f=l(9123),g=l(5739),p=l(282),b=l(6021),j=l(3626),y=l(8418),N=l(9333),v=l(326);let w=e=>{let{className:s="",variant:l="default",children:a,...t}=e;return(0,r.jsx)("div",{role:"alert",className:"".concat("relative w-full rounded-lg border p-4 flex items-start space-x-2"," ").concat({default:"bg-blue-50 border-blue-200 text-blue-800",destructive:"bg-red-50 border-red-200 text-red-800"}[l]," ").concat(s),...t,children:a})},k=e=>{let{className:s="",children:l,...a}=e;return(0,r.jsx)("div",{className:"text-sm leading-relaxed ".concat(s),...a,children:l})};var C=l(3850),L=l(1812),S=l(938),E=l(1272),M=l(3225),D=l(3081);let Z=e=>{let{message:s}=e;return s?(0,r.jsxs)(w,{className:"border-green-200 bg-green-50",children:[(0,r.jsx)(p.Z,{className:"h-4 w-4 text-green-600"}),(0,r.jsx)(k,{className:"text-green-800",children:s})]}):null},A=e=>{let{workspaceName:s,config:l,enabledClouds:a=[]}=e;if(!l)return null;let t="default"===s,n=0===Object.keys(l).length;if(t&&n)return(0,r.jsx)("div",{className:"text-sm text-gray-500 mb-3 italic p-3 bg-sky-50 rounded border border-sky-200",children:"Workspace 'default' can use all accessible infrastructure."});let c=[],i=[],o=[],d=new Set(a.map(e=>e.toLowerCase()));Object.entries(l).forEach(e=>{let[s,l]=e;if("private"===s||"allowed_users"===s)return;let a=M.MN[s.toLowerCase()]||s.toUpperCase(),t=d.has(null==a?void 0:a.toLowerCase());if((null==l?void 0:l.disabled)===!0)i.push(a);else if(l&&Object.keys(l).length>0){let e="";"gcp"===s.toLowerCase()&&l.project_id?e=" (Project ID: ".concat(l.project_id,")"):"aws"===s.toLowerCase()&&l.region&&(e=" (Region: ".concat(l.region,")")),t?c.push((0,r.jsxs)("span",{className:"block",children:[a,e," is enabled."]},"".concat(s,"-enabled"))):o.push((0,r.jsxs)("span",{className:"block text-amber-700",children:[a,e," is configured but not currently available."]},"".concat(s,"-configured-not-enabled")))}else t?c.push((0,r.jsxs)("span",{className:"block",children:[a," is enabled (using default settings)."]},"".concat(s,"-default-enabled"))):o.push((0,r.jsxs)("span",{className:"block text-amber-700",children:[a," is configured but not currently available."]},"".concat(s,"-default-not-enabled")))});let u=[];if(i.length>0){let e=i.join(" and ");u.push((0,r.jsxs)("span",{className:"block",children:[e," ",1===i.length?"is":"are"," explicitly disabled."]},"disabled-clouds"))}return(u.push(...c),u.push(...o),u.length>0)?(0,r.jsx)("div",{className:"text-sm text-gray-700 mb-3 p-3 bg-sky-50 rounded border border-sky-200",children:u}):!t&&n?(0,r.jsx)("div",{className:"text-sm text-gray-500 mb-3 italic p-3 bg-sky-50 rounded border border-sky-200",children:"This workspace has no specific cloud resource configurations and can use all accessible infrastructure."}):null},W=e=>{let{isPrivate:s}=e;return s?(0,r.jsx)("span",{className:"inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-amber-100 text-amber-800 border border-amber-300",children:"Private"}):(0,r.jsx)("span",{className:"inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-green-100 text-green-800 border border-green-300",children:"Public"})},P=e=>{let{workspaceConfig:s,allUsers:l}=e;if(!s.private)return null;let a=s.allowed_users||[],t=(l||[]).filter(e=>"admin"===e.role).map(e=>e.username),n=[...new Set([...a,...t])];return 0===n.length?(0,r.jsxs)("div",{className:"mt-4",children:[(0,r.jsx)("h4",{className:"mb-2 text-xs text-gray-500 tracking-wider",children:"Allowed Users (0)"}),(0,r.jsx)("div",{className:"text-amber-600 text-xs italic p-2 bg-amber-50 rounded border border-amber-200",children:"No users configured (workspace may be inaccessible)"})]}):(0,r.jsxs)("div",{className:"mt-4",children:[(0,r.jsxs)("h4",{className:"mb-2 text-xs text-gray-500 tracking-wider",children:["Allowed Users (",n.length,")"]}),(0,r.jsx)("div",{className:"space-y-1 max-h-48 overflow-y-auto border border-gray-200 rounded",children:n.map(e=>{let s=t.includes(e);return(0,r.jsxs)("div",{className:"flex items-center justify-between text-xs p-2 bg-gray-50 hover:bg-gray-100 border-b border-gray-100 last:border-b-0",children:[(0,r.jsx)("span",{className:"font-medium text-gray-700",children:e}),s?(0,r.jsxs)("span",{className:"inline-flex items-center text-blue-600",children:[(0,r.jsx)(C.r7,{className:"w-3 h-3 mr-1"}),"Admin"]}):(0,r.jsxs)("span",{className:"inline-flex items-center text-gray-600",children:[(0,r.jsx)(b.Z,{className:"w-3 h-3 mr-1"}),"User"]})]},e)})})]})};function R(e){let{workspaceName:s,isNewWorkspace:l=!1}=e,o=(0,t.useRouter)(),[u,p]=(0,a.useState)({}),[b,w]=(0,a.useState)({}),[k,M]=(0,a.useState)(""),[R,_]=(0,a.useState)(!0),[z,O]=(0,a.useState)(!1),[T,U]=(0,a.useState)(!1),[Y,J]=(0,a.useState)(null),[I,V]=(0,a.useState)(null),[F,H]=(0,a.useState)(null),[X,B]=(0,a.useState)([]),[G,q]=(0,a.useState)({showDialog:!1,deleting:!1,error:null}),[K,Q]=(0,a.useState)({totalClusterCount:0,runningClusterCount:0,managedJobsCount:0,clouds:[]}),[$,ee]=(0,a.useState)(!1),es=(0,a.useCallback)(async()=>{_(!0),J(null);try{let e;let[l,r]=await Promise.all([(0,n.fX)(),(0,D.R)()]),a=l[s]||{};p(a),w(a),B(r||[]),e=0===Object.keys(a).length?"".concat(s,":\n # Empty workspace configuration - uses all accessible infrastructure\n"):E.ZP.dump({[s]:a},{indent:2,lineWidth:-1,noRefs:!0,skipInvalid:!0,flowLevel:-1}),M(e)}catch(e){console.error("Error fetching workspace config:",e),J(e)}finally{_(!1)}},[s]),el=(0,a.useCallback)(async()=>{if(!l){ee(!0);try{let[e,l,r]=await Promise.all([(0,c.getClusters)(),(0,i.getManagedJobs)(),(0,n.yz)(s,!0)]),a=e.filter(e=>(e.workspace||"default")===s),t=a.filter(e=>"RUNNING"===e.status||"LAUNCHING"===e.status),o={};e.forEach(e=>{o[e.cluster]=e.workspace||"default"});let d=l.jobs||[],u=new Set(S.statusGroups.active),x=0;d.forEach(e=>{let l=e.cluster_name||e.resources&&e.resources.cluster_name;l&&o[l]===s&&u.has(e.status)&&x++}),Q({totalClusterCount:a.length,runningClusterCount:t.length,managedJobsCount:x,clouds:Array.isArray(r)?r:[]})}catch(e){console.error("Failed to fetch workspace stats:",e)}finally{ee(!1)}}},[s,l]);(0,a.useEffect)(()=>{l?(_(!1),M("".concat(s,":\n # New workspace configuration\n # Leave empty to use all accessible infrastructure\n"))):(es(),el())},[s,l,es,el]),(0,a.useEffect)(()=>{U(JSON.stringify(u)!==JSON.stringify(b))},[u,b]);let er=e=>{M(e),H(null);try{let l=E.ZP.load(e)||{},r=Object.keys(l);if(0===r.length)p({});else if(1===r.length){let e=r[0];if(e!==s){H('Workspace name cannot be changed. Expected "'.concat(s,'" but found "').concat(e,'".'));return}let a=l[s]||{};p(a)}else H("Configuration must contain only one workspace. Found: ".concat(r.join(", ")))}catch(e){H("Invalid YAML: ".concat(e.message))}},ea=async()=>{O(!0),J(null),V(null);try{if(F)throw Error("Please fix YAML errors before saving");let e=E.ZP.load(k)||{},r=Object.keys(e);if(r.length>0&&r[0]!==s)throw Error('Workspace name cannot be changed. Expected "'.concat(s,'".'));l?(await (0,n.MB)(s,u),V("Workspace created successfully!"),setTimeout(()=>{o.push("/workspaces/".concat(s))},1500)):(await (0,n.eA)(s,u),V("Workspace updated successfully!"),w(u),el())}catch(e){console.error("Error saving workspace:",e),J(e)}finally{O(!1)}},et=async()=>{q(e=>({...e,deleting:!0,error:null}));try{await (0,n.zl)(s),V("Workspace deleted successfully!"),setTimeout(()=>{o.push("/workspaces")},1500)}catch(e){console.error("Error deleting workspace:",e),q(s=>({...s,deleting:!1,error:e}))}},en=()=>{q({showDialog:!1,deleting:!1,error:null})},ec=async()=>{await Promise.all([es(),el()])};if(!o.isReady)return(0,r.jsx)("div",{children:"Loading..."});let ei=l?"Create New Workspace | SkyPilot Dashboard":"Workspace: ".concat(s," | SkyPilot Dashboard");return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(x(),{children:(0,r.jsx)("title",{children:ei})}),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex items-center justify-between mb-4 h-5",children:[(0,r.jsxs)("div",{className:"text-base flex items-center",children:[(0,r.jsx)(d(),{href:"/workspaces",className:"text-sky-blue hover:underline",children:"Workspaces"}),(0,r.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,r.jsx)(d(),{href:l?"/workspace/new":"/workspaces/".concat(s),className:"text-sky-blue hover:underline",children:l?"New Workspace":s}),T&&(0,r.jsx)("span",{className:"ml-3 px-2 py-1 bg-yellow-100 text-yellow-800 text-xs rounded",children:"Unsaved changes"})]}),(0,r.jsxs)("div",{className:"text-sm flex items-center",children:[(R||z||$)&&(0,r.jsxs)("div",{className:"flex items-center mr-4",children:[(0,r.jsx)(g.Z,{size:15,className:"mt-0"}),(0,r.jsx)("span",{className:"ml-2 text-gray-500",children:z?"Saving...":"Loading..."})]}),(0,r.jsxs)("div",{className:"flex items-center space-x-4",children:[!l&&(0,r.jsxs)("button",{onClick:ec,disabled:R||z||$,className:"text-sky-blue hover:text-sky-blue-bright font-medium inline-flex items-center",children:[(0,r.jsx)(j.Z,{className:"w-4 h-4 mr-1.5"}),"Refresh"]}),!l&&"default"!==s&&(0,r.jsxs)("button",{onClick:()=>q({...G,showDialog:!0}),disabled:G.deleting||z,className:"text-red-600 hover:text-red-700 font-medium inline-flex items-center",children:[(0,r.jsx)(y.Z,{className:"w-4 h-4 mr-1.5"}),"Delete"]})]})]})]}),R?(0,r.jsxs)("div",{className:"flex justify-center items-center py-12",children:[(0,r.jsx)(g.Z,{size:24,className:"mr-2"}),(0,r.jsx)("span",{className:"text-gray-500",children:"Loading workspace configuration..."})]}):(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsx)(L.X,{error:Y,title:"Error",onDismiss:()=>J(null)}),(0,r.jsx)(Z,{message:I}),(0,r.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[!l&&(0,r.jsx)("div",{className:"lg:col-span-1",children:(0,r.jsxs)(m.Zb,{className:"h-full",children:[(0,r.jsx)(m.Ol,{children:(0,r.jsx)(m.ll,{className:"text-base font-normal",children:(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"font-semibold",children:"Workspace:"})," ",s]}),(0,r.jsx)(W,{isPrivate:!0===b.private})]})})}),(0,r.jsxs)(m.aY,{className:"text-sm pb-2 flex-1",children:[(0,r.jsxs)("div",{className:"py-2 flex items-center justify-between",children:[(0,r.jsxs)("div",{className:"flex items-center text-gray-600",children:[(0,r.jsx)(C.QT,{className:"w-4 h-4 mr-2 text-gray-500"}),(0,r.jsx)("span",{children:"Clusters (Running / Total)"})]}),(0,r.jsx)("span",{className:"font-normal text-gray-800",children:$?"...":"".concat(K.runningClusterCount," / ").concat(K.totalClusterCount)})]}),(0,r.jsxs)("div",{className:"py-2 flex items-center justify-between border-t border-gray-100",children:[(0,r.jsxs)("div",{className:"flex items-center text-gray-600",children:[(0,r.jsx)(C.Vp,{className:"w-4 h-4 mr-2 text-gray-500"}),(0,r.jsx)("span",{children:"Managed Jobs"})]}),(0,r.jsx)("span",{className:"font-normal text-gray-800",children:$?"...":K.managedJobsCount})]})]}),(0,r.jsxs)("div",{className:"px-6 pb-6 text-sm pt-3",children:[(0,r.jsx)("h4",{className:"mb-2 text-xs text-gray-500 tracking-wider",children:"Enabled Infra"}),(0,r.jsx)("div",{className:"flex flex-wrap gap-x-4 gap-y-1",children:$?(0,r.jsx)("span",{className:"text-gray-500",children:"Loading..."}):K.clouds.length>0?K.clouds.map(e=>(0,r.jsxs)("div",{className:"flex items-center text-gray-700",children:[(0,r.jsx)(C.Ye,{className:"w-3.5 h-3.5 mr-1.5 text-green-500"}),(0,r.jsx)("span",{children:e})]},e)):(0,r.jsx)("span",{className:"text-gray-500 italic",children:"No enabled infrastructure"})}),(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsx)(A,{workspaceName:s,config:b,enabledClouds:K.clouds})}),(0,r.jsx)(P,{workspaceConfig:b,allUsers:X})]})]})}),(0,r.jsx)("div",{className:l?"lg:col-span-3":"lg:col-span-2",children:(0,r.jsxs)(m.Zb,{className:"h-full flex flex-col",children:[(0,r.jsx)(m.Ol,{children:(0,r.jsx)(m.ll,{className:"text-base font-normal",children:l?"New Workspace YAML":"Edit Workspace YAML"})}),(0,r.jsx)(m.aY,{className:"flex-1 flex flex-col",children:(0,r.jsxs)("div",{className:"space-y-4 flex-1 flex flex-col",children:[F&&(0,r.jsx)(L.X,{error:F,onDismiss:()=>H(null)}),(0,r.jsxs)("div",{className:"flex-1 flex flex-col",children:[(0,r.jsxs)("p",{className:"text-sm text-gray-600 mb-3",children:["Configure infra-specific settings for this workspace. Leave empty to use all accessible infrastructure. Refer to"," ",(0,r.jsx)("a",{href:"https://docs.skypilot.co/en/latest/admin/workspaces.html#configuration",target:"_blank",rel:"noopener noreferrer",className:"text-blue-600",children:"SkyPilot Docs"})," ","for more details."]}),(0,r.jsxs)("div",{className:"mb-4",children:[(0,r.jsx)("h4",{className:"text-sm font-medium text-gray-700 mb-2",children:"Example configuration:"}),(0,r.jsx)("div",{className:"p-3 bg-gray-50 border rounded-lg",children:(0,r.jsx)("pre",{className:"text-xs font-mono text-gray-600 whitespace-pre-wrap",children:"".concat(s||"my-workspace",":\n private: true\n allowed_users:\n - user1@mydomain.com\n - user2@mydomain.com\n gcp:\n project_id: xxx\n disabled: false\n kubernetes:\n allowed_contexts:\n - context-1")})})]}),(0,r.jsx)(f.g,{value:k,onChange:e=>er(e.target.value),className:"font-mono text-sm flex-1 resize-none",style:{minHeight:"350px"},spellCheck:!1,placeholder:"# Enter workspace configuration in YAML format"}),(0,r.jsx)("div",{className:"flex justify-end space-x-3 pt-3 border-gray-200",children:(0,r.jsxs)(h.z,{onClick:ea,disabled:z||F||R,className:"inline-flex items-center bg-blue-600 hover:bg-blue-700 text-white",children:[(0,r.jsx)(N.Z,{className:"w-4 h-4 mr-1.5"}),z?"Applying...":"Apply"]})})]})]})})]})})]})]}),(0,r.jsx)(v.Vq,{open:G.showDialog,onOpenChange:en,children:(0,r.jsxs)(v.cZ,{className:"sm:max-w-md",children:[(0,r.jsxs)(v.fK,{className:"",children:[(0,r.jsx)(v.$N,{children:"Delete Workspace"}),(0,r.jsxs)(v.Be,{children:['Are you sure you want to delete workspace "',s,'"? This action cannot be undone.']})]}),G.error&&(0,r.jsx)(L.X,{error:G.error,title:"Deletion Failed",onDismiss:()=>q(e=>({...e,error:null}))}),(0,r.jsxs)(v.cN,{className:"",children:[(0,r.jsx)(h.z,{variant:"outline",onClick:en,disabled:G.deleting,children:"Cancel"}),(0,r.jsx)(h.z,{variant:"destructive",onClick:et,disabled:G.deleting,children:G.deleting?"Deleting...":"Delete"})]})]})})]})]})}}}]);