skypilot-nightly 1.0.0.dev20250524__py3-none-any.whl → 1.0.0.dev20250526__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 (59) hide show
  1. sky/__init__.py +2 -2
  2. sky/check.py +4 -1
  3. sky/cli.py +13 -3
  4. sky/client/cli.py +13 -3
  5. sky/dashboard/out/404.html +1 -1
  6. sky/dashboard/out/_next/static/7GEgRyZKRaSnYZCV1Jwol/_buildManifest.js +1 -0
  7. sky/dashboard/out/_next/static/chunks/25-062253ea41fb8eec.js +6 -0
  8. sky/dashboard/out/_next/static/chunks/480-5a0de8b6570ea105.js +1 -0
  9. sky/dashboard/out/_next/static/chunks/578-d351125af46c293f.js +6 -0
  10. sky/dashboard/out/_next/static/chunks/734-a6e01d7f98904741.js +1 -0
  11. sky/dashboard/out/_next/static/chunks/938-59956af3950b02ed.js +1 -0
  12. sky/dashboard/out/_next/static/chunks/pages/_app-96a715a6fb01e228.js +1 -0
  13. sky/dashboard/out/_next/static/chunks/pages/{infra-e690d864aa00e2ea.js → infra-abb7d744ecf15109.js} +1 -1
  14. sky/dashboard/out/_next/static/chunks/pages/workspace/new-bbf436f41381e169.js +1 -0
  15. sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-7733c960685b4385.js +1 -0
  16. sky/dashboard/out/_next/static/chunks/pages/workspaces-5ed48b3201b998c8.js +1 -0
  17. sky/dashboard/out/_next/static/css/28558d57108b05ae.css +3 -0
  18. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  19. sky/dashboard/out/clusters/[cluster].html +1 -1
  20. sky/dashboard/out/clusters.html +1 -1
  21. sky/dashboard/out/index.html +1 -1
  22. sky/dashboard/out/infra.html +1 -1
  23. sky/dashboard/out/jobs/[job].html +1 -1
  24. sky/dashboard/out/jobs.html +1 -1
  25. sky/dashboard/out/users.html +1 -1
  26. sky/dashboard/out/workspace/new.html +1 -0
  27. sky/dashboard/out/workspaces/[name].html +1 -0
  28. sky/dashboard/out/workspaces.html +1 -1
  29. sky/global_user_state.py +592 -552
  30. sky/server/requests/payloads.py +17 -0
  31. sky/server/server.py +4 -13
  32. sky/setup_files/dependencies.py +1 -0
  33. sky/skypilot_config.py +31 -9
  34. sky/utils/db_utils.py +53 -0
  35. sky/utils/kubernetes/config_map_utils.py +133 -0
  36. sky/utils/kubernetes/deploy_remote_cluster.py +20 -4
  37. sky/utils/kubernetes/kubernetes_deploy_utils.py +49 -5
  38. sky/utils/kubernetes/ssh-tunnel.sh +20 -28
  39. sky/workspaces/__init__.py +0 -0
  40. sky/workspaces/core.py +295 -0
  41. sky/workspaces/server.py +62 -0
  42. {skypilot_nightly-1.0.0.dev20250524.dist-info → skypilot_nightly-1.0.0.dev20250526.dist-info}/METADATA +2 -1
  43. {skypilot_nightly-1.0.0.dev20250524.dist-info → skypilot_nightly-1.0.0.dev20250526.dist-info}/RECORD +51 -42
  44. sky/dashboard/out/_next/static/aHej19bZyl4hoHgrzPCn7/_buildManifest.js +0 -1
  45. sky/dashboard/out/_next/static/chunks/480-ee58038f1a4afd5c.js +0 -1
  46. sky/dashboard/out/_next/static/chunks/578-7a4795009a56430c.js +0 -6
  47. sky/dashboard/out/_next/static/chunks/734-5f5ce8f347b7f417.js +0 -1
  48. sky/dashboard/out/_next/static/chunks/938-f347f6144075b0c8.js +0 -1
  49. sky/dashboard/out/_next/static/chunks/pages/_app-dec800f9ef1b10f4.js +0 -1
  50. sky/dashboard/out/_next/static/chunks/pages/workspaces-02a7b60f2ead275f.js +0 -1
  51. sky/dashboard/out/_next/static/css/d2cdba64c9202dd7.css +0 -3
  52. /sky/dashboard/out/_next/static/{aHej19bZyl4hoHgrzPCn7 → 7GEgRyZKRaSnYZCV1Jwol}/_ssgManifest.js +0 -0
  53. /sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/{[job]-37c042a356f8e608.js → [job]-3b5aad09a25f64b7.js} +0 -0
  54. /sky/dashboard/out/_next/static/chunks/pages/jobs/{[job]-db6558a5ec687011.js → [job]-48dc8d67d4b60be1.js} +0 -0
  55. /sky/dashboard/out/_next/static/chunks/pages/{users-2d319455c3f1c3e2.js → users-b8acf6e6735323a2.js} +0 -0
  56. {skypilot_nightly-1.0.0.dev20250524.dist-info → skypilot_nightly-1.0.0.dev20250526.dist-info}/WHEEL +0 -0
  57. {skypilot_nightly-1.0.0.dev20250524.dist-info → skypilot_nightly-1.0.0.dev20250526.dist-info}/entry_points.txt +0 -0
  58. {skypilot_nightly-1.0.0.dev20250524.dist-info → skypilot_nightly-1.0.0.dev20250526.dist-info}/licenses/LICENSE +0 -0
  59. {skypilot_nightly-1.0.0.dev20250524.dist-info → skypilot_nightly-1.0.0.dev20250526.dist-info}/top_level.txt +0 -0
