skypilot-nightly 1.0.0.dev20250728__tar.gz → 1.0.0.dev20250730__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 (594) hide show
  1. {skypilot_nightly-1.0.0.dev20250728/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250730}/PKG-INFO +1 -1
  2. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/__init__.py +2 -2
  3. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/kubernetes_catalog.py +2 -2
  4. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/client/cli/command.py +0 -7
  5. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/client/common.py +12 -9
  6. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/kubernetes.py +2 -1
  7. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/nebius.py +1 -1
  8. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/utils/gcp_utils.py +1 -1
  9. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/vast.py +1 -2
  10. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/dashboard/out/404.html +1 -1
  11. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/_r2LwCFLjlWjZDUIJQG_V/_buildManifest.js +1 -0
  12. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/1043-928582d4860fef92.js +1 -0
  13. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/1141-3f10a5a9f697c630.js +11 -0
  14. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/1559-6c00e20454194859.js +30 -0
  15. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/1664-22b00e32c9ff96a4.js +1 -0
  16. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/1871-1df8b686a51f3e3a.js +6 -0
  17. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/2003.f90b06bb1f914295.js +1 -0
  18. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/2350.fab69e61bac57b23.js +1 -0
  19. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/2369.fc20f0c2c8ed9fe7.js +15 -0
  20. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/2641.142718b6b78a6f9b.js +1 -0
  21. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/3698-7874720877646365.js +1 -0
  22. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/3785.95524bc443db8260.js +1 -0
  23. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/3937.210053269f121201.js +1 -0
  24. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/4725.42f21f250f91f65b.js +1 -0
  25. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/4869.18e6a4361a380763.js +16 -0
  26. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/4937.d6bf67771e353356.js +15 -0
  27. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/5230-f3bb2663e442e86c.js +1 -0
  28. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/5739-d67458fcb1386c92.js +8 -0
  29. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/6135-d0e285ac5f3f2485.js +1 -0
  30. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/616-3d59f75e2ccf9321.js +39 -0
  31. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/6212-7bd06f60ba693125.js +13 -0
  32. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/6601-234b1cf963c7280b.js +1 -0
  33. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/691.6d99cbfba347cebf.js +55 -0
  34. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/6989-983d3ae7a874de98.js +1 -0
  35. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/6990-08b2a1cae076a943.js +1 -0
  36. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/7411-b15471acd2cba716.js +41 -0
  37. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/8969-9a8cca241b30db83.js +1 -0
  38. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/9025.7937c16bc8623516.js +6 -0
  39. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/938-40d15b6261ec8dc1.js +1 -0
  40. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/9847.4c46c5e229c78704.js +30 -0
  41. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/9984.78ee6d2c6fa4b0e8.js +1 -0
  42. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/fd9d1056-86323a29a8f7e46a.js +1 -0
  43. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/framework-cf60a09ccd051a10.js +33 -0
  44. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/main-app-587214043926b3cc.js +1 -0
  45. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/main-f15ccb73239a3bf1.js +1 -0
  46. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/_app-a67ae198457b9886.js +34 -0
  47. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js +1 -0
  48. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-fa63e8b1d203f298.js +11 -0
  49. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-665fa5d96dd41d67.js +1 -0
  50. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/clusters-956ad430075efee8.js +1 -0
  51. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/config-8620d099cbef8608.js +1 -0
  52. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/index-444f1804401f04ea.js +1 -0
  53. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/infra/[context]-9cfd875eecb6eaf5.js +1 -0
  54. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/infra-0fbdc9072f19fbe2.js +1 -0
  55. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-b25c109d6e41bcf4.js +11 -0
  56. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/jobs-6393a9edc7322b54.js +1 -0
  57. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/users-34d6bb10c3b3ee3d.js +1 -0
  58. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/volumes-225c8dae0634eb7f.js +1 -0
  59. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/workspace/new-92f741084a89e27b.js +1 -0
  60. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-4d41c9023287f59a.js +1 -0
  61. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/pages/workspaces-e4cb7e97d37e93ad.js +1 -0
  62. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/chunks/webpack-5adfc4d4b3db6f71.js +1 -0
  63. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/clusters/[cluster]/[job].html +1 -0
  64. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/clusters/[cluster].html +1 -0
  65. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/clusters.html +1 -0
  66. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/config.html +1 -0
  67. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/index.html +1 -0
  68. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/dashboard/out/infra/[context].html +1 -1
  69. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/infra.html +1 -0
  70. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/jobs/[job].html +1 -0
  71. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/jobs.html +1 -0
  72. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/users.html +1 -0
  73. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/volumes.html +1 -0
  74. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/dashboard/out/workspace/new.html +1 -1
  75. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/workspaces/[name].html +1 -0
  76. skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/workspaces.html +1 -0
  77. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/data/data_utils.py +25 -0
  78. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/data/storage.py +1219 -1775
  79. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/global_user_state.py +18 -8
  80. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/jobs/server/core.py +4 -1
  81. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/jobs/state.py +35 -7
  82. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/jobs/utils.py +35 -17
  83. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/logs/agent.py +0 -14
  84. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/logs/aws.py +4 -30
  85. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/kubernetes/instance.py +4 -3
  86. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/kubernetes/utils.py +56 -31
  87. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vast/instance.py +2 -1
  88. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vast/utils.py +9 -6
  89. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/resources.py +8 -2
  90. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/server/core.py +21 -2
  91. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/service.py +22 -2
  92. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/server.py +7 -2
  93. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/sky-serve-controller.yaml.j2 +3 -0
  94. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/gpu_labeler.py +2 -2
  95. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/schemas.py +5 -1
  96. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730/skypilot_nightly.egg-info}/PKG-INFO +1 -1
  97. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/skypilot_nightly.egg-info/SOURCES.txt +53 -52
  98. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/1043-869d9c78bf5dd3df.js +0 -1
  99. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/1141-e49a159c30a6c4a7.js +0 -11
  100. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/1559-18717d96ef2fcbe9.js +0 -30
  101. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/1664-d65361e92b85e786.js +0 -1
  102. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/1871-ea0e7283886407ca.js +0 -6
  103. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/2003.b82e6db40ec4c463.js +0 -1
  104. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/2350.23778a2b19aabd33.js +0 -1
  105. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/2369.2d6e4757f8dfc2b7.js +0 -15
  106. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/2641.74c19c4d45a2c034.js +0 -1
  107. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/3698-9fa11dafb5cad4a6.js +0 -1
  108. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/3785.59705416215ff08b.js +0 -1
  109. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/3937.d7f1c55d1916c7f2.js +0 -1
  110. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/4725.66125dcd9832aa5d.js +0 -1
  111. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/4869.da729a7db3a31f43.js +0 -16
  112. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/4937.d75809403fc264ac.js +0 -15
  113. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/5230-df791914b54d91d9.js +0 -1
  114. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/5739-5ea3ffa10fc884f2.js +0 -8
  115. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/6135-2abbd0352f8ee061.js +0 -1
  116. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/616-162f3033ffcd3d31.js +0 -39
  117. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/6601-d4a381403a8bae91.js +0 -1
  118. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/691.488b4aef97c28727.js +0 -55
  119. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/6989-eab0e9c16b64fd9f.js +0 -1
  120. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/6990-f64e03df359e04f7.js +0 -1
  121. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/7411-2cc31dc0fdf2a9ad.js +0 -41
  122. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/8969-8e0b2055bf5dd499.js +0 -1
  123. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/9025.4a9099bdf3ed4875.js +0 -6
  124. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/938-7ee806653aef0609.js +0 -1
  125. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/9847.387abf8a14d722db.js +0 -30
  126. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/9984.0460de9d3adf5582.js +0 -1
  127. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/fd9d1056-61f2257a9cd8b32b.js +0 -1
  128. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/framework-efc06c2733009cd3.js +0 -33
  129. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/main-app-68c028b1bc5e1b72.js +0 -1
  130. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/main-c0a4f1ea606d48d2.js +0 -1
  131. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/_app-da491665d4289aae.js +0 -34
  132. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/_error-c72a1f77a3c0be1b.js +0 -1
  133. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-2186770cc2de1623.js +0 -11
  134. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-95afb019ab85801c.js +0 -6
  135. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/clusters-3d4be4961e1c94eb.js +0 -1
  136. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/config-a2673b256b6d416f.js +0 -1
  137. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/index-89e7daf7b7df02e0.js +0 -1
  138. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/infra/[context]-a90b4fe4616dc501.js +0 -1
  139. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/infra-0d3d1f890c5d188a.js +0 -1
  140. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-dc0299ffefebcdbe.js +0 -16
  141. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/jobs-49f790d12a85027c.js +0 -1
  142. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/users-6790fcefd5487b13.js +0 -1
  143. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/volumes-61ea7ba7e56f8d06.js +0 -1
  144. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/workspace/new-5629d4e551dba1ee.js +0 -1
  145. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-6bcd4b20914d76c9.js +0 -1
  146. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/pages/workspaces-5f7fe4b7d55b8612.js +0 -1
  147. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/chunks/webpack-a305898dc479711e.js +0 -1
  148. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/ucBqsWPN0A5D2kXj8-FqQ/_buildManifest.js +0 -1
  149. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/clusters/[cluster]/[job].html +0 -1
  150. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/clusters/[cluster].html +0 -1
  151. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/clusters.html +0 -1
  152. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/config.html +0 -1
  153. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/index.html +0 -1
  154. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/infra.html +0 -1
  155. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/jobs/[job].html +0 -1
  156. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/jobs.html +0 -1
  157. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/users.html +0 -1
  158. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/volumes.html +0 -1
  159. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/workspaces/[name].html +0 -1
  160. skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/workspaces.html +0 -1
  161. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/LICENSE +0 -0
  162. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/MANIFEST.in +0 -0
  163. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/README.md +0 -0
  164. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/pyproject.toml +0 -0
  165. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/setup.cfg +0 -0
  166. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/setup.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/__init__.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/aws.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/azure.py +0 -0
  170. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/cloudflare.py +0 -0
  171. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/common.py +0 -0
  172. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/cudo.py +0 -0
  173. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/do.py +0 -0
  174. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/docker.py +0 -0
  175. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/gcp.py +0 -0
  176. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/hyperbolic.py +0 -0
  177. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/ibm.py +0 -0
  178. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/kubernetes.py +0 -0
  179. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/nebius.py +0 -0
  180. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/oci.py +0 -0
  181. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/runpod.py +0 -0
  182. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/vast.py +0 -0
  183. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/adaptors/vsphere.py +0 -0
  184. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/admin_policy.py +0 -0
  185. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/authentication.py +0 -0
  186. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/backends/__init__.py +0 -0
  187. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/backends/backend.py +0 -0
  188. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/backends/backend_utils.py +0 -0
  189. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/backends/cloud_vm_ray_backend.py +0 -0
  190. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/backends/docker_utils.py +0 -0
  191. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/backends/local_docker_backend.py +0 -0
  192. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  193. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/backends/wheel_utils.py +0 -0
  194. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/__init__.py +0 -0
  195. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/aws_catalog.py +0 -0
  196. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/azure_catalog.py +0 -0
  197. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/common.py +0 -0
  198. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/config.py +0 -0
  199. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/cudo_catalog.py +0 -0
  200. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/data_fetchers/__init__.py +0 -0
  201. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/data_fetchers/analyze.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/data_fetchers/fetch_aws.py +0 -0
  203. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/data_fetchers/fetch_azure.py +0 -0
  204. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/data_fetchers/fetch_cudo.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/data_fetchers/fetch_fluidstack.py +0 -0
  206. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/data_fetchers/fetch_gcp.py +0 -0
  207. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/data_fetchers/fetch_hyperbolic.py +0 -0
  208. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/data_fetchers/fetch_ibm.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  210. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/data_fetchers/fetch_nebius.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/data_fetchers/fetch_vast.py +0 -0
  212. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/data_fetchers/fetch_vsphere.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/do_catalog.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/fluidstack_catalog.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/gcp_catalog.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/hyperbolic_catalog.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/ibm_catalog.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/lambda_catalog.py +0 -0
  219. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/nebius_catalog.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/oci_catalog.py +0 -0
  221. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/paperspace_catalog.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/runpod_catalog.py +0 -0
  223. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/scp_catalog.py +0 -0
  224. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/ssh_catalog.py +0 -0
  225. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/vast_catalog.py +0 -0
  226. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/catalog/vsphere_catalog.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/check.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/cli.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/client/__init__.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/client/cli/__init__.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/client/cli/deprecation_utils.py +0 -0
  232. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/client/cli/flags.py +0 -0
  233. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/client/cli/git.py +0 -0
  234. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/client/oauth.py +0 -0
  235. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/client/sdk.py +0 -0
  236. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/client/sdk.pyi +0 -0
  237. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/client/service_account_auth.py +0 -0
  238. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/cloud_stores.py +0 -0
  239. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/__init__.py +0 -0
  240. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/aws.py +0 -0
  241. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/azure.py +0 -0
  242. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/cloud.py +0 -0
  243. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/cudo.py +0 -0
  244. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/do.py +0 -0
  245. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/fluidstack.py +0 -0
  246. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/gcp.py +0 -0
  247. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/hyperbolic.py +0 -0
  248. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/ibm.py +0 -0
  249. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/lambda_cloud.py +0 -0
  250. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/oci.py +0 -0
  251. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/paperspace.py +0 -0
  252. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/runpod.py +0 -0
  253. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/scp.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/ssh.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/utils/__init__.py +0 -0
  256. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/utils/aws_utils.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/utils/azure_utils.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/utils/oci_utils.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/utils/scp_utils.py +0 -0
  260. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/clouds/vsphere.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/core.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/dag.py +0 -0
  263. {skypilot_nightly-1.0.0.dev20250728/sky/dashboard/out/_next/static/ucBqsWPN0A5D2kXj8-FqQ → skypilot_nightly-1.0.0.dev20250730/sky/dashboard/out/_next/static/_r2LwCFLjlWjZDUIJQG_V}/_ssgManifest.js +0 -0
  264. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js +0 -0
  265. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
  266. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/dashboard/out/_next/static/css/b3227360726f12eb.css +0 -0
  267. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/dashboard/out/favicon.ico +0 -0
  268. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/dashboard/out/skypilot.svg +0 -0
  269. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/dashboard/out/videos/cursor-small.mp4 +0 -0
  270. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/data/__init__.py +0 -0
  271. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/data/data_transfer.py +0 -0
  272. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/data/mounting_utils.py +0 -0
  273. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/data/storage_utils.py +0 -0
  274. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/exceptions.py +0 -0
  275. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/execution.py +0 -0
  276. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/jobs/__init__.py +0 -0
  277. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/jobs/client/__init__.py +0 -0
  278. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/jobs/client/sdk.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/jobs/constants.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/jobs/controller.py +0 -0
  281. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/jobs/recovery_strategy.py +0 -0
  282. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/jobs/scheduler.py +0 -0
  283. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/jobs/server/__init__.py +0 -0
  284. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/jobs/server/server.py +0 -0
  285. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/jobs/server/utils.py +0 -0
  286. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/logs/__init__.py +0 -0
  287. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/logs/gcp.py +0 -0
  288. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/metrics/__init__.py +0 -0
  289. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/metrics/utils.py +0 -0
  290. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/models.py +0 -0
  291. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/optimizer.py +0 -0
  292. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/__init__.py +0 -0
  293. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/aws/__init__.py +0 -0
  294. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/aws/config.py +0 -0
  295. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/aws/instance.py +0 -0
  296. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/aws/utils.py +0 -0
  297. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/azure/__init__.py +0 -0
  298. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/azure/azure-config-template.json +0 -0
  299. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/azure/config.py +0 -0
  300. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/azure/instance.py +0 -0
  301. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/common.py +0 -0
  302. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/constants.py +0 -0
  303. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/cudo/__init__.py +0 -0
  304. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/cudo/config.py +0 -0
  305. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/cudo/cudo_machine_type.py +0 -0
  306. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/cudo/cudo_utils.py +0 -0
  307. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/cudo/cudo_wrapper.py +0 -0
  308. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/cudo/instance.py +0 -0
  309. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/do/__init__.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/do/config.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/do/constants.py +0 -0
  312. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/do/instance.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/do/utils.py +0 -0
  314. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/docker_utils.py +0 -0
  315. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/fluidstack/__init__.py +0 -0
  316. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/fluidstack/config.py +0 -0
  317. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  318. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/fluidstack/instance.py +0 -0
  319. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/gcp/__init__.py +0 -0
  320. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/gcp/config.py +0 -0
  321. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/gcp/constants.py +0 -0
  322. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/gcp/instance.py +0 -0
  323. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/gcp/instance_utils.py +0 -0
  324. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/gcp/mig_utils.py +0 -0
  325. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/gcp/volume_utils.py +0 -0
  326. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/hyperbolic/__init__.py +0 -0
  327. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/hyperbolic/config.py +0 -0
  328. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/hyperbolic/instance.py +0 -0
  329. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/hyperbolic/utils.py +0 -0
  330. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/instance_setup.py +0 -0
  331. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/kubernetes/__init__.py +0 -0
  332. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/kubernetes/config.py +0 -0
  333. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/kubernetes/constants.py +0 -0
  334. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +0 -0
  335. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/kubernetes/network.py +0 -0
  336. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/kubernetes/network_utils.py +0 -0
  337. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/kubernetes/volume.py +0 -0
  338. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/lambda_cloud/__init__.py +0 -0
  339. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/lambda_cloud/config.py +0 -0
  340. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/lambda_cloud/instance.py +0 -0
  341. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  342. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/logging.py +0 -0
  343. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/metadata_utils.py +0 -0
  344. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/nebius/__init__.py +0 -0
  345. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/nebius/config.py +0 -0
  346. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/nebius/constants.py +0 -0
  347. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/nebius/instance.py +0 -0
  348. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/nebius/utils.py +0 -0
  349. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/oci/__init__.py +0 -0
  350. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/oci/config.py +0 -0
  351. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/oci/instance.py +0 -0
  352. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/oci/query_utils.py +0 -0
  353. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/paperspace/__init__.py +0 -0
  354. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/paperspace/config.py +0 -0
  355. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/paperspace/constants.py +0 -0
  356. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/paperspace/instance.py +0 -0
  357. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/paperspace/utils.py +0 -0
  358. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/provisioner.py +0 -0
  359. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/runpod/__init__.py +0 -0
  360. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/runpod/api/__init__.py +0 -0
  361. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/runpod/api/commands.py +0 -0
  362. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/runpod/api/pods.py +0 -0
  363. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/runpod/config.py +0 -0
  364. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/runpod/instance.py +0 -0
  365. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/runpod/utils.py +0 -0
  366. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/scp/__init__.py +0 -0
  367. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/scp/config.py +0 -0
  368. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/scp/instance.py +0 -0
  369. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/ssh/__init__.py +0 -0
  370. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vast/__init__.py +0 -0
  371. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vast/config.py +0 -0
  372. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vsphere/__init__.py +0 -0
  373. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vsphere/common/__init__.py +0 -0
  374. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  375. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  376. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vsphere/common/custom_script.py +0 -0
  377. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vsphere/common/id_generator.py +0 -0
  378. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  379. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vsphere/common/service_manager.py +0 -0
  380. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  381. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  382. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  383. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vsphere/common/vim_utils.py +0 -0
  384. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vsphere/config.py +0 -0
  385. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vsphere/instance.py +0 -0
  386. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/provision/vsphere/vsphere_utils.py +0 -0
  387. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/schemas/db/README +0 -0
  388. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/schemas/db/env.py +0 -0
  389. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/schemas/db/global_user_state/001_initial_schema.py +0 -0
  390. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/schemas/db/script.py.mako +0 -0
  391. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/schemas/db/spot_jobs/001_initial_schema.py +0 -0
  392. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/__init__.py +0 -0
  393. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/autoscalers.py +0 -0
  394. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/client/__init__.py +0 -0
  395. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/client/sdk.py +0 -0
  396. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/constants.py +0 -0
  397. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/controller.py +0 -0
  398. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/load_balancer.py +0 -0
  399. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/load_balancing_policies.py +0 -0
  400. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/replica_managers.py +0 -0
  401. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/serve_state.py +0 -0
  402. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/serve_utils.py +0 -0
  403. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/server/__init__.py +0 -0
  404. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/server/server.py +0 -0
  405. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/service_spec.py +0 -0
  406. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/serve/spot_placer.py +0 -0
  407. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/__init__.py +0 -0
  408. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/common.py +0 -0
  409. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/config.py +0 -0
  410. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/constants.py +0 -0
  411. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/html/log.html +0 -0
  412. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/html/token_page.html +0 -0
  413. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/metrics.py +0 -0
  414. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/requests/__init__.py +0 -0
  415. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/requests/event_loop.py +0 -0
  416. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/requests/executor.py +0 -0
  417. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/requests/payloads.py +0 -0
  418. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/requests/preconditions.py +0 -0
  419. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/requests/process.py +0 -0
  420. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/requests/queues/__init__.py +0 -0
  421. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/requests/queues/local_queue.py +0 -0
  422. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/requests/queues/mp_queue.py +0 -0
  423. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/requests/requests.py +0 -0
  424. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/requests/serializers/__init__.py +0 -0
  425. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/requests/serializers/decoders.py +0 -0
  426. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/requests/serializers/encoders.py +0 -0
  427. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/rest.py +0 -0
  428. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/state.py +0 -0
  429. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/stream_utils.py +0 -0
  430. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/uvicorn.py +0 -0
  431. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/server/versions.py +0 -0
  432. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/setup_files/MANIFEST.in +0 -0
  433. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/setup_files/alembic.ini +0 -0
  434. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/setup_files/dependencies.py +0 -0
  435. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/setup_files/setup.py +0 -0
  436. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/sky_logging.py +0 -0
  437. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/LICENSE +0 -0
  438. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/__init__.py +0 -0
  439. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/attempt_skylet.py +0 -0
  440. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/autostop_lib.py +0 -0
  441. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/configs.py +0 -0
  442. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/constants.py +0 -0
  443. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/events.py +0 -0
  444. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/job_lib.py +0 -0
  445. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/log_lib.py +0 -0
  446. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/log_lib.pyi +0 -0
  447. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/providers/__init__.py +0 -0
  448. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/providers/command_runner.py +0 -0
  449. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/providers/ibm/__init__.py +0 -0
  450. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/providers/ibm/node_provider.py +0 -0
  451. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/providers/ibm/utils.py +0 -0
  452. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  453. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/ray_patches/__init__.py +0 -0
  454. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  455. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/ray_patches/cli.py.patch +0 -0
  456. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  457. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  458. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  459. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/ray_patches/updater.py.patch +0 -0
  460. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/ray_patches/worker.py.patch +0 -0
  461. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/skylet.py +0 -0
  462. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skylet/subprocess_daemon.py +0 -0
  463. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/skypilot_config.py +0 -0
  464. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/ssh_node_pools/__init__.py +0 -0
  465. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/ssh_node_pools/core.py +0 -0
  466. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/ssh_node_pools/server.py +0 -0
  467. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/task.py +0 -0
  468. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/aws-ray.yml.j2 +0 -0
  469. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/azure-ray.yml.j2 +0 -0
  470. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/cudo-ray.yml.j2 +0 -0
  471. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/do-ray.yml.j2 +0 -0
  472. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  473. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/gcp-ray.yml.j2 +0 -0
  474. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/hyperbolic-ray.yml.j2 +0 -0
  475. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/ibm-ray.yml.j2 +0 -0
  476. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/jobs-controller.yaml.j2 +0 -0
  477. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  478. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  479. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  480. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  481. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  482. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/lambda-ray.yml.j2 +0 -0
  483. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/local-ray.yml.j2 +0 -0
  484. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/nebius-ray.yml.j2 +0 -0
  485. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/oci-ray.yml.j2 +0 -0
  486. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/paperspace-ray.yml.j2 +0 -0
  487. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/runpod-ray.yml.j2 +0 -0
  488. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/scp-ray.yml.j2 +0 -0
  489. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
  490. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/vast-ray.yml.j2 +0 -0
  491. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/vsphere-ray.yml.j2 +0 -0
  492. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/templates/websocket_proxy.py +0 -0
  493. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/usage/__init__.py +0 -0
  494. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/usage/constants.py +0 -0
  495. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/usage/usage_lib.py +0 -0
  496. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/users/__init__.py +0 -0
  497. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/users/model.conf +0 -0
  498. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/users/permission.py +0 -0
  499. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/users/rbac.py +0 -0
  500. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/users/server.py +0 -0
  501. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/users/token_service.py +0 -0
  502. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/__init__.py +0 -0
  503. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/accelerator_registry.py +0 -0
  504. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/admin_policy_utils.py +0 -0
  505. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/annotations.py +0 -0
  506. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/atomic.py +0 -0
  507. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/aws/__init__.py +0 -0
  508. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/aws/get_default_security_group.py +0 -0
  509. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/cli_utils/__init__.py +0 -0
  510. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/cli_utils/status_utils.py +0 -0
  511. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/cluster_utils.py +0 -0
  512. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/command_runner.py +0 -0
  513. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/command_runner.pyi +0 -0
  514. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/common.py +0 -0
  515. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/common_utils.py +0 -0
  516. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/config_utils.py +0 -0
  517. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/context.py +0 -0
  518. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/context_utils.py +0 -0
  519. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/control_master_utils.py +0 -0
  520. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/controller_utils.py +0 -0
  521. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/dag_utils.py +0 -0
  522. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/db/__init__.py +0 -0
  523. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/db/db_utils.py +0 -0
  524. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/db/migration_utils.py +0 -0
  525. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/env_options.py +0 -0
  526. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/git.py +0 -0
  527. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/git_clone.sh +0 -0
  528. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/infra_utils.py +0 -0
  529. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/__init__.py +0 -0
  530. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/cleanup-tunnel.sh +0 -0
  531. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/config_map_utils.py +0 -0
  532. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/create_cluster.sh +0 -0
  533. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  534. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/deploy_remote_cluster.py +0 -0
  535. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
  536. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  537. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  538. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  539. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  540. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
  541. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  542. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/ssh-tunnel.sh +0 -0
  543. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  544. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes/ssh_utils.py +0 -0
  545. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/kubernetes_enums.py +0 -0
  546. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/locks.py +0 -0
  547. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/log_utils.py +0 -0
  548. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/message_utils.py +0 -0
  549. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/registry.py +0 -0
  550. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/resource_checker.py +0 -0
  551. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/resources_utils.py +0 -0
  552. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/rich_console_utils.py +0 -0
  553. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/rich_utils.py +0 -0
  554. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/status_lib.py +0 -0
  555. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/subprocess_utils.py +0 -0
  556. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/tempstore.py +0 -0
  557. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/timeline.py +0 -0
  558. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/ux_utils.py +0 -0
  559. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/validator.py +0 -0
  560. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/utils/volume.py +0 -0
  561. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/volumes/__init__.py +0 -0
  562. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/volumes/client/__init__.py +0 -0
  563. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/volumes/client/sdk.py +0 -0
  564. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/volumes/server/__init__.py +0 -0
  565. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/volumes/server/core.py +0 -0
  566. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/volumes/server/server.py +0 -0
  567. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/volumes/utils.py +0 -0
  568. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/volumes/volume.py +0 -0
  569. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/workspaces/__init__.py +0 -0
  570. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/workspaces/core.py +0 -0
  571. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/workspaces/server.py +0 -0
  572. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/sky/workspaces/utils.py +0 -0
  573. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  574. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  575. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/skypilot_nightly.egg-info/requires.txt +0 -0
  576. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/skypilot_nightly.egg-info/top_level.txt +0 -0
  577. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_api.py +0 -0
  578. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_api_compatibility.py +0 -0
  579. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_cli.py +0 -0
  580. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_config.py +0 -0
  581. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_db_utils.py +0 -0
  582. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_failover.py +0 -0
  583. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_global_user_state.py +0 -0
  584. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_jobs.py +0 -0
  585. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_jobs_and_serve.py +0 -0
  586. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_list_accelerators.py +0 -0
  587. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_no_parellel.py +0 -0
  588. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_optimizer_dryruns.py +0 -0
  589. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_optimizer_random_dag.py +0 -0
  590. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_serve_autoscaler.py +0 -0
  591. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_smoke.py +0 -0
  592. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_storage.py +0 -0
  593. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/tests/test_wheels.py +0 -0
  594. {skypilot_nightly-1.0.0.dev20250728 → skypilot_nightly-1.0.0.dev20250730}/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.dev20250728
