skypilot-nightly 1.0.0.dev20250808__tar.gz → 1.0.0.dev20250812__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of skypilot-nightly might be problematic. Click here for more details.

Files changed (551) hide show
  1. {skypilot_nightly-1.0.0.dev20250808/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250812}/PKG-INFO +1 -1
  2. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/__init__.py +2 -2
  3. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/kubernetes.py +5 -2
  4. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/backend_utils.py +37 -6
  5. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/cloud_vm_ray_backend.py +41 -6
  6. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/cli/command.py +22 -2
  7. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/core.py +5 -0
  8. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/404.html +1 -1
  9. {skypilot_nightly-1.0.0.dev20250808/sky/dashboard/out/_next/static/-DXZksWqf2waNHeU9YTQe → skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/Fuy7OzApYTUMz2QgoP7dP}/_buildManifest.js +1 -1
  10. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/8056-5bdeda81199c0def.js +1 -0
  11. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-078751bad714c017.js +11 -0
  12. skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-da9cc0901349c2e9.js +1 -0
  13. skypilot_nightly-1.0.0.dev20250808/sky/dashboard/out/_next/static/chunks/webpack-339efec49c0cc7d0.js → skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/chunks/webpack-7fd0cf9dbecff10f.js +1 -1
  14. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  15. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/clusters/[cluster].html +1 -1
  16. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/clusters.html +1 -1
  17. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/config.html +1 -1
  18. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/index.html +1 -1
  19. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/infra/[context].html +1 -1
  20. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/infra.html +1 -1
  21. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/jobs/[job].html +1 -1
  22. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/jobs/pools/[pool].html +1 -1
  23. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/jobs.html +1 -1
  24. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/users.html +1 -1
  25. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/volumes.html +1 -1
  26. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/workspace/new.html +1 -1
  27. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/workspaces/[name].html +1 -1
  28. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/workspaces.html +1 -1
  29. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/execution.py +15 -0
  30. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/global_user_state.py +102 -0
  31. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/recovery_strategy.py +3 -0
  32. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/server/core.py +4 -0
  33. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/utils.py +9 -2
  34. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/__init__.py +3 -2
  35. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/aws/instance.py +5 -4
  36. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/azure/instance.py +5 -4
  37. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/cudo/instance.py +5 -4
  38. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/do/instance.py +5 -4
  39. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/fluidstack/instance.py +5 -4
  40. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/gcp/instance.py +5 -4
  41. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/hyperbolic/instance.py +5 -4
  42. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/instance.py +36 -6
  43. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/lambda_cloud/instance.py +5 -4
  44. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/nebius/instance.py +5 -4
  45. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/oci/instance.py +5 -4
  46. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/paperspace/instance.py +5 -4
  47. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/provisioner.py +6 -0
  48. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/runpod/instance.py +5 -4
  49. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/scp/instance.py +5 -5
  50. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vast/instance.py +5 -5
  51. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/instance.py +5 -4
  52. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/global_user_state/001_initial_schema.py +1 -1
  53. skypilot_nightly-1.0.0.dev20250812/sky/schemas/db/global_user_state/005_cluster_event.py +32 -0
  54. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/serve_state/001_initial_schema.py +1 -1
  55. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/spot_jobs/001_initial_schema.py +1 -1
  56. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/serve_utils.py +37 -3
  57. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skypilot_config.py +4 -4
  58. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/users/permission.py +1 -1
  59. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/cli_utils/status_utils.py +9 -0
  60. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/db/db_utils.py +22 -1
  61. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/db/migration_utils.py +1 -1
  62. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812/skypilot_nightly.egg-info}/PKG-INFO +1 -1
  63. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/skypilot_nightly.egg-info/SOURCES.txt +7 -6
  64. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_api_compatibility.py +4 -2
  65. skypilot_nightly-1.0.0.dev20250808/sky/dashboard/out/_next/static/chunks/8056-34d27f51e6d1c631.js +0 -1
  66. skypilot_nightly-1.0.0.dev20250808/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-ae17cec0fc6483d9.js +0 -11
  67. skypilot_nightly-1.0.0.dev20250808/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-155d477a6c3e04e2.js +0 -1
  68. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/LICENSE +0 -0
  69. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/MANIFEST.in +0 -0
  70. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/README.md +0 -0
  71. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/pyproject.toml +0 -0
  72. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/setup.cfg +0 -0
  73. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/setup.py +0 -0
  74. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/__init__.py +0 -0
  75. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/aws.py +0 -0
  76. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/azure.py +0 -0
  77. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/cloudflare.py +0 -0
  78. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/common.py +0 -0
  79. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/cudo.py +0 -0
  80. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/do.py +0 -0
  81. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/docker.py +0 -0
  82. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/gcp.py +0 -0
  83. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/hyperbolic.py +0 -0
  84. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/ibm.py +0 -0
  85. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/nebius.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/oci.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/runpod.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/vast.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/adaptors/vsphere.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/admin_policy.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/authentication.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/__init__.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/backend.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/docker_utils.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/local_docker_backend.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/backends/wheel_utils.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/__init__.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/aws_catalog.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/azure_catalog.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/common.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/config.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/cudo_catalog.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/__init__.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/analyze.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_aws.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_azure.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_cudo.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_fluidstack.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_gcp.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_hyperbolic.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_ibm.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_nebius.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_vast.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/data_fetchers/fetch_vsphere.py +0 -0
  117. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/do_catalog.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/fluidstack_catalog.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/gcp_catalog.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/hyperbolic_catalog.py +0 -0
  121. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/ibm_catalog.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/kubernetes_catalog.py +0 -0
  123. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/lambda_catalog.py +0 -0
  124. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/nebius_catalog.py +0 -0
  125. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/oci_catalog.py +0 -0
  126. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/paperspace_catalog.py +0 -0
  127. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/runpod_catalog.py +0 -0
  128. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/scp_catalog.py +0 -0
  129. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/ssh_catalog.py +0 -0
  130. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/vast_catalog.py +0 -0
  131. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/catalog/vsphere_catalog.py +0 -0
  132. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/check.py +0 -0
  133. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/cli.py +0 -0
  134. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/__init__.py +0 -0
  135. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/cli/__init__.py +0 -0
  136. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/cli/deprecation_utils.py +0 -0
  137. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/cli/flags.py +0 -0
  138. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/cli/git.py +0 -0
  139. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/common.py +0 -0
  140. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/oauth.py +0 -0
  141. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/sdk.py +0 -0
  142. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/sdk_async.py +0 -0
  143. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/client/service_account_auth.py +0 -0
  144. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/cloud_stores.py +0 -0
  145. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/__init__.py +0 -0
  146. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/aws.py +0 -0
  147. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/azure.py +0 -0
  148. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/cloud.py +0 -0
  149. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/cudo.py +0 -0
  150. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/do.py +0 -0
  151. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/fluidstack.py +0 -0
  152. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/gcp.py +0 -0
  153. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/hyperbolic.py +0 -0
  154. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/ibm.py +0 -0
  155. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/kubernetes.py +0 -0
  156. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/lambda_cloud.py +0 -0
  157. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/nebius.py +0 -0
  158. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/oci.py +0 -0
  159. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/paperspace.py +0 -0
  160. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/runpod.py +0 -0
  161. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/scp.py +0 -0
  162. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/ssh.py +0 -0
  163. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/utils/__init__.py +0 -0
  164. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/utils/aws_utils.py +0 -0
  165. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/utils/azure_utils.py +0 -0
  166. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/utils/gcp_utils.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/utils/oci_utils.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/utils/scp_utils.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/vast.py +0 -0
  170. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/clouds/vsphere.py +0 -0
  171. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dag.py +0 -0
  172. {skypilot_nightly-1.0.0.dev20250808/sky/dashboard/out/_next/static/-DXZksWqf2waNHeU9YTQe → skypilot_nightly-1.0.0.dev20250812/sky/dashboard/out/_next/static/Fuy7OzApYTUMz2QgoP7dP}/_ssgManifest.js +0 -0
  173. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/1141-a8a8f1adba34c892.js +0 -0
  174. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js +0 -0
  175. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/1559-6c00e20454194859.js +0 -0
  176. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/1871-980a395e92633a5c.js +0 -0
  177. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/2369.fc20f0c2c8ed9fe7.js +0 -0
  178. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/2641.142718b6b78a6f9b.js +0 -0
  179. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/3785.6003d293cb83eab4.js +0 -0
  180. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/3850-ff4a9a69d978632b.js +0 -0
  181. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/3937.210053269f121201.js +0 -0
  182. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/4725.29550342bd53afd8.js +0 -0
  183. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/4937.a2baa2df5572a276.js +0 -0
  184. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/5739-d67458fcb1386c92.js +0 -0
  185. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/6130-2be46d70a38f1e82.js +0 -0
  186. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/6135-85426374db04811e.js +0 -0
  187. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/616-3d59f75e2ccf9321.js +0 -0
  188. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/6212-7bd06f60ba693125.js +0 -0
  189. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/6601-06114c982db410b6.js +0 -0
  190. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/691.5eeedf82cc243343.js +0 -0
  191. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/6989-6129c1cfbcf51063.js +0 -0
  192. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/6990-0f886f16e0d55ff8.js +0 -0
  193. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/7411-b15471acd2cba716.js +0 -0
  194. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/8252.62b0d23aed618bb2.js +0 -0
  195. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/8969-c9686994ddafcf01.js +0 -0
  196. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/9025.a1bef12d672bb66d.js +0 -0
  197. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/9159-11421c0f2909236f.js +0 -0
  198. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/9360.85b0b1b4054574dd.js +0 -0
  199. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/9666.cd4273f2a5c5802c.js +0 -0
  200. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/9847.757720f3b40c0aa5.js +0 -0
  201. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/9984.c5564679e467d245.js +0 -0
  202. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/fd9d1056-86323a29a8f7e46a.js +0 -0
  203. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/framework-cf60a09ccd051a10.js +0 -0
  204. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/main-app-587214043926b3cc.js +0 -0
  205. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/main-f15ccb73239a3bf1.js +0 -0
  206. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/_app-491a4d699d95e808.js +0 -0
  207. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js +0 -0
  208. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/clusters-b30460f683e6ba96.js +0 -0
  209. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/config-dfb9bf07b13045f4.js +0 -0
  210. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/index-444f1804401f04ea.js +0 -0
  211. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/infra/[context]-13d53fffc03ccb52.js +0 -0
  212. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/infra-fc9222e26c8e2f0d.js +0 -0
  213. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-154f55cf8af55be5.js +0 -0
  214. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-f5ccf5d39d87aebe.js +0 -0
  215. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/jobs-cdc60fb5d371e16a.js +0 -0
  216. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/users-7ed36e44e779d5c7.js +0 -0
  217. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/volumes-c9695d657f78b5dc.js +0 -0
  218. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js +0 -0
  219. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-f72f73bcef9541dc.js +0 -0
  220. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/pages/workspaces-8f67be60165724cc.js +0 -0
  221. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
  222. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/_next/static/css/4614e06482d7309e.css +0 -0
  223. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/favicon.ico +0 -0
  224. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/skypilot.svg +0 -0
  225. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/dashboard/out/videos/cursor-small.mp4 +0 -0
  226. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/data/__init__.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/data/data_transfer.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/data/data_utils.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/data/mounting_utils.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/data/storage.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/data/storage_utils.py +0 -0
  232. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/exceptions.py +0 -0
  233. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/__init__.py +0 -0
  234. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/client/__init__.py +0 -0
  235. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/client/sdk.py +0 -0
  236. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/client/sdk_async.py +0 -0
  237. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/constants.py +0 -0
  238. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/controller.py +0 -0
  239. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/scheduler.py +0 -0
  240. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/server/__init__.py +0 -0
  241. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/server/server.py +0 -0
  242. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/server/utils.py +0 -0
  243. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/jobs/state.py +0 -0
  244. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/logs/__init__.py +0 -0
  245. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/logs/agent.py +0 -0
  246. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/logs/aws.py +0 -0
  247. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/logs/gcp.py +0 -0
  248. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/metrics/__init__.py +0 -0
  249. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/metrics/utils.py +0 -0
  250. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/models.py +0 -0
  251. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/optimizer.py +0 -0
  252. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/aws/__init__.py +0 -0
  253. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/aws/config.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/aws/utils.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/azure/__init__.py +0 -0
  256. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/azure/azure-config-template.json +0 -0
  257. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/azure/config.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/common.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/constants.py +0 -0
  260. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/cudo/__init__.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/cudo/config.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/cudo/cudo_machine_type.py +0 -0
  263. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/cudo/cudo_utils.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/cudo/cudo_wrapper.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/do/__init__.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/do/config.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/do/constants.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/do/utils.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/docker_utils.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/fluidstack/__init__.py +0 -0
  271. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/fluidstack/config.py +0 -0
  272. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  273. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/gcp/__init__.py +0 -0
  274. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/gcp/config.py +0 -0
  275. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/gcp/constants.py +0 -0
  276. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/gcp/instance_utils.py +0 -0
  277. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/gcp/mig_utils.py +0 -0
  278. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/gcp/volume_utils.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/hyperbolic/__init__.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/hyperbolic/config.py +0 -0
  281. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/hyperbolic/utils.py +0 -0
  282. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/instance_setup.py +0 -0
  283. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/__init__.py +0 -0
  284. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/config.py +0 -0
  285. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/constants.py +0 -0
  286. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +0 -0
  287. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/network.py +0 -0
  288. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/network_utils.py +0 -0
  289. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/utils.py +0 -0
  290. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/kubernetes/volume.py +0 -0
  291. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/lambda_cloud/__init__.py +0 -0
  292. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/lambda_cloud/config.py +0 -0
  293. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  294. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/logging.py +0 -0
  295. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/metadata_utils.py +0 -0
  296. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/nebius/__init__.py +0 -0
  297. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/nebius/config.py +0 -0
  298. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/nebius/constants.py +0 -0
  299. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/nebius/utils.py +0 -0
  300. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/oci/__init__.py +0 -0
  301. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/oci/config.py +0 -0
  302. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/oci/query_utils.py +0 -0
  303. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/paperspace/__init__.py +0 -0
  304. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/paperspace/config.py +0 -0
  305. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/paperspace/constants.py +0 -0
  306. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/paperspace/utils.py +0 -0
  307. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/runpod/__init__.py +0 -0
  308. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/runpod/api/__init__.py +0 -0
  309. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/runpod/api/commands.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/runpod/api/pods.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/runpod/config.py +0 -0
  312. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/runpod/utils.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/scp/__init__.py +0 -0
  314. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/scp/config.py +0 -0
  315. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/ssh/__init__.py +0 -0
  316. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vast/__init__.py +0 -0
  317. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vast/config.py +0 -0
  318. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vast/utils.py +0 -0
  319. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/__init__.py +0 -0
  320. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/__init__.py +0 -0
  321. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  322. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  323. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/custom_script.py +0 -0
  324. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/id_generator.py +0 -0
  325. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  326. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/service_manager.py +0 -0
  327. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  328. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  329. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  330. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/common/vim_utils.py +0 -0
  331. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/config.py +0 -0
  332. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/provision/vsphere/vsphere_utils.py +0 -0
  333. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/py.typed +0 -0
  334. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/resources.py +0 -0
  335. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/README +0 -0
  336. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/env.py +0 -0
  337. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/global_user_state/002_add_workspace_to_cluster_history.py +0 -0
  338. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/global_user_state/003_fix_initial_revision.py +0 -0
  339. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/global_user_state/004_is_managed.py +0 -0
  340. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/script.py.mako +0 -0
  341. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/spot_jobs/002_cluster_pool.py +0 -0
  342. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/schemas/db/spot_jobs/003_pool_hash.py +0 -0
  343. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/__init__.py +0 -0
  344. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/autoscalers.py +0 -0
  345. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/client/__init__.py +0 -0
  346. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/client/impl.py +0 -0
  347. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/client/sdk.py +0 -0
  348. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/client/sdk_async.py +0 -0
  349. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/constants.py +0 -0
  350. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/controller.py +0 -0
  351. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/load_balancer.py +0 -0
  352. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/load_balancing_policies.py +0 -0
  353. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/replica_managers.py +0 -0
  354. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/serve_state.py +0 -0
  355. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/server/__init__.py +0 -0
  356. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/server/core.py +0 -0
  357. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/server/impl.py +0 -0
  358. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/server/server.py +0 -0
  359. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/service.py +0 -0
  360. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/service_spec.py +0 -0
  361. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/serve/spot_placer.py +0 -0
  362. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/__init__.py +0 -0
  363. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/auth/__init__.py +0 -0
  364. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/auth/authn.py +0 -0
  365. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/auth/oauth2_proxy.py +0 -0
  366. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/common.py +0 -0
  367. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/config.py +0 -0
  368. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/constants.py +0 -0
  369. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/daemons.py +0 -0
  370. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/html/log.html +0 -0
  371. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/html/token_page.html +0 -0
  372. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/metrics.py +0 -0
  373. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/__init__.py +0 -0
  374. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/event_loop.py +0 -0
  375. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/executor.py +0 -0
  376. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/payloads.py +0 -0
  377. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/preconditions.py +0 -0
  378. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/process.py +0 -0
  379. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/queues/__init__.py +0 -0
  380. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/queues/local_queue.py +0 -0
  381. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/queues/mp_queue.py +0 -0
  382. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/requests.py +0 -0
  383. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/serializers/__init__.py +0 -0
  384. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/serializers/decoders.py +0 -0
  385. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/requests/serializers/encoders.py +0 -0
  386. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/rest.py +0 -0
  387. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/server.py +0 -0
  388. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/state.py +0 -0
  389. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/stream_utils.py +0 -0
  390. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/uvicorn.py +0 -0
  391. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/server/versions.py +0 -0
  392. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/setup_files/MANIFEST.in +0 -0
  393. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/setup_files/alembic.ini +0 -0
  394. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/setup_files/dependencies.py +0 -0
  395. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/setup_files/setup.py +0 -0
  396. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/sky_logging.py +0 -0
  397. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/LICENSE +0 -0
  398. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/__init__.py +0 -0
  399. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/attempt_skylet.py +0 -0
  400. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/autostop_lib.py +0 -0
  401. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/configs.py +0 -0
  402. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/constants.py +0 -0
  403. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/events.py +0 -0
  404. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/job_lib.py +0 -0
  405. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/log_lib.py +0 -0
  406. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/log_lib.pyi +0 -0
  407. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/providers/__init__.py +0 -0
  408. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/providers/command_runner.py +0 -0
  409. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/providers/ibm/__init__.py +0 -0
  410. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/providers/ibm/node_provider.py +0 -0
  411. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/providers/ibm/utils.py +0 -0
  412. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  413. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/__init__.py +0 -0
  414. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  415. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/cli.py.patch +0 -0
  416. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  417. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  418. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  419. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/updater.py.patch +0 -0
  420. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/ray_patches/worker.py.patch +0 -0
  421. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/skylet.py +0 -0
  422. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/skylet/subprocess_daemon.py +0 -0
  423. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/ssh_node_pools/__init__.py +0 -0
  424. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/ssh_node_pools/core.py +0 -0
  425. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/ssh_node_pools/server.py +0 -0
  426. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/task.py +0 -0
  427. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/aws-ray.yml.j2 +0 -0
  428. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/azure-ray.yml.j2 +0 -0
  429. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/cudo-ray.yml.j2 +0 -0
  430. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/do-ray.yml.j2 +0 -0
  431. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  432. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/gcp-ray.yml.j2 +0 -0
  433. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/hyperbolic-ray.yml.j2 +0 -0
  434. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/ibm-ray.yml.j2 +0 -0
  435. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/jobs-controller.yaml.j2 +0 -0
  436. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  437. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  438. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  439. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  440. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  441. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/lambda-ray.yml.j2 +0 -0
  442. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/local-ray.yml.j2 +0 -0
  443. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/nebius-ray.yml.j2 +0 -0
  444. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/oci-ray.yml.j2 +0 -0
  445. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/paperspace-ray.yml.j2 +0 -0
  446. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/runpod-ray.yml.j2 +0 -0
  447. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/scp-ray.yml.j2 +0 -0
  448. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  449. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
  450. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/vast-ray.yml.j2 +0 -0
  451. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/vsphere-ray.yml.j2 +0 -0
  452. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/templates/websocket_proxy.py +0 -0
  453. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/usage/__init__.py +0 -0
  454. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/usage/constants.py +0 -0
  455. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/usage/usage_lib.py +0 -0
  456. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/users/__init__.py +0 -0
  457. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/users/model.conf +0 -0
  458. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/users/rbac.py +0 -0
  459. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/users/server.py +0 -0
  460. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/users/token_service.py +0 -0
  461. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/__init__.py +0 -0
  462. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/accelerator_registry.py +0 -0
  463. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/admin_policy_utils.py +0 -0
  464. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/annotations.py +0 -0
  465. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/atomic.py +0 -0
  466. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/aws/__init__.py +0 -0
  467. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/aws/get_default_security_group.py +0 -0
  468. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/cli_utils/__init__.py +0 -0
  469. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/cluster_utils.py +0 -0
  470. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/command_runner.py +0 -0
  471. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/command_runner.pyi +0 -0
  472. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/common.py +0 -0
  473. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/common_utils.py +0 -0
  474. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/config_utils.py +0 -0
  475. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/context.py +0 -0
  476. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/context_utils.py +0 -0
  477. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/control_master_utils.py +0 -0
  478. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/controller_utils.py +0 -0
  479. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/dag_utils.py +0 -0
  480. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/db/__init__.py +0 -0
  481. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/env_options.py +0 -0
  482. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/git.py +0 -0
  483. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/git_clone.sh +0 -0
  484. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/infra_utils.py +0 -0
  485. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/__init__.py +0 -0
  486. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/cleanup-tunnel.sh +0 -0
  487. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/config_map_utils.py +0 -0
  488. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/create_cluster.sh +0 -0
  489. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  490. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/deploy_remote_cluster.py +0 -0
  491. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
  492. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  493. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  494. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  495. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  496. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  497. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
  498. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  499. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/ssh-tunnel.sh +0 -0
  500. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  501. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes/ssh_utils.py +0 -0
  502. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/kubernetes_enums.py +0 -0
  503. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/locks.py +0 -0
  504. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/log_utils.py +0 -0
  505. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/message_utils.py +0 -0
  506. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/registry.py +0 -0
  507. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/resource_checker.py +0 -0
  508. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/resources_utils.py +0 -0
  509. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/rich_console_utils.py +0 -0
  510. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/rich_utils.py +0 -0
  511. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/schemas.py +0 -0
  512. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/status_lib.py +0 -0
  513. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/subprocess_utils.py +0 -0
  514. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/tempstore.py +0 -0
  515. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/timeline.py +0 -0
  516. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/ux_utils.py +0 -0
  517. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/validator.py +0 -0
  518. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/utils/volume.py +0 -0
  519. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/__init__.py +0 -0
  520. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/client/__init__.py +0 -0
  521. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/client/sdk.py +0 -0
  522. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/server/__init__.py +0 -0
  523. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/server/core.py +0 -0
  524. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/server/server.py +0 -0
  525. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/utils.py +0 -0
  526. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/volumes/volume.py +0 -0
  527. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/workspaces/__init__.py +0 -0
  528. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/workspaces/core.py +0 -0
  529. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/workspaces/server.py +0 -0
  530. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/sky/workspaces/utils.py +0 -0
  531. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  532. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  533. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/skypilot_nightly.egg-info/requires.txt +0 -0
  534. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/skypilot_nightly.egg-info/top_level.txt +0 -0
  535. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_api.py +0 -0
  536. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_cli.py +0 -0
  537. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_config.py +0 -0
  538. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_db_utils.py +0 -0
  539. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_failover.py +0 -0
  540. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_global_user_state.py +0 -0
  541. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_jobs.py +0 -0
  542. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_jobs_and_serve.py +0 -0
  543. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_list_accelerators.py +0 -0
  544. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_no_parellel.py +0 -0
  545. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_optimizer_dryruns.py +0 -0
  546. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_optimizer_random_dag.py +0 -0
  547. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_serve_autoscaler.py +0 -0
  548. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_smoke.py +0 -0
  549. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_storage.py +0 -0
  550. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/tests/test_wheels.py +0 -0
  551. {skypilot_nightly-1.0.0.dev20250808 → skypilot_nightly-1.0.0.dev20250812}/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.dev20250808
