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.
- sky/__init__.py +2 -2
- sky/check.py +4 -1
- sky/cli.py +13 -3
- sky/client/cli.py +13 -3
- sky/dashboard/out/404.html +1 -1
- sky/dashboard/out/_next/static/7GEgRyZKRaSnYZCV1Jwol/_buildManifest.js +1 -0
- sky/dashboard/out/_next/static/chunks/25-062253ea41fb8eec.js +6 -0
- sky/dashboard/out/_next/static/chunks/480-5a0de8b6570ea105.js +1 -0
- sky/dashboard/out/_next/static/chunks/578-d351125af46c293f.js +6 -0
- sky/dashboard/out/_next/static/chunks/734-a6e01d7f98904741.js +1 -0
- sky/dashboard/out/_next/static/chunks/938-59956af3950b02ed.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/_app-96a715a6fb01e228.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/{infra-e690d864aa00e2ea.js → infra-abb7d744ecf15109.js} +1 -1
- sky/dashboard/out/_next/static/chunks/pages/workspace/new-bbf436f41381e169.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-7733c960685b4385.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/workspaces-5ed48b3201b998c8.js +1 -0
- sky/dashboard/out/_next/static/css/28558d57108b05ae.css +3 -0
- sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- sky/dashboard/out/clusters/[cluster].html +1 -1
- sky/dashboard/out/clusters.html +1 -1
- sky/dashboard/out/index.html +1 -1
- sky/dashboard/out/infra.html +1 -1
- sky/dashboard/out/jobs/[job].html +1 -1
- sky/dashboard/out/jobs.html +1 -1
- sky/dashboard/out/users.html +1 -1
- sky/dashboard/out/workspace/new.html +1 -0
- sky/dashboard/out/workspaces/[name].html +1 -0
- sky/dashboard/out/workspaces.html +1 -1
- sky/global_user_state.py +592 -552
- sky/server/requests/payloads.py +17 -0
- sky/server/server.py +4 -13
- sky/setup_files/dependencies.py +1 -0
- sky/skypilot_config.py +31 -9
- sky/utils/db_utils.py +53 -0
- sky/utils/kubernetes/config_map_utils.py +133 -0
- sky/utils/kubernetes/deploy_remote_cluster.py +20 -4
- sky/utils/kubernetes/kubernetes_deploy_utils.py +49 -5
- sky/utils/kubernetes/ssh-tunnel.sh +20 -28
- sky/workspaces/__init__.py +0 -0
- sky/workspaces/core.py +295 -0
- sky/workspaces/server.py +62 -0
- {skypilot_nightly-1.0.0.dev20250524.dist-info → skypilot_nightly-1.0.0.dev20250526.dist-info}/METADATA +2 -1
- {skypilot_nightly-1.0.0.dev20250524.dist-info → skypilot_nightly-1.0.0.dev20250526.dist-info}/RECORD +51 -42
- sky/dashboard/out/_next/static/aHej19bZyl4hoHgrzPCn7/_buildManifest.js +0 -1
- sky/dashboard/out/_next/static/chunks/480-ee58038f1a4afd5c.js +0 -1
- sky/dashboard/out/_next/static/chunks/578-7a4795009a56430c.js +0 -6
- sky/dashboard/out/_next/static/chunks/734-5f5ce8f347b7f417.js +0 -1
- sky/dashboard/out/_next/static/chunks/938-f347f6144075b0c8.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/_app-dec800f9ef1b10f4.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/workspaces-02a7b60f2ead275f.js +0 -1
- sky/dashboard/out/_next/static/css/d2cdba64c9202dd7.css +0 -3
- /sky/dashboard/out/_next/static/{aHej19bZyl4hoHgrzPCn7 → 7GEgRyZKRaSnYZCV1Jwol}/_ssgManifest.js +0 -0
- /sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/{[job]-37c042a356f8e608.js → [job]-3b5aad09a25f64b7.js} +0 -0
- /sky/dashboard/out/_next/static/chunks/pages/jobs/{[job]-db6558a5ec687011.js → [job]-48dc8d67d4b60be1.js} +0 -0
- /sky/dashboard/out/_next/static/chunks/pages/{users-2d319455c3f1c3e2.js → users-b8acf6e6735323a2.js} +0 -0
- {skypilot_nightly-1.0.0.dev20250524.dist-info → skypilot_nightly-1.0.0.dev20250526.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20250524.dist-info → skypilot_nightly-1.0.0.dev20250526.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250524.dist-info → skypilot_nightly-1.0.0.dev20250526.dist-info}/licenses/LICENSE +0 -0
- {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)
|
sky/workspaces/server.py
ADDED
@@ -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.
|
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"
|
{skypilot_nightly-1.0.0.dev20250524.dist-info → skypilot_nightly-1.0.0.dev20250526.dist-info}/RECORD
RENAMED
@@ -1,19 +1,19 @@
|
|
1
|
-
sky/__init__.py,sha256=
|
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=
|
5
|
-
sky/cli.py,sha256=
|
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=
|
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=
|
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=
|
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
|
107
|
-
sky/dashboard/out/clusters.html,sha256=
|
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=
|
110
|
-
sky/dashboard/out/infra.html,sha256=
|
111
|
-
sky/dashboard/out/jobs.html,sha256=
|
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=
|
114
|
-
sky/dashboard/out/workspaces.html,sha256=
|
115
|
-
sky/dashboard/out/_next/static/
|
116
|
-
sky/dashboard/out/_next/static/
|
117
|
-
sky/dashboard/out/_next/static/chunks/
|
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-
|
122
|
-
sky/dashboard/out/_next/static/chunks/734-
|
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-
|
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-
|
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-
|
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-
|
139
|
-
sky/dashboard/out/_next/static/chunks/pages/workspaces-
|
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]-
|
142
|
-
sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-
|
143
|
-
sky/dashboard/out/_next/static/
|
144
|
-
sky/dashboard/out/
|
145
|
-
sky/dashboard/out/
|
146
|
-
sky/dashboard/out/
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
414
|
+
sky/utils/kubernetes/ssh-tunnel.sh,sha256=60eHKF7phJe9pFEkGlqdwWzI80tpog8QCkL7fAbIAic,12143
|
409
415
|
sky/utils/kubernetes/ssh_jump_lifecycle_manager.py,sha256=Kq1MDygF2IxFmu9FXpCxqucXLmeUrvs6OtRij6XTQbo,6554
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
skypilot_nightly-1.0.0.
|
414
|
-
skypilot_nightly-1.0.0.
|
415
|
-
skypilot_nightly-1.0.0.
|
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))}}}]);
|