3
+ Version: 1.0.0.dev20250730
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 = '37ba12977758874067e082482a70526fbab9185f'
8
+ _SKYPILOT_COMMIT_SHA = 'ea1f63e8d24723b49f550b716226763a18ee31fd'
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.dev20250728'
38
+ __version__ = '1.0.0.dev20250730'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -214,7 +214,7 @@ def _list_accelerators(
214
214
  # Generate the accelerator quantities
215
215
  accelerator_count = (
216
216
  kubernetes_utils.get_node_accelerator_count(
217
- node.status.allocatable))
217
+ context, node.status.allocatable))
218
218
 
219
219
  if accelerator_count > 0:
220
220
  # TPUs are counted in a different way compared to GPUs.
@@ -261,7 +261,7 @@ def _list_accelerators(
261
261
  if container.resources.requests:
262
262
  allocated_qty += (
263
263
  kubernetes_utils.get_node_accelerator_count(
264
- container.resources.requests))
264
+ context, container.resources.requests))
265
265
 
266
266
  accelerators_available = accelerator_count - allocated_qty
267
267
  # Initialize the total_accelerators_available to make sure the
@@ -3427,13 +3427,6 @@ def show_gpus(
3427
3427
  num_filtered_contexts = 0
3428
3428
 
3429
3429
  if realtime_gpu_availability_lists:
3430
- if len(realtime_gpu_availability_lists[0]) != 2:
3431
- # TODO(kyuds): for backwards compatibility, as we add new
3432
- # context to the API server response in #5362. Remove this after
3433
- # 0.10.0.
3434
- realtime_gpu_availability_lists = [
3435
- (context, realtime_gpu_availability_lists)
3436
- ]
3437
3430
  for (ctx, availability_list) in realtime_gpu_availability_lists:
3438
3431
  if not _filter_ctx(ctx):
3439
3432
  continue
@@ -16,6 +16,7 @@ import zipfile
16
16
 
17
17
  from sky import sky_logging
18
18
  from sky.adaptors import common as adaptors_common
19
+ from sky.client import service_account_auth
19
20
  from sky.data import data_utils
20
21
  from sky.data import storage_utils
21
22
  from sky.server import common as server_common
@@ -172,6 +173,7 @@ def _upload_chunk_with_retry(params: UploadChunkParams) -> None:
172
173
 
173
174
  server_url = server_common.get_server_url()
174
175
  max_attempts = 3
176
+ sa_headers = service_account_auth.get_service_account_headers()
175
177
  with open(params.file_path, 'rb') as f:
176
178
  for attempt in range(max_attempts):
177
179
  response = params.client.post(
@@ -184,7 +186,10 @@ def _upload_chunk_with_retry(params: UploadChunkParams) -> None:
184
186
  },
185
187
  content=FileChunkIterator(f, _UPLOAD_CHUNK_BYTES,
186
188
  params.chunk_index),
187
- headers={'Content-Type': 'application/octet-stream'},
189
+ headers={
190
+ 'Content-Type': 'application/octet-stream',
191
+ **sa_headers,
192
+ },
188
193
  cookies=server_common.get_api_cookie_jar())