3
+ Version: 1.0.0.dev20250812
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -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 = 'eb83a691489c0c37aae9c22f607469ff78a74e34'
8
+ _SKYPILOT_COMMIT_SHA = '1e311e80f4a9112a6d2c86bb78d4c225042cedbc'
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.dev20250808'
38
+ __version__ = '1.0.0.dev20250812'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -142,8 +142,11 @@ def _load_config(context: Optional[str] = None):
142
142
  # show up in SkyPilot tasks. For now, we work around by using
143
143
  # DNS name instead of environment variables.
144
144
  # See issue: https://github.com/skypilot-org/skypilot/issues/2287
145
- os.environ['KUBERNETES_SERVICE_HOST'] = 'kubernetes.default.svc'
146
- os.environ['KUBERNETES_SERVICE_PORT'] = '443'
145
+ # Only set if not already present (preserving existing values)
146
+ if 'KUBERNETES_SERVICE_HOST' not in os.environ:
147
+ os.environ['KUBERNETES_SERVICE_HOST'] = 'kubernetes.default.svc'
148
+ if 'KUBERNETES_SERVICE_PORT' not in os.environ:
149
+ os.environ['KUBERNETES_SERVICE_PORT'] = '443'
147
150
  kubernetes.config.load_incluster_config()
148
151
  except kubernetes.config.config_exception.ConfigException:
149
152
  _load_config_from_kubeconfig()
@@ -1773,8 +1773,9 @@ def tag_filter_for_cluster(cluster_name: str) -> Dict[str, str]:
1773
1773
 
1774
1774
  def _query_cluster_status_via_cloud_api(
1775
1775
  handle: 'cloud_vm_ray_backend.CloudVmRayResourceHandle'
1776
- ) -> List[status_lib.ClusterStatus]:
1777
- """Returns the status of the cluster.
1776
+ ) -> List[Tuple[status_lib.ClusterStatus, Optional[str]]]:
1777
+ """Returns the status of the cluster as a list of tuples corresponding
1778
+ to the node status and an optional reason string for said status.
1778
1779
 
1779
1780
  Raises:
1780
1781
  exceptions.ClusterStatusFetchingError: the cluster status cannot be
