skypilot-nightly 1.0.0.dev20250617__tar.gz → 1.0.0.dev20250618__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.
- {skypilot_nightly-1.0.0.dev20250617/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250618}/PKG-INFO +9 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/__init__.py +2 -2
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/backends/backend_utils.py +7 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/backends/cloud_vm_ray_backend.py +48 -36
- skypilot_nightly-1.0.0.dev20250618/sky/cli.py +9 -0
- {skypilot_nightly-1.0.0.dev20250617/sky → skypilot_nightly-1.0.0.dev20250618/sky/client}/cli.py +11 -2
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/client/sdk.py +22 -2
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/kubernetes.py +5 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/404.html +1 -1
- {skypilot_nightly-1.0.0.dev20250617/sky/dashboard/out/_next/static/vA3PPpkBwpRTRNBHFYAw_ → skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/LRpGymRCqq-feuFyoWz4m}/_buildManifest.js +1 -1
- skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/chunks/641.c8e452bc5070a630.js +1 -0
- skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/chunks/984.ae8c08791d274ca0.js +50 -0
- skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/chunks/pages/users-928edf039219e47b.js +1 -0
- skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/chunks/webpack-ebc2404fd6ce581c.js +1 -0
- skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/css/6c12ecc3bd2239b6.css +3 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/clusters/[cluster].html +1 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/clusters.html +1 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/config.html +1 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/index.html +1 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/infra/[context].html +1 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/infra.html +1 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/jobs/[job].html +1 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/jobs.html +1 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/users.html +1 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/workspace/new.html +1 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/workspaces/[name].html +1 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/workspaces.html +1 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/global_user_state.py +50 -11
- skypilot_nightly-1.0.0.dev20250618/sky/logs/__init__.py +17 -0
- skypilot_nightly-1.0.0.dev20250618/sky/logs/agent.py +73 -0
- skypilot_nightly-1.0.0.dev20250618/sky/logs/gcp.py +91 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/models.py +1 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/instance_setup.py +35 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/provisioner.py +11 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/common.py +21 -9
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/requests/payloads.py +19 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/server.py +121 -29
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/setup_files/dependencies.py +11 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/constants.py +9 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/job_lib.py +75 -19
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/kubernetes-ray.yml.j2 +9 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/users/permission.py +49 -19
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/users/rbac.py +10 -1
- skypilot_nightly-1.0.0.dev20250618/sky/users/server.py +332 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/schemas.py +40 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618/skypilot_nightly.egg-info}/PKG-INFO +9 -1
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/skypilot_nightly.egg-info/SOURCES.txt +18 -12
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/skypilot_nightly.egg-info/requires.txt +9 -0
- skypilot_nightly-1.0.0.dev20250618/tests/test_api_compatibility.py +435 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_cli.py +1 -65
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_jobs_and_serve.py +1 -1
- skypilot_nightly-1.0.0.dev20250618/tests/test_no_parellel.py +100 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_optimizer_dryruns.py +1 -26
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_optimizer_random_dag.py +6 -6
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_smoke.py +1 -0
- skypilot_nightly-1.0.0.dev20250617/sky/client/cli.py +0 -5733
- skypilot_nightly-1.0.0.dev20250617/sky/dashboard/out/_next/static/chunks/600.bd2ed8c076b720ec.js +0 -16
- skypilot_nightly-1.0.0.dev20250617/sky/dashboard/out/_next/static/chunks/pages/users-c69ffcab9d6e5269.js +0 -1
- skypilot_nightly-1.0.0.dev20250617/sky/dashboard/out/_next/static/chunks/webpack-1b69b196a4dbffef.js +0 -1
- skypilot_nightly-1.0.0.dev20250617/sky/dashboard/out/_next/static/css/8e97adcaacc15293.css +0 -3
- skypilot_nightly-1.0.0.dev20250617/sky/users/server.py +0 -67
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/README.md +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/pyproject.toml +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/setup.cfg +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/cloudflare.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/docker.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/hyperbolic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/adaptors/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/admin_policy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/authentication.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/backends/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/backends/backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/backends/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/backends/local_docker_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/backends/wheel_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/aws_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/azure_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/cudo_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/data_fetchers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/data_fetchers/analyze.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/data_fetchers/fetch_aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/data_fetchers/fetch_azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/data_fetchers/fetch_cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/data_fetchers/fetch_fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/data_fetchers/fetch_gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/data_fetchers/fetch_hyperbolic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/data_fetchers/fetch_ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/data_fetchers/fetch_vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/data_fetchers/fetch_vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/do_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/fluidstack_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/gcp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/hyperbolic_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/ibm_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/kubernetes_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/lambda_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/nebius_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/oci_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/paperspace_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/runpod_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/scp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/ssh_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/vast_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/catalog/vsphere_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/check.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/client/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/client/oauth.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/cloud_stores.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/do.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/hyperbolic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/nebius.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/paperspace.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/scp.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/ssh.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/utils/aws_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/utils/azure_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/utils/gcp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/utils/oci_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/utils/scp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/vast.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617/sky/dashboard/out/_next/static/vA3PPpkBwpRTRNBHFYAw_ → skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/LRpGymRCqq-feuFyoWz4m}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/211.692afc57e812ae1a.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/350.9e123a4551f68b0d.js +0 -0
- /skypilot_nightly-1.0.0.dev20250617/sky/dashboard/out/_next/static/chunks/37-824c707421f6f003.js → /skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/chunks/37-3a4d77ad62932eaf.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/42.d39e24467181b06b.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/443.b2242d0efcdf5f47.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/470-4d1a5dbe58a8a2b9.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/491.b3d264269613fe09.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/513.211357a2914a34b2.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/616-d6128fa9e7cae6e6.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/664-047bc03493fda379.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/682.4dd5dc116f740b5f.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/760-a89d354797ce7af5.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/798-c0525dc3f21e488d.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/799-3625946b2ec2eb30.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/804-4c9fc53aa74bc191.js +0 -0
- /skypilot_nightly-1.0.0.dev20250617/sky/dashboard/out/_next/static/chunks/843-ab9c4f609239155f.js → /skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/chunks/843-b3040e493f6e7947.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/856-c2c39c0912285e54.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/901-b424d293275e1fd7.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/937.3759f538f11a0953.js +0 -0
- /skypilot_nightly-1.0.0.dev20250617/sky/dashboard/out/_next/static/chunks/938-385d190b95815e11.js → /skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/chunks/938-1493ac755eadeb35.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/947-6620842ef80ae879.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/969-20d54a9d998dc102.js +0 -0
- /skypilot_nightly-1.0.0.dev20250617/sky/dashboard/out/_next/static/chunks/973-c807fc34f09c7df3.js → /skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/chunks/973-db3c97c2bfbceb65.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/fd9d1056-2821b0f0cabcd8bd.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/framework-87d061ee6ed71b28.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/main-app-241eb28595532291.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/main-e0e2335212e72357.js +0 -0
- /skypilot_nightly-1.0.0.dev20250617/sky/dashboard/out/_next/static/chunks/pages/_app-32b2caae3445bf3b.js → /skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/chunks/pages/_app-c416e87d5c2715cf.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/pages/_error-1be831200e60c5c0.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-89216c616dbaa9c5.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-36bc0962129f72df.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/pages/clusters-82a651dbad53ec6e.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/pages/config-497a35a7ed49734a.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/pages/index-6b0d9e5031b70c58.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/pages/infra/[context]-d2910be98e9227cb.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/pages/infra-780860bcc1103945.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-cf490d1fa38f3740.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/pages/jobs-336ab80e270ce2ce.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/pages/workspace/new-31aa8bdcb7592635.js +0 -0
- /skypilot_nightly-1.0.0.dev20250617/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-c8c2191328532b7d.js → /skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-c4ff1ec05e2f3daf.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/pages/workspaces-82e6601baa5dd280.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/favicon.ico +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/skypilot.svg +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/dashboard/out/videos/cursor-small.mp4 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/data/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/data/data_transfer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/data/data_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/data/mounting_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/data/storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/data/storage_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/exceptions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/execution.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/jobs/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/jobs/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/jobs/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/jobs/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/jobs/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/jobs/recovery_strategy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/jobs/scheduler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/jobs/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/jobs/server/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/jobs/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/jobs/state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/jobs/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/optimizer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/aws/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/aws/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/aws/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/azure/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/azure/azure-config-template.json +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/azure/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/azure/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/cudo/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/cudo/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/cudo/cudo_machine_type.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/cudo/cudo_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/cudo/cudo_wrapper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/cudo/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/do/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/do/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/do/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/do/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/do/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/fluidstack/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/fluidstack/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/fluidstack/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/gcp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/gcp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/gcp/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/gcp/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/gcp/instance_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/gcp/mig_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/gcp/volume_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/hyperbolic/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/hyperbolic/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/hyperbolic/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/hyperbolic/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/kubernetes/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/kubernetes/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/kubernetes/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/kubernetes/network.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/kubernetes/network_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/kubernetes/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/lambda_cloud/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/lambda_cloud/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/lambda_cloud/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/nebius/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/nebius/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/nebius/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/nebius/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/nebius/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/oci/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/oci/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/oci/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/oci/query_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/paperspace/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/paperspace/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/paperspace/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/paperspace/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/paperspace/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/runpod/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/runpod/api/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/runpod/api/commands.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/runpod/api/pods.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/runpod/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/runpod/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/runpod/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/scp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/scp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/scp/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/ssh/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vast/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vast/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vast/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vast/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vsphere/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vsphere/common/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vsphere/common/cls_api_client.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vsphere/common/custom_script.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vsphere/common/id_generator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vsphere/common/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vsphere/common/service_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vsphere/common/ssl_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vsphere/common/vapiconnect.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vsphere/common/vim_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vsphere/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vsphere/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/provision/vsphere/vsphere_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/resources.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/autoscalers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/client/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/client/sdk.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/load_balancer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/load_balancing_policies.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/replica_managers.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/serve_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/serve_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/server/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/server/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/service.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/service_spec.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/serve/spot_placer.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/html/log.html +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/html/token_page.html +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/requests/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/requests/event_loop.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/requests/executor.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/requests/preconditions.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/requests/process.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/requests/queues/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/requests/queues/local_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/requests/queues/mp_queue.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/requests/requests.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/requests/serializers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/requests/serializers/decoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/requests/serializers/encoders.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/stream_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/server/uvicorn.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/setup_files/MANIFEST.in +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/setup_files/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/sky_logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/attempt_skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/autostop_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/configs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/events.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/log_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/log_lib.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/providers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/providers/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/providers/ibm/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/providers/ibm/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/providers/ibm/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/ray_patches/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/ray_patches/cli.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/ray_patches/updater.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/ray_patches/worker.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skylet/subprocess_daemon.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/skypilot_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/task.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/aws-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/azure-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/cudo-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/do-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/fluidstack-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/gcp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/hyperbolic-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/ibm-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/jobs-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/lambda-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/local-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/nebius-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/oci-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/paperspace-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/runpod-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/scp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/vast-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/vsphere-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/templates/websocket_proxy.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/usage/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/usage/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/usage/usage_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/users/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/users/model.conf +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/accelerator_registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/admin_policy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/annotations.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/atomic.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/aws/get_default_security_group.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/cli_utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/cli_utils/status_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/cluster_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/command_runner.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/common_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/config_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/context.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/context_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/control_master_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/controller_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/dag_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/db_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/env_options.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/infra_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/cleanup-tunnel.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/config_map_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/create_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/delete_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/deploy_remote_cluster.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/generate_kind_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/gpu_labeler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/rsync_helper.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/ssh-tunnel.sh +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/kubernetes_enums.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/log_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/message_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/resources_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/rich_console_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/rich_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/status_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/subprocess_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/timeline.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/ux_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/utils/validator.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/workspaces/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/workspaces/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/workspaces/server.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/workspaces/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/skypilot_nightly.egg-info/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/skypilot_nightly.egg-info/top_level.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_api.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_db_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_failover.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_jobs.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_list_accelerators.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_serve_autoscaler.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_wheels.py +0 -0
- {skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/tests/test_yaml_parser.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: skypilot-nightly
|
3
|
-
Version: 1.0.0.
|
3
|
+
Version: 1.0.0.dev20250618
|
4
4
|
Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
|
5
5
|
Author: SkyPilot Team
|
6
6
|
License: Apache 2.0
|
@@ -51,6 +51,7 @@ Requires-Dist: sqlalchemy
|
|
51
51
|
Requires-Dist: psycopg2-binary
|
52
52
|
Requires-Dist: casbin
|
53
53
|
Requires-Dist: sqlalchemy_adapter
|
54
|
+
Requires-Dist: passlib
|
54
55
|
Provides-Extra: aws
|
55
56
|
Requires-Dist: awscli>=1.27.10; extra == "aws"
|
56
57
|
Requires-Dist: botocore>=1.29.10; extra == "aws"
|
@@ -120,6 +121,10 @@ Requires-Dist: botocore>=1.29.10; extra == "nebius"
|
|
120
121
|
Requires-Dist: boto3>=1.26.1; extra == "nebius"
|
121
122
|
Requires-Dist: colorama<0.4.5; extra == "nebius"
|
122
123
|
Provides-Extra: hyperbolic
|
124
|
+
Provides-Extra: server
|
125
|
+
Requires-Dist: casbin; extra == "server"
|
126
|
+
Requires-Dist: sqlalchemy_adapter; extra == "server"
|
127
|
+
Requires-Dist: passlib; extra == "server"
|
123
128
|
Provides-Extra: all
|
124
129
|
Requires-Dist: awscli>=1.27.10; extra == "all"
|
125
130
|
Requires-Dist: botocore>=1.29.10; extra == "all"
|
@@ -169,6 +174,9 @@ Requires-Dist: awscli>=1.27.10; extra == "all"
|
|
169
174
|
Requires-Dist: botocore>=1.29.10; extra == "all"
|
170
175
|
Requires-Dist: boto3>=1.26.1; extra == "all"
|
171
176
|
Requires-Dist: colorama<0.4.5; extra == "all"
|
177
|
+
Requires-Dist: casbin; extra == "all"
|
178
|
+
Requires-Dist: sqlalchemy_adapter; extra == "all"
|
179
|
+
Requires-Dist: passlib; extra == "all"
|
172
180
|
Dynamic: author
|
173
181
|
Dynamic: classifier
|
174
182
|
Dynamic: description
|
@@ -5,7 +5,7 @@ from typing import Optional
|
|
5
5
|
import urllib.request
|
6
6
|
|
7
7
|
# Replaced with the current commit when building the wheels.
|
8
|
-
_SKYPILOT_COMMIT_SHA = '
|
8
|
+
_SKYPILOT_COMMIT_SHA = '903f8a7f3955084316b26af619b6b043f43de01c'
|
9
9
|
|
10
10
|
|
11
11
|
def _get_git_commit():
|
@@ -35,7 +35,7 @@ def _get_git_commit():
|
|
35
35
|
|
36
36
|
|
37
37
|
__commit__ = _get_git_commit()
|
38
|
-
__version__ = '1.0.0.
|
38
|
+
__version__ = '1.0.0.dev20250618'
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
40
40
|
|
41
41
|
|
@@ -28,6 +28,7 @@ from sky import check as sky_check
|
|
28
28
|
from sky import clouds
|
29
29
|
from sky import exceptions
|
30
30
|
from sky import global_user_state
|
31
|
+
from sky import logs
|
31
32
|
from sky import provision as provision_lib
|
32
33
|
from sky import sky_logging
|
33
34
|
from sky import skypilot_config
|
@@ -660,6 +661,12 @@ def write_cluster_config(
|
|
660
661
|
|
661
662
|
credentials = sky_check.get_cloud_credential_file_mounts(excluded_clouds)
|
662
663
|
|
664
|
+
logging_agent = logs.get_logging_agent()
|
665
|
+
if logging_agent:
|
666
|
+
for k, v in logging_agent.get_credential_file_mounts().items():
|
667
|
+
assert k not in credentials, f'{k} already in credentials'
|
668
|
+
credentials[k] = v
|
669
|
+
|
663
670
|
private_key_path, _ = auth.get_or_generate_keys()
|
664
671
|
auth_config = {'ssh_private_key': private_key_path}
|
665
672
|
region_name = resources_vars.get('region')
|
@@ -142,6 +142,7 @@ _MAX_RAY_UP_RETRY = 5
|
|
142
142
|
_MAX_GET_ZONE_RETRY = 3
|
143
143
|
|
144
144
|
_JOB_ID_PATTERN = re.compile(r'Job ID: ([0-9]+)')
|
145
|
+
_LOG_DIR_PATTERN = re.compile(r'Log Dir: ([^ ]+)')
|
145
146
|
|
146
147
|
# Path to the monkey-patched ray up script.
|
147
148
|
# We don't do import then __file__ because that script needs to be filled in
|
@@ -3461,10 +3462,12 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
3461
3462
|
job_id: int,
|
3462
3463
|
detach_run: bool = False,
|
3463
3464
|
managed_job_dag: Optional['dag.Dag'] = None,
|
3465
|
+
remote_log_dir: Optional[str] = None,
|
3464
3466
|
) -> None:
|
3465
3467
|
"""Executes generated code on the head node."""
|
3466
3468
|
script_path = os.path.join(SKY_REMOTE_APP_DIR, f'sky_job_{job_id}')
|
3467
|
-
remote_log_dir
|
3469
|
+
if remote_log_dir is None:
|
3470
|
+
remote_log_dir = self.log_dir
|
3468
3471
|
remote_log_path = os.path.join(remote_log_dir, 'run.log')
|
3469
3472
|
|
3470
3473
|
cd = f'cd {SKY_REMOTE_WORKDIR}'
|
@@ -3583,13 +3586,14 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
3583
3586
|
self.tail_logs(handle, job_id)
|
3584
3587
|
|
3585
3588
|
def _add_job(self, handle: CloudVmRayResourceHandle,
|
3586
|
-
job_name: Optional[str],
|
3589
|
+
job_name: Optional[str],
|
3590
|
+
resources_str: str) -> Tuple[int, str]:
|
3587
3591
|
code = job_lib.JobLibCodeGen.add_job(
|
3588
3592
|
job_name=job_name,
|
3589
3593
|
username=common_utils.get_user_hash(),
|
3590
3594
|
run_timestamp=self.run_timestamp,
|
3591
3595
|
resources_str=resources_str)
|
3592
|
-
returncode,
|
3596
|
+
returncode, result_str, stderr = self.run_on_head(handle,
|
3593
3597
|
code,
|
3594
3598
|
stream_logs=False,
|
3595
3599
|
require_outputs=True,
|
@@ -3603,17 +3607,23 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
3603
3607
|
subprocess_utils.handle_returncode(returncode, code,
|
3604
3608
|
'Failed to fetch job id.', stderr)
|
3605
3609
|
try:
|
3606
|
-
job_id_match = _JOB_ID_PATTERN.search(
|
3610
|
+
job_id_match = _JOB_ID_PATTERN.search(result_str)
|
3607
3611
|
if job_id_match is not None:
|
3608
3612
|
job_id = int(job_id_match.group(1))
|
3609
3613
|
else:
|
3610
3614
|
# For backward compatibility.
|
3611
|
-
job_id = int(
|
3615
|
+
job_id = int(result_str)
|
3616
|
+
log_dir_match = _LOG_DIR_PATTERN.search(result_str)
|
3617
|
+
if log_dir_match is not None:
|
3618
|
+
log_dir = log_dir_match.group(1).strip()
|
3619
|
+
else:
|
3620
|
+
# For backward compatibility, use the same log dir as local.
|
3621
|
+
log_dir = self.log_dir
|
3612
3622
|
except ValueError as e:
|
3613
3623
|
logger.error(stderr)
|
3614
|
-
raise ValueError(f'Failed to parse job id: {
|
3624
|
+
raise ValueError(f'Failed to parse job id: {result_str}; '
|
3615
3625
|
f'Returncode: {returncode}') from e
|
3616
|
-
return job_id
|
3626
|
+
return job_id, log_dir
|
3617
3627
|
|
3618
3628
|
def _execute(
|
3619
3629
|
self,
|
@@ -3665,15 +3675,17 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
3665
3675
|
logger.info(f'Dryrun complete. Would have run:\n{task}')
|
3666
3676
|
return None
|
3667
3677
|
|
3668
|
-
job_id = self._add_job(handle, task_copy.name, resources_str)
|
3678
|
+
job_id, log_dir = self._add_job(handle, task_copy.name, resources_str)
|
3669
3679
|
|
3670
3680
|
num_actual_nodes = task.num_nodes * handle.num_ips_per_node
|
3671
3681
|
# Case: task_lib.Task(run, num_nodes=N) or TPU VM Pods
|
3672
3682
|
if num_actual_nodes > 1:
|
3673
|
-
self._execute_task_n_nodes(handle, task_copy, job_id, detach_run
|
3683
|
+
self._execute_task_n_nodes(handle, task_copy, job_id, detach_run,
|
3684
|
+
log_dir)
|
3674
3685
|
else:
|
3675
3686
|
# Case: task_lib.Task(run, num_nodes=1)
|
3676
|
-
self._execute_task_one_node(handle, task_copy, job_id, detach_run
|
3687
|
+
self._execute_task_one_node(handle, task_copy, job_id, detach_run,
|
3688
|
+
log_dir)
|
3677
3689
|
|
3678
3690
|
return job_id
|
3679
3691
|
|
@@ -3836,32 +3848,32 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
3836
3848
|
Returns:
|
3837
3849
|
A dictionary mapping job_id to log path.
|
3838
3850
|
"""
|
3839
|
-
code = job_lib.JobLibCodeGen.
|
3840
|
-
returncode,
|
3841
|
-
|
3842
|
-
|
3843
|
-
|
3844
|
-
|
3845
|
-
separate_stderr=True)
|
3851
|
+
code = job_lib.JobLibCodeGen.get_log_dirs_for_jobs(job_ids)
|
3852
|
+
returncode, job_to_dir, stderr = self.run_on_head(handle,
|
3853
|
+
code,
|
3854
|
+
stream_logs=False,
|
3855
|
+
require_outputs=True,
|
3856
|
+
separate_stderr=True)
|
3846
3857
|
subprocess_utils.handle_returncode(returncode, code,
|
3847
3858
|
'Failed to sync logs.', stderr)
|
3848
|
-
|
3849
|
-
if not
|
3859
|
+
job_to_dir: Dict[str, str] = message_utils.decode_payload(job_to_dir)
|
3860
|
+
if not job_to_dir:
|
3850
3861
|
logger.info(f'{colorama.Fore.YELLOW}'
|
3851
3862
|
'No matching log directories found'
|
3852
3863
|
f'{colorama.Style.RESET_ALL}')
|
3853
3864
|
return {}
|
3854
3865
|
|
3855
|
-
job_ids = list(
|
3856
|
-
|
3866
|
+
job_ids = list(job_to_dir.keys())
|
3867
|
+
dirs = list(job_to_dir.values())
|
3857
3868
|
remote_log_dirs = [
|
3858
|
-
|
3859
|
-
|
3860
|
-
|
3861
|
-
|
3862
|
-
os.path.join(local_dir, run_timestamp)
|
3863
|
-
for run_timestamp in run_timestamps
|
3869
|
+
# TODO(aylei): backward compatibility for legacy runtime that
|
3870
|
+
# returns run_timestamp only, remove after 0.12.0
|
3871
|
+
(dir if constants.SKY_LOGS_DIRECTORY in dir else os.path.join(
|
3872
|
+
constants.SKY_LOGS_DIRECTORY, dir)) for dir in dirs
|
3864
3873
|
]
|
3874
|
+
local_log_dirs = [(dir.replace(constants.SKY_LOGS_DIRECTORY, local_dir)
|
3875
|
+
if constants.SKY_LOGS_DIRECTORY in dir else
|
3876
|
+
os.path.join(local_dir, dir)) for dir in dirs]
|
3865
3877
|
|
3866
3878
|
runners = handle.get_command_runners()
|
3867
3879
|
|
@@ -4033,8 +4045,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
4033
4045
|
|
4034
4046
|
# get the run_timestamp
|
4035
4047
|
# the function takes in [job_id]
|
4036
|
-
code = job_lib.JobLibCodeGen.
|
4037
|
-
[str(job_id)])
|
4048
|
+
code = job_lib.JobLibCodeGen.get_log_dirs_for_jobs([str(job_id)])
|
4038
4049
|
returncode, run_timestamps, stderr = self.run_on_head(
|
4039
4050
|
handle,
|
4040
4051
|
code,
|
@@ -5182,9 +5193,9 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
5182
5193
|
|
5183
5194
|
def _execute_task_one_node(self, handle: CloudVmRayResourceHandle,
|
5184
5195
|
task: task_lib.Task, job_id: int,
|
5185
|
-
detach_run: bool) -> None:
|
5196
|
+
detach_run: bool, remote_log_dir: str) -> None:
|
5186
5197
|
# Launch the command as a Ray task.
|
5187
|
-
log_dir = os.path.join(
|
5198
|
+
log_dir = os.path.join(remote_log_dir, 'tasks')
|
5188
5199
|
|
5189
5200
|
resources_dict = backend_utils.get_task_demands_dict(task)
|
5190
5201
|
internal_ips = handle.internal_ips()
|
@@ -5222,17 +5233,17 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
5222
5233
|
codegen.build(),
|
5223
5234
|
job_id,
|
5224
5235
|
detach_run=detach_run,
|
5225
|
-
managed_job_dag=task.managed_job_dag
|
5236
|
+
managed_job_dag=task.managed_job_dag,
|
5237
|
+
remote_log_dir=remote_log_dir)
|
5226
5238
|
|
5227
5239
|
def _execute_task_n_nodes(self, handle: CloudVmRayResourceHandle,
|
5228
5240
|
task: task_lib.Task, job_id: int,
|
5229
|
-
detach_run: bool) -> None:
|
5241
|
+
detach_run: bool, remote_log_dir: str) -> None:
|
5230
5242
|
# Strategy:
|
5231
5243
|
# ray.init(...)
|
5232
5244
|
# for node:
|
5233
5245
|
# submit _run_cmd(cmd) with resource {node_i: 1}
|
5234
|
-
|
5235
|
-
log_dir = os.path.join(log_dir_base, 'tasks')
|
5246
|
+
log_dir = os.path.join(remote_log_dir, 'tasks')
|
5236
5247
|
resources_dict = backend_utils.get_task_demands_dict(task)
|
5237
5248
|
internal_ips = handle.internal_ips()
|
5238
5249
|
assert internal_ips is not None, 'internal_ips is not cached in handle'
|
@@ -5278,4 +5289,5 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
5278
5289
|
codegen.build(),
|
5279
5290
|
job_id,
|
5280
5291
|
detach_run=detach_run,
|
5281
|
-
managed_job_dag=task.managed_job_dag
|
5292
|
+
managed_job_dag=task.managed_job_dag,
|
5293
|
+
remote_log_dir=remote_log_dir)
|
{skypilot_nightly-1.0.0.dev20250617/sky → skypilot_nightly-1.0.0.dev20250618/sky/client}/cli.py
RENAMED
@@ -5498,10 +5498,19 @@ def api():
|
|
5498
5498
|
'to manage the process lifecycle and collect logs directly. '
|
5499
5499
|
'This is useful when the API server is managed by systems '
|
5500
5500
|
'like systemd and Kubernetes.')
|
5501
|
+
@click.option('--enable-basic-auth',
|
5502
|
+
is_flag=True,
|
5503
|
+
default=False,
|
5504
|
+
required=False,
|
5505
|
+
help='Enable basic authentication in the SkyPilot API server.')
|
5501
5506
|
@usage_lib.entrypoint
|
5502
|
-
def api_start(deploy: bool, host: Optional[str], foreground: bool
|
5507
|
+
def api_start(deploy: bool, host: Optional[str], foreground: bool,
|
5508
|
+
enable_basic_auth: bool):
|
5503
5509
|
"""Starts the SkyPilot API server locally."""
|
5504
|
-
sdk.api_start(deploy=deploy,
|
5510
|
+
sdk.api_start(deploy=deploy,
|
5511
|
+
host=host,
|
5512
|
+
foreground=foreground,
|
5513
|
+
enable_basic_auth=enable_basic_auth)
|
5505
5514
|
|
5506
5515
|
|
5507
5516
|
@api.command('stop', cls=_DocumentedCodeCommand)
|
@@ -1856,6 +1856,7 @@ def api_start(
|
|
1856
1856
|
deploy: bool = False,
|
1857
1857
|
host: str = '127.0.0.1',
|
1858
1858
|
foreground: bool = False,
|
1859
|
+
enable_basic_auth: bool = False,
|
1859
1860
|
) -> None:
|
1860
1861
|
"""Starts the API server.
|
1861
1862
|
|
@@ -1869,6 +1870,8 @@ def api_start(
|
|
1869
1870
|
if deploy is True, to allow remote access.
|
1870
1871
|
foreground: Whether to run the API server in the foreground (run in
|
1871
1872
|
the current process).
|
1873
|
+
enable_basic_auth: Whether to enable basic authentication
|
1874
|
+
in the API server.
|
1872
1875
|
Returns:
|
1873
1876
|
None
|
1874
1877
|
"""
|
@@ -1887,7 +1890,8 @@ def api_start(
|
|
1887
1890
|
'from the config file and/or unset the '
|
1888
1891
|
'SKYPILOT_API_SERVER_ENDPOINT environment '
|
1889
1892
|
'variable.')
|
1890
|
-
server_common.check_server_healthy_or_start_fn(deploy, host, foreground
|
1893
|
+
server_common.check_server_healthy_or_start_fn(deploy, host, foreground,
|
1894
|
+
enable_basic_auth)
|
1891
1895
|
if foreground:
|
1892
1896
|
# Explain why current process exited
|
1893
1897
|
logger.info('API server is already running:')
|
@@ -1990,7 +1994,8 @@ def api_login(endpoint: Optional[str] = None, get_token: bool = False) -> None:
|
|
1990
1994
|
raise click.BadParameter('Endpoint must be a valid URL.')
|
1991
1995
|
endpoint = endpoint.rstrip('/')
|
1992
1996
|
|
1993
|
-
server_status = server_common.check_server_healthy(
|
1997
|
+
server_status, api_server_info = server_common.check_server_healthy(
|
1998
|
+
endpoint)
|
1994
1999
|
if server_status == server_common.ApiServerStatus.NEEDS_AUTH or get_token:
|
1995
2000
|
# We detected an auth proxy, so go through the auth proxy cookie flow.
|
1996
2001
|
token: Optional[str] = None
|
@@ -2121,6 +2126,21 @@ def api_login(endpoint: Optional[str] = None, get_token: bool = False) -> None:
|
|
2121
2126
|
'w',
|
2122
2127
|
encoding='utf-8') as f:
|
2123
2128
|
f.write(user_hash)
|
2129
|
+
else:
|
2130
|
+
# Check if basic auth is enabled
|
2131
|
+
if api_server_info.basic_auth_enabled:
|
2132
|
+
if api_server_info.user is None:
|
2133
|
+
with ux_utils.print_exception_no_traceback():
|
2134
|
+
raise ValueError(
|
2135
|
+
'Basic auth is enabled but no valid user is found')
|
2136
|
+
# Set the user hash in the local file
|
2137
|
+
user_hash = api_server_info.user.get('id')
|
2138
|
+
if not user_hash or not common_utils.is_valid_user_hash(user_hash):
|
2139
|
+
raise ValueError(f'Invalid user hash: {user_hash}')
|
2140
|
+
with open(os.path.expanduser('~/.sky/user_hash'),
|
2141
|
+
'w',
|
2142
|
+
encoding='utf-8') as f:
|
2143
|
+
f.write(user_hash)
|
2124
2144
|
|
2125
2145
|
# Set the endpoint in the config file
|
2126
2146
|
config_path = pathlib.Path(
|
{skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/sky/clouds/kubernetes.py
RENAMED
@@ -602,6 +602,10 @@ class Kubernetes(clouds.Cloud):
|
|
602
602
|
None,
|
603
603
|
override_configs=resources.cluster_config_overrides)
|
604
604
|
|
605
|
+
k8s_kueue_local_queue_name = skypilot_config.get_nested(
|
606
|
+
('kubernetes', 'kueue', 'local_queue_name'),
|
607
|
+
None,
|
608
|
+
override_configs=resources.cluster_config_overrides)
|
605
609
|
deploy_vars = {
|
606
610
|
'instance_type': resources.instance_type,
|
607
611
|
'custom_resources': custom_resources,
|
@@ -619,6 +623,7 @@ class Kubernetes(clouds.Cloud):
|
|
619
623
|
'k8s_service_account_name': k8s_service_account_name,
|
620
624
|
'k8s_automount_sa_token': 'true',
|
621
625
|
'k8s_fuse_device_required': fuse_device_required,
|
626
|
+
'k8s_kueue_local_queue_name': k8s_kueue_local_queue_name,
|
622
627
|
# Namespace to run the fusermount-server daemonset in
|
623
628
|
'k8s_skypilot_system_namespace': _SKYPILOT_SYSTEM_NAMESPACE,
|
624
629
|
'k8s_fusermount_shared_dir': _FUSERMOUNT_SHARED_DIR,
|
{skypilot_nightly-1.0.0.dev20250617 → skypilot_nightly-1.0.0.dev20250618}/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/
|
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/6c12ecc3bd2239b6.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/6c12ecc3bd2239b6.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-ebc2404fd6ce581c.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-87d061ee6ed71b28.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-e0e2335212e72357.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-c416e87d5c2715cf.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-1be831200e60c5c0.js" defer=""></script><script src="/dashboard/_next/static/LRpGymRCqq-feuFyoWz4m/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/LRpGymRCqq-feuFyoWz4m/_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":"LRpGymRCqq-feuFyoWz4m","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
@@ -1 +1 @@
|
|
1
|
-
self.__BUILD_MANIFEST=function(s,c,a,
|
1
|
+
self.__BUILD_MANIFEST=function(s,c,e,a,t,n,r,u,i,b,j,k,f){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/chunks/pages/index-6b0d9e5031b70c58.js"],"/_error":["static/chunks/pages/_error-1be831200e60c5c0.js"],"/clusters":["static/chunks/pages/clusters-82a651dbad53ec6e.js"],"/clusters/[cluster]":[s,c,e,a,t,r,i,n,b,u,j,k,f,"static/chunks/37-3a4d77ad62932eaf.js","static/chunks/pages/clusters/[cluster]-36bc0962129f72df.js"],"/clusters/[cluster]/[job]":[s,c,e,a,t,n,"static/chunks/pages/clusters/[cluster]/[job]-89216c616dbaa9c5.js"],"/config":["static/chunks/pages/config-497a35a7ed49734a.js"],"/infra":["static/chunks/pages/infra-780860bcc1103945.js"],"/infra/[context]":["static/chunks/pages/infra/[context]-d2910be98e9227cb.js"],"/jobs":["static/chunks/pages/jobs-336ab80e270ce2ce.js"],"/jobs/[job]":[s,c,e,a,t,r,n,u,"static/chunks/pages/jobs/[job]-cf490d1fa38f3740.js"],"/users":["static/chunks/pages/users-928edf039219e47b.js"],"/workspace/new":["static/chunks/pages/workspace/new-31aa8bdcb7592635.js"],"/workspaces":["static/chunks/pages/workspaces-82e6601baa5dd280.js"],"/workspaces/[name]":[s,c,e,a,t,r,i,n,b,u,j,k,f,"static/chunks/843-b3040e493f6e7947.js","static/chunks/pages/workspaces/[name]-c4ff1ec05e2f3daf.js"],sortedPages:["/","/_app","/_error","/clusters","/clusters/[cluster]","/clusters/[cluster]/[job]","/config","/infra","/infra/[context]","/jobs","/jobs/[job]","/users","/workspace/new","/workspaces","/workspaces/[name]"]}}("static/chunks/616-d6128fa9e7cae6e6.js","static/chunks/760-a89d354797ce7af5.js","static/chunks/799-3625946b2ec2eb30.js","static/chunks/804-4c9fc53aa74bc191.js","static/chunks/664-047bc03493fda379.js","static/chunks/470-4d1a5dbe58a8a2b9.js","static/chunks/798-c0525dc3f21e488d.js","static/chunks/969-20d54a9d998dc102.js","static/chunks/947-6620842ef80ae879.js","static/chunks/901-b424d293275e1fd7.js","static/chunks/856-c2c39c0912285e54.js","static/chunks/973-db3c97c2bfbceb65.js","static/chunks/938-1493ac755eadeb35.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/chunks/641.c8e452bc5070a630.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[641],{1812:function(e,s,r){r.d(s,{X:function(){return l}});var t=r(5893),a=r(7294);let n=e=>{if(!(null==e?void 0:e.message))return"An unexpected error occurred.";let s=e.message;return s.includes("failed:")&&(s=s.split("failed:")[1].trim()),s},l=e=>{let{error:s,title:r="Error",onDismiss:l}=e,[i,o]=(0,a.useState)(!1);if((0,a.useEffect)(()=>{s&&o(!1)},[s]),!s||i)return null;let c="string"==typeof s?s:n(s);return(0,t.jsx)("div",{className:"bg-red-50 border border-red-200 rounded-md p-3 mb-4",children:(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex",children:[(0,t.jsx)("div",{className:"flex-shrink-0",children:(0,t.jsx)("svg",{className:"h-5 w-5 text-red-400",viewBox:"0 0 20 20",fill:"currentColor",children:(0,t.jsx)("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"})})}),(0,t.jsx)("div",{className:"ml-3",children:(0,t.jsxs)("div",{className:"text-sm text-red-800",children:[(0,t.jsxs)("strong",{children:[r,":"]})," ",c]})})]}),(0,t.jsx)("button",{onClick:()=>{o(!0),l&&l()},className:"flex-shrink-0 ml-4 text-red-400 hover:text-red-600 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 focus:ring-offset-red-50 rounded","aria-label":"Dismiss error",children:(0,t.jsx)("svg",{className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:(0,t.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]})})}},803:function(e,s,r){r.d(s,{z:function(){return c}});var t=r(5893),a=r(7294),n=r(8426),l=r(2003),i=r(2350);let o=(0,l.j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),c=a.forwardRef((e,s)=>{let{className:r,variant:a,size:l,asChild:c=!1,...d}=e,u=c?n.g7:"button";return(0,t.jsx)(u,{className:(0,i.cn)(o({variant:a,size:l,className:r})),ref:s,...d})});c.displayName="Button"},7673:function(e,s,r){r.d(s,{Ol:function(){return c},Zb:function(){return o},aY:function(){return m},eW:function(){return x},ll:function(){return d}});var t=r(5893),a=r(7294),n=r(5697),l=r.n(n),i=r(2350);let o=a.forwardRef((e,s)=>{let{className:r,children:a,...n}=e;return(0,t.jsx)("div",{ref:s,className:(0,i.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",r),...n,children:a})});o.displayName="Card",o.propTypes={className:l().string,children:l().node};let c=a.forwardRef((e,s)=>{let{className:r,children:a,...n}=e;return(0,t.jsx)("div",{ref:s,className:(0,i.cn)("flex flex-col space-y-1.5 p-6",r),...n,children:a})});c.displayName="CardHeader",c.propTypes={className:l().string,children:l().node};let d=a.forwardRef((e,s)=>{let{className:r,children:a,...n}=e;return(0,t.jsx)("h3",{ref:s,className:(0,i.cn)("text-2xl font-semibold leading-none tracking-tight",r),...n,children:a})});d.displayName="CardTitle",d.propTypes={className:l().string,children:l().node};let u=a.forwardRef((e,s)=>{let{className:r,children:a,...n}=e;return(0,t.jsx)("p",{ref:s,className:(0,i.cn)("text-sm text-muted-foreground",r),...n,children:a})});u.displayName="CardDescription",u.propTypes={className:l().string,children:l().node};let m=a.forwardRef((e,s)=>{let{className:r,children:a,...n}=e;return(0,t.jsx)("div",{ref:s,className:(0,i.cn)("p-6 pt-0",r),...n,children:a})});m.displayName="CardContent",m.propTypes={className:l().string,children:l().node};let x=a.forwardRef((e,s)=>{let{className:r,children:a,...n}=e;return(0,t.jsx)("div",{ref:s,className:(0,i.cn)("flex items-center p-6 pt-0",r),...n,children:a})});x.displayName="CardFooter",x.propTypes={className:l().string,children:l().node}},326:function(e,s,r){r.d(s,{$N:function(){return f},Be:function(){return h},Vq:function(){return o},cN:function(){return x},cZ:function(){return u},fK:function(){return m}});var t=r(5893),a=r(7294),n=r(6327),l=r(2350),i=r(3767);let o=n.fC;n.xz;let c=n.h_;n.x8;let d=a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)(n.aV,{ref:s,className:(0,l.cn)("fixed inset-0 z-50 bg-black/50 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",r),...a})});d.displayName=n.aV.displayName;let u=a.forwardRef((e,s)=>{let{className:r,children:a,...o}=e;return(0,t.jsxs)(c,{children:[(0,t.jsx)(d,{}),(0,t.jsxs)(n.VY,{ref:s,className:(0,l.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-gray-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",r),...o,children:[a,(0,t.jsxs)(n.x8,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100 data-[state=open]:text-gray-500",children:[(0,t.jsx)(i.Z,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});u.displayName=n.VY.displayName;let m=e=>{let{className:s,...r}=e;return(0,t.jsx)("div",{className:(0,l.cn)("flex flex-col space-y-1.5 text-center sm:text-left",s),...r})};m.displayName="DialogHeader";let x=e=>{let{className:s,...r}=e;return(0,t.jsx)("div",{className:(0,l.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",s),...r})};x.displayName="DialogFooter";let f=a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)(n.Dx,{ref:s,className:(0,l.cn)("text-lg font-semibold leading-none tracking-tight",r),...a})});f.displayName=n.Dx.displayName;let h=a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)(n.dk,{ref:s,className:(0,l.cn)("text-sm text-gray-500",r),...a})});h.displayName=n.dk.displayName},8764:function(e,s,r){r.d(s,{RM:function(){return o},SC:function(){return c},iA:function(){return l},pj:function(){return u},ss:function(){return d},xD:function(){return i}});var t=r(5893),a=r(7294),n=r(2350);let l=a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("div",{className:"relative w-full overflow-auto",children:(0,t.jsx)("table",{ref:s,className:(0,n.cn)("w-full caption-bottom text-base",r),...a})})});l.displayName="Table";let i=a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("thead",{ref:s,className:(0,n.cn)("[&_tr]:border-b",r),...a})});i.displayName="TableHeader";let o=a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("tbody",{ref:s,className:(0,n.cn)("[&_tr:last-child]:border-0",r),...a})});o.displayName="TableBody",a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("tfoot",{ref:s,className:(0,n.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",r),...a})}).displayName="TableFooter";let c=a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("tr",{ref:s,className:(0,n.cn)("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",r),...a})});c.displayName="TableRow";let d=a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("th",{ref:s,className:(0,n.cn)("h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0",r),...a})});d.displayName="TableHead";let u=a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("td",{ref:s,className:(0,n.cn)("p-4 align-middle [&:has([role=checkbox])]:pr-0",r),...a})});u.displayName="TableCell",a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("caption",{ref:s,className:(0,n.cn)("mt-4 text-base text-muted-foreground",r),...a})}).displayName="TableCaption"},2641:function(e,s,r){r.r(s),r.d(s,{Users:function(){return V}});var t=r(5893),a=r(7294),n=r(5697),l=r.n(n),i=r(8799),o=r(1664),c=r.n(o),d=r(803),u=r(8764),m=r(3081),x=r(3266),f=r(8969),h=r(6378),p=r(6856),g=r(1214),b=r(4545),j=r(1109),y=r(3626),v=r(3685),N=r(6741),w=r(6826),k=r(282),C=r(3767),R=r(5274),D=r(3936),S=r(7603);r(9470);var E=r(3001),I=r(7673),U=r(7145),F=r(326),_=r(1812);let L=(e,s)=>e&&e.includes("@")?e.split("@")[0]:e||"N/A",Z=(e,s)=>e&&e.includes("@")?e:s||"-",z=g.nb.REFRESH_INTERVAL,T=e=>{let{message:s,onDismiss:r}=e;return s?(0,t.jsx)("div",{className:"bg-green-50 border border-green-200 rounded p-4 mb-6",children:(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsx)("div",{className:"flex-shrink-0",children:(0,t.jsx)("svg",{className:"h-5 w-5 text-green-400",viewBox:"0 0 20 20",fill:"currentColor",children:(0,t.jsx)("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",clipRule:"evenodd"})})}),(0,t.jsx)("div",{className:"ml-3",children:(0,t.jsx)("p",{className:"text-sm font-medium text-green-800",children:s})})]}),r&&(0,t.jsx)("div",{className:"ml-auto pl-3",children:(0,t.jsx)("div",{className:"-mx-1.5 -my-1.5",children:(0,t.jsxs)("button",{type:"button",onClick:r,className:"inline-flex rounded-md bg-green-50 p-1.5 text-green-500 hover:bg-green-100 focus:outline-none focus:ring-2 focus:ring-green-600 focus:ring-offset-2 focus:ring-offset-green-50",children:[(0,t.jsx)("span",{className:"sr-only",children:"Dismiss"}),(0,t.jsx)("svg",{className:"h-5 w-5",viewBox:"0 0 20 20",fill:"currentColor",children:(0,t.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})]})})})]})}):null};function V(){let[e,s]=(0,a.useState)(!1),r=(0,a.useRef)(null),n=(0,E.X)(),[l,o]=(0,a.useState)(!1),[u,p]=(0,a.useState)({username:"",password:"",role:"user"}),[g,b]=(0,a.useState)(!1),[k,C]=(0,a.useState)({open:!1,message:"",userName:""}),[R,D]=(0,a.useState)(null),[S,I]=(0,a.useState)(!1),[L,Z]=(0,a.useState)(!1),[V,A]=(0,a.useState)(!1),[q,M]=(0,a.useState)(null),[B,O]=(0,a.useState)(!1),[K,H]=(0,a.useState)(null),[Y,$]=(0,a.useState)("import"),[X,J]=(0,a.useState)(!1),[W,G]=(0,a.useState)(null),[Q,ee]=(0,a.useState)(""),[es,er]=(0,a.useState)(!1),[et,ea]=(0,a.useState)(null),[en,el]=(0,a.useState)(!1),[ei,eo]=(0,a.useState)(null),[ec,ed]=(0,a.useState)(null),[eu,em]=(0,a.useState)(!1),[ex,ef]=(0,a.useState)(null),[eh,ep]=(0,a.useState)(null),[eg,eb]=(0,a.useState)(void 0);(0,a.useEffect)(()=>{(async function(){try{let e=await U.x.get("/api/health");if(e.ok){let s=await e.json();eb(!!s.basic_auth_enabled)}else eb(!1)}catch(e){eb(!1)}})()},[]),(0,a.useEffect)(()=>{ej().catch(()=>{console.error("Failed to get user role")})},[]);let ej=async()=>{if(R&&Date.now()-R.timestamp<3e5)return R;I(!0);try{let e=await U.x.get("/users/role");if(!e.ok){let s=await e.json();throw Error(s.detail||"Failed to get user role")}let s=await e.json(),r={role:s.role,name:s.name,id:s.id,timestamp:Date.now()};return D(r),I(!1),r}catch(e){throw I(!1),e}},ey=async(e,s)=>{try{let r=await ej();if("admin"!==r.role)return C({open:!0,message:e,userName:r.name.toLowerCase()}),!1;return s(),!0}catch(e){return console.error("Failed to check user role:",e),C({open:!0,message:"Error: ".concat(e.message),userName:""}),!1}},ev=()=>{h.default.invalidate(m.R),h.default.invalidate(x.getClusters),h.default.invalidate(f.getManagedJobs,[{allUsers:!0}]),r.current&&r.current()},eN=async()=>{if(!u.username||!u.password){ep(Error("Username and password are required.")),o(!1);return}b(!0),ep(null),ef(null);try{let e=await U.x.post("/users/create",u);if(!e.ok){let s=await e.json();throw Error(s.detail||"Failed to create user")}ef('User "'.concat(u.username,'" created successfully!')),o(!1),p({username:"",password:"",role:"user"}),ev()}catch(e){ep(e),o(!1),p({username:"",password:"",role:"user"})}finally{b(!1)}},ew=async e=>{let s=e.target.files[0];s&&(M(s),H(null))},ek=async()=>{if(!q){alert("Please select a CSV file first.");return}O(!0);try{let e=new FileReader;e.onload=async e=>{try{let s=e.target.result,r=await U.x.post("/users/import",{csv_content:s});if(!r.ok){let e=await r.json();throw Error(e.detail||"Failed to import users")}let t=await r.json(),a="Import completed. ".concat(t.success_count," users created successfully.");t.error_count>0&&(a+="\n".concat(t.error_count," failed."),t.creation_errors.length>0&&(a+="\nErrors: ".concat(t.creation_errors.slice(0,3).join(", ")),t.creation_errors.length>3&&(a+=" and ".concat(t.creation_errors.length-3," more...")))),H({message:a}),t.success_count>0&&ev()}catch(e){alert("Error importing users: ".concat(e.message))}finally{O(!1)}},e.readAsText(q)}catch(e){alert("Error reading file: ".concat(e.message)),O(!1)}},eC=async e=>{G(e),ee(""),J(!0)},eR=async()=>{if(!Q){ea(Error("Please enter a new password."));return}er(!0),ea(null);try{let e=await U.x.post("/users/update",{user_id:W.userId,password:Q});if(!e.ok){let s=await e.json();throw Error(s.detail||"Failed to reset password")}ef('Password reset successfully for user "'.concat(W.usernameDisplay,'"!')),J(!1),G(null),ee("")}catch(e){ea(e)}finally{er(!1)}},eD=async()=>{if(ei){em(!0),ed(null);try{let e=await U.x.post("/users/delete",{user_id:ei.userId});if(!e.ok){let s=await e.json();throw Error(s.detail||"Failed to delete user")}ef('User "'.concat(ei.usernameDisplay,'" deleted successfully!')),el(!1),eo(null),ev()}catch(e){ed(e)}finally{em(!1)}}},eS=()=>{el(!1),eo(null),ed(null)},eE=()=>{J(!1),G(null),ee(""),ea(null)};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4 h-5",children:[(0,t.jsx)("div",{className:"text-base",children:(0,t.jsx)(c(),{href:"/users",className:"text-sky-blue hover:underline leading-none",children:"Users"})}),(0,t.jsxs)("div",{className:"flex items-center",children:[e&&(0,t.jsxs)("div",{className:"flex items-center mr-2",children:[(0,t.jsx)(i.Z,{size:15,className:"mt-0"}),(0,t.jsx)("span",{className:"ml-2 text-gray-500 text-sm",children:"Loading..."})]}),eg&&(null==R?void 0:R.role)==="admin"&&(0,t.jsx)("button",{onClick:async()=>{await ey("cannot create users",()=>{o(!0)})},className:"text-sky-blue hover:text-sky-blue-bright flex items-center border-sky-blue rounded px-2 py-1 mr-2",title:"Create New User",children:"+ New User"}),eg&&(null==R?void 0:R.role)==="admin"&&(0,t.jsxs)("button",{onClick:async()=>{await ey("cannot import users",()=>{A(!0)})},className:"text-sky-blue hover:text-sky-blue-bright flex items-center rounded px-2 py-1 mr-2",title:"Import/Export Users",children:[(0,t.jsx)(j.Z,{className:"h-4 w-4 mr-1"}),"Import/Export"]}),(0,t.jsxs)("button",{onClick:ev,disabled:e,className:"text-sky-blue hover:text-sky-blue-bright flex items-center",children:[(0,t.jsx)(y.Z,{className:"h-4 w-4 mr-1.5"}),!n&&(0,t.jsx)("span",{children:"Refresh"})]})]})]}),(0,t.jsx)(T,{message:ex,onDismiss:()=>ef(null)}),(0,t.jsx)(_.X,{error:eh,title:"Error",onDismiss:()=>ep(null)}),(0,t.jsx)(P,{refreshInterval:z,setLoading:s,refreshDataRef:r,checkPermissionAndAct:ey,roleLoading:S,onResetPassword:eC,onDeleteUser:e=>{ey("cannot delete users",()=>{eo(e),el(!0)})},basicAuthEnabled:eg,currentUserRole:null==R?void 0:R.role,currentUserId:null==R?void 0:R.id}),(0,t.jsx)(F.Vq,{open:l,onOpenChange:o,children:(0,t.jsxs)(F.cZ,{className:"sm:max-w-md",children:[(0,t.jsx)(F.fK,{children:(0,t.jsx)(F.$N,{children:"Create User"})}),(0,t.jsxs)("div",{className:"flex flex-col gap-4 py-4",children:[(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Username"}),(0,t.jsx)("input",{className:"border rounded px-3 py-2 w-full",placeholder:"Username",value:u.username,onChange:e=>p({...u,username:e.target.value})})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Password"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("input",{className:"border rounded px-3 py-2 w-full pr-10",placeholder:"Password",type:L?"text":"password",value:u.password,onChange:e=>p({...u,password:e.target.value})}),(0,t.jsx)("button",{type:"button",className:"absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 hover:text-gray-600",onClick:()=>Z(!L),children:L?(0,t.jsx)(v.Z,{className:"h-4 w-4"}):(0,t.jsx)(N.Z,{className:"h-4 w-4"})})]})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Role"}),(0,t.jsxs)("select",{className:"border rounded px-3 py-2 w-full",value:u.role,onChange:e=>p({...u,role:e.target.value}),children:[(0,t.jsx)("option",{value:"user",children:"User"}),(0,t.jsx)("option",{value:"admin",children:"Admin"})]})]})]}),(0,t.jsxs)(F.cN,{children:[(0,t.jsx)("button",{className:"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2",onClick:()=>o(!1),disabled:g,children:"Cancel"}),(0,t.jsx)("button",{className:"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-sky-600 text-white hover:bg-sky-700 h-10 px-4 py-2",onClick:eN,disabled:g,children:g?"Creating...":"Create"})]})]})}),(0,t.jsx)(F.Vq,{open:k.open,onOpenChange:e=>C(s=>({...s,open:e})),children:(0,t.jsxs)(F.cZ,{className:"sm:max-w-md transition-all duration-200 ease-in-out",children:[(0,t.jsxs)(F.fK,{children:[(0,t.jsx)(F.$N,{children:"Permission Denied"}),(0,t.jsx)(F.Be,{children:S?(0,t.jsxs)("div",{className:"flex items-center py-2",children:[(0,t.jsx)(i.Z,{size:16,className:"mr-2"}),(0,t.jsx)("span",{children:"Checking permissions..."})]}):(0,t.jsx)(t.Fragment,{children:k.userName?(0,t.jsxs)(t.Fragment,{children:[k.userName," is logged in as non-admin and ",k.message,"."]}):k.message})})]}),(0,t.jsx)(F.cN,{children:(0,t.jsx)(d.z,{variant:"outline",onClick:()=>C(e=>({...e,open:!1})),disabled:S,children:"OK"})})]})}),(0,t.jsx)(F.Vq,{open:V,onOpenChange:A,children:(0,t.jsxs)(F.cZ,{className:"sm:max-w-lg",children:[(0,t.jsx)(F.fK,{children:(0,t.jsx)(F.$N,{children:"Import/Export Users"})}),(0,t.jsxs)("div",{className:"flex border-b border-gray-200 mb-4",children:[(0,t.jsx)("button",{className:"px-4 py-2 text-sm font-medium ".concat("import"===Y?"border-b-2 border-sky-500 text-sky-600":"text-gray-500 hover:text-gray-700"),onClick:()=>$("import"),children:"Import"}),(0,t.jsx)("button",{className:"px-4 py-2 text-sm font-medium ".concat("export"===Y?"border-b-2 border-sky-500 text-sky-600":"text-gray-500 hover:text-gray-700"),onClick:()=>$("export"),children:"Export"})]}),(0,t.jsx)("div",{className:"flex flex-col gap-4 py-4",children:"import"===Y?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"CSV File"}),(0,t.jsx)("input",{type:"file",accept:".csv",onChange:ew,className:"border rounded px-3 py-2 w-full"}),(0,t.jsxs)("p",{className:"text-xs text-gray-500",children:["CSV should have columns: username, password, role",(0,t.jsx)("br",{}),"Supports both plain text passwords and exported password hashes."]})]}),K&&(0,t.jsx)("div",{className:"p-3 bg-green-50 border border-green-200 rounded text-green-700 text-sm",children:K.message})]}):(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Export Users to CSV"}),(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"Download all users as a CSV file with password hashes."}),(0,t.jsxs)("div",{className:"p-3 bg-amber-50 border border-amber-200 rounded",children:[(0,t.jsx)("p",{className:"text-sm text-amber-700",children:"⚠️ This will export all users with columns: username, password (hashed), role"}),(0,t.jsx)("p",{className:"text-xs text-amber-600 mt-1",children:"Password hashes can be imported directly for system backups."})]})]})})}),(0,t.jsxs)(F.cN,{children:[(0,t.jsx)("button",{className:"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2",onClick:()=>A(!1),disabled:B,children:"Cancel"}),"import"===Y?(0,t.jsx)("button",{className:"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-sky-600 text-white hover:bg-sky-700 h-10 px-4 py-2",onClick:ek,disabled:B||!q,children:B?"Importing...":"Import"}):(0,t.jsxs)("button",{className:"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-sky-600 text-white hover:bg-sky-700 h-10 px-4 py-2",onClick:async()=>{try{let e=await U.x.get("/users/export");if(!e.ok){let s=await e.json();throw Error(s.detail||"Failed to export users")}let s=await e.json(),r=s.csv_content,t=new Blob([r],{type:"text/csv;charset=utf-8;"}),a=URL.createObjectURL(t),n=document.createElement("a");n.href=a;let l=new Date,i=e=>String(e).padStart(2,"0"),o=l.getFullYear(),c=i(l.getMonth()+1),d=i(l.getDate()),u=i(l.getHours()),m=i(l.getMinutes()),x=i(l.getSeconds());n.download="users_export_".concat(o,"-").concat(c,"-").concat(d,"-").concat(u,"-").concat(m,"-").concat(x,".csv"),n.click(),URL.revokeObjectURL(a),alert("Successfully exported ".concat(s.user_count," users to CSV file."))}catch(e){alert("Error exporting users: ".concat(e.message))}},children:[(0,t.jsx)(w.Z,{className:"h-4 w-4 mr-1"}),"Export"]})]})]})}),(0,t.jsx)(F.Vq,{open:X,onOpenChange:eE,children:(0,t.jsxs)(F.cZ,{className:"sm:max-w-md",children:[(0,t.jsxs)(F.fK,{children:[(0,t.jsx)(F.$N,{children:"Reset Password"}),(0,t.jsxs)(F.Be,{children:["Enter a new password for"," ",(null==W?void 0:W.usernameDisplay)||"this user","."]})]}),(0,t.jsx)("div",{className:"flex flex-col gap-4 py-4",children:(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"New Password"}),(0,t.jsx)("input",{type:"password",className:"border rounded px-3 py-2 w-full",placeholder:"Enter new password",value:Q,onChange:e=>ee(e.target.value),autoFocus:!0})]})}),(0,t.jsx)(_.X,{error:et,title:"Reset Failed",onDismiss:()=>ea(null)}),(0,t.jsxs)(F.cN,{children:[(0,t.jsx)(d.z,{variant:"outline",onClick:eE,disabled:es,children:"Cancel"}),(0,t.jsx)(d.z,{variant:"default",onClick:eR,disabled:es||!Q,className:"bg-sky-600 text-white hover:bg-sky-700",children:es?"Resetting...":"Reset Password"})]})]})}),(0,t.jsx)(F.Vq,{open:en,onOpenChange:eS,children:(0,t.jsxs)(F.cZ,{className:"sm:max-w-md",children:[(0,t.jsxs)(F.fK,{children:[(0,t.jsx)(F.$N,{children:"Delete User"}),(0,t.jsxs)(F.Be,{children:['Are you sure you want to delete user "',(null==ei?void 0:ei.usernameDisplay)||"this user",'"? This action cannot be undone.']})]}),(0,t.jsx)(_.X,{error:ec,title:"Deletion Failed",onDismiss:()=>ed(null)}),(0,t.jsxs)(F.cN,{children:[(0,t.jsx)(d.z,{variant:"outline",onClick:eS,disabled:eu,children:"Cancel"}),(0,t.jsx)(d.z,{variant:"destructive",onClick:eD,disabled:eu,children:eu?"Deleting...":"Delete"})]})]})})]})}function P(e){let{refreshInterval:s,setLoading:r,refreshDataRef:n,checkPermissionAndAct:l,roleLoading:o,onResetPassword:d,onDeleteUser:g,basicAuthEnabled:j,currentUserRole:y,currentUserId:v}=e,[N,w]=(0,a.useState)([]),[E,F]=(0,a.useState)(!0),[_,z]=(0,a.useState)(!1),[T,V]=(0,a.useState)({key:"username",direction:"ascending"}),[P,A]=(0,a.useState)(null),[q,M]=(0,a.useState)(""),B=(0,a.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];r&&e&&r(!0),e&&F(!0);try{let s=await h.default.get(m.R),t=(s||[]).map(e=>({...e,usernameDisplay:L(e.username,e.userId),fullEmailID:Z(e.username,e.userId),clusterCount:-1,jobCount:-1}));w(t),z(!0),r&&e&&r(!1),e&&F(!1);let[a,n]=await Promise.all([h.default.get(x.getClusters),h.default.get(f.getManagedJobs,[{allUsers:!0}])]),l=n.jobs||[],i=(s||[]).map(e=>{let s=(a||[]).filter(s=>s.user_hash===e.userId),r=(l||[]).filter(s=>s.user_hash===e.userId);return{...e,usernameDisplay:L(e.username,e.userId),fullEmailID:Z(e.username,e.userId),clusterCount:s.length,jobCount:r.length}});w(i)}catch(s){console.error("Failed to fetch or process user data:",s),w([]),z(!0),r&&e&&r(!1),e&&F(!1)}},[r]);(0,a.useEffect)(()=>{n&&(n.current=()=>B(!0))},[n,B]),(0,a.useEffect)(()=>{(async()=>{z(!1),F(!0),await p.ZP.preloadForPage("users"),B(!0)})();let e=setInterval(()=>{B(!1)},s);return()=>clearInterval(e)},[B,s]);let O=(0,a.useMemo)(()=>(0,b.R0)(N,T.key,T.direction),[N,T]),K=e=>{let s="ascending";T.key===e&&"ascending"===T.direction&&(s="descending"),V({key:e,direction:s})},H=e=>T.key===e?"ascending"===T.direction?" ↑":" ↓":"",Y=async(e,s)=>{await l("cannot edit user role",()=>{A(e),M(s)})},$=()=>{A(null),M("")},X=async e=>{if(!e||!q){console.error("User ID or role is missing."),alert("Error: User ID or role is missing.");return}F(!0);try{let s=await U.x.post("/users/update",{user_id:e,role:q});if(!s.ok){let e=await s.json();throw Error(e.detail||"Failed to update role")}h.default.invalidate(m.R),await B(!0),$()}catch(e){console.error("Failed to update user role:",e),alert("Error updating role: ".concat(e.message))}finally{F(!1)}};return E&&0===N.length&&!_?(0,t.jsx)("div",{className:"flex justify-center items-center h-64",children:(0,t.jsx)(i.Z,{})}):_?O&&0!==O.length?(0,t.jsx)(I.Zb,{children:(0,t.jsxs)(u.iA,{children:[(0,t.jsx)(u.xD,{children:(0,t.jsxs)(u.SC,{children:[(0,t.jsxs)(u.ss,{onClick:()=>K("usernameDisplay"),className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50 w-1/5",children:["Name",H("usernameDisplay")]}),(0,t.jsxs)(u.ss,{onClick:()=>K("fullEmailID"),className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50 w-1/5",children:["User ID",H("fullEmailID")]}),(0,t.jsxs)(u.ss,{onClick:()=>K("role"),className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50 w-1/5",children:["Role",H("role")]}),(0,t.jsxs)(u.ss,{onClick:()=>K("clusterCount"),className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50 w-1/5",children:["Clusters",H("clusterCount")]}),(0,t.jsxs)(u.ss,{onClick:()=>K("jobCount"),className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50 w-1/5",children:["Jobs",H("jobCount")]}),j&&(0,t.jsx)(u.ss,{className:"whitespace-nowrap w-1/6",children:"Actions"})]})}),(0,t.jsx)(u.RM,{children:O.map(e=>(0,t.jsxs)(u.SC,{children:[(0,t.jsx)(u.pj,{className:"truncate",title:e.username,children:e.usernameDisplay}),(0,t.jsx)(u.pj,{className:"truncate",title:e.fullEmailID,children:e.fullEmailID}),(0,t.jsx)(u.pj,{className:"truncate",title:e.role,children:(0,t.jsx)("div",{className:"flex items-center gap-2",children:P===e.userId?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("select",{value:q,onChange:e=>M(e.target.value),className:"block w-auto p-1 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-sky-blue focus:border-sky-blue sm:text-sm",children:[(0,t.jsx)("option",{value:"admin",children:"Admin"}),(0,t.jsx)("option",{value:"user",children:"User"})]}),(0,t.jsx)("button",{onClick:()=>X(e.userId),className:"text-green-600 hover:text-green-800 p-1",title:"Save",children:(0,t.jsx)(k.Z,{className:"h-4 w-4"})}),(0,t.jsx)("button",{onClick:$,className:"text-gray-500 hover:text-gray-700 p-1",title:"Cancel",children:(0,t.jsx)(C.Z,{className:"h-4 w-4"})})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"capitalize",children:e.role}),"admin"===y&&(0,t.jsx)("button",{onClick:()=>Y(e.userId,e.role),className:"text-sky-blue hover:text-sky-blue-bright p-1",title:"Edit role",children:(0,t.jsx)(R.Z,{className:"h-3 w-3"})})]})})}),(0,t.jsx)(u.pj,{children:-1===e.clusterCount?(0,t.jsxs)("span",{className:"px-2 py-0.5 bg-gray-100 text-gray-400 rounded text-xs font-medium flex items-center",children:[(0,t.jsx)(i.Z,{size:10,className:"mr-1"}),"Loading..."]}):(0,t.jsx)(c(),{href:"/clusters?user=".concat(encodeURIComponent(e.userId)),className:"px-2 py-0.5 rounded text-xs font-medium transition-colors duration-200 cursor-pointer inline-block ".concat(e.clusterCount>0?"bg-blue-100 text-blue-800 hover:bg-blue-200 hover:text-blue-900":"bg-gray-100 text-gray-500 hover:bg-gray-200 hover:text-gray-700"),title:"View ".concat(e.clusterCount," cluster").concat(1!==e.clusterCount?"s":""," for ").concat(e.usernameDisplay),children:e.clusterCount})}),(0,t.jsx)(u.pj,{children:-1===e.jobCount?(0,t.jsxs)("span",{className:"px-2 py-0.5 bg-gray-100 text-gray-400 rounded text-xs font-medium flex items-center",children:[(0,t.jsx)(i.Z,{size:10,className:"mr-1"}),"Loading..."]}):(0,t.jsx)(c(),{href:"/jobs?user=".concat(encodeURIComponent(e.userId)),className:"px-2 py-0.5 rounded text-xs font-medium transition-colors duration-200 cursor-pointer inline-block ".concat(e.jobCount>0?"bg-green-100 text-green-800 hover:bg-green-200 hover:text-green-900":"bg-gray-100 text-gray-500 hover:bg-gray-200 hover:text-gray-700"),title:"View ".concat(e.jobCount," job").concat(1!==e.jobCount?"s":""," for ").concat(e.usernameDisplay),children:e.jobCount})}),j&&(0,t.jsx)(u.pj,{className:"relative",children:(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("button",{onClick:"admin"===y||e.userId===v?async()=>{d(e)}:void 0,className:"admin"===y||e.userId===v?"text-sky-blue hover:text-sky-blue-bright p-1":"text-gray-300 cursor-not-allowed p-1",title:"admin"===y||e.userId===v?"Reset Password":"You can only reset your own password",disabled:"admin"!==y&&e.userId!==v,children:(0,t.jsx)(D.Z,{className:"h-4 w-4"})}),"admin"===y&&(0,t.jsx)("button",{onClick:()=>g(e),className:"text-sky-blue hover:text-red-500 p-1",title:"Delete User",children:(0,t.jsx)(S.Z,{className:"h-4 w-4"})})]})})]},e.userId))})]})}):(0,t.jsxs)("div",{className:"text-center py-12",children:[(0,t.jsx)("p",{className:"text-lg font-semibold text-gray-500",children:"No users found."}),(0,t.jsx)("p",{className:"text-sm text-gray-400 mt-1",children:"There are currently no users to display."})]}):(0,t.jsxs)("div",{className:"flex justify-center items-center h-64",children:[(0,t.jsx)(i.Z,{}),(0,t.jsx)("span",{className:"ml-2 text-gray-500",children:"Loading users..."})]})}P.propTypes={refreshInterval:l().number.isRequired,setLoading:l().func.isRequired,refreshDataRef:l().shape({current:l().func}).isRequired,checkPermissionAndAct:l().func.isRequired,roleLoading:l().bool.isRequired,onResetPassword:l().func.isRequired,onDeleteUser:l().func.isRequired,basicAuthEnabled:l().bool,currentUserRole:l().string,currentUserId:l().string}},4545:function(e,s,r){function t(e){return e.startsWith("sky-jobs-controller-")}function a(e,s,r){return null===s?e:[...e].sort((e,t)=>e[s]<t[s]?"ascending"===r?-1:1:e[s]>t[s]?"ascending"===r?1:-1:0)}r.d(s,{R0:function(){return a},Ym:function(){return t}})}}]);
|
skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/chunks/984.ae8c08791d274ca0.js
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[984],{6826:function(e,n,t){t.d(n,{Z:function(){return r}});/**
|
2
|
+
* @license lucide-react v0.407.0 - ISC
|
3
|
+
*
|
4
|
+
* This source code is licensed under the ISC license.
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
6
|
+
*/let r=(0,t(998).Z)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]])},3685:function(e,n,t){t.d(n,{Z:function(){return r}});/**
|
7
|
+
* @license lucide-react v0.407.0 - ISC
|
8
|
+
*
|
9
|
+
* This source code is licensed under the ISC license.
|
10
|
+
* See the LICENSE file in the root directory of this source tree.
|
11
|
+
*/let r=(0,t(998).Z)("EyeOff",[["path",{d:"M9.88 9.88a3 3 0 1 0 4.24 4.24",key:"1jxqfv"}],["path",{d:"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68",key:"9wicm4"}],["path",{d:"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61",key:"1jreej"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]])},6741:function(e,n,t){t.d(n,{Z:function(){return r}});/**
|
12
|
+
* @license lucide-react v0.407.0 - ISC
|
13
|
+
*
|
14
|
+
* This source code is licensed under the ISC license.
|
15
|
+
* See the LICENSE file in the root directory of this source tree.
|
16
|
+
*/let r=(0,t(998).Z)("Eye",[["path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z",key:"rwhkz3"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]])},3936:function(e,n,t){t.d(n,{Z:function(){return r}});/**
|
17
|
+
* @license lucide-react v0.407.0 - ISC
|
18
|
+
*
|
19
|
+
* This source code is licensed under the ISC license.
|
20
|
+
* See the LICENSE file in the root directory of this source tree.
|
21
|
+
*/let r=(0,t(998).Z)("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]])},5274:function(e,n,t){t.d(n,{Z:function(){return r}});/**
|
22
|
+
* @license lucide-react v0.407.0 - ISC
|
23
|
+
*
|
24
|
+
* This source code is licensed under the ISC license.
|
25
|
+
* See the LICENSE file in the root directory of this source tree.
|
26
|
+
*/let r=(0,t(998).Z)("Pen",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]])},3626:function(e,n,t){t.d(n,{Z:function(){return r}});/**
|
27
|
+
* @license lucide-react v0.407.0 - ISC
|
28
|
+
*
|
29
|
+
* This source code is licensed under the ISC license.
|
30
|
+
* See the LICENSE file in the root directory of this source tree.
|
31
|
+
*/let r=(0,t(998).Z)("RotateCw",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]])},7603:function(e,n,t){t.d(n,{Z:function(){return r}});/**
|
32
|
+
* @license lucide-react v0.407.0 - ISC
|
33
|
+
*
|
34
|
+
* This source code is licensed under the ISC license.
|
35
|
+
* See the LICENSE file in the root directory of this source tree.
|
36
|
+
*/let r=(0,t(998).Z)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},1109:function(e,n,t){t.d(n,{Z:function(){return r}});/**
|
37
|
+
* @license lucide-react v0.407.0 - ISC
|
38
|
+
*
|
39
|
+
* This source code is licensed under the ISC license.
|
40
|
+
* See the LICENSE file in the root directory of this source tree.
|
41
|
+
*/let r=(0,t(998).Z)("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]])},3767:function(e,n,t){t.d(n,{Z:function(){return r}});/**
|
42
|
+
* @license lucide-react v0.407.0 - ISC
|
43
|
+
*
|
44
|
+
* This source code is licensed under the ISC license.
|
45
|
+
* See the LICENSE file in the root directory of this source tree.
|
46
|
+
*/let r=(0,t(998).Z)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},6327:function(e,n,t){t.d(n,{x8:function(){return el},VY:function(){return eo},dk:function(){return ea},aV:function(){return er},h_:function(){return et},fC:function(){return ee},Dx:function(){return ei},xz:function(){return en}});var r=t(7294),o=t(6206),i=t(8771),a=t(5360),l=t(1276),u=t(7342),s=t(6063),d=t(5420),c=t(2651),f=t(9981),p=e=>{let n,t;let{present:o,children:a}=e,l=function(e){var n,t;let[o,i]=r.useState(),a=r.useRef(null),l=r.useRef(e),u=r.useRef("none"),[s,d]=(n=e?"mounted":"unmounted",t={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},r.useReducer((e,n)=>t[e][n]??e,n));return r.useEffect(()=>{let e=y(a.current);u.current="mounted"===s?e:"none"},[s]),(0,f.b)(()=>{let n=a.current,t=l.current;if(t!==e){let r=u.current,o=y(n);e?d("MOUNT"):"none"===o||n?.display==="none"?d("UNMOUNT"):t&&r!==o?d("ANIMATION_OUT"):d("UNMOUNT"),l.current=e}},[e,d]),(0,f.b)(()=>{if(o){let e;let n=o.ownerDocument.defaultView??window,t=t=>{let r=y(a.current).includes(t.animationName);if(t.target===o&&r&&(d("ANIMATION_END"),!l.current)){let t=o.style.animationFillMode;o.style.animationFillMode="forwards",e=n.setTimeout(()=>{"forwards"===o.style.animationFillMode&&(o.style.animationFillMode=t)})}},r=e=>{e.target===o&&(u.current=y(a.current))};return o.addEventListener("animationstart",r),o.addEventListener("animationcancel",t),o.addEventListener("animationend",t),()=>{n.clearTimeout(e),o.removeEventListener("animationstart",r),o.removeEventListener("animationcancel",t),o.removeEventListener("animationend",t)}}d("ANIMATION_END")},[o,d]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:r.useCallback(e=>{a.current=e?getComputedStyle(e):null,i(e)},[])}}(o),u="function"==typeof a?a({present:l.isPresent}):r.Children.only(a),s=(0,i.e)(l.ref,(n=Object.getOwnPropertyDescriptor(u.props,"ref")?.get)&&"isReactWarning"in n&&n.isReactWarning?u.ref:(n=Object.getOwnPropertyDescriptor(u,"ref")?.get)&&"isReactWarning"in n&&n.isReactWarning?u.props.ref:u.props.ref||u.ref);return"function"==typeof a||l.isPresent?r.cloneElement(u,{ref:s}):null};function y(e){return e?.animationName||"none"}p.displayName="Presence";var m=t(5320),v=t(7552),g=t(6223),h=t(3541),N=t(8426),x=t(5893),M="Dialog",[k,D]=(0,a.b)(M),[O,b]=k(M),j=e=>{let{__scopeDialog:n,children:t,open:o,defaultOpen:i,onOpenChange:a,modal:s=!0}=e,d=r.useRef(null),c=r.useRef(null),[f,p]=(0,u.T)({prop:o,defaultProp:i??!1,onChange:a,caller:M});return(0,x.jsx)(O,{scope:n,triggerRef:d,contentRef:c,contentId:(0,l.M)(),titleId:(0,l.M)(),descriptionId:(0,l.M)(),open:f,onOpenChange:p,onOpenToggle:r.useCallback(()=>p(e=>!e),[p]),modal:s,children:t})};j.displayName=M;var w="DialogTrigger",R=r.forwardRef((e,n)=>{let{__scopeDialog:t,...r}=e,a=b(w,t),l=(0,i.e)(n,a.triggerRef);return(0,x.jsx)(m.WV.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":K(a.open),...r,ref:l,onClick:(0,o.M)(e.onClick,a.onOpenToggle)})});R.displayName=w;var I="DialogPortal",[E,C]=k(I,{forceMount:void 0}),A=e=>{let{__scopeDialog:n,forceMount:t,children:o,container:i}=e,a=b(I,n);return(0,x.jsx)(E,{scope:n,forceMount:t,children:r.Children.map(o,e=>(0,x.jsx)(p,{present:t||a.open,children:(0,x.jsx)(c.h,{asChild:!0,container:i,children:e})}))})};A.displayName=I;var T="DialogOverlay",Z=r.forwardRef((e,n)=>{let t=C(T,e.__scopeDialog),{forceMount:r=t.forceMount,...o}=e,i=b(T,e.__scopeDialog);return i.modal?(0,x.jsx)(p,{present:r||i.open,children:(0,x.jsx)(F,{...o,ref:n})}):null});Z.displayName=T;var _=(0,N.Z8)("DialogOverlay.RemoveScroll"),F=r.forwardRef((e,n)=>{let{__scopeDialog:t,...r}=e,o=b(T,t);return(0,x.jsx)(g.Z,{as:_,allowPinchZoom:!0,shards:[o.contentRef],children:(0,x.jsx)(m.WV.div,{"data-state":K(o.open),...r,ref:n,style:{pointerEvents:"auto",...r.style}})})}),P="DialogContent",W=r.forwardRef((e,n)=>{let t=C(P,e.__scopeDialog),{forceMount:r=t.forceMount,...o}=e,i=b(P,e.__scopeDialog);return(0,x.jsx)(p,{present:r||i.open,children:i.modal?(0,x.jsx)(U,{...o,ref:n}):(0,x.jsx)(V,{...o,ref:n})})});W.displayName=P;var U=r.forwardRef((e,n)=>{let t=b(P,e.__scopeDialog),a=r.useRef(null),l=(0,i.e)(n,t.contentRef,a);return r.useEffect(()=>{let e=a.current;if(e)return(0,h.Ry)(e)},[]),(0,x.jsx)(L,{...e,ref:l,trapFocus:t.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,o.M)(e.onCloseAutoFocus,e=>{e.preventDefault(),t.triggerRef.current?.focus()}),onPointerDownOutside:(0,o.M)(e.onPointerDownOutside,e=>{let n=e.detail.originalEvent,t=0===n.button&&!0===n.ctrlKey;(2===n.button||t)&&e.preventDefault()}),onFocusOutside:(0,o.M)(e.onFocusOutside,e=>e.preventDefault())})}),V=r.forwardRef((e,n)=>{let t=b(P,e.__scopeDialog),o=r.useRef(!1),i=r.useRef(!1);return(0,x.jsx)(L,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:n=>{e.onCloseAutoFocus?.(n),n.defaultPrevented||(o.current||t.triggerRef.current?.focus(),n.preventDefault()),o.current=!1,i.current=!1},onInteractOutside:n=>{e.onInteractOutside?.(n),n.defaultPrevented||(o.current=!0,"pointerdown"!==n.detail.originalEvent.type||(i.current=!0));let r=n.target;t.triggerRef.current?.contains(r)&&n.preventDefault(),"focusin"===n.detail.originalEvent.type&&i.current&&n.preventDefault()}})}),L=r.forwardRef((e,n)=>{let{__scopeDialog:t,trapFocus:o,onOpenAutoFocus:a,onCloseAutoFocus:l,...u}=e,c=b(P,t),f=r.useRef(null),p=(0,i.e)(n,f);return(0,v.EW)(),(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(d.M,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:a,onUnmountAutoFocus:l,children:(0,x.jsx)(s.XB,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":K(c.open),...u,ref:p,onDismiss:()=>c.onOpenChange(!1)})}),(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(J,{titleId:c.titleId}),(0,x.jsx)(Q,{contentRef:f,descriptionId:c.descriptionId})]})]})}),S="DialogTitle",$=r.forwardRef((e,n)=>{let{__scopeDialog:t,...r}=e,o=b(S,t);return(0,x.jsx)(m.WV.h2,{id:o.titleId,...r,ref:n})});$.displayName=S;var z="DialogDescription",q=r.forwardRef((e,n)=>{let{__scopeDialog:t,...r}=e,o=b(z,t);return(0,x.jsx)(m.WV.p,{id:o.descriptionId,...r,ref:n})});q.displayName=z;var H="DialogClose",B=r.forwardRef((e,n)=>{let{__scopeDialog:t,...r}=e,i=b(H,t);return(0,x.jsx)(m.WV.button,{type:"button",...r,ref:n,onClick:(0,o.M)(e.onClick,()=>i.onOpenChange(!1))})});function K(e){return e?"open":"closed"}B.displayName=H;var X="DialogTitleWarning",[Y,G]=(0,a.k)(X,{contentName:P,titleName:S,docsSlug:"dialog"}),J=({titleId:e})=>{let n=G(X),t=`\`${n.contentName}\` requires a \`${n.titleName}\` for the component to be accessible for screen reader users.
|
47
|
+
|
48
|
+
If you want to hide the \`${n.titleName}\`, you can wrap it with our VisuallyHidden component.
|
49
|
+
|
50
|
+
For more information, see https://radix-ui.com/primitives/docs/components/${n.docsSlug}`;return r.useEffect(()=>{e&&!document.getElementById(e)&&console.error(t)},[t,e]),null},Q=({contentRef:e,descriptionId:n})=>{let t=G("DialogDescriptionWarning"),o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${t.contentName}}.`;return r.useEffect(()=>{let t=e.current?.getAttribute("aria-describedby");n&&t&&!document.getElementById(n)&&console.warn(o)},[o,e,n]),null},ee=j,en=R,et=A,er=Z,eo=W,ei=$,ea=q,el=B},2003:function(e,n,t){t.d(n,{j:function(){return a}});var r=t(512);let o=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,i=r.W,a=(e,n)=>t=>{var r;if((null==n?void 0:n.variants)==null)return i(e,null==t?void 0:t.class,null==t?void 0:t.className);let{variants:a,defaultVariants:l}=n,u=Object.keys(a).map(e=>{let n=null==t?void 0:t[e],r=null==l?void 0:l[e];if(null===n)return null;let i=o(n)||o(r);return a[e][i]}),s=t&&Object.entries(t).reduce((e,n)=>{let[t,r]=n;return void 0===r||(e[t]=r),e},{});return i(e,u,null==n?void 0:null===(r=n.compoundVariants)||void 0===r?void 0:r.reduce((e,n)=>{let{class:t,className:r,...o}=n;return Object.entries(o).every(e=>{let[n,t]=e;return Array.isArray(t)?t.includes({...l,...s}[n]):({...l,...s})[n]===t})?[...e,t,r]:e},[]),null==t?void 0:t.class,null==t?void 0:t.className)}}}]);
|
@@ -0,0 +1 @@
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[892],{7476:function(e,n,r){(window.__NEXT_P=window.__NEXT_P||[]).push(["/users",function(){return r(5126)}])},5126:function(e,n,r){"use strict";r.r(n),r.d(n,{default:function(){return o}});var t=r(5893);r(7294);var s=r(9008),u=r.n(s),i=r(5152);let c=r.n(i)()(()=>Promise.all([r.e(616),r.e(760),r.e(799),r.e(804),r.e(664),r.e(984),r.e(470),r.e(901),r.e(969),r.e(856),r.e(641)]).then(r.bind(r,2641)).then(e=>e.Users),{loadableGenerated:{webpack:()=>[2641]},ssr:!1});function o(){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u(),{children:(0,t.jsx)("title",{children:"Users | SkyPilot Dashboard"})}),(0,t.jsx)(c,{})]})}},9008:function(e,n,r){e.exports=r(7219)}},function(e){e.O(0,[888,774,179],function(){return e(e.s=7476)}),_N_E=e.O()}]);
|
skypilot_nightly-1.0.0.dev20250618/sky/dashboard/out/_next/static/chunks/webpack-ebc2404fd6ce581c.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
!function(){"use strict";var e,t,n,r,c,o,u,a,i,f={},s={};function d(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}},r=!0;try{f[e](n,n.exports,d),r=!1}finally{r&&delete s[e]}return n.exports}d.m=f,e=[],d.O=function(t,n,r,c){if(n){c=c||0;for(var o=e.length;o>0&&e[o-1][2]>c;o--)e[o]=e[o-1];e[o]=[n,r,c];return}for(var u=1/0,o=0;o<e.length;o++){for(var n=e[o][0],r=e[o][1],c=e[o][2],a=!0,i=0;i<n.length;i++)u>=c&&Object.keys(d.O).every(function(e){return d.O[e](n[i])})?n.splice(i--,1):(a=!1,c<u&&(u=c));if(a){e.splice(o--,1);var f=r();void 0!==f&&(t=f)}}return t},d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},d.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var c=Object.create(null);d.r(c);var o={};t=t||[null,n({}),n([]),n(n)];for(var u=2&r&&e;"object"==typeof u&&!~t.indexOf(u);u=n(u))Object.getOwnPropertyNames(u).forEach(function(t){o[t]=function(){return e[t]}});return o.default=function(){return e},d.d(c,o),c},d.d=function(e,t){for(var n in t)d.o(t,n)&&!d.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},d.f={},d.e=function(e){return Promise.all(Object.keys(d.f).reduce(function(t,n){return d.f[n](e,t),t},[]))},d.u=function(e){return 350===e?"static/chunks/350.9e123a4551f68b0d.js":491===e?"static/chunks/491.b3d264269613fe09.js":937===e?"static/chunks/937.3759f538f11a0953.js":42===e?"static/chunks/42.d39e24467181b06b.js":682===e?"static/chunks/682.4dd5dc116f740b5f.js":211===e?"static/chunks/211.692afc57e812ae1a.js":984===e?"static/chunks/984.ae8c08791d274ca0.js":641===e?"static/chunks/641.c8e452bc5070a630.js":443===e?"static/chunks/443.b2242d0efcdf5f47.js":513===e?"static/chunks/513.211357a2914a34b2.js":"static/chunks/"+e+"-"+({37:"3a4d77ad62932eaf",470:"4d1a5dbe58a8a2b9",616:"d6128fa9e7cae6e6",664:"047bc03493fda379",760:"a89d354797ce7af5",798:"c0525dc3f21e488d",799:"3625946b2ec2eb30",804:"4c9fc53aa74bc191",843:"b3040e493f6e7947",856:"c2c39c0912285e54",901:"b424d293275e1fd7",938:"1493ac755eadeb35",947:"6620842ef80ae879",969:"20d54a9d998dc102",973:"db3c97c2bfbceb65"})[e]+".js"},d.miniCssF=function(e){},d.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},c="_N_E:",d.l=function(e,t,n,o){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var u,a,i=document.getElementsByTagName("script"),f=0;f<i.length;f++){var s=i[f];if(s.getAttribute("src")==e||s.getAttribute("data-webpack")==c+n){u=s;break}}u||(a=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,d.nc&&u.setAttribute("nonce",d.nc),u.setAttribute("data-webpack",c+n),u.src=d.tu(e)),r[e]=[t];var l=function(t,n){u.onerror=u.onload=null,clearTimeout(b);var c=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),c&&c.forEach(function(e){return e(n)}),t)return t(n)},b=setTimeout(l.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=l.bind(null,u.onerror),u.onload=l.bind(null,u.onload),a&&document.head.appendChild(u)},d.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.tt=function(){return void 0===o&&(o={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(o=trustedTypes.createPolicy("nextjs#bundler",o))),o},d.tu=function(e){return d.tt().createScriptURL(e)},d.p="/dashboard/_next/",u={272:0},d.f.j=function(e,t){var n=d.o(u,e)?u[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(272!=e){var r=new Promise(function(t,r){n=u[e]=[t,r]});t.push(n[2]=r);var c=d.p+d.u(e),o=Error();d.l(c,function(t){if(d.o(u,e)&&(0!==(n=u[e])&&(u[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;o.message="Loading chunk "+e+" failed.\n("+r+": "+c+")",o.name="ChunkLoadError",o.type=r,o.request=c,n[1](o)}},"chunk-"+e,e)}else u[e]=0}},d.O.j=function(e){return 0===u[e]},a=function(e,t){var n,r,c=t[0],o=t[1],a=t[2],i=0;if(c.some(function(e){return 0!==u[e]})){for(n in o)d.o(o,n)&&(d.m[n]=o[n]);if(a)var f=a(d)}for(e&&e(t);i<c.length;i++)r=c[i],d.o(u,r)&&u[r]&&u[r][0](),u[r]=0;return d.O(f)},(i=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(a.bind(null,0)),i.push=a.bind(null,i.push.bind(i)),d.nc=void 0}();
|