189
194
  if response.status_code == 200:
190
195
  data = response.json()
@@ -304,14 +309,12 @@ def upload_mounts_to_api_server(dag: 'sky.Dag',
304
309
  task_.file_mounts_mapping[src] = _full_path(src)
305
310
  if (task_.service is not None and
306
311
  task_.service.tls_credential is not None):
307
- upload_list.append(task_.service.tls_credential.keyfile)
308
- upload_list.append(task_.service.tls_credential.certfile)
309
- task_.file_mounts_mapping[
310
- task_.service.tls_credential.
311
- keyfile] = task_.service.tls_credential.keyfile
312
- task_.file_mounts_mapping[
313
- task_.service.tls_credential.
314
- certfile] = task_.service.tls_credential.certfile
312
+ keyfile = task_.service.tls_credential.keyfile
313
+ certfile = task_.service.tls_credential.certfile
314
+ upload_list.append(_full_path(keyfile))
315
+ upload_list.append(_full_path(certfile))
316
+ task_.file_mounts_mapping[keyfile] = _full_path(keyfile)
317
+ task_.file_mounts_mapping[certfile] = _full_path(certfile)
315
318
 
316
319
  if upload_list:
317
320
  os.makedirs(os.path.expanduser(FILE_UPLOAD_LOGS_DIR), exist_ok=True)
@@ -547,7 +547,8 @@ class Kubernetes(clouds.Cloud):
547
547
  tpu_requested = True
548
548
  k8s_resource_key = kubernetes_utils.TPU_RESOURCE_KEY
549
549
  else:
550
- k8s_resource_key = kubernetes_utils.get_gpu_resource_key()
550
+ k8s_resource_key = kubernetes_utils.get_gpu_resource_key(
551
+ context)
551
552
  else:
552
553
  # If no GPUs are requested, we set NVIDIA_VISIBLE_DEVICES=none to
553
554
  # maintain GPU isolation. This is to override the default behavior
@@ -358,7 +358,7 @@ class Nebius(clouds.Cloud):
358
358
  f'{_INDENT_PREFIX} $ nebius iam get-access-token > {nebius.iam_token_path()} \n' # pylint: disable=line-too-long
359
359
  f'{_INDENT_PREFIX} or generate {nebius.credentials_path()} \n')
360
360
 