@@ -1813,9 +1814,13 @@ def _query_cluster_status_via_cloud_api(
1813
1814
  region = provider_config.get('region') or provider_config.get(
1814
1815
  'location')
1815
1816
  zone = ray_config['provider'].get('availability_zone')
1817
+ # TODO (kyuds): refactor cloud.query_status api to include reason.
1818
+ # Currently not refactoring as this API is actually supposed to be
1819
+ # deprecated soon.
1816
1820
  node_statuses = cloud.query_status(
1817
1821
  cluster_name_on_cloud,
1818
1822
  tag_filter_for_cluster(cluster_name_on_cloud), region, zone)
1823
+ node_statuses = [(status, None) for status in node_statuses]
1819
1824
  return node_statuses
1820
1825
 
1821
1826
 
@@ -2015,8 +2020,8 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
2015
2020
 
2016
2021
  node_statuses = _query_cluster_status_via_cloud_api(handle)
2017
2022
 
2018
- all_nodes_up = (all(
2019
- status == status_lib.ClusterStatus.UP for status in node_statuses) and
2023
+ all_nodes_up = (all(status[0] == status_lib.ClusterStatus.UP
2024
+ for status in node_statuses) and
2020
2025
  len(node_statuses) == handle.launched_nodes)
2021
2026
 
2022
2027
  def get_node_counts_from_ray_status(
@@ -2121,6 +2126,13 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
2121
2126
  # run_ray_status_to_check_all_nodes_up() is slow due to calling `ray get
2122
2127
  # head-ip/worker-ips`.
2123
2128
  record['status'] = status_lib.ClusterStatus.UP
2129
+ # Add cluster event for instance status check.
2130
+ global_user_state.add_cluster_event(
2131
+ cluster_name,
2132
+ status_lib.ClusterStatus.UP,
2133
+ 'All nodes up + ray cluster healthy.',
2134
+ global_user_state.ClusterEventType.STATUS_CHANGE,
2135
+ nop_if_duplicate=True)
2124
2136
  global_user_state.add_or_update_cluster(cluster_name,
2125
2137
  handle,
2126
2138
  requested_resources=None,
@@ -2205,9 +2217,19 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
2205
2217
  # regardless of the ray cluster's health.
2206
2218
  # (2) Otherwise, we will reset the autostop setting, unless the cluster is
2207
2219
  # autostopping/autodowning.
2208
- is_abnormal = ((0 < len(node_statuses) < handle.launched_nodes) or any(
2209
- status != status_lib.ClusterStatus.STOPPED for status in node_statuses))
2220
+ some_nodes_terminated = 0 < len(node_statuses) < handle.launched_nodes
2221
+ some_nodes_not_stopped = any(status[0] != status_lib.ClusterStatus.STOPPED
2222
+ for status in node_statuses)
2223
+ is_abnormal = (some_nodes_terminated or some_nodes_not_stopped)
2224
+
2210
2225
  if is_abnormal:
2226
+ status_reason = ', '.join(
2227
+ [status[1] for status in node_statuses if status[1] is not None])
2228
+
2229
+ if some_nodes_terminated:
2230
+ init_reason = f'one or more nodes terminated ({status_reason})'
2231
+ elif some_nodes_not_stopped:
2232
+ init_reason = f'some nodes are up and some nodes are stopped ({status_reason})'
2211
2233
  logger.debug('The cluster is abnormal. Setting to INIT status. '
2212
2234
  f'node_statuses: {node_statuses}')
2213
2235
  if record['autostop'] >= 0:
@@ -2291,6 +2313,12 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
2291
2313
  # represent that the cluster is partially preempted.
2292
2314
  # TODO(zhwu): the definition of INIT should be audited/changed.
2293
2315
  # Adding a new status UNHEALTHY for abnormal status can be a choice.
2316
+ global_user_state.add_cluster_event(
2317
+ cluster_name,
2318
+ status_lib.ClusterStatus.INIT,
2319
+ f'Cluster is abnormal because {init_reason}. Transitioned to INIT.',
2320
+ global_user_state.ClusterEventType.STATUS_CHANGE,
2321
+ nop_if_duplicate=True)
2294
2322
  global_user_state.add_or_update_cluster(cluster_name,
2295
2323
  handle,
2296
2324
  requested_resources=None,
@@ -2301,6 +2329,9 @@ def _update_cluster_status(cluster_name: str) -> Optional[Dict[str, Any]]:
2301
2329
  # STOPPED.
2302
2330
  backend = backends.CloudVmRayBackend()
2303
2331
  backend.post_teardown_cleanup(handle, terminate=to_terminate, purge=False)
2332
+ global_user_state.add_cluster_event(
2333
+ cluster_name, None, 'All nodes stopped, terminating cluster.',
2334
+ global_user_state.ClusterEventType.STATUS_CHANGE)
2304
2335
  return global_user_state.get_cluster_from_name(cluster_name)
2305
2336
 
2306
2337
 
@@ -1527,6 +1527,13 @@ class RetryingVmProvisioner(object):
1527
1527
  is_managed=self._is_managed,
1528
1528
  )
1529
1529
 
1530
+ # Add cluster event for actual provisioning start.
1531
+ global_user_state.add_cluster_event(
1532
+ cluster_name, status_lib.ClusterStatus.INIT,
1533
+ f'Provisioning on {to_provision.cloud.display_name()} ' +
1534
+ f'in {to_provision.region}',
1535
+ global_user_state.ClusterEventType.STATUS_CHANGE)
1536
+
1530
1537
  global_user_state.set_owner_identity_for_cluster(
1531
1538
  cluster_name, cloud_user_identity)
1532
1539
 
@@ -2936,10 +2943,13 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
2936
2943
  skip_unnecessary_provisioning)
2937
2944
  except locks.LockTimeout:
2938
2945
  if not communicated_with_user:
2939
- logger.info(f'{colorama.Fore.YELLOW}'
2940
- f'Launching delayed, check concurrent tasks: '
2941
- f'sky api status')
2942
- communicated_with_user = True
2946
+ rich_utils.force_update_status(
2947
+ ux_utils.spinner_message('Launching - blocked by ' +
2948
+ 'other requests ' +
2949
+ colorama.Style.RESET_ALL +
2950
+ colorama.Style.DIM +
2951
+ 'Check concurrent requests: ' +
2952
+ 'sky api status '))
2943
2953
 
2944
2954
  def _locked_provision(
2945
2955
  self,
@@ -3007,6 +3017,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3007
3017
  break
3008
3018
  except exceptions.ResourcesUnavailableError as e:
3009
3019
  log_path = retry_provisioner.log_dir + '/provision.log'
3020
+
3010
3021
  error_message = (
3011
3022
  f'{colorama.Fore.RED}Failed to provision all '
3012
3023
  f'possible launchable resources.'
@@ -3023,6 +3034,13 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3023
3034
  hint_message = (f'\n{retry_message} '
3024
3035
  f'{ux_utils.log_path_hint(log_path)}'
3025
3036
  f'{colorama.Style.RESET_ALL}')
3037
+
3038
+ # Add cluster event for retry.
3039
+ global_user_state.add_cluster_event(
3040
+ cluster_name, status_lib.ClusterStatus.INIT,
3041
+ f'Retrying provisioning after {gap_seconds:.0f}s',
3042
+ global_user_state.ClusterEventType.STATUS_CHANGE)
3043
+
3026
3044
  raise exceptions.ExecutionRetryableError(
3027
3045
  error_message,
3028
3046
  hint=hint_message,
@@ -3074,6 +3092,13 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3074
3092
  # and other necessary files to the VM.
3075
3093
  # 3. Run setup commands to install dependencies.
3076
3094
  # 4. Starting ray cluster and skylet.
3095
+
3096
+ # Add cluster event for runtime setup start
3097
+ global_user_state.add_cluster_event(
3098
+ handle.cluster_name, status_lib.ClusterStatus.INIT,
3099
+ 'Setting up SkyPilot runtime on cluster',
3100
+ global_user_state.ClusterEventType.STATUS_CHANGE)
3101
+
3077
3102
  cluster_info = provisioner.post_provision_runtime_setup(
3078
3103
  repr(handle.launched_resources.cloud),
3079
3104
  resources_utils.ClusterName(handle.cluster_name,
@@ -3259,6 +3284,14 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3259
3284
  config_hash=config_hash,
3260
3285
  task_config=user_specified_task_config,
3261
3286
  )
3287
+
3288
+ # Add cluster event for successful provisioning.
3289
+ global_user_state.add_cluster_event(
3290
+ handle.cluster_name, status_lib.ClusterStatus.UP,
3291
+ 'Cluster successfully provisioned with ' +
3292
+ f'{handle.launched_nodes} nodes',
3293
+ global_user_state.ClusterEventType.STATUS_CHANGE)
3294
+
3262
3295
  usage_lib.messages.usage.update_final_cluster_status(
3263
3296
  status_lib.ClusterStatus.UP)
3264
3297
  # We still add the cluster to ssh config file on API server, this
@@ -4631,8 +4664,10 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
4631
4664
  non_terminated_only=False)
4632
4665
 
4633
4666
  unexpected_node_state: Optional[Tuple[str, str]] = None
4634
- for node_id, node_status in node_status_dict.items():
4635
- logger.debug(f'{node_id} status: {node_status}')
4667
+ for node_id, node_status_tuple in node_status_dict.items():
4668
+ node_status, reason = node_status_tuple
4669
+ reason = '' if reason is None else f' ({reason})'
4670
+ logger.debug(f'{node_id} status: {node_status}{reason}')
4636
4671
  # FIXME(cooperc): Some clouds (e.g. GCP) do not distinguish
4637
4672
  # between "stopping/stopped" and "terminating/terminated",
4638
4673
  # so we allow for either status instead of casing on
@@ -2981,6 +2981,8 @@ def _hint_or_raise_for_down_jobs_controller(controller_name: str,
2981
2981
  controller = controller_utils.Controllers.from_name(controller_name)
2982
2982
  assert controller is not None, controller_name
2983
2983
 
2984
+ # TODO(tian): We also need to check pools after we allow running pools on
2985
+ # jobs controller.
2984
2986
  with rich_utils.client_status(
2985
2987
  '[bold cyan]Checking for in-progress managed jobs[/]'):
2986
2988
  try:
@@ -3077,6 +3079,21 @@ def _hint_or_raise_for_down_sky_serve_controller(controller_name: str,
3077
3079
  # controller being STOPPED or being firstly launched, i.e., there is
3078
3080
  # no in-prgress services.
3079
3081
  services = []
3082
+ except exceptions.InconsistentConsolidationModeError:
3083
+ # If this error is raised, it means the user switched to the
3084
+ # consolidation mode but the previous controller cluster is still
3085
+ # running. We should allow the user to tear down the controller
3086
+ # cluster in this case.
3087
+ with skypilot_config.override_skypilot_config(
3088
+ {'serve': {
3089
+ 'controller': {
3090
+ 'consolidation_mode': False
3091
+ }
3092
+ }}):
3093
+ # Check again with the consolidation mode disabled. This is to
3094
+ # make sure there is no in-progress services.
3095
+ request_id = serve_lib.status(service_names=None)
3096
+ services = sdk.stream_and_get(request_id)
3080
3097
 
3081
3098
  if services:
3082
3099
  service_names = [service['name'] for service in services]
@@ -6052,8 +6069,11 @@ def api_logs(request_id: Optional[str], server_logs: bool,
6052
6069
  if request_id is not None and log_path is not None:
6053
6070
  raise click.BadParameter(
6054
6071
  'Only one of request ID and log path can be provided.')
6055
- sdk.stream_and_get(server_common.RequestId[None](request_id), log_path,
6056
- tail)
6072
+ # Only wrap request_id when it is provided; otherwise pass None so the
6073
+ # server accepts log_path-only streaming.
6074
+ req_id = (server_common.RequestId[None](request_id)
6075
+ if request_id is not None else None)
6076
+ sdk.stream_and_get(req_id, log_path, tail, follow=follow)
6057
6077
 
6058
6078
 
6059
6079
  @api.command('cancel', cls=_DocumentedCodeCommand)
@@ -633,6 +633,11 @@ def stop(cluster_name: str, purge: bool = False) -> None:
633
633
  raise exceptions.ClusterDoesNotExist(
634
634
  f'Cluster {cluster_name!r} does not exist.')
635
635
 
636
+ global_user_state.add_cluster_event(
637
+ cluster_name, status_lib.ClusterStatus.STOPPED,
638
+ 'Cluster was stopped by user.',
639
+ global_user_state.ClusterEventType.STATUS_CHANGE)
640
+
636
641
  backend = backend_utils.get_backend_from_handle(handle)
637
642
 
638
643
  if isinstance(backend, backends.CloudVmRayBackend):
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-339efec49c0cc7d0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-491a4d699d95e808.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js" defer=""></script><script src="/dashboard/_next/static/-DXZksWqf2waNHeU9YTQe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/-DXZksWqf2waNHeU9YTQe/_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":"-DXZksWqf2waNHeU9YTQe","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-7fd0cf9dbecff10f.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-491a4d699d95e808.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_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":"Fuy7OzApYTUMz2QgoP7dP","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- self.__BUILD_MANIFEST=function(s,c,e,a,t,f,u,n,o,r,j,i,b,k,h){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/chunks/pages/index-444f1804401f04ea.js"],"/_error":["static/chunks/pages/_error-c66a4e8afc46f17b.js"],"/clusters":["static/chunks/pages/clusters-b30460f683e6ba96.js"],"/clusters/[cluster]":[s,c,e,f,u,j,r,a,t,n,i,b,o,k,h,"static/chunks/1871-980a395e92633a5c.js","static/chunks/pages/clusters/[cluster]-155d477a6c3e04e2.js"],"/clusters/[cluster]/[job]":[s,c,e,f,a,t,o,"static/chunks/pages/clusters/[cluster]/[job]-ae17cec0fc6483d9.js"],"/config":["static/chunks/pages/config-dfb9bf07b13045f4.js"],"/infra":["static/chunks/pages/infra-fc9222e26c8e2f0d.js"],"/infra/[context]":["static/chunks/pages/infra/[context]-13d53fffc03ccb52.js"],"/jobs":["static/chunks/pages/jobs-cdc60fb5d371e16a.js"],"/jobs/pools/[pool]":[s,c,e,u,r,a,t,n,"static/chunks/pages/jobs/pools/[pool]-f5ccf5d39d87aebe.js"],"/jobs/[job]":[s,c,e,f,u,r,a,t,n,o,"static/chunks/pages/jobs/[job]-154f55cf8af55be5.js"],"/users":["static/chunks/pages/users-7ed36e44e779d5c7.js"],"/volumes":["static/chunks/pages/volumes-c9695d657f78b5dc.js"],"/workspace/new":["static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js"],"/workspaces":["static/chunks/pages/workspaces-8f67be60165724cc.js"],"/workspaces/[name]":[s,c,e,f,u,j,a,t,n,i,b,o,k,h,"static/chunks/1141-a8a8f1adba34c892.js","static/chunks/pages/workspaces/[name]-f72f73bcef9541dc.js"],sortedPages:["/","/_app","/_error","/clusters","/clusters/[cluster]","/clusters/[cluster]/[job]","/config","/infra","/infra/[context]","/jobs","/jobs/pools/[pool]","/jobs/[job]","/users","/volumes","/workspace/new","/workspaces","/workspaces/[name]"]}}("static/chunks/616-3d59f75e2ccf9321.js","static/chunks/6130-2be46d70a38f1e82.js","static/chunks/5739-d67458fcb1386c92.js","static/chunks/6989-6129c1cfbcf51063.js","static/chunks/3850-ff4a9a69d978632b.js","static/chunks/7411-b15471acd2cba716.js","static/chunks/1272-1ef0bf0237faccdb.js","static/chunks/8969-c9686994ddafcf01.js","static/chunks/6135-85426374db04811e.js","static/chunks/6212-7bd06f60ba693125.js","static/chunks/1559-6c00e20454194859.js","static/chunks/6990-0f886f16e0d55ff8.js","static/chunks/8056-34d27f51e6d1c631.js","static/chunks/6601-06114c982db410b6.js","static/chunks/9159-11421c0f2909236f.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
1
+ self.__BUILD_MANIFEST=function(s,c,a,e,t,f,u,n,o,r,j,i,b,k,h){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/chunks/pages/index-444f1804401f04ea.js"],"/_error":["static/chunks/pages/_error-c66a4e8afc46f17b.js"],"/clusters":["static/chunks/pages/clusters-b30460f683e6ba96.js"],"/clusters/[cluster]":[s,c,a,f,u,j,r,e,t,n,i,b,o,k,h,"static/chunks/1871-980a395e92633a5c.js","static/chunks/pages/clusters/[cluster]-da9cc0901349c2e9.js"],"/clusters/[cluster]/[job]":[s,c,a,f,e,t,o,"static/chunks/pages/clusters/[cluster]/[job]-078751bad714c017.js"],"/config":["static/chunks/pages/config-dfb9bf07b13045f4.js"],"/infra":["static/chunks/pages/infra-fc9222e26c8e2f0d.js"],"/infra/[context]":["static/chunks/pages/infra/[context]-13d53fffc03ccb52.js"],"/jobs":["static/chunks/pages/jobs-cdc60fb5d371e16a.js"],"/jobs/pools/[pool]":[s,c,a,u,r,e,t,n,"static/chunks/pages/jobs/pools/[pool]-f5ccf5d39d87aebe.js"],"/jobs/[job]":[s,c,a,f,u,r,e,t,n,o,"static/chunks/pages/jobs/[job]-154f55cf8af55be5.js"],"/users":["static/chunks/pages/users-7ed36e44e779d5c7.js"],"/volumes":["static/chunks/pages/volumes-c9695d657f78b5dc.js"],"/workspace/new":["static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js"],"/workspaces":["static/chunks/pages/workspaces-8f67be60165724cc.js"],"/workspaces/[name]":[s,c,a,f,u,j,e,t,n,i,b,o,k,h,"static/chunks/1141-a8a8f1adba34c892.js","static/chunks/pages/workspaces/[name]-f72f73bcef9541dc.js"],sortedPages:["/","/_app","/_error","/clusters","/clusters/[cluster]","/clusters/[cluster]/[job]","/config","/infra","/infra/[context]","/jobs","/jobs/pools/[pool]","/jobs/[job]","/users","/volumes","/workspace/new","/workspaces","/workspaces/[name]"]}}("static/chunks/616-3d59f75e2ccf9321.js","static/chunks/6130-2be46d70a38f1e82.js","static/chunks/5739-d67458fcb1386c92.js","static/chunks/6989-6129c1cfbcf51063.js","static/chunks/3850-ff4a9a69d978632b.js","static/chunks/7411-b15471acd2cba716.js","static/chunks/1272-1ef0bf0237faccdb.js","static/chunks/8969-c9686994ddafcf01.js","static/chunks/6135-85426374db04811e.js","static/chunks/6212-7bd06f60ba693125.js","static/chunks/1559-6c00e20454194859.js","static/chunks/6990-0f886f16e0d55ff8.js","static/chunks/8056-5bdeda81199c0def.js","static/chunks/6601-06114c982db410b6.js","static/chunks/9159-11421c0f2909236f.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8056],{50326:function(e,t,a){a.d(t,{$N:function(){return p},Be:function(){return _},Vq:function(){return c},cN:function(){return f},cZ:function(){return d},fK:function(){return g}});var r=a(85893),s=a(67294),o=a(6327),n=a(32350),l=a(43767);let c=o.fC;o.xz;let u=o.h_;o.x8;let i=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(o.aV,{ref:t,className:(0,n.cn)("fixed inset-0 z-50 bg-black/50 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...s})});i.displayName=o.aV.displayName;let d=s.forwardRef((e,t)=>{let{className:a,children:s,...c}=e;return(0,r.jsxs)(u,{children:[(0,r.jsx)(i,{}),(0,r.jsxs)(o.VY,{ref:t,className:(0,n.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-gray-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),...c,children:[s,(0,r.jsxs)(o.x8,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100 data-[state=open]:text-gray-500",children:[(0,r.jsx)(l.Z,{className:"h-4 w-4"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});d.displayName=o.VY.displayName;let g=e=>{let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,n.cn)("flex flex-col space-y-1.5 text-center sm:text-left",t),...a})};g.displayName="DialogHeader";let f=e=>{let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,n.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...a})};f.displayName="DialogFooter";let p=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(o.Dx,{ref:t,className:(0,n.cn)("text-lg font-semibold leading-none tracking-tight",a),...s})});p.displayName=o.Dx.displayName;let _=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(o.dk,{ref:t,className:(0,n.cn)("text-sm text-gray-500",a),...s})});_.displayName=o.dk.displayName},23266:function(e,t,a){a.d(t,{QL:function(){return g},Sl:function(){return i},getClusters:function(){return c},uR:function(){return u}});var r=a(67294),s=a(15821),o=a(47145),n=a(6378);let l={UP:"RUNNING",STOPPED:"STOPPED",INIT:"LAUNCHING",null:"TERMINATED"};async function c(){let{clusterNames:e=null}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{return(await o.x.fetch("/status",{cluster_names:e,all_users:!0})).map(e=>{let t="",a=t=e.zone?e.zone:e.region;return t&&t.length>25&&(t=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15;if(!e||e.length<=t)return e;if(t<=3)return"...";let a=Math.floor((t-3)/2),r=a+(t-3)%2;return 0===a?e.substring(0,r)+"...":e.substring(0,r)+"..."+e.substring(e.length-a)}(t,25)),{status:l[e.status],cluster:e.name,user:e.user_name,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:e.cloud,region:e.region,infra:t?e.cloud+" ("+t+")":e.cloud,full_infra:a?"".concat(e.cloud," (").concat(a,")"):e.cloud,cpus:e.cpus,mem:e.memory,gpus:e.accelerators,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:new Date(1e3*e.launched_at),num_nodes:e.nodes,workspace:e.workspace,autostop:e.autostop,last_event:e.last_event,to_down:e.to_down,jobs:[],command:e.last_creation_command||e.last_use,task_yaml:e.last_creation_yaml||"{}",events:[{time:new Date(1e3*e.launched_at),event:"Cluster created."}]}})}catch(e){return console.error("Error fetching clusters:",e),[]}}async function u(){try{let e=await o.x.fetch("/cost_report",{days:30});console.log("Raw cluster history data:",e);let t=e.map(e=>{let t="Unknown";e.cloud?t=e.cloud:e.resources&&e.resources.cloud&&(t=e.resources.cloud);let a=e.user_name||"-";return{status:e.status?l[e.status]:"TERMINATED",cluster:e.name,user:a,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:t,region:"",infra:t,full_infra:t,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:e.launched_at?new Date(1e3*e.launched_at):null,num_nodes:e.num_nodes||1,duration:e.duration,total_cost:e.total_cost,workspace:e.workspace||"default",autostop:-1,to_down:!1,usage_intervals:e.usage_intervals,command:e.last_creation_command||"",task_yaml:e.last_creation_yaml||"{}",events:[{time:e.launched_at?new Date(1e3*e.launched_at):new Date,event:"Cluster created."}]}});return console.log("Processed cluster history data:",t),t}catch(e){return console.error("Error fetching cluster history:",e),[]}}async function i(e){let{clusterName:t,jobId:a,onNewLog:r,workspace:n}=e;try{await o.x.stream("/logs",{follow:!1,cluster_name:t,job_id:a,tail:1e4,override_skypilot_config:{active_workspace:n||"default"}},r)}catch(e){console.error("Error in streamClusterJobLogs:",e),(0,s.C)("Error in streamClusterJobLogs: ".concat(e.message),"error")}}async function d(e){let{clusterName:t,workspace:a}=e;try{return(await o.x.fetch("/queue",{cluster_name:t,all_users:!0,override_skypilot_config:{active_workspace:a}})).map(e=>{var r;let s=e.end_at?e.end_at:Date.now()/1e3,o=0,n=0;return e.submitted_at&&(o=s-e.submitted_at),e.start_at&&(n=s-e.start_at),{id:e.job_id,status:e.status,job:e.job_name,user:e.username,user_hash:e.user_hash,gpus:e.accelerators||{},submitted_at:e.submitted_at?new Date(1e3*e.submitted_at):null,resources:e.resources,cluster:t,total_duration:o,job_duration:n,infra:"",logs:"",workspace:a||"default",git_commit:(null===(r=e.metadata)||void 0===r?void 0:r.git_commit)||"-"}})}catch(e){return console.error("Error fetching cluster jobs:",e),[]}}function g(e){let{cluster:t,job:a=null}=e,[s,o]=(0,r.useState)(null),[l,u]=(0,r.useState)(null),[i,g]=(0,r.useState)(!0),[f,p]=(0,r.useState)(!0),_=(0,r.useCallback)(async()=>{if(t)try{g(!0);let e=await n.default.get(c,[{clusterNames:[t]}]);return o(e[0]),e[0]}catch(e){console.error("Error fetching cluster data:",e)}finally{g(!1)}return null},[t]),h=(0,r.useCallback)(async e=>{if(t)try{p(!0);let a=await n.default.get(d,[{clusterName:t,workspace:e||"default"}]);u(a)}catch(e){console.error("Error fetching cluster job data:",e)}finally{p(!1)}},[t]),m=(0,r.useCallback)(async()=>{n.default.invalidate(c,[{clusterNames:[t]}]);let e=await _();e&&(n.default.invalidate(d,[{clusterName:t,workspace:e.workspace||"default"}]),await h(e.workspace))},[_,h,t]),y=(0,r.useCallback)(async()=>{s&&(n.default.invalidate(d,[{clusterName:t,workspace:s.workspace||"default"}]),await h(s.workspace))},[h,s,t]);return(0,r.useEffect)(()=>{(async()=>{let e=await _();e&&h(e.workspace)})()},[t,a,_,h]),{clusterData:s,clusterJobData:l,loading:i,clusterDetailsLoading:i,clusterJobsLoading:f,refreshData:m,refreshClusterJobsOnly:y}}},32045:function(e,t,a){a.d(t,{l4:function(){return n}});var r=a(93225),s=a(47145);async function o(e,t){let a=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let o=[];try{if(a){console.log("Force refreshing clouds by running sky check...");try{let e=await s.x.post("/check",{}),t=e.headers.get("X-Skypilot-Request-ID")||e.headers.get("X-Request-ID"),a=await s.x.get("/api/get?request_id=".concat(t)),r=await a.json();console.log("Sky check completed:",r)}catch(e){console.error("Error running sky check:",e)}}let e=await s.x.get("/enabled_clouds"),t=e.headers.get("X-Skypilot-Request-ID")||e.headers.get("X-Request-ID"),r=await s.x.get("/api/get?request_id=".concat(t)),n=await r.json();o=n.return_value?JSON.parse(n.return_value):[],console.log("Enabled clouds:",o)}catch(e){console.error("Error fetching enabled clouds:",e),o=[]}let n={};r.$m.forEach(e=>{let t=o.includes(e.toLowerCase());n[e]={name:e,clusters:0,jobs:0,enabled:t}}),e.forEach(e=>{if(e.cloud){let t=e.cloud;n[t]&&(n[t].clusters+=1,n[t].enabled=!0)}}),t.forEach(e=>{if(e.cloud){let t=e.cloud;n[t]&&(n[t].jobs+=1,n[t].enabled=!0)}});let l=r.$m.length,c=Object.values(n).filter(e=>e.enabled).length;return{clouds:Object.values(n).filter(e=>e.enabled).sort((e,t)=>e.name.localeCompare(t.name)),totalClouds:l,enabledClouds:c}}catch(e){return console.error("Error fetching cloud infrastructure:",e),{clouds:[],totalClouds:r.$m.length,enabledClouds:0}}}async function n(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],{getClusters:t}=await Promise.resolve().then(a.bind(a,23266)),{getManagedJobs:r}=await Promise.resolve().then(a.bind(a,68969)),s=(await Promise.resolve().then(a.bind(a,6378))).default,[n,c]=await Promise.all([s.get(t),s.get(r,[{allUsers:!0}])]),u=n||[],i=(null==c?void 0:c.jobs)||[],[d,g]=await Promise.all([l(u,i),o(u,i,e)]);return{gpuData:d,cloudData:g}}async function l(e,t){return await g({clusters:e||[],jobs:t||[]})}async function c(){try{let e=await s.x.post("/realtime_kubernetes_gpu_availability",{context:null,name_filter:null,quantity_filter:null});if(!e.ok)return console.error("Error fetching Kubernetes context GPUs (in getKubernetesContextGPUs): ".concat(e.status," ").concat(e.statusText)),[];let t=e.headers.get("X-Skypilot-Request-ID")||e.headers.get("x-request-id");if(!t)return console.error("No request ID returned for Kubernetes GPU availability (in getKubernetesContextGPUs)"),[];let a=await s.x.get("/api/get?request_id=".concat(t)),r=await a.text();if(500===a.status){try{let e=JSON.parse(r);if(e.detail&&e.detail.error)try{let t=JSON.parse(e.detail.error);console.error("[infra.jsx] getKubernetesContextGPUs: Server error detail:",t.message)}catch(t){console.error("[infra.jsx] getKubernetesContextGPUs: Error parsing server error JSON:",t,"Original error text:",e.detail.error)}}catch(e){console.error("[infra.jsx] getKubernetesContextGPUs: Error parsing 500 error response JSON:",e,"Raw text was:",r)}return[]}let o=JSON.parse(r);return o.return_value?JSON.parse(o.return_value):[]}catch(e){return console.error("[infra.jsx] Outer error in getKubernetesContextGPUs:",e),[]}}async function u(){try{let e=await s.x.get("/all_contexts");if(!e.ok)return console.error("Error fetching all contexts: ".concat(e.status," ").concat(e.statusText)),[];let t=e.headers.get("X-Skypilot-Request-ID")||e.headers.get("x-request-id");if(!t)return console.error("No request ID returned for /all_contexts"),[];let a=await s.x.get("/api/get?request_id=".concat(t)),r=await a.json();return r.return_value?JSON.parse(r.return_value):[]}catch(e){return console.error("[infra.jsx] Error in getAllContexts:",e),[]}}async function i(e){try{let t=await s.x.post("/kubernetes_node_info",{context:e}),a=t.headers.get("X-Skypilot-Request-ID")||t.headers.get("x-request-id"),r=await s.x.get("/api/get?request_id=".concat(a));if(500===r.status){try{let e=await r.json();if(e.detail&&e.detail.error)try{let t=JSON.parse(e.detail.error);console.error("Error fetching Kubernetes per node GPUs:",t.message)}catch(e){console.error("Error parsing JSON:",e)}}catch(e){console.error("Error parsing JSON:",e)}return{}}let o=await r.json();return(o.return_value?JSON.parse(o.return_value):{}).node_info_dict||{}}catch(t){return console.error("[infra.jsx] Error in getKubernetesPerNodeGPUs for context",e,":",t),{}}}async function d(e){try{let t=e.clusters,a=e.jobs,r={};return t.forEach(e=>{let t=null;if("Kubernetes"===e.cloud)(t=e.region)&&(t="kubernetes/".concat(t));else if("SSH"===e.cloud&&(t=e.region)){let e=t.startsWith("ssh-")?t.substring(4):t;t="ssh/".concat(e)}t&&(r[t]||(r[t]={clusters:0,jobs:0}),r[t].clusters+=1)}),a.forEach(e=>{let t=null;if("Kubernetes"===e.cloud)(t=e.region)&&(t="kubernetes/".concat(t));else if("SSH"===e.cloud&&(t=e.region)){let e=t.startsWith("ssh-")?t.substring(4):t;t="ssh/".concat(e)}t&&(r[t]||(r[t]={clusters:0,jobs:0}),r[t].jobs+=1)}),r}catch(e){return console.error("=== Error in getContextClustersAndJobs ===",e),{}}}async function g(e){try{let o=await u();if(!o||0===o.length)return console.log("No contexts found from /all_contexts endpoint."),{allContextNames:[],allGPUs:[],perContextGPUs:[],perNodeGPUs:[],contextStats:{}};let n=await d(e),l=await c(),g=new Map;l&&l.forEach(e=>{g.set(e[0],e[1])});let f={},p={},_={};for(let e of o){p[e]||(p[e]=[]);let o=g.get(e);if(o&&o.length>0)for(let t of o){let a=t[0],r=t[1].join(", "),s=t[2],o=t[3];a in f?(f[a].gpu_total+=s,f[a].gpu_free+=o):f[a]={gpu_total:s,gpu_free:o,gpu_name:a},p[e].push({gpu_name:a,gpu_requestable_qty_per_node:r,gpu_total:s,gpu_free:o,context:e})}let n=await i(e);if(n&&Object.keys(n).length>0)for(let o in n){var t,a,r,s;let l=n[o],c=l.accelerator_type||"-",u=null!==(r=null===(t=l.total)||void 0===t?void 0:t.accelerator_count)&&void 0!==r?r:0,i=null!==(s=null===(a=l.free)||void 0===a?void 0:a.accelerators_available)&&void 0!==s?s:0;_["".concat(e,"/").concat(o)]={node_name:l.name,gpu_name:c,gpu_total:u,gpu_free:i,ip_address:l.ip_address||null,context:e},"-"===c||p[e].some(e=>e.gpu_name===c)||(c in f||(f[c]={gpu_total:0,gpu_free:0,gpu_name:c}),p[e].find(e=>e.gpu_name===c)||p[e].push({gpu_name:c,gpu_requestable_qty_per_node:"-",gpu_total:0,gpu_free:0,context:e}))}0===p[e].length&&n&&Object.keys(n).length}return{allContextNames:o.sort(),allGPUs:Object.values(f).sort((e,t)=>e.gpu_name.localeCompare(t.gpu_name)),perContextGPUs:Object.values(p).flat().sort((e,t)=>e.context.localeCompare(t.context)||e.gpu_name.localeCompare(t.gpu_name)),perNodeGPUs:Object.values(_).sort((e,t)=>e.context.localeCompare(t.context)||e.node_name.localeCompare(t.node_name)||e.gpu_name.localeCompare(t.gpu_name)),contextStats:n}}catch(e){return console.error("[infra.jsx] Outer error in getKubernetesGPUs:",e),{allContextNames:[],allGPUs:[],perContextGPUs:[],perNodeGPUs:[],contextStats:{}}}}},53081:function(e,t,a){a.d(t,{R:function(){return s}}),a(23266),a(68969);var r=a(47145);async function s(){try{let e=await r.x.get("/users");if(!e.ok)throw Error("HTTP error! status: ".concat(e.status));return(await e.json()).map(e=>({userId:e.id,username:e.name,role:e.role,created_at:e.created_at}))||[]}catch(e){return console.error("Failed to fetch users:",e),[]}}},19238:function(e,t,a){a.d(t,{C:function(){return s},w:function(){return o}});var r=a(47145);async function s(){try{return(await r.x.fetch("/volumes",{},"GET")).map(e=>{var t,a,r;let s=e.cloud||"";return e.region&&(s+="/".concat(e.region)),e.zone&&(s+="/".concat(e.zone)),{name:e.name,launched_at:e.launched_at,user_hash:e.user_hash,user_name:e.user_name||"-",workspace:e.workspace||"-",last_attached_at:e.last_attached_at,status:e.status,type:e.type,cloud:e.cloud,region:e.region,zone:e.zone,infra:s,size:"".concat(e.size,"Gi"),config:e.config,storage_class:(null===(t=e.config)||void 0===t?void 0:t.storage_class_name)||"-",access_mode:(null===(a=e.config)||void 0===a?void 0:a.access_mode)||"-",namespace:(null===(r=e.config)||void 0===r?void 0:r.namespace)||"-",name_on_cloud:e.name_on_cloud,usedby_pods:e.usedby_pods,usedby_clusters:e.usedby_clusters}})||[]}catch(e){return console.error("Failed to fetch volumes:",e),[]}}async function o(e){let t="";try{let a=await r.x.post("/volumes/delete",{names:[e]}),s=a.headers.get("X-SkyPilot-Request-ID")||a.headers.get("X-Request-ID"),o=await r.x.get("/api/get?request_id=".concat(s));if(500===o.status){try{let e=await o.json();if(e.detail&&e.detail.error)try{t=JSON.parse(e.detail.error).message}catch(e){console.error("Error parsing JSON:",e)}}catch(e){console.error("Error parsing JSON:",e)}return{success:!1,msg:t}}return{success:!0}}catch(e){return console.error("Failed to delete volume:",e),{success:!1,msg:e.message}}}},23001:function(e,t,a){a.d(t,{X:function(){return s}});var r=a(67294);function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:768,[t,a]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{let t=()=>{a(window.innerWidth<e)};return t(),window.addEventListener("resize",t),()=>{window.removeEventListener("resize",t)}},[e]),t}},36856:function(e,t,a){var r=a(6378),s=a(23266),o=a(68969),n=a(17324),l=a(53081),c=a(32045),u=a(19238);let i={base:{getClusters:{fn:s.getClusters,args:[]},getClusterHistory:{fn:s.uR,args:[]},getManagedJobs:{fn:o.getManagedJobs,args:[{allUsers:!0}]},getWorkspaces:{fn:n.fX,args:[]},getUsers:{fn:l.R,args:[]},getInfraData:{fn:c.l4,args:[]},getVolumes:{fn:u.C,args:[]}},dynamic:{getEnabledClouds:{fn:n.yz,requiresWorkspaces:!0}},pages:{clusters:["getClusters","getClusterHistory","getWorkspaces","getUsers"],jobs:["getManagedJobs","getClusters","getWorkspaces","getUsers"],infra:["getInfraData","getClusters","getManagedJobs"],workspaces:["getWorkspaces","getClusters","getManagedJobs","getEnabledClouds"],users:["getUsers","getClusters","getManagedJobs"],volumes:["getVolumes"]}};class d{async preloadForPage(e,t){let{backgroundPreload:a=!0,force:r=!1}=t||{};if(!i.pages[e]){console.warn("Unknown page: ".concat(e));return}console.log("[CachePreloader] Preloading cache for page: ".concat(e));try{await this._loadPageData(e,r),a&&this._backgroundPreloadOtherPages(e)}catch(t){console.error("[CachePreloader] Error preloading for page ".concat(e,":"),t)}}async _loadPageData(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=i.pages[e],s=[];for(let e of a)if(i.base[e]){let{fn:a,args:o}=i.base[e];t&&r.default.invalidate(a,o),s.push(r.default.get(a,o))}else"getEnabledClouds"===e&&s.push(this._loadEnabledCloudsForAllWorkspaces(t));await Promise.allSettled(s),console.log("[CachePreloader] Loaded data for page: ".concat(e))}async _loadEnabledCloudsForAllWorkspaces(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];try{e&&r.default.invalidate(n.fX);let t=await r.default.get(n.fX),a=Object.keys(t||{}).map(t=>(e&&r.default.invalidate(n.yz,[t]),r.default.get(n.yz,[t])));await Promise.allSettled(a)}catch(e){console.error("[CachePreloader] Error loading enabled clouds:",e)}}_backgroundPreloadOtherPages(e){if(this.isPreloading)return;this.isPreloading=!0;let t=Object.keys(i.pages).filter(t=>t!==e);console.log("[CachePreloader] Background preloading pages: ".concat(t.join(", "))),Promise.allSettled(t.map(async e=>{try{await this._loadPageData(e,!1),console.log("[CachePreloader] Background loaded: ".concat(e))}catch(t){console.error("[CachePreloader] Background load failed for ".concat(e,":"),t)}})).then(()=>{this.isPreloading=!1,console.log("[CachePreloader] Background preloading complete")})}async preloadBaseFunctions(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];console.log("[CachePreloader] Preloading all base functions");let t=Object.entries(i.base).map(t=>{let[a,{fn:s,args:o}]=t;return e&&r.default.invalidate(s,o),r.default.get(s,o).catch(e=>{console.error("[CachePreloader] Failed to preload ".concat(a,":"),e)})});await Promise.allSettled(t),console.log("[CachePreloader] Base functions preloaded")}getCacheStats(){return{...r.default.getStats(),isPreloading:this.isPreloading}}clearCache(){r.default.clear(),this.isPreloading=!1,this.preloadPromises.clear(),console.log("[CachePreloader] Cache cleared")}constructor(){this.isPreloading=!1,this.preloadPromises=new Map}}let g=new d;t.ZP=g}}]);
@@ -0,0 +1,11 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9826,9666],{94966:function(e,t,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/clusters/[cluster]/[job]",function(){return s(50190)}])},27325:function(e,t,s){"use strict";s.d(t,{Z:function(){return a}});/**
2
+ * @license lucide-react v0.407.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */let a=(0,s(60998).Z)("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},13626:function(e,t,s){"use strict";s.d(t,{Z:function(){return a}});/**
7
+ * @license lucide-react v0.407.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */let a=(0,s(60998).Z)("RotateCw",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]])},99307:function(e,t,s){"use strict";s.d(t,{Cl:function(){return l},OE:function(){return u}});var a=s(85893);s(67294);var r=s(55739),n=s(36989),c=s(53850);let l=e=>{switch(e){case"LAUNCHING":return"bg-blue-100 text-sky-blue";case"RUNNING":case"IN_USE":case"READY":return"bg-green-50 text-green-700";case"STOPPED":return"bg-yellow-100 text-yellow-800";case"TERMINATED":case"PENDING":case"UNKNOWN":default:return"bg-gray-100 text-gray-800";case"SUCCEEDED":case"PROVISIONING":case"CONTROLLER_INIT":case"REPLICA_INIT":return"bg-blue-50 text-blue-700";case"FAILED":case"FAILED_PRECHECKS":case"FAILED_NO_RESOURCE":case"FAILED_CONTROLLER":case"FAILED_INITIAL_DELAY":case"FAILED_PROBING":case"FAILED_PROVISION":case"FAILED_CLEANUP":case"CONTROLLER_FAILED":return"bg-red-50 text-red-700";case"CANCELLED":case"CANCELLING":case"NOT_READY":return"bg-yellow-50 text-yellow-700";case"RECOVERING":case"SHUTTING_DOWN":return"bg-orange-50 text-orange-700";case"SUBMITTED":return"bg-indigo-50 text-indigo-700";case"STARTING":return"bg-cyan-50 text-cyan-700";case"FAILED_SETUP":return"bg-pink-50 text-pink-700";case"PREEMPTED":case"NO_REPLICA":return"bg-purple-50 text-purple-700"}},i=e=>{switch(e){case"LAUNCHING":case"STARTING":case"PROVISIONING":case"SHUTTING_DOWN":return(0,a.jsx)(r.Z,{size:12,className:"w-3 h-3 mr-1"});case"RUNNING":case"IN_USE":default:return(0,a.jsx)(c.W2,{className:"w-3 h-3 mr-1"});case"STOPPED":case"PREEMPTED":return(0,a.jsx)(c.fp,{className:"w-3 h-3 mr-1"});case"TERMINATED":case"FAILED":case"CANCELLED":case"FAILED_INITIAL_DELAY":case"FAILED_PROBING":case"FAILED_PROVISION":case"FAILED_CLEANUP":case"CONTROLLER_FAILED":case"UNKNOWN":return(0,a.jsx)(c.Ps,{className:"w-3 h-3 mr-1"});case"SUCCEEDED":return(0,a.jsx)(c.Ye,{className:"w-3 h-3 mr-1"});case"PENDING":case"RECOVERING":case"SUBMITTED":case"CANCELLING":case"FAILED_SETUP":case"FAILED_PRECHECKS":case"FAILED_NO_RESOURCE":case"FAILED_CONTROLLER":case"READY":case"NOT_READY":case"CONTROLLER_INIT":case"REPLICA_INIT":case"NO_REPLICA":return(0,a.jsx)(c.J$,{className:"w-3 h-3 mr-1"})}},o=e=>{let t=l(e),s=i(e);return(0,a.jsxs)("span",{className:"".concat("inline-flex items-center px-2 py-1 rounded-full text-sm"," ").concat(t),children:[s,e]})},u=e=>{let{status:t}=e;return(0,a.jsx)(n.WH,{content:t,className:"text-muted-foreground text-sm",children:(0,a.jsx)("span",{children:o(t)})})}},20546:function(e,t,s){"use strict";s.d(t,{H:function(){return u}});var a=s(85893);s(67294);var r=s(41664),n=s.n(r),c=s(45697),l=s.n(c);function i(e){return!!e&&"string"==typeof e&&e.toLowerCase().startsWith("sa-")}let o=()=>(0,a.jsx)("span",{className:"px-2 py-0.5 text-xs bg-blue-100 text-blue-700 rounded font-medium ml-1",children:"SA"}),u=e=>{let{username:t,userHash:s,className:r="flex items-center gap-1",linkClassName:c="text-gray-700 hover:text-blue-600 hover:underline",showBadge:l=!0}=e,u=i(s),d=i(s)?"/users?tab=service-accounts":"/users";return(0,a.jsxs)("div",{className:r,children:[(0,a.jsx)(n(),{href:d,className:c,children:t}),l&&u&&(0,a.jsx)(o,{})]})};u.propTypes={username:l().string.isRequired,userHash:l().string,className:l().string,linkClassName:l().string,showBadge:l().bool}},37673:function(e,t,s){"use strict";s.d(t,{Ol:function(){return o},Zb:function(){return i},aY:function(){return h},ll:function(){return u}});var a=s(85893),r=s(67294),n=s(45697),c=s.n(n),l=s(32350);let i=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",s),...n,children:r})});i.displayName="Card",i.propTypes={className:c().string,children:c().node};let o=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("flex flex-col space-y-1.5 p-6",s),...n,children:r})});o.displayName="CardHeader",o.propTypes={className:c().string,children:c().node};let u=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("h3",{ref:t,className:(0,l.cn)("text-2xl font-semibold leading-none tracking-tight",s),...n,children:r})});u.displayName="CardTitle",u.propTypes={className:c().string,children:c().node};let d=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("p",{ref:t,className:(0,l.cn)("text-sm text-muted-foreground",s),...n,children:r})});d.displayName="CardDescription",d.propTypes={className:c().string,children:c().node};let h=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("p-6 pt-0",s),...n,children:r})});h.displayName="CardContent",h.propTypes={className:c().string,children:c().node};let m=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("flex items-center p-6 pt-0",s),...n,children:r})});m.displayName="CardFooter",m.propTypes={className:c().string,children:c().node}},47145:function(e,t,s){"use strict";s.d(t,{x:function(){return r}});var a=s(93225);let r={fetch:async function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"POST",r=window.location.origin,n="".concat(r).concat(a.f4).concat(e),c=await fetch(n,{method:s,headers:"POST"===s?{"Content-Type":"application/json"}:{},body:"POST"===s?JSON.stringify(t):void 0}),l=c.headers.get("X-Skypilot-Request-ID")||c.headers.get("X-Request-ID"),i=await fetch("".concat(r).concat(a.f4,"/api/get?request_id=").concat(l)),o=await i.json();return o.return_value?JSON.parse(o.return_value):[]},post:async(e,t)=>{let s=window.location.origin,r="".concat(s).concat(a.f4).concat(e);return await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})},stream:async(e,t,s)=>{let a=(await r.post(e,t)).body.getReader();try{for(;;){let{done:e,value:t}=await a.read();if(e)break;let r=new TextDecoder().decode(t);s(r)}}catch(e){throw console.error("Error in stream:",e),e}},get:async e=>{let t=window.location.origin,s="".concat(t).concat(a.f4).concat(e);return await fetch(s)}}},23266:function(e,t,s){"use strict";s.d(t,{QL:function(){return h},Sl:function(){return u},getClusters:function(){return i},uR:function(){return o}});var a=s(67294),r=s(15821),n=s(47145),c=s(6378);let l={UP:"RUNNING",STOPPED:"STOPPED",INIT:"LAUNCHING",null:"TERMINATED"};async function i(){let{clusterNames:e=null}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{return(await n.x.fetch("/status",{cluster_names:e,all_users:!0})).map(e=>{let t="",s=t=e.zone?e.zone:e.region;return t&&t.length>25&&(t=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15;if(!e||e.length<=t)return e;if(t<=3)return"...";let s=Math.floor((t-3)/2),a=s+(t-3)%2;return 0===s?e.substring(0,a)+"...":e.substring(0,a)+"..."+e.substring(e.length-s)}(t,25)),{status:l[e.status],cluster:e.name,user:e.user_name,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:e.cloud,region:e.region,infra:t?e.cloud+" ("+t+")":e.cloud,full_infra:s?"".concat(e.cloud," (").concat(s,")"):e.cloud,cpus:e.cpus,mem:e.memory,gpus:e.accelerators,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:new Date(1e3*e.launched_at),num_nodes:e.nodes,workspace:e.workspace,autostop:e.autostop,last_event:e.last_event,to_down:e.to_down,jobs:[],command:e.last_creation_command||e.last_use,task_yaml:e.last_creation_yaml||"{}",events:[{time:new Date(1e3*e.launched_at),event:"Cluster created."}]}})}catch(e){return console.error("Error fetching clusters:",e),[]}}async function o(){try{let e=await n.x.fetch("/cost_report",{days:30});console.log("Raw cluster history data:",e);let t=e.map(e=>{let t="Unknown";e.cloud?t=e.cloud:e.resources&&e.resources.cloud&&(t=e.resources.cloud);let s=e.user_name||"-";return{status:e.status?l[e.status]:"TERMINATED",cluster:e.name,user:s,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:t,region:"",infra:t,full_infra:t,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:e.launched_at?new Date(1e3*e.launched_at):null,num_nodes:e.num_nodes||1,duration:e.duration,total_cost:e.total_cost,workspace:e.workspace||"default",autostop:-1,to_down:!1,usage_intervals:e.usage_intervals,command:e.last_creation_command||"",task_yaml:e.last_creation_yaml||"{}",events:[{time:e.launched_at?new Date(1e3*e.launched_at):new Date,event:"Cluster created."}]}});return console.log("Processed cluster history data:",t),t}catch(e){return console.error("Error fetching cluster history:",e),[]}}async function u(e){let{clusterName:t,jobId:s,onNewLog:a,workspace:c}=e;try{await n.x.stream("/logs",{follow:!1,cluster_name:t,job_id:s,tail:1e4,override_skypilot_config:{active_workspace:c||"default"}},a)}catch(e){console.error("Error in streamClusterJobLogs:",e),(0,r.C)("Error in streamClusterJobLogs: ".concat(e.message),"error")}}async function d(e){let{clusterName:t,workspace:s}=e;try{return(await n.x.fetch("/queue",{cluster_name:t,all_users:!0,override_skypilot_config:{active_workspace:s}})).map(e=>{var a;let r=e.end_at?e.end_at:Date.now()/1e3,n=0,c=0;return e.submitted_at&&(n=r-e.submitted_at),e.start_at&&(c=r-e.start_at),{id:e.job_id,status:e.status,job:e.job_name,user:e.username,user_hash:e.user_hash,gpus:e.accelerators||{},submitted_at:e.submitted_at?new Date(1e3*e.submitted_at):null,resources:e.resources,cluster:t,total_duration:n,job_duration:c,infra:"",logs:"",workspace:s||"default",git_commit:(null===(a=e.metadata)||void 0===a?void 0:a.git_commit)||"-"}})}catch(e){return console.error("Error fetching cluster jobs:",e),[]}}function h(e){let{cluster:t,job:s=null}=e,[r,n]=(0,a.useState)(null),[l,o]=(0,a.useState)(null),[u,h]=(0,a.useState)(!0),[m,f]=(0,a.useState)(!0),x=(0,a.useCallback)(async()=>{if(t)try{h(!0);let e=await c.default.get(i,[{clusterNames:[t]}]);return n(e[0]),e[0]}catch(e){console.error("Error fetching cluster data:",e)}finally{h(!1)}return null},[t]),g=(0,a.useCallback)(async e=>{if(t)try{f(!0);let s=await c.default.get(d,[{clusterName:t,workspace:e||"default"}]);o(s)}catch(e){console.error("Error fetching cluster job data:",e)}finally{f(!1)}},[t]),N=(0,a.useCallback)(async()=>{c.default.invalidate(i,[{clusterNames:[t]}]);let e=await x();e&&(c.default.invalidate(d,[{clusterName:t,workspace:e.workspace||"default"}]),await g(e.workspace))},[x,g,t]),b=(0,a.useCallback)(async()=>{r&&(c.default.invalidate(d,[{clusterName:t,workspace:r.workspace||"default"}]),await g(r.workspace))},[g,r,t]);return(0,a.useEffect)(()=>{(async()=>{let e=await x();e&&g(e.workspace)})()},[t,s,x,g]),{clusterData:r,clusterJobData:l,loading:u,clusterDetailsLoading:u,clusterJobsLoading:m,refreshData:N,refreshClusterJobsOnly:b}}},15821:function(e,t,s){"use strict";function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info",s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e3,a=document.getElementById("toast-container");a||((a=document.createElement("div")).id="toast-container",a.className="fixed top-0 right-0 p-4 z-[9999] flex flex-col items-end space-y-2",document.body.appendChild(a));let r=document.createElement("div");switch(r.className="rounded-md border-l-4 p-4 shadow-md flex items-center justify-between max-w-md w-full mb-2 pointer-events-auto",t){case"success":r.className+=" bg-green-100 border-green-500 text-green-800";break;case"error":r.className+=" bg-red-100 border-red-500 text-red-800";break;case"warning":r.className+=" bg-yellow-100 border-yellow-500 text-yellow-800";break;default:r.className+=" bg-blue-100 border-blue-500 text-blue-800"}return r.innerHTML='\n <div class="flex-1 mr-2">\n <p class="text-sm font-medium">'.concat(e,'</p>\n </div>\n <button class="text-gray-500 hover:text-gray-700 focus:outline-none" aria-label="Close toast">\n <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n <line x1="18" y1="6" x2="6" y2="18"></line>\n <line x1="6" y1="6" x2="18" y2="18"></line>\n </svg>\n </button>\n '),a.appendChild(r),r.querySelector("button").addEventListener("click",()=>{a.removeChild(r)}),setTimeout(()=>{a.contains(r)&&a.removeChild(r)},s),r}s.d(t,{C:function(){return a}})},23001:function(e,t,s){"use strict";s.d(t,{X:function(){return r}});var a=s(67294);function r(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:768,[t,s]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let t=()=>{s(window.innerWidth<e)};return t(),window.addEventListener("resize",t),()=>{window.removeEventListener("resize",t)}},[e]),t}},6378:function(e,t,s){"use strict";s.r(t),s.d(t,{DashboardCache:function(){return r},dashboardCache:function(){return n}});let a=s(51214).ej.DEFAULT_TTL;class r{async get(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=s.ttl||a,n=!1!==s.refreshOnAccess,c=this._generateKey(e,t),l=e.name||"anonymous",i=this.cache.get(c),o=Date.now();if(i&&o-i.lastUpdated<r){let s=Math.round((o-i.lastUpdated)/1e3);return this._debug("Cache HIT for ".concat(l," (age: ").concat(s,"s, TTL: ").concat(Math.round(r/1e3),"s)")),n&&(this.cache.set(c,{data:i.data,lastUpdated:o}),this._debug("Cache TTL refreshed for ".concat(l))),this.backgroundJobs.has(c)||this._refreshInBackground(e,t,c),i.data}try{let s=await e(...t);return this.cache.set(c,{data:s,lastUpdated:o}),s}catch(e){if(i)return console.warn("Failed to fetch fresh data for ".concat(c,", returning stale data:"),e),i.data;throw e}}invalidate(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],s=this._generateKey(e,t);this.cache.delete(s),this.backgroundJobs.delete(s)}invalidateFunction(e){let t=e.name||"anonymous",s=[];for(let e of this.cache.keys())e.startsWith("".concat(t,"_"))&&s.push(e);s.forEach(e=>{this.cache.delete(e),this.backgroundJobs.delete(e)})}clear(){this.cache.clear(),this.backgroundJobs.clear()}getStats(){return{cacheSize:this.cache.size,backgroundJobs:this.backgroundJobs.size,keys:Array.from(this.cache.keys())}}getDetailedStats(){let e=Date.now(),t=[];for(let[s,a]of this.cache.entries()){let r=e-a.lastUpdated;t.push({key:s,age:Math.round(r/1e3),lastUpdated:new Date(a.lastUpdated).toISOString(),hasBackgroundJob:this.backgroundJobs.has(s)})}return{cacheSize:this.cache.size,backgroundJobs:this.backgroundJobs.size,entries:t.sort((e,t)=>e.age-t.age)}}setDebugMode(e){this.debugMode=e}_debug(e){for(var t=arguments.length,s=Array(t>1?t-1:0),a=1;a<t;a++)s[a-1]=arguments[a];this.debugMode&&console.log("[DashboardCache] ".concat(e),...s)}_refreshInBackground(e,t,s){this.backgroundJobs.set(s,!0),e(...t).then(e=>{this.cache.set(s,{data:e,lastUpdated:Date.now()})}).catch(e=>{console.warn("Background refresh failed for ".concat(s,":"),e)}).finally(()=>{this.backgroundJobs.delete(s)})}_generateKey(e,t){let s=function(e){let t=5381;for(let s=0;s<e.length;s++)t=(t<<5)+t+e.charCodeAt(s);return t>>>0}(e.toString()),a=t.length>0?JSON.stringify(t):"";return"".concat(s,"_").concat(a)}constructor(){this.cache=new Map,this.backgroundJobs=new Map,this.debugMode=!1}}let n=new r;t.default=n},32350:function(e,t,s){"use strict";s.d(t,{cn:function(){return n}});var a=s(90512),r=s(98388);function n(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return(0,r.m6)((0,a.W)(t))}},50190:function(e,t,s){"use strict";s.r(t),s.d(t,{JobDetailPage:function(){return y}});var a=s(85893),r=s(67294);s(6135);var n=s(37673),c=s(41664),l=s.n(c),i=s(11163),o=s(23266),u=s(36989),d=s(13626),h=s(55739),m=s(99307),f=s(23001),x=s(9008),g=s.n(x),N=s(20546),b=s(70282),p=s(27325);function _(e){let{cluster:t,job:s,jobData:r,onRefresh:n,isRefreshing:c,loading:i}=e,o=(0,f.X)();return(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4 h-5",children:[(0,a.jsxs)("div",{className:"text-base flex items-center",children:[(0,a.jsx)(l(),{href:"/clusters",className:"text-sky-blue hover:underline",children:"Sky Clusters"}),(0,a.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,a.jsx)(l(),{href:"/clusters/".concat(t),className:"text-sky-blue hover:underline",children:t}),(0,a.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,a.jsxs)(l(),{href:"/clusters/".concat(t,"/").concat(s),className:"text-sky-blue hover:underline",children:[s,r.job&&"-"!=r.job?" (".concat(r.job,")"):""]})]}),(0,a.jsxs)("div",{className:"flex items-center",children:[(i||c)&&(0,a.jsxs)("div",{className:"flex items-center mr-2",children:[(0,a.jsx)(h.Z,{size:15,className:"mt-0"}),(0,a.jsx)("span",{className:"text-sm ml-2 text-gray-500",children:"Loading..."})]}),(0,a.jsx)(u.WH,{content:"Refresh",className:"text-muted-foreground",children:(0,a.jsxs)("button",{onClick:n,disabled:i||c,className:"text-sm text-sky-blue hover:text-sky-blue-bright font-medium mx-2 flex items-center",children:[(0,a.jsx)(d.Z,{className:"w-4 h-4 mr-1.5"}),!o&&(0,a.jsx)("span",{children:"Refresh"})]})})]})]})}function y(){let e=(0,i.useRouter)(),{cluster:t,job:s}=e.query,{clusterData:c,clusterJobData:f,loading:x,refreshData:y}=(0,o.QL)({cluster:t}),[j,w]=(0,r.useState)(!1),[v,E]=(0,r.useState)(!0),[I,k]=(0,r.useState)(!1),[C,D]=(0,r.useState)(""),[L,T]=(0,r.useState)(!1),[R,S]=(0,r.useState)(!1),A=(0,r.useMemo)(()=>["INIT","PENDING","SETTING_UP"],[]),O=(0,r.useMemo)(()=>{if(!f||!s)return!0;let e=f.find(e=>e.id==s);return e&&A.includes(e.status)},[f,s,A]);r.useEffect(()=>{!x&&v&&E(!1)},[x,v]),(0,r.useEffect)(()=>{let e=!0;return t&&s&&!O?(k(!0),(0,o.Sl)({clusterName:t,jobId:s,onNewLog:t=>{e&&D(e=>{let s=t.split("\n").filter(e=>e.trim()),a=e;for(let e of s){let t=(0,u.Zn)(e);if(/\d+%\s*\|/.test(t)){let e=t.match(/^\(([^)]+)\)/);if(e&&a){let s=a.split("\n"),r=!1;for(let n=s.length-1;n>=0;n--){let c=s[n];if(/\d+%\s*\|/.test(c)){let l=c.match(/^\(([^)]+)\)/);if(l&&l[1]===e[1]){s[n]=t,a=s.join("\n"),r=!0;break}}}r||(a+=(a?"\n":"")+t)}else a+=(a?"\n":"")+t}else a+=(a?"\n":"")+t}return a})},workspace:null==c?void 0:c.workspace}).then(()=>{e&&k(!1)}).catch(t=>{e&&(console.error("Error streaming logs:",t),k(!1))})):k(!1),()=>{e=!1}},[t,s,L,O,c]);let P=async()=>{w(!0),T(e=>!e),D("");try{y&&await y()}catch(e){console.error("Error refreshing data:",e)}finally{w(!1)}};if(!e.isReady)return(0,a.jsx)("div",{children:"Loading..."});let U={id:s};if(c&&f){let e=f.find(e=>e.id==s);e&&(U={...e,infra:c.infra,cluster:c.cluster,user:c.user,user_hash:c.user_hash})}let F=t&&s?"Job: ".concat(s," @ ").concat(t," | SkyPilot Dashboard"):"Job Details | SkyPilot Dashboard";return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(g(),{children:(0,a.jsx)("title",{children:F})}),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(_,{cluster:t,job:s,jobData:U,onRefresh:P,isRefreshing:j,loading:x}),x&&v?(0,a.jsxs)("div",{className:"flex items-center justify-center h-64",children:[(0,a.jsx)(h.Z,{size:24,className:"mr-2"}),(0,a.jsx)("span",{children:"Loading..."})]}):(0,a.jsxs)("div",{className:"space-y-8",children:[(0,a.jsx)("div",{id:"details",children:(0,a.jsxs)(n.Zb,{children:[(0,a.jsx)("div",{className:"flex items-center justify-between px-4 pt-4",children:(0,a.jsx)("h2",{className:"text-lg font-semibold",children:"Details"})}),(0,a.jsx)("div",{className:"p-4",children:(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Job ID"}),(0,a.jsx)("div",{className:"text-base mt-1",children:U.id})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Job Name"}),(0,a.jsx)("div",{className:"text-base mt-1",children:U.job})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Status"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(m.OE,{status:U.status})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"User"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(N.H,{username:U.user,userHash:U.user_hash})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Submitted"}),(0,a.jsx)("div",{className:"text-base mt-1",children:U.submitted_at?(0,u.xn)(U.submitted_at):"N/A"})]}),U.resources&&(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Requested Resources"}),(0,a.jsx)("div",{className:"text-base mt-1",children:U.resources||"N/A"})]}),U.cluster&&(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Cluster"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(l(),{href:"/clusters/".concat(U.cluster),className:"text-sky-blue hover:underline",children:U.cluster})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Git Commit"}),(0,a.jsx)("div",{className:"text-base mt-1 flex items-center",children:U.git_commit&&"-"!==U.git_commit?(0,a.jsxs)("span",{className:"flex items-center mr-2",children:[U.git_commit,(0,a.jsx)(u.WH,{content:R?"Copied!":"Copy commit",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:async()=>{await navigator.clipboard.writeText(U.git_commit),S(!0),setTimeout(()=>S(!1),2e3)},className:"flex items-center text-gray-500 hover:text-gray-700 transition-colors duration-200 p-1 ml-2",children:R?(0,a.jsx)(b.Z,{className:"w-4 h-4 text-green-600"}):(0,a.jsx)(p.Z,{className:"w-4 h-4"})})})]}):(0,a.jsx)("span",{className:"text-gray-400",children:"-"})})]})]})})]})}),(0,a.jsx)("div",{id:"logs",className:"mt-6",children:(0,a.jsxs)(n.Zb,{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between px-4 pt-4",children:[(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold",children:"Logs"}),(0,a.jsx)("span",{className:"ml-2 text-xs text-gray-500",children:"(Logs are not streaming; click refresh to fetch the latest logs.)"})]}),(0,a.jsx)(u.WH,{content:"Refresh logs",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:()=>{T(e=>!e),D("")},disabled:I,className:"text-sky-blue hover:text-sky-blue-bright flex items-center",children:(0,a.jsx)(d.Z,{className:"w-4 h-4 ".concat(I?"animate-spin":"")})})})]}),(0,a.jsx)("div",{className:"p-4",children:O?(0,a.jsx)("div",{className:"bg-[#f7f7f7] flex items-center justify-center py-4 text-gray-500",children:(0,a.jsx)("span",{children:"Waiting for the job to start; refresh in a few moments."})}):I?(0,a.jsxs)("div",{className:"flex items-center justify-center py-4",children:[(0,a.jsx)(h.Z,{size:20,className:"mr-2"}),(0,a.jsx)("span",{children:"Loading..."})]}):(0,a.jsx)("div",{className:"max-h-96 overflow-y-auto",children:(0,a.jsx)(u.$B,{logs:C})})})]})})]})]})]})}t.default=y},9008:function(e,t,s){e.exports=s(37219)}},function(e){e.O(0,[616,6130,5739,7411,6989,3850,6135,2888,9774,179],function(){return e(e.s=94966)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[722],{58706:function(e,t,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/clusters/[cluster]",function(){return s(56996)}])},1125:function(e,t,s){"use strict";s.d(t,{C:function(){return c}});var a=s(85893),l=s(67294),r=s(34209),n=s(84283);let i=e=>{if(!e||"string"!=typeof e)return e;let t=e.split("\n"),s=[];for(let e=0;e<t.length;e++){let a=t[e];if(""===a.trim()){let l=!1,r=0;for(let s=e-1;s>=0;s--){let e=t[s],a=e.trim();if(a&&e.match(/:\s*[|>]\s*$/)){l=!0;for(let e=s+1;e<t.length;e++){let s=t[e];if(s.trim()){r=s.search(/\S/);break}}break}if(a&&0===e.search(/\S/))break}if(l)for(let l=e+1;l<t.length;l++){let e=t[l];if(e.trim()){e.search(/\S/)>=r?s.push(" #YAML_BLANK_LINE_MARKER#"):s.push(a);break}}else s.push(a)}else s.push(a)}return s.join("\n")};function c(e){let{children:t,className:s=""}=e,c=(0,l.useRef)(null),o=i(t);(0,l.useEffect)(()=>{if(c.current){let e=c.current;setTimeout(()=>{let t;let s=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null);for(;t=s.nextNode();)t.textContent&&t.textContent.includes("#YAML_BLANK_LINE_MARKER#")&&(t.textContent=t.textContent.replace(/#YAML_BLANK_LINE_MARKER#/g,""))},0)}},[o]);let d={...n.mQ,'code[class*="language-"]':{...n.mQ['code[class*="language-"]'],whiteSpace:"pre !important"},'pre[class*="language-"]':{...n.mQ['pre[class*="language-"]'],whiteSpace:"pre !important"}};return(0,a.jsx)("div",{ref:c,className:s,children:(0,a.jsx)(r.Z,{language:"yaml",style:d,customStyle:{margin:0,padding:0,background:"transparent",fontSize:"0.875rem",fontFamily:'ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace'},wrapLines:!0,wrapLongLines:!0,showLineNumbers:!1,useInlineStyles:!0,children:o})})}},84303:function(e,t,s){"use strict";s.d(t,{_q:function(){return r},pJ:function(){return c}});var a=s(1272);let l={lineWidth:-1,quotingType:"'",forceQuotes:!1,noRefs:!0,sortKeys:!1,condenseFlow:!1,indent:2},r=e=>{if(!e)return"No YAML available";try{let t=a.ZP.load(e),s=a.ZP.dump(t,l).split("\n"),r=[],n=-1;for(let e=0;e<s.length;e++){let t=s[e],a=t.search(/\S/);0===a&&n>=0&&e>0&&r.push(""),r.push(t),n=a}return r.join("\n").trim()}catch(t){return console.error("YAML formatting error:",t),e}},n=e=>"string"==typeof e?e.substring(0,50)+"...":e&&e.name?"name: ".concat(e.name):e&&e.resources?"Task configuration":"YAML document",i=(e,t)=>{try{let s=a.ZP.load(e),r=a.ZP.dump(s,l).split("\n"),i=[],c=-1;for(let e=0;e<r.length;e++){let t=r[e],s=t.search(/\S/);0===s&&c>=0&&e>0&&i.push(""),i.push(t),c=s}return{index:t,content:i.join("\n").trim(),preview:n(s)}}catch(s){return console.error("YAML formatting error for document ".concat(t,":"),s),{index:t,content:e,preview:"Invalid YAML"}}},c=e=>{if(!e)return[];try{let t=[],s=e.split(/^---$/m);for(let e=0;e<s.length;e++){let a=s[e].trim();a&&""!==a&&t.push(a)}return(t.length>1?t.slice(1):t).map((e,t)=>i(e,t))}catch(t){return console.error("YAML formatting error:",t),[{index:0,content:e,preview:"Invalid YAML"}]}}},56996:function(e,t,s){"use strict";s.r(t);var a=s(85893),l=s(67294),r=s(55739),n=s(9159),i=s(11163);s(6135);var c=s(41664),o=s.n(c),d=s(39037),m=s(99307);s(37673);var u=s(23266),x=s(6378),h=s(13626),f=s(70282),g=s(27325),v=s(45895),j=s(6639);s(1272);var b=s(36989),p=s(17853),N=s(92128),y=s(23001),_=s(9008),w=s.n(_),S=s(84303),C=s(20546),k=s(1125);let M=(e,t)=>{let s="",a="";return e>=0&&(s=e+"m",a=" "),t&&(s+="".concat(a,"(down)")),""===s&&(s="-"),s};function L(e){var t,s;let{clusterData:r,clusterJobData:i,clusterJobsLoading:c,refreshClusterJobsOnly:d,isVSCodeModalOpen:u,setIsVSCodeModalOpen:x,timeRange:h,handleTimeRangePreset:p,buildGrafanaMetricsUrl:N,matchedClusterName:y,isLoadingClusterMatch:_,isGrafanaAvailable:w,isHistoricalCluster:L=!1}=e,[A,E]=(0,l.useState)(!1),[R,T]=(0,l.useState)(!1),[O,P]=(0,l.useState)(!1),I=async()=>{try{let e=r.task_yaml||r.last_creation_yaml,t=(0,S._q)(e);await navigator.clipboard.writeText(t),T(!0),setTimeout(()=>T(!1),2e3)}catch(e){console.error("Failed to copy YAML to clipboard:",e)}},Z=async()=>{try{let e=r.command||r.last_creation_command;await navigator.clipboard.writeText(e),P(!0),setTimeout(()=>P(!1),2e3)}catch(e){console.error("Failed to copy command to clipboard:",e)}},U=(null==r?void 0:r.last_creation_command)||(null==r?void 0:r.last_creation_yaml)||(null==r?void 0:r.command)||(null==r?void 0:r.task_yaml);return(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"mb-6",children:(0,a.jsxs)("div",{className:"rounded-lg border bg-card text-card-foreground shadow-sm",children:[(0,a.jsx)("div",{className:"flex items-center justify-between px-4 pt-4",children:(0,a.jsx)("h3",{className:"text-lg font-semibold",children:L?"Historical Cluster Details":"Details"})}),(0,a.jsx)("div",{className:"p-4",children:(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Status"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(m.OE,{status:r.status})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Cluster"}),(0,a.jsx)("div",{className:"text-base mt-1",children:r.cluster||r.name})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"User"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(C.H,{username:r.user,userHash:r.user_hash})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:L?"Cloud":"Infra"}),(0,a.jsx)("div",{className:"text-base mt-1",children:L?r.cloud||"N/A":r.infra?(0,a.jsx)(b.Md,{content:r.full_infra||r.infra,className:"text-sm text-muted-foreground",children:(0,a.jsxs)("span",{children:[(0,a.jsx)(o(),{href:"/infra",className:"text-blue-600 hover:underline",children:r.cloud||r.infra.split("(")[0].trim()}),r.infra.includes("(")&&(0,a.jsx)("span",{children:" "+r.infra.substring(r.infra.indexOf("("))})]})}):"N/A"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Resources"}),(0,a.jsx)("div",{className:"text-base mt-1",children:r.resources_str_full||r.resources_str||"N/A"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Started"}),(0,a.jsx)("div",{className:"text-base mt-1",children:r.time?(0,b.xn)(new Date(r.time)):"N/A"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Last Event"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(b.Md,{content:r.last_event||"-",className:"text-sm text-muted-foreground",children:(0,a.jsx)("span",{children:r.last_event||"-"})})})]}),L?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Duration"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(e=>{if(!e||0===e)return"-";let t=e=Math.floor(e),s="",a=0;for(let e of[{value:31536e3,label:"y"},{value:2592e3,label:"mo"},{value:86400,label:"d"},{value:3600,label:"h"},{value:60,label:"m"},{value:1,label:"s"}])if(t>=e.value&&a<2){let l=Math.floor(t/e.value);s+="".concat(l).concat(e.label," "),t%=e.value,a++}return s.trim()||"0s"})(r.duration)})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Cost"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(e=>{if(null==e||0===e)return"-";let t=Number(e);return isNaN(t)?"-":"$".concat(t.toFixed(2))})(r.total_cost)})]})]}):(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Autostop"}),(0,a.jsx)("div",{className:"text-base mt-1",children:M(r.autostop,r.to_down)})]}),U&&(0,a.jsxs)("div",{className:"col-span-2",children:[(r.command||r.last_creation_command)&&(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Entrypoint"}),r.command&&(0,a.jsx)(b.WH,{content:O?"Copied!":"Copy command",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:Z,className:"flex items-center text-gray-500 hover:text-gray-700 transition-colors duration-200 p-1 ml-2",children:O?(0,a.jsx)(f.Z,{className:"w-4 h-4 text-green-600"}):(0,a.jsx)(g.Z,{className:"w-4 h-4"})})})]}),(0,a.jsxs)("div",{className:"space-y-4 mt-3",children:[(r.command||r.last_creation_command)&&(0,a.jsx)("div",{children:(0,a.jsx)("div",{className:"bg-gray-50 border border-gray-200 rounded-md p-3",children:(0,a.jsx)("code",{className:"text-sm text-gray-800 font-mono break-all",children:r.command||r.last_creation_command})})}),(r.task_yaml||r.last_creation_yaml)&&"{}"!==r.task_yaml&&"{}"!==r.last_creation_yaml&&!(null===(t=r.cluster||r.name)||void 0===t?void 0:t.startsWith("sky-jobs-controller-"))&&!(null===(s=r.cluster||r.name)||void 0===s?void 0:s.startsWith("sky-serve-controller-"))&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex items-center mb-2",children:[(0,a.jsxs)("button",{onClick:()=>{E(!A)},className:"flex items-center text-left focus:outline-none text-gray-700 hover:text-gray-900 transition-colors duration-200",children:[A?(0,a.jsx)(v.Z,{className:"w-4 h-4 mr-1"}):(0,a.jsx)(j.Z,{className:"w-4 h-4 mr-1"}),(0,a.jsx)("span",{className:"text-base",children:"Show SkyPilot YAML"})]}),(0,a.jsx)(b.WH,{content:R?"Copied!":"Copy YAML",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:I,className:"flex items-center text-gray-500 hover:text-gray-700 transition-colors duration-200 p-1 ml-2",children:R?(0,a.jsx)(f.Z,{className:"w-4 h-4 text-green-600"}):(0,a.jsx)(g.Z,{className:"w-4 h-4"})})})]}),A&&(0,a.jsx)("div",{className:"bg-gray-50 border border-gray-200 rounded-md p-3 max-h-96 overflow-y-auto",children:(0,a.jsx)(k.C,{className:"whitespace-pre-wrap",children:(0,S._q)(r.task_yaml||r.last_creation_yaml)})})]})]})]})]})})]})}),r&&r.full_infra&&r.full_infra.includes("Kubernetes")&&!r.full_infra.includes("SSH")&&!r.full_infra.includes("ssh")&&w&&(0,a.jsx)("div",{className:"mb-6",children:(0,a.jsx)("div",{className:"rounded-lg border bg-card text-card-foreground shadow-sm",children:(0,a.jsxs)("div",{className:"p-5",children:[(0,a.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,a.jsx)("h3",{className:"text-lg font-semibold",children:"GPU Metrics"})}),(0,a.jsxs)("div",{className:"mb-4 p-4 bg-gray-50 rounded-md border border-gray-200",children:[(0,a.jsx)("div",{className:"flex flex-col sm:flex-row gap-4 items-start sm:items-center",children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("label",{className:"text-sm font-medium text-gray-700 whitespace-nowrap",children:"Time Range:"}),(0,a.jsx)("div",{className:"flex gap-1",children:[{label:"15m",value:"15m"},{label:"1h",value:"1h"},{label:"6h",value:"6h"},{label:"24h",value:"24h"},{label:"7d",value:"7d"}].map(e=>(0,a.jsx)("button",{onClick:()=>p(e.value),className:"px-2 py-1 text-xs font-medium rounded border transition-colors ".concat(h.from==="now-".concat(e.value)&&"now"===h.to?"bg-sky-blue text-white border-sky-blue":"bg-white text-gray-600 border-gray-300 hover:bg-gray-50"),children:e.label},e.value))})]})}),(0,a.jsxs)("div",{className:"mt-2 text-xs text-gray-500",children:["Showing: ",null==r?void 0:r.cluster," • Time: ",h.from," to"," ",h.to,_&&(0,a.jsx)("span",{children:" • Finding cluster data..."})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[(0,a.jsx)("div",{className:"bg-white rounded-md border border-gray-200 shadow-sm",children:(0,a.jsx)("div",{className:"p-2",children:(0,a.jsx)("iframe",{src:N("1"),width:"100%",height:"400",frameBorder:"0",title:"GPU Utilization",className:"rounded"},"gpu-util-".concat(null==r?void 0:r.cluster,"-").concat(h.from,"-").concat(h.to))})}),(0,a.jsx)("div",{className:"bg-white rounded-md border border-gray-200 shadow-sm",children:(0,a.jsx)("div",{className:"p-2",children:(0,a.jsx)("iframe",{src:N("2"),width:"100%",height:"400",frameBorder:"0",title:"GPU Memory Utilization",className:"rounded"},"gpu-memory-".concat(null==r?void 0:r.cluster,"-").concat(h.from,"-").concat(h.to))})}),(0,a.jsx)("div",{className:"bg-white rounded-md border border-gray-200 shadow-sm",children:(0,a.jsx)("div",{className:"p-2",children:(0,a.jsx)("iframe",{src:N("4"),width:"100%",height:"400",frameBorder:"0",title:"GPU Power Usage",className:"rounded"},"gpu-power-".concat(null==r?void 0:r.cluster,"-").concat(h.from,"-").concat(h.to))})})]})]})})}),!L&&(0,a.jsx)("div",{className:"mb-8",children:(0,a.jsx)(n.ClusterJobs,{clusterName:r.cluster,clusterJobData:i,loading:c,refreshClusterJobsOnly:d})})]})}t.default=function(){let e=(0,i.useRouter)(),{cluster:t}=e.query,[s,n]=(0,l.useState)(!1),[c,m]=(0,l.useState)(!0),[f,g]=(0,l.useState)(!1),[v,j]=(0,l.useState)(!1),[_,S]=(0,l.useState)(null),[C,k]=(0,l.useState)(!1),[M,A]=(0,l.useState)(!1),E=(0,y.X)(),[R,T]=(0,l.useState)({from:"now-1h",to:"now"}),{clusterData:O,clusterJobData:P,loading:I,clusterDetailsLoading:Z,clusterJobsLoading:U,refreshData:Y,refreshClusterJobsOnly:D}=(0,u.QL)({cluster:t}),[F,G]=(0,l.useState)(null),[H,J]=(0,l.useState)(!1),[W,K]=(0,l.useState)(!1);(0,l.useEffect)(()=>{(async()=>{K(await (0,p.TO)())})()},[]);let z=(0,l.useCallback)(async()=>{if(W&&(null==O?void 0:O.cluster)){J(!0);try{let e=(0,p.ki)(),t=await fetch("".concat(e).concat("/api/datasources/proxy/1/api/v1/label/label_skypilot_cluster/values"),{method:"GET",credentials:"include",headers:{Accept:"application/json"}});if(t.ok){let e=await t.json();if(e.data&&e.data.length>0){let t=e.data.find(e=>e.startsWith(O.cluster));t&&G(t)}}}catch(e){console.error("Error fetching matching cluster:",e)}finally{J(!1)}}},[null==O?void 0:O.cluster,W]);(0,l.useEffect)(()=>{W&&(null==O?void 0:O.cluster)&&z()},[null==O?void 0:O.cluster,z,W]);let B=e=>{let t=(0,p.ki)(),s=F||(null==O?void 0:O.cluster)||"$__all";return"".concat(t,"/d-solo/skypilot-dcgm-gpu/skypilot-dcgm-gpu-metrics?orgId=1&from=").concat(encodeURIComponent(R.from),"&to=").concat(encodeURIComponent(R.to),"&timezone=browser&var-cluster=").concat(encodeURIComponent(s),"&var-node=$__all&var-gpu=$__all&theme=light&panelId=").concat(e,"&__feature.dashboardSceneSolo")};l.useEffect(()=>{!Z&&c&&m(!1)},[Z,c]),l.useEffect(()=>{let e=async()=>{if(t&&!Z&&!O){A(!0);try{let e=(await x.default.get(u.uR)).find(e=>e.cluster_hash===t||e.cluster===t);e&&(S(e),k(!0))}catch(e){console.error("Error fetching cluster history:",e)}finally{A(!1)}}};Z||O||e()},[t,Z,O]);let $=async()=>{n(!0),await Y(),n(!1)},q=e=>{T({from:"now-".concat(e),to:"now"})};if(!e.isReady)return(0,a.jsx)("div",{children:"Loading..."});let Q=t?"Cluster: ".concat(t," | SkyPilot Dashboard"):"Cluster Details | SkyPilot Dashboard";return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(w(),{children:(0,a.jsx)("title",{children:Q})}),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4 h-5",children:[(0,a.jsxs)("div",{className:"text-base flex items-center",children:[(0,a.jsx)(o(),{href:"/clusters",className:"text-sky-blue hover:underline",children:"Sky Clusters"}),(0,a.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,a.jsx)(o(),{href:"/clusters/".concat(t),className:"text-sky-blue hover:underline",children:t})]}),(0,a.jsx)("div",{className:"text-sm flex items-center",children:(0,a.jsxs)("div",{className:"text-sm flex items-center",children:[(Z||s)&&(0,a.jsxs)("div",{className:"flex items-center mr-4",children:[(0,a.jsx)(r.Z,{size:15,className:"mt-0"}),(0,a.jsx)("span",{className:"ml-2 text-gray-500",children:"Loading..."})]}),O&&(0,a.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,a.jsx)(b.WH,{content:"Refresh",className:"text-sm text-muted-foreground",children:(0,a.jsxs)("button",{onClick:$,disabled:Z||s,className:"text-sky-blue hover:text-sky-blue-bright font-medium inline-flex items-center",children:[(0,a.jsx)(h.Z,{className:"w-4 h-4 mr-1.5"}),!E&&(0,a.jsx)("span",{children:"Refresh"})]})}),(0,a.jsx)(d.Status2Actions,{withLabel:!0,cluster:O.cluster,status:O.status,onOpenSSHModal:()=>{g(!0)},onOpenVSCodeModal:()=>{j(!0)}})]})]})})]}),Z&&c||M?(0,a.jsxs)("div",{className:"flex justify-center items-center py-12",children:[(0,a.jsx)(r.Z,{size:24,className:"mr-2"}),(0,a.jsx)("span",{className:"text-gray-500",children:"Loading cluster details..."})]}):O?(0,a.jsx)(L,{clusterData:O,clusterJobData:P,clusterJobsLoading:U,refreshClusterJobsOnly:D,isVSCodeModalOpen:v,setIsVSCodeModalOpen:j,timeRange:R,handleTimeRangePreset:q,buildGrafanaMetricsUrl:B,matchedClusterName:F,isLoadingClusterMatch:H,isGrafanaAvailable:W,isHistoricalCluster:!1}):C&&_?(0,a.jsx)(L,{clusterData:_,clusterJobData:[],clusterJobsLoading:!1,refreshClusterJobsOnly:()=>{},isVSCodeModalOpen:!1,setIsVSCodeModalOpen:()=>{},timeRange:R,handleTimeRangePreset:q,buildGrafanaMetricsUrl:B,matchedClusterName:null,isLoadingClusterMatch:!1,isGrafanaAvailable:!1,isHistoricalCluster:!0}):(0,a.jsx)("div",{className:"flex justify-center items-center py-12",children:(0,a.jsx)("span",{className:"text-gray-500",children:"Cluster not found in active clusters or history."})}),(0,a.jsx)(N.Oh,{isOpen:f,onClose:()=>g(!1),cluster:t}),(0,a.jsx)(N._R,{isOpen:v,onClose:()=>j(!1),cluster:t})]})]})}},17853:function(e,t,s){"use strict";s.d(t,{TO:function(){return r},ki:function(){return n}});let a=null,l=null,r=async()=>null!==a?a:l||(l=(async()=>{try{let e="".concat(window.location.origin,"/grafana"),t=await fetch("".concat(e,"/api/health"),{method:"GET",credentials:"include",headers:{Accept:"application/json"},signal:AbortSignal.timeout(5e3)});return 200==t.status}catch(e){return console.debug("Grafana availability check failed:",e),a=!1,!1}finally{l=null}})()),n=()=>"".concat(window.location.origin,"/grafana")}},function(e){e.O(0,[616,6130,5739,7411,1272,1559,6212,6989,3850,8969,6990,8056,6135,6601,9159,1871,2888,9774,179],function(){return e(e.s=58706)}),_N_E=e.O()}]);
@@ -1 +1 @@
1
- !function(){"use strict";var t,e,n,r,c,o,u,a,i,f={},s={};function d(t){var e=s[t];if(void 0!==e)return e.exports;var n=s[t]={exports:{}},r=!0;try{f[t](n,n.exports,d),r=!1}finally{r&&delete s[t]}return n.exports}d.m=f,t=[],d.O=function(e,n,r,c){if(n){c=c||0;for(var o=t.length;o>0&&t[o-1][2]>c;o--)t[o]=t[o-1];t[o]=[n,r,c];return}for(var u=1/0,o=0;o<t.length;o++){for(var n=t[o][0],r=t[o][1],c=t[o][2],a=!0,i=0;i<n.length;i++)u>=c&&Object.keys(d.O).every(function(t){return d.O[t](n[i])})?n.splice(i--,1):(a=!1,c<u&&(u=c));if(a){t.splice(o--,1);var f=r();void 0!==f&&(e=f)}}return e},d.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return d.d(e,{a:e}),e},n=Object.getPrototypeOf?function(t){return Object.getPrototypeOf(t)}:function(t){return t.__proto__},d.t=function(t,r){if(1&r&&(t=this(t)),8&r||"object"==typeof t&&t&&(4&r&&t.__esModule||16&r&&"function"==typeof t.then))return t;var c=Object.create(null);d.r(c);var o={};e=e||[null,n({}),n([]),n(n)];for(var u=2&r&&t;"object"==typeof u&&!~e.indexOf(u);u=n(u))Object.getOwnPropertyNames(u).forEach(function(e){o[e]=function(){return t[e]}});return o.default=function(){return t},d.d(c,o),c},d.d=function(t,e){for(var n in e)d.o(e,n)&&!d.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},d.f={},d.e=function(t){return Promise.all(Object.keys(d.f).reduce(function(e,n){return d.f[n](t,e),e},[]))},d.u=function(t){return 9666===t?"static/chunks/9666.cd4273f2a5c5802c.js":3937===t?"static/chunks/3937.210053269f121201.js":2369===t?"static/chunks/2369.fc20f0c2c8ed9fe7.js":9025===t?"static/chunks/9025.a1bef12d672bb66d.js":4937===t?"static/chunks/4937.a2baa2df5572a276.js":9984===t?"static/chunks/9984.c5564679e467d245.js":8252===t?"static/chunks/8252.62b0d23aed618bb2.js":9847===t?"static/chunks/9847.757720f3b40c0aa5.js":4725===t?"static/chunks/4725.29550342bd53afd8.js":691===t?"static/chunks/691.5eeedf82cc243343.js":2641===t?"static/chunks/2641.142718b6b78a6f9b.js":3785===t?"static/chunks/3785.6003d293cb83eab4.js":9360===t?"static/chunks/9360.85b0b1b4054574dd.js":"static/chunks/"+t+"-"+({616:"3d59f75e2ccf9321",1141:"a8a8f1adba34c892",1272:"1ef0bf0237faccdb",1559:"6c00e20454194859",1871:"980a395e92633a5c",3850:"ff4a9a69d978632b",5739:"d67458fcb1386c92",6130:"2be46d70a38f1e82",6135:"85426374db04811e",6601:"06114c982db410b6",6989:"6129c1cfbcf51063",6990:"0f886f16e0d55ff8",7411:"b15471acd2cba716",8056:"34d27f51e6d1c631",8969:"c9686994ddafcf01",9159:"11421c0f2909236f"})[t]+".js"},d.miniCssF=function(t){},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(t){if("object"==typeof window)return window}}(),d.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r={},c="_N_E:",d.l=function(t,e,n,o){if(r[t]){r[t].push(e);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")==t||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(t)),r[t]=[e];var l=function(e,n){u.onerror=u.onload=null,clearTimeout(b);var c=r[t];if(delete r[t],u.parentNode&&u.parentNode.removeChild(u),c&&c.forEach(function(t){return t(n)}),e)return e(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(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},d.tt=function(){return void 0===o&&(o={createScriptURL:function(t){return t}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(o=trustedTypes.createPolicy("nextjs#bundler",o))),o},d.tu=function(t){return d.tt().createScriptURL(t)},d.p="/dashboard/_next/",u={2272:0},d.f.j=function(t,e){var n=d.o(u,t)?u[t]:void 0;if(0!==n){if(n)e.push(n[2]);else if(2272!=t){var r=new Promise(function(e,r){n=u[t]=[e,r]});e.push(n[2]=r);var c=d.p+d.u(t),o=Error();d.l(c,function(e){if(d.o(u,t)&&(0!==(n=u[t])&&(u[t]=void 0),n)){var r=e&&("load"===e.type?"missing":e.type),c=e&&e.target&&e.target.src;o.message="Loading chunk "+t+" failed.\n("+r+": "+c+")",o.name="ChunkLoadError",o.type=r,o.request=c,n[1](o)}},"chunk-"+t,t)}else u[t]=0}},d.O.j=function(t){return 0===u[t]},a=function(t,e){var n,r,c=e[0],o=e[1],a=e[2],i=0;if(c.some(function(t){return 0!==u[t]})){for(n in o)d.o(o,n)&&(d.m[n]=o[n]);if(a)var f=a(d)}for(t&&t(e);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}();
1
+ !function(){"use strict";var t,e,n,r,c,o,u,a,i,f={},s={};function d(t){var e=s[t];if(void 0!==e)return e.exports;var n=s[t]={exports:{}},r=!0;try{f[t](n,n.exports,d),r=!1}finally{r&&delete s[t]}return n.exports}d.m=f,t=[],d.O=function(e,n,r,c){if(n){c=c||0;for(var o=t.length;o>0&&t[o-1][2]>c;o--)t[o]=t[o-1];t[o]=[n,r,c];return}for(var u=1/0,o=0;o<t.length;o++){for(var n=t[o][0],r=t[o][1],c=t[o][2],a=!0,i=0;i<n.length;i++)u>=c&&Object.keys(d.O).every(function(t){return d.O[t](n[i])})?n.splice(i--,1):(a=!1,c<u&&(u=c));if(a){t.splice(o--,1);var f=r();void 0!==f&&(e=f)}}return e},d.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return d.d(e,{a:e}),e},n=Object.getPrototypeOf?function(t){return Object.getPrototypeOf(t)}:function(t){return t.__proto__},d.t=function(t,r){if(1&r&&(t=this(t)),8&r||"object"==typeof t&&t&&(4&r&&t.__esModule||16&r&&"function"==typeof t.then))return t;var c=Object.create(null);d.r(c);var o={};e=e||[null,n({}),n([]),n(n)];for(var u=2&r&&t;"object"==typeof u&&!~e.indexOf(u);u=n(u))Object.getOwnPropertyNames(u).forEach(function(e){o[e]=function(){return t[e]}});return o.default=function(){return t},d.d(c,o),c},d.d=function(t,e){for(var n in e)d.o(e,n)&&!d.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},d.f={},d.e=function(t){return Promise.all(Object.keys(d.f).reduce(function(e,n){return d.f[n](t,e),e},[]))},d.u=function(t){return 9666===t?"static/chunks/9666.cd4273f2a5c5802c.js":2369===t?"static/chunks/2369.fc20f0c2c8ed9fe7.js":3937===t?"static/chunks/3937.210053269f121201.js":9025===t?"static/chunks/9025.a1bef12d672bb66d.js":4937===t?"static/chunks/4937.a2baa2df5572a276.js":9984===t?"static/chunks/9984.c5564679e467d245.js":8252===t?"static/chunks/8252.62b0d23aed618bb2.js":691===t?"static/chunks/691.5eeedf82cc243343.js":2641===t?"static/chunks/2641.142718b6b78a6f9b.js":9847===t?"static/chunks/9847.757720f3b40c0aa5.js":4725===t?"static/chunks/4725.29550342bd53afd8.js":3785===t?"static/chunks/3785.6003d293cb83eab4.js":9360===t?"static/chunks/9360.85b0b1b4054574dd.js":"static/chunks/"+t+"-"+({616:"3d59f75e2ccf9321",1141:"a8a8f1adba34c892",1272:"1ef0bf0237faccdb",1559:"6c00e20454194859",1871:"980a395e92633a5c",3850:"ff4a9a69d978632b",5739:"d67458fcb1386c92",6130:"2be46d70a38f1e82",6135:"85426374db04811e",6601:"06114c982db410b6",6989:"6129c1cfbcf51063",6990:"0f886f16e0d55ff8",7411:"b15471acd2cba716",8056:"5bdeda81199c0def",8969:"c9686994ddafcf01",9159:"11421c0f2909236f"})[t]+".js"},d.miniCssF=function(t){},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(t){if("object"==typeof window)return window}}(),d.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r={},c="_N_E:",d.l=function(t,e,n,o){if(r[t]){r[t].push(e);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")==t||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(t)),r[t]=[e];var l=function(e,n){u.onerror=u.onload=null,clearTimeout(b);var c=r[t];if(delete r[t],u.parentNode&&u.parentNode.removeChild(u),c&&c.forEach(function(t){return t(n)}),e)return e(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(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},d.tt=function(){return void 0===o&&(o={createScriptURL:function(t){return t}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(o=trustedTypes.createPolicy("nextjs#bundler",o))),o},d.tu=function(t){return d.tt().createScriptURL(t)},d.p="/dashboard/_next/",u={2272:0},d.f.j=function(t,e){var n=d.o(u,t)?u[t]:void 0;if(0!==n){if(n)e.push(n[2]);else if(2272!=t){var r=new Promise(function(e,r){n=u[t]=[e,r]});e.push(n[2]=r);var c=d.p+d.u(t),o=Error();d.l(c,function(e){if(d.o(u,t)&&(0!==(n=u[t])&&(u[t]=void 0),n)){var r=e&&("load"===e.type?"missing":e.type),c=e&&e.target&&e.target.src;o.message="Loading chunk "+t+" failed.\n("+r+": "+c+")",o.name="ChunkLoadError",o.type=r,o.request=c,n[1](o)}},"chunk-"+t,t)}else u[t]=0}},d.O.j=function(t){return 0===u[t]},a=function(t,e){var n,r,c=e[0],o=e[1],a=e[2],i=0;if(c.some(function(t){return 0!==u[t]})){for(n in o)d.o(o,n)&&(d.m[n]=o[n]);if(a)var f=a(d)}for(t&&t(e);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}();
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-339efec49c0cc7d0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-491a4d699d95e808.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-6129c1cfbcf51063.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-85426374db04811e.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-ae17cec0fc6483d9.js" defer=""></script><script src="/dashboard/_next/static/-DXZksWqf2waNHeU9YTQe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/-DXZksWqf2waNHeU9YTQe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"-DXZksWqf2waNHeU9YTQe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-7fd0cf9dbecff10f.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-491a4d699d95e808.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-6129c1cfbcf51063.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-85426374db04811e.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-078751bad714c017.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"Fuy7OzApYTUMz2QgoP7dP","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-339efec49c0cc7d0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-491a4d699d95e808.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/1559-6c00e20454194859.js" defer=""></script><script src="/dashboard/_next/static/chunks/6212-7bd06f60ba693125.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-6129c1cfbcf51063.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-c9686994ddafcf01.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-0f886f16e0d55ff8.js" defer=""></script><script src="/dashboard/_next/static/chunks/8056-34d27f51e6d1c631.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-85426374db04811e.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-06114c982db410b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/9159-11421c0f2909236f.js" defer=""></script><script src="/dashboard/_next/static/chunks/1871-980a395e92633a5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-155d477a6c3e04e2.js" defer=""></script><script src="/dashboard/_next/static/-DXZksWqf2waNHeU9YTQe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/-DXZksWqf2waNHeU9YTQe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"-DXZksWqf2waNHeU9YTQe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-7fd0cf9dbecff10f.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-491a4d699d95e808.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/1559-6c00e20454194859.js" defer=""></script><script src="/dashboard/_next/static/chunks/6212-7bd06f60ba693125.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-6129c1cfbcf51063.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-c9686994ddafcf01.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-0f886f16e0d55ff8.js" defer=""></script><script src="/dashboard/_next/static/chunks/8056-5bdeda81199c0def.js" defer=""></script><script src="/dashboard/_next/static/chunks/6135-85426374db04811e.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-06114c982db410b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/9159-11421c0f2909236f.js" defer=""></script><script src="/dashboard/_next/static/chunks/1871-980a395e92633a5c.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-da9cc0901349c2e9.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"Fuy7OzApYTUMz2QgoP7dP","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-339efec49c0cc7d0.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-491a4d699d95e808.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-b30460f683e6ba96.js" defer=""></script><script src="/dashboard/_next/static/-DXZksWqf2waNHeU9YTQe/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/-DXZksWqf2waNHeU9YTQe/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"-DXZksWqf2waNHeU9YTQe","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4614e06482d7309e.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4614e06482d7309e.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-7fd0cf9dbecff10f.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-491a4d699d95e808.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-b30460f683e6ba96.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/Fuy7OzApYTUMz2QgoP7dP/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"Fuy7OzApYTUMz2QgoP7dP","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>