skypilot-nightly 1.0.0.dev20250818__tar.gz → 1.0.0.dev20250820__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.dev20250818/sky/setup_files → skypilot_nightly-1.0.0.dev20250820}/MANIFEST.in +1 -0
- {skypilot_nightly-1.0.0.dev20250818/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250820}/PKG-INFO +21 -13
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/README.md +16 -12
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/__init__.py +5 -3
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/backends/cloud_vm_ray_backend.py +6 -13
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/backends/wheel_utils.py +2 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/data_fetchers/fetch_aws.py +2 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/client/cli/command.py +20 -16
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/core.py +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/404.html +1 -1
- {skypilot_nightly-1.0.0.dev20250818/sky/dashboard/out/_next/static/D7_ocVBIBwyxtvXYWggqV → skypilot_nightly-1.0.0.dev20250820/sky/dashboard/out/_next/static/8ZscIHnvBWz3AXkxsJL6H}/_buildManifest.js +1 -1
- skypilot_nightly-1.0.0.dev20250820/sky/dashboard/out/_next/static/chunks/3015-bf218e4973bf5c8f.js +1 -0
- skypilot_nightly-1.0.0.dev20250818/sky/dashboard/out/_next/static/chunks/8969-6cb1af4ec7fb1e19.js → skypilot_nightly-1.0.0.dev20250820/sky/dashboard/out/_next/static/chunks/8969-23c8fbdb8b397d59.js +1 -1
- skypilot_nightly-1.0.0.dev20250818/sky/dashboard/out/_next/static/chunks/webpack-a46c8b62df807ec1.js → skypilot_nightly-1.0.0.dev20250820/sky/dashboard/out/_next/static/chunks/webpack-008593a02784a2df.js +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/clusters/[cluster].html +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/clusters.html +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/config.html +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/index.html +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/infra/[context].html +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/infra.html +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/jobs/[job].html +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/jobs/pools/[pool].html +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/jobs.html +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/users.html +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/volumes.html +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/workspace/new.html +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/workspaces/[name].html +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/workspaces.html +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/exceptions.py +6 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/global_user_state.py +18 -11
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/jobs/constants.py +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/jobs/server/core.py +43 -34
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/jobs/server/utils.py +2 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/jobs/utils.py +56 -9
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/models.py +1 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/aws/config.py +11 -11
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/aws/instance.py +30 -27
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/do/utils.py +2 -2
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/kubernetes/network_utils.py +3 -3
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/kubernetes/utils.py +2 -2
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/kubernetes/volume.py +2 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/provisioner.py +10 -6
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/replica_managers.py +7 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/requests/payloads.py +2 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/requests/serializers/encoders.py +29 -5
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/server.py +37 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820/sky/setup_files}/MANIFEST.in +1 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/setup_files/dependencies.py +17 -11
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/ray_patches/__init__.py +18 -4
- skypilot_nightly-1.0.0.dev20250820/sky/skylet/ray_patches/autoscaler.py.diff +18 -0
- skypilot_nightly-1.0.0.dev20250820/sky/skylet/ray_patches/cli.py.diff +19 -0
- skypilot_nightly-1.0.0.dev20250820/sky/skylet/ray_patches/command_runner.py.diff +17 -0
- skypilot_nightly-1.0.0.dev20250820/sky/skylet/ray_patches/log_monitor.py.diff +20 -0
- skypilot_nightly-1.0.0.dev20250820/sky/skylet/ray_patches/resource_demand_scheduler.py.diff +32 -0
- skypilot_nightly-1.0.0.dev20250820/sky/skylet/ray_patches/updater.py.diff +18 -0
- skypilot_nightly-1.0.0.dev20250820/sky/skylet/ray_patches/worker.py.diff +41 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/common.py +27 -7
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/common_utils.py +13 -9
- skypilot_nightly-1.0.0.dev20250820/sky/utils/directory_utils.py +12 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/env_options.py +3 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/gpu_labeler.py +3 -3
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/schemas.py +1 -0
- skypilot_nightly-1.0.0.dev20250820/sky/utils/serialize_utils.py +16 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/volumes/client/sdk.py +10 -7
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/volumes/server/core.py +12 -3
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/volumes/volume.py +17 -3
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820/skypilot_nightly.egg-info}/PKG-INFO +21 -13
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/skypilot_nightly.egg-info/SOURCES.txt +14 -5
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/skypilot_nightly.egg-info/requires.txt +2 -0
- skypilot_nightly-1.0.0.dev20250818/sky/dashboard/out/_next/static/chunks/3015-471d67c9302d4027.js +0 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/pyproject.toml +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/setup.cfg +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/cloudflare.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/docker.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/hyperbolic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/adaptors/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/admin_policy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/authentication.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/backends/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/backends/backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/backends/backend_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/backends/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/backends/local_docker_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/aws_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/azure_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/cudo_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/data_fetchers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/data_fetchers/analyze.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/data_fetchers/fetch_azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/data_fetchers/fetch_cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/data_fetchers/fetch_fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/data_fetchers/fetch_gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/data_fetchers/fetch_hyperbolic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/data_fetchers/fetch_ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/data_fetchers/fetch_nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/data_fetchers/fetch_vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/data_fetchers/fetch_vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/do_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/fluidstack_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/gcp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/hyperbolic_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/ibm_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/kubernetes_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/lambda_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/nebius_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/oci_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/paperspace_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/runpod_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/scp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/ssh_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/vast_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/catalog/vsphere_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/check.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/cli.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/client/cli/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/client/cli/deprecation_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/client/cli/flags.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/client/cli/git.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/client/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/client/oauth.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/client/sdk_async.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/client/service_account_auth.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/cloud_stores.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/hyperbolic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/paperspace.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/scp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/ssh.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/utils/aws_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/utils/azure_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/utils/gcp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/utils/oci_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/utils/scp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/clouds/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818/sky/dashboard/out/_next/static/D7_ocVBIBwyxtvXYWggqV → skypilot_nightly-1.0.0.dev20250820/sky/dashboard/out/_next/static/8ZscIHnvBWz3AXkxsJL6H}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/1121-2edb8ab2ba080a76.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/1141-2f60a90b7d76838e.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/2350.fab69e61bac57b23.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/3785.bc5d2853355c9c47.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/3850-ff4a9a69d978632b.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/3937.210053269f121201.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/4045.b30465273dc5e468.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/4676-9da7fdbde90b5549.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/4725.10f7a9a5d3ea8208.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/5739-d67458fcb1386c92.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/6130-2be46d70a38f1e82.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/6135-4b4d5e824b7f9d3c.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/616-3d59f75e2ccf9321.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/6601-06114c982db410b6.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/6633-efe924b9b8136699.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/6856-e6f350f567182e87.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/6989-01359c57e018caa4.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/6990-08b2a1cae076a943.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/7325.b4bc99ce0892dcd5.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/7411-b15471acd2cba716.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/754-d0da8ab45f9509e9.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/7669.1f5d9a402bf5cc42.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/8838.e7953f42af2b0544.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/9025.a1bef12d672bb66d.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/9037-89a84fd7fa31362d.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/9277.71481d5b2e606e33.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/9984.7eb6cc51fb460cae.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/fd9d1056-86323a29a8f7e46a.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/framework-cf60a09ccd051a10.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/main-app-587214043926b3cc.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/main-f15ccb73239a3bf1.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/_app-ce361c6959bc2001.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-06afb50d25f7c61f.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-ec747e4f2dc39b57.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/clusters-469814d711d63b1b.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/config-dfb9bf07b13045f4.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/index-444f1804401f04ea.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/infra/[context]-81351f95f3bec08e.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/infra-c320641c2bcbbea6.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-ad2cd5aab787bc15.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-7d4182df6625fe10.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/jobs-4b3ba1792dc6f21d.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/users-018bf31cda52e11b.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/volumes-739726d6b823f532.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-65f72dee417237ef.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/pages/workspaces-338de9df523d883a.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/_next/static/css/4614e06482d7309e.css +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/favicon.ico +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/skypilot.svg +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/dashboard/out/videos/cursor-small.mp4 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/data/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/data/data_transfer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/data/data_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/data/mounting_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/data/storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/data/storage_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/execution.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/jobs/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/jobs/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/jobs/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/jobs/client/sdk_async.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/jobs/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/jobs/recovery_strategy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/jobs/scheduler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/jobs/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/jobs/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/jobs/state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/logs/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/logs/agent.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/logs/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/logs/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/metrics/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/metrics/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/optimizer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/aws/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/azure/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/azure/azure-config-template.json +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/azure/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/azure/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/cudo/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/cudo/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/cudo/cudo_machine_type.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/cudo/cudo_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/cudo/cudo_wrapper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/cudo/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/do/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/do/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/do/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/do/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/fluidstack/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/fluidstack/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/fluidstack/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/gcp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/gcp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/gcp/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/gcp/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/gcp/instance_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/gcp/mig_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/gcp/volume_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/hyperbolic/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/hyperbolic/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/hyperbolic/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/hyperbolic/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/instance_setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/kubernetes/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/kubernetes/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/kubernetes/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/kubernetes/network.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/lambda_cloud/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/lambda_cloud/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/lambda_cloud/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/nebius/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/nebius/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/nebius/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/nebius/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/nebius/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/oci/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/oci/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/oci/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/oci/query_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/paperspace/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/paperspace/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/paperspace/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/paperspace/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/paperspace/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/runpod/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/runpod/api/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/runpod/api/commands.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/runpod/api/pods.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/runpod/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/runpod/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/runpod/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/scp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/scp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/scp/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/ssh/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vast/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vast/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vast/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vast/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vsphere/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vsphere/common/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vsphere/common/cls_api_client.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vsphere/common/custom_script.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vsphere/common/id_generator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vsphere/common/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vsphere/common/service_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vsphere/common/ssl_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vsphere/common/vapiconnect.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vsphere/common/vim_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vsphere/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vsphere/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/provision/vsphere/vsphere_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/py.typed +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/resources.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/api/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/api/responses.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/db/README +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/db/env.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/db/global_user_state/001_initial_schema.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/db/global_user_state/002_add_workspace_to_cluster_history.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/db/global_user_state/003_fix_initial_revision.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/db/global_user_state/004_is_managed.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/db/global_user_state/005_cluster_event.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/db/global_user_state/006_provision_log.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/db/script.py.mako +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/db/serve_state/001_initial_schema.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/db/spot_jobs/001_initial_schema.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/db/spot_jobs/002_cluster_pool.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/db/spot_jobs/003_pool_hash.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/generated/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/generated/autostopv1_pb2.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/generated/autostopv1_pb2.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/schemas/generated/autostopv1_pb2_grpc.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/autoscalers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/client/impl.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/client/sdk_async.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/load_balancer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/load_balancing_policies.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/serve_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/serve_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/server/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/server/impl.py +1 -1
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/service.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/service_spec.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/serve/spot_placer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/auth/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/auth/authn.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/auth/oauth2_proxy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/daemons.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/html/log.html +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/html/token_page.html +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/metrics.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/requests/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/requests/event_loop.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/requests/executor.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/requests/preconditions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/requests/process.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/requests/queues/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/requests/queues/local_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/requests/queues/mp_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/requests/requests.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/requests/serializers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/requests/serializers/decoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/rest.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/stream_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/uvicorn.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/server/versions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/setup_files/alembic.ini +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/setup_files/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/sky_logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/attempt_skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/autostop_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/configs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/events.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/job_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/log_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/log_lib.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/providers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/providers/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/providers/ibm/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/providers/ibm/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/providers/ibm/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/ray_patches/cli.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/ray_patches/updater.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/ray_patches/worker.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/services.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skylet/subprocess_daemon.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/skypilot_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/ssh_node_pools/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/ssh_node_pools/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/ssh_node_pools/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/task.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/aws-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/azure-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/cudo-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/do-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/fluidstack-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/gcp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/hyperbolic-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/ibm-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/jobs-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/kubernetes-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/lambda-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/local-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/nebius-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/oci-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/paperspace-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/runpod-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/scp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/vast-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/vsphere-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/templates/websocket_proxy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/usage/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/usage/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/usage/usage_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/users/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/users/model.conf +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/users/permission.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/users/rbac.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/users/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/users/token_service.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/accelerator_registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/admin_policy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/annotations.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/atomic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/aws/get_default_security_group.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/cli_utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/cli_utils/status_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/cluster_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/command_runner.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/config_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/context.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/context_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/control_master_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/controller_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/dag_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/db/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/db/db_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/db/migration_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/git.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/git_clone.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/infra_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/cleanup-tunnel.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/config_map_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/create_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/delete_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/deploy_remote_cluster.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/generate_kind_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/rsync_helper.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/ssh-tunnel.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes/ssh_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/kubernetes_enums.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/locks.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/log_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/message_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/resource_checker.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/resources_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/rich_console_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/rich_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/status_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/subprocess_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/tempstore.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/timeline.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/ux_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/validator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/utils/volume.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/volumes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/volumes/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/volumes/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/volumes/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/volumes/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/workspaces/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/workspaces/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/workspaces/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/workspaces/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/skypilot_nightly.egg-info/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/skypilot_nightly.egg-info/top_level.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_api.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_api_compatibility.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_cli.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_db_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_failover.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_jobs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_jobs_and_serve.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_list_accelerators.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_no_parellel.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_optimizer_dryruns.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_optimizer_random_dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_serve_autoscaler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_smoke.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_wheels.py +0 -0
- {skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/tests/test_yaml_parser.py +0 -0
|
@@ -9,6 +9,7 @@ include sky/skylet/providers/ibm/*
|
|
|
9
9
|
include sky/skylet/providers/scp/*
|
|
10
10
|
include sky/skylet/providers/*.py
|
|
11
11
|
include sky/skylet/ray_patches/*.patch
|
|
12
|
+
include sky/skylet/ray_patches/*.diff
|
|
12
13
|
include sky/jobs/dashboard/*
|
|
13
14
|
include sky/jobs/dashboard/templates/*
|
|
14
15
|
include sky/jobs/dashboard/static/*
|
|
@@ -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.dev20250820
|
|
4
4
|
Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
|
|
5
5
|
Author: SkyPilot Team
|
|
6
6
|
License: Apache 2.0
|
|
@@ -133,6 +133,8 @@ Requires-Dist: sqlalchemy_adapter; extra == "server"
|
|
|
133
133
|
Requires-Dist: passlib; extra == "server"
|
|
134
134
|
Requires-Dist: pyjwt; extra == "server"
|
|
135
135
|
Requires-Dist: aiohttp; extra == "server"
|
|
136
|
+
Requires-Dist: grpcio>=1.63.0; extra == "server"
|
|
137
|
+
Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "server"
|
|
136
138
|
Provides-Extra: all
|
|
137
139
|
Requires-Dist: awscli>=1.27.10; extra == "all"
|
|
138
140
|
Requires-Dist: botocore>=1.29.10; extra == "all"
|
|
@@ -187,6 +189,8 @@ Requires-Dist: sqlalchemy_adapter; extra == "all"
|
|
|
187
189
|
Requires-Dist: passlib; extra == "all"
|
|
188
190
|
Requires-Dist: pyjwt; extra == "all"
|
|
189
191
|
Requires-Dist: aiohttp; extra == "all"
|
|
192
|
+
Requires-Dist: grpcio>=1.63.0; extra == "all"
|
|
193
|
+
Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
|
|
190
194
|
Dynamic: author
|
|
191
195
|
Dynamic: classifier
|
|
192
196
|
Dynamic: description
|
|
@@ -222,7 +226,7 @@ Dynamic: summary
|
|
|
222
226
|
</p>
|
|
223
227
|
|
|
224
228
|
<h3 align="center">
|
|
225
|
-
|
|
229
|
+
Simplify & scale any AI infrastructure
|
|
226
230
|
</h3>
|
|
227
231
|
|
|
228
232
|
<div align="center">
|
|
@@ -242,26 +246,28 @@ Dynamic: summary
|
|
|
242
246
|
- [Jul 2025] Finetune **Llama4** on any distributed cluster/cloud: [**example**](./llm/llama-4-finetuning/)
|
|
243
247
|
- [Jul 2025] Two-part blog series, `The Evolution of AI Job Orchestration`: (1) [Running AI jobs on GPU Neoclouds](https://blog.skypilot.co/ai-job-orchestration-pt1-gpu-neoclouds/), (2) [The AI-Native Control Plane & Orchestration that Finally Works for ML](https://blog.skypilot.co/ai-job-orchestration-pt2-ai-control-plane/)
|
|
244
248
|
- [Apr 2025] Spin up **Qwen3** on your cluster/cloud: [**example**](./llm/qwen/)
|
|
245
|
-
- [Mar 2025] Run and serve **Google Gemma 3** using SkyPilot [**example**](./llm/gemma3/)
|
|
246
249
|
- [Feb 2025] Prepare and serve **Retrieval Augmented Generation (RAG) with DeepSeek-R1**: [**blog post**](https://blog.skypilot.co/deepseek-rag), [**example**](./llm/rag/)
|
|
247
|
-
- [Feb 2025] Run and serve **DeepSeek-R1 671B** using SkyPilot and SGLang with high throughput: [**example**](./llm/deepseek-r1/)
|
|
248
|
-
- [Feb 2025] Prepare and serve large-scale image search with **vector databases**: [**blog post**](https://blog.skypilot.co/large-scale-vector-database/), [**example**](./examples/vector_database/)
|
|
249
|
-
- [Jan 2025] Launch and serve distilled models from **[DeepSeek-R1](https://github.com/deepseek-ai/DeepSeek-R1)** and **[Janus](https://github.com/deepseek-ai/DeepSeek-Janus)** on Kubernetes or any cloud: [**R1 example**](./llm/deepseek-r1-distilled/) and [**Janus example**](./llm/deepseek-janus/)
|
|
250
|
-
- [Oct 2024] :tada: **SkyPilot crossed 1M+ downloads** :tada:: Thank you to our community! [**Twitter/X**](https://x.com/skypilot_org/status/1844770841718067638)
|
|
251
250
|
|
|
252
251
|
|
|
253
252
|
**LLM Finetuning Cookbooks**: Finetuning Llama 2 / Llama 3.1 in your own cloud environment, privately: Llama 2 [**example**](./llm/vicuna-llama-2/) and [**blog**](https://blog.skypilot.co/finetuning-llama2-operational-guide/); Llama 3.1 [**example**](./llm/llama-3_1-finetuning/) and [**blog**](https://blog.skypilot.co/finetune-llama-3_1-on-your-infra/)
|
|
254
253
|
|
|
255
254
|
----
|
|
256
255
|
|
|
257
|
-
SkyPilot is
|
|
256
|
+
SkyPilot is a system for running, managing, and scaling AI workloads on any AI infrastructure.
|
|
257
|
+
|
|
258
|
+
SkyPilot gives **AI teams** a simple interface to run jobs on any infra.
|
|
259
|
+
**Infra teams** get a unified control plane to manage any AI compute — with advanced scheduling, scaling, and orchestration.
|
|
258
260
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
+

|
|
262
|
+
|
|
263
|
+
## Overview
|
|
264
|
+
|
|
265
|
+
SkyPilot **is easy to use for AI teams**:
|
|
266
|
+
- Quickly spin up compute on your own infra
|
|
261
267
|
- Environment and job as code — simple and portable
|
|
262
|
-
- Easy management: queue, run, and auto-recover many jobs
|
|
268
|
+
- Easy job management: queue, run, and auto-recover many jobs
|
|
263
269
|
|
|
264
|
-
SkyPilot **makes Kubernetes easy for AI teams**:
|
|
270
|
+
SkyPilot **makes Kubernetes easy for AI & Infra teams**:
|
|
265
271
|
|
|
266
272
|
- Slurm-like ease of use, cloud-native robustness
|
|
267
273
|
- Local dev experience on K8s: SSH into pods, sync code, or connect IDE
|
|
@@ -378,7 +384,9 @@ Source files can be found in [`llm/`](https://github.com/skypilot-org/skypilot/t
|
|
|
378
384
|
## More information
|
|
379
385
|
To learn more, see [SkyPilot Overview](https://docs.skypilot.co/en/latest/overview.html), [SkyPilot docs](https://docs.skypilot.co/en/latest/), and [SkyPilot blog](https://blog.skypilot.co/).
|
|
380
386
|
|
|
381
|
-
|
|
387
|
+
SkyPilot adopters: [Testimonials and Case Studies](https://blog.skypilot.co/case-studies/)
|
|
388
|
+
|
|
389
|
+
Partners and integrations: [Community Spotlights](https://blog.skypilot.co/community/)
|
|
382
390
|
|
|
383
391
|
Follow updates:
|
|
384
392
|
- [Slack](http://slack.skypilot.co)
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
</p>
|
|
26
26
|
|
|
27
27
|
<h3 align="center">
|
|
28
|
-
|
|
28
|
+
Simplify & scale any AI infrastructure
|
|
29
29
|
</h3>
|
|
30
30
|
|
|
31
31
|
<div align="center">
|
|
@@ -45,26 +45,28 @@
|
|
|
45
45
|
- [Jul 2025] Finetune **Llama4** on any distributed cluster/cloud: [**example**](./llm/llama-4-finetuning/)
|
|
46
46
|
- [Jul 2025] Two-part blog series, `The Evolution of AI Job Orchestration`: (1) [Running AI jobs on GPU Neoclouds](https://blog.skypilot.co/ai-job-orchestration-pt1-gpu-neoclouds/), (2) [The AI-Native Control Plane & Orchestration that Finally Works for ML](https://blog.skypilot.co/ai-job-orchestration-pt2-ai-control-plane/)
|
|
47
47
|
- [Apr 2025] Spin up **Qwen3** on your cluster/cloud: [**example**](./llm/qwen/)
|
|
48
|
-
- [Mar 2025] Run and serve **Google Gemma 3** using SkyPilot [**example**](./llm/gemma3/)
|
|
49
48
|
- [Feb 2025] Prepare and serve **Retrieval Augmented Generation (RAG) with DeepSeek-R1**: [**blog post**](https://blog.skypilot.co/deepseek-rag), [**example**](./llm/rag/)
|
|
50
|
-
- [Feb 2025] Run and serve **DeepSeek-R1 671B** using SkyPilot and SGLang with high throughput: [**example**](./llm/deepseek-r1/)
|
|
51
|
-
- [Feb 2025] Prepare and serve large-scale image search with **vector databases**: [**blog post**](https://blog.skypilot.co/large-scale-vector-database/), [**example**](./examples/vector_database/)
|
|
52
|
-
- [Jan 2025] Launch and serve distilled models from **[DeepSeek-R1](https://github.com/deepseek-ai/DeepSeek-R1)** and **[Janus](https://github.com/deepseek-ai/DeepSeek-Janus)** on Kubernetes or any cloud: [**R1 example**](./llm/deepseek-r1-distilled/) and [**Janus example**](./llm/deepseek-janus/)
|
|
53
|
-
- [Oct 2024] :tada: **SkyPilot crossed 1M+ downloads** :tada:: Thank you to our community! [**Twitter/X**](https://x.com/skypilot_org/status/1844770841718067638)
|
|
54
49
|
|
|
55
50
|
|
|
56
51
|
**LLM Finetuning Cookbooks**: Finetuning Llama 2 / Llama 3.1 in your own cloud environment, privately: Llama 2 [**example**](./llm/vicuna-llama-2/) and [**blog**](https://blog.skypilot.co/finetuning-llama2-operational-guide/); Llama 3.1 [**example**](./llm/llama-3_1-finetuning/) and [**blog**](https://blog.skypilot.co/finetune-llama-3_1-on-your-infra/)
|
|
57
52
|
|
|
58
53
|
----
|
|
59
54
|
|
|
60
|
-
SkyPilot is
|
|
55
|
+
SkyPilot is a system for running, managing, and scaling AI workloads on any AI infrastructure.
|
|
61
56
|
|
|
62
|
-
SkyPilot **
|
|
63
|
-
|
|
57
|
+
SkyPilot gives **AI teams** a simple interface to run jobs on any infra.
|
|
58
|
+
**Infra teams** get a unified control plane to manage any AI compute — with advanced scheduling, scaling, and orchestration.
|
|
59
|
+
|
|
60
|
+

|
|
61
|
+
|
|
62
|
+
## Overview
|
|
63
|
+
|
|
64
|
+
SkyPilot **is easy to use for AI teams**:
|
|
65
|
+
- Quickly spin up compute on your own infra
|
|
64
66
|
- Environment and job as code — simple and portable
|
|
65
|
-
- Easy management: queue, run, and auto-recover many jobs
|
|
67
|
+
- Easy job management: queue, run, and auto-recover many jobs
|
|
66
68
|
|
|
67
|
-
SkyPilot **makes Kubernetes easy for AI teams**:
|
|
69
|
+
SkyPilot **makes Kubernetes easy for AI & Infra teams**:
|
|
68
70
|
|
|
69
71
|
- Slurm-like ease of use, cloud-native robustness
|
|
70
72
|
- Local dev experience on K8s: SSH into pods, sync code, or connect IDE
|
|
@@ -184,7 +186,9 @@ Source files can be found in [`llm/`](https://github.com/skypilot-org/skypilot/t
|
|
|
184
186
|
## More information
|
|
185
187
|
To learn more, see [SkyPilot Overview](https://docs.skypilot.co/en/latest/overview.html), [SkyPilot docs](https://docs.skypilot.co/en/latest/), and [SkyPilot blog](https://blog.skypilot.co/).
|
|
186
188
|
|
|
187
|
-
|
|
189
|
+
SkyPilot adopters: [Testimonials and Case Studies](https://blog.skypilot.co/case-studies/)
|
|
190
|
+
|
|
191
|
+
Partners and integrations: [Community Spotlights](https://blog.skypilot.co/community/)
|
|
188
192
|
|
|
189
193
|
Follow updates:
|
|
190
194
|
- [Slack](http://slack.skypilot.co)
|
|
@@ -4,8 +4,10 @@ import subprocess
|
|
|
4
4
|
from typing import Optional
|
|
5
5
|
import urllib.request
|
|
6
6
|
|
|
7
|
+
from sky.utils import directory_utils
|
|
8
|
+
|
|
7
9
|
# Replaced with the current commit when building the wheels.
|
|
8
|
-
_SKYPILOT_COMMIT_SHA = '
|
|
10
|
+
_SKYPILOT_COMMIT_SHA = 'd3bea00da2fdee863cd4bb423224adf21c68b604'
|
|
9
11
|
|
|
10
12
|
|
|
11
13
|
def _get_git_commit():
|
|
@@ -35,8 +37,8 @@ def _get_git_commit():
|
|
|
35
37
|
|
|
36
38
|
|
|
37
39
|
__commit__ = _get_git_commit()
|
|
38
|
-
__version__ = '1.0.0.
|
|
39
|
-
__root_dir__ =
|
|
40
|
+
__version__ = '1.0.0.dev20250820'
|
|
41
|
+
__root_dir__ = directory_utils.get_sky_dir()
|
|
40
42
|
|
|
41
43
|
|
|
42
44
|
# ---------------------- Proxy Configuration ---------------------- #
|
|
@@ -24,7 +24,6 @@ import colorama
|
|
|
24
24
|
import psutil
|
|
25
25
|
import yaml
|
|
26
26
|
|
|
27
|
-
import sky
|
|
28
27
|
from sky import backends
|
|
29
28
|
from sky import catalog
|
|
30
29
|
from sky import check as sky_check
|
|
@@ -65,6 +64,7 @@ from sky.utils import common
|
|
|
65
64
|
from sky.utils import common_utils
|
|
66
65
|
from sky.utils import context_utils
|
|
67
66
|
from sky.utils import controller_utils
|
|
67
|
+
from sky.utils import directory_utils
|
|
68
68
|
from sky.utils import env_options
|
|
69
69
|
from sky.utils import locks
|
|
70
70
|
from sky.utils import log_utils
|
|
@@ -163,7 +163,7 @@ _LOG_DIR_PATTERN = re.compile(r'Log Dir: ([^ ]+)')
|
|
|
163
163
|
# We don't do import then __file__ because that script needs to be filled in
|
|
164
164
|
# (so import would fail).
|
|
165
165
|
_RAY_UP_WITH_MONKEY_PATCHED_HASH_LAUNCH_CONF_PATH = (
|
|
166
|
-
pathlib.Path(
|
|
166
|
+
pathlib.Path(directory_utils.get_sky_dir()) / 'backends' /
|
|
167
167
|
'monkey_patches' / 'monkey_patch_ray_up.py')
|
|
168
168
|
|
|
169
169
|
# The maximum size of a command line arguments is 128 KB, i.e. the command
|
|
@@ -3925,7 +3925,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
3925
3925
|
# In this case, we reset the resources for the task, so that the
|
|
3926
3926
|
# detached setup does not need to wait for the task resources to be
|
|
3927
3927
|
# ready (which is not used for setup anyway).
|
|
3928
|
-
valid_resource =
|
|
3928
|
+
valid_resource = resources_lib.Resources()
|
|
3929
3929
|
else:
|
|
3930
3930
|
# Check the task resources vs the cluster resources. Since
|
|
3931
3931
|
# `sky exec` will not run the provision and _check_existing_cluster
|
|
@@ -4771,8 +4771,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
4771
4771
|
else:
|
|
4772
4772
|
raise
|
|
4773
4773
|
|
|
4774
|
-
|
|
4775
|
-
handle.cluster_name)
|
|
4774
|
+
cluster_utils.SSHConfigHelper.remove_cluster(handle.cluster_name)
|
|
4776
4775
|
|
|
4777
4776
|
def _detect_abnormal_non_terminated_nodes(
|
|
4778
4777
|
handle: CloudVmRayResourceHandle) -> None:
|
|
@@ -4905,7 +4904,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
4905
4904
|
# Check if we're stopping spot
|
|
4906
4905
|
assert (handle.launched_resources is not None and
|
|
4907
4906
|
handle.launched_resources.cloud is not None), handle
|
|
4908
|
-
if handle.is_grpc_enabled:
|
|
4907
|
+
if env_options.Options.ENABLE_GRPC.get() and handle.is_grpc_enabled:
|
|
4909
4908
|
request = autostopv1_pb2.SetAutostopRequest(
|
|
4910
4909
|
idle_minutes=idle_minutes_to_autostop,
|
|
4911
4910
|
backend=self.NAME,
|
|
@@ -4917,9 +4916,6 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
4917
4916
|
handle, lambda: SkyletClient(handle.get_grpc_channel()).
|
|
4918
4917
|
set_autostop(request))
|
|
4919
4918
|
else:
|
|
4920
|
-
logger.info(
|
|
4921
|
-
'Using legacy remote execution for set_autostop on '
|
|
4922
|
-
'cluster %s.', handle.cluster_name)
|
|
4923
4919
|
code = autostop_lib.AutostopCodeGen.set_autostop(
|
|
4924
4920
|
idle_minutes_to_autostop, self.NAME, wait_for, down)
|
|
4925
4921
|
returncode, _, stderr = self.run_on_head(
|
|
@@ -4953,7 +4949,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
4953
4949
|
# The head node of the cluster is not UP or in an abnormal state.
|
|
4954
4950
|
# We cannot check if the cluster is autostopping.
|
|
4955
4951
|
return False
|
|
4956
|
-
if handle.is_grpc_enabled:
|
|
4952
|
+
if env_options.Options.ENABLE_GRPC.get() and handle.is_grpc_enabled:
|
|
4957
4953
|
try:
|
|
4958
4954
|
request = autostopv1_pb2.IsAutostoppingRequest()
|
|
4959
4955
|
response = backend_utils.invoke_skylet_with_retries(
|
|
@@ -4966,9 +4962,6 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
4966
4962
|
logger.debug(f'Failed to check if cluster is autostopping: {e}')
|
|
4967
4963
|
return False
|
|
4968
4964
|
else:
|
|
4969
|
-
logger.info(
|
|
4970
|
-
'Using legacy remote execution for is_autostopping on '
|
|
4971
|
-
'cluster %s.', handle.cluster_name)
|
|
4972
4965
|
code = autostop_lib.AutostopCodeGen.is_autostopping()
|
|
4973
4966
|
returncode, stdout, stderr = self.run_on_head(
|
|
4974
4967
|
handle, code, require_outputs=True, stream_logs=stream_logs)
|
|
@@ -27,13 +27,14 @@ import sky
|
|
|
27
27
|
from sky import sky_logging
|
|
28
28
|
from sky.backends import backend_utils
|
|
29
29
|
from sky.server import common
|
|
30
|
+
from sky.utils import directory_utils
|
|
30
31
|
|
|
31
32
|
logger = sky_logging.init_logger(__name__)
|
|
32
33
|
|
|
33
34
|
# Local wheel path is same as the remote path.
|
|
34
35
|
WHEEL_DIR = pathlib.Path(os.path.expanduser(backend_utils.SKY_REMOTE_PATH))
|
|
35
36
|
_WHEEL_LOCK_PATH = WHEEL_DIR.parent / '.wheels_lock'
|
|
36
|
-
SKY_PACKAGE_PATH = pathlib.Path(
|
|
37
|
+
SKY_PACKAGE_PATH = pathlib.Path(directory_utils.get_sky_dir())
|
|
37
38
|
|
|
38
39
|
# NOTE: keep the same as setup.py's setuptools.setup(name=..., ...).
|
|
39
40
|
_PACKAGE_WHEEL_NAME = 'skypilot'
|
|
@@ -325,6 +325,8 @@ def _get_instance_types_df(region: str) -> Union[str, 'pd.DataFrame']:
|
|
|
325
325
|
# See also Standard_NV{vcpu}ads_A10_v5 support on Azure.
|
|
326
326
|
fraction = row['GpuInfo']['TotalGpuMemoryInMiB'] / L4_GPU_MEMORY
|
|
327
327
|
acc_count = round(fraction, 3)
|
|
328
|
+
if row['InstanceType'] == 'p5.4xlarge':
|
|
329
|
+
acc_count = 1
|
|
328
330
|
return pd.Series({
|
|
329
331
|
'AcceleratorName': acc_name,
|
|
330
332
|
'AcceleratorCount': acc_count,
|
{skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/sky/client/cli/command.py
RENAMED
|
@@ -47,12 +47,15 @@ import sky
|
|
|
47
47
|
from sky import backends
|
|
48
48
|
from sky import catalog
|
|
49
49
|
from sky import clouds
|
|
50
|
+
from sky import dag as dag_lib
|
|
50
51
|
from sky import exceptions
|
|
51
52
|
from sky import jobs as managed_jobs
|
|
52
53
|
from sky import models
|
|
54
|
+
from sky import resources as resources_lib
|
|
53
55
|
from sky import serve as serve_lib
|
|
54
56
|
from sky import sky_logging
|
|
55
57
|
from sky import skypilot_config
|
|
58
|
+
from sky import task as task_lib
|
|
56
59
|
from sky.adaptors import common as adaptors_common
|
|
57
60
|
from sky.client import sdk
|
|
58
61
|
from sky.client.cli import flags
|
|
@@ -74,6 +77,7 @@ from sky.utils import common
|
|
|
74
77
|
from sky.utils import common_utils
|
|
75
78
|
from sky.utils import controller_utils
|
|
76
79
|
from sky.utils import dag_utils
|
|
80
|
+
from sky.utils import directory_utils
|
|
77
81
|
from sky.utils import env_options
|
|
78
82
|
from sky.utils import git as git_utils
|
|
79
83
|
from sky.utils import infra_utils
|
|
@@ -163,7 +167,7 @@ def _get_cluster_records_and_set_ssh_config(
|
|
|
163
167
|
handle.cluster_name, credentials)))
|
|
164
168
|
escaped_executable_path = shlex.quote(sys.executable)
|
|
165
169
|
escaped_websocket_proxy_path = shlex.quote(
|
|
166
|
-
f'{
|
|
170
|
+
f'{directory_utils.get_sky_dir()}/templates/websocket_proxy.py')
|
|
167
171
|
# Instead of directly use websocket_proxy.py, we add an
|
|
168
172
|
# additional proxy, so that ssh can use the head pod in the
|
|
169
173
|
# cluster to jump to worker pods.
|
|
@@ -683,7 +687,7 @@ def _make_task_or_dag_from_entrypoint_with_overrides(
|
|
|
683
687
|
config_override: Optional[Dict[str, Any]] = None,
|
|
684
688
|
git_url: Optional[str] = None,
|
|
685
689
|
git_ref: Optional[str] = None,
|
|
686
|
-
) -> Union[
|
|
690
|
+
) -> Union['task_lib.Task', 'dag_lib.Dag']:
|
|
687
691
|
"""Creates a task or a dag from an entrypoint with overrides.
|
|
688
692
|
|
|
689
693
|
Returns:
|
|
@@ -746,8 +750,8 @@ def _make_task_or_dag_from_entrypoint_with_overrides(
|
|
|
746
750
|
f'If you see this, please file an issue; tasks: {dag.tasks}')
|
|
747
751
|
task = dag.tasks[0]
|
|
748
752
|
else:
|
|
749
|
-
task =
|
|
750
|
-
task.set_resources({
|
|
753
|
+
task = task_lib.Task(name='sky-cmd', run=entrypoint)
|
|
754
|
+
task.set_resources({resources_lib.Resources()})
|
|
751
755
|
# env update has been done for DAG in load_chain_dag_from_yaml for YAML.
|
|
752
756
|
task.update_envs(env)
|
|
753
757
|
task.update_secrets(secret)
|
|
@@ -770,7 +774,7 @@ def _make_task_or_dag_from_entrypoint_with_overrides(
|
|
|
770
774
|
return task
|
|
771
775
|
|
|
772
776
|
|
|
773
|
-
def _update_task_workdir(task:
|
|
777
|
+
def _update_task_workdir(task: task_lib.Task, workdir: Optional[str],
|
|
774
778
|
git_url: Optional[str], git_ref: Optional[str]):
|
|
775
779
|
"""Updates the task workdir.
|
|
776
780
|
|
|
@@ -798,7 +802,7 @@ def _update_task_workdir(task: sky.Task, workdir: Optional[str],
|
|
|
798
802
|
return
|
|
799
803
|
|
|
800
804
|
|
|
801
|
-
def _update_task_workdir_and_secrets_from_workdir(task:
|
|
805
|
+
def _update_task_workdir_and_secrets_from_workdir(task: task_lib.Task):
|
|
802
806
|
"""Updates the task secrets from the workdir.
|
|
803
807
|
|
|
804
808
|
Args:
|
|
@@ -1109,7 +1113,7 @@ def launch(
|
|
|
1109
1113
|
git_url=git_url,
|
|
1110
1114
|
git_ref=git_ref,
|
|
1111
1115
|
)
|
|
1112
|
-
if isinstance(task_or_dag,
|
|
1116
|
+
if isinstance(task_or_dag, dag_lib.Dag):
|
|
1113
1117
|
raise click.UsageError(
|
|
1114
1118
|
_DAG_NOT_SUPPORTED_MESSAGE.format(command='sky launch'))
|
|
1115
1119
|
task = task_or_dag
|
|
@@ -1343,7 +1347,7 @@ def exec(
|
|
|
1343
1347
|
git_ref=git_ref,
|
|
1344
1348
|
)
|
|
1345
1349
|
|
|
1346
|
-
if isinstance(task_or_dag,
|
|
1350
|
+
if isinstance(task_or_dag, dag_lib.Dag):
|
|
1347
1351
|
raise click.UsageError('YAML specifies a DAG, while `sky exec` '
|
|
1348
1352
|
'supports a single task only.')
|
|
1349
1353
|
task = task_or_dag
|
|
@@ -4455,9 +4459,9 @@ def jobs_launch(
|
|
|
4455
4459
|
git_ref=git_ref,
|
|
4456
4460
|
)
|
|
4457
4461
|
|
|
4458
|
-
if not isinstance(task_or_dag,
|
|
4459
|
-
assert isinstance(task_or_dag,
|
|
4460
|
-
with
|
|
4462
|
+
if not isinstance(task_or_dag, dag_lib.Dag):
|
|
4463
|
+
assert isinstance(task_or_dag, task_lib.Task), task_or_dag
|
|
4464
|
+
with dag_lib.Dag() as dag:
|
|
4461
4465
|
dag.add(task_or_dag)
|
|
4462
4466
|
dag.name = task_or_dag.name
|
|
4463
4467
|
else:
|
|
@@ -4893,7 +4897,7 @@ def jobs_pool_apply(
|
|
|
4893
4897
|
click.secho(
|
|
4894
4898
|
'Each pool worker will use the following resources (estimated):',
|
|
4895
4899
|
fg='cyan')
|
|
4896
|
-
with
|
|
4900
|
+
with dag_lib.Dag() as dag:
|
|
4897
4901
|
dag.add(task)
|
|
4898
4902
|
|
|
4899
4903
|
request_id = managed_jobs.pool_apply(task,
|
|
@@ -5217,7 +5221,7 @@ def _generate_task_with_service(
|
|
|
5217
5221
|
network_tier: Optional[str],
|
|
5218
5222
|
not_supported_cmd: str,
|
|
5219
5223
|
pool: bool, # pylint: disable=redefined-outer-name
|
|
5220
|
-
) ->
|
|
5224
|
+
) -> task_lib.Task:
|
|
5221
5225
|
"""Generate a task with service section from a service YAML file."""
|
|
5222
5226
|
is_yaml, _ = _check_yaml(''.join(service_yaml_args))
|
|
5223
5227
|
yaml_name = 'SERVICE_YAML' if not pool else 'POOL_YAML'
|
|
@@ -5247,7 +5251,7 @@ def _generate_task_with_service(
|
|
|
5247
5251
|
network_tier=network_tier,
|
|
5248
5252
|
ports=ports,
|
|
5249
5253
|
)
|
|
5250
|
-
if isinstance(task,
|
|
5254
|
+
if isinstance(task, dag_lib.Dag):
|
|
5251
5255
|
raise click.UsageError(
|
|
5252
5256
|
_DAG_NOT_SUPPORTED_MESSAGE.format(command=not_supported_cmd))
|
|
5253
5257
|
|
|
@@ -5433,7 +5437,7 @@ def serve_up(
|
|
|
5433
5437
|
|
|
5434
5438
|
click.secho('Each replica will use the following resources (estimated):',
|
|
5435
5439
|
fg='cyan')
|
|
5436
|
-
with
|
|
5440
|
+
with dag_lib.Dag() as dag:
|
|
5437
5441
|
dag.add(task)
|
|
5438
5442
|
|
|
5439
5443
|
request_id = serve_lib.up(task, service_name, _need_confirmation=not yes)
|
|
@@ -5536,7 +5540,7 @@ def serve_update(
|
|
|
5536
5540
|
|
|
5537
5541
|
click.secho('New replica will use the following resources (estimated):',
|
|
5538
5542
|
fg='cyan')
|
|
5539
|
-
with
|
|
5543
|
+
with dag_lib.Dag() as dag:
|
|
5540
5544
|
dag.add(task)
|
|
5541
5545
|
|
|
5542
5546
|
request_id = serve_lib.update(task,
|
|
@@ -78,13 +78,13 @@ def optimize(
|
|
|
78
78
|
for a task.
|
|
79
79
|
exceptions.NoCloudAccessError: if no public clouds are enabled.
|
|
80
80
|
"""
|
|
81
|
-
dag.resolve_and_validate_volumes()
|
|
82
81
|
# TODO: We apply the admin policy only on the first DAG optimization which
|
|
83
82
|
# is shown on `sky launch`. The optimizer is also invoked during failover,
|
|
84
83
|
# but we do not apply the admin policy there. We should apply the admin
|
|
85
84
|
# policy in the optimizer, but that will require some refactoring.
|
|
86
85
|
with admin_policy_utils.apply_and_use_config_in_current_request(
|
|
87
86
|
dag, request_options=request_options) as dag:
|
|
87
|
+
dag.resolve_and_validate_volumes()
|
|
88
88
|
return optimizer.Optimizer.optimize(dag=dag,
|
|
89
89
|
minimize=minimize,
|
|
90
90
|
blocked_resources=blocked_resources,
|
{skypilot_nightly-1.0.0.dev20250818 → skypilot_nightly-1.0.0.dev20250820}/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-008593a02784a2df.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/8ZscIHnvBWz3AXkxsJL6H/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/8ZscIHnvBWz3AXkxsJL6H/_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":"8ZscIHnvBWz3AXkxsJL6H","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST=function(s,c,a,e,t,b,f,u,n,o,j,i,r,k){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,b,f,"static/chunks/4676-9da7fdbde90b5549.js",o,e,t,u,j,n,i,"static/chunks/6856-e6f350f567182e87.js",r,k,"static/chunks/9037-89a84fd7fa31362d.js","static/chunks/pages/clusters/[cluster]-ec747e4f2dc39b57.js"],"/clusters/[cluster]/[job]":[s,c,a,b,e,t,n,"static/chunks/pages/clusters/[cluster]/[job]-06afb50d25f7c61f.js"],"/config":["static/chunks/pages/config-dfb9bf07b13045f4.js"],"/infra":["static/chunks/pages/infra-c320641c2bcbbea6.js"],"/infra/[context]":["static/chunks/pages/infra/[context]-81351f95f3bec08e.js"],"/jobs":["static/chunks/pages/jobs-4b3ba1792dc6f21d.js"],"/jobs/pools/[pool]":[s,c,a,f,o,e,t,u,"static/chunks/pages/jobs/pools/[pool]-7d4182df6625fe10.js"],"/jobs/[job]":[s,c,a,b,f,o,e,t,u,n,"static/chunks/pages/jobs/[job]-ad2cd5aab787bc15.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-338de9df523d883a.js"],"/workspaces/[name]":[s,c,a,b,f,"static/chunks/6633-efe924b9b8136699.js",e,t,u,j,n,i,r,k,"static/chunks/1141-2f60a90b7d76838e.js","static/chunks/pages/workspaces/[name]-65f72dee417237ef.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-
|
|
1
|
+
self.__BUILD_MANIFEST=function(s,c,a,e,t,b,f,u,n,o,j,i,r,k){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,b,f,"static/chunks/4676-9da7fdbde90b5549.js",o,e,t,u,j,n,i,"static/chunks/6856-e6f350f567182e87.js",r,k,"static/chunks/9037-89a84fd7fa31362d.js","static/chunks/pages/clusters/[cluster]-ec747e4f2dc39b57.js"],"/clusters/[cluster]/[job]":[s,c,a,b,e,t,n,"static/chunks/pages/clusters/[cluster]/[job]-06afb50d25f7c61f.js"],"/config":["static/chunks/pages/config-dfb9bf07b13045f4.js"],"/infra":["static/chunks/pages/infra-c320641c2bcbbea6.js"],"/infra/[context]":["static/chunks/pages/infra/[context]-81351f95f3bec08e.js"],"/jobs":["static/chunks/pages/jobs-4b3ba1792dc6f21d.js"],"/jobs/pools/[pool]":[s,c,a,f,o,e,t,u,"static/chunks/pages/jobs/pools/[pool]-7d4182df6625fe10.js"],"/jobs/[job]":[s,c,a,b,f,o,e,t,u,n,"static/chunks/pages/jobs/[job]-ad2cd5aab787bc15.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-338de9df523d883a.js"],"/workspaces/[name]":[s,c,a,b,f,"static/chunks/6633-efe924b9b8136699.js",e,t,u,j,n,i,r,k,"static/chunks/1141-2f60a90b7d76838e.js","static/chunks/pages/workspaces/[name]-65f72dee417237ef.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-23c8fbdb8b397d59.js","static/chunks/6135-4b4d5e824b7f9d3c.js","static/chunks/754-d0da8ab45f9509e9.js","static/chunks/6990-08b2a1cae076a943.js","static/chunks/1121-2edb8ab2ba080a76.js","static/chunks/6601-06114c982db410b6.js","static/chunks/3015-bf218e4973bf5c8f.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
skypilot_nightly-1.0.0.dev20250820/sky/dashboard/out/_next/static/chunks/3015-bf218e4973bf5c8f.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 K},ManagedJobs:function(){return Z},ManagedJobsTable:function(){return B},Status2Actions:function(){return q},filterJobsByName:function(){return U},filterJobsByPool:function(){return O},filterJobsByUser:function(){return W},filterJobsByWorkspace:function(){return J},statusGroups:function(){return z}});var r=t(85893),a=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:r,workspaceMatch:a,poolMatch:l,statuses:n}=e;return["allUsers:".concat(s),t?"name:".concat(t):"",r?"user:".concat(r):"",a?"workspace:".concat(a):"",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 r=t-s.timestamp;return{isCached:!0,isFresh:r<12e4,age:r,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,...r}=e,a=this._generateFilterKey(r);try{let e=this._getCacheStatus(a);if(e.isCached&&e.hasData){let l=e.data,n=(s-1)*t,i=l.jobs.slice(n,n+t);if(!this.prefetching.has(a)&&(!e.isFresh||e.age>e.maxAge/2)){let e=this._loadFullDataset(r,a).catch(()=>{}).finally(()=>this.prefetching.delete(a));this.prefetching.set(a,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,[{...r,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(a)){let e=this._loadFullDataset(r,a).catch(e=>{console.warn("Background prefetch of full jobs failed:",e)}).finally(()=>{this.prefetching.delete(a)});this.prefetching.set(a,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 r={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,r),r}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 r=this._getCacheStatus(s);e.detailedStatus[s]={age:r.age,isFresh:r.isFresh,hasData:r.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),N=t(13626),w=t(23293),y=t(6521),k=t(53610),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},r=[],a=[],l=[];s.map((e,s)=>{var t;r.push(null!==(t=e.property.toLowerCase())&&void 0!==t?t:""),a.push(e.operator),l.push(e.value)}),t.property=r,t.operator=a,t.value=l,e.replace({pathname:e.pathname,query:t},void 0,{shallow:!0})},F=(e,s)=>{let t={...e.query},r=t.property,a=t.operator,l=t.value;if(void 0===r)return[];let n=[],i=Array.isArray(r)?r.length:1;if(1===i)n.push({property:s.get(r),operator:a,value:l});else for(let e=0;e<i;e++)n.push({property:s.get(r[e]),operator:a[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,a.useRef)(null),u=(0,a.useRef)(null),[h,x]=(0,a.useState)(!1),[m,p]=(0,a.useState)(""),[j,f]=(0,a.useState)((null===(s=l[0])||void 0===s?void 0:s.value)||"status"),[g,b]=(0,a.useState)([]);(0,a.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,a.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},N=e=>{i(s=>{let t=[...s,{property:v(j),operator:":",value:e}];return c(t),t}),x(!1),p(""),d.current.focus()};return(0,r.jsxs)("div",{className:"flex flex-row border border-gray-300 rounded-md overflow-visible",children:[(0,r.jsx)("div",{className:"border-r border-gray-300 flex-shrink-0",children:(0,r.jsxs)(R.Ph,{onValueChange:f,value:j,children:[(0,r.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,r.jsx)(R.ki,{placeholder:(null===(t=l[0])||void 0===t?void 0:t.label)||"Status"})}),(0,r.jsx)(R.Bw,{children:l.map((e,s)=>(0,r.jsx)(R.Ql,{value:e.value,children:e.label},"property-item-".concat(s)))})]})}),(0,r.jsxs)("div",{className:"relative flex-1",children:[(0,r.jsx)("input",{type:"text",ref: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,r.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,r.jsx)("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})}),h&&g.length>0&&(0,r.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,r.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:()=>N(e),children:(0,r.jsx)("span",{className:"text-sm text-gray-700",children:e})},"".concat(e,"-").concat(s)))})]})]})},I=e=>{let{filters:s=[],setFilters:t,updateURLParams:a}=e,l=e=>{t(s=>{let t=s.filter((s,t)=>t!==e);return a(t),t})};return(0,r.jsx)(r.Fragment,{children:(0,r.jsx)("div",{className:"flex items-center gap-4 py-2 px-2",children:(0,r.jsxs)("div",{className:"flex flex-wrap items-content gap-2",children:[s.map((e,s)=>(0,r.jsx)(A,{filter:e,onRemove:()=>l(s)},"filteritem-".concat(s))),s.length>0&&(0,r.jsx)(r.Fragment,{children:(0,r.jsx)("button",{onClick:()=>{a([]),t([])},className:"rounded-full px-4 py-1 text-sm text-gray-700 bg-gray-200 hover:bg-gray-300",children:"Clear filters"})})]})})})},A=e=>{let{filter:s,onRemove:t}=e;return(0,r.jsx)(r.Fragment,{children:(0,r.jsxs)("div",{className:"flex items-center text-blue-600 bg-blue-100 px-1 py-1 rounded-full text-sm",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1 px-2",children:[(0,r.jsx)("span",{children:"".concat(s.property," ")}),(0,r.jsx)("span",{children:"".concat(s.operator," ")}),(0,r.jsx)("span",{children:" ".concat(s.value)})]}),(0,r.jsx)("button",{onClick:()=>t(),className:"p-0.5 ml-1 transform text-gray-400 hover:text-gray-600 bg-blue-500 hover:bg-blue-600 rounded-full flex flex-col items-center",title:"Clear filter",children:(0,r.jsx)("svg",{className:"h-3 w-3",fill:"none",stroke:"white",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:5,d:"M6 18L18 6M6 6l12 12"})})})]})})},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 U(e,s){if(!s||""===s.trim())return e;let t=s.toLowerCase().trim();return e.filter(e=>(e.name||"").toLowerCase().includes(t))}function J(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,r.jsx)(h.Zg,{date:s})};function Z(){let e=(0,l.useRouter)(),[s,t]=(0,a.useState)(!1),[n,c]=(0,a.useState)(!0),[o,d]=(0,a.useState)(!0),u=a.useRef(null),x=a.useRef(null),[j,g]=(0,a.useState)([]),[N,w]=(0,a.useState)([]),y=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,a.useEffect)(()=>{y()},[]);let k=s=>{D(e,s)},C=a.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"),w(F(e,s))},[e,w]);return(0,a.useEffect)(()=>{e.isReady&&C()},[e.isReady,e.query.tab,C]),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mb-1",children:[(0,r.jsx)("div",{className:"text-base",children:(0,r.jsx)(i(),{href:"/jobs",className:"text-sky-blue hover:underline leading-none",children:"Managed Jobs"})}),(0,r.jsx)("div",{className:"w-full sm:w-auto",children:(0,r.jsx)(M,{propertyList:P,valueList:{},setFilters:w,updateURLParams:k,placeholder:"Filter jobs"})})]}),(0,r.jsx)(I,{filters:N,setFilters:w,updateURLParams:k}),(0,r.jsx)(B,{refreshInterval:h.yc,setLoading:t,refreshDataRef:u,filters:N,onRefresh:()=>{f.invalidateCache(),p.default.invalidate(m.vs,[{}]),p.default.invalidate(b.fX),p.default.invalidate(v.R),y(!0),u.current&&u.current(),x.current&&x.current()},poolsData:j,poolsLoading:n}),(0,r.jsx)("div",{className:"mb-4",children:(0,r.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,[y,k]=(0,a.useState)([]),[R,D]=(0,a.useState)(0),[F,M]=(0,a.useState)(0),[I,A]=(0,a.useState)({key:null,direction:"ascending"}),[P,U]=(0,a.useState)(!1),[J,W]=(0,a.useState)(!0),[O,Z]=(0,a.useState)(1),[B,K]=(0,a.useState)(10),[V,X]=(0,a.useState)(null),Y=(0,a.useRef)(null),[Q,$]=(0,a.useState)([]),[ee,es]=(0,a.useState)({}),[et,er]=(0,a.useState)({}),[ea,el]=(0,a.useState)(!1),[en,ei]=(0,a.useState)(!1),[ec,eo]=(0,a.useState)(!1),[ed,eu]=(0,a.useState)("all"),[eh,ex]=(0,a.useState)(!0),[em,ep]=(0,a.useState)({isOpen:!1,title:"",message:"",onConfirm:null}),ej=(0,E.X)(),ef=async()=>{ep({isOpen:!0,title:"Restart Controller",message:"Are you sure you want to restart the controller?",onConfirm:async()=>{try{eo(!0),U(!0),await (0,m.Ce)("restartcontroller"),await eg()}catch(e){console.error("Error restarting controller:",e)}finally{eo(!1),U(!1)}}})},eg=a.useCallback(async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=!1!==e.includeStatus;U(!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};Q.length>0?t=Q:eh?"active"===ed?t=z.active:"finished"===ed&&(t=z.finished):t=[];let a={allUsers:!0,nameMatch:r("name"),userMatch:r("user"),workspaceMatch:r("workspace"),poolMatch:r("pool"),statuses:t,page:O,limit:B},l=null;if(f.isDataCached(a),f.isDataLoading(a),s){let[s,t]=await Promise.all([f.getPaginatedJobs(a),p.default.get(g.getClusters)]);e=s,l=t}else e=await f.getPaginatedJobs(a);let{jobs:i=[],total:c=0,totalNoFilter:o=0,controllerStopped:d=!1,cacheStatus:u="unknown",statusCounts:h={}}=e||{},x=!!d,m=!1;if(s&&l){let e=null==l?void 0:l.find(e=>(0,S.Ym)(e.cluster)),s=e?e.status:"NOT_FOUND";"STOPPED"==s&&d&&(x=!0),"LAUNCHING"==s&&(m=!0)}k(i),D(c||0),M(o||0),el(!!x),ei(!!m),er(h),W(!1)}catch(e){console.error("Error fetching data:",e),k([]),el(!1),W(!1)}finally{U(!1),t(!1)}},[t,n,O,B,Q,eh,ed]);a.useEffect(()=>{l&&(l.current=eg)},[l,eg]);let eb=a.useRef(eg);a.useEffect(()=>{eb.current=eg},[eg]),a.useEffect(()=>{eg({includeStatus:!0})},[]),a.useEffect(()=>{eg({includeStatus:!1})},[O]),a.useEffect(()=>{eg({includeStatus:!0})},[n,B]),a.useEffect(()=>{eg({includeStatus:!0})},[ed,Q,eh]),(0,a.useEffect)(()=>{let e=setInterval(()=>{eb.current&&eb.current({includeStatus:!0})},s);return()=>{clearInterval(e)}},[s]),(0,a.useEffect)(()=>{Z(1)},[ed]),(0,a.useEffect)(()=>{Z(1)},[n,B]),(0,a.useEffect)(()=>{$([]),ex(!0)},[ed]);let ev=e=>{let s="ascending";I.key===e&&"ascending"===I.direction&&(s="descending"),A({key:e,direction:s})},eN=e=>I.key===e?"ascending"===I.direction?" ↑":" ↓":"";a.useMemo(()=>{let e=y||[];return{active:e.filter(e=>z.active.includes(e.status)).length,finished:e.filter(e=>z.finished.includes(e.status)).length}},[y]);let ew=e=>Q.length>0?Q.includes(e):"all"===ed||z[ed].includes(e),ey=a.useMemo(()=>y,[y]),ek=a.useMemo(()=>I.key?[...ey].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):ey,[ey,I]),eC=(O-1)*B,eS=R>0?Math.ceil(R/B):0,e_=R>0?Math.min(eC+ek.length,R):0,eL=e=>{if(Q.includes(e)){let s=Q.filter(s=>s!==e);0===s.length?(ex(!0),$([])):($(s),ex(!1))}else $([...Q,e]),ex(!1);Z(1)};return(0,a.useEffect)(()=>{es(et)},[et]),(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)("div",{className:"flex flex-col space-y-1 mb-1",children:(0,r.jsxs)("div",{className:"flex flex-wrap items-center justify-between text-sm mb-1",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center",children:[(0,r.jsx)("span",{className:"mr-2 text-sm font-medium",children:"Statuses:"}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-2 items-center",children:[!P&&0===F&&!J&&(0,r.jsx)("span",{className:"text-gray-500 mr-2",children:"No jobs found"}),Object.entries(ee).map(e=>{let[s,t]=e;return(0,r.jsxs)("button",{onClick:()=>eL(s),className:"px-3 py-0.5 rounded-full flex items-center space-x-2 ".concat(ew(s)||Q.includes(s)?(0,_.Cl)(s):"bg-gray-50 text-gray-600 hover:bg-gray-100"),children:[(0,r.jsx)("span",{children:s}),(0,r.jsx)("span",{className:"text-xs ".concat(ew(s)||Q.includes(s)?"bg-white/50":"bg-gray-200"," px-1.5 py-0.5 rounded"),children:t})]},s)}),F>0&&(0,r.jsxs)("div",{className:"flex items-center ml-2 gap-2",children:[(0,r.jsx)("span",{className:"text-gray-500",children:"("}),(0,r.jsx)("button",{onClick:()=>{a.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,r.jsx)("span",{className:"text-gray-500 mx-1",children:"|"}),(0,r.jsx)("button",{onClick:()=>{a.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,r.jsx)("span",{className:"text-gray-500 mx-1",children:"|"}),(0,r.jsx)("button",{onClick:()=>{a.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,r.jsx)("span",{className:"text-gray-500",children:")"})]})]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[P&&(0,r.jsxs)("div",{className:"flex items-center",children:[(0,r.jsx)(c.Z,{size:15,className:"mt-0"}),(0,r.jsx)("span",{className:"ml-2 text-gray-500 text-sm",children:"Loading..."})]}),(0,r.jsxs)("button",{onClick:()=>{j&&j(),l&&l.current&&l.current()},disabled:P,className:"text-sky-blue hover:text-sky-blue-bright flex items-center text-sm",children:[(0,r.jsx)(N.Z,{className:"h-4 w-4 mr-1.5"}),(0,r.jsx)("span",{children:"Refresh"})]})]})]})}),ej&&ea&&0===ek.length&&!P&&!J&&(0,r.jsx)("div",{className:"mb-4 p-4 bg-gray-50 rounded-lg border",children:(0,r.jsxs)("div",{className:"flex flex-col items-center space-y-3",children:[(0,r.jsxs)("p",{className:"text-gray-700 text-center text-sm",children:["Job controller stopped.",(0,r.jsx)("br",{}),"Restart to check status."]}),(0,r.jsx)(o.z,{variant:"outline",size:"sm",onClick:ef,className:"text-sky-blue hover:text-sky-blue-bright",disabled:P||ec,children:ec?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(c.Z,{size:12,className:"mr-2"}),"Restarting..."]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(w.Z,{className:"h-4 w-4 mr-2"}),"Restart"]})})]})}),(0,r.jsx)(d.Zb,{children:(0,r.jsx)("div",{className:"overflow-x-auto rounded-lg",children:(0,r.jsxs)(u.iA,{className:"min-w-full",children:[(0,r.jsx)(u.xD,{children:(0,r.jsxs)(u.SC,{children:[(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ev("id"),children:["ID",eN("id")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ev("name"),children:["Name",eN("name")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ev("user"),children:["User",eN("user")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ev("workspace"),children:["Workspace",eN("workspace")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ev("submitted_at"),children:["Submitted",eN("submitted_at")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ev("job_duration"),children:["Duration",eN("job_duration")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ev("status"),children:["Status",eN("status")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ev("resources_str"),children:["Requested",eN("resources_str")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ev("infra"),children:["Infra",eN("infra")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ev("cluster"),children:["Resources",eN("cluster")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ev("recoveries"),children:["Recoveries",eN("recoveries")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>ev("pool"),children:["Worker Pool",eN("pool")]}),(0,r.jsx)(u.ss,{children:"Details"}),(0,r.jsx)(u.ss,{children:"Logs"})]})}),(0,r.jsx)(u.RM,{children:P&&J?(0,r.jsx)(u.SC,{children:(0,r.jsx)(u.pj,{colSpan:12,className:"text-center py-6 text-gray-500",children:(0,r.jsxs)("div",{className:"flex justify-center items-center",children:[(0,r.jsx)(c.Z,{size:20,className:"mr-2"}),(0,r.jsx)("span",{children:"Loading..."})]})})}):ek.length>0?(0,r.jsx)(r.Fragment,{children:ek.map(e=>(0,r.jsxs)(a.Fragment,{children:[(0,r.jsxs)(u.SC,{children:[(0,r.jsx)(u.pj,{children:(0,r.jsx)(i(),{href:"/jobs/".concat(e.id),className:"text-blue-600",children:e.id})}),(0,r.jsx)(u.pj,{children:(0,r.jsx)(i(),{href:"/jobs/".concat(e.id),className:"text-blue-600",children:e.name})}),(0,r.jsx)(u.pj,{children:(0,r.jsx)(L.H,{username:e.user,userHash:e.user_hash})}),(0,r.jsx)(u.pj,{children:(0,r.jsx)(i(),{href:"/workspaces",className:"text-gray-700 hover:text-blue-600 hover:underline",children:e.workspace||"default"})}),(0,r.jsx)(u.pj,{children:T(e.submitted_at)}),(0,r.jsx)(u.pj,{children:(0,h.LU)(e.job_duration)}),(0,r.jsx)(u.pj,{children:(0,r.jsx)(_.OE,{status:e.status})}),(0,r.jsx)(u.pj,{children:e.requested_resources}),(0,r.jsx)(u.pj,{children:e.infra&&"-"!==e.infra?(0,r.jsx)(h.Md,{content:e.full_infra||e.infra,className:"text-sm text-muted-foreground",children:(0,r.jsxs)("span",{children:[(0,r.jsx)(i(),{href:"/infra",className:"text-blue-600 hover:underline",children:e.cloud||e.infra.split("(")[0].trim()}),e.infra.includes("(")&&(0,r.jsx)("span",{children:" "+(()=>{let s=x.MO.NAME_TRUNCATE_LENGTH,t=e.infra.substring(e.infra.indexOf("(")),r=t.substring(1,t.length-1);if(r.length<=s)return t;let a="".concat(r.substring(0,Math.floor((s-3)/2)),"...").concat(r.substring(r.length-Math.ceil((s-3)/2)));return"(".concat(a,")")})()})]})}):(0,r.jsx)("span",{children:e.infra||"-"})}),(0,r.jsx)(u.pj,{children:(0,r.jsx)(h.Md,{content:e.resources_str_full||e.resources_str,className:"text-sm text-muted-foreground",children:(0,r.jsx)("span",{children:e.resources_str})})}),(0,r.jsx)(u.pj,{children:e.recoveries}),(0,r.jsx)(u.pj,{children:(0,r.jsx)("div",{className:v?"blur-sm transition-all duration-300":"",children:v?"-":(0,h.os)(e.pool,e.pool_hash,b)})}),(0,r.jsx)(u.pj,{children:e.details?(0,r.jsx)(G,{text:e.details,rowId:e.id,expandedRowId:V,setExpandedRowId:X}):"-"}),(0,r.jsx)(u.pj,{children:(0,r.jsx)(q,{jobParent:"/jobs",jobId:e.id,managed:!0})})]}),V===e.id&&(0,r.jsx)(H,{text:e.details,colSpan:13,innerRef:Y})]},e.task_job_id))}):(0,r.jsx)(u.SC,{children:(0,r.jsx)(u.pj,{colSpan:13,className:"text-center py-6",children:(0,r.jsxs)("div",{className:"flex flex-col items-center space-y-4",children:[en&&(0,r.jsxs)("div",{className:"flex flex-col items-center space-y-2",children:[(0,r.jsx)("p",{className:"text-gray-700",children:"The managed job controller is launching. It will be ready shortly."}),(0,r.jsxs)("div",{className:"flex items-center",children:[(0,r.jsx)(c.Z,{size:12,className:"mr-2"}),(0,r.jsx)("span",{className:"text-gray-500",children:"Launching..."})]})]}),!ea&&!en&&(0,r.jsx)("p",{className:"text-gray-500",children:"No active jobs"}),!ej&&ea&&(0,r.jsxs)("div",{className:"flex flex-col items-center space-y-3 px-4",children:[(0,r.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,r.jsx)(o.z,{variant:"outline",size:"sm",onClick:ef,className:"text-sky-blue hover:text-sky-blue-bright",disabled:P||ec,children:ec?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(c.Z,{size:12,className:"mr-2"}),"Restarting..."]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(w.Z,{className:"h-4 w-4 mr-2"}),"Restart Controller"]})})]})]})})})})]})})}),(0,r.jsx)("div",{className:"flex justify-end items-center py-2 px-4 text-sm text-gray-700",children:(0,r.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,r.jsxs)("div",{className:"flex items-center",children:[(0,r.jsx)("span",{className:"mr-2",children:"Rows per page:"}),(0,r.jsxs)("div",{className:"relative inline-block",children:[(0,r.jsxs)("select",{value:B,onChange:e=>{K(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,r.jsx)("option",{value:10,children:"10"}),(0,r.jsx)("option",{value:30,children:"30"}),(0,r.jsx)("option",{value:50,children:"50"}),(0,r.jsx)("option",{value:100,children:"100"}),(0,r.jsx)("option",{value:200,children:"200"})]}),(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4 text-gray-500 absolute right-0 top-1/2 transform -translate-y-1/2 pointer-events-none",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})]}),(0,r.jsx)("div",{children:R>0?"".concat(eC+1," – ").concat(e_," of ").concat(R):"0 – 0 of 0"}),(0,r.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,r.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{Z(e=>Math.max(e-1,1))},disabled:1===O||!ek||0===ek.length,className:"text-gray-500 h-8 w-8 p-0",children:(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-left",children:(0,r.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,r.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{eS>0&&O<eS&&Z(e=>e+1)},disabled:0===eS||O>=eS||!ek||0===ek.length,className:"text-gray-500 h-8 w-8 p-0",children:(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-right",children:(0,r.jsx)("path",{d:"M9 18l6-6-6-6"})})})]})]})}),(0,r.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:a,managed:n}=e,i=(0,l.useRouter)(),c=(e,s)=>{e.preventDefault(),e.stopPropagation(),i.push({pathname:"".concat(t,"/").concat(a),query:{tab:s}})};return(0,r.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,r.jsx)(h.WH,{content:"View Job Logs",className:"capitalize text-sm text-muted-foreground",children:(0,r.jsxs)("button",{onClick:e=>c(e,"logs"),className:"text-sky-blue hover:text-sky-blue-bright font-medium inline-flex items-center h-8",children:[(0,r.jsx)(y.Z,{className:"w-4 h-4"}),s&&(0,r.jsx)("span",{className:"ml-1.5",children:"Logs"})]})},"logs"),n&&(0,r.jsx)(h.WH,{content:"View Controller Logs",className:"capitalize text-sm text-muted-foreground",children:(0,r.jsxs)("button",{onClick:e=>c(e,"controllerlogs"),className:"text-sky-blue hover:text-sky-blue-bright font-medium inline-flex items-center h-8",children:[(0,r.jsx)(k.Z,{className:"w-4 h-4"}),s&&(0,r.jsx)("span",{className:"ml-2",children:"Controller Logs"})]})},"controllerlogs")]})}function K(e){let{clusterName:s,clusterJobData:t,loading:l,refreshClusterJobsOnly:n,userFilter:x=null,nameFilter:m=null}=e,[p,j]=(0,a.useState)(null),[f,g]=(0,a.useState)({key:null,direction:"ascending"}),[b,v]=(0,a.useState)(1),[w,y]=(0,a.useState)(10),k=(0,a.useRef)(null),[C,S]=(0,a.useState)(null);(0,a.useEffect)(()=>{let e=e=>{p&&k.current&&!k.current.contains(e.target)&&j(null)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[p]);let E=a.useMemo(()=>{let e=t||[];return x&&"ALL_USERS"!==x&&(e=W(e,x)),m&&(e=U(e,m)),e},[t,x,m]);(0,a.useEffect)(()=>{JSON.stringify(t)!==JSON.stringify(C)&&S(t)},[t,C]);let R=a.useMemo(()=>f.key?[...E].sort((e,s)=>e[f.key]<s[f.key]?"ascending"===f.direction?-1:1:e[f.key]>s[f.key]?"ascending"===f.direction?1:-1:0):E,[E,f]),D=e=>{let s="ascending";f.key===e&&"ascending"===f.direction&&(s="descending"),g({key:e,direction:s})},F=e=>f.key===e?"ascending"===f.direction?" ↑":" ↓":"",M=Math.ceil(R.length/w),I=(b-1)*w,A=I+w,z=R.slice(I,A);return(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)(d.Zb,{children:[(0,r.jsxs)("div",{className:"flex items-center justify-between p-4",children:[(0,r.jsx)("h3",{className:"text-lg font-semibold",children:"Cluster Jobs"}),(0,r.jsx)("div",{className:"flex items-center",children:n&&(0,r.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,r.jsx)(N.Z,{className:"w-4 h-4 mr-1"}),"Refresh Jobs"]})})]}),(0,r.jsxs)(u.iA,{children:[(0,r.jsx)(u.xD,{children:(0,r.jsxs)(u.SC,{children:[(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>D("id"),children:["ID",F("id")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>D("job"),children:["Name",F("job")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>D("user"),children:["User",F("user")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>D("workspace"),children:["Workspace",F("workspace")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>D("submitted_at"),children:["Submitted",F("submitted_at")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>D("job_duration"),children:["Duration",F("job_duration")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>D("status"),children:["Status",F("status")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap",onClick:()=>D("resources"),children:["Resources",F("resources")]}),(0,r.jsx)(u.ss,{className:"whitespace-nowrap",children:"Logs"})]})}),(0,r.jsx)(u.RM,{children:l?(0,r.jsx)(u.SC,{children:(0,r.jsx)(u.pj,{colSpan:9,className:"text-center py-12 text-gray-500",children:(0,r.jsxs)("div",{className:"flex justify-center items-center",children:[(0,r.jsx)(c.Z,{size:24,className:"mr-2"}),(0,r.jsx)("span",{children:"Loading cluster jobs..."})]})})}):z.length>0?z.map(e=>(0,r.jsxs)(a.Fragment,{children:[(0,r.jsxs)(u.SC,{className:p===e.id?"selected-row":"",children:[(0,r.jsx)(u.pj,{children:(0,r.jsx)(i(),{href:"/clusters/".concat(s,"/").concat(e.id),className:"text-blue-600",children:e.id})}),(0,r.jsx)(u.pj,{children:(0,r.jsx)(i(),{href:"/clusters/".concat(s,"/").concat(e.id),className:"text-blue-600",children:(0,r.jsx)(G,{text:e.job||"Unnamed job",rowId:e.id,expandedRowId:p,setExpandedRowId:j})})}),(0,r.jsx)(u.pj,{children:(0,r.jsx)(L.H,{username:e.user,userHash:e.user_hash})}),(0,r.jsx)(u.pj,{children:(0,r.jsx)(i(),{href:"/workspaces",className:"text-gray-700 hover:text-blue-600 hover:underline",children:e.workspace||"default"})}),(0,r.jsx)(u.pj,{children:T(e.submitted_at)}),(0,r.jsx)(u.pj,{children:(0,h.LU)(e.job_duration)}),(0,r.jsx)(u.pj,{children:(0,r.jsx)(_.OE,{status:e.status})}),(0,r.jsx)(u.pj,{children:e.resources}),(0,r.jsx)(u.pj,{className:"flex content-center items-center",children:(0,r.jsx)(q,{jobParent:"/clusters/".concat(s),jobId:e.id,managed:!1})})]}),p===e.id&&(0,r.jsx)(H,{text:e.job||"Unnamed job",colSpan:9,innerRef:k})]},e.id)):(0,r.jsx)(u.SC,{children:(0,r.jsx)(u.pj,{colSpan:8,className:"text-center py-6 text-gray-500",children:"No jobs found"})})})]})]}),R&&R.length>0&&(0,r.jsx)("div",{className:"flex justify-end items-center py-2 px-4 text-sm text-gray-700",children:(0,r.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,r.jsxs)("div",{className:"flex items-center",children:[(0,r.jsx)("span",{className:"mr-2",children:"Rows per page:"}),(0,r.jsxs)("div",{className:"relative inline-block",children:[(0,r.jsxs)("select",{value:w,onChange:e=>{y(parseInt(e.target.value,10)),v(1)},className:"py-1 pl-2 pr-6 appearance-none outline-none cursor-pointer border-none bg-transparent",style:{minWidth:"40px"},children:[(0,r.jsx)("option",{value:5,children:"5"}),(0,r.jsx)("option",{value:10,children:"10"}),(0,r.jsx)("option",{value:20,children:"20"}),(0,r.jsx)("option",{value:50,children:"50"})]}),(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4 text-gray-500 absolute right-0 top-1/2 transform -translate-y-1/2 pointer-events-none",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})]}),(0,r.jsxs)("div",{children:[I+1," – ",Math.min(A,R.length)," of"," ",R.length]}),(0,r.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,r.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{v(e=>Math.max(e-1,1))},disabled:1===b,className:"text-gray-500 h-8 w-8 p-0",children:(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-left",children:(0,r.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,r.jsx)(o.z,{variant:"ghost",size:"icon",onClick:()=>{v(e=>Math.min(e+1,M))},disabled:b===M||0===M,className:"text-gray-500 h-8 w-8 p-0",children:(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-right",children:(0,r.jsx)("path",{d:"M9 18l6-6-6-6"})})})]})]})})]})}function H(e){let{text:s,colSpan:t,innerRef:a}=e;return(0,r.jsx)(u.SC,{className:"expanded-details",children:(0,r.jsx)(u.pj,{colSpan:t,children:(0,r.jsx)("div",{className:"p-4 bg-gray-50 rounded-md border border-gray-200",ref:a,children:(0,r.jsx)("div",{className:"flex justify-between items-start",children:(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("p",{className:"text-sm font-medium text-gray-900",children:"Full Details"}),(0,r.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,a.useRef)(null);return(0,r.jsxs)("div",{className:"truncated-details relative max-w-full flex items-center",children:[(0,r.jsx)("span",{className:"truncate",children:d}),c&&(0,r.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,a.useState)([]),[x,j]=(0,a.useState)({key:null,direction:"ascending"}),[f,g]=(0,a.useState)(!1),[b,v]=(0,a.useState)(!0),[N,w]=(0,a.useState)(1),[y,k]=(0,a.useState)(10),C=a.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]);a.useEffect(()=>{l&&(l.current=C)},[l,C]),(0,a.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=a.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/y),D=(N-1)*y,F=D+y,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,r.jsx)(h.x9,{jobCounts:s,getStatusStyle:_.Cl})},z=e=>{let{replicaInfo:s}=e;return(0,r.jsx)(h.Kl,{replicaInfo:s})};return(0,r.jsxs)(d.Zb,{children:[(0,r.jsx)("div",{className:"overflow-x-auto rounded-lg",children:(0,r.jsxs)(u.iA,{className:"min-w-full table-fixed",children:[(0,r.jsx)(u.xD,{children:(0,r.jsxs)(u.SC,{children:[(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap w-32",onClick:()=>S("name"),children:["Pool",L("name")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap w-40",onClick:()=>S("job_counts"),children:["Jobs",L("job_counts")]}),(0,r.jsx)(u.ss,{className:"whitespace-nowrap w-20",children:"Workers"}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap w-36",onClick:()=>S("requested_resources_str"),children:["Worker Details",L("requested_resources_str")]}),(0,r.jsxs)(u.ss,{className:"sortable whitespace-nowrap w-40",onClick:()=>S("requested_resources_str"),children:["Worker Resources",L("requested_resources_str")]})]})}),(0,r.jsx)(u.RM,{children:f&&b?(0,r.jsx)(u.SC,{children:(0,r.jsx)(u.pj,{colSpan:5,className:"text-center py-6 text-gray-500",children:(0,r.jsxs)("div",{className:"flex justify-center items-center",children:[(0,r.jsx)(c.Z,{size:20,className:"mr-2"}),(0,r.jsx)("span",{children:"Loading..."})]})})}):M.length>0?M.map(e=>(0,r.jsxs)(u.SC,{children:[(0,r.jsx)(u.pj,{children:(0,r.jsx)(i(),{href:"/jobs/pools/".concat(e.name),className:"text-blue-600 hover:text-blue-800",children:e.name})}),(0,r.jsx)(u.pj,{children:(0,r.jsx)(A,{jobCounts:e.jobCounts})}),(0,r.jsx)(u.pj,{children:I(e)}),(0,r.jsx)(u.pj,{children:(0,r.jsx)(z,{replicaInfo:e.replica_info})}),(0,r.jsx)(u.pj,{children:e.requested_resources_str||"-"})]},e.name)):(0,r.jsx)(u.SC,{children:(0,r.jsx)(u.pj,{colSpan:5,className:"text-center py-6 text-gray-500",children:"No pools found"})})})]})}),M.length>0&&R>1&&(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-t border-gray-200",children:[(0,r.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,r.jsx)("span",{className:"text-sm text-gray-700",children:"Rows per page:"}),(0,r.jsxs)("select",{value:y,onChange:e=>{k(parseInt(e.target.value,10)),w(1)},className:"border border-gray-300 rounded px-2 py-1 text-sm",children:[(0,r.jsx)("option",{value:5,children:"5"}),(0,r.jsx)("option",{value:10,children:"10"}),(0,r.jsx)("option",{value:25,children:"25"}),(0,r.jsx)("option",{value:50,children:"50"})]})]}),(0,r.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,r.jsxs)("span",{className:"text-sm text-gray-700",children:[D+1,"-",Math.min(F,E.length)," of"," ",E.length]}),(0,r.jsx)("button",{onClick:()=>{w(e=>Math.max(e-1,1))},disabled:1===N,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,r.jsx)("button",{onClick:()=>{w(e=>Math.min(e+1,R))},disabled:N===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"})]})]})]})}}}]);
|