361
- tenant_msg = (f'{_INDENT_PREFIX} Copy your tenat ID from the web console and save it to file \n' # pylint: disable=line-too-long
361
+ tenant_msg = (f'{_INDENT_PREFIX} Copy your tenant ID from the web console and save it to file \n' # pylint: disable=line-too-long
362
362
  f'{_INDENT_PREFIX} $ echo $NEBIUS_TENANT_ID_PATH > {nebius.tenant_id_path()} \n' # pylint: disable=line-too-long
363
363
  f'{_INDENT_PREFIX} Or if you have 1 tenant you can run:\n' # pylint: disable=line-too-long
364
364
  f'{_INDENT_PREFIX} $ nebius --format json iam whoami|jq -r \'.user_profile.tenants[0].tenant_id\' > {nebius.tenant_id_path()} \n') # pylint: disable=line-too-long
@@ -40,7 +40,7 @@ def is_tpu_vm(resources: Optional['resources_lib.Resources']) -> bool:
40
40
  assert (resources is not None and resources.accelerators is not None and
41
41
  len(resources.accelerators) == 1)
42
42
  acc, _ = list(resources.accelerators.items())[0]
43
- if kubernetes_utils.is_tpu_on_gke(acc):
43
+ if kubernetes_utils.is_tpu_on_gke(acc, normalize=False):
44
44
  return False
45
45
  if resources.accelerator_args is None:
46
46
  return True
@@ -29,8 +29,6 @@ class Vast(clouds.Cloud):
29
29
  clouds.CloudImplementationFeatures.CUSTOM_NETWORK_TIER:
30
30
  ('Custom network tier is currently not supported in '
31
31
  f'{_REPR}.'),
32
- clouds.CloudImplementationFeatures.OPEN_PORTS:
33
- ('Opening ports is currently not supported on Vast.'),
34
32
  clouds.CloudImplementationFeatures.STORAGE_MOUNTING:
35
33
  ('Mounting object stores is not supported on Vast.'),
36
34
  clouds.CloudImplementationFeatures.HIGH_AVAILABILITY_CONTROLLERS:
@@ -49,6 +47,7 @@ class Vast(clouds.Cloud):
49
47
 
50
48
  PROVISIONER_VERSION = clouds.ProvisionerVersion.SKYPILOT
51
49
  STATUS_VERSION = clouds.StatusVersion.SKYPILOT
50
+ OPEN_PORTS_VERSION = clouds.OpenPortsVersion.LAUNCH_ONLY
52
51
 
53
52
  @classmethod
54
53
  def _unsupported_features_for_resources(
@@ -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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-a305898dc479711e.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-efc06c2733009cd3.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-c0a4f1ea606d48d2.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-da491665d4289aae.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-c72a1f77a3c0be1b.js" defer=""></script><script src="/dashboard/_next/static/ucBqsWPN0A5D2kXj8-FqQ/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/ucBqsWPN0A5D2kXj8-FqQ/_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":"ucBqsWPN0A5D2kXj8-FqQ","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/b3227360726f12eb.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/b3227360726f12eb.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-5adfc4d4b3db6f71.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-a67ae198457b9886.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js" defer=""></script><script src="/dashboard/_next/static/_r2LwCFLjlWjZDUIJQG_V/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/_r2LwCFLjlWjZDUIJQG_V/_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":"_r2LwCFLjlWjZDUIJQG_V","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -0,0 +1 @@
1
+ self.__BUILD_MANIFEST=function(s,c,e,a,t,u,n,f,r,i,b,j,k,o,h,d){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/chunks/pages/index-444f1804401f04ea.js"],"/_error":["static/chunks/pages/_error-c66a4e8afc46f17b.js"],"/clusters":["static/chunks/pages/clusters-956ad430075efee8.js"],"/clusters/[cluster]":[s,c,e,a,t,r,b,j,u,n,f,k,i,o,h,d,"static/chunks/1871-1df8b686a51f3e3a.js","static/chunks/pages/clusters/[cluster]-665fa5d96dd41d67.js"],"/clusters/[cluster]/[job]":[s,c,e,a,t,u,n,f,"static/chunks/pages/clusters/[cluster]/[job]-fa63e8b1d203f298.js"],"/config":["static/chunks/pages/config-8620d099cbef8608.js"],"/infra":["static/chunks/pages/infra-0fbdc9072f19fbe2.js"],"/infra/[context]":["static/chunks/pages/infra/[context]-9cfd875eecb6eaf5.js"],"/jobs":["static/chunks/pages/jobs-6393a9edc7322b54.js"],"/jobs/[job]":[s,c,e,a,t,r,j,u,n,f,i,"static/chunks/pages/jobs/[job]-b25c109d6e41bcf4.js"],"/users":["static/chunks/pages/users-34d6bb10c3b3ee3d.js"],"/volumes":["static/chunks/pages/volumes-225c8dae0634eb7f.js"],"/workspace/new":["static/chunks/pages/workspace/new-92f741084a89e27b.js"],"/workspaces":["static/chunks/pages/workspaces-e4cb7e97d37e93ad.js"],"/workspaces/[name]":[s,c,e,a,t,r,b,u,n,f,k,i,o,h,d,"static/chunks/1141-3f10a5a9f697c630.js","static/chunks/pages/workspaces/[name]-4d41c9023287f59a.js"],sortedPages:["/","/_app","/_error","/clusters","/clusters/[cluster]","/clusters/[cluster]/[job]","/config","/infra","/infra/[context]","/jobs","/jobs/[job]","/users","/volumes","/workspace/new","/workspaces","/workspaces/[name]"]}}("static/chunks/616-3d59f75e2ccf9321.js","static/chunks/5230-f3bb2663e442e86c.js","static/chunks/5739-d67458fcb1386c92.js","static/chunks/1664-22b00e32c9ff96a4.js","static/chunks/7411-b15471acd2cba716.js","static/chunks/6989-983d3ae7a874de98.js","static/chunks/3698-7874720877646365.js","static/chunks/6135-d0e285ac5f3f2485.js","static/chunks/1272-1ef0bf0237faccdb.js","static/chunks/8969-9a8cca241b30db83.js","static/chunks/1559-6c00e20454194859.js","static/chunks/6212-7bd06f60ba693125.js","static/chunks/6990-08b2a1cae076a943.js","static/chunks/1043-928582d4860fef92.js","static/chunks/6601-234b1cf963c7280b.js","static/chunks/938-40d15b6261ec8dc1.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1043],{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,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,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,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,cluster_hash:e.cluster_hash,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,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]),m=(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]),h=(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 m(e.workspace))},[_,m,t]),b=(0,r.useCallback)(async()=>{s&&(n.default.invalidate(d,[{clusterName:t,workspace:s.workspace||"default"}]),await m(s.workspace))},[m,s,t]);return(0,r.useEffect)(()=>{(async()=>{let e=await _();e&&m(e.workspace)})()},[t,a,_,m]),{clusterData:s,clusterJobData:l,loading:i,clusterDetailsLoading:i,clusterJobsLoading:f,refreshData:h,refreshClusterJobsOnly:b}}},32045:function(e,t,a){a.d(t,{l4:function(){return n}});var r=a(93225),s=a(47145);async function o(e,t){try{let a=[];try{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)),o=await r.json();a=o.return_value?JSON.parse(o.return_value):[],console.log("Enabled clouds:",a)}catch(e){console.error("Error fetching enabled clouds:",e),a=[]}let o={};r.$m.forEach(e=>{let t=a.includes(e.toLowerCase());o[e]={name:e,clusters:0,jobs:0,enabled:t}}),e.forEach(e=>{if(e.cloud){let t=e.cloud;o[t]&&(o[t].clusters+=1,o[t].enabled=!0)}}),t.forEach(e=>{if(e.cloud){let t=e.cloud;o[t]&&(o[t].jobs+=1,o[t].enabled=!0)}});let n=r.$m.length,l=Object.values(o).filter(e=>e.enabled).length;return{clouds:Object.values(o).filter(e=>e.enabled).sort((e,t)=>e.name.localeCompare(t.name)),totalClouds:n,enabledClouds:l}}catch(e){return console.error("Error fetching cloud infrastructure:",e),{clouds:[],totalClouds:r.$m.length,enabledClouds:0}}}async function n(){let{getClusters:e}=await Promise.resolve().then(a.bind(a,23266)),{getManagedJobs:t}=await Promise.resolve().then(a.bind(a,68969)),r=(await Promise.resolve().then(a.bind(a,6378))).default,[s,n]=await Promise.all([r.get(e),r.get(t,[{allUsers:!0}])]),c=s||[],u=(null==n?void 0:n.jobs)||[],[i,d]=await Promise.all([l(c,u),o(c,u)]);return{gpuData:i,cloudData:d}}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}}}},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
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1141],{99333:function(e,s,r){r.d(s,{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,r(60998).Z)("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]])},98418:function(e,s,r){r.d(s,{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,r(60998).Z)("Trash",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}]])},1812:function(e,s,r){r.d(s,{X:function(){return n}});var a=r(85893),l=r(67294);let t=e=>{if(!(null==e?void 0:e.message))return"An unexpected error occurred.";let s=e.message;return s.includes("failed:")&&(s=s.split("failed:")[1].trim()),s},n=e=>{let{error:s,title:r="Error",onDismiss:n}=e,[c,i]=(0,l.useState)(!1);if((0,l.useEffect)(()=>{s&&i(!1)},[s]),!s||c)return null;let o="string"==typeof s?s:t(s);return(0,a.jsx)("div",{className:"bg-red-50 border border-red-200 rounded-md p-3 mb-4",children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex",children:[(0,a.jsx)("div",{className:"flex-shrink-0",children:(0,a.jsx)("svg",{className:"h-5 w-5 text-red-400",viewBox:"0 0 20 20",fill:"currentColor",children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"})})}),(0,a.jsx)("div",{className:"ml-3",children:(0,a.jsxs)("div",{className:"text-sm text-red-800",children:[(0,a.jsxs)("strong",{children:[r,":"]})," ",o]})})]}),(0,a.jsx)("button",{onClick:()=>{i(!0),n&&n()},className:"flex-shrink-0 ml-4 text-red-400 hover:text-red-600 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 focus:ring-offset-red-50 rounded","aria-label":"Dismiss error",children:(0,a.jsx)("svg",{className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]})})}},69123:function(e,s,r){r.d(s,{g:function(){return n}});var a=r(85893),l=r(67294),t=r(32350);let n=l.forwardRef((e,s)=>{let{className:r,...l}=e;return(0,a.jsx)("textarea",{className:(0,t.cn)("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",r),ref:s,...l})});n.displayName="Textarea"},11141:function(e,s,r){r.r(s),r.d(s,{WorkspaceEditor:function(){return R}});var a=r(85893),l=r(67294),t=r(11163),n=r(17324),c=r(23266),i=r(68969);r(6135);var o=r(41664),d=r.n(o),u=r(9008),x=r.n(u),m=r(37673),h=r(30803),f=r(69123),g=r(55739),p=r(70282),b=r(6021),j=r(13626),y=r(98418),N=r(99333),v=r(50326);let w=e=>{let{className:s="",variant:r="default",children:l,...t}=e;return(0,a.jsx)("div",{role:"alert",className:"".concat("relative w-full rounded-lg border p-4 flex items-start space-x-2"," ").concat({default:"bg-blue-50 border-blue-200 text-blue-800",destructive:"bg-red-50 border-red-200 text-red-800"}[r]," ").concat(s),...t,children:l})},k=e=>{let{className:s="",children:r,...l}=e;return(0,a.jsx)("div",{className:"text-sm leading-relaxed ".concat(s),...l,children:r})};var C=r(53850),L=r(1812),S=r(80938),E=r(1272),Z=r(93225),D=r(53081);let M=e=>{let{message:s}=e;return s?(0,a.jsxs)(w,{className:"border-green-200 bg-green-50",children:[(0,a.jsx)(p.Z,{className:"h-4 w-4 text-green-600"}),(0,a.jsx)(k,{className:"text-green-800",children:s})]}):null},A=e=>{let{workspaceName:s,config:r,enabledClouds:l=[]}=e;if(!r)return null;let t="default"===s,n=0===Object.keys(r).length;if(t&&n)return(0,a.jsx)("div",{className:"text-sm text-gray-500 mb-3 italic p-3 bg-sky-50 rounded border border-sky-200",children:"Workspace 'default' can use all accessible infrastructure."});let c=[],i=[],o=[],d=new Set(l.map(e=>e.toLowerCase()));Object.entries(r).forEach(e=>{let[s,r]=e;if("private"===s||"allowed_users"===s)return;let l=Z.Z2[s.toLowerCase()]||s.toUpperCase(),t=d.has(null==l?void 0:l.toLowerCase());if((null==r?void 0:r.disabled)===!0)i.push(l);else if(r&&Object.keys(r).length>0){let e="";"gcp"===s.toLowerCase()&&r.project_id?e=" (Project ID: ".concat(r.project_id,")"):"aws"===s.toLowerCase()&&r.region&&(e=" (Region: ".concat(r.region,")")),t?c.push((0,a.jsxs)("span",{className:"block",children:[l,e," is enabled."]},"".concat(s,"-enabled"))):o.push((0,a.jsxs)("span",{className:"block text-amber-700",children:[l,e," is configured but not currently available."]},"".concat(s,"-configured-not-enabled")))}else t?c.push((0,a.jsxs)("span",{className:"block",children:[l," is enabled (using default settings)."]},"".concat(s,"-default-enabled"))):o.push((0,a.jsxs)("span",{className:"block text-amber-700",children:[l," is configured but not currently available."]},"".concat(s,"-default-not-enabled")))});let u=[];if(i.length>0){let e=i.join(" and ");u.push((0,a.jsxs)("span",{className:"block",children:[e," ",1===i.length?"is":"are"," explicitly disabled."]},"disabled-clouds"))}return(u.push(...c),u.push(...o),u.length>0)?(0,a.jsx)("div",{className:"text-sm text-gray-700 mb-3 p-3 bg-sky-50 rounded border border-sky-200",children:u}):!t&&n?(0,a.jsx)("div",{className:"text-sm text-gray-500 mb-3 italic p-3 bg-sky-50 rounded border border-sky-200",children:"This workspace has no specific cloud resource configurations and can use all accessible infrastructure."}):null},W=e=>{let{isPrivate:s}=e;return s?(0,a.jsx)("span",{className:"inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-gray-100 text-gray-700 border border-gray-300",children:"Private"}):(0,a.jsx)("span",{className:"inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-green-100 text-green-700 border border-green-300",children:"Public"})},P=e=>{let{workspaceConfig:s,allUsers:r}=e;if(!s.private)return null;let l=s.allowed_users||[],t=(r||[]).filter(e=>"admin"===e.role).map(e=>e.username),n=[...new Set([...l,...t])];return 0===n.length?(0,a.jsxs)("div",{className:"mt-4",children:[(0,a.jsx)("h4",{className:"mb-2 text-xs text-gray-500 tracking-wider",children:"Allowed Users (0)"}),(0,a.jsx)("div",{className:"text-amber-600 text-xs italic p-2 bg-amber-50 rounded border border-amber-200",children:"No users configured (workspace may be inaccessible)"})]}):(0,a.jsxs)("div",{className:"mt-4",children:[(0,a.jsxs)("h4",{className:"mb-2 text-xs text-gray-500 tracking-wider",children:["Allowed Users (",n.length,")"]}),(0,a.jsx)("div",{className:"space-y-1 max-h-48 overflow-y-auto border border-gray-200 rounded",children:n.map(e=>{let s=t.includes(e);return(0,a.jsxs)("div",{className:"flex items-center justify-between text-xs p-2 bg-gray-50 hover:bg-gray-100 border-b border-gray-100 last:border-b-0",children:[(0,a.jsx)("span",{className:"font-medium text-gray-700",children:e}),s?(0,a.jsxs)("span",{className:"inline-flex items-center text-blue-600",children:[(0,a.jsx)(C.r7,{className:"w-3 h-3 mr-1"}),"Admin"]}):(0,a.jsxs)("span",{className:"inline-flex items-center text-gray-600",children:[(0,a.jsx)(b.Z,{className:"w-3 h-3 mr-1"}),"User"]})]},e)})})]})};function R(e){let{workspaceName:s,isNewWorkspace:r=!1}=e,o=(0,t.useRouter)(),[u,p]=(0,l.useState)({}),[b,w]=(0,l.useState)({}),[k,Z]=(0,l.useState)(""),[R,_]=(0,l.useState)(!0),[z,O]=(0,l.useState)(!1),[T,U]=(0,l.useState)(!1),[Y,J]=(0,l.useState)(null),[I,V]=(0,l.useState)(null),[F,H]=(0,l.useState)(null),[X,B]=(0,l.useState)([]),[G,q]=(0,l.useState)({showDialog:!1,deleting:!1,error:null}),[K,Q]=(0,l.useState)({totalClusterCount:0,runningClusterCount:0,managedJobsCount:0,clouds:[]}),[$,ee]=(0,l.useState)(!1),es=(0,l.useCallback)(async()=>{_(!0),J(null);try{let e;let[r,a]=await Promise.all([(0,n.fX)(),(0,D.R)()]),l=r[s]||{};p(l),w(l),B(a||[]),e=0===Object.keys(l).length?"".concat(s,":\n # Empty workspace configuration - uses all accessible infrastructure\n"):E.ZP.dump({[s]:l},{indent:2,lineWidth:-1,noRefs:!0,skipInvalid:!0,flowLevel:-1}),Z(e)}catch(e){console.error("Error fetching workspace config:",e),J(e)}finally{_(!1)}},[s]),er=(0,l.useCallback)(async()=>{if(!r){ee(!0);try{let[e,r,a]=await Promise.all([(0,c.getClusters)(),(0,i.getManagedJobs)(),(0,n.yz)(s,!0)]),l=e.filter(e=>(e.workspace||"default")===s),t=l.filter(e=>"RUNNING"===e.status||"LAUNCHING"===e.status),o={};e.forEach(e=>{o[e.cluster]=e.workspace||"default"});let d=r.jobs||[],u=new Set(S.statusGroups.active),x=0;d.forEach(e=>{let r=e.cluster_name||e.resources&&e.resources.cluster_name;r&&o[r]===s&&u.has(e.status)&&x++}),Q({totalClusterCount:l.length,runningClusterCount:t.length,managedJobsCount:x,clouds:Array.isArray(a)?a:[]})}catch(e){console.error("Failed to fetch workspace stats:",e)}finally{ee(!1)}}},[s,r]);(0,l.useEffect)(()=>{r?(_(!1),Z("".concat(s,":\n # New workspace configuration\n # Leave empty to use all accessible infrastructure\n"))):(es(),er())},[s,r,es,er]),(0,l.useEffect)(()=>{U(JSON.stringify(u)!==JSON.stringify(b))},[u,b]);let ea=e=>{Z(e),H(null);try{let r=E.ZP.load(e)||{},a=Object.keys(r);if(0===a.length)p({});else if(1===a.length){let e=a[0];if(e!==s){H('Workspace name cannot be changed. Expected "'.concat(s,'" but found "').concat(e,'".'));return}let l=r[s]||{};p(l)}else H("Configuration must contain only one workspace. Found: ".concat(a.join(", ")))}catch(e){H("Invalid YAML: ".concat(e.message))}},el=async()=>{O(!0),J(null),V(null);try{if(F)throw Error("Please fix YAML errors before saving");let e=E.ZP.load(k)||{},a=Object.keys(e);if(a.length>0&&a[0]!==s)throw Error('Workspace name cannot be changed. Expected "'.concat(s,'".'));r?(await (0,n.MB)(s,u),V("Workspace created successfully!"),setTimeout(()=>{o.push("/workspaces/".concat(s))},1500)):(await (0,n.eA)(s,u),V("Workspace updated successfully!"),w(u),er())}catch(e){console.error("Error saving workspace:",e),J(e)}finally{O(!1)}},et=async()=>{q(e=>({...e,deleting:!0,error:null}));try{await (0,n.zl)(s),V("Workspace deleted successfully!"),setTimeout(()=>{o.push("/workspaces")},1500)}catch(e){console.error("Error deleting workspace:",e),q(s=>({...s,deleting:!1,error:e}))}},en=()=>{q({showDialog:!1,deleting:!1,error:null})},ec=async()=>{await Promise.all([es(),er()])};if(!o.isReady)return(0,a.jsx)("div",{children:"Loading..."});let ei=r?"Create New Workspace | SkyPilot Dashboard":"Workspace: ".concat(s," | SkyPilot Dashboard");return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(x(),{children:(0,a.jsx)("title",{children:ei})}),(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)(d(),{href:"/workspaces",className:"text-sky-blue hover:underline",children:"Workspaces"}),(0,a.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,a.jsx)(d(),{href:r?"/workspace/new":"/workspaces/".concat(s),className:"text-sky-blue hover:underline",children:r?"New Workspace":s}),T&&(0,a.jsx)("span",{className:"ml-3 px-2 py-1 bg-yellow-100 text-yellow-800 text-xs rounded",children:"Unsaved changes"})]}),(0,a.jsxs)("div",{className:"text-sm flex items-center",children:[(R||z||$)&&(0,a.jsxs)("div",{className:"flex items-center mr-4",children:[(0,a.jsx)(g.Z,{size:15,className:"mt-0"}),(0,a.jsx)("span",{className:"ml-2 text-gray-500",children:z?"Saving...":"Loading..."})]}),(0,a.jsxs)("div",{className:"flex items-center space-x-4",children:[!r&&(0,a.jsxs)("button",{onClick:ec,disabled:R||z||$,className:"text-sky-blue hover:text-sky-blue-bright font-medium inline-flex items-center",children:[(0,a.jsx)(j.Z,{className:"w-4 h-4 mr-1.5"}),"Refresh"]}),!r&&"default"!==s&&(0,a.jsxs)("button",{onClick:()=>q({...G,showDialog:!0}),disabled:G.deleting||z,className:"text-red-600 hover:text-red-700 font-medium inline-flex items-center",children:[(0,a.jsx)(y.Z,{className:"w-4 h-4 mr-1.5"}),"Delete"]})]})]})]}),R?(0,a.jsxs)("div",{className:"flex justify-center items-center py-12",children:[(0,a.jsx)(g.Z,{size:24,className:"mr-2"}),(0,a.jsx)("span",{className:"text-gray-500",children:"Loading workspace configuration..."})]}):(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsx)(L.X,{error:Y,title:"Error",onDismiss:()=>J(null)}),(0,a.jsx)(M,{message:I}),(0,a.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[!r&&(0,a.jsx)("div",{className:"lg:col-span-1",children:(0,a.jsxs)(m.Zb,{className:"h-full",children:[(0,a.jsx)(m.Ol,{children:(0,a.jsx)(m.ll,{className:"text-base font-normal",children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"font-semibold",children:"Workspace:"})," ",s]}),(0,a.jsx)(W,{isPrivate:!0===b.private})]})})}),(0,a.jsxs)(m.aY,{className:"text-sm pb-2 flex-1",children:[(0,a.jsxs)("div",{className:"py-2 flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center text-gray-600",children:[(0,a.jsx)(C.QT,{className:"w-4 h-4 mr-2 text-gray-500"}),(0,a.jsx)("span",{children:"Clusters (Running / Total)"})]}),(0,a.jsx)("span",{className:"font-normal text-gray-800",children:$?"...":"".concat(K.runningClusterCount," / ").concat(K.totalClusterCount)})]}),(0,a.jsxs)("div",{className:"py-2 flex items-center justify-between border-t border-gray-100",children:[(0,a.jsxs)("div",{className:"flex items-center text-gray-600",children:[(0,a.jsx)(C.Vp,{className:"w-4 h-4 mr-2 text-gray-500"}),(0,a.jsx)("span",{children:"Managed Jobs"})]}),(0,a.jsx)("span",{className:"font-normal text-gray-800",children:$?"...":K.managedJobsCount})]})]}),(0,a.jsxs)("div",{className:"px-6 pb-6 text-sm pt-3",children:[(0,a.jsx)("h4",{className:"mb-2 text-xs text-gray-500 tracking-wider",children:"Enabled Infra"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-x-4 gap-y-1",children:$?(0,a.jsx)("span",{className:"text-gray-500",children:"Loading..."}):K.clouds.length>0?K.clouds.map(e=>(0,a.jsxs)("div",{className:"flex items-center text-gray-700",children:[(0,a.jsx)(C.Ye,{className:"w-3.5 h-3.5 mr-1.5 text-green-500"}),(0,a.jsx)("span",{children:e})]},e)):(0,a.jsx)("span",{className:"text-gray-500 italic",children:"No enabled infrastructure"})}),(0,a.jsx)("div",{className:"mt-4",children:(0,a.jsx)(A,{workspaceName:s,config:b,enabledClouds:K.clouds})}),(0,a.jsx)(P,{workspaceConfig:b,allUsers:X})]})]})}),(0,a.jsx)("div",{className:r?"lg:col-span-3":"lg:col-span-2",children:(0,a.jsxs)(m.Zb,{className:"h-full flex flex-col",children:[(0,a.jsx)(m.Ol,{children:(0,a.jsx)(m.ll,{className:"text-base font-normal",children:r?"New Workspace YAML":"Edit Workspace YAML"})}),(0,a.jsx)(m.aY,{className:"flex-1 flex flex-col",children:(0,a.jsxs)("div",{className:"space-y-4 flex-1 flex flex-col",children:[F&&(0,a.jsx)(L.X,{error:F,onDismiss:()=>H(null)}),(0,a.jsxs)("div",{className:"flex-1 flex flex-col",children:[(0,a.jsxs)("p",{className:"text-sm text-gray-600 mb-3",children:["Configure infra-specific settings for this workspace. Leave empty to use all accessible infrastructure. Refer to"," ",(0,a.jsx)("a",{href:"https://docs.skypilot.co/en/latest/admin/workspaces.html#configuration",target:"_blank",rel:"noopener noreferrer",className:"text-blue-600",children:"SkyPilot Docs"})," ","for more details."]}),(0,a.jsxs)("div",{className:"mb-4",children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 mb-2",children:"Example configuration:"}),(0,a.jsx)("div",{className:"p-3 bg-gray-50 border rounded-lg",children:(0,a.jsx)("pre",{className:"text-xs font-mono text-gray-600 whitespace-pre-wrap",children:"".concat(s||"my-workspace",":\n private: true\n allowed_users:\n - user1@mydomain.com\n - user2@mydomain.com\n gcp:\n project_id: xxx\n disabled: false\n kubernetes:\n allowed_contexts:\n - context-1")})})]}),(0,a.jsx)(f.g,{value:k,onChange:e=>ea(e.target.value),className:"font-mono text-sm flex-1 resize-none",style:{minHeight:"350px"},spellCheck:!1,placeholder:"# Enter workspace configuration in YAML format"}),(0,a.jsx)("div",{className:"flex justify-end space-x-3 pt-3 border-gray-200",children:(0,a.jsxs)(h.z,{onClick:el,disabled:z||F||R,className:"inline-flex items-center bg-sky-600 hover:bg-sky-700 text-white",children:[(0,a.jsx)(N.Z,{className:"w-4 h-4 mr-1.5"}),z?"Applying...":"Apply"]})})]})]})})]})})]})]}),(0,a.jsx)(v.Vq,{open:G.showDialog,onOpenChange:en,children:(0,a.jsxs)(v.cZ,{className:"sm:max-w-md",children:[(0,a.jsxs)(v.fK,{className:"",children:[(0,a.jsx)(v.$N,{children:"Delete Workspace"}),(0,a.jsxs)(v.Be,{children:['Are you sure you want to delete workspace "',s,'"? This action cannot be undone.']})]}),G.error&&(0,a.jsx)(L.X,{error:G.error,title:"Deletion Failed",onDismiss:()=>q(e=>({...e,error:null}))}),(0,a.jsxs)(v.cN,{className:"",children:[(0,a.jsx)(h.z,{variant:"outline",onClick:en,disabled:G.deleting,children:"Cancel"}),(0,a.jsx)(h.z,{variant:"destructive",onClick:et,disabled:G.deleting,children:G.deleting?"Deleting...":"Delete"})]})]})})]})]})}}}]);
@@ -0,0 +1,30 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1559,2369],{27325:function(e,t,n){n.d(t,{Z:function(){return r}});/**
2
+ * @license lucide-react v0.407.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */let r=(0,n(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"}]])},6521:function(e,t,n){n.d(t,{Z:function(){return r}});/**
7
+ * @license lucide-react v0.407.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */let r=(0,n(60998).Z)("FileSearch",[["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M4.268 21a2 2 0 0 0 1.727 1H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3",key:"ms7g94"}],["path",{d:"m9 18-1.5-1.5",key:"1j6qii"}],["circle",{cx:"5",cy:"14",r:"3",key:"ufru5t"}]])},53610:function(e,t,n){n.d(t,{Z:function(){return r}});/**
12
+ * @license lucide-react v0.407.0 - ISC
13
+ *
14
+ * This source code is licensed under the ISC license.
15
+ * See the LICENSE file in the root directory of this source tree.
16
+ */let r=(0,n(60998).Z)("MonitorPlay",[["path",{d:"M10 7.75a.75.75 0 0 1 1.142-.638l3.664 2.249a.75.75 0 0 1 0 1.278l-3.664 2.25a.75.75 0 0 1-1.142-.64z",key:"1pctta"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"M8 21h8",key:"1ev6f3"}],["rect",{x:"2",y:"3",width:"20",height:"14",rx:"2",key:"x3v2xh"}]])},23293:function(e,t,n){n.d(t,{Z:function(){return r}});/**
17
+ * @license lucide-react v0.407.0 - ISC
18
+ *
19
+ * This source code is licensed under the ISC license.
20
+ * See the LICENSE file in the root directory of this source tree.
21
+ */let r=(0,n(60998).Z)("RefreshCcw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]])},13626:function(e,t,n){n.d(t,{Z:function(){return r}});/**
22
+ * @license lucide-react v0.407.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ */let r=(0,n(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"}]])},6327:function(e,t,n){n.d(t,{x8:function(){return eu},VY:function(){return eo},dk:function(){return ea},aV:function(){return er},h_:function(){return en},fC:function(){return ee},Dx:function(){return ei},xz:function(){return et}});var r=n(67294),o=n(36206),i=n(28771),a=n(25360),u=n(91276),l=n(77342),s=n(46063),c=n(95420),d=n(42651),f=n(9981),p=e=>{let t,n;let{present:o,children:a}=e,u=function(e){var t,n;let[o,i]=r.useState(),a=r.useRef(null),u=r.useRef(e),l=r.useRef("none"),[s,c]=(t=e?"mounted":"unmounted",n={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},r.useReducer((e,t)=>n[e][t]??e,t));return r.useEffect(()=>{let e=m(a.current);l.current="mounted"===s?e:"none"},[s]),(0,f.b)(()=>{let t=a.current,n=u.current;if(n!==e){let r=l.current,o=m(t);e?c("MOUNT"):"none"===o||t?.display==="none"?c("UNMOUNT"):n&&r!==o?c("ANIMATION_OUT"):c("UNMOUNT"),u.current=e}},[e,c]),(0,f.b)(()=>{if(o){let e;let t=o.ownerDocument.defaultView??window,n=n=>{let r=m(a.current).includes(n.animationName);if(n.target===o&&r&&(c("ANIMATION_END"),!u.current)){let n=o.style.animationFillMode;o.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===o.style.animationFillMode&&(o.style.animationFillMode=n)})}},r=e=>{e.target===o&&(l.current=m(a.current))};return o.addEventListener("animationstart",r),o.addEventListener("animationcancel",n),o.addEventListener("animationend",n),()=>{t.clearTimeout(e),o.removeEventListener("animationstart",r),o.removeEventListener("animationcancel",n),o.removeEventListener("animationend",n)}}c("ANIMATION_END")},[o,c]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:r.useCallback(e=>{a.current=e?getComputedStyle(e):null,i(e)},[])}}(o),l="function"==typeof a?a({present:u.isPresent}):r.Children.only(a),s=(0,i.e)(u.ref,(t=Object.getOwnPropertyDescriptor(l.props,"ref")?.get)&&"isReactWarning"in t&&t.isReactWarning?l.ref:(t=Object.getOwnPropertyDescriptor(l,"ref")?.get)&&"isReactWarning"in t&&t.isReactWarning?l.props.ref:l.props.ref||l.ref);return"function"==typeof a||u.isPresent?r.cloneElement(l,{ref:s}):null};function m(e){return e?.animationName||"none"}p.displayName="Presence";var g=n(75320),h=n(27552),y=n(6223),v=n(23541),M=n(88426),N=n(85893),x="Dialog",[D,w]=(0,a.b)(x),[R,O]=D(x),b=e=>{let{__scopeDialog:t,children:n,open:o,defaultOpen:i,onOpenChange:a,modal:s=!0}=e,c=r.useRef(null),d=r.useRef(null),[f,p]=(0,l.T)({prop:o,defaultProp:i??!1,onChange:a,caller:x});return(0,N.jsx)(R,{scope:t,triggerRef:c,contentRef:d,contentId:(0,u.M)(),titleId:(0,u.M)(),descriptionId:(0,u.M)(),open:f,onOpenChange:p,onOpenToggle:r.useCallback(()=>p(e=>!e),[p]),modal:s,children:n})};b.displayName=x;var k="DialogTrigger",I=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,a=O(k,n),u=(0,i.e)(t,a.triggerRef);return(0,N.jsx)(g.WV.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":K(a.open),...r,ref:u,onClick:(0,o.M)(e.onClick,a.onOpenToggle)})});I.displayName=k;var j="DialogPortal",[C,E]=D(j,{forceMount:void 0}),_=e=>{let{__scopeDialog:t,forceMount:n,children:o,container:i}=e,a=O(j,t);return(0,N.jsx)(C,{scope:t,forceMount:n,children:r.Children.map(o,e=>(0,N.jsx)(p,{present:n||a.open,children:(0,N.jsx)(d.h,{asChild:!0,container:i,children:e})}))})};_.displayName=j;var T="DialogOverlay",F=r.forwardRef((e,t)=>{let n=E(T,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=O(T,e.__scopeDialog);return i.modal?(0,N.jsx)(p,{present:r||i.open,children:(0,N.jsx)(P,{...o,ref:t})}):null});F.displayName=T;var A=(0,M.Z8)("DialogOverlay.RemoveScroll"),P=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=O(T,n);return(0,N.jsx)(y.Z,{as:A,allowPinchZoom:!0,shards:[o.contentRef],children:(0,N.jsx)(g.WV.div,{"data-state":K(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),W="DialogContent",Z=r.forwardRef((e,t)=>{let n=E(W,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=O(W,e.__scopeDialog);return(0,N.jsx)(p,{present:r||i.open,children:i.modal?(0,N.jsx)(U,{...o,ref:t}):(0,N.jsx)(V,{...o,ref:t})})});Z.displayName=W;var U=r.forwardRef((e,t)=>{let n=O(W,e.__scopeDialog),a=r.useRef(null),u=(0,i.e)(t,n.contentRef,a);return r.useEffect(()=>{let e=a.current;if(e)return(0,v.Ry)(e)},[]),(0,N.jsx)(L,{...e,ref:u,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,o.M)(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:(0,o.M)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey;(2===t.button||n)&&e.preventDefault()}),onFocusOutside:(0,o.M)(e.onFocusOutside,e=>e.preventDefault())})}),V=r.forwardRef((e,t)=>{let n=O(W,e.__scopeDialog),o=r.useRef(!1),i=r.useRef(!1);return(0,N.jsx)(L,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(o.current||n.triggerRef.current?.focus(),t.preventDefault()),o.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(o.current=!0,"pointerdown"!==t.detail.originalEvent.type||(i.current=!0));let r=t.target;n.triggerRef.current?.contains(r)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&i.current&&t.preventDefault()}})}),L=r.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:o,onOpenAutoFocus:a,onCloseAutoFocus:u,...l}=e,d=O(W,n),f=r.useRef(null),p=(0,i.e)(t,f);return(0,h.EW)(),(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(c.M,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:a,onUnmountAutoFocus:u,children:(0,N.jsx)(s.XB,{role:"dialog",id:d.contentId,"aria-describedby":d.descriptionId,"aria-labelledby":d.titleId,"data-state":K(d.open),...l,ref:p,onDismiss:()=>d.onOpenChange(!1)})}),(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(J,{titleId:d.titleId}),(0,N.jsx)(Q,{contentRef:f,descriptionId:d.descriptionId})]})]})}),S="DialogTitle",q=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=O(S,n);return(0,N.jsx)(g.WV.h2,{id:o.titleId,...r,ref:t})});q.displayName=S;var $="DialogDescription",z=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=O($,n);return(0,N.jsx)(g.WV.p,{id:o.descriptionId,...r,ref:t})});z.displayName=$;var B="DialogClose",H=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=O(B,n);return(0,N.jsx)(g.WV.button,{type:"button",...r,ref:t,onClick:(0,o.M)(e.onClick,()=>i.onOpenChange(!1))})});function K(e){return e?"open":"closed"}H.displayName=B;var X="DialogTitleWarning",[Y,G]=(0,a.k)(X,{contentName:W,titleName:S,docsSlug:"dialog"}),J=({titleId:e})=>{let t=G(X),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
27
+
28
+ If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
29
+
30
+ For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return r.useEffect(()=>{e&&!document.getElementById(e)&&console.error(n)},[n,e]),null},Q=({contentRef:e,descriptionId:t})=>{let n=G("DialogDescriptionWarning"),o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${n.contentName}}.`;return r.useEffect(()=>{let n=e.current?.getAttribute("aria-describedby");t&&n&&!document.getElementById(t)&&console.warn(o)},[o,e,t]),null},ee=b,et=I,en=_,er=F,eo=Z,ei=q,ea=z,eu=H}}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1664],{56101:function(e,t){"use strict";var n,r,o,u;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ACTION_FAST_REFRESH:function(){return s},ACTION_NAVIGATE:function(){return f},ACTION_PREFETCH:function(){return i},ACTION_REFRESH:function(){return l},ACTION_RESTORE:function(){return a},ACTION_SERVER_ACTION:function(){return d},ACTION_SERVER_PATCH:function(){return c},PrefetchCacheEntryStatus:function(){return r},PrefetchKind:function(){return n},isThenable:function(){return p}});let l="refresh",f="navigate",a="restore",c="server-patch",i="prefetch",s="fast-refresh",d="server-action";function p(e){return e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof e.then}(o=n||(n={})).AUTO="auto",o.FULL="full",o.TEMPORARY="temporary",(u=r||(r={})).fresh="fresh",u.reusable="reusable",u.expired="expired",u.stale="stale",("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},27670:function(e,t,n){"use strict";function r(e,t,n,r){return!1}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getDomainLocale",{enumerable:!0,get:function(){return r}}),n(51297),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},24116:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return O}});let r=n(10260),o=n(85893),u=r._(n(67294)),l=n(69975),f=n(92712),a=n(28547),c=n(84350),i=n(38109),s=n(54494),d=n(55716),p=n(388),y=n(27670),b=n(6220),h=n(56101),v=new Set;function _(e,t,n,r,o,u){if(u||(0,f.isLocalURL)(t)){if(!r.bypassPrefetchedCheck){let o=t+"%"+n+"%"+(void 0!==r.locale?r.locale:"locale"in e?e.locale:void 0);if(v.has(o))return;v.add(o)}(async()=>u?e.prefetch(t,o):e.prefetch(t,n,r))().catch(e=>{})}}function C(e){return"string"==typeof e?e:(0,a.formatUrl)(e)}let O=u.default.forwardRef(function(e,t){let n,r;let{href:a,as:v,children:O,prefetch:g=null,passHref:E,replace:j,shallow:P,scroll:T,locale:M,onClick:R,onMouseEnter:m,onTouchStart:A,legacyBehavior:k=!1,...I}=e;n=O,k&&("string"==typeof n||"number"==typeof n)&&(n=(0,o.jsx)("a",{children:n}));let x=u.default.useContext(s.RouterContext),L=u.default.useContext(d.AppRouterContext),S=null!=x?x:L,N=!x,U=!1!==g,w=null===g?h.PrefetchKind.AUTO:h.PrefetchKind.FULL,{href:K,as:F}=u.default.useMemo(()=>{if(!x){let e=C(a);return{href:e,as:v?C(v):e}}let[e,t]=(0,l.resolveHref)(x,a,!0);return{href:e,as:v?(0,l.resolveHref)(x,v):t||e}},[x,a,v]),H=u.default.useRef(K),D=u.default.useRef(F);k&&(r=u.default.Children.only(n));let V=k?r&&"object"==typeof r&&r.ref:t,[q,z,B]=(0,p.useIntersection)({rootMargin:"200px"}),G=u.default.useCallback(e=>{(D.current!==F||H.current!==K)&&(B(),D.current=F,H.current=K),q(e),V&&("function"==typeof V?V(e):"object"==typeof V&&(V.current=e))},[F,V,K,B,q]);u.default.useEffect(()=>{S&&z&&U&&_(S,K,F,{locale:M},{kind:w},N)},[F,K,z,M,U,null==x?void 0:x.locale,S,N,w]);let Y={ref:G,onClick(e){k||"function"!=typeof R||R(e),k&&r.props&&"function"==typeof r.props.onClick&&r.props.onClick(e),S&&!e.defaultPrevented&&function(e,t,n,r,o,l,a,c,i){let{nodeName:s}=e.currentTarget;if("A"===s.toUpperCase()&&(function(e){let t=e.currentTarget.getAttribute("target");return t&&"_self"!==t||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e)||!i&&!(0,f.isLocalURL)(n)))return;e.preventDefault();let d=()=>{let e=null==a||a;"beforePopState"in t?t[o?"replace":"push"](n,r,{shallow:l,locale:c,scroll:e}):t[o?"replace":"push"](r||n,{scroll:e})};i?u.default.startTransition(d):d()}(e,S,K,F,j,P,T,M,N)},onMouseEnter(e){k||"function"!=typeof m||m(e),k&&r.props&&"function"==typeof r.props.onMouseEnter&&r.props.onMouseEnter(e),S&&(U||!N)&&_(S,K,F,{locale:M,priority:!0,bypassPrefetchedCheck:!0},{kind:w},N)},onTouchStart:function(e){k||"function"!=typeof A||A(e),k&&r.props&&"function"==typeof r.props.onTouchStart&&r.props.onTouchStart(e),S&&(U||!N)&&_(S,K,F,{locale:M,priority:!0,bypassPrefetchedCheck:!0},{kind:w},N)}};if((0,c.isAbsoluteUrl)(F))Y.href=F;else if(!k||E||"a"===r.type&&!("href"in r.props)){let e=void 0!==M?M:null==x?void 0:x.locale,t=(null==x?void 0:x.isLocaleDomain)&&(0,y.getDomainLocale)(F,e,null==x?void 0:x.locales,null==x?void 0:x.domainLocales);Y.href=t||(0,b.addBasePath)((0,i.addLocale)(F,e,null==x?void 0:x.defaultLocale))}return k?u.default.cloneElement(r,Y):(0,o.jsx)("a",{...I,...Y,children:n})});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},388:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useIntersection",{enumerable:!0,get:function(){return a}});let r=n(67294),o=n(40460),u="function"==typeof IntersectionObserver,l=new Map,f=[];function a(e){let{rootRef:t,rootMargin:n,disabled:a}=e,c=a||!u,[i,s]=(0,r.useState)(!1),d=(0,r.useRef)(null),p=(0,r.useCallback)(e=>{d.current=e},[]);return(0,r.useEffect)(()=>{if(u){if(c||i)return;let e=d.current;if(e&&e.tagName)return function(e,t,n){let{id:r,observer:o,elements:u}=function(e){let t;let n={root:e.root||null,margin:e.rootMargin||""},r=f.find(e=>e.root===n.root&&e.margin===n.margin);if(r&&(t=l.get(r)))return t;let o=new Map;return t={id:n,observer:new IntersectionObserver(e=>{e.forEach(e=>{let t=o.get(e.target),n=e.isIntersecting||e.intersectionRatio>0;t&&n&&t(n)})},e),elements:o},f.push(n),l.set(n,t),t}(n);return u.set(e,t),o.observe(e),function(){if(u.delete(e),o.unobserve(e),0===u.size){o.disconnect(),l.delete(r);let e=f.findIndex(e=>e.root===r.root&&e.margin===r.margin);e>-1&&f.splice(e,1)}}}(e,e=>e&&s(e),{root:null==t?void 0:t.current,rootMargin:n})}else if(!i){let e=(0,o.requestIdleCallback)(()=>s(!0));return()=>(0,o.cancelIdleCallback)(e)}},[c,n,t,i,d.current]),[p,i,(0,r.useCallback)(()=>{s(!1)},[])]}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},41664:function(e,t,n){e.exports=n(24116)}}]);
@@ -0,0 +1,6 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1871,2003],{39037:function(e,s,t){t.r(s),t.d(s,{ClusterTable:function(){return _},Clusters:function(){return O},Status2Actions:function(){return z},enabledActions:function(){return V},handleVSCodeConnection:function(){return H}});var r=t(85893),l=t(67294),a=t(11163),n=t(55739),c=t(36989),i=t(41664),o=t.n(i),u=t(30803),d=t(37673),h=t(68764),x=t(23266),p=t(17324),m=t(53081),f=t(94545),j=t(13626),v=t(60998);/**
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 g=(0,v.Z)("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]),w=(0,v.Z)("SquareCode",[["path",{d:"M10 9.5 8 12l2 2.5",key:"3mjy60"}],["path",{d:"m14 9.5 2 2.5-2 2.5",key:"1bir2l"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);t(6135);var b=t(92128),y=t(99307),k=t(23001),N=t(88950),C=t(6378),S=t(36856);t(1272);var L=t(20546);let M=[{label:"Status",value:"status"},{label:"Cluster",value:"cluster"},{label:"User",value:"user"},{label:"Workspace",value:"workspace"},{label:"Infra",value:"infra"}],I=(e,s)=>{let t="",r="";return e>=0&&(t=e+"m",r=" "),s&&(t+="".concat(r,"(down)")),""===t&&(t="-"),t},R=(e,s)=>{if(e&&e.includes("@")){let t=e.split("@")[0];return s&&s!==t?"".concat(t," (").concat(s,")"):t}let t=e||s||"N/A";return s&&s!==t?"".concat(t," (").concat(s,")"):t},E=e=>{if(!e||0===e)return"-";let s=e=Math.floor(e),t="",r=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(s>=e.value&&r<2){let l=Math.floor(s/e.value);t+="".concat(l).concat(e.label," "),s%=e.value,r++}return t.trim()||"0s"};function O(){let e=(0,a.useRouter)(),[s,t]=(0,l.useState)(!1),i=l.useRef(null),[u,d]=(0,l.useState)(!1),[h,f]=(0,l.useState)(!1),[v,g]=(0,l.useState)(null),[w,y]=(0,l.useState)(!1),N=(0,k.X)(),[L,I]=(0,l.useState)([]),[E,O]=(0,l.useState)({status:[],cluster:[],user:[],workspace:[],infra:[]});(0,l.useEffect)(()=>{e.isReady&&F()},[e.isReady]),(0,l.useEffect)(()=>{(async()=>{try{await S.ZP.preloadForPage("clusters");let e=await C.default.get(p.fX),s=Object.keys(e),t=await C.default.get(x.getClusters),r=[...new Set(t.map(e=>e.workspace||"default").filter(e=>e))],l=new Set(s);r.includes("default")&&l.has("default"),r.forEach(e=>l.add(e));let a=await C.default.get(m.R),n=[...new Set(t.map(e=>({userId:e.user_hash||e.user,username:e.user})).filter(e=>e.userId)).values()],c=new Map;a.forEach(e=>{c.set(e.userId,{userId:e.userId,username:e.username,display:R(e.username,e.userId)})}),n.forEach(e=>{c.has(e.userId)||c.set(e.userId,{userId:e.userId,username:e.username,display:R(e.username,e.userId)})})}catch(e){console.error("Error fetching data for filters:",e)}})()},[]);let H=s=>{let t={...e.query},r=[],l=[],a=[];s.map((e,s)=>{var t;r.push(null!==(t=e.property.toLowerCase())&&void 0!==t?t:""),l.push(e.operator),a.push(e.value)}),t.property=r,t.operator=l,t.value=a,e.replace({pathname:e.pathname,query:t},void 0,{shallow:!0})},F=()=>{let s={...e.query},t=s.property,r=s.operator,l=s.value;if(void 0===t)return;let a=[],n=Array.isArray(t)?t.length:1,c=new Map;if(c.set("",""),c.set("status","Status"),c.set("cluster","Cluster"),c.set("user","User"),c.set("workspace","Workspace"),c.set("infra","Infra"),1===n)a.push({property:c.get(t),operator:r,value:l});else for(let e=0;e<n;e++)a.push({property:c.get(t[e]),operator:r[e],value:l[e]});I(a)};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mb-1 min-h-[20px]",children:[(0,r.jsx)("div",{className:"flex items-center gap-2",children:(0,r.jsx)(o(),{href:"/clusters",className:"text-sky-blue hover:underline leading-none text-base",children:"Sky Clusters"})}),(0,r.jsx)("div",{className:"w-full sm:w-auto",children:(0,r.jsx)(A,{propertyList:M,valueList:E,setFilters:I,updateURLParams:H,placeholder:"Filter clusters"})}),(0,r.jsxs)("div",{className:"flex items-center gap-2 ml-auto",children:[(0,r.jsxs)("label",{className:"flex items-center cursor-pointer",children:[(0,r.jsx)("input",{type:"checkbox",checked:w,onChange:e=>y(e.target.checked),className:"sr-only"}),(0,r.jsx)("div",{className:"relative inline-flex h-5 w-9 items-center rounded-full transition-colors ".concat(w?"bg-sky-600":"bg-gray-300"),children:(0,r.jsx)("span",{className:"inline-block h-3 w-3 transform rounded-full bg-white transition-transform ".concat(w?"translate-x-5":"translate-x-1")})}),(0,r.jsx)("span",{className:"ml-2 text-sm text-gray-700",children:"Show history (Last 30 days)"})]}),s&&(0,r.jsxs)("div",{className:"flex items-center",children:[(0,r.jsx)(n.Z,{size:15,className:"mt-0"}),(0,r.jsx)("span",{className:"ml-2 text-gray-500 text-sm",children:"Loading..."})]}),(0,r.jsxs)("button",{onClick:()=>{C.default.invalidate(x.getClusters),C.default.invalidate(x.uR),C.default.invalidate(p.fX),C.default.invalidate(m.R),i.current&&i.current()},disabled:s,className:"text-sky-blue hover:text-sky-blue-bright flex items-center",children:[(0,r.jsx)(j.Z,{className:"h-4 w-4 mr-1.5"}),!N&&(0,r.jsx)("span",{children:"Refresh"})]})]})]}),(0,r.jsx)(Z,{filters:L,setFilters:I,updateURLParams:H}),(0,r.jsx)(_,{refreshInterval:c.yc,setLoading:t,refreshDataRef:i,filters:L,showHistory:w,onOpenSSHModal:e=>{g(e),d(!0)},onOpenVSCodeModal:e=>{g(e),f(!0)},setOptionValues:O}),(0,r.jsx)(b.Oh,{isOpen:u,onClose:()=>d(!1),cluster:v}),(0,r.jsx)(b._R,{isOpen:h,onClose:()=>f(!1),cluster:v})]})}function _(e){let{refreshInterval:s,setLoading:t,refreshDataRef:a,filters:i,showHistory:p,onOpenSSHModal:m,onOpenVSCodeModal:j,setOptionValues:v}=e,[g,w]=(0,l.useState)([]),[b,k]=(0,l.useState)({key:null,direction:"ascending"}),[N,S]=(0,l.useState)(!1),[M,R]=(0,l.useState)(!0),[O,_]=(0,l.useState)(1),[H,F]=(0,l.useState)(10),V=e=>{let s={status:[],cluster:[],user:[],workspace:[],infra:[]},t=(e,s)=>{e.includes(s)||e.push(s)};return e.map(e=>{t(s.status,e.status),t(s.cluster,e.cluster),t(s.user,e.user),t(s.workspace,e.workspace),t(s.infra,e.infra)}),s},W=l.useCallback(async()=>{t(!0),S(!0);try{let e=await C.default.get(x.getClusters);if(p){let s=await C.default.get(x.uR),t=e.map(e=>({...e,isHistorical:!1})),r=s.map(e=>({...e,isHistorical:!0})),l=[...t];r.forEach(s=>{e.some(e=>(e.cluster||e.name)===(s.cluster||s.name))||l.push(s)}),v(V(l)),w(l)}else{let s=e.map(e=>({...e,isHistorical:!1}));v(V(s)),w(s)}}catch(e){console.error("Error fetching cluster data:",e),v(V([])),w([])}t(!1),S(!1),R(!1)},[t,p,v]),A=(e,s)=>{var t;let{property:r,operator:l,value:a}=s;if(!a)return!0;if(!r){let s=a.toLowerCase();return Object.values(e).some(e=>null==e?void 0:e.toString().toLowerCase().includes(s))}let n=null===(t=e[r.toLowerCase()])||void 0===t?void 0:t.toString().toLowerCase(),c=a.toString().toLowerCase();switch(l){case"=":return n===c;case":":return null==n?void 0:n.includes(c);default:return!0}},Z=l.useMemo(()=>{let e=0===i.length?g:g.filter(e=>{let s=null;for(let t=0;t<i.length;t++){let r=A(e,i[t]);s=null===s?r:s&&r}return s});return(0,f.R0)(e,b.key,b.direction)},[g,b,i]);l.useEffect(()=>{a&&(a.current=W)},[a,W]),(0,l.useEffect)(()=>{w([]);let e=!0;W();let t=setInterval(()=>{e&&W()},s);return()=>{e=!1,clearInterval(t)}},[s,W]),(0,l.useEffect)(()=>{_(1)},[g.length]);let q=e=>{let s="ascending";b.key===e&&"ascending"===b.direction&&(s="descending"),k({key:e,direction:s})},B=e=>b.key===e?"ascending"===b.direction?" ↑":" ↓":"",P=Math.ceil(Z.length/H),U=(O-1)*H,D=U+H,X=Z.slice(U,D);return(0,r.jsxs)("div",{children:[(0,r.jsx)(d.Zb,{children:(0,r.jsx)("div",{className:"overflow-x-auto rounded-lg",children:(0,r.jsxs)(h.iA,{className:"min-w-full",children:[(0,r.jsx)(h.xD,{children:(0,r.jsxs)(h.SC,{children:[(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>q("status"),children:["Status",B("status")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>q("cluster"),children:["Cluster",B("cluster")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>q("user"),children:["User",B("user")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>q("workspace"),children:["Workspace",B("workspace")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>q("infra"),children:["Infra",B("infra")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>q("resources_str"),children:["Resources",B("resources_str")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>q("time"),children:["Started",B("time")]}),p&&(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>q("duration"),children:["Duration",B("duration")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>q("autostop"),children:["Autostop",B("autostop")]}),(0,r.jsx)(h.ss,{className:"md:sticky md:right-0 md:bg-white",children:"Actions"})]})}),(0,r.jsx)(h.RM,{children:N&&M?(0,r.jsx)(h.SC,{children:(0,r.jsx)(h.pj,{colSpan:9,className:"text-center py-6 text-gray-500",children:(0,r.jsxs)("div",{className:"flex justify-center items-center",children:[(0,r.jsx)(n.Z,{size:20,className:"mr-2"}),(0,r.jsx)("span",{children:"Loading..."})]})})}):X.length>0?X.map((e,s)=>(0,r.jsxs)(h.SC,{children:[(0,r.jsx)(h.pj,{children:(0,r.jsx)(y.OE,{status:e.status})}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(o(),{href:"/clusters/".concat(e.isHistorical?e.cluster_hash:e.cluster||e.name),className:"text-blue-600",children:e.cluster||e.name})}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(L.H,{username:e.user,userHash:e.user_hash})}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(o(),{href:"/workspaces",className:"text-gray-700 hover:text-blue-600 hover:underline",children:e.workspace||"default"})}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(c.Md,{content:e.full_infra||e.infra,className:"text-sm text-muted-foreground",children:(0,r.jsxs)("span",{children:[(0,r.jsx)(o(),{href:"/infra",className:"text-blue-600 hover:underline",children:e.cloud}),e.infra.includes("(")&&(0,r.jsx)("span",{children:" "+e.infra.substring(e.infra.indexOf("("))})]})})}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(c.Md,{content:e.resources_str_full||e.resources_str,className:"text-sm text-muted-foreground",children:(0,r.jsx)("span",{children:e.resources_str})})}),(0,r.jsx)(h.pj,{children:(0,r.jsx)(c.Zg,{date:e.time})}),p&&(0,r.jsx)(h.pj,{children:E(e.duration)}),(0,r.jsx)(h.pj,{children:e.isHistorical?"-":I(e.autostop,e.to_down)}),(0,r.jsx)(h.pj,{className:"text-left md:sticky md:right-0 md:bg-white",children:!e.isHistorical&&(0,r.jsx)(z,{cluster:e.cluster,status:e.status,onOpenSSHModal:m,onOpenVSCodeModal:j})})]},s)):(0,r.jsx)(h.SC,{children:(0,r.jsx)(h.pj,{colSpan:9,className:"text-center py-6 text-gray-500",children:p?"No clusters found":"No active clusters"})})})]})})}),g.length>0&&(0,r.jsx)("div",{className:"flex justify-end items-center py-2 px-4 text-sm text-gray-700",children:(0,r.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,r.jsxs)("div",{className:"flex items-center",children:[(0,r.jsx)("span",{className:"mr-2",children:"Rows per page:"}),(0,r.jsxs)("div",{className:"relative inline-block",children:[(0,r.jsxs)("select",{value:H,onChange:e=>{F(parseInt(e.target.value,10)),_(1)},className:"py-1 pl-2 pr-6 appearance-none outline-none cursor-pointer border-none bg-transparent",style:{minWidth:"40px"},children:[(0,r.jsx)("option",{value:10,children:"10"}),(0,r.jsx)("option",{value:30,children:"30"}),(0,r.jsx)("option",{value:50,children:"50"}),(0,r.jsx)("option",{value:100,children:"100"}),(0,r.jsx)("option",{value:200,children:"200"})]}),(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4 text-gray-500 absolute right-0 top-1/2 transform -translate-y-1/2 pointer-events-none",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})]}),(0,r.jsx)("div",{children:"".concat(U+1," - ").concat(Math.min(D,Z.length)," of ").concat(Z.length)}),(0,r.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,r.jsx)(u.z,{variant:"ghost",size:"icon",onClick:()=>{_(e=>Math.max(e-1,1))},disabled:1===O,className:"text-gray-500 h-8 w-8 p-0",children:(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-left",children:(0,r.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,r.jsx)(u.z,{variant:"ghost",size:"icon",onClick:()=>{_(e=>Math.min(e+1,P))},disabled:O===P||0===P,className:"text-gray-500 h-8 w-8 p-0",children:(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"chevron-right",children:(0,r.jsx)("path",{d:"M9 18l6-6-6-6"})})})]})]})})]})}let H=(e,s)=>{s&&s(e)},F=(e,s)=>{s?s(e):window.open("ssh://".concat(e))},V=e=>"RUNNING"===e?["connect","VSCode"]:[],W={connect:(0,r.jsx)(g,{className:"w-4 h-4 text-gray-500 inline-block"}),VSCode:(0,r.jsx)(w,{className:"w-4 h-4 text-gray-500 inline-block"})};function z(e){let{withLabel:s=!1,cluster:t,status:l,onOpenSSHModal:a,onOpenVSCodeModal:n}=e,i=V(l),o=(0,k.X)(),u=e=>{switch(e){case"connect":F(t,a);break;case"VSCode":H(t,n);break;default:return}};return(0,r.jsx)(r.Fragment,{children:(0,r.jsx)("div",{className:"flex items-center space-x-4",children:Object.entries(W).map(e=>{let t,l,[a,n]=e;switch(a){case"connect":t="Connect",l="Connect with SSH";break;case"VSCode":t="VSCode",l="Open in VS Code"}return(s||(t=""),i.includes(a))?(0,r.jsx)(c.WH,{content:l,className:"capitalize text-sm text-muted-foreground",children:(0,r.jsxs)("button",{onClick:()=>u(a),className:"text-sky-blue hover:text-sky-blue-bright font-medium inline-flex items-center",children:[n,!o&&(0,r.jsx)("span",{className:"ml-1.5",children:t})]})},a):(0,r.jsx)(c.WH,{content:l,className:"capitalize text-sm text-muted-foreground",children:(0,r.jsxs)("span",{className:"opacity-30 flex items-center cursor-not-allowed text-sm",title:a,children:[n,!o&&(0,r.jsx)("span",{className:"ml-1.5",children:t})]})},a)})})})}let A=e=>{let{propertyList:s=[],valueList:t,setFilters:a,updateURLParams:n,placeholder:c="Filter clusters"}=e,i=(0,l.useRef)(null),o=(0,l.useRef)(null),[u,d]=(0,l.useState)(!1),[h,x]=(0,l.useState)(""),[p,m]=(0,l.useState)("status"),[f,j]=(0,l.useState)([]);(0,l.useEffect)(()=>{let e=e=>{o.current&&!o.current.contains(e.target)&&i.current&&!i.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[]),(0,l.useEffect)(()=>{let e=[];if(t&&"object"==typeof t)switch(p){case"status":e=t.status||[];break;case"user":e=t.user||[];break;case"cluster":e=t.cluster||[];break;case"workspace":e=t.workspace||[];break;case"infra":e=t.infra||[]}""!==h.trim()&&(e=e.filter(e=>e&&e.toString().toLowerCase().includes(h.toLowerCase()))),j(e)},[p,t,h]);let v=e=>{let t=s.find(s=>s.value===e);return t?t.label:e},g=e=>{a(s=>{let t=[...s,{property:v(p),operator:":",value:e}];return n(t),t}),d(!1),x(""),i.current.focus()};return(0,r.jsxs)("div",{className:"flex flex-row border border-gray-300 rounded-md overflow-visible",children:[(0,r.jsx)("div",{className:"border-r border-gray-300 flex-shrink-0",children:(0,r.jsxs)(N.Ph,{onValueChange:m,value:p,children:[(0,r.jsx)(N.i4,{"aria-label":"Filter Property",className:"focus:ring-0 focus:ring-offset-0 border-none rounded-l-md rounded-r-none w-20 sm:w-24 md:w-32 h-8 text-xs sm:text-sm",children:(0,r.jsx)(N.ki,{placeholder:"Status"})}),(0,r.jsx)(N.Bw,{children:s.map((e,s)=>(0,r.jsx)(N.Ql,{value:e.value,children:e.label},"property-item-".concat(s)))})]})}),(0,r.jsxs)("div",{className:"relative flex-1",children:[(0,r.jsx)("input",{type:"text",ref:i,placeholder:c,value:h,onChange:e=>{x(e.target.value),u||d(!0)},onFocus:()=>{d(!0)},onKeyDown:e=>{"Enter"===e.key&&""!==h.trim()?(a(e=>{let s=[...e,{property:v(p),operator:":",value:h}];return n(s),s}),x(""),d(!1)):"Escape"===e.key&&(d(!1),i.current.blur())},className:"h-8 w-full sm:w-96 px-3 pr-8 text-sm border-none rounded-l-none rounded-r-md focus:ring-0 focus:outline-none",autoComplete:"off"}),h&&(0,r.jsx)("button",{onClick:()=>{x(""),d(!1)},className:"absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600",title:"Clear filter",tabIndex:-1,children:(0,r.jsx)("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})}),u&&f.length>0&&(0,r.jsx)("div",{ref:o,className:"absolute z-50 mt-1 w-full bg-white border border-gray-200 rounded-md shadow-lg max-h-60 overflow-y-auto",style:{zIndex:9999},children:f.map((e,s)=>(0,r.jsx)("div",{className:"px-3 py-2 cursor-pointer hover:bg-gray-50 text-sm ".concat(s!==f.length-1?"border-b border-gray-100":""),onClick:()=>g(e),children:(0,r.jsx)("span",{className:"text-sm text-gray-700",children:e})},"".concat(e,"-").concat(s)))})]})]})},Z=e=>{let{filters:s=[],setFilters:t,updateURLParams:l}=e,a=e=>{t(s=>{let t=s.filter((s,t)=>t!==e);return l(t),t})};return(0,r.jsx)(r.Fragment,{children:(0,r.jsx)("div",{className:"flex items-center gap-4 py-2 px-2",children:(0,r.jsxs)("div",{className:"flex flex-wrap items-content gap-2",children:[s.map((e,s)=>(0,r.jsx)(q,{filter:e,onRemove:()=>a(s)},"filteritem-".concat(s))),s.length>0&&(0,r.jsx)(r.Fragment,{children:(0,r.jsx)("button",{onClick:()=>{l([]),t([])},className:"rounded-full px-4 py-1 text-sm text-gray-700 bg-gray-200 hover:bg-gray-300",children:"Clear filters"})})]})})})},q=e=>{let{filter:s,onRemove:t}=e;return(0,r.jsx)(r.Fragment,{children:(0,r.jsxs)("div",{className:"flex items-center text-blue-600 bg-blue-100 px-1 py-1 rounded-full text-sm",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1 px-2",children:[(0,r.jsx)("span",{children:"".concat(s.property," ")}),(0,r.jsx)("span",{children:"".concat(s.operator," ")}),(0,r.jsx)("span",{children:" ".concat(s.value)})]}),(0,r.jsx)("button",{onClick:()=>t(),className:"p-0.5 ml-1 transform text-gray-400 hover:text-gray-600 bg-blue-500 hover:bg-blue-600 rounded-full flex flex-col items-center",title:"Clear filter",children:(0,r.jsx)("svg",{className:"h-3 w-3",fill:"none",stroke:"white",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:5,d:"M6 18L18 6M6 6l12 12"})})})]})})}},12003:function(e,s,t){t.d(s,{j:function(){return n}});var r=t(90512);let l=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,a=r.W,n=(e,s)=>t=>{var r;if((null==s?void 0:s.variants)==null)return a(e,null==t?void 0:t.class,null==t?void 0:t.className);let{variants:n,defaultVariants:c}=s,i=Object.keys(n).map(e=>{let s=null==t?void 0:t[e],r=null==c?void 0:c[e];if(null===s)return null;let a=l(s)||l(r);return n[e][a]}),o=t&&Object.entries(t).reduce((e,s)=>{let[t,r]=s;return void 0===r||(e[t]=r),e},{});return a(e,i,null==s?void 0:null===(r=s.compoundVariants)||void 0===r?void 0:r.reduce((e,s)=>{let{class:t,className:r,...l}=s;return Object.entries(l).every(e=>{let[s,t]=e;return Array.isArray(t)?t.includes({...c,...o}[s]):({...c,...o})[s]===t})?[...e,t,r]:e},[]),null==t?void 0:t.class,null==t?void 0:t.className)}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2003],{12003:function(l,e,n){n.d(e,{j:function(){return s}});var r=n(90512);let u=l=>"boolean"==typeof l?`${l}`:0===l?"0":l,t=r.W,s=(l,e)=>n=>{var r;if((null==e?void 0:e.variants)==null)return t(l,null==n?void 0:n.class,null==n?void 0:n.className);let{variants:s,defaultVariants:i}=e,a=Object.keys(s).map(l=>{let e=null==n?void 0:n[l],r=null==i?void 0:i[l];if(null===e)return null;let t=u(e)||u(r);return s[l][t]}),c=n&&Object.entries(n).reduce((l,e)=>{let[n,r]=e;return void 0===r||(l[n]=r),l},{});return t(l,a,null==e?void 0:null===(r=e.compoundVariants)||void 0===r?void 0:r.reduce((l,e)=>{let{class:n,className:r,...u}=e;return Object.entries(u).every(l=>{let[e,n]=l;return Array.isArray(n)?n.includes({...i,...c}[e]):({...i,...c})[e]===n})?[...l,n,r]:l},[]),null==n?void 0:n.class,null==n?void 0:n.className)}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2350],{32350:function(n,r,u){u.d(r,{cn:function(){return c}});var e=u(90512),t=u(98388);function c(){for(var n=arguments.length,r=Array(n),u=0;u<n;u++)r[u]=arguments[u];return(0,t.m6)((0,e.W)(r))}}}]);
@@ -0,0 +1,15 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2369],{27325:function(e,t,n){n.d(t,{Z:function(){return r}});/**
2
+ * @license lucide-react v0.407.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */let r=(0,n(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,n){n.d(t,{Z:function(){return r}});/**
7
+ * @license lucide-react v0.407.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */let r=(0,n(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"}]])},6327:function(e,t,n){n.d(t,{x8:function(){return eu},VY:function(){return eo},dk:function(){return ea},aV:function(){return er},h_:function(){return en},fC:function(){return ee},Dx:function(){return ei},xz:function(){return et}});var r=n(67294),o=n(36206),i=n(28771),a=n(25360),u=n(91276),l=n(77342),s=n(46063),c=n(95420),d=n(42651),f=n(9981),p=e=>{let t,n;let{present:o,children:a}=e,u=function(e){var t,n;let[o,i]=r.useState(),a=r.useRef(null),u=r.useRef(e),l=r.useRef("none"),[s,c]=(t=e?"mounted":"unmounted",n={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},r.useReducer((e,t)=>n[e][t]??e,t));return r.useEffect(()=>{let e=m(a.current);l.current="mounted"===s?e:"none"},[s]),(0,f.b)(()=>{let t=a.current,n=u.current;if(n!==e){let r=l.current,o=m(t);e?c("MOUNT"):"none"===o||t?.display==="none"?c("UNMOUNT"):n&&r!==o?c("ANIMATION_OUT"):c("UNMOUNT"),u.current=e}},[e,c]),(0,f.b)(()=>{if(o){let e;let t=o.ownerDocument.defaultView??window,n=n=>{let r=m(a.current).includes(n.animationName);if(n.target===o&&r&&(c("ANIMATION_END"),!u.current)){let n=o.style.animationFillMode;o.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===o.style.animationFillMode&&(o.style.animationFillMode=n)})}},r=e=>{e.target===o&&(l.current=m(a.current))};return o.addEventListener("animationstart",r),o.addEventListener("animationcancel",n),o.addEventListener("animationend",n),()=>{t.clearTimeout(e),o.removeEventListener("animationstart",r),o.removeEventListener("animationcancel",n),o.removeEventListener("animationend",n)}}c("ANIMATION_END")},[o,c]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:r.useCallback(e=>{a.current=e?getComputedStyle(e):null,i(e)},[])}}(o),l="function"==typeof a?a({present:u.isPresent}):r.Children.only(a),s=(0,i.e)(u.ref,(t=Object.getOwnPropertyDescriptor(l.props,"ref")?.get)&&"isReactWarning"in t&&t.isReactWarning?l.ref:(t=Object.getOwnPropertyDescriptor(l,"ref")?.get)&&"isReactWarning"in t&&t.isReactWarning?l.props.ref:l.props.ref||l.ref);return"function"==typeof a||u.isPresent?r.cloneElement(l,{ref:s}):null};function m(e){return e?.animationName||"none"}p.displayName="Presence";var g=n(75320),y=n(27552),v=n(6223),N=n(23541),h=n(88426),D=n(85893),R="Dialog",[M,O]=(0,a.b)(R),[x,w]=M(R),b=e=>{let{__scopeDialog:t,children:n,open:o,defaultOpen:i,onOpenChange:a,modal:s=!0}=e,c=r.useRef(null),d=r.useRef(null),[f,p]=(0,l.T)({prop:o,defaultProp:i??!1,onChange:a,caller:R});return(0,D.jsx)(x,{scope:t,triggerRef:c,contentRef:d,contentId:(0,u.M)(),titleId:(0,u.M)(),descriptionId:(0,u.M)(),open:f,onOpenChange:p,onOpenToggle:r.useCallback(()=>p(e=>!e),[p]),modal:s,children:n})};b.displayName=R;var I="DialogTrigger",j=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,a=w(I,n),u=(0,i.e)(t,a.triggerRef);return(0,D.jsx)(g.WV.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":K(a.open),...r,ref:u,onClick:(0,o.M)(e.onClick,a.onOpenToggle)})});j.displayName=I;var C="DialogPortal",[E,_]=M(C,{forceMount:void 0}),T=e=>{let{__scopeDialog:t,forceMount:n,children:o,container:i}=e,a=w(C,t);return(0,D.jsx)(E,{scope:t,forceMount:n,children:r.Children.map(o,e=>(0,D.jsx)(p,{present:n||a.open,children:(0,D.jsx)(d.h,{asChild:!0,container:i,children:e})}))})};T.displayName=C;var A="DialogOverlay",F=r.forwardRef((e,t)=>{let n=_(A,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=w(A,e.__scopeDialog);return i.modal?(0,D.jsx)(p,{present:r||i.open,children:(0,D.jsx)(P,{...o,ref:t})}):null});F.displayName=A;var k=(0,h.Z8)("DialogOverlay.RemoveScroll"),P=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=w(A,n);return(0,D.jsx)(v.Z,{as:k,allowPinchZoom:!0,shards:[o.contentRef],children:(0,D.jsx)(g.WV.div,{"data-state":K(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),W="DialogContent",U=r.forwardRef((e,t)=>{let n=_(W,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=w(W,e.__scopeDialog);return(0,D.jsx)(p,{present:r||i.open,children:i.modal?(0,D.jsx)(V,{...o,ref:t}):(0,D.jsx)(S,{...o,ref:t})})});U.displayName=W;var V=r.forwardRef((e,t)=>{let n=w(W,e.__scopeDialog),a=r.useRef(null),u=(0,i.e)(t,n.contentRef,a);return r.useEffect(()=>{let e=a.current;if(e)return(0,N.Ry)(e)},[]),(0,D.jsx)(L,{...e,ref:u,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,o.M)(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:(0,o.M)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey;(2===t.button||n)&&e.preventDefault()}),onFocusOutside:(0,o.M)(e.onFocusOutside,e=>e.preventDefault())})}),S=r.forwardRef((e,t)=>{let n=w(W,e.__scopeDialog),o=r.useRef(!1),i=r.useRef(!1);return(0,D.jsx)(L,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(o.current||n.triggerRef.current?.focus(),t.preventDefault()),o.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(o.current=!0,"pointerdown"!==t.detail.originalEvent.type||(i.current=!0));let r=t.target;n.triggerRef.current?.contains(r)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&i.current&&t.preventDefault()}})}),L=r.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:o,onOpenAutoFocus:a,onCloseAutoFocus:u,...l}=e,d=w(W,n),f=r.useRef(null),p=(0,i.e)(t,f);return(0,y.EW)(),(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(c.M,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:a,onUnmountAutoFocus:u,children:(0,D.jsx)(s.XB,{role:"dialog",id:d.contentId,"aria-describedby":d.descriptionId,"aria-labelledby":d.titleId,"data-state":K(d.open),...l,ref:p,onDismiss:()=>d.onOpenChange(!1)})}),(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(J,{titleId:d.titleId}),(0,D.jsx)(Q,{contentRef:f,descriptionId:d.descriptionId})]})]})}),Z="DialogTitle",$=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=w(Z,n);return(0,D.jsx)(g.WV.h2,{id:o.titleId,...r,ref:t})});$.displayName=Z;var B="DialogDescription",q=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=w(B,n);return(0,D.jsx)(g.WV.p,{id:o.descriptionId,...r,ref:t})});q.displayName=B;var z="DialogClose",H=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=w(z,n);return(0,D.jsx)(g.WV.button,{type:"button",...r,ref:t,onClick:(0,o.M)(e.onClick,()=>i.onOpenChange(!1))})});function K(e){return e?"open":"closed"}H.displayName=z;var X="DialogTitleWarning",[Y,G]=(0,a.k)(X,{contentName:W,titleName:Z,docsSlug:"dialog"}),J=({titleId:e})=>{let t=G(X),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
12
+
13
+ If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
14
+
15
+ For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return r.useEffect(()=>{e&&!document.getElementById(e)&&console.error(n)},[n,e]),null},Q=({contentRef:e,descriptionId:t})=>{let n=G("DialogDescriptionWarning"),o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${n.contentName}}.`;return r.useEffect(()=>{let n=e.current?.getAttribute("aria-describedby");t&&n&&!document.getElementById(t)&&console.warn(o)},[o,e,t]),null},ee=b,et=j,en=T,er=F,eo=U,ei=$,ea=q,eu=H}}]);