sky/workspaces/core.py ADDED
@@ -0,0 +1,295 @@
1
+ """Workspace management core."""
2
+
3
+ import concurrent.futures
4
+ from typing import Any, Callable, Dict
5
+
6
+ import filelock
7
+
8
+ from sky import check as sky_check
9
+ from sky import exceptions
10
+ from sky import global_user_state
11
+ from sky import sky_logging
12
+ from sky import skypilot_config
13
+ from sky.skylet import constants
14
+ from sky.usage import usage_lib
15
+ from sky.utils import common_utils
16
+ from sky.utils import schemas
17
+
18
+ logger = sky_logging.init_logger(__name__)
19
+
20
+ # Lock for workspace configuration updates to prevent race conditions
21
+ _WORKSPACE_CONFIG_LOCK_TIMEOUT_SECONDS = 60
22
+
23
+ # =========================
24
+ # = Workspace Management =
25
+ # =========================
26
+
27
+
28
+ def get_workspaces() -> Dict[str, Any]:
29
+ """Returns the workspace config."""
30
+ workspaces = skypilot_config.get_nested(('workspaces',), default_value={})
31
+ if constants.SKYPILOT_DEFAULT_WORKSPACE not in workspaces:
32
+ workspaces[constants.SKYPILOT_DEFAULT_WORKSPACE] = {}
33
+ return workspaces
34
+
35
+
36
+ def _update_workspaces_config(
37
+ workspace_modifier_fn: Callable[[Dict[str, Any]],
38
+ None]) -> Dict[str, Any]:
39
+ """Update the workspaces configuration in the config file.
40
+
41
+ This function uses file locking to prevent race conditions when multiple
42
+ processes try to update the workspace configuration simultaneously.
43
+
44
+ Args:
45
+ workspace_modifier_fn: A function that takes the current workspaces
46
+ dict and modifies it in-place. This ensures all read-modify-write
47
+ operations happen atomically inside the lock.
48
+
49
+ Returns:
50
+ The updated workspaces configuration.
51
+ """
52
+ lock_path = skypilot_config.get_skypilot_config_lock_path()
53
+ try:
54
+ with filelock.FileLock(lock_path,
55
+ _WORKSPACE_CONFIG_LOCK_TIMEOUT_SECONDS):
56
+ # Read the current config inside the lock to ensure we have
57
+ # the latest state
58
+ current_config = skypilot_config.to_dict()
59
+ current_workspaces = current_config.get('workspaces', {}).copy()
60
+
61
+ # Apply the modification inside the lock
62
+ workspace_modifier_fn(current_workspaces)
63
+
64
+ # Update the config with the modified workspaces
65
+ current_config['workspaces'] = current_workspaces
66
+
67
+ # Write the configuration back to the file
68
+ skypilot_config.update_config_no_lock(current_config)
69
+
70
+ return current_workspaces
71
+ except filelock.Timeout as e:
72
+ raise RuntimeError(
73
+ f'Failed to update workspace configuration due to a timeout '
74
+ f'when trying to acquire the lock at {lock_path}. This may '
75
+ 'indicate another SkyPilot process is currently updating the '
76
+ 'configuration. Please try again or manually remove the lock '
77
+ f'file if you believe it is stale.') from e
78
+
79
+
80
+ def _check_workspace_has_no_active_resources(workspace_name: str,
81
+ operation: str) -> None:
82
+ """Check if a workspace has active clusters or managed jobs.
83
+
84
+ Args:
85
+ workspace_name: The name of the workspace to check.
86
+ operation: The operation being performed ('update' or 'delete').
87
+
88
+ Raises:
89
+ ValueError: If the workspace has active clusters or managed jobs.
90
+ """
91
+
92
+ def check_clusters():
93
+ # Check for active clusters
94
+ all_clusters = global_user_state.get_clusters()
95
+ workspace_clusters = [
96
+ cluster for cluster in all_clusters
97
+ if (cluster.get('workspace', constants.SKYPILOT_DEFAULT_WORKSPACE)
98
+ == workspace_name)
99
+ ]
100
+ return workspace_clusters
101
+
102
+ def check_managed_jobs():
103
+ # Check for active managed jobs using the jobs controller
104
+ # pylint: disable=import-outside-toplevel
105
+ from sky.jobs.server import core as managed_jobs_core
106
+
107
+ try:
108
+ # Get active managed jobs from the jobs controller
109
+ # (skip_finished=True)
110
+ managed_jobs = managed_jobs_core.queue(refresh=False,
111
+ skip_finished=True,
112
+ all_users=True)
113
+
114
+ workspace_active_jobs = [
115
+ job for job in managed_jobs
116
+ if job.get('workspace', constants.SKYPILOT_DEFAULT_WORKSPACE) ==
117
+ workspace_name
118
+ ]
119
+
120
+ return workspace_active_jobs
121
+
122
+ except exceptions.ClusterNotUpError:
123
+ # If we can't check managed jobs (e.g., controller not running),
124
+ # log a warning but don't fail the operation
125
+ logger.warning('All jobs should be finished in workspace.')
126
+ return []
127
+
128
+ # Run both checks in parallel
129
+ with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor:
130
+ cluster_future = executor.submit(check_clusters)
131
+ jobs_future = executor.submit(check_managed_jobs)
132
+
133
+ # Wait for both to complete
134
+ workspace_clusters = cluster_future.result()
135
+ workspace_active_jobs = jobs_future.result()
136
+
137
+ # Check results
138
+ if workspace_clusters:
139
+ active_cluster_names = [
140
+ cluster['name'] for cluster in workspace_clusters
141
+ ]
142
+ cluster_list = ', '.join(active_cluster_names)
143
+ raise ValueError(
144
+ f'Cannot {operation} workspace {workspace_name!r} because it has '
145
+ f'{len(workspace_clusters)} active cluster(s): {cluster_list}. '
146
+ f'Please terminate these clusters first.')
147
+
148
+ if workspace_active_jobs:
149
+ job_names = [job['job_id'] for job in workspace_active_jobs]
150
+ job_list = ', '.join(job_names)
151
+ raise ValueError(
152
+ f'Cannot {operation} workspace {workspace_name!r} because it has '
153
+ f'{len(workspace_active_jobs)} active managed job(s): '
154
+ f'{job_list}. Please cancel these jobs first.')
155
+
156
+
157
+ def _validate_workspace_config(workspace_name: str,
158
+ workspace_config: Dict[str, Any]) -> None:
159
+ """Validate the workspace configuration.
160
+ """
161
+ workspace_schema = schemas.get_config_schema(
162
+ )['properties']['workspaces']['additionalProperties']
163
+ try:
164
+ common_utils.validate_schema(
165
+ workspace_config, workspace_schema,
166
+ f'Invalid configuration for workspace {workspace_name!r}: ')
167
+ except exceptions.InvalidSkyPilotConfigError as e:
168
+ # We need to replace this exception with a ValueError because: a) it is
169
+ # more user-friendly and b) it will not be caught by the try-except by
170
+ # the caller the may cause confusion.
171
+ raise ValueError(str(e)) from e
172
+
173
+
174
+ @usage_lib.entrypoint
175
+ def update_workspace(workspace_name: str, config: Dict[str,
176
+ Any]) -> Dict[str, Any]:
177
+ """Updates a specific workspace configuration.
178
+
179
+ Args:
180
+ workspace_name: The name of the workspace to update.
181
+ config: The new configuration for the workspace.
182
+
183
+ Returns:
184
+ The updated workspaces configuration.
185
+
186
+ Raises:
187
+ ValueError: If the workspace configuration is invalid, or if there are
188
+ active clusters or managed jobs in the workspace.
189
+ FileNotFoundError: If the config file cannot be found.
190
+ PermissionError: If the config file cannot be written.
191
+ """
192
+ # Check for active clusters and managed jobs in the workspace
193
+ _check_workspace_has_no_active_resources(workspace_name, 'update')
194
+
195
+ _validate_workspace_config(workspace_name, config)
196
+
197
+ def update_workspace_fn(workspaces: Dict[str, Any]) -> None:
198
+ """Function to update workspace inside the lock."""
199
+ workspaces[workspace_name] = config
200
+
201
+ # Use the internal helper function to save
202
+ result = _update_workspaces_config(update_workspace_fn)
203
+
204
+ # Validate the workspace by running sky check for it
205
+ try:
206
+ sky_check.check(quiet=True, workspace=workspace_name)
207
+ except Exception as e: # pylint: disable=broad-except
208
+ logger.warning(f'Workspace {workspace_name} configuration saved but '
209
+ f'validation check failed: {e}')
210
+ # Don't fail the update if the check fails, just warn
211
+
212
+ return result
213
+
214
+
215
+ @usage_lib.entrypoint
216
+ def create_workspace(workspace_name: str, config: Dict[str,
217
+ Any]) -> Dict[str, Any]:
218
+ """Creates a new workspace configuration.
219
+
220
+ Args:
221
+ workspace_name: The name of the workspace to create.
222
+ config: The configuration for the new workspace.
223
+
224
+ Returns:
225
+ The updated workspaces configuration.
226
+
227
+ Raises:
228
+ ValueError: If the workspace already exists or configuration is invalid.
229
+ FileNotFoundError: If the config file cannot be found.
230
+ PermissionError: If the config file cannot be written.
231
+ """
232
+ # Validate the workspace name
233
+ if not workspace_name or not isinstance(workspace_name, str):
234
+ raise ValueError('Workspace name must be a non-empty string.')
235
+
236
+ _validate_workspace_config(workspace_name, config)
237
+
238
+ def create_workspace_fn(workspaces: Dict[str, Any]) -> None:
239
+ """Function to create workspace inside the lock."""
240
+ if workspace_name in workspaces:
241
+ raise ValueError(f'Workspace {workspace_name!r} already exists. '
242
+ 'Use update instead.')
243
+ workspaces[workspace_name] = config
244
+
245
+ # Use the internal helper function to save
246
+ result = _update_workspaces_config(create_workspace_fn)
247
+
248
+ # Validate the workspace by running sky check for it
249
+ try:
250
+ sky_check.check(quiet=True, workspace=workspace_name)
251
+ except Exception as e: # pylint: disable=broad-except
252
+ logger.warning(f'Workspace {workspace_name} configuration saved but '
253
+ f'validation check failed: {e}')
254
+ # Don't fail the update if the check fails, just warn
255
+
256
+ return result
257
+
258
+
259
+ @usage_lib.entrypoint
260
+ def delete_workspace(workspace_name: str) -> Dict[str, Any]:
261
+ """Deletes a workspace configuration.
262
+
263
+ Args:
264
+ workspace_name: The name of the workspace to delete.
265
+
266
+ Returns:
267
+ The updated workspaces configuration.
268
+
269
+ Raises:
270
+ ValueError: If the workspace doesn't exist, is the default workspace,
271
+ or has active clusters or managed jobs.
272
+ FileNotFoundError: If the config file cannot be found.
273
+ PermissionError: If the config file cannot be written.
274
+ """
275
+ # Prevent deletion of default workspace
276
+ if workspace_name == constants.SKYPILOT_DEFAULT_WORKSPACE:
277
+ raise ValueError(f'Cannot delete the default workspace '
278
+ f'{constants.SKYPILOT_DEFAULT_WORKSPACE!r}.')
279
+
280
+ # Check if workspace exists
281
+ current_workspaces = get_workspaces()
282
+ if workspace_name not in current_workspaces:
283
+ raise ValueError(f'Workspace {workspace_name!r} does not exist.')
284
+
285
+ # Check for active clusters and managed jobs in the workspace
286
+ _check_workspace_has_no_active_resources(workspace_name, 'delete')
287
+
288
+ def delete_workspace_fn(workspaces: Dict[str, Any]) -> None:
289
+ """Function to delete workspace inside the lock."""
290
+ if workspace_name not in workspaces:
291
+ raise ValueError(f'Workspace {workspace_name!r} does not exist.')
292
+ del workspaces[workspace_name]
293
+
294
+ # Use the internal helper function to save
295
+ return _update_workspaces_config(delete_workspace_fn)
@@ -0,0 +1,62 @@
1
+ """REST API for workspace management."""
2
+
3
+ import fastapi
4
+
5
+ from sky.server.requests import executor
6
+ from sky.server.requests import payloads
7
+ from sky.server.requests import requests as api_requests
8
+ from sky.workspaces import core
9
+
10
+ router = fastapi.APIRouter()
11
+
12
+
13
+ @router.get('')
14
+ # pylint: disable=redefined-builtin
15
+ async def get(request: fastapi.Request) -> None:
16
+ """Gets workspace config on the server."""
17
+ executor.schedule_request(
18
+ request_id=request.state.request_id,
19
+ request_name='workspaces.get',
20
+ request_body=payloads.RequestBody(),
21
+ func=core.get_workspaces,
22
+ schedule_type=api_requests.ScheduleType.SHORT,
23
+ )
24
+
25
+
26
+ @router.post('/update')
27
+ async def update(request: fastapi.Request,
28
+ update_workspace_body: payloads.UpdateWorkspaceBody) -> None:
29
+ """Updates a specific workspace configuration."""
30
+ executor.schedule_request(
31
+ request_id=request.state.request_id,
32
+ request_name='workspaces.update',
33
+ request_body=update_workspace_body,
34
+ func=core.update_workspace,
35
+ schedule_type=api_requests.ScheduleType.SHORT,
36
+ )
37
+
38
+
39
+ @router.post('/create')
40
+ async def create(request: fastapi.Request,
41
+ create_workspace_body: payloads.CreateWorkspaceBody) -> None:
42
+ """Creates a new workspace configuration."""
43
+ executor.schedule_request(
44
+ request_id=request.state.request_id,
45
+ request_name='workspaces.create',
46
+ request_body=create_workspace_body,
47
+ func=core.create_workspace,
48
+ schedule_type=api_requests.ScheduleType.SHORT,
49
+ )
50
+
51
+
52
+ @router.post('/delete')
53
+ async def delete(request: fastapi.Request,
54
+ delete_workspace_body: payloads.DeleteWorkspaceBody) -> None:
55
+ """Deletes a workspace configuration."""
56
+ executor.schedule_request(
57
+ request_id=request.state.request_id,
58
+ request_name='workspaces.delete',
59
+ request_body=delete_workspace_body,
60
+ func=core.delete_workspace,
61
+ schedule_type=api_requests.ScheduleType.SHORT,
62
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250524
3
+ Version: 1.0.0.dev20250526
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -47,6 +47,7 @@ Requires-Dist: python-multipart
47
47
  Requires-Dist: aiofiles
48
48
  Requires-Dist: httpx
49
49
  Requires-Dist: setproctitle
50
+ Requires-Dist: sqlalchemy
50
51
  Provides-Extra: aws
51
52
  Requires-Dist: awscli>=1.27.10; extra == "aws"
52
53
  Requires-Dist: botocore>=1.29.10; extra == "aws"
@@ -1,19 +1,19 @@
1
- sky/__init__.py,sha256=xR7lu1hdIxDKOViYe9eIeU10OCjFQTPDLTwtmU0RuUU,6428
1
+ sky/__init__.py,sha256=wkBbWcDGwqieUPRT_DR9HdGtGFWluVMTWnR_o4eEnn0,6428
2
2
  sky/admin_policy.py,sha256=hPo02f_A32gCqhUueF0QYy1fMSSKqRwYEg_9FxScN_s,3248
3
3
  sky/authentication.py,sha256=ND011K_-Ud1dVZF37A9KrwYir_ihJXcHc7iDWmuBc8Q,22872
4
- sky/check.py,sha256=Io-09yzvRSRo3Bf9S292N-v5Ik8ktC0DBG7MAx9x6vM,26914
5
- sky/cli.py,sha256=n_26TnLd2IyM-SAZ_UitJuqAFcHVUOfHdFFJZLPjraY,244052
4
+ sky/check.py,sha256=CzYM5gyI3AIPvtSxAhau_cvuCGD91oTFCmc9ReYAQvs,26986
5
+ sky/cli.py,sha256=7Tih3F7Y8DavpwfK7BRYgLomilUKY77e8x6pbKJpofw,244583
6
6
  sky/cloud_stores.py,sha256=Ln5GBpel-sEs7rVx7bBrMkfLwA_bctI05Rox2uoz7Lo,26388
7
7
  sky/core.py,sha256=nZBAu-rNYeogpJKJCIEJqJNPxGox-SBSQC16t9RwPOU,51383
8
8
  sky/dag.py,sha256=8x-VMtjvSi0lYBemCMPLYq5ONljhoABjWzMKjmmdjSo,3369
9
9
  sky/exceptions.py,sha256=6TJ1MMw6Y9W94eig22xgun3rzvJCTh4yHNq3mGACX-U,17362
10
10
  sky/execution.py,sha256=YSzpSxoUqLlGZ5v-2pgCt9Jkkcwz12FovOeFs3lC3q8,33109
11
- sky/global_user_state.py,sha256=JqFMxuJfPQdcipbk_Yi4bbPLbTMsVPyGQRMbvAI_b5E,34982
11
+ sky/global_user_state.py,sha256=GE2Grs6nJpgOPRy2mrGepnRBYlh0baJnrpwoJ7eDvE4,40726
12
12
  sky/models.py,sha256=bGMSATMkSMr_Kp6SCoiJVVeebwSdZuzjw_jrJzVWAAc,1603
13
13
  sky/optimizer.py,sha256=24hkzaM1W_VRhVkhtWXmUhJDOX55WV9kEF1hAVW_tVg,61426
14
14
  sky/resources.py,sha256=QIUvDeEEcxxAMwl_MnLRP3Y6L0CBczNO4EoDhLcGR5A,92232
15
15
  sky/sky_logging.py,sha256=cMurxhFExKEFX1frcMR71Ti_s9Obg9WY30veVxsZB6o,7285
16
- sky/skypilot_config.py,sha256=_y_Mz4X-7Qs6VHjjT4fuwd97LaRrIjKYRCKogYXXm3U,27527
16
+ sky/skypilot_config.py,sha256=_le1hQwc8mH4BGFQIp7A637_k3Dw8780adfjtA22GWQ,28353
17
17
  sky/task.py,sha256=trVBbnDejpRjDjpl-9FTt32sx6HXihAkCmQ4yKFebXg,58403
18
18
  sky/adaptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  sky/adaptors/aws.py,sha256=4caUTO5nxZQyDVPyQdoPljaF-Lz_Fa6NEnu3FfmLZd4,8633
@@ -43,7 +43,7 @@ sky/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
43
  sky/benchmark/benchmark_state.py,sha256=X8CXmuU9KgsDRhKedhFgjeRMUFWtQsjFs1qECvPG2yg,8723
44
44
  sky/benchmark/benchmark_utils.py,sha256=7rf-iHt6RXZ_pnBBWOMwcdodHQW69x27xNyx0yVog1U,26385
45
45
  sky/client/__init__.py,sha256=pz6xvVSd9X-gwqbsDL0E9QOojYqM0KAD0j-NCyCIF1k,38
46
- sky/client/cli.py,sha256=n_26TnLd2IyM-SAZ_UitJuqAFcHVUOfHdFFJZLPjraY,244052
46
+ sky/client/cli.py,sha256=7Tih3F7Y8DavpwfK7BRYgLomilUKY77e8x6pbKJpofw,244583
47
47
  sky/client/common.py,sha256=E_5cjxd8fWRB7fU1yfIbiyQf-IyVhpD5KkB7Fl3cQEI,15215
48
48
  sky/client/sdk.py,sha256=Ruxr7ZfUyprJxbY32NSActcHIBX8dRmPvC46qJzAT1k,78595
49
49
  sky/clouds/__init__.py,sha256=5aPPmXGCnGN8DbOXTXh_BirESaW4wK-bao2n_3-fm6Q,1561
@@ -103,25 +103,26 @@ sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4
103
103
  sky/clouds/utils/gcp_utils.py,sha256=YtuS4EoAMvcRnGPgE_WLENPOPWIdvhp7dLceTw_zfas,7114
104
104
  sky/clouds/utils/oci_utils.py,sha256=0YxhgZdeIHQUI1AZ86YuswsZg5HdVCIVfSTRJsSHYI0,6396
105
105
  sky/clouds/utils/scp_utils.py,sha256=MqawUhhFHHxVnn29nOI4gJ_nF665ich4Po7bsy1afsA,15948
106
- sky/dashboard/out/404.html,sha256=-47igXvLOVOMcWszojSNL8c-C6XRs8jLYOmyFDN0EOY,2296
107
- sky/dashboard/out/clusters.html,sha256=rc_agciDEAmPTaXLt8UY1t40_W9PfjcinFcKUxLLVQM,13612
106
+ sky/dashboard/out/404.html,sha256=S-xFtozoHT-f6CnVW8bi1Qhd_zjM4PmFKuaJt2e8Cq8,2296
107
+ sky/dashboard/out/clusters.html,sha256=8H92yE4caY8mDowcIhZS8K5YeE7v6a9sBbVTsQaAXF0,13612
108
108
  sky/dashboard/out/favicon.ico,sha256=XilUZZglAl_1zRsg85QsbQgmQAzGPQjcUIJ-A3AzYn8,93590
109
- sky/dashboard/out/index.html,sha256=CkAliPG8Ikgo7aEzYyehEXwX4RnzInjncb9VTAGLrgY,1407
110
- sky/dashboard/out/infra.html,sha256=2zRCbea_43e2RpHLxyIRWm7LgvpnPuEP3f6pwGirheY,18682
111
- sky/dashboard/out/jobs.html,sha256=pjqMirmoJlNDVcKnDZN-9OreJnTqqjSt8QLpjg6GAV8,14707
109
+ sky/dashboard/out/index.html,sha256=ySHBQdcpKgaG7SzOYfQJ7_5INhV78rYFInMZQu_1Qh4,1407
110
+ sky/dashboard/out/infra.html,sha256=4FeL7Z9E1OxA5JADdzlswThbpPIkPn_wVyeibNraRj4,18682
111
+ sky/dashboard/out/jobs.html,sha256=kGyjxg-24fsBswB7g20KiDWbRIqdj5fKbvMmJXaOAcE,14707
112
112
  sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
113
- sky/dashboard/out/users.html,sha256=lKjqEltK09-N9Dx0WgHM9whLUYft786b-DSFDiJfryA,12366
114
- sky/dashboard/out/workspaces.html,sha256=oVio30_-0cVgDQMJuF22-bZCuZByFLO4JmmmsNN_vC0,11905
115
- sky/dashboard/out/_next/static/aHej19bZyl4hoHgrzPCn7/_buildManifest.js,sha256=Q9CF5nSvjJnkm9Qseh8GTJ2xjyftBZW1_-60PFCP32M,1371
116
- sky/dashboard/out/_next/static/aHej19bZyl4hoHgrzPCn7/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
117
- sky/dashboard/out/_next/static/chunks/480-ee58038f1a4afd5c.js,sha256=V1y-BfgVkB5QDwfI6Dj_1aJXmTCftO14H0fHmJ2orII,22985
113
+ sky/dashboard/out/users.html,sha256=Ihkyj_BcMpuGIN7AU3xNZ_yIEsBmvxC64hT_zlaagEY,12366
114
+ sky/dashboard/out/workspaces.html,sha256=nFxSTM1Gzteitzmf5GcSf5ZBHvD1IGKiI4XmnTlIejc,11901
115
+ sky/dashboard/out/_next/static/7GEgRyZKRaSnYZCV1Jwol/_buildManifest.js,sha256=gCA9z3nHRuoumlhXAHrhHiuFeGOY9sR74rO0MnvxS8k,1648
116
+ sky/dashboard/out/_next/static/7GEgRyZKRaSnYZCV1Jwol/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
117
+ sky/dashboard/out/_next/static/chunks/25-062253ea41fb8eec.js,sha256=JsmeTZAAvKLageHBNi5GlcMOmFYQsozdgC05xuYEFWs,14846
118
+ sky/dashboard/out/_next/static/chunks/480-5a0de8b6570ea105.js,sha256=63umXKpoUEcQEddm5-FQEUGYJrYYk_m9PGi1cSfHIvE,23077
118
119
  sky/dashboard/out/_next/static/chunks/488-50d843fdb5396d32.js,sha256=0ECQ8dqh-FzJ-NQZ-JV6KsCZqfsenPoxacGpWQlOIzI,8916
119
120
  sky/dashboard/out/_next/static/chunks/498-d7722313e5e5b4e6.js,sha256=utGz6l3eM0QXd5NCMUTCyK_yfOoi2fqlTFY8sbRuQkM,64292
120
121
  sky/dashboard/out/_next/static/chunks/573-f17bd89d9f9118b3.js,sha256=p1Ce-Z3KwtCegMin6sGzif0oVLCT6uzvnfYhOs30tgg,283993
121
- sky/dashboard/out/_next/static/chunks/578-7a4795009a56430c.js,sha256=zhTifYbc-eQqiyjjlh2g1qS0mj3cPivtgc903NJuvqY,9849
122
- sky/dashboard/out/_next/static/chunks/734-5f5ce8f347b7f417.js,sha256=8U4JnFHvE-D92X332WhFisy3-wZFQWSA0sPThiUPx24,22597
122
+ sky/dashboard/out/_next/static/chunks/578-d351125af46c293f.js,sha256=sLLMKRpah8ozOKKARGCiha7eBzOiqGUJWATTZnE7ixA,10039
123
+ sky/dashboard/out/_next/static/chunks/734-a6e01d7f98904741.js,sha256=ueu7mLMWTb5qKbGvTkLKoxJWHPxbBgqj-rLUVqVQM-A,28369
123
124
  sky/dashboard/out/_next/static/chunks/937.f97f83652028e944.js,sha256=3G2YlQgxD17Z7GeznWGDwYSKEB8W4FZFfLKEXmtBiWE,54452
124
- sky/dashboard/out/_next/static/chunks/938-f347f6144075b0c8.js,sha256=WsBlMazsWIC2xyeg590BuKKJaIDnmr2KUAf9wcwUMgQ,27360
125
+ sky/dashboard/out/_next/static/chunks/938-59956af3950b02ed.js,sha256=1dFMyQWZaqxfyP8c_b0aTX14C-WIfXh2biqZ1GN8zII,27538
125
126
  sky/dashboard/out/_next/static/chunks/9f96d65d-5a3e4af68c26849e.js,sha256=wJGR2e5odhfpiO3-Y0iIQVUJ5rBhfM_9tSb5CIDHcaE,134395
126
127
  sky/dashboard/out/_next/static/chunks/fd9d1056-2821b0f0cabcd8bd.js,sha256=ce2WOATL1LdzsWouKQ-1NCiBQJmcykgzqP8wCp1yqbE,172831
127
128
  sky/dashboard/out/_next/static/chunks/framework-87d061ee6ed71b28.js,sha256=dh6TKdXcSRoGP4HqHe2uwzWCZBPz16dyTWufLsxeRvM,140942
@@ -129,22 +130,26 @@ sky/dashboard/out/_next/static/chunks/main-app-241eb28595532291.js,sha256=P0_tU7
129
130
  sky/dashboard/out/_next/static/chunks/main-e0e2335212e72357.js,sha256=BxTmVbZDnMUQvQd57MEl1Ui0VZaNmwLOviY7h_xMjP0,109884
130
131
  sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
131
132
  sky/dashboard/out/_next/static/chunks/webpack-deda68c926e8d0bc.js,sha256=e2NBwO2sLf3MuwMPPaYQ5bWK1OwP5mbuzaaLkDLCJJ4,3620
132
- sky/dashboard/out/_next/static/chunks/pages/_app-dec800f9ef1b10f4.js,sha256=QpErAbFAqwG0yghpZHpcqkvbQ91NmS0zpuC7P92Enmc,1964
133
+ sky/dashboard/out/_next/static/chunks/pages/_app-96a715a6fb01e228.js,sha256=lqFYBo3gcDUyNT-vVEqyoXJkFmFKu6i4wvssOQiqQhE,2097
133
134
  sky/dashboard/out/_next/static/chunks/pages/_error-1be831200e60c5c0.js,sha256=TZqrus06KKPx-CMABDMPKF7w-NQ5s2gwJAM8Huyl7qU,247
134
135
  sky/dashboard/out/_next/static/chunks/pages/clusters-9e6d1ec6e1ac5b29.js,sha256=Q0SyquPBLEBEAVMN46t-MsmufK057ajul0gBNQQ3gNU,567
135
136
  sky/dashboard/out/_next/static/chunks/pages/index-6b0d9e5031b70c58.js,sha256=Fp2FKnKQtORK_5O7MEQ08tlTk7ewMLuecw_EY5g4Dlg,513
136
- sky/dashboard/out/_next/static/chunks/pages/infra-e690d864aa00e2ea.js,sha256=goxxTvgCkQBVAXXImo8CjZIhXCGIB0wvSQ9FIS1uBxM,29966
137
+ sky/dashboard/out/_next/static/chunks/pages/infra-abb7d744ecf15109.js,sha256=VABF1icfIKGak3pfsuzxQUsKy9WRViUSQVp0PEg0Vs0,29939
137
138
  sky/dashboard/out/_next/static/chunks/pages/jobs-73d5e0c369d00346.js,sha256=BB_idE0HXeXdprv4NGSJbTDRSVJdCxMwvfq9Y09Zy-Y,2160
138
- sky/dashboard/out/_next/static/chunks/pages/users-2d319455c3f1c3e2.js,sha256=VF3SqA2_zTY89HnXCGwebTEVVZ1RvubThg_LXosbvPI,19453
139
- sky/dashboard/out/_next/static/chunks/pages/workspaces-02a7b60f2ead275f.js,sha256=eFnLmw_LtZ3y4Uz8LBfI85KXtH2Zhim-Za5rD1xLLZ0,9645
139
+ sky/dashboard/out/_next/static/chunks/pages/users-b8acf6e6735323a2.js,sha256=VF3SqA2_zTY89HnXCGwebTEVVZ1RvubThg_LXosbvPI,19453
140
+ sky/dashboard/out/_next/static/chunks/pages/workspaces-5ed48b3201b998c8.js,sha256=ehcthDoMLt1FN2NV-mJkKqZ9dHcbtl6mME5MxBfjL6A,11732
140
141
  sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-9529d9e882a0e75c.js,sha256=0ozFlodCQDVNXR1iemuHFJXyytp2NSFGZfkq1kElnrY,6417
141
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-37c042a356f8e608.js,sha256=YuwYsmtDERcOiaVNlvB-k-GD2X68CKNZmE7ve9fnmMc,13451
142
- sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-db6558a5ec687011.js,sha256=HVyGtFN67KCMqUYCwbWdIIcRyjr03KdfgmIRqKt5LrE,18085
143
- sky/dashboard/out/_next/static/css/d2cdba64c9202dd7.css,sha256=Kuebou3U5mcNsCjLnNjQeMMp9YozyOQ_Ao9uiqL_zho,34773
144
- sky/dashboard/out/clusters/[cluster].html,sha256=nm5n3iAlFOVEPZuvSfHktEoU0Jyp8OSPsMk25t5h154,1985
145
- sky/dashboard/out/clusters/[cluster]/[job].html,sha256=hTUlTL5pcly0EnyBYOtoGBLZrMeTt_Tq3bNNBQl0MA4,1653
146
- sky/dashboard/out/jobs/[job].html,sha256=sKDHqFsgR6cWvNuE8sGbyAc-cz1yqB8_w93AkwKK73A,1621
142
+ sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-3b5aad09a25f64b7.js,sha256=YuwYsmtDERcOiaVNlvB-k-GD2X68CKNZmE7ve9fnmMc,13451
143
+ sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-48dc8d67d4b60be1.js,sha256=HVyGtFN67KCMqUYCwbWdIIcRyjr03KdfgmIRqKt5LrE,18085
144
+ sky/dashboard/out/_next/static/chunks/pages/workspace/new-bbf436f41381e169.js,sha256=A2mNnaY0O-nIp8eBR4dkZTUbOWH8YvikXjJXd8dVYBg,3537
145
+ sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-7733c960685b4385.js,sha256=bf9iHxWW1cQK9r6hCrGOXOl2JlCd_shoabrI2t_emUM,564
146
+ sky/dashboard/out/_next/static/css/28558d57108b05ae.css,sha256=kO6XnAPIvhQ-_AOvR6Hif7k5h08QZgPklXZjmmmDLRQ,37380
147
+ sky/dashboard/out/clusters/[cluster].html,sha256=SM7fio2PL-v5tKRn6Miq6T94IllMOejDaaJ8Ef8T1QY,1985
148
+ sky/dashboard/out/clusters/[cluster]/[job].html,sha256=BNlS344sJftNAedNWbdN6dqbfpOXd7t11GJOHuFvYHY,1653
149
+ sky/dashboard/out/jobs/[job].html,sha256=LuxTFbSOBezEXQd0mOkj3xDUj9el-DT_maXLYPqWQWg,1621
147
150
  sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
151
+ sky/dashboard/out/workspace/new.html,sha256=zz_qDVhIshS-yvvOIt6ZLCXjNKdMIU7povPB-Dx5zzA,11671
152
+ sky/dashboard/out/workspaces/[name].html,sha256=_ZLaSxjeU7YM4oLFdvY1QU2avvrpldT1Ps0_KRT73pc,2161
148
153
  sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
149
154
  sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
150
155
  sky/data/data_utils.py,sha256=CNYPM963qby5ddW0DZNbhiWXkqgB9MHh_jrC5DoBctM,33437
@@ -278,7 +283,7 @@ sky/server/__init__.py,sha256=MPPBqFzXz6Jv5QSk6td_IcvnfXfNErDZVcizu4MLRow,27
278
283
  sky/server/common.py,sha256=JGkAkj1oexseiDRB0F5IvlhFZpmavHrX0Ovdf0rqjtU,30759
279
284
  sky/server/config.py,sha256=XWf5Kw4am6vMO5wcyWevbQAFH-dmKb7AMEgDzD083-M,8538
280
285
  sky/server/constants.py,sha256=rJAuxkxj6UqSey9hQaBZ__MyZ-rRew9XrpUBNzRdxHI,1193
281
- sky/server/server.py,sha256=u6M2RQtWTPvaLuAJBWr49u9fIgoY3nxAKDW2IEG1QZI,54158
286
+ sky/server/server.py,sha256=LEcYqN_dZJuEn9GwCd12WcBQGdQRv2KKTjffx4zFZ9g,53902
282
287
  sky/server/stream_utils.py,sha256=4JMHgtoXPpCT8JwtqyUcDQ9IdZFir9om0JaCRr8rvbQ,5849
283
288
  sky/server/uvicorn.py,sha256=4bTlvqQiykYDEIfV6Ta9KXWKZUtSfIrhDeT1F9yQuvs,3323
284
289
  sky/server/html/log.html,sha256=TSGZktua9Ysl_ysg3w60rjxAxhH61AJnsYDHdtqrjmI,6929
@@ -286,7 +291,7 @@ sky/server/html/token_page.html,sha256=QuTT0vGswh64uIenfAOIcC8JJrJrfidPTZDd3ryYN
286
291
  sky/server/requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
287
292
  sky/server/requests/event_loop.py,sha256=OhpPbuce65bbjpGRlcJa78AVnYSm08SzFKt70ypCUuQ,1211
288
293
  sky/server/requests/executor.py,sha256=7WiPNmB8DiJcPZhFtRebUkv1eOKAUSoQFpv_qa8kuGs,23596
289
- sky/server/requests/payloads.py,sha256=yHQbdCtx39S0c-o4WzvorL8ZTsE8F59OFU31PLwOs6I,17669
294
+ sky/server/requests/payloads.py,sha256=enOMWL44YO97c3R7_iDONfugZiM4523bYGe4KrS7B5s,18187
290
295
  sky/server/requests/preconditions.py,sha256=ipxIb_3JXG6S3-ymcOdqQNb7VDvoPqADxu9ZK7-nQWc,7179
291
296
  sky/server/requests/process.py,sha256=uv6JmqdT1vR6S5j3a0CEmxz3fUoKQoZCryQsjZpZE7E,8734
292
297
  sky/server/requests/requests.py,sha256=7WABtaxHOppJT6OgYQl4nkjDu5yPXtk1_VpfqPdeg5k,21923
@@ -297,7 +302,7 @@ sky/server/requests/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
297
302
  sky/server/requests/serializers/decoders.py,sha256=F7eqENzt7hH92BPYUGnSJ_-XGobA0whPezTh5EDLCQs,6729
298
303
  sky/server/requests/serializers/encoders.py,sha256=4bQV5yTg8RTPT_HkRyQpjaBY_uUvBJ4NH189W0-6Pi0,5578
299
304
  sky/setup_files/MANIFEST.in,sha256=xhxaTVBu63MiTRV52AIlHp6qrg0i301PDIvH0lRw4E0,619
300
- sky/setup_files/dependencies.py,sha256=JRzw9Sa9zpXuNVb2kQtEmTSnd2OYcw2bpLWy071t9X8,6423
305
+ sky/setup_files/dependencies.py,sha256=ly4srNSgqjB9VLxZeu8h6fy_hx99nq7Vd2y0ke7rZhw,6441
301
306
  sky/setup_files/setup.py,sha256=GTXvAi65S4_TSLhQ1GzkmaWf_yzciHiaxMbZumcTtKU,7522
302
307
  sky/skylet/LICENSE,sha256=BnFrJSvUFpMUoH5mOpWnEvaC5R6Uux8W6WXgrte8iYg,12381
303
308
  sky/skylet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -372,7 +377,7 @@ sky/utils/context_utils.py,sha256=cby-QPmnGObjIE4K7eZ_dkWZdUo7YJUmnJr5oKf_v54,67
372
377
  sky/utils/control_master_utils.py,sha256=iD4M0onjYOdZ2RuxjwMBl4KhafHXJzuHjvqlBUnu-VE,1450
373
378
  sky/utils/controller_utils.py,sha256=65cA--9V32HTcNS-gaXZRcLswafS7DlMZ9qSbdTLkF8,53396
374
379
  sky/utils/dag_utils.py,sha256=FjxMaAT6ia4ndVg-ogXgiekLGD1GiPCAdK_c-cjIeuY,7607
375
- sky/utils/db_utils.py,sha256=K2-OHPg0FeHCarevMdWe0IWzm6wWumViEeYeJuGoFUE,3747
380
+ sky/utils/db_utils.py,sha256=WKQvqU-Hw-Htzw4Gxm9IoT-9JMiMtV9pC3uPPXw8ztQ,5580
376
381
  sky/utils/env_options.py,sha256=aaD6GoYK0LaZIqjOEZ-R7eccQuiRriW3EuLWtOI5En8,1578
377
382
  sky/utils/infra_utils.py,sha256=CFDCxFJ0kGc5YkGcuwbPSK_AKxGFRUXMTjbeLUrRf8I,6961
378
383
  sky/utils/kubernetes_enums.py,sha256=imGqHSa8O07zD_6xH1SDMM7dBU5lF5fzFFlQuQy00QM,1384
@@ -394,22 +399,26 @@ sky/utils/cli_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
394
399
  sky/utils/cli_utils/status_utils.py,sha256=ud-LCNi7GyJlavw7axG6fplcPDwhRWEM2xdQbxL-yp4,15667
395
400
  sky/utils/kubernetes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
396
401
  sky/utils/kubernetes/cleanup-tunnel.sh,sha256=rXMXuMfyB9bzKjLvXdMCjimDVvdjGPMXuqeo2ZNx9OA,2244
402
+ sky/utils/kubernetes/config_map_utils.py,sha256=ucdQGp1XHliZxoCFWU8EMJ2NKfUEs7t-ygw-J61It_w,4760
397
403
  sky/utils/kubernetes/create_cluster.sh,sha256=VpFLLLzodeldN9-JKqcjs2LkKksMGlg14Q7qGZ49LQE,7816
398
404
  sky/utils/kubernetes/delete_cluster.sh,sha256=BSccHF43GyepDNf-FZcenzHzpXXATkVD92vgn1lWPgk,927
399
- sky/utils/kubernetes/deploy_remote_cluster.py,sha256=L2nHvbPk5NlTySFQJcfqHqsXBm6WMmgrYKDgfPRmNM4,60136
405
+ sky/utils/kubernetes/deploy_remote_cluster.py,sha256=lxIiF3SHOp8ulcSbov27nna0i48FvVHzyqk0Wi0Q3D0,60844
400
406
  sky/utils/kubernetes/exec_kubeconfig_converter.py,sha256=fE1SnteoxI05EaugnWeV82hXwZTVHmbXsh1aaZAgF3c,2548
401
407
  sky/utils/kubernetes/generate_kind_config.py,sha256=_TNLnifA_r7-CRq083IP1xjelYqiLjzQX9ohuqYpDH8,3187
402
408
  sky/utils/kubernetes/generate_kubeconfig.sh,sha256=MBvXJio0PeujZSCXiRKE_pa6HCTiU9qBzR1WrXccVSY,10477
403
409
  sky/utils/kubernetes/gpu_labeler.py,sha256=YAwkytFo2j5GyGyX8RqnUXCMBff00Mdm9G_0mmtNZLo,10345
404
410
  sky/utils/kubernetes/k8s_gpu_labeler_job.yaml,sha256=k0TBoQ4zgf79-sVkixKSGYFHQ7ZWF5gdVIZPupCCo9A,1224
405
411
  sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml,sha256=VLKT2KKimZu1GDg_4AIlIt488oMQvhRZWwsj9vBbPUg,3812
406
- sky/utils/kubernetes/kubernetes_deploy_utils.py,sha256=8NPHenrSbeKDGM7rhY_vvffvV3G7hVcUzWznprUDjX0,14553
412
+ sky/utils/kubernetes/kubernetes_deploy_utils.py,sha256=lF9hMg0TVVX1jE8W1xmzkaz66YOwFJvGNws3ICC2syA,15932
407
413
  sky/utils/kubernetes/rsync_helper.sh,sha256=MT29sI5iD2QxYlXFwrN16oq0Er4TPFQVs4Z4A3U4a7Q,2483
408
- sky/utils/kubernetes/ssh-tunnel.sh,sha256=JDoEK4axrtCkVNUz7RPZCIU7Pr9dXN4az8y0s6EFyvA,12710
414
+ sky/utils/kubernetes/ssh-tunnel.sh,sha256=60eHKF7phJe9pFEkGlqdwWzI80tpog8QCkL7fAbIAic,12143
409
415
  sky/utils/kubernetes/ssh_jump_lifecycle_manager.py,sha256=Kq1MDygF2IxFmu9FXpCxqucXLmeUrvs6OtRij6XTQbo,6554
410
- skypilot_nightly-1.0.0.dev20250524.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
411
- skypilot_nightly-1.0.0.dev20250524.dist-info/METADATA,sha256=CrVhoGDSXoW4LF6kir1D4U79IarmEgAdXaesHz1ava0,18207
412
- skypilot_nightly-1.0.0.dev20250524.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
413
- skypilot_nightly-1.0.0.dev20250524.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
414
- skypilot_nightly-1.0.0.dev20250524.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
415
- skypilot_nightly-1.0.0.dev20250524.dist-info/RECORD,,
416
+ sky/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
417
+ sky/workspaces/core.py,sha256=kWB2YXDzo8Xz7VBmDGe4_dx6IZJ9C_ZuTw86pq54ynE,11424
418
+ sky/workspaces/server.py,sha256=lx4cy4X-zOFZEjgvcw0G0KY7105Ll4aYT2DV0_IXITk,2033
419
+ skypilot_nightly-1.0.0.dev20250526.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
420
+ skypilot_nightly-1.0.0.dev20250526.dist-info/METADATA,sha256=ePp5lDDo2YzVj-iawR-SpoaW6Y2u9idMdFzdol218wQ,18233
421
+ skypilot_nightly-1.0.0.dev20250526.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
422
+ skypilot_nightly-1.0.0.dev20250526.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
423
+ skypilot_nightly-1.0.0.dev20250526.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
424
+ skypilot_nightly-1.0.0.dev20250526.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST=function(s,c,e,t,a,r){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/chunks/pages/index-6b0d9e5031b70c58.js"],"/_error":["static/chunks/pages/_error-1be831200e60c5c0.js"],"/clusters":[s,e,c,t,r,"static/chunks/pages/clusters-9e6d1ec6e1ac5b29.js"],"/clusters/[cluster]":[s,e,c,t,a,r,"static/chunks/pages/clusters/[cluster]-9529d9e882a0e75c.js"],"/clusters/[cluster]/[job]":[s,c,"static/chunks/pages/clusters/[cluster]/[job]-37c042a356f8e608.js"],"/infra":[s,c,"static/chunks/pages/infra-e690d864aa00e2ea.js"],"/jobs":[s,e,c,t,a,"static/chunks/pages/jobs-73d5e0c369d00346.js"],"/jobs/[job]":[s,c,"static/chunks/pages/jobs/[job]-db6558a5ec687011.js"],"/users":[s,c,"static/chunks/pages/users-2d319455c3f1c3e2.js"],"/workspaces":["static/chunks/9f96d65d-5a3e4af68c26849e.js",s,e,"static/chunks/498-d7722313e5e5b4e6.js",c,t,a,"static/chunks/pages/workspaces-02a7b60f2ead275f.js"],sortedPages:["/","/_app","/_error","/clusters","/clusters/[cluster]","/clusters/[cluster]/[job]","/infra","/jobs","/jobs/[job]","/users","/workspaces"]}}("static/chunks/573-f17bd89d9f9118b3.js","static/chunks/480-ee58038f1a4afd5c.js","static/chunks/488-50d843fdb5396d32.js","static/chunks/734-5f5ce8f347b7f417.js","static/chunks/938-f347f6144075b0c8.js","static/chunks/578-7a4795009a56430c.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[480],{3850:function(e,t,n){n.d(t,{E9:function(){return w},J$:function(){return c},PC:function(){return f},Ps:function(){return a},QT:function(){return h},Vp:function(){return x},W2:function(){return i},Ye:function(){return d},aD:function(){return j},fp:function(){return u},fy:function(){return p},h0:function(){return m},lM:function(){return y},mU:function(){return g},oy:function(){return v}});var r=n(5893);n(7294);var s=n(8507),o=n(8586),l=n(9611);function a(e){return(0,r.jsx)("svg",{...e,xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"currentColor",stroke:"currentColor",strokeWidth:"0",strokeLinecap:"round",strokeLinejoin:"round",children:(0,r.jsx)("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"})})}function i(e){return(0,r.jsx)("svg",{...e,xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"currentColor",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,r.jsx)("circle",{cx:"10",cy:"10",r:"8"})})}function c(e){return(0,r.jsx)("svg",{...e,xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,r.jsx)("circle",{cx:"10",cy:"10",r:"8"})})}function d(e){return(0,r.jsx)("svg",{...e,xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,r.jsx)("path",{d:"M6 12l4 4 8-8"})})}function u(e){return(0,r.jsxs)("svg",{...e,xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"currentColor",stroke:"currentColor",strokeWidth:"0",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,r.jsx)("rect",{x:"6",y:"5",width:"4",height:"14",rx:"1"}),(0,r.jsx)("rect",{x:"14",y:"5",width:"4",height:"14",rx:"1"})]})}function h(e){return(0,r.jsxs)("svg",{...e,xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,r.jsx)("rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2"}),(0,r.jsx)("rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2"}),(0,r.jsx)("line",{x1:"6",x2:"6.01",y1:"6",y2:"6"}),(0,r.jsx)("line",{x1:"6",x2:"6.01",y1:"18",y2:"18"})]})}function x(e){return(0,r.jsxs)("svg",{...e,xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,r.jsx)("path",{d:"M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"}),(0,r.jsx)("rect",{width:"20",height:"14",x:"2",y:"6",rx:"2"})]})}function f(e){return(0,r.jsxs)("svg",{...e,xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,r.jsx)("rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",ry:"2"}),(0,r.jsx)("rect",{x:"9",y:"9",width:"6",height:"6"}),(0,r.jsx)("line",{x1:"9",y1:"1",x2:"9",y2:"4"}),(0,r.jsx)("line",{x1:"15",y1:"1",x2:"15",y2:"4"}),(0,r.jsx)("line",{x1:"9",y1:"20",x2:"9",y2:"23"}),(0,r.jsx)("line",{x1:"15",y1:"20",x2:"15",y2:"23"}),(0,r.jsx)("line",{x1:"20",y1:"9",x2:"23",y2:"9"}),(0,r.jsx)("line",{x1:"20",y1:"14",x2:"23",y2:"14"}),(0,r.jsx)("line",{x1:"1",y1:"9",x2:"4",y2:"9"}),(0,r.jsx)("line",{x1:"1",y1:"14",x2:"4",y2:"14"})]})}function m(e){return(0,r.jsxs)("svg",{...e,xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,r.jsx)("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),(0,r.jsx)("polyline",{points:"15 3 21 3 21 9"}),(0,r.jsx)("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]})}function p(e){return(0,r.jsx)("svg",{...e,xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"currentColor",children:(0,r.jsx)("path",{d:"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"})})}function g(e){return(0,r.jsx)("svg",{...e,xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"currentColor",children:(0,r.jsx)("path",{transform:"scale(0.85) translate(1.8, 1.8)",d:"M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"})})}function w(e){return(0,r.jsx)("svg",{...e,stroke:"currentColor",fill:"currentColor",strokeWidth:"0",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,r.jsxs)("g",{children:[(0,r.jsx)("path",{fill:"none",d:"M0 0h24v24H0z"}),(0,r.jsx)("path",{d:"M3 18.5V5a3 3 0 0 1 3-3h14a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5A3.5 3.5 0 0 1 3 18.5zM19 20v-3H6.5a1.5 1.5 0 0 0 0 3H19zM10 4H6a1 1 0 0 0-1 1v10.337A3.486 3.486 0 0 1 6.5 15H19V4h-2v8l-3.5-2-3.5 2V4z"})]})})}let j=s.Z,v=o.Z;function y(e){return(0,r.jsx)(l.Z,{...e})}},9470:function(e,t,n){n.d(t,{A:function(){return w}});var r=n(5893),s=n(7294),o=n(5675),l=n.n(o),a=n(1163),i=n(1664),c=n.n(i),d=n(3850),u=n(3225),h=n(6989),x=n(3001);let f=(0,s.createContext)(null);function m(e){let{children:t}=e,[n,o]=(0,s.useState)(!0);return(0,r.jsx)(f.Provider,{value:{isSidebarOpen:n,toggleSidebar:()=>{o(e=>!e)}},children:t})}function p(){let e,t;let n=(0,a.useRouter)(),o=(0,x.X)(),[i,f]=(0,s.useState)(null),[m,p]=(0,s.useState)(!1),g=(0,s.useRef)(null);(0,s.useEffect)(()=>{fetch("".concat(u.f4,"/api/health")).then(e=>e.json()).then(e=>{e.user&&e.user.name&&f(e.user.name)}).catch(e=>{console.error("Error fetching user data:",e)})},[]),(0,s.useEffect)(()=>{function e(e){g.current&&!g.current.contains(e.target)&&p(!1)}return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[g]);let w=e=>n.pathname.startsWith(e),j=e=>{let t=w(e);return"inline-flex items-center border-b-2 ".concat(t?"border-transparent text-blue-600":"border-transparent hover:text-blue-600"," ").concat(o?"px-2 py-1":"px-1 pt-1 space-x-2")};return(0,r.jsx)("div",{className:"fixed top-0 left-0 right-0 bg-white z-30 h-14 px-4 border-b border-gray-200 shadow-sm",children:(0,r.jsxs)("div",{className:"flex items-center h-full",children:[(0,r.jsx)("div",{className:"flex items-center ".concat(o?"space-x-2 mr-2":"space-x-4 mr-6"),children:(0,r.jsx)(c(),{href:"/",className:"flex items-center px-1 pt-1 h-full",prefetch:!1,children:(0,r.jsx)("div",{className:"h-20 w-20 flex items-center justify-center",children:(0,r.jsx)(l(),{src:"".concat(u.GW,"/skypilot.svg"),alt:"SkyPilot Logo",width:80,height:80,priority:!0,className:"w-full h-full object-contain"})})})}),(0,r.jsxs)("div",{className:"flex items-center ".concat(o?"space-x-1":"space-x-2 md:space-x-4"," ").concat(o?"mr-2":"mr-6"),children:[(0,r.jsxs)(c(),{href:"/clusters",className:j("/clusters"),prefetch:!1,children:[(0,r.jsx)(d.QT,{className:"w-4 h-4"}),!o&&(0,r.jsx)("span",{children:"Clusters"})]}),(0,r.jsxs)(c(),{href:"/jobs",className:j("/jobs"),prefetch:!1,children:[(0,r.jsx)(d.Vp,{className:"w-4 h-4"}),!o&&(0,r.jsx)("span",{children:"Jobs"})]}),(0,r.jsx)("div",{className:"border-l border-gray-200 h-6 mx-1"}),(0,r.jsxs)(c(),{href:"/infra",className:j("/infra"),prefetch:!1,children:[(0,r.jsx)(d.PC,{className:"w-4 h-4"}),!o&&(0,r.jsx)("span",{children:"Infra"})]}),(0,r.jsxs)(c(),{href:"/workspaces",className:j("/workspaces"),prefetch:!1,children:[(0,r.jsx)(d.E9,{className:"w-4 h-4"}),!o&&(0,r.jsx)("span",{children:"Workspaces"})]}),(0,r.jsxs)(c(),{href:"/users",className:j("/users"),prefetch:!1,children:[(0,r.jsx)(d.oy,{className:"w-4 h-4"}),!o&&(0,r.jsx)("span",{children:"Users"})]})]}),(0,r.jsxs)("div",{className:"flex items-center space-x-1 ".concat(o?"ml-0":"ml-auto"),children:[(0,r.jsx)(h.WH,{content:"Documentation",className:"text-sm text-muted-foreground",children:(0,r.jsxs)("a",{href:"https://skypilot.readthedocs.io/en/latest/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center px-2 py-1 text-gray-600 hover:text-blue-600 transition-colors duration-150 cursor-pointer",title:"Docs",children:[!o&&(0,r.jsx)("span",{className:"mr-1",children:"Docs"}),(0,r.jsx)(d.h0,{className:"".concat(o?"w-4 h-4":"w-3.5 h-3.5")})]})}),(0,r.jsx)("div",{className:"border-l border-gray-200 h-6 mx-1"}),(0,r.jsx)(h.WH,{content:"GitHub Repository",className:"text-sm text-muted-foreground",children:(0,r.jsx)("a",{href:"https://github.com/skypilot-org/skypilot",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer",title:"GitHub",children:(0,r.jsx)(d.fy,{className:"".concat(o?"w-4 h-4":"w-5 h-5")})})}),(0,r.jsx)(h.WH,{content:"Join Slack",className:"text-sm text-muted-foreground",children:(0,r.jsx)("a",{href:"https://slack.skypilot.co/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer",title:"Slack",children:(0,r.jsx)(d.mU,{className:"".concat(o?"w-4 h-4":"w-5 h-5")})})}),(0,r.jsx)(h.WH,{content:"Leave Feedback",className:"text-sm text-muted-foreground",children:(0,r.jsx)("a",{href:"https://github.com/skypilot-org/skypilot/issues/new",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer",title:"Leave Feedback",children:(0,r.jsx)(d.aD,{className:"".concat(o?"w-4 h-4":"w-5 h-5")})})})]}),i&&(0,r.jsxs)("div",{className:"relative ml-2",ref:g,children:[(0,r.jsx)("button",{onClick:()=>p(!m),className:"inline-flex items-center justify-center p-2 rounded-full text-gray-600 hover:bg-gray-100 transition-colors duration-150 cursor-pointer",title:"User Profile",children:(0,r.jsx)(d.lM,{className:"".concat(o?"w-5 h-5":"w-6 h-6")})}),m&&(0,r.jsxs)("div",{className:"absolute right-0 mt-2 w-48 bg-white rounded-md shadow-lg z-50 border border-gray-200",children:[(e=i,t=null,i&&i.includes("@")&&(e=i.split("@")[0],t=i),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"px-4 pt-2 pb-1 text-sm font-medium text-gray-900",children:e}),t&&(0,r.jsx)("div",{className:"px-4 pt-0 pb-2 text-xs text-gray-500",children:t})]})),(0,r.jsx)("div",{className:"border-t border-gray-200 mx-1 my-1"}),(0,r.jsx)(c(),{href:"/users",className:"block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-blue-600",onClick:()=>p(!1),prefetch:!1,children:"See all users"})]})]})]})})}function g(e){let{children:t,highlighted:n}=e;return(0,x.X)(),(0,r.jsxs)("div",{className:"min-h-screen bg-gray-50",children:[(0,r.jsx)("div",{className:"fixed top-0 left-0 right-0 z-50 shadow-sm",children:(0,r.jsx)(p,{})}),(0,r.jsx)("div",{className:"transition-all duration-200 ease-in-out min-h-screen",style:{paddingTop:"56px"},children:(0,r.jsx)("main",{className:"p-6",children:t})})]})}function w(e){return(0,r.jsx)(m,{children:(0,r.jsx)(g,{...e})})}},8950:function(e,t,n){n.d(t,{Bw:function(){return m},Ph:function(){return d},Ql:function(){return p},i4:function(){return h},ki:function(){return u}});var r=n(5893),s=n(7294),o=n(2067),l=n(5895),a=n(7242),i=n(282),c=n(2350);let d=o.fC;o.ZA;let u=o.B4,h=s.forwardRef((e,t)=>{let{className:n,children:s,...a}=e;return(0,r.jsxs)(o.xz,{ref:t,className:(0,c.cn)("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",n),...a,children:[s,(0,r.jsx)(o.JO,{asChild:!0,children:(0,r.jsx)(l.Z,{className:"h-4 w-4 opacity-50"})})]})});h.displayName=o.xz.displayName;let x=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(o.u_,{ref:t,className:(0,c.cn)("flex cursor-default items-center justify-center py-1",n),...s,children:(0,r.jsx)(a.Z,{className:"h-4 w-4"})})});x.displayName=o.u_.displayName;let f=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(o.$G,{ref:t,className:(0,c.cn)("flex cursor-default items-center justify-center py-1",n),...s,children:(0,r.jsx)(l.Z,{className:"h-4 w-4"})})});f.displayName=o.$G.displayName;let m=s.forwardRef((e,t)=>{let{className:n,children:s,position:l="popper",...a}=e;return(0,r.jsx)(o.h_,{children:(0,r.jsxs)(o.VY,{ref:t,className:(0,c.cn)("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2","popper"===l&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",n),position:l,...a,children:[(0,r.jsx)(x,{}),(0,r.jsx)(o.l_,{className:(0,c.cn)("p-1","popper"===l&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:s}),(0,r.jsx)(f,{})]})})});m.displayName=o.VY.displayName,s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(o.__,{ref:t,className:(0,c.cn)("py-1.5 pl-8 pr-2 text-sm font-semibold",n),...s})}).displayName=o.__.displayName;let p=s.forwardRef((e,t)=>{let{className:n,children:s,...l}=e;return(0,r.jsxs)(o.ck,{ref:t,className:(0,c.cn)("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...l,children:[(0,r.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,r.jsx)(o.wU,{children:(0,r.jsx)(i.Z,{className:"h-4 w-4"})})}),(0,r.jsx)(o.eT,{children:s})]})});p.displayName=o.ck.displayName,s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(o.Z0,{ref:t,className:(0,c.cn)("-mx-1 my-1 h-px bg-muted",n),...s})}).displayName=o.Z0.displayName},6989:function(e,t,n){n.d(t,{$B:function(){return g},GV:function(){return d},LU:function(){return m},Md:function(){return f},WH:function(){return x},q8:function(){return p},yc:function(){return i}});var r=n(5893),s=n(7294),o=n(3302),l=n(1886),a=n(8950);let i=3e4;function c(e){return e.charAt(0).toUpperCase()+e.slice(1)}function d(e){if(!e)return"N/A";let t=new Date;return 7>Math.abs((t-e)/864e5)?(0,r.jsx)(x,{content:u(e),className:"capitalize text-sm text-muted-foreground",children:c((0,l.B)(e,t,{addSuffix:!0}))}):(0,r.jsx)(x,{content:c(u(e)),className:"text-sm text-muted-foreground",children:c(e.toLocaleString("en-CA",{year:"numeric",month:"2-digit",day:"2-digit"}).replace(",",""))})}function u(e){return e.toLocaleString("en-CA",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,timeZoneName:"short"}).replace(",","")}let h={placement:"bottom",color:"default"},x=e=>{let{children:t,...n}=e,s=n.content;return n.content=void 0,(0,r.jsx)(o.e,{...h,...n,content:(0,r.jsx)("span",{className:"left-full w-max px-2 py-1 text-sm text-gray-100 bg-gray-500 text-sm capitalize rounded",children:s}),children:t})},f=e=>{let{children:t,...n}=e,s=n.content;return n.content=void 0,(0,r.jsx)(o.e,{...h,...n,content:(0,r.jsx)("span",{className:"left-full w-max px-2 py-1 text-sm text-gray-100 bg-gray-500 text-sm rounded",children:s}),children:t})};function m(e){if(!e&&0!==e)return"-";let t=e=Math.floor(e),n="",r=0;for(let e of[{value:86400,label:"d"},{value:3600,label:"h"},{value:60,label:"m"},{value:1,label:"s"}])if(t>=e.value&&r<2){let s=Math.floor(t/e.value);n+="".concat(s).concat(e.label," "),t%=e.value,r++}return n.trim()||"0s"}function p(e){return e?(e=e.split("\n").filter(e=>!e.match(/<rich_.*?\[bold cyan\]/)&&!e.match(/<rich_.*>.*<\/rich_.*>/)&&!e.match(/├──/)&&!e.match(/└──/)).join("\n").replace(/\x1b\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGKH]/g,"")).split("\n").map(e=>{let t=e.match(/^([IWED])\s+(\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2})\s+([^:]+:\d+\])(.*)/);if(t){let[e,n,r,s,o]=t,l={I:"INFO",W:"WARNING",E:"ERROR",D:"DEBUG"}[n]||"";return'<span class="log-line '.concat(l,'"><span class="level">').concat(n,'</span><span class="timestamp">').concat(r,'</span><span class="location">').concat(s,'</span><span class="message">').concat(o,"</span></span>")}let n=e.match(/^(\([^)]+\))(.*)$/);if(n){let[e,t,r]=n;return'<span class="log-line"><span class="log-prefix">'.concat(t,'</span><span class="log-rest">').concat(r,"</span></span>")}return'<span class="log-line"><span class="message">'.concat(e,"</span></span>")}).join("\n"):""}function g(e){let{logs:t,controller:n=!1}=e,[o,l]=(0,s.useState)("all"),[i,c]=(0,s.useState)(t),[d,u]=(0,s.useState)([]);return(0,s.useEffect)(()=>{u(function(e){let t;let n=/\((head|worker\d+),/g,r=new Set;for(;null!==(t=n.exec(e));)r.add(t[1]);return Array.from(r).sort((e,t)=>"head"===e?-1:"head"===t?1:e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"}))}(t))},[t]),(0,s.useEffect)(()=>{"all"===o?c(t):c(t.split("\n").filter(e=>e.includes("(".concat(o,","))).join("\n"))},[o,t]),(0,r.jsxs)("div",{children:[(0,r.jsx)("style",{children:'\n .logs-container {\n background-color: #f7f7f7;\n padding: 16px;\n max-height: calc(100vh - 300px);\n overflow-y: auto;\n overflow-x: hidden;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n line-height: 1.5;\n border-radius: 6px;\n min-height: fit-content;\n }\n\n .log-line {\n display: block;\n white-space: pre-wrap;\n margin: 2px 0;\n }\n\n .log-line .level {\n display: inline;\n width: 1ch;\n margin-right: 1ch;\n font-weight: bold;\n }\n\n .log-line.INFO .level {\n color: #2563eb;\n }\n\n .log-line.WARNING .level {\n color: #d97706;\n }\n\n .log-line.ERROR .level {\n color: #dc2626;\n }\n\n .log-line.DEBUG .level {\n color: #6b7280;\n }\n\n .log-line .timestamp {\n color: #059669;\n margin-right: 1ch;\n white-space: nowrap;\n }\n\n .log-line .location {\n color: #6366f1;\n margin-right: 1ch;\n white-space: nowrap;\n }\n\n .log-line .message {\n color: #111827;\n word-break: break-word;\n white-space: pre-wrap;\n }\n\n .log-line .log-prefix {\n color: #6366f1;\n font-weight: 500;\n }\n\n .log-line .log-rest {\n color: #111827;\n word-break: break-word;\n white-space: pre-wrap;\n }\n'}),!n&&(0,r.jsx)("div",{style:{marginBottom:"1rem"},children:(0,r.jsxs)(a.Ph,{onValueChange:e=>l(e),value:o,children:[(0,r.jsx)(a.i4,{"aria-label":"Node",className:"focus:ring-0 focus:ring-offset-0",children:(0,r.jsx)(a.ki,{placeholder:"Select Node"})}),(0,r.jsxs)(a.Bw,{children:[(0,r.jsx)(a.Ql,{value:"all",children:"All Nodes"}),d.map(e=>(0,r.jsx)(a.Ql,{value:e,children:e},e))]})]})}),(0,r.jsx)("div",{className:"logs-container",dangerouslySetInnerHTML:{__html:p(i)}})]})}},5821:function(e,t,n){n.d(t,{C:function(){return r}});function r(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e3,r=document.getElementById("toast-container");r||((r=document.createElement("div")).id="toast-container",r.className="fixed top-0 right-0 p-4 z-[9999] flex flex-col items-end space-y-2",document.body.appendChild(r));let s=document.createElement("div");switch(s.className="rounded-md border-l-4 p-4 shadow-md flex items-center justify-between max-w-md w-full mb-2 pointer-events-auto",t){case"success":s.className+=" bg-green-100 border-green-500 text-green-800";break;case"error":s.className+=" bg-red-100 border-red-500 text-red-800";break;case"warning":s.className+=" bg-yellow-100 border-yellow-500 text-yellow-800";break;default:s.className+=" bg-blue-100 border-blue-500 text-blue-800"}return s.innerHTML='\n <div class="flex-1 mr-2">\n <p class="text-sm font-medium">'.concat(e,'</p>\n </div>\n <button class="text-gray-500 hover:text-gray-700 focus:outline-none" aria-label="Close toast">\n <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n <line x1="18" y1="6" x2="6" y2="18"></line>\n <line x1="6" y1="6" x2="18" y2="18"></line>\n </svg>\n </button>\n '),r.appendChild(s),s.querySelector("button").addEventListener("click",()=>{r.removeChild(s)}),setTimeout(()=>{r.contains(s)&&r.removeChild(s)},n),s}},3001:function(e,t,n){n.d(t,{X:function(){return s}});var r=n(7294);function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:768,[t,n]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{let t=()=>{n(window.innerWidth<e)};return t(),window.addEventListener("resize",t),()=>{window.removeEventListener("resize",t)}},[e]),t}},2350:function(e,t,n){n.d(t,{cn:function(){return o}});var r=n(512),s=n(8388);function o(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,s.m6)((0,r.W)(t))}}}]);