skypilot-nightly 1.0.0.dev20250918__tar.gz → 1.0.0.dev20250919__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of skypilot-nightly might be problematic. Click here for more details.
- {skypilot_nightly-1.0.0.dev20250918/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250919}/PKG-INFO +34 -34
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/__init__.py +2 -2
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/core.py +67 -45
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/404.html +1 -1
- {skypilot_nightly-1.0.0.dev20250918/sky/dashboard/out/_next/static/k1mo5xWZrV9djgjd0moOT → skypilot_nightly-1.0.0.dev20250919/sky/dashboard/out/_next/static/VvaUqYDvHOcHZRnvMBmax}/_buildManifest.js +1 -1
- skypilot_nightly-1.0.0.dev20250919/sky/dashboard/out/_next/static/chunks/1121-4ff1ec0dbc5792ab.js +1 -0
- skypilot_nightly-1.0.0.dev20250919/sky/dashboard/out/_next/static/chunks/3015-88c7c8d69b0b6dba.js +1 -0
- skypilot_nightly-1.0.0.dev20250919/sky/dashboard/out/_next/static/chunks/8969-a39efbadcd9fde80.js +1 -0
- skypilot_nightly-1.0.0.dev20250919/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-1e9248ddbddcd122.js +16 -0
- skypilot_nightly-1.0.0.dev20250918/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-0b4b35dc1dfe046c.js → skypilot_nightly-1.0.0.dev20250919/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-9525660179df3605.js +1 -1
- skypilot_nightly-1.0.0.dev20250918/sky/dashboard/out/_next/static/chunks/webpack-487697b47d8c5e50.js → skypilot_nightly-1.0.0.dev20250919/sky/dashboard/out/_next/static/chunks/webpack-b2a3938c22b6647b.js +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/clusters/[cluster].html +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/clusters.html +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/config.html +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/index.html +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/infra/[context].html +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/infra.html +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/jobs/[job].html +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/jobs/pools/[pool].html +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/jobs.html +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/users.html +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/volumes.html +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/workspace/new.html +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/workspaces/[name].html +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/workspaces.html +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/global_user_state.py +83 -54
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/metrics/utils.py +174 -8
- skypilot_nightly-1.0.0.dev20250919/sky/schemas/generated/jobsv1_pb2.py +86 -0
- skypilot_nightly-1.0.0.dev20250919/sky/server/metrics.py +158 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/requests/executor.py +9 -8
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/requests/payloads.py +6 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/requests/requests.py +1 -1
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/requests/serializers/encoders.py +3 -2
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/server.py +5 -41
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/constants.py +6 -3
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/job_lib.py +14 -15
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/locks.py +41 -10
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919/skypilot_nightly.egg-info}/PKG-INFO +34 -34
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/skypilot_nightly.egg-info/SOURCES.txt +8 -8
- skypilot_nightly-1.0.0.dev20250918/sky/dashboard/out/_next/static/chunks/1121-408ed10b2f9fce17.js +0 -1
- skypilot_nightly-1.0.0.dev20250918/sky/dashboard/out/_next/static/chunks/3015-ba5be550eb80fd8c.js +0 -1
- skypilot_nightly-1.0.0.dev20250918/sky/dashboard/out/_next/static/chunks/8969-a3e3f0683e19d340.js +0 -1
- skypilot_nightly-1.0.0.dev20250918/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-1cbba24bd1bd35f8.js +0 -16
- skypilot_nightly-1.0.0.dev20250918/sky/schemas/generated/jobsv1_pb2.py +0 -86
- skypilot_nightly-1.0.0.dev20250918/sky/server/metrics.py +0 -264
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/README.md +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/pyproject.toml +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/setup.cfg +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/cloudflare.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/docker.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/hyperbolic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/primeintellect.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/seeweb.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/adaptors/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/admin_policy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/authentication.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/backends/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/backends/backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/backends/backend_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/backends/cloud_vm_ray_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/backends/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/backends/local_docker_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/backends/wheel_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/aws_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/azure_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/cudo_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/data_fetchers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/data_fetchers/analyze.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/data_fetchers/fetch_aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/data_fetchers/fetch_azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/data_fetchers/fetch_cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/data_fetchers/fetch_fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/data_fetchers/fetch_gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/data_fetchers/fetch_hyperbolic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/data_fetchers/fetch_ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/data_fetchers/fetch_nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/data_fetchers/fetch_seeweb.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/data_fetchers/fetch_vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/data_fetchers/fetch_vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/do_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/fluidstack_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/gcp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/hyperbolic_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/ibm_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/kubernetes_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/lambda_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/nebius_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/oci_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/paperspace_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/primeintellect_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/runpod_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/scp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/seeweb_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/ssh_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/vast_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/catalog/vsphere_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/check.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/cli.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/client/cli/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/client/cli/command.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/client/cli/deprecation_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/client/cli/flags.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/client/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/client/oauth.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/client/sdk_async.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/client/service_account_auth.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/cloud_stores.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/hyperbolic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/paperspace.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/primeintellect.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/scp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/seeweb.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/ssh.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/utils/aws_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/utils/azure_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/utils/gcp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/utils/oci_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/utils/scp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/clouds/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918/sky/dashboard/out/_next/static/k1mo5xWZrV9djgjd0moOT → skypilot_nightly-1.0.0.dev20250919/sky/dashboard/out/_next/static/VvaUqYDvHOcHZRnvMBmax}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/1141-159df2d4c441a9d1.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/1836-37fede578e2da5f8.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/2350.fab69e61bac57b23.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/3294.03e02ae73455f48e.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/3785.0fa442e16dd3f00e.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/3850-ff4a9a69d978632b.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/3937.210053269f121201.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/4045.b30465273dc5e468.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/4676-9da7fdbde90b5549.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/4725.10f7a9a5d3ea8208.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/5339.4a881570243431a5.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/5739-d67458fcb1386c92.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/6130-2be46d70a38f1e82.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/6135-4b4d5e824b7f9d3c.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/616-3d59f75e2ccf9321.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/649.b9d7f7d10c1b8c53.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/6601-06114c982db410b6.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/6856-9a2538f38c004652.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/6989-01359c57e018caa4.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/6990-f6818c84ed8f1c86.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/7325.b4bc99ce0892dcd5.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/7411-b15471acd2cba716.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/754-d0da8ab45f9509e9.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/7669.1f5d9a402bf5cc42.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/9025.c12318fb6a1a9093.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/9037-472ee1222cb1e158.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/fd9d1056-86323a29a8f7e46a.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/framework-cf60a09ccd051a10.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/main-app-587214043926b3cc.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/main-f15ccb73239a3bf1.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/pages/_app-ce361c6959bc2001.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/pages/clusters-469814d711d63b1b.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/pages/config-dfb9bf07b13045f4.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/pages/index-444f1804401f04ea.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/pages/infra/[context]-6563820e094f68ca.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/pages/infra-aabba60d57826e0f.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-dd64309c3fe67ed2.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-07349868f7905d37.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/pages/jobs-1f70d9faa564804f.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/pages/users-018bf31cda52e11b.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/pages/volumes-739726d6b823f532.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-af76bb06dbb3954f.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/pages/workspaces-7528cc0ef8c522c5.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/_next/static/css/4614e06482d7309e.css +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/favicon.ico +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/skypilot.svg +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/videos/cursor-small.mp4 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/data/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/data/data_transfer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/data/data_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/data/mounting_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/data/storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/data/storage_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/exceptions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/execution.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/jobs/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/jobs/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/jobs/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/jobs/client/sdk_async.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/jobs/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/jobs/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/jobs/recovery_strategy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/jobs/scheduler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/jobs/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/jobs/server/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/jobs/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/jobs/server/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/jobs/state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/jobs/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/logs/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/logs/agent.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/logs/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/logs/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/metrics/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/models.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/optimizer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/aws/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/aws/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/aws/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/azure/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/azure/azure-config-template.json +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/azure/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/azure/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/cudo/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/cudo/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/cudo/cudo_machine_type.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/cudo/cudo_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/cudo/cudo_wrapper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/cudo/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/do/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/do/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/do/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/do/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/do/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/fluidstack/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/fluidstack/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/fluidstack/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/gcp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/gcp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/gcp/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/gcp/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/gcp/instance_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/gcp/mig_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/gcp/volume_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/hyperbolic/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/hyperbolic/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/hyperbolic/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/hyperbolic/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/instance_setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/kubernetes/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/kubernetes/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/kubernetes/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/kubernetes/network.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/kubernetes/network_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/kubernetes/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/kubernetes/volume.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/lambda_cloud/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/lambda_cloud/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/lambda_cloud/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/nebius/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/nebius/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/nebius/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/nebius/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/nebius/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/oci/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/oci/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/oci/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/oci/query_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/paperspace/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/paperspace/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/paperspace/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/paperspace/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/paperspace/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/primeintellect/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/primeintellect/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/primeintellect/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/primeintellect/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/provisioner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/runpod/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/runpod/api/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/runpod/api/commands.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/runpod/api/pods.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/runpod/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/runpod/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/runpod/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/runpod/volume.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/scp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/scp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/scp/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/seeweb/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/seeweb/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/seeweb/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/ssh/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vast/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vast/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vast/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vast/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vsphere/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vsphere/common/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vsphere/common/cls_api_client.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vsphere/common/custom_script.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vsphere/common/id_generator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vsphere/common/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vsphere/common/service_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vsphere/common/ssl_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vsphere/common/vapiconnect.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vsphere/common/vim_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vsphere/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vsphere/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/provision/vsphere/vsphere_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/py.typed +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/resources.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/api/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/api/responses.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/db/README +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/db/env.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/db/global_user_state/001_initial_schema.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/db/global_user_state/002_add_workspace_to_cluster_history.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/db/global_user_state/003_fix_initial_revision.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/db/global_user_state/004_is_managed.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/db/global_user_state/005_cluster_event.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/db/global_user_state/006_provision_log.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/db/global_user_state/007_cluster_event_request_id.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/db/global_user_state/008_skylet_ssh_tunnel_metadata.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/db/script.py.mako +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/db/serve_state/001_initial_schema.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/db/spot_jobs/001_initial_schema.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/db/spot_jobs/002_cluster_pool.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/db/spot_jobs/003_pool_hash.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/generated/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/generated/autostopv1_pb2.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/generated/autostopv1_pb2.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/generated/autostopv1_pb2_grpc.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/generated/jobsv1_pb2.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/generated/jobsv1_pb2_grpc.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/generated/servev1_pb2.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/generated/servev1_pb2.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/schemas/generated/servev1_pb2_grpc.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/autoscalers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/client/impl.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/client/sdk_async.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/load_balancer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/load_balancing_policies.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/replica_managers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/serve_rpc_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/serve_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/serve_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/server/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/server/impl.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/service.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/service_spec.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/serve/spot_placer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/auth/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/auth/authn.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/auth/oauth2_proxy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/daemons.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/html/log.html +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/html/token_page.html +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/requests/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/requests/event_loop.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/requests/preconditions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/requests/process.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/requests/queues/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/requests/queues/local_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/requests/queues/mp_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/requests/serializers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/requests/serializers/decoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/rest.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/stream_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/uvicorn.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/server/versions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/setup_files/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/setup_files/alembic.ini +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/setup_files/dependencies.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/setup_files/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/sky_logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/attempt_skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/autostop_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/configs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/events.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/log_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/log_lib.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/providers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/providers/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/providers/ibm/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/providers/ibm/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/providers/ibm/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/ray_patches/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/ray_patches/autoscaler.py.diff +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/ray_patches/cli.py.diff +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/ray_patches/cli.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/ray_patches/command_runner.py.diff +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/ray_patches/log_monitor.py.diff +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/ray_patches/resource_demand_scheduler.py.diff +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/ray_patches/updater.py.diff +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/ray_patches/updater.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/ray_patches/worker.py.diff +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/ray_patches/worker.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/services.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skylet/subprocess_daemon.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/skypilot_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/ssh_node_pools/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/ssh_node_pools/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/ssh_node_pools/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/task.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/aws-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/azure-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/cudo-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/do-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/fluidstack-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/gcp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/hyperbolic-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/ibm-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/jobs-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/kubernetes-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/lambda-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/local-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/nebius-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/oci-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/paperspace-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/primeintellect-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/runpod-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/scp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/seeweb-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/vast-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/vsphere-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/templates/websocket_proxy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/usage/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/usage/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/usage/usage_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/users/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/users/model.conf +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/users/permission.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/users/rbac.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/users/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/users/token_service.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/accelerator_registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/admin_policy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/annotations.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/atomic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/aws/get_default_security_group.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/benchmark_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/cli_utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/cli_utils/status_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/cluster_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/command_runner.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/common_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/config_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/context.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/context_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/control_master_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/controller_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/dag_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/db/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/db/db_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/db/migration_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/directory_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/env_options.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/git.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/git_clone.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/infra_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/cleanup-tunnel.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/config_map_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/create_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/delete_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/deploy_remote_cluster.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/generate_kind_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/gpu_labeler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/rsync_helper.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/ssh-tunnel.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes/ssh_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/kubernetes_enums.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/lock_events.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/log_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/message_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/perf_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/resource_checker.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/resources_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/rich_console_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/rich_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/schemas.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/serialize_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/status_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/subprocess_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/tempstore.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/timeline.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/ux_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/validator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/volume.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/utils/yaml_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/volumes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/volumes/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/volumes/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/volumes/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/volumes/server/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/volumes/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/volumes/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/volumes/volume.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/workspaces/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/workspaces/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/workspaces/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/workspaces/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/skypilot_nightly.egg-info/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/skypilot_nightly.egg-info/requires.txt +33 -33
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/skypilot_nightly.egg-info/top_level.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_api.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_api_compatibility.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_cli.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_db_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_failover.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_jobs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_jobs_and_serve.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_jobs_state_async_vs_sync.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_list_accelerators.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_no_parellel.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_optimizer_dryruns.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_optimizer_random_dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_serve_autoscaler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_smoke.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_ssh_proxy_lag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_wheels.py +0 -0
- {skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/tests/test_yaml_parser.py +0 -0
|
@@ -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.dev20250919
|
|
4
4
|
Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
|
|
5
5
|
Author: SkyPilot Team
|
|
6
6
|
License: Apache 2.0
|
|
@@ -152,49 +152,49 @@ Requires-Dist: grpcio>=1.63.0; extra == "server"
|
|
|
152
152
|
Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "server"
|
|
153
153
|
Requires-Dist: aiosqlite; extra == "server"
|
|
154
154
|
Provides-Extra: all
|
|
155
|
+
Requires-Dist: ray[default]>=2.6.1; extra == "all"
|
|
156
|
+
Requires-Dist: ibm-cloud-sdk-core; extra == "all"
|
|
157
|
+
Requires-Dist: awscli>=1.27.10; extra == "all"
|
|
155
158
|
Requires-Dist: cudo-compute>=0.1.10; extra == "all"
|
|
156
|
-
Requires-Dist:
|
|
157
|
-
Requires-Dist: websockets; extra == "all"
|
|
159
|
+
Requires-Dist: azure-core>=1.31.0; extra == "all"
|
|
158
160
|
Requires-Dist: azure-mgmt-network>=27.0.0; extra == "all"
|
|
161
|
+
Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
|
|
162
|
+
Requires-Dist: aiohttp; extra == "all"
|
|
163
|
+
Requires-Dist: boto3>=1.26.1; extra == "all"
|
|
159
164
|
Requires-Dist: casbin; extra == "all"
|
|
160
|
-
Requires-Dist:
|
|
161
|
-
Requires-Dist:
|
|
162
|
-
Requires-Dist:
|
|
165
|
+
Requires-Dist: sqlalchemy_adapter; extra == "all"
|
|
166
|
+
Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
|
|
167
|
+
Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
|
|
168
|
+
Requires-Dist: anyio; extra == "all"
|
|
163
169
|
Requires-Dist: azure-common; extra == "all"
|
|
164
|
-
Requires-Dist:
|
|
165
|
-
Requires-Dist: awscli>=1.27.10; extra == "all"
|
|
166
|
-
Requires-Dist: ibm-cloud-sdk-core; extra == "all"
|
|
167
|
-
Requires-Dist: docker; extra == "all"
|
|
168
|
-
Requires-Dist: azure-cli>=2.65.0; extra == "all"
|
|
169
|
-
Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
|
|
170
|
-
Requires-Dist: ray[default]>=2.6.1; extra == "all"
|
|
171
|
-
Requires-Dist: pyjwt; extra == "all"
|
|
172
|
-
Requires-Dist: passlib; extra == "all"
|
|
173
|
-
Requires-Dist: msgraph-sdk; extra == "all"
|
|
174
|
-
Requires-Dist: boto3>=1.26.1; extra == "all"
|
|
170
|
+
Requires-Dist: runpod>=1.6.1; extra == "all"
|
|
175
171
|
Requires-Dist: azure-identity>=1.19.0; extra == "all"
|
|
176
|
-
Requires-Dist:
|
|
177
|
-
Requires-Dist:
|
|
178
|
-
Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
|
|
179
|
-
Requires-Dist: oci; extra == "all"
|
|
172
|
+
Requires-Dist: colorama<0.4.5; extra == "all"
|
|
173
|
+
Requires-Dist: websockets; extra == "all"
|
|
180
174
|
Requires-Dist: ibm-vpc; extra == "all"
|
|
181
|
-
Requires-Dist:
|
|
182
|
-
Requires-Dist:
|
|
175
|
+
Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
|
|
176
|
+
Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
|
|
183
177
|
Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
|
|
184
|
-
Requires-Dist: azure-core>=1.24.0; extra == "all"
|
|
185
|
-
Requires-Dist: azure-core>=1.31.0; extra == "all"
|
|
186
|
-
Requires-Dist: sqlalchemy_adapter; extra == "all"
|
|
187
|
-
Requires-Dist: msrestazure; extra == "all"
|
|
188
|
-
Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
|
|
189
|
-
Requires-Dist: colorama<0.4.5; extra == "all"
|
|
190
|
-
Requires-Dist: anyio; extra == "all"
|
|
191
|
-
Requires-Dist: grpcio>=1.63.0; extra == "all"
|
|
192
178
|
Requires-Dist: ibm-cos-sdk; extra == "all"
|
|
193
|
-
Requires-Dist:
|
|
179
|
+
Requires-Dist: azure-mgmt-compute>=33.0.0; extra == "all"
|
|
180
|
+
Requires-Dist: azure-core>=1.24.0; extra == "all"
|
|
194
181
|
Requires-Dist: python-dateutil; extra == "all"
|
|
195
|
-
Requires-Dist:
|
|
182
|
+
Requires-Dist: botocore>=1.29.10; extra == "all"
|
|
183
|
+
Requires-Dist: passlib; extra == "all"
|
|
184
|
+
Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
|
|
185
|
+
Requires-Dist: azure-cli>=2.65.0; extra == "all"
|
|
186
|
+
Requires-Dist: oci; extra == "all"
|
|
187
|
+
Requires-Dist: pyjwt; extra == "all"
|
|
196
188
|
Requires-Dist: pydo>=0.3.0; extra == "all"
|
|
197
|
-
Requires-Dist:
|
|
189
|
+
Requires-Dist: msgraph-sdk; extra == "all"
|
|
190
|
+
Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
|
|
191
|
+
Requires-Dist: nebius>=0.2.47; extra == "all"
|
|
192
|
+
Requires-Dist: ecsapi>=0.2.0; extra == "all"
|
|
193
|
+
Requires-Dist: grpcio>=1.63.0; extra == "all"
|
|
194
|
+
Requires-Dist: google-cloud-storage; extra == "all"
|
|
195
|
+
Requires-Dist: msrestazure; extra == "all"
|
|
196
|
+
Requires-Dist: aiosqlite; extra == "all"
|
|
197
|
+
Requires-Dist: docker; extra == "all"
|
|
198
198
|
Dynamic: author
|
|
199
199
|
Dynamic: classifier
|
|
200
200
|
Dynamic: description
|
|
@@ -7,7 +7,7 @@ import urllib.request
|
|
|
7
7
|
from sky.utils import directory_utils
|
|
8
8
|
|
|
9
9
|
# Replaced with the current commit when building the wheels.
|
|
10
|
-
_SKYPILOT_COMMIT_SHA = '
|
|
10
|
+
_SKYPILOT_COMMIT_SHA = 'c20815b0bb0906dce85a57513cf887951dbe7a8d'
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def _get_git_commit():
|
|
@@ -37,7 +37,7 @@ def _get_git_commit():
|
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
__commit__ = _get_git_commit()
|
|
40
|
-
__version__ = '1.0.0.
|
|
40
|
+
__version__ = '1.0.0.dev20250919'
|
|
41
41
|
__root_dir__ = directory_utils.get_sky_dir()
|
|
42
42
|
|
|
43
43
|
|
|
@@ -300,7 +300,10 @@ def endpoints(cluster: str,
|
|
|
300
300
|
|
|
301
301
|
|
|
302
302
|
@usage_lib.entrypoint
|
|
303
|
-
def cost_report(
|
|
303
|
+
def cost_report(
|
|
304
|
+
days: Optional[int] = None,
|
|
305
|
+
dashboard_summary_response: bool = False,
|
|
306
|
+
cluster_hashes: Optional[List[str]] = None) -> List[Dict[str, Any]]:
|
|
304
307
|
# NOTE(dev): Keep the docstring consistent between the Python API and CLI.
|
|
305
308
|
"""Get all cluster cost reports, including those that have been downed.
|
|
306
309
|
|
|
@@ -346,7 +349,12 @@ def cost_report(days: Optional[int] = None) -> List[Dict[str, Any]]:
|
|
|
346
349
|
if days is None:
|
|
347
350
|
days = constants.COST_REPORT_DEFAULT_DAYS
|
|
348
351
|
|
|
349
|
-
|
|
352
|
+
abbreviate_response = dashboard_summary_response and cluster_hashes is None
|
|
353
|
+
|
|
354
|
+
cluster_reports = global_user_state.get_clusters_from_history(
|
|
355
|
+
days=days,
|
|
356
|
+
abbreviate_response=abbreviate_response,
|
|
357
|
+
cluster_hashes=cluster_hashes)
|
|
350
358
|
logger.debug(
|
|
351
359
|
f'{len(cluster_reports)} clusters found from history with {days} days.')
|
|
352
360
|
|
|
@@ -364,43 +372,6 @@ def cost_report(days: Optional[int] = None) -> List[Dict[str, Any]]:
|
|
|
364
372
|
cost = (launched_resources.get_cost(duration) * launched_nodes)
|
|
365
373
|
return cost
|
|
366
374
|
|
|
367
|
-
def _update_record_with_resources(record: Dict[str, Any]) -> None:
|
|
368
|
-
"""Add resource fields for dashboard compatibility."""
|
|
369
|
-
if record is None:
|
|
370
|
-
return
|
|
371
|
-
resources = record.get('resources')
|
|
372
|
-
if resources is None:
|
|
373
|
-
return
|
|
374
|
-
fields = ['cloud', 'region', 'cpus', 'memory', 'accelerators']
|
|
375
|
-
for field in fields:
|
|
376
|
-
try:
|
|
377
|
-
record[field] = str(getattr(resources, field))
|
|
378
|
-
except Exception as e: # pylint: disable=broad-except
|
|
379
|
-
# Ok to skip the fields as this is just for display
|
|
380
|
-
# purposes.
|
|
381
|
-
logger.debug(f'Failed to get resources.{field} for cluster '
|
|
382
|
-
f'{record["name"]}: {str(e)}')
|
|
383
|
-
record[field] = None
|
|
384
|
-
|
|
385
|
-
# Add resources_str and resources_str_full for dashboard
|
|
386
|
-
# compatibility
|
|
387
|
-
num_nodes = record.get('num_nodes', 1)
|
|
388
|
-
try:
|
|
389
|
-
resource_str_simple = resources_utils.format_resource(
|
|
390
|
-
resources, simplify=True)
|
|
391
|
-
resource_str_full = resources_utils.format_resource(
|
|
392
|
-
resources, simplify=False)
|
|
393
|
-
record['resources_str'] = f'{num_nodes}x{resource_str_simple}'
|
|
394
|
-
record[
|
|
395
|
-
'resources_str_full'] = f'{num_nodes}x{resource_str_full}'
|
|
396
|
-
except Exception as e: # pylint: disable=broad-except
|
|
397
|
-
logger.debug(f'Failed to get resources_str for cluster '
|
|
398
|
-
f'{record["name"]}: {str(e)}')
|
|
399
|
-
for field in fields:
|
|
400
|
-
record[field] = None
|
|
401
|
-
record['resources_str'] = '-'
|
|
402
|
-
record['resources_str_full'] = '-'
|
|
403
|
-
|
|
404
375
|
try:
|
|
405
376
|
report['total_cost'] = get_total_cost(report)
|
|
406
377
|
except Exception as e: # pylint: disable=broad-except
|
|
@@ -409,17 +380,66 @@ def cost_report(days: Optional[int] = None) -> List[Dict[str, Any]]:
|
|
|
409
380
|
f'{report["name"]}: {str(e)}')
|
|
410
381
|
report['total_cost'] = 0.0
|
|
411
382
|
|
|
412
|
-
_update_record_with_resources(report)
|
|
413
383
|
return report
|
|
414
384
|
|
|
415
385
|
# Process clusters in parallel
|
|
416
386
|
if not cluster_reports:
|
|
417
387
|
return []
|
|
418
388
|
|
|
419
|
-
|
|
420
|
-
|
|
389
|
+
if not abbreviate_response:
|
|
390
|
+
cluster_reports = subprocess_utils.run_in_parallel(
|
|
391
|
+
_process_cluster_report, cluster_reports)
|
|
392
|
+
|
|
393
|
+
def _update_record_with_resources(record: Dict[str, Any]) -> None:
|
|
394
|
+
"""Add resource fields for dashboard compatibility."""
|
|
395
|
+
if record is None:
|
|
396
|
+
return
|
|
397
|
+
resources = record.get('resources')
|
|
398
|
+
if resources is None:
|
|
399
|
+
return
|
|
400
|
+
if not dashboard_summary_response:
|
|
401
|
+
fields = ['cloud', 'region', 'cpus', 'memory', 'accelerators']
|
|
402
|
+
else:
|
|
403
|
+
fields = ['cloud']
|
|
404
|
+
for field in fields:
|
|
405
|
+
try:
|
|
406
|
+
record[field] = str(getattr(resources, field))
|
|
407
|
+
except Exception as e: # pylint: disable=broad-except
|
|
408
|
+
# Ok to skip the fields as this is just for display
|
|
409
|
+
# purposes.
|
|
410
|
+
logger.debug(f'Failed to get resources.{field} for cluster '
|
|
411
|
+
f'{record["name"]}: {str(e)}')
|
|
412
|
+
record[field] = None
|
|
413
|
+
|
|
414
|
+
# Add resources_str and resources_str_full for dashboard
|
|
415
|
+
# compatibility
|
|
416
|
+
num_nodes = record.get('num_nodes', 1)
|
|
417
|
+
try:
|
|
418
|
+
resource_str_simple = resources_utils.format_resource(resources,
|
|
419
|
+
simplify=True)
|
|
420
|
+
record['resources_str'] = f'{num_nodes}x{resource_str_simple}'
|
|
421
|
+
if not abbreviate_response:
|
|
422
|
+
resource_str_full = resources_utils.format_resource(
|
|
423
|
+
resources, simplify=False)
|
|
424
|
+
record[
|
|
425
|
+
'resources_str_full'] = f'{num_nodes}x{resource_str_full}'
|
|
426
|
+
except Exception as e: # pylint: disable=broad-except
|
|
427
|
+
logger.debug(f'Failed to get resources_str for cluster '
|
|
428
|
+
f'{record["name"]}: {str(e)}')
|
|
429
|
+
for field in fields:
|
|
430
|
+
record[field] = None
|
|
431
|
+
record['resources_str'] = '-'
|
|
432
|
+
if not abbreviate_response:
|
|
433
|
+
record['resources_str_full'] = '-'
|
|
434
|
+
|
|
435
|
+
for report in cluster_reports:
|
|
436
|
+
_update_record_with_resources(report)
|
|
437
|
+
if dashboard_summary_response:
|
|
438
|
+
report.pop('usage_intervals')
|
|
439
|
+
report.pop('user_hash')
|
|
440
|
+
report.pop('resources')
|
|
421
441
|
|
|
422
|
-
return
|
|
442
|
+
return cluster_reports
|
|
423
443
|
|
|
424
444
|
|
|
425
445
|
def _start(
|
|
@@ -847,8 +867,10 @@ def queue(cluster_name: str,
|
|
|
847
867
|
'submitted_at': job_info.submitted_at,
|
|
848
868
|
'status': job_lib.JobStatus.from_protobuf(job_info.status),
|
|
849
869
|
'run_timestamp': job_info.run_timestamp,
|
|
850
|
-
'start_at': job_info.start_at
|
|
851
|
-
|
|
870
|
+
'start_at': job_info.start_at
|
|
871
|
+
if job_info.HasField('start_at') else None,
|
|
872
|
+
'end_at': job_info.end_at
|
|
873
|
+
if job_info.HasField('end_at') else None,
|
|
852
874
|
'resources': job_info.resources,
|
|
853
875
|
'log_path': job_info.log_path,
|
|
854
876
|
'user_hash': job_info.username,
|
{skypilot_nightly-1.0.0.dev20250918 → skypilot_nightly-1.0.0.dev20250919}/sky/dashboard/out/404.html
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-b2a3938c22b6647b.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-ce361c6959bc2001.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js" defer=""></script><script src="/dashboard/_next/static/VvaUqYDvHOcHZRnvMBmax/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/VvaUqYDvHOcHZRnvMBmax/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"VvaUqYDvHOcHZRnvMBmax","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST=function(s,c,a,e,t,f,u,b,
|
|
1
|
+
self.__BUILD_MANIFEST=function(s,c,a,e,t,f,u,n,b,o,j,i,r,d){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/chunks/pages/index-444f1804401f04ea.js"],"/_error":["static/chunks/pages/_error-c66a4e8afc46f17b.js"],"/clusters":["static/chunks/pages/clusters-469814d711d63b1b.js"],"/clusters/[cluster]":[s,c,a,f,u,"static/chunks/4676-9da7fdbde90b5549.js",o,e,t,n,j,b,i,"static/chunks/6856-9a2538f38c004652.js",r,d,"static/chunks/9037-472ee1222cb1e158.js","static/chunks/pages/clusters/[cluster]-9525660179df3605.js"],"/clusters/[cluster]/[job]":[s,c,a,f,e,t,b,"static/chunks/pages/clusters/[cluster]/[job]-1e9248ddbddcd122.js"],"/config":["static/chunks/pages/config-dfb9bf07b13045f4.js"],"/infra":["static/chunks/pages/infra-aabba60d57826e0f.js"],"/infra/[context]":["static/chunks/pages/infra/[context]-6563820e094f68ca.js"],"/jobs":["static/chunks/pages/jobs-1f70d9faa564804f.js"],"/jobs/pools/[pool]":[s,c,a,u,o,e,t,n,"static/chunks/pages/jobs/pools/[pool]-07349868f7905d37.js"],"/jobs/[job]":[s,c,a,f,u,o,e,t,n,b,"static/chunks/pages/jobs/[job]-dd64309c3fe67ed2.js"],"/users":["static/chunks/pages/users-018bf31cda52e11b.js"],"/volumes":["static/chunks/pages/volumes-739726d6b823f532.js"],"/workspace/new":["static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js"],"/workspaces":["static/chunks/pages/workspaces-7528cc0ef8c522c5.js"],"/workspaces/[name]":[s,c,a,f,u,"static/chunks/1836-37fede578e2da5f8.js",e,t,n,j,b,i,r,d,"static/chunks/1141-159df2d4c441a9d1.js","static/chunks/pages/workspaces/[name]-af76bb06dbb3954f.js"],sortedPages:["/","/_app","/_error","/clusters","/clusters/[cluster]","/clusters/[cluster]/[job]","/config","/infra","/infra/[context]","/jobs","/jobs/pools/[pool]","/jobs/[job]","/users","/volumes","/workspace/new","/workspaces","/workspaces/[name]"]}}("static/chunks/616-3d59f75e2ccf9321.js","static/chunks/6130-2be46d70a38f1e82.js","static/chunks/5739-d67458fcb1386c92.js","static/chunks/6989-01359c57e018caa4.js","static/chunks/3850-ff4a9a69d978632b.js","static/chunks/7411-b15471acd2cba716.js","static/chunks/1272-1ef0bf0237faccdb.js","static/chunks/8969-a39efbadcd9fde80.js","static/chunks/6135-4b4d5e824b7f9d3c.js","static/chunks/754-d0da8ab45f9509e9.js","static/chunks/6990-f6818c84ed8f1c86.js","static/chunks/1121-4ff1ec0dbc5792ab.js","static/chunks/6601-06114c982db410b6.js","static/chunks/3015-88c7c8d69b0b6dba.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
skypilot_nightly-1.0.0.dev20250919/sky/dashboard/out/_next/static/chunks/1121-4ff1ec0dbc5792ab.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1121],{50326:function(e,t,a){a.d(t,{$N:function(){return _},Be:function(){return h},Vq:function(){return c},cN:function(){return m},cZ:function(){return d},fK:function(){return f}});var r=a(85893),s=a(67294),o=a(6327),n=a(32350),l=a(43767);let c=o.fC;o.xz;let u=o.h_;o.x8;let i=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(o.aV,{ref:t,className:(0,n.cn)("fixed inset-0 z-50 bg-black/50 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...s})});i.displayName=o.aV.displayName;let d=s.forwardRef((e,t)=>{let{className:a,children:s,...c}=e;return(0,r.jsxs)(u,{children:[(0,r.jsx)(i,{}),(0,r.jsxs)(o.VY,{ref:t,className:(0,n.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-gray-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),...c,children:[s,(0,r.jsxs)(o.x8,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100 data-[state=open]:text-gray-500",children:[(0,r.jsx)(l.Z,{className:"h-4 w-4"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});d.displayName=o.VY.displayName;let f=e=>{let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,n.cn)("flex flex-col space-y-1.5 text-center sm:text-left",t),...a})};f.displayName="DialogHeader";let m=e=>{let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,n.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...a})};m.displayName="DialogFooter";let _=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(o.Dx,{ref:t,className:(0,n.cn)("text-lg font-semibold leading-none tracking-tight",a),...s})});_.displayName=o.Dx.displayName;let h=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(o.dk,{ref:t,className:(0,n.cn)("text-sm text-gray-500",a),...s})});h.displayName=o.dk.displayName},23266:function(e,t,a){a.d(t,{GH:function(){return f},QL:function(){return _},Sl:function(){return d},getClusters:function(){return u},uR:function(){return i}});var r=a(67294),s=a(15821),o=a(47145),n=a(93225),l=a(6378);let c={UP:"RUNNING",STOPPED:"STOPPED",INIT:"LAUNCHING",null:"TERMINATED"};async function u(){let{clusterNames:e=null}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{return(await o.x.fetch("/status",{cluster_names:e,all_users:!0,include_credentials:!1})).map(e=>{let t="",a=t=e.zone?e.zone:e.region;return t&&t.length>25&&(t=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15;if(!e||e.length<=t)return e;if(t<=3)return"...";let a=Math.floor((t-3)/2),r=a+(t-3)%2;return 0===a?e.substring(0,r)+"...":e.substring(0,r)+"..."+e.substring(e.length-a)}(t,25)),{status:c[e.status],cluster:e.name,user:e.user_name,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:e.cloud,region:e.region,infra:t?e.cloud+" ("+t+")":e.cloud,full_infra:a?"".concat(e.cloud," (").concat(a,")"):e.cloud,cpus:e.cpus,mem:e.memory,gpus:e.accelerators,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:new Date(1e3*e.launched_at),num_nodes:e.nodes,workspace:e.workspace,autostop:e.autostop,last_event:e.last_event,to_down:e.to_down,jobs:[],command:e.last_creation_command||e.last_use,task_yaml:e.last_creation_yaml||"{}",events:[{time:new Date(1e3*e.launched_at),event:"Cluster created."}]}})}catch(e){return console.error("Error fetching clusters:",e),[]}}async function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;try{let t={days:30,dashboard_summary_response:!0};e&&(t.cluster_hashes=[e]);let a=await o.x.fetch("/cost_report",t);console.log("Raw cluster history data:",a);let r=a.map(e=>{let t="Unknown";e.cloud?t=e.cloud:e.resources&&e.resources.cloud&&(t=e.resources.cloud);let a=e.user_name||"-";return{status:e.status?c[e.status]:"TERMINATED",cluster:e.name,user:a,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:t,region:"",infra:t,full_infra:t,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:e.launched_at?new Date(1e3*e.launched_at):null,num_nodes:e.num_nodes||1,duration:e.duration,total_cost:e.total_cost,workspace:e.workspace||"default",autostop:-1,last_event:e.last_event,to_down:!1,usage_intervals:e.usage_intervals,command:e.last_creation_command||"",task_yaml:e.last_creation_yaml||"{}",events:[{time:e.launched_at?new Date(1e3*e.launched_at):new Date,event:"Cluster created."}]}});return console.log("Processed cluster history data:",r),r}catch(e){return console.error("Error fetching cluster history:",e),[]}}async function d(e){let{clusterName:t,jobId:a,onNewLog:r,workspace:n}=e;try{await o.x.stream("/logs",{follow:!1,cluster_name:t,job_id:a,tail:1e4,override_skypilot_config:{active_workspace:n||"default"}},r)}catch(e){console.error("Error in streamClusterJobLogs:",e),(0,s.C)("Error in streamClusterJobLogs: ".concat(e.message),"error")}}async function f(e){let{clusterName:t,jobIds:a=null,workspace:r}=e;try{let e=await o.x.fetch("/download_logs",{cluster_name:t,job_ids:a?a.map(String):null,override_skypilot_config:{active_workspace:r||"default"}}),l=Object.values(e||{});if(!l.length){(0,s.C)("No logs found to download.","warning");return}let c=window.location.origin,u="".concat(c).concat(n.f4,"/download"),i=await fetch("".concat(u,"?relative=items"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({folder_paths:l})});if(!i.ok){let e=await i.text();throw Error("Download failed: ".concat(i.status," ").concat(e))}let d=await i.blob(),f=window.URL.createObjectURL(d),m=document.createElement("a"),_=new Date().toISOString().replace(/[:.]/g,"-"),h=a&&1===a.length?"job-".concat(a[0]):"jobs";m.href=f,m.download="".concat(t,"-").concat(h,"-logs-").concat(_,".zip"),document.body.appendChild(m),m.click(),m.remove(),window.URL.revokeObjectURL(f)}catch(e){console.error("Error downloading logs:",e),(0,s.C)("Error downloading logs: ".concat(e.message),"error")}}async function m(e){let{clusterName:t,workspace:a}=e;try{return(await o.x.fetch("/queue",{cluster_name:t,all_users:!0,override_skypilot_config:{active_workspace:a}})).map(e=>{var r;let s=e.end_at?e.end_at:Date.now()/1e3,o=0,n=0;return e.submitted_at&&(o=s-e.submitted_at),e.start_at&&(n=s-e.start_at),{id:e.job_id,status:e.status,job:e.job_name,user:e.username,user_hash:e.user_hash,gpus:e.accelerators||{},submitted_at:e.submitted_at?new Date(1e3*e.submitted_at):null,resources:e.resources,cluster:t,total_duration:o,job_duration:n,infra:"",logs:"",workspace:a||"default",git_commit:(null===(r=e.metadata)||void 0===r?void 0:r.git_commit)||"-"}})}catch(e){return console.error("Error fetching cluster jobs:",e),[]}}function _(e){let{cluster:t,job:a=null}=e,[s,o]=(0,r.useState)(null),[n,c]=(0,r.useState)(null),[i,d]=(0,r.useState)(!0),[f,_]=(0,r.useState)(!0),h=(0,r.useCallback)(async()=>{if(t)try{d(!0);let e=await l.default.get(u,[{clusterNames:[t]}]);return o(e[0]),e[0]}catch(e){console.error("Error fetching cluster data:",e)}finally{d(!1)}return null},[t]),g=(0,r.useCallback)(async e=>{if(t)try{_(!0);let a=await l.default.get(m,[{clusterName:t,workspace:e||"default"}]);c(a)}catch(e){console.error("Error fetching cluster job data:",e)}finally{_(!1)}},[t]),p=(0,r.useCallback)(async()=>{l.default.invalidate(u,[{clusterNames:[t]}]);let e=await h();e&&(l.default.invalidate(m,[{clusterName:t,workspace:e.workspace||"default"}]),await g(e.workspace))},[h,g,t]),w=(0,r.useCallback)(async()=>{s&&(l.default.invalidate(m,[{clusterName:t,workspace:s.workspace||"default"}]),await g(s.workspace))},[g,s,t]);return(0,r.useEffect)(()=>{(async()=>{let e=await h();e&&g(e.workspace)})()},[t,a,h,g]),{clusterData:s,clusterJobData:n,loading:i,clusterDetailsLoading:i,clusterJobsLoading:f,refreshData:p,refreshClusterJobsOnly:w}}},53081:function(e,t,a){a.d(t,{R:function(){return s}}),a(23266),a(68969);var r=a(47145);async function s(){try{let e=await r.x.get("/users");if(!e.ok)throw Error("HTTP error! status: ".concat(e.status));return(await e.json()).map(e=>({userId:e.id,username:e.name,role:e.role,created_at:e.created_at}))||[]}catch(e){return console.error("Failed to fetch users:",e),[]}}}}]);
|
skypilot_nightly-1.0.0.dev20250919/sky/dashboard/out/_next/static/chunks/3015-88c7c8d69b0b6dba.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3015],{23015:function(e,s,t){t.r(s),t.d(s,{ClusterJobs:function(){return H},ManagedJobs:function(){return Z},ManagedJobsTable:function(){return B},Status2Actions:function(){return q},filterJobsByName:function(){return J},filterJobsByPool:function(){return O},filterJobsByUser:function(){return W},filterJobsByWorkspace:function(){return U},statusGroups:function(){return z}});var a=t(85893),r=t(67294),l=t(11163),n=t(41664),i=t.n(n),c=t(55739),o=t(30803),d=t(37673),u=t(68764),h=t(36989),x=t(51214),m=t(68969),p=t(6378);class j{_generateFilterKey(e){let{allUsers:s=!0,nameMatch:t,userMatch:a,workspaceMatch:r,poolMatch:l,statuses:n}=e;return["allUsers:".concat(s),t?"name:".concat(t):"",a?"user:".concat(a):"",r?"workspace:".concat(r):"",l?"pool:".concat(l):"",n&&n.length>0?"statuses:".concat(n.sort().join(",")):""].filter(Boolean).join("|")||"default"}_getCacheStatus(e){let s=this.fullDataCache.get(e),t=Date.now();if(!s)return{isCached:!1,isFresh:!1,age:0,maxAge:12e4,hasData:!1};let a=t-s.timestamp;return{isCached:!0,isFresh:a<12e4,age:a,maxAge:12e4,hasData:s.jobs&&Array.isArray(s.jobs),data:s}}async getPaginatedJobs(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{page:s=1,limit:t=10,...a}=e,r=this._generateFilterKey(a);try{let e=this._getCacheStatus(r);if(e.isCached&&e.hasData){let l=e.data;if(!l.jobs||Array.isArray(l.jobs)&&0===l.jobs.length){if(!this.prefetching.has(r)){let e=this._loadFullDataset(a,r).catch(()=>{}).finally(()=>this.prefetching.delete(r));this.prefetching.set(r,e)}}else{let n=(s-1)*t,i=l.jobs.slice(n,n+t);if(!this.prefetching.has(r)&&(!e.isFresh||e.age>e.maxAge/2)){let e=this._loadFullDataset(a,r).catch(()=>{}).finally(()=>this.prefetching.delete(r));this.prefetching.set(r,e)}return{jobs:i,total:l.total,totalNoFilter:l.totalNoFilter||l.total,controllerStopped:l.controllerStopped,statusCounts:l.statusCounts||{},fromCache:!0,cacheStatus:e.isFresh?"local_cache_hit":"local_cache_stale_hit"}}}let l=await p.default.get(m.getManagedJobs,[{...a,page:s,limit:t}]),n=(null==l?void 0:l.jobs)||[],i="number"==typeof(null==l?void 0:l.total)?l.total:n.length,c=!!(null==l?void 0:l.controllerStopped);if(!this.prefetching.has(r)){let e=this._loadFullDataset(a,r).catch(e=>{console.warn("Background prefetch of full jobs failed:",e)}).finally(()=>{this.prefetching.delete(r)});this.prefetching.set(r,e)}return{jobs:n,total:i,totalNoFilter:(null==l?void 0:l.totalNoFilter)||i,controllerStopped:c,statusCounts:(null==l?void 0:l.statusCounts)||{},fromCache:!1,cacheStatus:"server_page_fetch"}}catch(e){return console.error("Error in getPaginatedJobs:",e),{jobs:[],total:0,totalNoFilter:0,controllerStopped:!1,statusCounts:{},fromCache:!1,cacheStatus:"error"}}}async _loadFullDataset(e,s){let t=await p.default.get(m.getManagedJobs,[e]);if(t.controllerStopped||!t.jobs)return t;let a={jobs:t.jobs,total:t.jobs.length,totalNoFilter:t.totalNoFilter||t.jobs.length,controllerStopped:!1,statusCounts:t.statusCounts||{},timestamp:Date.now()};return this.fullDataCache.set(s,a),a}isDataLoading(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=this._generateFilterKey(e);return this.isLoading.has(s)||this.prefetching.has(s)}isDataCached(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=this._generateFilterKey(e),t=this._getCacheStatus(s);return t.isCached&&t.isFresh&&t.hasData}getCacheStatus(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=this._generateFilterKey(e);return this._getCacheStatus(s)}invalidateCache(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(e){let s=this._generateFilterKey(e);this.fullDataCache.delete(s),this.isLoading.delete(s),this.prefetching.delete(s)}else this.fullDataCache.clear(),this.isLoading.clear(),this.prefetching.clear();p.default.invalidateFunction(m.getManagedJobs)}getCacheStats(){let e={cachedFilters:Array.from(this.fullDataCache.keys()),loadingFilters:Array.from(this.isLoading.keys()),prefetchingFilters:Array.from(this.prefetching.keys()),cacheSize:this.fullDataCache.size,loadingCount:this.isLoading.size,prefetchingCount:this.prefetching.size};for(let[s,t]of(e.detailedStatus={},this.fullDataCache.entries())){let a=this._getCacheStatus(s);e.detailedStatus[s]={age:a.age,isFresh:a.isFresh,hasData:a.hasData,jobCount:t.jobs?t.jobs.length:0}}return e}constructor(){this.fullDataCache=new Map,this.isLoading=new Map,this.prefetching=new Map}}let f=new j;var g=t(23266),b=t(17324),v=t(53081),w=t(13626),y=t(23293),N=t(6521),k=t(16826),C=t(92128),S=t(94545),_=t(99307),L=t(20546),E=t(23001),R=t(88950);let D=(e,s)=>{let t={...e.query},a=[],r=[],l=[];s.map((e,s)=>{var t;a.push(null!==(t=e.property.toLowerCase())&&void 0!==t?t:""),r.push(e.operator),l.push(e.value)}),t.property=a,t.operator=r,t.value=l,e.replace({pathname:e.pathname,query:t},void 0,{shallow:!0})},F=(e,s)=>{let t={...e.query},a=t.property,r=t.operator,l=t.value;if(void 0===a)return[];let n=[],i=Array.isArray(a)?a.length:1;if(1===i)n.push({property:s.get(a),operator:r,value:l});else for(let e=0;e<i;e++)n.push({property:s.get(a[e]),operator:r[e],value:l[e]});return n},M=e=>{var s,t;let{propertyList:l=[],valueList:n,setFilters:i,updateURLParams:c,placeholder:o="Filter items"}=e,d=(0,r.useRef)(null),u=(0,r.useRef)(null),[h,x]=(0,r.useState)(!1),[m,p]=(0,r.useState)(""),[j,f]=(0,r.useState)((null===(s=l[0])||void 0===s?void 0:s.value)||"status"),[g,b]=(0,r.useState)([]);(0,r.useEffect)(()=>{let e=e=>{u.current&&!u.current.contains(e.target)&&d.current&&!d.current.contains(e.target)&&x(!1)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[]),(0,r.useEffect)(()=>{let e=[];n&&"object"==typeof n&&(e=n[j]||[]),""!==m.trim()&&(e=e.filter(e=>e&&e.toString().toLowerCase().includes(m.toLowerCase()))),b(e)},[j,n,m]);let v=e=>{let s=l.find(s=>s.value===e);return s?s.label:e},w=e=>{i(s=>{let t=[...s,{property:v(j),operator:":",value:e}];return c(t),t}),x(!1),p(""),d.current.focus()};return(0,a.jsxs)("div",{className:"flex flex-row border border-gray-300 rounded-md overflow-visible",children:[(0,a.jsx)("div",{className:"border-r border-gray-300 flex-shrink-0",children:(0,a.jsxs)(R.Ph,{onValueChange:f,value:j,children:[(0,a.jsx)(R.i4,{"aria-label":"Filter Property",className:"focus:ring-0 focus:ring-offset-0 border-none rounded-l-md rounded-r-none w-20 sm:w-24 md:w-32 h-8 text-xs sm:text-sm",children:(0,a.jsx)(R.ki,{placeholder:(null===(t=l[0])||void 0===t?void 0:t.label)||"Status"})}),(0,a.jsx)(R.Bw,{children:l.map((e,s)=>(0,a.jsx)(R.Ql,{value:e.value,children:e.label},"property-item-".concat(s)))})]})}),(0,a.jsxs)("div",{className:"relative flex-1",children:[(0,a.jsx)("input",{type:"text",ref:d,placeholder:o,value:m,onChange:e=>{p(e.target.value),h||x(!0)},onFocus:()=>{x(!0)},onKeyDown:e=>{"Enter"===e.key&&""!==m.trim()?(i(e=>{let s=[...e,{property:v(j),operator:":",value:m}];return c(s),s}),p(""),x(!1)):"Escape"===e.key&&(x(!1),d.current.blur())},className:"h-8 w-full sm:w-96 px-3 pr-8 text-sm border-none rounded-l-none rounded-r-md focus:ring-0 focus:outline-none",autoComplete:"off"}),m&&(0,a.jsx)("button",{onClick:()=>{p(""),x(!1)},className:"absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600",title:"Clear filter",tabIndex:-1,children:(0,a.jsx)("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})}),h&&g.length>0&&(0,a.jsx)("div",{ref:u,className:"absolute z-50 mt-1 w-full bg-white border border-gray-200 rounded-md shadow-lg max-h-60 overflow-y-auto",style:{zIndex:9999},children:g.map((e,s)=>(0,a.jsx)("div",{className:"px-3 py-2 cursor-pointer hover:bg-gray-50 text-sm ".concat(s!==g.length-1?"border-b border-gray-100":""),onClick:()=>w(e),children:(0,a.jsx)("span",{className:"text-sm text-gray-700",children:e})},"".concat(e,"-").concat(s)))})]})]})},I=e=>{let{filters:s=[],setFilters:t,updateURLParams:r}=e,l=e=>{t(s=>{let t=s.filter((s,t)=>t!==e);return r(t),t})};return(0,a.jsx)(a.Fragment,{children:(0,a.jsx)("div",{className:"flex items-center gap-4 py-2 px-2",children:(0,a.jsxs)("div",{className:"flex flex-wrap items-content gap-2",children:[s.map((e,s)=>(0,a.jsx)(A,{filter:e,onRemove:()=>l(s)},"filteritem-".concat(s))),s.length>0&&(0,a.jsx)(a.Fragment,{children:(0,a.jsx)("button",{onClick:()=>{r([]),t([])},className:"rounded-full px-4 py-1 text-sm text-gray-700 bg-gray-200 hover:bg-gray-300",children:"Clear filters"})})]})})})},A=e=>{let{filter:s,onRemove:t}=e;return(0,a.jsx)(a.Fragment,{children:(0,a.jsxs)("div",{className:"flex items-center text-blue-600 bg-blue-100 px-1 py-1 rounded-full text-sm",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1 px-2",children:[(0,a.jsx)("span",{children:"".concat(s.property," ")}),(0,a.jsx)("span",{children:"".concat(s.operator," ")}),(0,a.jsx)("span",{children:" ".concat(s.value)})]}),(0,a.jsx)("button",{onClick:()=>t(),className:"p-0.5 ml-1 transform text-gray-400 hover:text-gray-600 bg-blue-500 hover:bg-blue-600 rounded-full flex flex-col items-center",title:"Clear filter",children:(0,a.jsx)("svg",{className:"h-3 w-3",fill:"none",stroke:"white",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:5,d:"M6 18L18 6M6 6l12 12"})})})]})})},z={active:["PENDING","RUNNING","RECOVERING","SUBMITTED","STARTING","CANCELLING"],finished:["SUCCEEDED","FAILED","CANCELLED","FAILED_SETUP","FAILED_PRECHECKS","FAILED_NO_RESOURCE","FAILED_CONTROLLER"]},P=[{label:"Name",value:"name"},{label:"User",value:"user"},{label:"Workspace",value:"workspace"},{label:"Pool",value:"pool"}];function J(e,s){if(!s||""===s.trim())return e;let t=s.toLowerCase().trim();return e.filter(e=>(e.name||"").toLowerCase().includes(t))}function U(e,s){return s&&"ALL_WORKSPACES"!==s?e.filter(e=>(e.workspace||"default").toLowerCase()===s.toLowerCase()):e}function W(e,s){return s&&"ALL_USERS"!==s?e.filter(e=>(e.user_hash||e.user)===s):e}function O(e,s){if(!s||""===s.trim())return e;let t=s.toLowerCase().trim();return e.filter(e=>(e.pool||"").toLowerCase().includes(t))}let T=e=>{if(!e)return"-";let s=e instanceof Date?e:new Date(1e3*e);return(0,a.jsx)(h.Zg,{date:s})};function Z(){let e=(0,l.useRouter)(),[s,t]=(0,r.useState)(!1),[n,c]=(0,r.useState)(!0),[o,d]=(0,r.useState)(!0),u=r.useRef(null),x=r.useRef(null),[j,g]=(0,r.useState)([]),[w,y]=(0,r.useState)([]),N=async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];t(!0),!e&&o&&c(!0);try{let[e]=await Promise.all([p.default.get(m.vs,[{}])]);g(e.pools||[])}catch(e){console.error("Error fetching data:",e)}finally{t(!1),!e&&o&&(c(!1),d(!1))}};(0,r.useEffect)(()=>{N()},[]);let k=s=>{D(e,s)},C=r.useCallback(()=>{let s=new Map;s.set("",""),s.set("status","Status"),s.set("name","Name"),s.set("user","User"),s.set("workspace","Workspace"),s.set("pool","Pool"),y(F(e,s))},[e,y]);return(0,r.useEffect)(()=>{e.isReady&&C()},[e.isReady,e.query.tab,C]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mb-1",children:[(0,a.jsx)("div",{className:"text-base",children:(0,a.jsx)(i(),{href:"/jobs",className:"text-sky-blue hover:underline leading-none",children:"Managed Jobs"})}),(0,a.jsx)("div",{className:"w-full sm:w-auto",children:(0,a.jsx)(M,{propertyList:P,valueList:{},setFilters:y,updateURLParams:k,placeholder:"Filter jobs"})})]}),(0,a.jsx)(I,{filters:w,setFilters:y,updateURLParams:k}),(0,a.jsx)(B,{refreshInterval:h.yc,setLoading:t,refreshDataRef:u,filters:w,onRefresh:()=>{f.invalidateCache(),p.default.invalidate(m.vs,[{}]),p.default.invalidate(b.getWorkspaces),p.default.invalidate(v.R),u.current&&u.current(),x.current&&x.current()},poolsData:j,poolsLoading:n}),(0,a.jsx)("div",{className:"mb-4",children:(0,a.jsx)(V,{refreshInterval:h.yc,setLoading:t,refreshDataRef:x})})]})}function B(e){let{refreshInterval:s,setLoading:t,refreshDataRef:l,filters:n,onRefresh:j,poolsData:b,poolsLoading:v}=e,[N,k]=(0,r.useState)([]),[R,D]=(0,r.useState)(0),[F,M]=(0,r.useState)(0),[I,A]=(0,r.useState)({key:null,direction:"ascending"}),[P,J]=(0,r.useState)(!1),[U,W]=(0,r.useState)(!0),[O,Z]=(0,r.useState)(1),[B,H]=(0,r.useState)(10),[V,Y]=(0,r.useState)(null),Q=(0,r.useRef)(null),[X,$]=(0,r.useState)([]),[ee,es]=(0,r.useState)({}),[et,ea]=(0,r.useState)({}),[er,el]=(0,r.useState)(!1),[en,ei]=(0,r.useState)(!1),[ec,eo]=(0,r.useState)(!1),[ed,eu]=(0,r.useState)("all"),[eh,ex]=(0,r.useState)(!0),[em,ep]=(0,r.useState)({isOpen:!1,title:"",message:"",onConfirm:null}),ej=(0,E.X)(),ef=(0,r.useRef)(0),eg=async()=>{ep({isOpen:!0,title:"Restart Controller",message:"Are you sure you want to restart the controller?",onConfirm:async()=>{try{eo(!0),J(!0),await (0,m.Ce)("restartcontroller"),await eb()}catch(e){console.error("Error restarting controller:",e)}finally{eo(!1),J(!1)}}})},eb=r.useCallback(async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=!1!==e.includeStatus,a=ef.current+1;ef.current=a,J(!0),t(!0);try{let e,t;let r=e=>{let s=(n||[]).find(s=>(s.property||"").toLowerCase()===e);return s&&s.value?String(s.value):void 0};X.length>0?t=X:eh?"active"===ed?t=z.active:"finished"===ed&&(t=z.finished):t=[];let l={allUsers:!0,nameMatch:r("name"),userMatch:r("user"),workspaceMatch:r("workspace"),poolMatch:r("pool"),statuses:t,page:O,limit:B},i=null;if(f.isDataCached(l),f.isDataLoading(l),s){let[s,t]=await Promise.all([f.getPaginatedJobs(l),p.default.get(g.getClusters)]);e=s,i=t}else e=await f.getPaginatedJobs(l);let{jobs:c=[],total:o=0,totalNoFilter:d=0,controllerStopped:u=!1,cacheStatus:h="unknown",statusCounts:x={}}=e||{},m=!1,j=!1;if(s&&i){let e=null==i?void 0:i.find(e=>(0,S.Ym)(e.cluster)),s=e?e.status:"NOT_FOUND";"STOPPED"==s&&u&&(m=!0),"LAUNCHING"==s&&(j=!0)}a===ef.current&&(k(c),D(o||0),M(d||0),el(!!m),ei(!!j),ea(x),W(!1))}catch(e){console.error("Error fetching data:",e),a===ef.current&&(k([]),el(!1),W(!1))}finally{a===ef.current&&(J(!1),t(!1))}},[t,n,O,B,X,eh,ed]);r.useEffect(()=>{l&&(l.current=eb)},[l,eb]);let ev=r.useRef(eb);r.useEffect(()=>{ev.current=eb},[eb]),r.useEffect(()=>{eb({includeStatus:!0})},[]),r.useEffect(()=>{eb({includeStatus:!1})},[O]),r.useEffect(()=>{eb({includeStatus:!0})},[n,B]),r.useEffect(()=>{eb({includeStatus:!0})},[ed,X,eh]),(0,r.useEffect)(()=>{let e=setInterval(()=>{ev.current&&ev.current({includeStatus:!0})},s);return()=>{clearInterval(e)}},[s]),(0,r.useEffect)(()=>{Z(1)},[ed]),(0,r.useEffect)(()=>{Z(1)},[n,B]),(0,r.useEffect)(()=>{$([]),ex(!0)},[ed]);let ew=e=>{let s="ascending";I.key===e&&"ascending"===I.direction&&(s="descending"),A({key:e,direction:s})},ey=e=>I.key===e?"ascending"===I.direction?" ↑":" ↓":"";r.useMemo(()=>{let e=N||[];return{active:e.filter(e=>z.active.includes(e.status)).length,finished:e.filter(e=>z.finished.includes(e.status)).length}},[N]);let eN=e=>X.length>0?X.includes(e):"all"===ed||z[ed].includes(e),ek=r.useMemo(()=>N,[N]),eC=r.useMemo(()=>I.key?[...ek].sort((e,s)=>e[I.key]<s[I.key]?"ascending"===I.direction?-1:1:e[I.key]>s[I.key]?"ascending"===I.direction?1:-1:0):ek,[ek,I]),eS=(O-1)*B,e_=R>0?Math.ceil(R/B):0,eL=R>0?Math.min(eS+eC.length,R):0,eE=e=>{if(X.includes(e)){let s=X.filter(s=>s!==e);0===s.length?(ex(!0),$([])):($(s),ex(!1))}else $([...X,e]),ex(!1);Z(1)};return(0,r.useEffect)(()=>{es(et)},[et]),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("div",{className:"flex flex-col space-y-1 mb-1",children:(0,a.jsxs)("div",{className:"flex flex-wrap items-center justify-between text-sm mb-1",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center",children:[(0,a.jsx)("span",{className:"mr-2 text-sm font-medium",children:"Statuses:"}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-2 items-center",children:[!P&&0===F&&!U&&(0,a.jsx)("span",{className:"text-gray-500 mr-2",children:"No jobs found"}),Object.entries(ee).map(e=>{let[s,t]=e;return(0,a.jsxs)("button",{onClick:()=>eE(s),className:"px-3 py-0.5 rounded-full flex items-center space-x-2 ".concat(eN(s)||X.includes(s)?(0,_.Cl)(s):"bg-gray-50 text-gray-600 hover:bg-gray-100"),children:[(0,a.jsx)("span",{children:s}),(0,a.jsx)("span",{className:"text-xs ".concat(eN(s)||X.includes(s)?"bg-white/50":"bg-gray-200"," px-1.5 py-0.5 rounded"),children:t})]},s)}),F>0&&(0,a.jsxs)("div",{className:"flex items-center ml-2 gap-2",children:[(0,a.jsx)("span",{className:"text-gray-500",children:"("}),(0,a.jsx)("button",{onClick:()=>{r.startTransition(()=>{eu("all"),$([]),ex(!0),Z(1)})},className:"text-sm font-medium ".concat("all"===ed&&eh?"text-purple-700 underline":"text-gray-600 hover:text-purple-700 hover:underline"),children:"show all jobs"}),(0,a.jsx)("span",{className:"text-gray-500 mx-1",children:"|"}),(0,a.jsx)("button",{onClick:()=>{r.startTransition(()=>{eu("active"),$([]),ex(!0),Z(1)})},className:"text-sm font-medium ".concat("active"===ed&&eh?"text-green-700 underline":"text-gray-600 hover:text-green-700 hover:underline"),children:"show all active jobs"}),(0,a.jsx)("span",{className:"text-gray-500 mx-1",children:"|"}),(0,a.jsx)("button",{onClick:()=>{r.startTransition(()=>{eu("finished"),$([]),ex(!0),Z(1)})},className:"text-sm font-medium ".concat("finished"===ed&&eh?"text-blue-700 underline":"text-gray-600 hover:text-blue-700 hover:underline"),children:"show all finished jobs"}),(0,a.jsx)("span",{className:"text-gray-500",children:")"})]})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[P&&(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)(c.Z,{size:15,className:"mt-0"}),(0,a.jsx)("span",{className:"ml-2 text-gray-500 text-sm",children:"Loading..."})]}),(0,a.jsxs)("button",{onClick:()=>{j&&j()},disabled:P,className:"text-sky-blue hover:text-sky-blue-bright flex items-center text-sm",children:[(0,a.jsx)(w.Z,{className:"h-4 w-4 mr-1.5"}),(0,a.jsx)("span",{children:"Refresh"})]})]})]})}),ej&&er&&0===eC.length&&!P&&!U&&(0,a.jsx)("div",{className:"mb-4 p-4 bg-gray-50 rounded-lg border",children:(0,a.jsxs)("div",{className:"flex flex-col items-center space-y-3",children:[(0,a.jsxs)("p",{className:"text-gray-700 text-center text-sm",children:["Job controller stopped.",(0,a.jsx)("br",{}),"Restart to check status."]}),(0,a.jsx)(o.z,{variant:"outline",size:"sm",onClick:eg,className:"text-sky-blue hover:text-sky-blue-bright",disabled:P||ec,children:ec?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(c.Z,{size:12,className:"mr-2"}),"Restarting..."]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(y.Z,{className:"h-4 w-4 mr-2"}),"Restart"]})})]})}),(0,a.jsx)(d.Zb,{children:(0,a.jsx)("div",{className:"overflow-x-auto rounded-lg",children:(0,a.jsxs)(u.iA,{className:"min-w-full",children:[(0,a.jsx)(u.xD,{children:(0,a.jsxs)(u.SC,{children:[(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ew("id"),children:["ID",ey("id")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ew("name"),children:["Name",ey("name")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ew("user"),children:["User",ey("user")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ew("workspace"),children:["Workspace",ey("workspace")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ew("submitted_at"),children:["Submitted",ey("submitted_at")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ew("job_duration"),children:["Duration",ey("job_duration")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ew("status"),children:["Status",ey("status")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ew("resources_str"),children:["Requested",ey("resources_str")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ew("infra"),children:["Infra",ey("infra")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ew("cluster"),children:["Resources",ey("cluster")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ew("recoveries"),children:["Recoveries",ey("recoveries")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ew("pool"),children:["Worker Pool",ey("pool")]}),(0,a.jsx)(u.ss,{children:"Details"}),(0,a.jsx)(u.ss,{children:"Logs"})]})}),(0,a.jsx)(u.RM,{children:P&&U?(0,a.jsx)(u.SC,{children:(0,a.jsx)(u.pj,{colSpan:12,className:"text-center py-6 text-gray-500",children:(0,a.jsxs)("div",{className:"flex justify-center items-center",children:[(0,a.jsx)(c.Z,{size:20,className:"mr-2"}),(0,a.jsx)("span",{children:"Loading..."})]})})}):eC.length>0?(0,a.jsx)(a.Fragment,{children:eC.map(e=>(0,a.jsxs)(r.Fragment,{children:[(0,a.jsxs)(u.SC,{children:[(0,a.jsx)(u.pj,{children:(0,a.jsx)(i(),{href:"/jobs/".concat(e.id),className:"text-blue-600",children:e.id})}),(0,a.jsx)(u.pj,{children:(0,a.jsx)(i(),{href:"/jobs/".concat(e.id),className:"text-blue-600",children:e.name})}),(0,a.jsx)(u.pj,{children:(0,a.jsx)(L.H,{username:e.user,userHash:e.user_hash})}),(0,a.jsx)(u.pj,{children:(0,a.jsx)(i(),{href:"/workspaces",className:"text-gray-700 hover:text-blue-600 hover:underline",children:e.workspace||"default"})}),(0,a.jsx)(u.pj,{children:T(e.submitted_at)}),(0,a.jsx)(u.pj,{children:(0,h.LU)(e.job_duration)}),(0,a.jsx)(u.pj,{children:(0,a.jsx)(_.OE,{status:e.status})}),(0,a.jsx)(u.pj,{children:e.requested_resources}),(0,a.jsx)(u.pj,{children:e.infra&&"-"!==e.infra?(0,a.jsx)(h.Md,{content:e.full_infra||e.infra,className:"text-sm text-muted-foreground",children:(0,a.jsxs)("span",{children:[(0,a.jsx)(i(),{href:"/infra",className:"text-blue-600 hover:underline",children:e.cloud||e.infra.split("(")[0].trim()}),e.infra.includes("(")&&(0,a.jsx)("span",{children:" "+(()=>{let s=x.MO.NAME_TRUNCATE_LENGTH,t=e.infra.substring(e.infra.indexOf("(")),a=t.substring(1,t.length-1);if(a.length<=s)return t;let r="".concat(a.substring(0,Math.floor((s-3)/2)),"...").concat(a.substring(a.length-Math.ceil((s-3)/2)));return"(".concat(r,")")})()})]})}):(0,a.jsx)("span",{children:e.infra||"-"})}),(0,a.jsx)(u.pj,{children:(0,a.jsx)(h.Md,{content:e.resources_str_full||e.resources_str,className:"text-sm text-muted-foreground",children:(0,a.jsx)("span",{children:e.resources_str})})}),(0,a.jsx)(u.pj,{children:e.recoveries}),(0,a.jsx)(u.pj,{children:(0,a.jsx)("div",{className:v?"blur-sm transition-all duration-300":"",children:v?"-":(0,h.os)(e.pool,e.pool_hash,b)})}),(0,a.jsx)(u.pj,{children:e.details?(0,a.jsx)(G,{text:e.details,rowId:e.id,expandedRowId:V,setExpandedRowId:Y}):"-"}),(0,a.jsx)(u.pj,{children:(0,a.jsx)(q,{jobParent:"/jobs",jobId:e.id,managed:!0,workspace:e.workspace})})]}),V===e.id&&(0,a.jsx)(K,{text:e.details,colSpan:13,innerRef:Q})]},e.task_job_id))}):(0,a.jsx)(u.SC,{children:(0,a.jsx)(u.pj,{colSpan:13,className:"text-center py-6",children:(0,a.jsxs)("div",{className:"flex flex-col items-center space-y-4",children:[en&&(0,a.jsxs)("div",{className:"flex flex-col items-center space-y-2",children:[(0,a.jsx)("p",{className:"text-gray-700",children:"The managed job controller is launching. It will be ready shortly."}),(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)(c.Z,{size:12,className:"mr-2"}),(0,a.jsx)("span",{className:"text-gray-500",children:"Launching..."})]})]}),!er&&!en&&(0,a.jsx)("p",{className:"text-gray-500",children:"No active jobs"}),!ej&&er&&(0,a.jsxs)("div",{className:"flex flex-col items-center space-y-3 px-4",children:[(0,a.jsx)("p",{className:"text-gray-700 text-center text-sm sm:text-base max-w-md",children:"The managed job controller has been stopped. Restart to check the latest job status."}),(0,a.jsx)(o.z,{variant:"outline",size:"sm",onClick:eg,className:"text-sky-blue hover:text-sky-blue-bright",disabled:P||ec,children:ec?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(c.Z,{size:12,className:"mr-2"}),"Restarting..."]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(y.Z,{className:"h-4 w-4 mr-2"}),"Restart Controller"]})})]})]})})})})]})})}),(0,a.jsx)("div",{className:"flex justify-end items-center py-2 px-4 text-sm text-gray-700",children:(0,a.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)("span",{className:"mr-2",children:"Rows per page:"}),(0,a.jsxs)("div",{className:"relative inline-block",children:[(0,a.jsxs)("select",{value:B,onChange:e=>{H(parseInt(e.target.value,10)),Z(1)},className:"py-1 pl-2 pr-6 appearance-none outline-none cursor-pointer border-none bg-transparent",style:{minWidth:"40px"},children:[(0,a.jsx)("option",{value:10,children:"10"}),(0,a.jsx)("option",{value:30,children:"30"}),(0,a.jsx)("option",{value:50,children:"50"}),(0,a.jsx)("option",{value:100,children:"100"}),(0,a.jsx)("option",{value:200,children:"200"})]}),(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4 text-gray-500 absolute right-0 top-1/2 transform -translate-y-1/2 pointer-events-none",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})]}),(0,a.jsx)("div",{children:R>0?"".concat(eS+1," – ").concat(eL," of ").concat(R):"0 – 0 of 0"}),(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{Z(e=>Math.max(e-1,1))},disabled:1===O||!eC||0===eC.length,className:"text-gray-500 h-8 w-8 p-0",children:(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-left",children:(0,a.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,a.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{e_>0&&O<e_&&Z(e=>e+1)},disabled:0===e_||O>=e_||!eC||0===eC.length,className:"text-gray-500 h-8 w-8 p-0",children:(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-right",children:(0,a.jsx)("path",{d:"M9 18l6-6-6-6"})})})]})]})}),(0,a.jsx)(C.cV,{isOpen:em.isOpen,onClose:()=>ep({...em,isOpen:!1}),onConfirm:em.onConfirm,title:em.title,message:em.message,confirmClassName:"bg-blue-600 hover:bg-blue-700 text-white"})]})}function q(e){let{withLabel:s=!1,jobParent:t,jobId:r,managed:n,workspace:i="default"}=e,c=(0,l.useRouter)(),o=(e,s)=>{e.preventDefault(),e.stopPropagation(),c.push({pathname:"".concat(t,"/").concat(r),query:{tab:s}})},d=function(e){let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e.preventDefault(),e.stopPropagation(),n)(0,m.jh)({jobId:parseInt(r),controller:s});else{let e=t.match(/\/clusters\/(.+)/);if(e){let s=e[1];(0,g.GH)({clusterName:s,jobIds:[r],workspace:i})}}};return(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(h.WH,{content:"View Job Logs",className:"capitalize text-sm text-muted-foreground",children:(0,a.jsxs)("button",{onClick:e=>o(e,"logs"),className:"text-sky-blue hover:text-sky-blue-bright font-medium inline-flex items-center h-8",children:[(0,a.jsx)(N.Z,{className:"w-4 h-4"}),s&&(0,a.jsx)("span",{className:"ml-1.5",children:"Logs"})]})},"logs"),(0,a.jsx)(h.WH,{content:"Download Job Logs",className:"capitalize text-sm text-muted-foreground",children:(0,a.jsxs)("button",{onClick:e=>d(e,!1),className:"text-sky-blue hover:text-sky-blue-bright font-medium inline-flex items-center h-8",children:[(0,a.jsx)(k.Z,{className:"w-4 h-4"}),s&&(0,a.jsx)("span",{className:"ml-1.5",children:"Download"})]})},"downloadlogs")]})}function H(e){let{clusterName:s,clusterJobData:t,loading:l,refreshClusterJobsOnly:n,userFilter:x=null,nameFilter:m=null,workspace:p="default"}=e,[j,f]=(0,r.useState)(null),[g,b]=(0,r.useState)({key:null,direction:"ascending"}),[v,y]=(0,r.useState)(1),[N,k]=(0,r.useState)(10),C=(0,r.useRef)(null),[S,E]=(0,r.useState)(null);(0,r.useEffect)(()=>{let e=e=>{j&&C.current&&!C.current.contains(e.target)&&f(null)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[j]);let R=r.useMemo(()=>{let e=t||[];return x&&"ALL_USERS"!==x&&(e=W(e,x)),m&&(e=J(e,m)),e},[t,x,m]);(0,r.useEffect)(()=>{JSON.stringify(t)!==JSON.stringify(S)&&E(t)},[t,S]);let D=r.useMemo(()=>g.key?[...R].sort((e,s)=>e[g.key]<s[g.key]?"ascending"===g.direction?-1:1:e[g.key]>s[g.key]?"ascending"===g.direction?1:-1:0):R,[R,g]),F=e=>{let s="ascending";g.key===e&&"ascending"===g.direction&&(s="descending"),b({key:e,direction:s})},M=e=>g.key===e?"ascending"===g.direction?" ↑":" ↓":"",I=Math.ceil(D.length/N),A=(v-1)*N,z=A+N,P=D.slice(A,z);return(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsxs)(d.Zb,{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between p-4",children:[(0,a.jsx)("h3",{className:"text-lg font-semibold",children:"Cluster Jobs"}),(0,a.jsx)("div",{className:"flex items-center",children:n&&(0,a.jsxs)("button",{onClick:n,disabled:l,className:"text-sky-blue hover:text-sky-blue-bright font-medium inline-flex items-center text-sm ml-2",children:[(0,a.jsx)(w.Z,{className:"w-4 h-4 mr-1"}),"Refresh Jobs"]})})]}),(0,a.jsxs)(u.iA,{children:[(0,a.jsx)(u.xD,{children:(0,a.jsxs)(u.SC,{children:[(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>F("id"),children:["ID",M("id")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>F("job"),children:["Name",M("job")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>F("user"),children:["User",M("user")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>F("workspace"),children:["Workspace",M("workspace")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>F("submitted_at"),children:["Submitted",M("submitted_at")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>F("job_duration"),children:["Duration",M("job_duration")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>F("status"),children:["Status",M("status")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>F("resources"),children:["Resources",M("resources")]}),(0,a.jsx)(u.ss,{className:"whitespace-nowrap",children:"Logs"})]})}),(0,a.jsx)(u.RM,{children:l?(0,a.jsx)(u.SC,{children:(0,a.jsx)(u.pj,{colSpan:9,className:"text-center py-12 text-gray-500",children:(0,a.jsxs)("div",{className:"flex justify-center items-center",children:[(0,a.jsx)(c.Z,{size:24,className:"mr-2"}),(0,a.jsx)("span",{children:"Loading cluster jobs..."})]})})}):P.length>0?P.map(e=>(0,a.jsxs)(r.Fragment,{children:[(0,a.jsxs)(u.SC,{className:j===e.id?"selected-row":"",children:[(0,a.jsx)(u.pj,{children:(0,a.jsx)(i(),{href:"/clusters/".concat(s,"/").concat(e.id),className:"text-blue-600",children:e.id})}),(0,a.jsx)(u.pj,{children:(0,a.jsx)(i(),{href:"/clusters/".concat(s,"/").concat(e.id),className:"text-blue-600",children:(0,a.jsx)(G,{text:e.job||"Unnamed job",rowId:e.id,expandedRowId:j,setExpandedRowId:f})})}),(0,a.jsx)(u.pj,{children:(0,a.jsx)(L.H,{username:e.user,userHash:e.user_hash})}),(0,a.jsx)(u.pj,{children:(0,a.jsx)(i(),{href:"/workspaces",className:"text-gray-700 hover:text-blue-600 hover:underline",children:e.workspace||"default"})}),(0,a.jsx)(u.pj,{children:T(e.submitted_at)}),(0,a.jsx)(u.pj,{children:(0,h.LU)(e.job_duration)}),(0,a.jsx)(u.pj,{children:(0,a.jsx)(_.OE,{status:e.status})}),(0,a.jsx)(u.pj,{children:e.resources}),(0,a.jsx)(u.pj,{className:"flex content-center items-center",children:(0,a.jsx)(q,{jobParent:"/clusters/".concat(s),jobId:e.id,managed:!1,workspace:p})})]}),j===e.id&&(0,a.jsx)(K,{text:e.job||"Unnamed job",colSpan:9,innerRef:C})]},e.id)):(0,a.jsx)(u.SC,{children:(0,a.jsx)(u.pj,{colSpan:8,className:"text-center py-6 text-gray-500",children:"No jobs found"})})})]})]}),D&&D.length>0&&(0,a.jsx)("div",{className:"flex justify-end items-center py-2 px-4 text-sm text-gray-700",children:(0,a.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)("span",{className:"mr-2",children:"Rows per page:"}),(0,a.jsxs)("div",{className:"relative inline-block",children:[(0,a.jsxs)("select",{value:N,onChange:e=>{k(parseInt(e.target.value,10)),y(1)},className:"py-1 pl-2 pr-6 appearance-none outline-none cursor-pointer border-none bg-transparent",style:{minWidth:"40px"},children:[(0,a.jsx)("option",{value:5,children:"5"}),(0,a.jsx)("option",{value:10,children:"10"}),(0,a.jsx)("option",{value:20,children:"20"}),(0,a.jsx)("option",{value:50,children:"50"})]}),(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4 text-gray-500 absolute right-0 top-1/2 transform -translate-y-1/2 pointer-events-none",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})]}),(0,a.jsxs)("div",{children:[A+1," – ",Math.min(z,D.length)," of"," ",D.length]}),(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{y(e=>Math.max(e-1,1))},disabled:1===v,className:"text-gray-500 h-8 w-8 p-0",children:(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-left",children:(0,a.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,a.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{y(e=>Math.min(e+1,I))},disabled:v===I||0===I,className:"text-gray-500 h-8 w-8 p-0",children:(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-right",children:(0,a.jsx)("path",{d:"M9 18l6-6-6-6"})})})]})]})})]})}function K(e){let{text:s,colSpan:t,innerRef:r}=e;return(0,a.jsx)(u.SC,{className:"expanded-details",children:(0,a.jsx)(u.pj,{colSpan:t,children:(0,a.jsx)("div",{className:"p-4 bg-gray-50 rounded-md border border-gray-200",ref:r,children:(0,a.jsx)("div",{className:"flex justify-between items-start",children:(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("p",{className:"text-sm font-medium text-gray-900",children:"Full Details"}),(0,a.jsx)("p",{className:"mt-1 text-sm text-gray-700",style:{whiteSpace:"pre-wrap"},children:s})]})})})})})}function G(e){let{text:s,rowId:t,expandedRowId:l,setExpandedRowId:n}=e,i=s||"",c=i.length>50,o=l===t,d=c?"".concat(i.substring(0,50)):i,u=(0,r.useRef)(null);return(0,a.jsxs)("div",{className:"truncated-details relative max-w-full flex items-center",children:[(0,a.jsx)("span",{className:"truncate",children:d}),c&&(0,a.jsx)("button",{ref:u,type:"button",onClick:e=>{e.preventDefault(),e.stopPropagation(),n(o?null:t)},className:"text-blue-600 hover:text-blue-800 font-medium ml-1 flex-shrink-0","data-button-type":"show-more-less",children:o?"... show less":"... show more"})]})}function V(e){let{refreshInterval:s,setLoading:t,refreshDataRef:l}=e,[n,o]=(0,r.useState)([]),[x,j]=(0,r.useState)({key:null,direction:"ascending"}),[f,g]=(0,r.useState)(!1),[b,v]=(0,r.useState)(!0),[w,y]=(0,r.useState)(1),[N,k]=(0,r.useState)(10),C=r.useCallback(async()=>{g(!0),t(!0);try{let{pools:e=[]}=await p.default.get(m.vs,[{}])||{};o(e),v(!1)}catch(e){console.error("Error fetching pools data:",e),o([]),v(!1)}finally{g(!1),t(!1)}},[t]);r.useEffect(()=>{l&&(l.current=C)},[l,C]),(0,r.useEffect)(()=>{o([]);let e=!0;C();let t=setInterval(()=>{e&&C()},s);return()=>{e=!1,clearInterval(t)}},[s,C]);let S=e=>{let s="ascending";x.key===e&&"ascending"===x.direction&&(s="descending"),j({key:e,direction:s})},L=e=>x.key===e?"ascending"===x.direction?" ↑":" ↓":"",E=r.useMemo(()=>x.key?[...n].sort((e,s)=>e[x.key]<s[x.key]?"ascending"===x.direction?-1:1:e[x.key]>s[x.key]?"ascending"===x.direction?1:-1:0):n,[n,x]),R=Math.ceil(E.length/N),D=(w-1)*N,F=D+N,M=E.slice(D,F),I=e=>{if(!e||!e.replica_info||0===e.replica_info.length)return"0 (target: 0)";let s=e.replica_info.filter(e=>"READY"===e.status).length,t=e.target_num_replicas||0;return"".concat(s," (target: ").concat(t,")")},A=e=>{let{jobCounts:s}=e;return(0,a.jsx)(h.x9,{jobCounts:s,getStatusStyle:_.Cl})},z=e=>{let{replicaInfo:s}=e;return(0,a.jsx)(h.Kl,{replicaInfo:s})};return(0,a.jsxs)(d.Zb,{children:[(0,a.jsx)("div",{className:"overflow-x-auto rounded-lg",children:(0,a.jsxs)(u.iA,{className:"min-w-full table-fixed",children:[(0,a.jsx)(u.xD,{children:(0,a.jsxs)(u.SC,{children:[(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap w-32",onClick:()=>S("name"),children:["Pool",L("name")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap w-40",onClick:()=>S("job_counts"),children:["Jobs",L("job_counts")]}),(0,a.jsx)(u.ss,{className:"whitespace-nowrap w-20",children:"Workers"}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap w-36",onClick:()=>S("requested_resources_str"),children:["Worker Details",L("requested_resources_str")]}),(0,a.jsxs)(u.ss,{className:"sortable whitespace-nowrap w-40",onClick:()=>S("requested_resources_str"),children:["Worker Resources",L("requested_resources_str")]})]})}),(0,a.jsx)(u.RM,{children:f&&b?(0,a.jsx)(u.SC,{children:(0,a.jsx)(u.pj,{colSpan:5,className:"text-center py-6 text-gray-500",children:(0,a.jsxs)("div",{className:"flex justify-center items-center",children:[(0,a.jsx)(c.Z,{size:20,className:"mr-2"}),(0,a.jsx)("span",{children:"Loading..."})]})})}):M.length>0?M.map(e=>(0,a.jsxs)(u.SC,{children:[(0,a.jsx)(u.pj,{children:(0,a.jsx)(i(),{href:"/jobs/pools/".concat(e.name),className:"text-blue-600 hover:text-blue-800",children:e.name})}),(0,a.jsx)(u.pj,{children:(0,a.jsx)(A,{jobCounts:e.jobCounts})}),(0,a.jsx)(u.pj,{children:I(e)}),(0,a.jsx)(u.pj,{children:(0,a.jsx)(z,{replicaInfo:e.replica_info})}),(0,a.jsx)(u.pj,{children:e.requested_resources_str||"-"})]},e.name)):(0,a.jsx)(u.SC,{children:(0,a.jsx)(u.pj,{colSpan:5,className:"text-center py-6 text-gray-500",children:"No pools found"})})})]})}),M.length>0&&R>1&&(0,a.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-t border-gray-200",children:[(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)("span",{className:"text-sm text-gray-700",children:"Rows per page:"}),(0,a.jsxs)("select",{value:N,onChange:e=>{k(parseInt(e.target.value,10)),y(1)},className:"border border-gray-300 rounded px-2 py-1 text-sm",children:[(0,a.jsx)("option",{value:5,children:"5"}),(0,a.jsx)("option",{value:10,children:"10"}),(0,a.jsx)("option",{value:25,children:"25"}),(0,a.jsx)("option",{value:50,children:"50"})]})]}),(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsxs)("span",{className:"text-sm text-gray-700",children:[D+1,"-",Math.min(F,E.length)," of"," ",E.length]}),(0,a.jsx)("button",{onClick:()=>{y(e=>Math.max(e-1,1))},disabled:1===w,className:"px-2 py-1 text-sm border border-gray-300 rounded disabled:opacity-50 disabled:cursor-not-allowed hover:bg-gray-50",children:"Previous"}),(0,a.jsx)("button",{onClick:()=>{y(e=>Math.min(e+1,R))},disabled:w===R,className:"px-2 py-1 text-sm border border-gray-300 rounded disabled:opacity-50 disabled:cursor-not-allowed hover:bg-gray-50",children:"Next"})]})]})]})}}}]);
|
skypilot_nightly-1.0.0.dev20250919/sky/dashboard/out/_next/static/chunks/8969-a39efbadcd9fde80.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8969],{68969:function(e,t,o){o.d(t,{Ce:function(){return p},NJ:function(){return h},UA:function(){return u},aT:function(){return i},getManagedJobs:function(){return l},jh:function(){return b},vs:function(){return d}});var r=o(67294),a=o(15821),n=o(93225),c=o(6378),s=o(47145);async function l(e){var t;let{allUsers:o=!0,skipFinished:r=!1,nameMatch:a,userMatch:c,workspaceMatch:l,poolMatch:i,page:d,limit:u,statuses:h}=e||{},p={all_users:o,verbose:!0,skip_finished:r};void 0!==a&&(p.name_match=a),void 0!==c&&(p.user_match=c),void 0!==l&&(p.workspace_match=l),void 0!==i&&(p.pool_match=i),void 0!==d&&(p.page=d),void 0!==u&&(p.limit=u),void 0!==h&&h.length>0&&(p.statuses=h);let b=await s.x.post("/jobs/queue/v2",p);if(!b.ok)throw Error("Failed to schedule jobs query: ".concat(b.status));let f=b.headers.get("X-Skypilot-Request-ID"),g=await s.x.get("/api/get?request_id=".concat(f));if(200!==g.status){if(500===g.status)try{let e=await g.json();if(e.detail&&e.detail.error)try{let t=JSON.parse(e.detail.error);if(t.type&&t.type===n.iW)throw Error("CLUSTER_NOT_UP")}catch(e){console.error("Error parsing JSON:",e)}}catch(e){console.error("Error parsing JSON:",e)}throw Error("Jobs result not OK: ".concat(g.status))}let m=await g.json(),_=m.return_value?JSON.parse(m.return_value):[],y=Array.isArray(_)?_:(null==_?void 0:_.jobs)||[],w=Array.isArray(_)?y.length:null!==(t=null==_?void 0:_.total)&&void 0!==t?t:y.length,j=(null==_?void 0:_.total_no_filter)||w,v=(null==_?void 0:_.status_counts)||{};return{jobs:y.map(e=>{var t;let o=0;e.end_at&&e.submitted_at?o=e.end_at-e.submitted_at:e.submitted_at&&(o=Date.now()/1e3-e.submitted_at);let r=[];e.submitted_at&&r.push({type:"PENDING",timestamp:e.submitted_at}),e.start_at&&r.push({type:"RUNNING",timestamp:e.start_at}),e.end_at&&r.push({type:e.status,timestamp:e.end_at});let a="",n="",c="",s="",l="";try{if(a=e.cloud||"",c=e.cluster_resources,n=e.region||"",a&&(s=a,n&&(s+="/".concat(n))),l=s,e.accelerators){let t=Object.entries(e.accelerators).map(e=>{let[t,o]=e;return"".concat(o,"x").concat(t)}).join(", ");t&&(l+=" (".concat(t,")"))}}catch(t){c=e.cluster_resources}return{id:e.job_id,task_job_id:e._job_id,task:e.task_name,name:e.job_name,job_duration:e.job_duration,total_duration:o,workspace:e.workspace,status:e.status,requested_resources:e.resources,resources_str:c,resources_str_full:e.cluster_resources_full||c,cloud:a,region:e.region,infra:s,full_infra:l,recoveries:e.recovery_count,details:e.details||e.failure_reason,user:e.user_name,user_hash:e.user_hash,submitted_at:e.submitted_at?new Date(1e3*e.submitted_at):null,events:r,dag_yaml:e.user_yaml,entrypoint:e.entrypoint,git_commit:(null===(t=e.metadata)||void 0===t?void 0:t.git_commit)||"-",pool:e.pool,pool_hash:e.pool_hash,current_cluster_name:e.current_cluster_name,job_id_on_pool_cluster:e.job_id_on_pool_cluster}}),total:w,totalNoFilter:j,controllerStopped:!1,statusCounts:v}}async function i(e){let{allUsers:t=!0,nameMatch:o,userMatch:r,workspaceMatch:a,poolMatch:n,page:c=1,limit:s=10,useClientPagination:i=!0}=e||{};try{if(!i)return await l(e);let d=await l({allUsers:t,nameMatch:o,userMatch:r,workspaceMatch:a,poolMatch:n});if(d.controllerStopped||!d.jobs)return d;let u=d.jobs,h=u.length,p=(c-1)*s;return{jobs:u.slice(p,p+s),total:h,controllerStopped:!1}}catch(e){return console.error("Error fetching managed job data with client pagination:",e),{jobs:[],total:0,controllerStopped:!1}}}async function d(){try{let e=(await s.x.post("/jobs/pool_status",{pool_names:null})).headers.get("X-Skypilot-Request-ID"),t=await s.x.get("/api/get?request_id=".concat(e));if(500===t.status){try{let e=await t.json();if(e.detail&&e.detail.error)try{let t=JSON.parse(e.detail.error);if(t.type&&t.type===n.iW)return{pools:[],controllerStopped:!0}}catch(e){console.error("Failed to parse error JSON:",e)}}catch(e){console.error("Failed to parse response JSON:",e)}throw Error("Server error")}let o=await t.json(),r=o.return_value?JSON.parse(o.return_value):[],a={jobs:[]};try{let e=await l({allUsers:!0,skipFinished:!0});e.controllerStopped||(a=e)}catch(e){console.warn("Failed to fetch jobs for pool job counts:",e)}let c={},i=["SUCCEEDED","FAILED","FAILED_SETUP","FAILED_PRECHECKS","FAILED_NO_RESOURCE","FAILED_CONTROLLER","CANCELLED"];return a.jobs&&Array.isArray(a.jobs)&&a.jobs.forEach(e=>{let t=e.pool,o=e.status;t&&!i.includes(o)&&(c[t]||(c[t]={}),c[t][o]=(c[t][o]||0)+1)}),{pools:r.map(e=>({...e,jobCounts:c[e.name]||{}})),controllerStopped:!1}}catch(e){throw console.error("Error fetching pools:",e),e}}function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,[o,a]=(0,r.useState)(null),[n,s]=(0,r.useState)(!0);return(0,r.useEffect)(()=>{(async function(){if(e)try{var t;s(!0);let o=await c.default.get(l,[{allUsers:!0}]),r=null==o?void 0:null===(t=o.jobs)||void 0===t?void 0:t.find(t=>String(t.id)===String(e));r?a({jobs:[r],controllerStopped:o.controllerStopped||!1}):a({jobs:[],controllerStopped:o.controllerStopped||!1})}catch(e){console.error("Error fetching single managed job data:",e),a({jobs:[],controllerStopped:!1})}finally{s(!1)}})()},[e,t]),{jobData:o,loading:n}}async function h(e){let t,{jobId:o,controller:r=!1,signal:c,onNewLog:s}=e,l=Date.now(),i=new Promise(e=>{let o=()=>{let r=Date.now()-l;r>=3e4?e({timeout:!0}):t=setTimeout(o,3e4-r)};t=setTimeout(o,3e4)}),d=window.location.origin,u="".concat(d).concat(n.f4),h=(async()=>{try{let e=(await fetch("".concat(u,"/jobs/logs"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({controller:r,follow:!1,job_id:o,tail:1e4}),...c?{signal:c}:{}})).body.getReader();try{for(;;){let{done:t,value:o}=await e.read();if(t)break;l=Date.now();let r=new TextDecoder().decode(o);s(r)}}finally{if(!c||!c.aborted)try{e.cancel()}catch(e){"AbortError"!==e.name&&console.warn("Error canceling reader:",e)}t&&clearTimeout(t)}return{timeout:!1}}catch(e){if(t&&clearTimeout(t),"AbortError"===e.name)return{timeout:!1};throw e}})(),p=await Promise.race([h,i]);if(t&&clearTimeout(t),p.timeout){(0,a.C)("Log request for job ".concat(o," timed out after ").concat(30,"s of inactivity"),"warning");return}}async function p(e,t,o){let r="",c="",s="",l={};if("restartcontroller"===e)r="Restarting",c="restarted",s="jobs/queue/v2",l={all_users:!0,refresh:!0},t="controller";else throw Error("Invalid action: ".concat(e));(0,a.C)("".concat(r," job ").concat(t,"..."),"info");let i=window.location.origin,d="".concat(i).concat(n.f4);try{try{let e=(await fetch("".concat(d,"/").concat(s),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(l)})).headers.get("X-Skypilot-Request-ID"),i=await fetch("".concat(d,"/api/get?request_id=").concat(e));if(200===i.status)(0,a.C)("Job ".concat(t," ").concat(c," successfully."),"success");else if(500===i.status)try{let e=await i.json();if(e.detail&&e.detail.error)try{let c=JSON.parse(e.detail.error);c.type&&c.type===n.Bo?(0,a.C)("".concat(r," job ").concat(t," is not supported!"),"error",1e4):c.type&&c.type===n.mF?(0,a.C)("Cluster ".concat(o," does not exist."),"error"):c.type&&c.type===n.iW?(0,a.C)("Cluster ".concat(o," is not up."),"error"):(0,a.C)("".concat(r," job ").concat(t," failed: ").concat(c.type),"error")}catch(o){(0,a.C)("".concat(r," job ").concat(t," failed: ").concat(e.detail.error),"error")}else(0,a.C)("".concat(r," job ").concat(t," failed with no details."),"error")}catch(e){(0,a.C)("".concat(r," job ").concat(t," failed with parse error."),"error")}else(0,a.C)("".concat(r," job ").concat(t," failed with status ").concat(i.status,"."),"error")}catch(e){console.error("Fetch error:",e),(0,a.C)("Network error ".concat(r," job ").concat(t,": ").concat(e.message),"error")}}catch(e){console.error("Error in handleStop:",e),(0,a.C)("Critical error ".concat(r," job ").concat(t,": ").concat(e.message),"error")}}async function b(e){let{jobId:t=null,name:o=null,controller:r=!1}=e;try{let e=await s.x.fetch("/jobs/download_logs",{job_id:t,name:o,controller:r,refresh:!1}),c=Object.values(e||{});if(!c.length){(0,a.C)("No logs found to download.","warning");return}let l=window.location.origin,i="".concat(l).concat(n.f4,"/download"),d=await fetch("".concat(i,"?relative=items"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({folder_paths:c})});if(!d.ok){let e=await d.text();throw Error("Download failed: ".concat(d.status," ").concat(e))}let u=await d.blob(),h=window.URL.createObjectURL(u),p=document.createElement("a"),b=new Date().toISOString().replace(/[:.]/g,"-"),f=t?"job-".concat(t):o?"job-".concat(o):"job";p.href=h,p.download="managed-".concat(f,"-").concat(r?"controller-logs":"logs","-").concat(b,".zip"),document.body.appendChild(p),p.click(),p.remove(),window.URL.revokeObjectURL(h)}catch(e){console.error("Error downloading managed job logs:",e),(0,a.C)("Error downloading managed job logs: ".concat(e.message),"error")}}},15821:function(e,t,o){o.d(t,{C:function(){return r}});function r(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info",o=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 a=document.createElement("div");switch(a.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":a.className+=" bg-green-100 border-green-500 text-green-800";break;case"error":a.className+=" bg-red-100 border-red-500 text-red-800";break;case"warning":a.className+=" bg-yellow-100 border-yellow-500 text-yellow-800";break;default:a.className+=" bg-blue-100 border-blue-500 text-blue-800"}return a.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(a),a.querySelector("button").addEventListener("click",()=>{r.removeChild(a)}),setTimeout(()=>{r.contains(a)&&r.removeChild(a)},o),a}},6378:function(e,t,o){o.r(t),o.d(t,{DashboardCache:function(){return a},dashboardCache:function(){return n}});let r=o(51214).ej.DEFAULT_TTL;class a{setPreloader(e){this.preloader=e}async get(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=o.ttl||r,n=!1!==o.refreshOnAccess,c=this._generateKey(e,t),s=e.name||"anonymous",l=this.cache.get(c),i=Date.now();if(l&&i-l.lastUpdated<a){let o=Math.round((i-l.lastUpdated)/1e3);if(this._debug("Cache HIT for ".concat(s," (age: ").concat(o,"s, TTL: ").concat(Math.round(a/1e3),"s)")),n&&(this.cache.set(c,{data:l.data,lastUpdated:i}),this._debug("Cache TTL refreshed for ".concat(s))),!this.backgroundJobs.has(c)){var d;(null===(d=this.preloader)||void 0===d?void 0:d.wasRecentlyPreloaded(e,t))?this._debug("Skipping background refresh for ".concat(s," - recently preloaded")):this._refreshInBackground(e,t,c)}return l.data}try{let o=await e(...t);return this.cache.set(c,{data:o,lastUpdated:i}),o}catch(e){if(l)return console.warn("Failed to fetch fresh data for ".concat(c,", returning stale data:"),e),l.data;throw e}}invalidate(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=this._generateKey(e,t);this.cache.delete(o),this.backgroundJobs.delete(o)}invalidateFunction(e){let t=e.name||"anonymous",o=[];for(let e of this.cache.keys())e.startsWith("".concat(t,"_"))&&o.push(e);o.forEach(e=>{this.cache.delete(e),this.backgroundJobs.delete(e)})}clear(){this.cache.clear(),this.backgroundJobs.clear()}getStats(){return{cacheSize:this.cache.size,backgroundJobs:this.backgroundJobs.size,keys:Array.from(this.cache.keys())}}getDetailedStats(){let e=Date.now(),t=[];for(let[o,r]of this.cache.entries()){let a=e-r.lastUpdated;t.push({key:o,age:Math.round(a/1e3),lastUpdated:new Date(r.lastUpdated).toISOString(),hasBackgroundJob:this.backgroundJobs.has(o)})}return{cacheSize:this.cache.size,backgroundJobs:this.backgroundJobs.size,entries:t.sort((e,t)=>e.age-t.age)}}setDebugMode(e){this.debugMode=e}_debug(e){for(var t=arguments.length,o=Array(t>1?t-1:0),r=1;r<t;r++)o[r-1]=arguments[r];this.debugMode&&console.log("[DashboardCache] ".concat(e),...o)}_refreshInBackground(e,t,o){this.backgroundJobs.set(o,!0),e(...t).then(e=>{this.cache.set(o,{data:e,lastUpdated:Date.now()})}).catch(e=>{console.warn("Background refresh failed for ".concat(o,":"),e)}).finally(()=>{this.backgroundJobs.delete(o)})}_generateKey(e,t){let o=function(e){let t=5381;for(let o=0;o<e.length;o++)t=(t<<5)+t+e.charCodeAt(o);return t>>>0}(e.toString()),r=t.length>0?JSON.stringify(t):"";return"".concat(o,"_").concat(r)}constructor(){this.cache=new Map,this.backgroundJobs=new Map,this.debugMode=!1,this.preloader=null}}let n=new a;t.default=n}}]);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9826,2350,7325],{94966:function(e,t,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/clusters/[cluster]/[job]",function(){return s(50190)}])},27325:function(e,t,s){"use strict";s.d(t,{Z:function(){return a}});/**
|
|
2
|
+
* @license lucide-react v0.407.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/let a=(0,s(60998).Z)("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},16826:function(e,t,s){"use strict";s.d(t,{Z:function(){return a}});/**
|
|
7
|
+
* @license lucide-react v0.407.0 - ISC
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the ISC license.
|
|
10
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/let a=(0,s(60998).Z)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]])},13626:function(e,t,s){"use strict";s.d(t,{Z:function(){return a}});/**
|
|
12
|
+
* @license lucide-react v0.407.0 - ISC
|
|
13
|
+
*
|
|
14
|
+
* This source code is licensed under the ISC license.
|
|
15
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
+
*/let a=(0,s(60998).Z)("RotateCw",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]])},99307:function(e,t,s){"use strict";s.d(t,{Cl:function(){return l},OE:function(){return d}});var a=s(85893);s(67294);var r=s(55739),n=s(36989),c=s(53850);let l=e=>{switch(e){case"LAUNCHING":return"bg-blue-100 text-sky-blue";case"RUNNING":case"IN_USE":case"READY":return"bg-green-50 text-green-700";case"STOPPED":return"bg-yellow-100 text-yellow-800";case"TERMINATED":case"PENDING":case"UNKNOWN":default:return"bg-gray-100 text-gray-800";case"SUCCEEDED":case"PROVISIONING":case"CONTROLLER_INIT":case"REPLICA_INIT":return"bg-blue-50 text-blue-700";case"FAILED":case"FAILED_PRECHECKS":case"FAILED_NO_RESOURCE":case"FAILED_CONTROLLER":case"FAILED_INITIAL_DELAY":case"FAILED_PROBING":case"FAILED_PROVISION":case"FAILED_CLEANUP":case"CONTROLLER_FAILED":return"bg-red-50 text-red-700";case"CANCELLED":case"CANCELLING":case"NOT_READY":return"bg-yellow-50 text-yellow-700";case"RECOVERING":case"SHUTTING_DOWN":return"bg-orange-50 text-orange-700";case"SUBMITTED":return"bg-indigo-50 text-indigo-700";case"STARTING":return"bg-cyan-50 text-cyan-700";case"FAILED_SETUP":return"bg-pink-50 text-pink-700";case"PREEMPTED":case"NO_REPLICA":return"bg-purple-50 text-purple-700"}},o=e=>{switch(e){case"LAUNCHING":case"STARTING":case"PROVISIONING":case"SHUTTING_DOWN":return(0,a.jsx)(r.Z,{size:12,className:"w-3 h-3 mr-1"});case"RUNNING":case"IN_USE":default:return(0,a.jsx)(c.W2,{className:"w-3 h-3 mr-1"});case"STOPPED":case"PREEMPTED":return(0,a.jsx)(c.fp,{className:"w-3 h-3 mr-1"});case"TERMINATED":case"FAILED":case"CANCELLED":case"FAILED_INITIAL_DELAY":case"FAILED_PROBING":case"FAILED_PROVISION":case"FAILED_CLEANUP":case"CONTROLLER_FAILED":case"UNKNOWN":return(0,a.jsx)(c.Ps,{className:"w-3 h-3 mr-1"});case"SUCCEEDED":return(0,a.jsx)(c.Ye,{className:"w-3 h-3 mr-1"});case"PENDING":case"RECOVERING":case"SUBMITTED":case"CANCELLING":case"FAILED_SETUP":case"FAILED_PRECHECKS":case"FAILED_NO_RESOURCE":case"FAILED_CONTROLLER":case"READY":case"NOT_READY":case"CONTROLLER_INIT":case"REPLICA_INIT":case"NO_REPLICA":return(0,a.jsx)(c.J$,{className:"w-3 h-3 mr-1"})}},i=e=>{let t=l(e),s=o(e);return(0,a.jsxs)("span",{className:"".concat("inline-flex items-center px-2 py-1 rounded-full text-sm"," ").concat(t),children:[s,e]})},d=e=>{let{status:t}=e;return(0,a.jsx)(n.WH,{content:t,className:"text-muted-foreground text-sm",children:(0,a.jsx)("span",{children:i(t)})})}},20546:function(e,t,s){"use strict";s.d(t,{H:function(){return d}});var a=s(85893);s(67294);var r=s(41664),n=s.n(r),c=s(45697),l=s.n(c);function o(e){return!!e&&"string"==typeof e&&e.toLowerCase().startsWith("sa-")}let i=()=>(0,a.jsx)("span",{className:"px-2 py-0.5 text-xs bg-blue-100 text-blue-700 rounded font-medium ml-1",children:"SA"}),d=e=>{let{username:t,userHash:s,className:r="flex items-center gap-1",linkClassName:c="text-gray-700 hover:text-blue-600 hover:underline",showBadge:l=!0}=e,d=o(s),u=o(s)?"/users?tab=service-accounts":"/users";return(0,a.jsxs)("div",{className:r,children:[(0,a.jsx)(n(),{href:u,className:c,children:t}),l&&d&&(0,a.jsx)(i,{})]})};d.propTypes={username:l().string.isRequired,userHash:l().string,className:l().string,linkClassName:l().string,showBadge:l().bool}},37673:function(e,t,s){"use strict";s.d(t,{Ol:function(){return i},Zb:function(){return o},aY:function(){return h},ll:function(){return d}});var a=s(85893),r=s(67294),n=s(45697),c=s.n(n),l=s(32350);let o=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",s),...n,children:r})});o.displayName="Card",o.propTypes={className:c().string,children:c().node};let i=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("flex flex-col space-y-1.5 p-6",s),...n,children:r})});i.displayName="CardHeader",i.propTypes={className:c().string,children:c().node};let d=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("h3",{ref:t,className:(0,l.cn)("text-2xl font-semibold leading-none tracking-tight",s),...n,children:r})});d.displayName="CardTitle",d.propTypes={className:c().string,children:c().node};let u=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("p",{ref:t,className:(0,l.cn)("text-sm text-muted-foreground",s),...n,children:r})});u.displayName="CardDescription",u.propTypes={className:c().string,children:c().node};let h=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("p-6 pt-0",s),...n,children:r})});h.displayName="CardContent",h.propTypes={className:c().string,children:c().node};let m=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("flex items-center p-6 pt-0",s),...n,children:r})});m.displayName="CardFooter",m.propTypes={className:c().string,children:c().node}},47145:function(e,t,s){"use strict";s.d(t,{x:function(){return r}});var a=s(93225);let r={fetch:async function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"POST",r=window.location.origin,n="".concat(r).concat(a.f4).concat(e),c=await fetch(n,{method:s,headers:"POST"===s?{"Content-Type":"application/json"}:{},body:"POST"===s?JSON.stringify(t):void 0}),l=c.headers.get("X-Skypilot-Request-ID")||c.headers.get("X-Request-ID"),o=await fetch("".concat(r).concat(a.f4,"/api/get?request_id=").concat(l)),i=await o.json();return i.return_value?JSON.parse(i.return_value):[]},post:async(e,t)=>{let s=window.location.origin,r="".concat(s).concat(a.f4).concat(e);return await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})},stream:async(e,t,s)=>{let a=(await r.post(e,t)).body.getReader();try{for(;;){let{done:e,value:t}=await a.read();if(e)break;let r=new TextDecoder().decode(t);s(r)}}catch(e){throw console.error("Error in stream:",e),e}},get:async e=>{let t=window.location.origin,s="".concat(t).concat(a.f4).concat(e);return await fetch(s)}}},23266:function(e,t,s){"use strict";s.d(t,{GH:function(){return h},QL:function(){return f},Sl:function(){return u},getClusters:function(){return i},uR:function(){return d}});var a=s(67294),r=s(15821),n=s(47145),c=s(93225),l=s(6378);let o={UP:"RUNNING",STOPPED:"STOPPED",INIT:"LAUNCHING",null:"TERMINATED"};async function i(){let{clusterNames:e=null}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{return(await n.x.fetch("/status",{cluster_names:e,all_users:!0,include_credentials:!1})).map(e=>{let t="",s=t=e.zone?e.zone:e.region;return t&&t.length>25&&(t=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15;if(!e||e.length<=t)return e;if(t<=3)return"...";let s=Math.floor((t-3)/2),a=s+(t-3)%2;return 0===s?e.substring(0,a)+"...":e.substring(0,a)+"..."+e.substring(e.length-s)}(t,25)),{status:o[e.status],cluster:e.name,user:e.user_name,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:e.cloud,region:e.region,infra:t?e.cloud+" ("+t+")":e.cloud,full_infra:s?"".concat(e.cloud," (").concat(s,")"):e.cloud,cpus:e.cpus,mem:e.memory,gpus:e.accelerators,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:new Date(1e3*e.launched_at),num_nodes:e.nodes,workspace:e.workspace,autostop:e.autostop,last_event:e.last_event,to_down:e.to_down,jobs:[],command:e.last_creation_command||e.last_use,task_yaml:e.last_creation_yaml||"{}",events:[{time:new Date(1e3*e.launched_at),event:"Cluster created."}]}})}catch(e){return console.error("Error fetching clusters:",e),[]}}async function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;try{let t={days:30,dashboard_summary_response:!0};e&&(t.cluster_hashes=[e]);let s=await n.x.fetch("/cost_report",t);console.log("Raw cluster history data:",s);let a=s.map(e=>{let t="Unknown";e.cloud?t=e.cloud:e.resources&&e.resources.cloud&&(t=e.resources.cloud);let s=e.user_name||"-";return{status:e.status?o[e.status]:"TERMINATED",cluster:e.name,user:s,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:t,region:"",infra:t,full_infra:t,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:e.launched_at?new Date(1e3*e.launched_at):null,num_nodes:e.num_nodes||1,duration:e.duration,total_cost:e.total_cost,workspace:e.workspace||"default",autostop:-1,last_event:e.last_event,to_down:!1,usage_intervals:e.usage_intervals,command:e.last_creation_command||"",task_yaml:e.last_creation_yaml||"{}",events:[{time:e.launched_at?new Date(1e3*e.launched_at):new Date,event:"Cluster created."}]}});return console.log("Processed cluster history data:",a),a}catch(e){return console.error("Error fetching cluster history:",e),[]}}async function u(e){let{clusterName:t,jobId:s,onNewLog:a,workspace:c}=e;try{await n.x.stream("/logs",{follow:!1,cluster_name:t,job_id:s,tail:1e4,override_skypilot_config:{active_workspace:c||"default"}},a)}catch(e){console.error("Error in streamClusterJobLogs:",e),(0,r.C)("Error in streamClusterJobLogs: ".concat(e.message),"error")}}async function h(e){let{clusterName:t,jobIds:s=null,workspace:a}=e;try{let e=await n.x.fetch("/download_logs",{cluster_name:t,job_ids:s?s.map(String):null,override_skypilot_config:{active_workspace:a||"default"}}),l=Object.values(e||{});if(!l.length){(0,r.C)("No logs found to download.","warning");return}let o=window.location.origin,i="".concat(o).concat(c.f4,"/download"),d=await fetch("".concat(i,"?relative=items"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({folder_paths:l})});if(!d.ok){let e=await d.text();throw Error("Download failed: ".concat(d.status," ").concat(e))}let u=await d.blob(),h=window.URL.createObjectURL(u),m=document.createElement("a"),f=new Date().toISOString().replace(/[:.]/g,"-"),x=s&&1===s.length?"job-".concat(s[0]):"jobs";m.href=h,m.download="".concat(t,"-").concat(x,"-logs-").concat(f,".zip"),document.body.appendChild(m),m.click(),m.remove(),window.URL.revokeObjectURL(h)}catch(e){console.error("Error downloading logs:",e),(0,r.C)("Error downloading logs: ".concat(e.message),"error")}}async function m(e){let{clusterName:t,workspace:s}=e;try{return(await n.x.fetch("/queue",{cluster_name:t,all_users:!0,override_skypilot_config:{active_workspace:s}})).map(e=>{var a;let r=e.end_at?e.end_at:Date.now()/1e3,n=0,c=0;return e.submitted_at&&(n=r-e.submitted_at),e.start_at&&(c=r-e.start_at),{id:e.job_id,status:e.status,job:e.job_name,user:e.username,user_hash:e.user_hash,gpus:e.accelerators||{},submitted_at:e.submitted_at?new Date(1e3*e.submitted_at):null,resources:e.resources,cluster:t,total_duration:n,job_duration:c,infra:"",logs:"",workspace:s||"default",git_commit:(null===(a=e.metadata)||void 0===a?void 0:a.git_commit)||"-"}})}catch(e){return console.error("Error fetching cluster jobs:",e),[]}}function f(e){let{cluster:t,job:s=null}=e,[r,n]=(0,a.useState)(null),[c,o]=(0,a.useState)(null),[d,u]=(0,a.useState)(!0),[h,f]=(0,a.useState)(!0),x=(0,a.useCallback)(async()=>{if(t)try{u(!0);let e=await l.default.get(i,[{clusterNames:[t]}]);return n(e[0]),e[0]}catch(e){console.error("Error fetching cluster data:",e)}finally{u(!1)}return null},[t]),g=(0,a.useCallback)(async e=>{if(t)try{f(!0);let s=await l.default.get(m,[{clusterName:t,workspace:e||"default"}]);o(s)}catch(e){console.error("Error fetching cluster job data:",e)}finally{f(!1)}},[t]),N=(0,a.useCallback)(async()=>{l.default.invalidate(i,[{clusterNames:[t]}]);let e=await x();e&&(l.default.invalidate(m,[{clusterName:t,workspace:e.workspace||"default"}]),await g(e.workspace))},[x,g,t]),b=(0,a.useCallback)(async()=>{r&&(l.default.invalidate(m,[{clusterName:t,workspace:r.workspace||"default"}]),await g(r.workspace))},[g,r,t]);return(0,a.useEffect)(()=>{(async()=>{let e=await x();e&&g(e.workspace)})()},[t,s,x,g]),{clusterData:r,clusterJobData:c,loading:d,clusterDetailsLoading:d,clusterJobsLoading:h,refreshData:N,refreshClusterJobsOnly:b}}},15821:function(e,t,s){"use strict";function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info",s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e3,a=document.getElementById("toast-container");a||((a=document.createElement("div")).id="toast-container",a.className="fixed top-0 right-0 p-4 z-[9999] flex flex-col items-end space-y-2",document.body.appendChild(a));let r=document.createElement("div");switch(r.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":r.className+=" bg-green-100 border-green-500 text-green-800";break;case"error":r.className+=" bg-red-100 border-red-500 text-red-800";break;case"warning":r.className+=" bg-yellow-100 border-yellow-500 text-yellow-800";break;default:r.className+=" bg-blue-100 border-blue-500 text-blue-800"}return r.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 '),a.appendChild(r),r.querySelector("button").addEventListener("click",()=>{a.removeChild(r)}),setTimeout(()=>{a.contains(r)&&a.removeChild(r)},s),r}s.d(t,{C:function(){return a}})},6378:function(e,t,s){"use strict";s.r(t),s.d(t,{DashboardCache:function(){return r},dashboardCache:function(){return n}});let a=s(51214).ej.DEFAULT_TTL;class r{setPreloader(e){this.preloader=e}async get(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=s.ttl||a,n=!1!==s.refreshOnAccess,c=this._generateKey(e,t),l=e.name||"anonymous",o=this.cache.get(c),i=Date.now();if(o&&i-o.lastUpdated<r){let s=Math.round((i-o.lastUpdated)/1e3);if(this._debug("Cache HIT for ".concat(l," (age: ").concat(s,"s, TTL: ").concat(Math.round(r/1e3),"s)")),n&&(this.cache.set(c,{data:o.data,lastUpdated:i}),this._debug("Cache TTL refreshed for ".concat(l))),!this.backgroundJobs.has(c)){var d;(null===(d=this.preloader)||void 0===d?void 0:d.wasRecentlyPreloaded(e,t))?this._debug("Skipping background refresh for ".concat(l," - recently preloaded")):this._refreshInBackground(e,t,c)}return o.data}try{let s=await e(...t);return this.cache.set(c,{data:s,lastUpdated:i}),s}catch(e){if(o)return console.warn("Failed to fetch fresh data for ".concat(c,", returning stale data:"),e),o.data;throw e}}invalidate(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],s=this._generateKey(e,t);this.cache.delete(s),this.backgroundJobs.delete(s)}invalidateFunction(e){let t=e.name||"anonymous",s=[];for(let e of this.cache.keys())e.startsWith("".concat(t,"_"))&&s.push(e);s.forEach(e=>{this.cache.delete(e),this.backgroundJobs.delete(e)})}clear(){this.cache.clear(),this.backgroundJobs.clear()}getStats(){return{cacheSize:this.cache.size,backgroundJobs:this.backgroundJobs.size,keys:Array.from(this.cache.keys())}}getDetailedStats(){let e=Date.now(),t=[];for(let[s,a]of this.cache.entries()){let r=e-a.lastUpdated;t.push({key:s,age:Math.round(r/1e3),lastUpdated:new Date(a.lastUpdated).toISOString(),hasBackgroundJob:this.backgroundJobs.has(s)})}return{cacheSize:this.cache.size,backgroundJobs:this.backgroundJobs.size,entries:t.sort((e,t)=>e.age-t.age)}}setDebugMode(e){this.debugMode=e}_debug(e){for(var t=arguments.length,s=Array(t>1?t-1:0),a=1;a<t;a++)s[a-1]=arguments[a];this.debugMode&&console.log("[DashboardCache] ".concat(e),...s)}_refreshInBackground(e,t,s){this.backgroundJobs.set(s,!0),e(...t).then(e=>{this.cache.set(s,{data:e,lastUpdated:Date.now()})}).catch(e=>{console.warn("Background refresh failed for ".concat(s,":"),e)}).finally(()=>{this.backgroundJobs.delete(s)})}_generateKey(e,t){let s=function(e){let t=5381;for(let s=0;s<e.length;s++)t=(t<<5)+t+e.charCodeAt(s);return t>>>0}(e.toString()),a=t.length>0?JSON.stringify(t):"";return"".concat(s,"_").concat(a)}constructor(){this.cache=new Map,this.backgroundJobs=new Map,this.debugMode=!1,this.preloader=null}}let n=new r;t.default=n},32350:function(e,t,s){"use strict";s.d(t,{cn:function(){return n}});var a=s(90512),r=s(98388);function n(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return(0,r.m6)((0,a.W)(t))}},50190:function(e,t,s){"use strict";s.r(t),s.d(t,{JobDetailPage:function(){return w}});var a=s(85893),r=s(67294);s(6135);var n=s(37673),c=s(41664),l=s.n(c),o=s(11163),i=s(23266),d=s(36989),u=s(13626),h=s(16826),m=s(55739),f=s(99307),x=s(23001),g=s(9008),N=s.n(g),b=s(20546),p=s(70282),y=s(27325);function _(e){let{cluster:t,job:s,jobData:r,onRefresh:n,isRefreshing:c,loading:o}=e,i=(0,x.X)();return(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4 h-5",children:[(0,a.jsxs)("div",{className:"text-base flex items-center",children:[(0,a.jsx)(l(),{href:"/clusters",className:"text-sky-blue hover:underline",children:"Sky Clusters"}),(0,a.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,a.jsx)(l(),{href:"/clusters/".concat(t),className:"text-sky-blue hover:underline",children:t}),(0,a.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,a.jsxs)(l(),{href:"/clusters/".concat(t,"/").concat(s),className:"text-sky-blue hover:underline",children:[s,r.job&&"-"!=r.job?" (".concat(r.job,")"):""]})]}),(0,a.jsxs)("div",{className:"flex items-center",children:[(o||c)&&(0,a.jsxs)("div",{className:"flex items-center mr-2",children:[(0,a.jsx)(m.Z,{size:15,className:"mt-0"}),(0,a.jsx)("span",{className:"text-sm ml-2 text-gray-500",children:"Loading..."})]}),(0,a.jsx)(d.WH,{content:"Refresh",className:"text-muted-foreground",children:(0,a.jsxs)("button",{onClick:n,disabled:o||c,className:"text-sm text-sky-blue hover:text-sky-blue-bright font-medium mx-2 flex items-center",children:[(0,a.jsx)(u.Z,{className:"w-4 h-4 mr-1.5"}),!i&&(0,a.jsx)("span",{children:"Refresh"})]})})]})]})}function w(){let e=(0,o.useRouter)(),{cluster:t,job:s}=e.query,{clusterData:c,clusterJobData:x,loading:g,refreshData:w}=(0,i.QL)({cluster:t}),[j,v]=(0,r.useState)(!1),[E,k]=(0,r.useState)(!0),[I,C]=(0,r.useState)(!1),[D,L]=(0,r.useState)(""),[T,R]=(0,r.useState)(!1),[S,O]=(0,r.useState)(!1),A=(0,r.useMemo)(()=>["INIT","PENDING","SETTING_UP"],[]),P=(0,r.useMemo)(()=>{if(!x||!s)return!0;let e=x.find(e=>e.id==s);return e&&A.includes(e.status)},[x,s,A]);r.useEffect(()=>{!g&&E&&k(!1)},[g,E]),(0,r.useEffect)(()=>{let e=!0;return t&&s&&!P?(C(!0),(0,i.Sl)({clusterName:t,jobId:s,onNewLog:t=>{e&&L(e=>{let s=t.split("\n").filter(e=>e.trim()),a=e;for(let e of s){let t=(0,d.Zn)(e);if(/\d+%\s*\|/.test(t)){let e=t.match(/^\(([^)]+)\)/);if(e&&a){let s=a.split("\n"),r=!1;for(let n=s.length-1;n>=0;n--){let c=s[n];if(/\d+%\s*\|/.test(c)){let l=c.match(/^\(([^)]+)\)/);if(l&&l[1]===e[1]){s[n]=t,a=s.join("\n"),r=!0;break}}}r||(a+=(a?"\n":"")+t)}else a+=(a?"\n":"")+t}else a+=(a?"\n":"")+t}return a})},workspace:null==c?void 0:c.workspace}).then(()=>{e&&C(!1)}).catch(t=>{e&&(console.error("Error streaming logs:",t),C(!1))})):C(!1),()=>{e=!1}},[t,s,T,P,c]);let U=async()=>{v(!0),R(e=>!e),L("");try{w&&await w()}catch(e){console.error("Error refreshing data:",e)}finally{v(!1)}};if(!e.isReady)return(0,a.jsx)("div",{children:"Loading..."});let J={id:s};if(c&&x){let e=x.find(e=>e.id==s);e&&(J={...e,infra:c.infra,cluster:c.cluster,user:c.user,user_hash:c.user_hash})}let F=t&&s?"Job: ".concat(s," @ ").concat(t," | SkyPilot Dashboard"):"Job Details | SkyPilot Dashboard";return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(N(),{children:(0,a.jsx)("title",{children:F})}),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(_,{cluster:t,job:s,jobData:J,onRefresh:U,isRefreshing:j,loading:g}),g&&E?(0,a.jsxs)("div",{className:"flex items-center justify-center h-64",children:[(0,a.jsx)(m.Z,{size:24,className:"mr-2"}),(0,a.jsx)("span",{children:"Loading..."})]}):(0,a.jsxs)("div",{className:"space-y-8",children:[(0,a.jsx)("div",{id:"details",children:(0,a.jsxs)(n.Zb,{children:[(0,a.jsx)("div",{className:"flex items-center justify-between px-4 pt-4",children:(0,a.jsx)("h2",{className:"text-lg font-semibold",children:"Details"})}),(0,a.jsx)("div",{className:"p-4",children:(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Job ID"}),(0,a.jsx)("div",{className:"text-base mt-1",children:J.id})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Job Name"}),(0,a.jsx)("div",{className:"text-base mt-1",children:J.job})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Status"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(f.OE,{status:J.status})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"User"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(b.H,{username:J.user,userHash:J.user_hash})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Submitted"}),(0,a.jsx)("div",{className:"text-base mt-1",children:J.submitted_at?(0,d.xn)(J.submitted_at):"N/A"})]}),J.resources&&(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Requested Resources"}),(0,a.jsx)("div",{className:"text-base mt-1",children:J.resources||"N/A"})]}),J.cluster&&(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Cluster"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(l(),{href:"/clusters/".concat(J.cluster),className:"text-sky-blue hover:underline",children:J.cluster})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Git Commit"}),(0,a.jsx)("div",{className:"text-base mt-1 flex items-center",children:J.git_commit&&"-"!==J.git_commit?(0,a.jsxs)("span",{className:"flex items-center mr-2",children:[J.git_commit,(0,a.jsx)(d.WH,{content:S?"Copied!":"Copy commit",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:async()=>{await navigator.clipboard.writeText(J.git_commit),O(!0),setTimeout(()=>O(!1),2e3)},className:"flex items-center text-gray-500 hover:text-gray-700 transition-colors duration-200 p-1 ml-2",children:S?(0,a.jsx)(p.Z,{className:"w-4 h-4 text-green-600"}):(0,a.jsx)(y.Z,{className:"w-4 h-4"})})})]}):(0,a.jsx)("span",{className:"text-gray-400",children:"-"})})]})]})})]})}),(0,a.jsx)("div",{id:"logs",className:"mt-6",children:(0,a.jsxs)(n.Zb,{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between px-4 pt-4",children:[(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold",children:"Logs"}),(0,a.jsx)("span",{className:"ml-2 text-xs text-gray-500",children:"(Logs are not streaming; click refresh to fetch the latest logs.)"})]}),(0,a.jsxs)("div",{className:"flex items-center space-x-3",children:[(0,a.jsx)(d.WH,{content:"Download full logs",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:()=>(0,i.GH)({clusterName:t,jobIds:s?[s]:null,workspace:null==c?void 0:c.workspace}),className:"text-sky-blue hover:text-sky-blue-bright flex items-center",children:(0,a.jsx)(h.Z,{className:"w-4 h-4"})})}),(0,a.jsx)(d.WH,{content:"Refresh logs",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:()=>{R(e=>!e),L("")},disabled:I,className:"text-sky-blue hover:text-sky-blue-bright flex items-center",children:(0,a.jsx)(u.Z,{className:"w-4 h-4 ".concat(I?"animate-spin":"")})})})]})]}),(0,a.jsx)("div",{className:"p-4",children:P?(0,a.jsx)("div",{className:"bg-[#f7f7f7] flex items-center justify-center py-4 text-gray-500",children:(0,a.jsx)("span",{children:"Waiting for the job to start; refresh in a few moments."})}):I?(0,a.jsxs)("div",{className:"flex items-center justify-center py-4",children:[(0,a.jsx)(m.Z,{size:20,className:"mr-2"}),(0,a.jsx)("span",{children:"Loading..."})]}):(0,a.jsx)("div",{className:"max-h-96 overflow-y-auto",children:(0,a.jsx)(d.$B,{logs:D})})})]})})]})]})]})}t.default=w},9008:function(e,t,s){e.exports=s(37219)}},function(e){e.O(0,[616,6130,5739,7411,6989,3850,6135,2888,9774,179],function(){return e(e.s=94966)}),_N_E=e.O()}]);
|