skypilot-nightly 1.0.0.dev20250627__py3-none-any.whl → 1.0.0.dev20250628__py3-none-any.whl

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.
Files changed (105) hide show
  1. sky/__init__.py +2 -2
  2. sky/adaptors/kubernetes.py +7 -0
  3. sky/adaptors/nebius.py +2 -2
  4. sky/authentication.py +12 -5
  5. sky/backends/backend_utils.py +92 -26
  6. sky/check.py +5 -2
  7. sky/client/cli/command.py +38 -6
  8. sky/client/sdk.py +217 -167
  9. sky/client/service_account_auth.py +47 -0
  10. sky/clouds/aws.py +10 -4
  11. sky/clouds/azure.py +5 -2
  12. sky/clouds/cloud.py +5 -2
  13. sky/clouds/gcp.py +31 -18
  14. sky/clouds/kubernetes.py +54 -34
  15. sky/clouds/nebius.py +8 -2
  16. sky/clouds/ssh.py +5 -2
  17. sky/clouds/utils/aws_utils.py +10 -4
  18. sky/clouds/utils/gcp_utils.py +22 -7
  19. sky/clouds/utils/oci_utils.py +62 -14
  20. sky/dashboard/out/404.html +1 -1
  21. sky/dashboard/out/_next/static/{HudU4f4Xsy-cP51JvXSZ- → ZYLkkWSYZjJhLVsObh20y}/_buildManifest.js +1 -1
  22. sky/dashboard/out/_next/static/chunks/43-f38a531f6692f281.js +1 -0
  23. sky/dashboard/out/_next/static/chunks/601-111d06d9ded11d00.js +1 -0
  24. sky/dashboard/out/_next/static/chunks/{616-d6128fa9e7cae6e6.js → 616-50a620ac4a23deb4.js} +1 -1
  25. sky/dashboard/out/_next/static/chunks/691.fd9292250ab089af.js +21 -0
  26. sky/dashboard/out/_next/static/chunks/{785.dc2686c3c1235554.js → 785.3446c12ffdf3d188.js} +1 -1
  27. sky/dashboard/out/_next/static/chunks/871-e547295e7e21399c.js +6 -0
  28. sky/dashboard/out/_next/static/chunks/937.72796f7afe54075b.js +1 -0
  29. sky/dashboard/out/_next/static/chunks/938-0a770415b5ce4649.js +1 -0
  30. sky/dashboard/out/_next/static/chunks/982.d7bd80ed18cad4cc.js +1 -0
  31. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-21080826c6095f21.js +6 -0
  32. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-77d4816945b04793.js +6 -0
  33. sky/dashboard/out/_next/static/chunks/pages/{clusters-f119a5630a1efd61.js → clusters-65b2c90320b8afb8.js} +1 -1
  34. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-64bdc0b2d3a44709.js +16 -0
  35. sky/dashboard/out/_next/static/chunks/pages/{jobs-0a5695ff3075d94a.js → jobs-df7407b5e37d3750.js} +1 -1
  36. sky/dashboard/out/_next/static/chunks/pages/{users-4978cbb093e141e7.js → users-d7684eaa04c4f58f.js} +1 -1
  37. sky/dashboard/out/_next/static/chunks/pages/workspaces/{[name]-cb7e720b739de53a.js → [name]-04e1b3ad4207b1e9.js} +1 -1
  38. sky/dashboard/out/_next/static/chunks/pages/{workspaces-50e230828730cfb3.js → workspaces-c470366a6179f16e.js} +1 -1
  39. sky/dashboard/out/_next/static/chunks/{webpack-08fdb9e6070127fc.js → webpack-75a3310ef922a299.js} +1 -1
  40. sky/dashboard/out/_next/static/css/605ac87514049058.css +3 -0
  41. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  42. sky/dashboard/out/clusters/[cluster].html +1 -1
  43. sky/dashboard/out/clusters.html +1 -1
  44. sky/dashboard/out/config.html +1 -1
  45. sky/dashboard/out/index.html +1 -1
  46. sky/dashboard/out/infra/[context].html +1 -1
  47. sky/dashboard/out/infra.html +1 -1
  48. sky/dashboard/out/jobs/[job].html +1 -1
  49. sky/dashboard/out/jobs.html +1 -1
  50. sky/dashboard/out/users.html +1 -1
  51. sky/dashboard/out/volumes.html +1 -1
  52. sky/dashboard/out/workspace/new.html +1 -1
  53. sky/dashboard/out/workspaces/[name].html +1 -1
  54. sky/dashboard/out/workspaces.html +1 -1
  55. sky/data/storage.py +8 -3
  56. sky/global_user_state.py +257 -9
  57. sky/jobs/client/sdk.py +20 -25
  58. sky/models.py +16 -0
  59. sky/provision/kubernetes/config.py +1 -1
  60. sky/provision/kubernetes/instance.py +7 -4
  61. sky/provision/kubernetes/network.py +15 -9
  62. sky/provision/kubernetes/network_utils.py +42 -23
  63. sky/provision/kubernetes/utils.py +73 -35
  64. sky/provision/nebius/utils.py +10 -4
  65. sky/resources.py +10 -4
  66. sky/serve/client/sdk.py +28 -34
  67. sky/server/common.py +51 -3
  68. sky/server/constants.py +3 -0
  69. sky/server/requests/executor.py +4 -0
  70. sky/server/requests/payloads.py +33 -0
  71. sky/server/requests/requests.py +19 -0
  72. sky/server/rest.py +6 -15
  73. sky/server/server.py +121 -6
  74. sky/skylet/constants.py +6 -0
  75. sky/skypilot_config.py +32 -4
  76. sky/users/permission.py +29 -0
  77. sky/users/server.py +384 -5
  78. sky/users/token_service.py +196 -0
  79. sky/utils/common_utils.py +4 -5
  80. sky/utils/config_utils.py +41 -0
  81. sky/utils/controller_utils.py +5 -1
  82. sky/utils/resource_checker.py +153 -0
  83. sky/utils/resources_utils.py +12 -4
  84. sky/utils/schemas.py +87 -60
  85. sky/utils/subprocess_utils.py +2 -6
  86. sky/workspaces/core.py +9 -117
  87. {skypilot_nightly-1.0.0.dev20250627.dist-info → skypilot_nightly-1.0.0.dev20250628.dist-info}/METADATA +1 -1
  88. {skypilot_nightly-1.0.0.dev20250627.dist-info → skypilot_nightly-1.0.0.dev20250628.dist-info}/RECORD +94 -91
  89. sky/dashboard/out/_next/static/chunks/43-36177d00f6956ab2.js +0 -1
  90. sky/dashboard/out/_next/static/chunks/690.55f9eed3be903f56.js +0 -16
  91. sky/dashboard/out/_next/static/chunks/871-3db673be3ee3750b.js +0 -6
  92. sky/dashboard/out/_next/static/chunks/937.3759f538f11a0953.js +0 -1
  93. sky/dashboard/out/_next/static/chunks/938-068520cc11738deb.js +0 -1
  94. sky/dashboard/out/_next/static/chunks/973-81b2d057178adb76.js +0 -1
  95. sky/dashboard/out/_next/static/chunks/982.1b61658204416b0f.js +0 -1
  96. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-aff040d7bc5d0086.js +0 -6
  97. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-8040f2483897ed0c.js +0 -6
  98. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-e4b23128db0774cd.js +0 -16
  99. sky/dashboard/out/_next/static/css/52082cf558ec9705.css +0 -3
  100. /sky/dashboard/out/_next/static/{HudU4f4Xsy-cP51JvXSZ- → ZYLkkWSYZjJhLVsObh20y}/_ssgManifest.js +0 -0
  101. /sky/dashboard/out/_next/static/chunks/pages/{_app-9a3ce3170d2edcec.js → _app-050a9e637b057b24.js} +0 -0
  102. {skypilot_nightly-1.0.0.dev20250627.dist-info → skypilot_nightly-1.0.0.dev20250628.dist-info}/WHEEL +0 -0
  103. {skypilot_nightly-1.0.0.dev20250627.dist-info → skypilot_nightly-1.0.0.dev20250628.dist-info}/entry_points.txt +0 -0
  104. {skypilot_nightly-1.0.0.dev20250627.dist-info → skypilot_nightly-1.0.0.dev20250628.dist-info}/licenses/LICENSE +0 -0
  105. {skypilot_nightly-1.0.0.dev20250627.dist-info → skypilot_nightly-1.0.0.dev20250628.dist-info}/top_level.txt +0 -0
@@ -1,19 +1,19 @@
1
- sky/__init__.py,sha256=Sx44dETmHGyhZkqZcxkmsacwYCc7xmEeOcxTv_NPTc0,6419
1
+ sky/__init__.py,sha256=69eXgrQQu7ubP-VTvqkITtpYzyMUY-IX751dC4cTGSY,6419
2
2
  sky/admin_policy.py,sha256=FMiizgvVTmD9gFA2OUaveXnuY3lbNU-fCbUYAODBZj4,9427
3
- sky/authentication.py,sha256=jIX30mcTDVHKdJJa5Tje4qSgX8pL1xE1IJWRK_aHnHw,25465
4
- sky/check.py,sha256=qN0SGRxSGMOKaxubRlCQayZUMIjviTInEKhNMYZQ4cw,30246
3
+ sky/authentication.py,sha256=V7zGSV7bqcAKC_EGOOS0KhJ01ZFLnme0WnjLFO7zavs,25603
4
+ sky/check.py,sha256=R0pFsTq2v-wr3NFePlX9DmDhsbvWEoFJAXsys3pUmT4,30338
5
5
  sky/cli.py,sha256=VXIZryeTtJPYpPTBKymVPmuOCyh8knfWrq-qnkr6R-4,178
6
6
  sky/cloud_stores.py,sha256=Ln5GBpel-sEs7rVx7bBrMkfLwA_bctI05Rox2uoz7Lo,26388
7
7
  sky/core.py,sha256=5UbaZ5xamYTajEq4TyiT81Q_cVzqPnMQRXASSz4OcNg,56272
8
8
  sky/dag.py,sha256=5MFXlP43y9U54zxfYGhVyBiWEInoFFlt_zJ7ASJntXw,3889
9
9
  sky/exceptions.py,sha256=YRPgpFkBRGE9jmG2r3SWJGS9p9-RPP2TZGjfd2VblSc,19044
10
10
  sky/execution.py,sha256=BhI4paGKpXMhWJoelHFe7LGFbCnW7hl0rIAmdIay-dk,33223
11
- sky/global_user_state.py,sha256=HIlFwH7x8KcWJkBKkPT-aG9HxVLgj5n-flGvY-10SzY,63670
12
- sky/models.py,sha256=I_DgzfDcNeJBoVV8FRR8BcNYkE0hzwxuj28Jjs6oxZg,2611
11
+ sky/global_user_state.py,sha256=8_oKM5l5aey_IadFC6beiilfsbG10J27sqVxnHxFc7A,73040
12
+ sky/models.py,sha256=Eor-cT4D71QTimogcnJ5ey1G1PXK-OXN-snEtE8Uu_g,3152
13
13
  sky/optimizer.py,sha256=2JZl6exFMuOAzpWefvfY9CZPWnvjDLLvR92A2qpvtRs,61418
14
- sky/resources.py,sha256=Jcg6z337r54D0NA_nTSnG8453lceC2zlTbC1bQwk8lQ,100064
14
+ sky/resources.py,sha256=Xqnda_-2Gegtdf8GVTy8QaUZToYy4zFrn4ACMuE7gFM,100267
15
15
  sky/sky_logging.py,sha256=cMurxhFExKEFX1frcMR71Ti_s9Obg9WY30veVxsZB6o,7285
16
- sky/skypilot_config.py,sha256=-ftlGHJpitBfBMHM6RqDaZYFhzWbsa80_eiVxSRbAPg,34189
16
+ sky/skypilot_config.py,sha256=6o5T4_U-b38tJglH3vRV0cfvsD8wLAt2qFuLux_FDv4,35235
17
17
  sky/task.py,sha256=lSPLp4mc_plmY7ZI0mCmNG6aeeHFtIQzx23UWNclUOs,70701
18
18
  sky/adaptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  sky/adaptors/aws.py,sha256=4caUTO5nxZQyDVPyQdoPljaF-Lz_Fa6NEnu3FfmLZd4,8633
@@ -26,15 +26,15 @@ sky/adaptors/docker.py,sha256=_kzpZ0fkWHqqQAVVl0llTsCE31KYz3Sjn8psTBQHVkA,468
26
26
  sky/adaptors/gcp.py,sha256=oEb9jClEtApw6PQnxdxDYxOCYsedvM3aiko1EW1FDVo,3501
27
27
  sky/adaptors/hyperbolic.py,sha256=iyHDmtLFVTK9QajpAmObk0XO2OZnnO_1LbvDffPpt68,245
28
28
  sky/adaptors/ibm.py,sha256=7YbHrWbYcZsJDgxMBNZr1yBI03mjs_C3pnCTCz-MNtQ,5068
29
- sky/adaptors/kubernetes.py,sha256=Y5rZI6hXstGDvMLi16dJtgbCuMfKdB772Jo5iVOzXjE,9455
30
- sky/adaptors/nebius.py,sha256=5dLZcWWCtwVdlQESfpXo4ZsZ832INw5ih16EUd8IR7c,8695
29
+ sky/adaptors/kubernetes.py,sha256=L00PTCU-guQ3R8KK7KEd35ofyNJKpver1zug8lAHlt8,9678
30
+ sky/adaptors/nebius.py,sha256=aQYsK9dgMSj4L2JTUz_w1KJQdebEiLznafmhLKbS_gc,8707
31
31
  sky/adaptors/oci.py,sha256=xJt6J9xBSFIENa6FwEt1V1sZE8puAZ_vPEoGlyQACPs,2839
32
32
  sky/adaptors/runpod.py,sha256=4Nt_BfZhJAKQNA3wO8cxvvNI8x4NsDGHu_4EhRDlGYQ,225
33
33
  sky/adaptors/vast.py,sha256=tpvmHi7IkQNzbbHVkeo04kUSajoEpSzXr2XgeO_I1LU,695
34
34
  sky/adaptors/vsphere.py,sha256=zJP9SeObEoLrpgHW2VHvZE48EhgVf8GfAEIwBeaDMfM,2129
35
35
  sky/backends/__init__.py,sha256=tpa9gAygQopsiBUUuy3wVmr4E05FoPTFHIWqEo4i-u0,627
36
36
  sky/backends/backend.py,sha256=o47WUnB_h2nd_SkV0q0NTJ4vCwk23-KH5DgAm_JpKgE,7739
37
- sky/backends/backend_utils.py,sha256=nhU9ipILO79zxNohMp3bPxs9bQkOy_WjNdL44AL-J34,142039
37
+ sky/backends/backend_utils.py,sha256=HFuEwwO28H-V3ytr18rNFMr1ol9sAroG8VeXTgKi9YQ,145088
38
38
  sky/backends/cloud_vm_ray_backend.py,sha256=WPmK75JRfX4nLphJQVJFapyZRQcblAiUhITrzNUt3Hc,259437
39
39
  sky/backends/docker_utils.py,sha256=Hyw1YY20EyghhEbYx6O2FIMDcGkNzBzV9TM7LFynei8,8358
40
40
  sky/backends/local_docker_backend.py,sha256=r80BGJZmAH8F49v6Y_pG3_pHmW5LQEQRusLkKoYoe9Q,17047
@@ -76,75 +76,76 @@ sky/catalog/data_fetchers/fetch_vsphere.py,sha256=Yf7tKzwJsQ_4f64IT1EAP108C1D3Rg
76
76
  sky/client/__init__.py,sha256=pz6xvVSd9X-gwqbsDL0E9QOojYqM0KAD0j-NCyCIF1k,38
77
77
  sky/client/common.py,sha256=E_5cjxd8fWRB7fU1yfIbiyQf-IyVhpD5KkB7Fl3cQEI,15215
78
78
  sky/client/oauth.py,sha256=sNJ_DMsSTcxluj5FeNQ2IafZJLImRFmCAZ79bXeABn4,2871
79
- sky/client/sdk.py,sha256=w6NjjJALHAUPBtdrBlmJxv3NWHNcKioFKHP9s-OPZJQ,89494
79
+ sky/client/sdk.py,sha256=uVzzJpsokxAdhLaK4JyMRia1wj6PI5qYpvBSZfnFwqk,91054
80
+ sky/client/service_account_auth.py,sha256=5jXk0G6ufuW-SHCO7BEHQeTO0_2a8KfFmA63auXFRj4,1529
80
81
  sky/client/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
- sky/client/cli/command.py,sha256=ROqEg7Toj-mHJZALOGKK2nv5GwLmhziQDHAeo6RsHb8,214851
82
+ sky/client/cli/command.py,sha256=l4hpvOcgEdXSs7XJRALdSTx5tTOUvTfiUoSrSGtiUms,215738
82
83
  sky/client/cli/deprecation_utils.py,sha256=H_d5UyF2CekEoThduAzt5cihBO8hwKYMu0-Wqfbjv5E,3370
83
84
  sky/client/cli/flags.py,sha256=6IdS_G2lB1C6r8kJMzLVREY_qV50VHiSfWlmppVrWuc,11623
84
85
  sky/clouds/__init__.py,sha256=tC9_Vi6GvVceWUi6uZvm7vXzBa0uH3CjRQ-QCYqdJMw,1624
85
- sky/clouds/aws.py,sha256=vkC-6gMgz71zoygvD0SrfcaS5ysvitl4MjkOHz0o-o8,55030
86
- sky/clouds/azure.py,sha256=h-5hyp4w-g0FDwi4_AbLHRV5R9V869aBaVZA6Tsq3yE,32584
87
- sky/clouds/cloud.py,sha256=yKFBuceNYsSisvoQ3lqgi5gDOCvUHxcMBiEBfATqN_0,38893
86
+ sky/clouds/aws.py,sha256=SDCYjS_4PsICbhnG9a1hf-ufOd8MBQ4ErK7ZKYjYIJM,55189
87
+ sky/clouds/azure.py,sha256=Tm2kl-p736MGL9z-r7HTADneRKEVg-p2Lq3yHVaLAn8,32683
88
+ sky/clouds/cloud.py,sha256=R4bdXwIWx66GkBeFFRdapZOQTTB7pSFonCRqmVT25_s,38995
88
89
  sky/clouds/cudo.py,sha256=DvKod2xbCqd7wCXzwC3ePtz9GRLZhCiBl09QJVLWwYg,13643
89
90
  sky/clouds/do.py,sha256=x1oxaoGL3ioFJFwt3BA1N4seGyetPpV23ENemQLDe2I,11999
90
91
  sky/clouds/fluidstack.py,sha256=FYjTOYXulqUx_nH7iL3CpHTAxMMyFymKIW35LHtuvaM,13054
91
- sky/clouds/gcp.py,sha256=tBch7sBE4htY4P_kJXjfWC5W4TRPyCneSU84J7WjOkg,67766
92
+ sky/clouds/gcp.py,sha256=lXKymalvUeqS7XcBxZXXFVd1Z6r8TXtMTte7npTqEf8,68326
92
93
  sky/clouds/hyperbolic.py,sha256=cvcYeTs7js36OOXwehme4vzzjtDWqjPyqtxmb4XuUk4,11492
93
94
  sky/clouds/ibm.py,sha256=kGJpdpC1oJJY05PVHVqez_rTDkAALeq0P0xuoXyQZwM,22383
94
- sky/clouds/kubernetes.py,sha256=3NVngZ2TWv_U-FYPCZiBjbFjNwD3u6bTTIDiv7lXWeA,45358
95
+ sky/clouds/kubernetes.py,sha256=ejbQ93ysJoL4PTmsALXM87vK7qpd6Kv_E2HnW1CQ9f0,46043
95
96
  sky/clouds/lambda_cloud.py,sha256=oP0G8u3qXPTtxF5s2650p6f9ebAqcdxUVPQtu-p9A9g,13092
96
- sky/clouds/nebius.py,sha256=XJnRjPXjTCIBrIeV18w8uXaHefHyKNbz2CGxL_cmk1Q,20620
97
+ sky/clouds/nebius.py,sha256=JTleKTSUSij6mX9zojNBtyP1gPOfbfQknqwLx5ci5Ns,20758
97
98
  sky/clouds/oci.py,sha256=_6FtvLBaoFo9ndyDudezMuUVW5gaP4AaZbMoEV82YBQ,27974
98
99
  sky/clouds/paperspace.py,sha256=cZkidPfWp7GwV23yNQAnlW2X6m_GXsl5qnmDvw5upHA,11414
99
100
  sky/clouds/runpod.py,sha256=5pR4oyFu3yh2BQzE3pxIpNIglsvzwGQ9YkabPW-gBVM,12807
100
101
  sky/clouds/scp.py,sha256=Q3DZcio9bIlY3hBuHt7NF3qgXlVzOTdqStSFsH9mI4Y,15655
101
- sky/clouds/ssh.py,sha256=3RAideItETYUP6TUPcHql_BrS7CyJjLmR-Ft_4XzUXE,9866
102
+ sky/clouds/ssh.py,sha256=PPs1FzhJ4DV-KsaTfvLii7pd80nkF-LXAlY8bjMN8RQ,9970
102
103
  sky/clouds/vast.py,sha256=1pzpdGqWDi9sEhDGq8E0f2G9v-2bsQjblNoGVyYR1yI,11751
103
104
  sky/clouds/vsphere.py,sha256=8jq_zS7q2DJDRC-MkmQh9ZWPN3j3ZsMucsAk_SZu8lc,12761
104
105
  sky/clouds/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
- sky/clouds/utils/aws_utils.py,sha256=W5BRC-2F_VY4BymRA1kS6-MufsI3V8cfY_hv--4gJBU,1986
106
+ sky/clouds/utils/aws_utils.py,sha256=eT1GUR-OAfKS9CM0ZOARkhAYQ779GEGwPs9OXm6lwt0,2146
106
107
  sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4t8,3555
107
- sky/clouds/utils/gcp_utils.py,sha256=rh4a91euYFflq6V7bLpY9XnAwnwyNczRueOShpD-E8U,7204
108
- sky/clouds/utils/oci_utils.py,sha256=0YxhgZdeIHQUI1AZ86YuswsZg5HdVCIVfSTRJsSHYI0,6396
108
+ sky/clouds/utils/gcp_utils.py,sha256=ZNupZEBsZS9ZvvzB7vsc6f5y1JUBoRcKE0erso_Y93k,7659
109
+ sky/clouds/utils/oci_utils.py,sha256=yv_Y9oM5WNCnOofu44aKyOPTZZdKfpFLCx3ewZ2VBFY,7994
109
110
  sky/clouds/utils/scp_utils.py,sha256=VGuccVO5uFGr8-yolWSoYrgr11z6cIeDBGcqkBzAyOs,18409
110
- sky/dashboard/out/404.html,sha256=4Wom0AJ6VbjnbPJOG5du1YTkI9TzSZX_CDwbaoCd88c,1423
111
- sky/dashboard/out/clusters.html,sha256=PnrBVsYUa7nRFYmJ_awSz9fj0CfY2oxdV2CQXWQye8o,1418
112
- sky/dashboard/out/config.html,sha256=d01pZPoMJLm8KPEK8FzXFC--ALff3Zy7NK86cbF_xIc,1414
111
+ sky/dashboard/out/404.html,sha256=CaBdmCwdOgbd030VXDaLX6wtlvB943JakZhBIQqkpP8,1423
112
+ sky/dashboard/out/clusters.html,sha256=fh9pT8yj8aq2DC-RDUM6Ki5GYD4qpT85ltrsT-wg-EM,1418
113
+ sky/dashboard/out/config.html,sha256=pHxDwoWAcOwA8azeXQnuPDix4tnTqUFp1f-CFL0bHPc,1414
113
114
  sky/dashboard/out/favicon.ico,sha256=XilUZZglAl_1zRsg85QsbQgmQAzGPQjcUIJ-A3AzYn8,93590
114
- sky/dashboard/out/index.html,sha256=8x5Wug7Tir1r3JGx-6H1D6rBIl8P-A1KiZHBY_v2C8o,1407
115
- sky/dashboard/out/infra.html,sha256=zun7ADCs2KN0rbC1Qib6V8JZOCvDMeY1IziHA7zViIY,1412
116
- sky/dashboard/out/jobs.html,sha256=sC0iRoK8aAMvcxvEGl9uvA4KwoM6WOEXb_yfyCMAbNc,1410
115
+ sky/dashboard/out/index.html,sha256=XzLVtTdG_ZCw5T9vTBBiUv3cfkj-NCbQAVsDJG3pmLU,1407
116
+ sky/dashboard/out/infra.html,sha256=r5Ya7bnd19Lprf4bgUq14_rmENwubdvetRTobx4CioY,1412
117
+ sky/dashboard/out/jobs.html,sha256=oANbnugCfA5ea3EjweGMiaqgfZ3ni3rJQJBjr1s6gGY,1410
117
118
  sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
118
- sky/dashboard/out/users.html,sha256=diWaay2ltX_-LK17vmPxHBSRgAZQTKfA9eZEmZk2os8,1412
119
- sky/dashboard/out/volumes.html,sha256=Ch9UX5Ri4w59aKNx2wAaZtj-1gqZBw2q9NJ73E1uFlM,1416
120
- sky/dashboard/out/workspaces.html,sha256=_B3RMehwLax3-d2ac1aHEuSbx2Y0QbQAeo8n2h0A-_U,1422
121
- sky/dashboard/out/_next/static/HudU4f4Xsy-cP51JvXSZ-/_buildManifest.js,sha256=qbv4stQCWKX4iRojj0ZY5PPMkxz27PBQM-_zC16U-ZM,2170
122
- sky/dashboard/out/_next/static/HudU4f4Xsy-cP51JvXSZ-/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
119
+ sky/dashboard/out/users.html,sha256=dp4L7orqlHiwgMxTk7ae5ZJfj3Zg67iXxlnbZhOnjsU,1412
120
+ sky/dashboard/out/volumes.html,sha256=CPL0C5y42ucx-lzSn7Rj5OxsY9MHXKPKuFjDH9G2g9E,1416
121
+ sky/dashboard/out/workspaces.html,sha256=ZY7tjRupsDYWYHnvl_1wisvHVgNQDDt-yP9IXLOPeps,1422
122
+ sky/dashboard/out/_next/static/ZYLkkWSYZjJhLVsObh20y/_buildManifest.js,sha256=VpOYzV2RRufzRPlvkVb_q9-1hmi-i7uUt-RHhFhwPlg,2170
123
+ sky/dashboard/out/_next/static/ZYLkkWSYZjJhLVsObh20y/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
123
124
  sky/dashboard/out/_next/static/chunks/141-fa5a20cbf401b351.js,sha256=nCeN7eravceeJ87m8duix4t6-Eo2VshZVBFRUQzR9dU,17822
124
125
  sky/dashboard/out/_next/static/chunks/230-d6e363362017ff3a.js,sha256=WkDwCK_WCE2UfSYZNnfVrRHsYqgkpA9HBfnZtXKSkeI,22583
125
126
  sky/dashboard/out/_next/static/chunks/25.76c246239df93d50.js,sha256=w6BKvAxj9L2j1Ss4j6ZFE6_FAYuHcrDdQsEmI4-cmWs,10635
126
- sky/dashboard/out/_next/static/chunks/43-36177d00f6956ab2.js,sha256=yRulANYggEvbxVWGb9iAYtGmI8o9lK48M9STghTUYok,16674
127
+ sky/dashboard/out/_next/static/chunks/43-f38a531f6692f281.js,sha256=q-uRKKHQWqRzu7c3et0bhKTNWn2CauNrBbKZLqn9ptc,16696
127
128
  sky/dashboard/out/_next/static/chunks/430.ed51037d1a4a438b.js,sha256=vczgwkklvp5g6SroggeUauhjstjg2oPR0fmpTS9t5Qc,925
128
129
  sky/dashboard/out/_next/static/chunks/470-92dd1614396389be.js,sha256=JVu40o9FW6PdYFiPRZ7MWsLxrVgd5iuxe0kK7pQEcUw,15590
129
130
  sky/dashboard/out/_next/static/chunks/491.b3d264269613fe09.js,sha256=WVRPM-7C1QZqInNmEaFw_vpaCR0GcyjnOTvGMWdbYRs,8486
130
131
  sky/dashboard/out/_next/static/chunks/544.110e53813fb98e2e.js,sha256=sZMt5pTninJj64KQrKZtmgyy2kEPHlFP1MLjWrj8_88,306
131
- sky/dashboard/out/_next/static/chunks/616-d6128fa9e7cae6e6.js,sha256=KdZtaXM4mX6I7wJME5yyIOOX8jGgstijnb9QPgo3bdM,179244
132
+ sky/dashboard/out/_next/static/chunks/601-111d06d9ded11d00.js,sha256=STuBj3phKGobPUj2wDMFBKe8IJOIOQdxFhRKJoA7Vr0,8982
133
+ sky/dashboard/out/_next/static/chunks/616-50a620ac4a23deb4.js,sha256=PjRWH50LmfVkFOdKssvgzhgGl0MiMJAOwQ7x-byn5_E,179263
132
134
  sky/dashboard/out/_next/static/chunks/645.961f08e39b8ce447.js,sha256=N3zoEuCVl072EOJjTeBE2ElGppaQYTgR6T2xXEB7eUw,20033
133
135
  sky/dashboard/out/_next/static/chunks/664-047bc03493fda379.js,sha256=zPR7g3iSBlKD2s7vlzJ9sBtaNkg6uqdp1u_0587Fxyo,6556
134
- sky/dashboard/out/_next/static/chunks/690.55f9eed3be903f56.js,sha256=LxjKR7fBqYlEByfJc6VK-Vrc8O-0WZtPnOdacRmEfM4,29535
136
+ sky/dashboard/out/_next/static/chunks/691.fd9292250ab089af.js,sha256=i3Dfy_TDQfOhTrvdoHxULXXG38IFB67J_ocHL2wvc08,51064
135
137
  sky/dashboard/out/_next/static/chunks/697.6460bf72e760addd.js,sha256=rKeQh2I9u5AeRlsQUXBQhtplnX6iAkujYoho6rg8dXY,9413
136
- sky/dashboard/out/_next/static/chunks/785.dc2686c3c1235554.js,sha256=RBLio8Y0Ysl69JawpZ_gFbN-gbKNmsCQnWpw2fO0_zQ,4572
138
+ sky/dashboard/out/_next/static/chunks/785.3446c12ffdf3d188.js,sha256=R1U2aZqCqs6EPMa1GNqmjIyzinLN3sC4BXLgaGmzkZ0,4572
137
139
  sky/dashboard/out/_next/static/chunks/798-c0525dc3f21e488d.js,sha256=qROA0j-IKFdZFhQdWglA67iuCH8pf6mQRDqD6Q4hy00,38450
138
140
  sky/dashboard/out/_next/static/chunks/799-3625946b2ec2eb30.js,sha256=KZOrIkUG_Ju9ObLHlSS3_PIllwuGzw1o9FrCL_NsXGY,64559
139
141
  sky/dashboard/out/_next/static/chunks/804-4c9fc53aa74bc191.js,sha256=yC-hYtK6OPB30EDHw7JG50eDF5-CufVV-lCg4__Fg-w,11465
140
- sky/dashboard/out/_next/static/chunks/871-3db673be3ee3750b.js,sha256=Uc2zHbCyuXJPE9mZzNYZ1JqTsfHIZ_RSx216c2WT3nw,16208
142
+ sky/dashboard/out/_next/static/chunks/871-e547295e7e21399c.js,sha256=DvEdtHPt-FGNZEEuIbp0vr3VUgzocHfSr7n2pkwdKEk,16268
141
143
  sky/dashboard/out/_next/static/chunks/875.52c962183328b3f2.js,sha256=uwkp26H59tVeQ0DDZA9YYrWqZbInIJYx2PZE-s5FHk4,10052
142
- sky/dashboard/out/_next/static/chunks/937.3759f538f11a0953.js,sha256=IaXGhx7oSJ72AJzmF9c1IoK02F_rVo_YlnM2WWofWPo,54431
143
- sky/dashboard/out/_next/static/chunks/938-068520cc11738deb.js,sha256=dQMOHFUBZrLmC7V2YvbcjGGo5NCEIUlmy8_kRh-GVdc,25678
144
+ sky/dashboard/out/_next/static/chunks/937.72796f7afe54075b.js,sha256=QgT_W9lfyiOw4Io-MmsCL01E42VNC0zdZdBtCNAsxEY,54556
145
+ sky/dashboard/out/_next/static/chunks/938-0a770415b5ce4649.js,sha256=ViX7VyuBwPoUwCqjSHybkh7zE4Z3X2H5y8S93Wb_fDc,25784
144
146
  sky/dashboard/out/_next/static/chunks/947-6620842ef80ae879.js,sha256=wVQ6A5PftPlT_QrlH9sd3i1IKtJLXBWg6rVisQ9Ktfs,10017
145
147
  sky/dashboard/out/_next/static/chunks/969-d3a0b53f728d280a.js,sha256=7vGNbFr0SbImIdjqEecyzD9d0sM7Lsfg851gUAMHBoM,9798
146
- sky/dashboard/out/_next/static/chunks/973-81b2d057178adb76.js,sha256=Y0MkFX3534sdyp_PJggApYQzhEAcZcJm7F0wP5n8Hv0,8221
147
- sky/dashboard/out/_next/static/chunks/982.1b61658204416b0f.js,sha256=sleE6OwKlHJBhHnGxMoYYOP4NaVxRTARQ9TuQtl3d_Q,15525
148
+ sky/dashboard/out/_next/static/chunks/982.d7bd80ed18cad4cc.js,sha256=6y4MZJ82xc56DznNl9pjXNS2nt_V3BmhuJmRW0_FTxc,17058
148
149
  sky/dashboard/out/_next/static/chunks/984.e8bac186a24e5178.js,sha256=La8RN4LRGJJIE9mSpUr_PCoC6S-H5_3_LSXDqsBmGEc,40808
149
150
  sky/dashboard/out/_next/static/chunks/989-db34c16ad7ea6155.js,sha256=sTGISt_JIACVJorZS8_lq9_RtlwUG98wI6xzosS-zCI,9434
150
151
  sky/dashboard/out/_next/static/chunks/990-0ad5ea1699e03ee8.js,sha256=vUYDvO9-CClIXLdV0GNIgbb_pKaLOOfIiHLY7LO6oiQ,16115
@@ -153,36 +154,36 @@ sky/dashboard/out/_next/static/chunks/framework-87d061ee6ed71b28.js,sha256=dh6TK
153
154
  sky/dashboard/out/_next/static/chunks/main-app-241eb28595532291.js,sha256=P0_tU7pqs_pOQaw-lVzCNl6recBw5lFfkAD0jRk2uzc,115881
154
155
  sky/dashboard/out/_next/static/chunks/main-e0e2335212e72357.js,sha256=BxTmVbZDnMUQvQd57MEl1Ui0VZaNmwLOviY7h_xMjP0,109884
155
156
  sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
156
- sky/dashboard/out/_next/static/chunks/webpack-08fdb9e6070127fc.js,sha256=m9AILwoQlHjkKhuzayHgK4alfhAwSp6TGRjNgE_8AvE,4541
157
- sky/dashboard/out/_next/static/chunks/pages/_app-9a3ce3170d2edcec.js,sha256=kGC1bIix42JPaw3QBOZWTRSDrcxM_LcwJsEj_m7ipwk,7570
157
+ sky/dashboard/out/_next/static/chunks/webpack-75a3310ef922a299.js,sha256=1yseAHVNkMz-UM30Gjap1WfdpcaCQc5fCdXD8n2aSI8,4541
158
+ sky/dashboard/out/_next/static/chunks/pages/_app-050a9e637b057b24.js,sha256=kGC1bIix42JPaw3QBOZWTRSDrcxM_LcwJsEj_m7ipwk,7570
158
159
  sky/dashboard/out/_next/static/chunks/pages/_error-1be831200e60c5c0.js,sha256=TZqrus06KKPx-CMABDMPKF7w-NQ5s2gwJAM8Huyl7qU,247
159
- sky/dashboard/out/_next/static/chunks/pages/clusters-f119a5630a1efd61.js,sha256=-zxhubbpW2s9mEBzyGBnpZeuqv-tDvKP1wrCT_Z3SJI,833
160
+ sky/dashboard/out/_next/static/chunks/pages/clusters-65b2c90320b8afb8.js,sha256=pm1rnxNFav3aJsn2Ha74X4MTsu0tBw1Nllnx1N4HvuY,833
160
161
  sky/dashboard/out/_next/static/chunks/pages/config-6b255eae088da6a3.js,sha256=bM0Pop9raIOvuVMyZESmKZ-K3BHDv5N2Pvq_c8B9t40,777
161
162
  sky/dashboard/out/_next/static/chunks/pages/index-6b0d9e5031b70c58.js,sha256=Fp2FKnKQtORK_5O7MEQ08tlTk7ewMLuecw_EY5g4Dlg,513
162
163
  sky/dashboard/out/_next/static/chunks/pages/infra-ee8cc4d449945d19.js,sha256=x0uu0li0QFub-_q__1PqfeVTtz1L5AF2qScJsQo6h5A,805
163
- sky/dashboard/out/_next/static/chunks/pages/jobs-0a5695ff3075d94a.js,sha256=kE00uRt3Qbipyx4ISFoY_ILh3l6ZAnCpKeFFucgaKyg,834
164
- sky/dashboard/out/_next/static/chunks/pages/users-4978cbb093e141e7.js,sha256=K-Qni4Pjo5-V5jda0FT4ghTWa4QZKQu8kJQblS39CKw,806
164
+ sky/dashboard/out/_next/static/chunks/pages/jobs-df7407b5e37d3750.js,sha256=VI0SnJ5piRJJ7_bYIsQ35uhEqnxIbS8c7nkHJc030mA,834
165
+ sky/dashboard/out/_next/static/chunks/pages/users-d7684eaa04c4f58f.js,sha256=qsFV_ZJ6oWflc56bFLGzfHzoOySuTbFI8-TvlAiEHCg,806
165
166
  sky/dashboard/out/_next/static/chunks/pages/volumes-476b670ef33d1ecd.js,sha256=dUTHjiMED4zNARhKc7ICqwvX5IN1hBSAMiXzegabXbE,768
166
- sky/dashboard/out/_next/static/chunks/pages/workspaces-50e230828730cfb3.js,sha256=e6Mt_kiQwKR2Bilc1rSuVat2jJzQsrGr3WaKreBmV38,848
167
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-8040f2483897ed0c.js,sha256=jWaVTwUqzbXXsdJoFBo4eI48NmPHMpoMFYHteODd4Rw,16516
168
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-aff040d7bc5d0086.js,sha256=S0T39ORq8pVhFgUNG7FTeF22w9v85-HbHQknM4z0U2A,20240
167
+ sky/dashboard/out/_next/static/chunks/pages/workspaces-c470366a6179f16e.js,sha256=y7n7NcpzDAv4RDJBkHl-vtqA0-yh3boXys3H_BU5u6Y,848
168
+ sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-77d4816945b04793.js,sha256=zlm6lCyWFS6pFmiYJixXlUY3Vjc2ZsihMjoAbEDrqQw,16572
169
+ sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-21080826c6095f21.js,sha256=d56mGGNklAzHMZjRsJI7IGF6jDYLCnlQsiOxp-tgZcc,21114
169
170
  sky/dashboard/out/_next/static/chunks/pages/infra/[context]-b302aea4d65766bf.js,sha256=jOfBiGwZ0Y4lt6_qu_K9tr2Bd4sbgy2ST2Apny9z6mE,815
170
- sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-e4b23128db0774cd.js,sha256=Yub_S1nVTAzh0A4r9k6UkRbkVxghk4etLhqXpS_i_yw,24343
171
+ sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-64bdc0b2d3a44709.js,sha256=RXOZf052R2FSpZn4G6WC1KvkcpbYj_GjICjWW1RhBfI,25180
171
172
  sky/dashboard/out/_next/static/chunks/pages/workspace/new-5b59bce9eb208d84.js,sha256=eAJG1ElXXiny-HVkJcLkNuzY49G1GS6__71MItLU5Fk,758
172
- sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-cb7e720b739de53a.js,sha256=hTtDcnaiRlbh5xoN6JgyAHW0tlQh2XdDf-PPPMT9VLo,1509
173
- sky/dashboard/out/_next/static/css/52082cf558ec9705.css,sha256=HTMiKZlYRBhXwljhzadAoUlN6Y6ZV2p1gjQj2Z30nkE,44938
174
- sky/dashboard/out/clusters/[cluster].html,sha256=88AWyjr4HC2sKCG4ruri3Isyohrp-FxiR_R4k02ZWWE,2746
175
- sky/dashboard/out/clusters/[cluster]/[job].html,sha256=V1dzALncxYMjtUjgvz3FpRLQzTGspNuRDH9V0kG0RTI,2067
176
- sky/dashboard/out/infra/[context].html,sha256=6R96HQazcUumefvQL0Rhm2R2XhfzUrieQvktWnoZEIk,1436
177
- sky/dashboard/out/jobs/[job].html,sha256=d4ZfdFTF5El8m-xDDm634j0xotoUix7w_jTrEOVKbq4,2209
173
+ sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-04e1b3ad4207b1e9.js,sha256=ODy00yw62l_UYaLbUgJzo4D_FQFKrpWOy67FdZDx7A4,1509
174
+ sky/dashboard/out/_next/static/css/605ac87514049058.css,sha256=nDXhp8MZEGYBx37rCDE5ypHdb76vrIHNB4jxy2wNafw,44921
175
+ sky/dashboard/out/clusters/[cluster].html,sha256=_-KZDI6yzGL4kQV3yGEk6ov4G9-yifcHOmofITIGQlc,2746
176
+ sky/dashboard/out/clusters/[cluster]/[job].html,sha256=2FGUivGM2vB1sQN3QePloCbPrWB58S5vwQqjoA9Vs3g,2067
177
+ sky/dashboard/out/infra/[context].html,sha256=OLxS1MaJdeqAi4OVAELGmE9fzGKxy_IHEG_3i4GX9zY,1436
178
+ sky/dashboard/out/jobs/[job].html,sha256=l0vXkvPWt_aZ3SDagCo6P2IOxXRAH7pBTMqHGMS_8-M,2209
178
179
  sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
179
- sky/dashboard/out/workspace/new.html,sha256=Na61aBqh8v1aXAtchFv52WJRa_-mfA-9Uw-XnSVOoYY,1428
180
- sky/dashboard/out/workspaces/[name].html,sha256=i1c1RVpAPwTKVwXuLcuk9cKutGLcSx3whpko5Eo45zk,2744
180
+ sky/dashboard/out/workspace/new.html,sha256=MFFjeZs-OQL4rf-8H0C22R_HYmdcMUmc-f3StJdghMU,1428
181
+ sky/dashboard/out/workspaces/[name].html,sha256=KV1Ztz_KheDzI4KjIAvSK3ryA_REcr2TymsBe8XxyOM,2744
181
182
  sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
182
183
  sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
183
184
  sky/data/data_utils.py,sha256=CNYPM963qby5ddW0DZNbhiWXkqgB9MHh_jrC5DoBctM,33437
184
185
  sky/data/mounting_utils.py,sha256=6f1d0EeBj4dY-LQPwh8EtI6yoEHZawDgHaC8LChDS2s,21946
185
- sky/data/storage.py,sha256=OzbHt8tJ8de_43-Wjj347htugGsumfSxkh8FYAKQyq8,236662
186
+ sky/data/storage.py,sha256=ISEr9v880aiXcLr58LhsdL094NucaI_VsB_P2IVOhI0,236874
186
187
  sky/data/storage_utils.py,sha256=l6sx0r3j0F2mTcIVn1S7-4Y_vFRZcvwsVrG_CCacVR8,13856
187
188
  sky/jobs/__init__.py,sha256=qoI53-xXE0-SOkrLWigvhgFXjk7dWE0OTqGPYIk-kmM,1458
188
189
  sky/jobs/constants.py,sha256=5n6wcYVyOnllM39uJDQDv7hHILcdSwiyg_-tqMc7nJk,3305
@@ -192,7 +193,7 @@ sky/jobs/scheduler.py,sha256=b3RAjEzCXyoikh_BcmmGjoZ9ZeXr-tBnXoLFctt95ko,14375
192
193
  sky/jobs/state.py,sha256=B8q6jf8GTPMREdu1MRPyIucEtZlxHcgGuTlAfPlDwAk,55675
193
194
  sky/jobs/utils.py,sha256=2BscuxGkEUL8yJt_T3urmtyxd-QvRQ1-xOvTPJSRNVA,71326
194
195
  sky/jobs/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
195
- sky/jobs/client/sdk.py,sha256=t6mkY2slViz5LDNeAdHlikdiTB-lsW9D26QmNqHoRrU,11292
196
+ sky/jobs/client/sdk.py,sha256=0ZDm5h1kqPYXvsgiXBhbsXj9jfKW7GHH_VtQbSQjmCw,11068
196
197
  sky/jobs/server/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
197
198
  sky/jobs/server/core.py,sha256=CAiNesCc-JcUD76t0RS1a-mRFESWs8MoslSdU5Tj_K4,31640
198
199
  sky/jobs/server/server.py,sha256=ae8JAs-2ipWqL_GsA3x8T2mY-OJLc3ioWg_CfRzCUIY,4011
@@ -242,12 +243,12 @@ sky/provision/hyperbolic/config.py,sha256=N7ekDE57bc8GPQc4zabQ1f9y95syadpADRRH6g
242
243
  sky/provision/hyperbolic/instance.py,sha256=eFsOWWn9-ll_-6yP063-_Jtd8wwuLnzOuvRR1XZdmow,16814
243
244
  sky/provision/hyperbolic/utils.py,sha256=NCa3ULvIi64-YHYoOnPd3SShlJ6VuQsEwaTBqHFrqpg,14953
244
245
  sky/provision/kubernetes/__init__.py,sha256=xzVA9OCga0pCdUAQ7zZiCZMdq-Y0182oHlIKWESA15A,896
245
- sky/provision/kubernetes/config.py,sha256=-6ddvMro9LZ-y7K-hUPo8GdUGZ-01YyBzTAdkKblGXY,29623
246
+ sky/provision/kubernetes/config.py,sha256=iuKFZdivSaEOZf6PWz3JLju3bqyIuO58jTb9fFUn8nE,29632
246
247
  sky/provision/kubernetes/constants.py,sha256=OXyMNSruqyfTJV90yH8PsHtmi04cgeac8mvjoXc5N8o,800
247
- sky/provision/kubernetes/instance.py,sha256=mPQA7r3y8Bg2WDN4nsgk3hgBo5NeL4RuLg0VELvjBTo,57981
248
- sky/provision/kubernetes/network.py,sha256=PEy7lZvmoysmormB49JW245tRcy4owAXzDGV5KHVPEI,12672
249
- sky/provision/kubernetes/network_utils.py,sha256=6uck1aBkgtm-gGBitU3_hEUp8j14ZuG_4Xo70ReZYXs,11654
250
- sky/provision/kubernetes/utils.py,sha256=Dk66Bc02eZvmrHQ0q9_ldZ06O-2r5uxvVSNCFc2JOWc,141631
248
+ sky/provision/kubernetes/instance.py,sha256=B9dEc1tPidkPsDxE7kjNFSk29jq08Ls0mrRoMgG0H_k,58046
249
+ sky/provision/kubernetes/network.py,sha256=Dgj8u7IQBHKHt-mSDhYzue1wfDk96FR_8fO89TwuZ2E,12846
250
+ sky/provision/kubernetes/network_utils.py,sha256=eEbt8acJW3Ohe6qHZNZ9GAQ29kIZEQX7Q5S08yOuvhA,12220
251
+ sky/provision/kubernetes/utils.py,sha256=dHfEDPpMUTOPXaldrehoGApc5HIJQKYZ6WgSbmw4Gu8,142860
251
252
  sky/provision/kubernetes/volume.py,sha256=EI3XM1oO2qKBOsBe1vlt3uX1IuaBl23KFyJD-3jUqH8,5665
252
253
  sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml,sha256=S87GNAbDqgTrLuxF-afPAqQ0V-i41El4s_9KBZMuaag,1331
253
254
  sky/provision/lambda_cloud/__init__.py,sha256=6EEvSgtUeEiup9ivIFevHmgv0GqleroO2X0K7TRa2nE,612
@@ -258,7 +259,7 @@ sky/provision/nebius/__init__.py,sha256=30I3181mu0W5g9fNvaWMPoBJZoGZ9RibuTpBH9P2
258
259
  sky/provision/nebius/config.py,sha256=LK9kTDp2w6zZrn3vNdcSGgsgS-dL_j63Nh4_u3pqNiA,321
259
260
  sky/provision/nebius/constants.py,sha256=sLsyp3Y4pxTfgQvkXLflzjDQ8XbWPyP0W289Pub08H0,1540
260
261
  sky/provision/nebius/instance.py,sha256=N6pNbLMj_gCMutN5QbKF7OMIszMWto-0bdDalXg-4W8,12145
261
- sky/provision/nebius/utils.py,sha256=uu4uJzlU-jhYlUQD613EpDB934GNesToTarbLf1SYcU,13570
262
+ sky/provision/nebius/utils.py,sha256=cmaChr5CKRn7HnTMtnEiGztUDrAWEipwwRdLl9bStKw,13686
262
263
  sky/provision/oci/__init__.py,sha256=5E6EUtTK3mqGVREw5TuVl5DxteBYTZigIii7c8gHExU,612
263
264
  sky/provision/oci/config.py,sha256=diSDTyHLokcuXGB2XgZCHFvsXa8bah1PP2XuMouW_UU,1650
264
265
  sky/provision/oci/instance.py,sha256=rVGee5y0qkoeLIP5vPDmLq1N8G1n8mru62VHb0Bv5iY,16784
@@ -311,17 +312,17 @@ sky/serve/service.py,sha256=f-Lpxl9YtIprcE3Wr0JUslSvEDylNFe-fyaKIJeKb2c,14315
311
312
  sky/serve/service_spec.py,sha256=t7wh7sx68DKjPyrk1Ub-c1ZjkWD8ehG-YOj9CNdC9qQ,18552
312
313
  sky/serve/spot_placer.py,sha256=auRlYZNg8uIW-lxiirxpDP-iIaJtkrhesm6OGMgwPq4,11288
313
314
  sky/serve/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
314
- sky/serve/client/sdk.py,sha256=OxO_58L5lYi13M6fg4c7GfKmYB2mqIWlHZP3XoXwqAA,15326
315
+ sky/serve/client/sdk.py,sha256=p0-99yz0c--DNG11N04zkwut8DlagZ2GIaC6WGi8b4M,15062
315
316
  sky/serve/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
316
317
  sky/serve/server/core.py,sha256=zKvDnq6W9CftH5ljmNMdTDGsLO3mzbFgrMBMCSua4dM,41662
317
318
  sky/serve/server/server.py,sha256=A9K37a0nQgZeN3eKWv62Oh2C5TSAReTZ9pHmztqlI-c,4396
318
319
  sky/server/__init__.py,sha256=MPPBqFzXz6Jv5QSk6td_IcvnfXfNErDZVcizu4MLRow,27
319
- sky/server/common.py,sha256=QrImjzIfx8YKdPBjwkCP-K4OaXVjRL9fcJUbBk5tQjE,34178
320
+ sky/server/common.py,sha256=nGPK1df6DEebJH-Y3FiJHnK97YkzB7UNx7YZ9KtTzoQ,35955
320
321
  sky/server/config.py,sha256=XWf5Kw4am6vMO5wcyWevbQAFH-dmKb7AMEgDzD083-M,8538
321
- sky/server/constants.py,sha256=o2gyedC4nYwHCdM05ZClnDnoOn5kCjAHpdkz0MsgK6k,1319
322
+ sky/server/constants.py,sha256=15r9CGX4yo62BeRLSfyrVaKd5fqeu_8GBS_JqyeXSfk,1431
322
323
  sky/server/metrics.py,sha256=aVRaSwpBVXE9dXIVd9bNsSigKM4bkqNq0eTpP0Noyo8,3657
323
- sky/server/rest.py,sha256=CF5RthCqH7QD-2Isj-MMf9t0GTiaruFzh6iEvW0D-oA,5769
324
- sky/server/server.py,sha256=lChL5AQPJXaiYzNe6lP7gDasanY3YrOK6qOJh4VZ2_A,61596
324
+ sky/server/rest.py,sha256=3xOQXsQ_r9XBcUOhQbf-Wk0UXx0XrAmzQ6JSqLr6nJ0,5430
325
+ sky/server/server.py,sha256=Rj0Miy_poyS51G8wmdcWbeZE2VeTuQqsIiokkR1dWwU,66407
325
326
  sky/server/state.py,sha256=YbVOMJ1JipQQv17gLIGyiGN7MKfnP83qlUa5MB1z0Yk,747
326
327
  sky/server/stream_utils.py,sha256=RS4RuMxQqTGqp3uxzZVtmFWzos4d49P7hMX_VklzEVU,9189
327
328
  sky/server/uvicorn.py,sha256=3mdSUbc8zHRYAbZZLkfPB6U9VXD_t2jDM1BMjpTx1Mo,9014
@@ -329,11 +330,11 @@ sky/server/html/log.html,sha256=TSGZktua9Ysl_ysg3w60rjxAxhH61AJnsYDHdtqrjmI,6929
329
330
  sky/server/html/token_page.html,sha256=eUndS5u1foL9vaWGPRTLMt7lCzD1g0wYJ2v_EeeFzlc,7046
330
331
  sky/server/requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
331
332
  sky/server/requests/event_loop.py,sha256=OhpPbuce65bbjpGRlcJa78AVnYSm08SzFKt70ypCUuQ,1211
332
- sky/server/requests/executor.py,sha256=viR8GEztMAgOMfnXlIPmq-RmXbBcJXIH117scPgZTgQ,26338
333
- sky/server/requests/payloads.py,sha256=b2GO1x2f4tQewV8EGMJ6we83x01RPdVnSsGekKx_Stk,20608
333
+ sky/server/requests/executor.py,sha256=v_ae2H9GGMiwxbVT9h0J2fUOSjqIs3F9lKbMtrzb1-k,26476
334
+ sky/server/requests/payloads.py,sha256=12UdUnAprNc8DmhbeLjL-HhAxXPGTsk_Qzd3iDzAdBY,21498
334
335
  sky/server/requests/preconditions.py,sha256=uUQjzFFHf7O5-WvBypMzqViGmd1CXksbqrrDPmY_s_Y,7178
335
336
  sky/server/requests/process.py,sha256=I0ToOcF_cMJi5TfZMJOn9rDmJYewQOV07Pnetzqj2IU,10805
336
- sky/server/requests/requests.py,sha256=HyUB4JrendLmsXEnxqinv2xm-xiMUvtogVX60IeQHYw,24813
337
+ sky/server/requests/requests.py,sha256=bz2TTgynYz1ip93SBf4_vFLVHc-WtuNpQ1Tnd3gQHZs,25625
337
338
  sky/server/requests/queues/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
338
339
  sky/server/requests/queues/local_queue.py,sha256=X6VkBiUmgd_kfqIK1hCtMWG1b8GiZbY70TBiBR6c6GY,416
339
340
  sky/server/requests/queues/mp_queue.py,sha256=jDqP4Jd28U3ibSFyMR1DF9I2OWZrPZqFJrG5S6RFpyw,3403
@@ -348,7 +349,7 @@ sky/skylet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
348
349
  sky/skylet/attempt_skylet.py,sha256=GZ6ITjjA0m-da3IxXXfoHR6n4pjp3X3TOXUqVvSrV0k,2136
349
350
  sky/skylet/autostop_lib.py,sha256=kGUnHm-jpF4zl3UJfB-4pnoldWpnVeR96WwYGSw7em0,4630
350
351
  sky/skylet/configs.py,sha256=kV490lonYVVQMDRO2haizlt9fpQmqBIpwBScn14zS78,2132
351
- sky/skylet/constants.py,sha256=5GZxeP6mbQPxAghhpW006xcMhffBfmck5vV777xPwk8,23022
352
+ sky/skylet/constants.py,sha256=5wPVkHZPM_H6QKat4uk8IkNWkwlb8bP6k2xTvCRWz3c,23277
352
353
  sky/skylet/events.py,sha256=pnV3ZiwWhXqTHpU5B5Y9Xwam_7FQDI6IrxgSx7X_NVA,12743
353
354
  sky/skylet/job_lib.py,sha256=aZ_lUU1u0HVU2AdTcYcFUAS7eeelK-bAbJlCoZ3QX7A,48267
354
355
  sky/skylet/log_lib.py,sha256=9nLOhevnM668itQyVyPSoQHKfZ2MWm_FwXPxK28X0oM,23201
@@ -403,9 +404,10 @@ sky/usage/constants.py,sha256=mFrTgrFIfFf4kpcl-M1VDU7_moD5_mJazUJTUDrybms,1102
403
404
  sky/usage/usage_lib.py,sha256=PEjQH7do7lrcGMaIqW6bFQvNIFo-ipoF7L0xlt3vmDg,21427
404
405
  sky/users/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
405
406
  sky/users/model.conf,sha256=nPAaMai2fc-nlnEDTfW5Lyw6vgCcOS32BSms4aFOHoY,259
406
- sky/users/permission.py,sha256=5byXR23TBBn47-u9I4Zu_xZSAOmXApV3owOv2DzkS0M,14004
407
+ sky/users/permission.py,sha256=5V5EiQOhBfq2xYinWQE9-wJYrLRSufsNY6EVw0uvNZc,15109
407
408
  sky/users/rbac.py,sha256=3ZWukXo85u6zWbPmHcPsF9EtZ3cd_51PLZYf2h-7uAM,3636
408
- sky/users/server.py,sha256=hnDbSmMb23woUS8CVV1b8MgXk-mDD4a8OhUnjFb26_M,12282
409
+ sky/users/server.py,sha256=59I2WITevRqvo-kEzmP0p0qyEYATnUQXTRvA_81xZYM,27922
410
+ sky/users/token_service.py,sha256=nzIryoYSbw58SceBVRJ4VF7Z9beTSpYZd6WSyYYzK-s,7179
409
411
  sky/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
410
412
  sky/utils/accelerator_registry.py,sha256=yNP7HDflg2bnhnCXFfjdVmJcpId7WBQCQPiGuc41EwE,3874
411
413
  sky/utils/admin_policy_utils.py,sha256=VkE3FGzv5a7KnRO0R1PX0buJ274vF__n1xgXJ_9ykTs,7105
@@ -415,12 +417,12 @@ sky/utils/cluster_utils.py,sha256=s6DFRXktv6_gF_DnwDEXJ7CniifHp8CAPeGciRCbXgI,14
415
417
  sky/utils/command_runner.py,sha256=mPNdPhQX6TtQ7c5MTrdiMEx8yMcKrULMFQas66vJSpQ,43912
416
418
  sky/utils/command_runner.pyi,sha256=IS3qeCTgWys94KhaHx3S2Pty8qDWn_zFht7bgDLJFcw,9593
417
419
  sky/utils/common.py,sha256=nTg-mjNu0diZjs2UvyiMc84Tu1ZonRLRAmfqFIP1TtY,2242
418
- sky/utils/common_utils.py,sha256=QMOt8-PTdBCwS25biSc6L2d5iqFdni5mFJohV24xIIs,35717
419
- sky/utils/config_utils.py,sha256=v8yZcr8OvEfXmBDYcdOj3U-AH1XERY76zGJMNdqzvqc,10339
420
+ sky/utils/common_utils.py,sha256=ScD5ATvtuza7iiS70ajp6ReHyOyyvCubpT1nw6gwDRY,35848
421
+ sky/utils/config_utils.py,sha256=RkTIbZaPbsvQjtj_4R7p4Jz6vIbdkvD-QPs1O5jjiHo,12003
420
422
  sky/utils/context.py,sha256=yEGvcKr9fKEeoAnNKiXDiky7dlLOChFdZYXGr0EeQ9g,9997
421
423
  sky/utils/context_utils.py,sha256=cby-QPmnGObjIE4K7eZ_dkWZdUo7YJUmnJr5oKf_v54,6712
422
424
  sky/utils/control_master_utils.py,sha256=iD4M0onjYOdZ2RuxjwMBl4KhafHXJzuHjvqlBUnu-VE,1450
423
- sky/utils/controller_utils.py,sha256=ZIaAEnIC7l62sk_2Fpd0irpPXppEHHv0HL9d5I3Zkgo,55224
425
+ sky/utils/controller_utils.py,sha256=sl3KrjmU_0UvoNJVH-Aw9mfxdkHUe2Nkr8cwe7OA7H4,55366
424
426
  sky/utils/dag_utils.py,sha256=539bdesvxuh3i4NLthR46wKCWOz0kLAVedcm8D02n5Y,8354
425
427
  sky/utils/db_utils.py,sha256=MlJN4dVUEcMkLMn5rYi1F-WnD9ap2oOoF9lDiqlL0h4,5243
426
428
  sky/utils/env_options.py,sha256=PaQGjem9nK4R8Y_YvCLkNZ891wWiS3t50hE8q2HLis0,1922
@@ -429,12 +431,13 @@ sky/utils/kubernetes_enums.py,sha256=imGqHSa8O07zD_6xH1SDMM7dBU5lF5fzFFlQuQy00QM
429
431
  sky/utils/log_utils.py,sha256=_PMfgKNH5aaTkWoQoS2_XfyAmLa_UbboKMDGxJq3k6s,27360
430
432
  sky/utils/message_utils.py,sha256=zi2Z7PEX6Xq_zvho-aEZe_J7UvpKOLdVDdGAcipRQPU,2662
431
433
  sky/utils/registry.py,sha256=I08nS0rvCF-xR5GEZoHEVgN1jcOeglz77h7xPpBCIjU,4179
432
- sky/utils/resources_utils.py,sha256=R86RcezIy-fnMhJLLn8QM1DzQOPzTWToXnPu1oSt6Bk,14860
434
+ sky/utils/resource_checker.py,sha256=N18XhoVIqjY1VzmKvxQxRchRgC2WIgcEQyHDkLvg4Y8,5825
435
+ sky/utils/resources_utils.py,sha256=9HyFUySaXZsF_XKJvJa1_dy35CrX5tAm5HoOnpYWREo,15106
433
436
  sky/utils/rich_console_utils.py,sha256=wPvAlshaFHuMZSjiDnaK3OSBppZLBjAn-lj7AvxNBQk,553
434
437
  sky/utils/rich_utils.py,sha256=ZKztFc0D5q7ma_NE2p9UKjVS9zqcJ3L53FRw6SPoUvg,14707
435
- sky/utils/schemas.py,sha256=s7SgNBG4wGsycc_AIYSbZoY5ItCo3uKVKI_3PsoLJXA,51385
438
+ sky/utils/schemas.py,sha256=xPgT4I1dywXhYHI5k3zvu26rZZJv6duK1hOspO8UNjA,51633
436
439
  sky/utils/status_lib.py,sha256=QGkd6COD1GX1h30Mk9RMUdyeUOMJs5971GkxTcFgdsU,1705
437
- sky/utils/subprocess_utils.py,sha256=3euz4h7B-tHulmjhQUkY9oWUA0Np5hlL8kHdTHHZOs0,16060
440
+ sky/utils/subprocess_utils.py,sha256=tOpFY_1ml7JkVGAN1o473lcKPklGR95qBCW61eu8kEo,15773
438
441
  sky/utils/timeline.py,sha256=ob6s3bc7nwAuSI76yLKBrSR5bzOHnOhbozz1avwoet4,4070
439
442
  sky/utils/ux_utils.py,sha256=FChNkVnTX3vKsu4_kXt7eaf2jNSoTfwH4XLMBtGK0t4,10233
440
443
  sky/utils/validator.py,sha256=AHIYEBpxzpC2Eg8TulruFqQSjTxeynB0Dc7cfP1RX2M,1159
@@ -468,12 +471,12 @@ sky/volumes/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
468
471
  sky/volumes/server/core.py,sha256=iHn96yb2F6d-sLkNVdVWrXP6Vsdsl9bY8SBj4D0Jnjg,7128
469
472
  sky/volumes/server/server.py,sha256=BJcXZzSzNgj49eVKs-r7i1NdAJSquAnAtLfs825eCg0,3028
470
473
  sky/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
471
- sky/workspaces/core.py,sha256=2kKUP-V5Qo1n-xfayA4M1OE_ina6_4bxkTF3dv3yBEU,20704
474
+ sky/workspaces/core.py,sha256=MkQoVqWN67tf4VRq284U9vgAw4lwb_cpUfwHQT4V9Ow,16598
472
475
  sky/workspaces/server.py,sha256=Box45DS54xXGHy7I3tGKGy-JP0a8G_z6IhfvGlEXtsA,3439
473
476
  sky/workspaces/utils.py,sha256=IIAiFoS6sdb2t0X5YoX9AietpTanZUQNTK8cePun-sY,2143
474
- skypilot_nightly-1.0.0.dev20250627.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
475
- skypilot_nightly-1.0.0.dev20250627.dist-info/METADATA,sha256=2Vuac_gt6MrCnv7UPnCcntWgejGfVgi0n2W7Dy7N-IA,18810
476
- skypilot_nightly-1.0.0.dev20250627.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
477
- skypilot_nightly-1.0.0.dev20250627.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
478
- skypilot_nightly-1.0.0.dev20250627.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
479
- skypilot_nightly-1.0.0.dev20250627.dist-info/RECORD,,
477
+ skypilot_nightly-1.0.0.dev20250628.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
478
+ skypilot_nightly-1.0.0.dev20250628.dist-info/METADATA,sha256=azv_bgD7kzIwduFg5ztzylcOuShisYYM5c3NcF3AJ0c,18810
479
+ skypilot_nightly-1.0.0.dev20250628.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
480
+ skypilot_nightly-1.0.0.dev20250628.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
481
+ skypilot_nightly-1.0.0.dev20250628.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
482
+ skypilot_nightly-1.0.0.dev20250628.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[43],{326: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(5893),s=a(7294),o=a(6327),n=a(2350),l=a(3767);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},3266: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(7294),s=a(5821),o=a(7145),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=>{let r=e.end_at?e.end_at:Date.now()/1e3,s=0,o=0;return e.submitted_at&&(s=r-e.submitted_at),e.start_at&&(o=r-e.start_at),{id:e.job_id,status:e.status,job:e.job_name,user:e.username,gpus:e.accelerators||{},submitted_at:e.submitted_at?new Date(1e3*e.submitted_at):null,resources:e.resources,cluster:t,total_duration:s,job_duration:o,infra:"",logs:"",workspace:a||"default"}})}catch(e){return console.error("Error fetching cluster jobs:",e),[]}}function g(e){let{cluster:t,job:a=null}=e,[s,o]=(0,r.useState)(null),[l,u]=(0,r.useState)(null),[i,g]=(0,r.useState)(!0),[f,p]=(0,r.useState)(!0),_=(0,r.useCallback)(async()=>{if(t)try{g(!0);let e=await n.default.get(c,[{clusterNames:[t]}]);return o(e[0]),e[0]}catch(e){console.error("Error fetching cluster data:",e)}finally{g(!1)}return null},[t]),h=(0,r.useCallback)(async e=>{if(t)try{p(!0);let a=await n.default.get(d,[{clusterName:t,workspace:e||"default"}]);u(a)}catch(e){console.error("Error fetching cluster job data:",e)}finally{p(!1)}},[t]),m=(0,r.useCallback)(async()=>{n.default.invalidate(c,[{clusterNames:[t]}]);let e=await _();e&&(n.default.invalidate(d,[{clusterName:t,workspace:e.workspace||"default"}]),await h(e.workspace))},[_,h,t]),b=(0,r.useCallback)(async()=>{s&&(n.default.invalidate(d,[{clusterName:t,workspace:s.workspace||"default"}]),await h(s.workspace))},[h,s,t]);return(0,r.useEffect)(()=>{(async()=>{let e=await _();e&&h(e.workspace)})()},[t,a,_,h]),{clusterData:s,clusterJobData:l,loading:i,clusterDetailsLoading:i,clusterJobsLoading:f,refreshData:m,refreshClusterJobsOnly:b}}},2045:function(e,t,a){a.d(t,{l4:function(){return n}});var r=a(3225),s=a(7145);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)=>t.clusters-e.clusters||t.jobs-e.jobs),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,3266)),{getManagedJobs:t}=await Promise.resolve().then(a.bind(a,8969)),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:{}}}}},3081:function(e,t,a){a.d(t,{R:function(){return s}}),a(3266),a(8969);var r=a(7145);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}))||[]}catch(e){return console.error("Failed to fetch users:",e),[]}}},6856:function(e,t,a){var r=a(6378),s=a(3266),o=a(8969),n=a(7324),l=a(3081),c=a(2045);let u={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:[]}},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"]}};class i{async preloadForPage(e,t){let{backgroundPreload:a=!0,force:r=!1}=t||{};if(!u.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=u.pages[e],s=[];for(let e of a)if(u.base[e]){let{fn:a,args:o}=u.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(u.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(u.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 d=new i;t.ZP=d}}]);
@@ -1,16 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[690],{1812:function(e,s,r){"use strict";r.d(s,{X:function(){return n}});var t=r(5893),a=r(7294);let l=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,[i,o]=(0,a.useState)(!1);if((0,a.useEffect)(()=>{s&&o(!1)},[s]),!s||i)return null;let c="string"==typeof s?s:l(s);return(0,t.jsx)("div",{className:"bg-red-50 border border-red-200 rounded-md p-3 mb-4",children:(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex",children:[(0,t.jsx)("div",{className:"flex-shrink-0",children:(0,t.jsx)("svg",{className:"h-5 w-5 text-red-400",viewBox:"0 0 20 20",fill:"currentColor",children:(0,t.jsx)("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"})})}),(0,t.jsx)("div",{className:"ml-3",children:(0,t.jsxs)("div",{className:"text-sm text-red-800",children:[(0,t.jsxs)("strong",{children:[r,":"]})," ",c]})})]}),(0,t.jsx)("button",{onClick:()=>{o(!0),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,t.jsx)("svg",{className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:(0,t.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]})})}},8764:function(e,s,r){"use strict";r.d(s,{RM:function(){return o},SC:function(){return c},iA:function(){return n},pj:function(){return u},ss:function(){return d},xD:function(){return i}});var t=r(5893),a=r(7294),l=r(2350);let n=a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("div",{className:"relative w-full overflow-auto",children:(0,t.jsx)("table",{ref:s,className:(0,l.cn)("w-full caption-bottom text-base",r),...a})})});n.displayName="Table";let i=a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("thead",{ref:s,className:(0,l.cn)("[&_tr]:border-b",r),...a})});i.displayName="TableHeader";let o=a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("tbody",{ref:s,className:(0,l.cn)("[&_tr:last-child]:border-0",r),...a})});o.displayName="TableBody",a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("tfoot",{ref:s,className:(0,l.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",r),...a})}).displayName="TableFooter";let c=a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("tr",{ref:s,className:(0,l.cn)("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",r),...a})});c.displayName="TableRow";let d=a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("th",{ref:s,className:(0,l.cn)("h-12 px-4 text-left align-middle font-medium text-[hsl(var(--text-strong))] [&:has([role=checkbox])]:pr-0",r),...a})});d.displayName="TableHead";let u=a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("td",{ref:s,className:(0,l.cn)("p-4 align-middle [&:has([role=checkbox])]:pr-0",r),...a})});u.displayName="TableCell",a.forwardRef((e,s)=>{let{className:r,...a}=e;return(0,t.jsx)("caption",{ref:s,className:(0,l.cn)("mt-4 text-base text-muted-foreground",r),...a})}).displayName="TableCaption"},8310:function(e,s,r){"use strict";r.r(s),r.d(s,{Users:function(){return P}});var t=r(5893),a=r(7294),l=r(5697),n=r.n(l),i=r(8799),o=r(1664),c=r.n(o),d=r(803),u=r(8764),m=r(3081),x=r(3266),h=r(8969),p=r(6378),f=r(6856),g=r(1214),b=r(4545),j=r(998);/**
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 y=(0,j.Z)("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);var v=r(3626);/**
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 w=(0,j.Z)("EyeOff",[["path",{d:"M9.88 9.88a3 3 0 1 0 4.24 4.24",key:"1jxqfv"}],["path",{d:"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68",key:"9wicm4"}],["path",{d:"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61",key:"1jreej"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]),N=(0,j.Z)("Eye",[["path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z",key:"rwhkz3"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),k=(0,j.Z)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);var C=r(282),R=r(3767);/**
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 E=(0,j.Z)("Pen",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]),S=(0,j.Z)("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var D=r(7603);r(9470);var I=r(3001),U=r(7673),L=r(7145),F=r(326),_=r(1812);let Z=(e,s)=>e&&e.includes("@")?e.split("@")[0]:e||"N/A",z=(e,s)=>e&&e.includes("@")?e:s||"-",M=g.nb.REFRESH_INTERVAL,A=e=>{let{message:s,onDismiss:r}=e;return s?(0,t.jsx)("div",{className:"bg-green-50 border border-green-200 rounded p-4 mb-6",children:(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsx)("div",{className:"flex-shrink-0",children:(0,t.jsx)("svg",{className:"h-5 w-5 text-green-400",viewBox:"0 0 20 20",fill:"currentColor",children:(0,t.jsx)("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",clipRule:"evenodd"})})}),(0,t.jsx)("div",{className:"ml-3",children:(0,t.jsx)("p",{className:"text-sm font-medium text-green-800",children:s})})]}),r&&(0,t.jsx)("div",{className:"ml-auto pl-3",children:(0,t.jsx)("div",{className:"-mx-1.5 -my-1.5",children:(0,t.jsxs)("button",{type:"button",onClick:r,className:"inline-flex rounded-md bg-green-50 p-1.5 text-green-500 hover:bg-green-100 focus:outline-none focus:ring-2 focus:ring-green-600 focus:ring-offset-2 focus:ring-offset-green-50",children:[(0,t.jsx)("span",{className:"sr-only",children:"Dismiss"}),(0,t.jsx)("svg",{className:"h-5 w-5",viewBox:"0 0 20 20",fill:"currentColor",children:(0,t.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})]})})})]})}):null};function P(){let[e,s]=(0,a.useState)(!1),r=(0,a.useRef)(null),l=(0,I.X)(),[n,o]=(0,a.useState)(!1),[u,f]=(0,a.useState)({username:"",password:"",role:"user"}),[g,b]=(0,a.useState)(!1),[j,C]=(0,a.useState)({open:!1,message:"",userName:""}),[R,E]=(0,a.useState)(null),[S,D]=(0,a.useState)(!1),[U,Z]=(0,a.useState)(!1),[z,P]=(0,a.useState)(!1),[V,T]=(0,a.useState)(null),[B,O]=(0,a.useState)(!1),[K,H]=(0,a.useState)(null),[X,$]=(0,a.useState)("import"),[J,Y]=(0,a.useState)(!1),[W,G]=(0,a.useState)(null),[Q,ee]=(0,a.useState)(""),[es,er]=(0,a.useState)(!1),[et,ea]=(0,a.useState)(null),[el,en]=(0,a.useState)(!1),[ei,eo]=(0,a.useState)(null),[ec,ed]=(0,a.useState)(null),[eu,em]=(0,a.useState)(!1),[ex,eh]=(0,a.useState)(null),[ep,ef]=(0,a.useState)(null),[eg,eb]=(0,a.useState)(void 0);(0,a.useEffect)(()=>{!async function(){try{let e=await L.x.get("/api/health");if(e.ok){let s=await e.json();eb(!!s.basic_auth_enabled)}else eb(!1)}catch(e){eb(!1)}}()},[]);let ej=(0,a.useCallback)(async()=>{if(R&&Date.now()-R.timestamp<3e5)return R;D(!0);try{let e=await L.x.get("/users/role");if(!e.ok){let s=await e.json();throw Error(s.detail||"Failed to get user role")}let s=await e.json(),r={role:s.role,name:s.name,id:s.id,timestamp:Date.now()};return E(r),D(!1),r}catch(e){throw D(!1),e}},[R]);(0,a.useEffect)(()=>{ej().catch(()=>{console.error("Failed to get user role")})},[ej]);let ey=async(e,s)=>{try{let r=await ej();if("admin"!==r.role)return C({open:!0,message:e,userName:r.name.toLowerCase()}),!1;return s(),!0}catch(e){return console.error("Failed to check user role:",e),C({open:!0,message:"Error: ".concat(e.message),userName:""}),!1}},ev=()=>{p.default.invalidate(m.R),p.default.invalidate(x.getClusters),p.default.invalidate(h.getManagedJobs,[{allUsers:!0}]),r.current&&r.current()},ew=async()=>{if(!u.username||!u.password){ef(Error("Username and password are required.")),o(!1);return}b(!0),ef(null),eh(null);try{let e=await L.x.post("/users/create",u);if(!e.ok){let s=await e.json();throw Error(s.detail||"Failed to create user")}eh('User "'.concat(u.username,'" created successfully!')),o(!1),f({username:"",password:"",role:"user"}),ev()}catch(e){ef(e),o(!1),f({username:"",password:"",role:"user"})}finally{b(!1)}},eN=async e=>{let s=e.target.files[0];s&&(T(s),H(null))},ek=async()=>{if(!V){alert("Please select a CSV file first.");return}O(!0);try{let e=new FileReader;e.onload=async e=>{try{let s=e.target.result,r=await L.x.post("/users/import",{csv_content:s});if(!r.ok){let e=await r.json();throw Error(e.detail||"Failed to import users")}let t=await r.json(),a="Import completed. ".concat(t.success_count," users created successfully.");t.error_count>0&&(a+="\n".concat(t.error_count," failed."),t.creation_errors.length>0&&(a+="\nErrors: ".concat(t.creation_errors.slice(0,3).join(", ")),t.creation_errors.length>3&&(a+=" and ".concat(t.creation_errors.length-3," more...")))),H({message:a}),t.success_count>0&&ev()}catch(e){alert("Error importing users: ".concat(e.message))}finally{O(!1)}},e.readAsText(V)}catch(e){alert("Error reading file: ".concat(e.message)),O(!1)}},eC=async e=>{G(e),ee(""),Y(!0)},eR=async()=>{if(!Q){ea(Error("Please enter a new password."));return}er(!0),ea(null);try{let e=await L.x.post("/users/update",{user_id:W.userId,password:Q});if(!e.ok){let s=await e.json();throw Error(s.detail||"Failed to reset password")}eh('Password reset successfully for user "'.concat(W.usernameDisplay,'"!')),Y(!1),G(null),ee("")}catch(e){ea(e)}finally{er(!1)}},eE=async()=>{if(ei){em(!0),ed(null);try{let e=await L.x.post("/users/delete",{user_id:ei.userId});if(!e.ok){let s=await e.json();throw Error(s.detail||"Failed to delete user")}eh('User "'.concat(ei.usernameDisplay,'" deleted successfully!')),en(!1),eo(null),ev()}catch(e){ed(e)}finally{em(!1)}}},eS=()=>{en(!1),eo(null),ed(null)},eD=()=>{Y(!1),G(null),ee(""),ea(null)};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4 h-5",children:[(0,t.jsx)("div",{className:"text-base",children:(0,t.jsx)(c(),{href:"/users",className:"text-sky-blue hover:underline leading-none",children:"Users"})}),(0,t.jsxs)("div",{className:"flex items-center",children:[e&&(0,t.jsxs)("div",{className:"flex items-center mr-2",children:[(0,t.jsx)(i.Z,{size:15,className:"mt-0"}),(0,t.jsx)("span",{className:"ml-2 text-gray-500 text-sm",children:"Loading..."})]}),eg&&(null==R?void 0:R.role)==="admin"&&(0,t.jsx)("button",{onClick:async()=>{await ey("cannot create users",()=>{o(!0)})},className:"text-sky-blue hover:text-sky-blue-bright flex items-center border-sky-blue rounded px-2 py-1 mr-2",title:"Create New User",children:"+ New User"}),eg&&(null==R?void 0:R.role)==="admin"&&(0,t.jsxs)("button",{onClick:async()=>{await ey("cannot import users",()=>{P(!0)})},className:"text-sky-blue hover:text-sky-blue-bright flex items-center rounded px-2 py-1 mr-2",title:"Import/Export Users",children:[(0,t.jsx)(y,{className:"h-4 w-4 mr-1"}),"Import/Export"]}),(0,t.jsxs)("button",{onClick:ev,disabled:e,className:"text-sky-blue hover:text-sky-blue-bright flex items-center",children:[(0,t.jsx)(v.Z,{className:"h-4 w-4 mr-1.5"}),!l&&(0,t.jsx)("span",{children:"Refresh"})]})]})]}),(0,t.jsx)(A,{message:ex,onDismiss:()=>eh(null)}),(0,t.jsx)(_.X,{error:ep,title:"Error",onDismiss:()=>ef(null)}),(0,t.jsx)(q,{refreshInterval:M,setLoading:s,refreshDataRef:r,checkPermissionAndAct:ey,roleLoading:S,onResetPassword:eC,onDeleteUser:e=>{ey("cannot delete users",()=>{eo(e),en(!0)})},basicAuthEnabled:eg,currentUserRole:null==R?void 0:R.role,currentUserId:null==R?void 0:R.id}),(0,t.jsx)(F.Vq,{open:n,onOpenChange:o,children:(0,t.jsxs)(F.cZ,{className:"sm:max-w-md",children:[(0,t.jsx)(F.fK,{children:(0,t.jsx)(F.$N,{children:"Create User"})}),(0,t.jsxs)("div",{className:"flex flex-col gap-4 py-4",children:[(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Username"}),(0,t.jsx)("input",{className:"border rounded px-3 py-2 w-full",placeholder:"Username",value:u.username,onChange:e=>f({...u,username:e.target.value})})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Password"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("input",{className:"border rounded px-3 py-2 w-full pr-10",placeholder:"Password",type:U?"text":"password",value:u.password,onChange:e=>f({...u,password:e.target.value})}),(0,t.jsx)("button",{type:"button",className:"absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 hover:text-gray-600",onClick:()=>Z(!U),children:U?(0,t.jsx)(w,{className:"h-4 w-4"}):(0,t.jsx)(N,{className:"h-4 w-4"})})]})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Role"}),(0,t.jsxs)("select",{className:"border rounded px-3 py-2 w-full",value:u.role,onChange:e=>f({...u,role:e.target.value}),children:[(0,t.jsx)("option",{value:"user",children:"User"}),(0,t.jsx)("option",{value:"admin",children:"Admin"})]})]})]}),(0,t.jsxs)(F.cN,{children:[(0,t.jsx)("button",{className:"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2",onClick:()=>o(!1),disabled:g,children:"Cancel"}),(0,t.jsx)("button",{className:"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-sky-600 text-white hover:bg-sky-700 h-10 px-4 py-2",onClick:ew,disabled:g,children:g?"Creating...":"Create"})]})]})}),(0,t.jsx)(F.Vq,{open:j.open,onOpenChange:e=>C(s=>({...s,open:e})),children:(0,t.jsxs)(F.cZ,{className:"sm:max-w-md transition-all duration-200 ease-in-out",children:[(0,t.jsxs)(F.fK,{children:[(0,t.jsx)(F.$N,{children:"Permission Denied"}),(0,t.jsx)(F.Be,{children:S?(0,t.jsxs)("div",{className:"flex items-center py-2",children:[(0,t.jsx)(i.Z,{size:16,className:"mr-2"}),(0,t.jsx)("span",{children:"Checking permissions..."})]}):(0,t.jsx)(t.Fragment,{children:j.userName?(0,t.jsxs)(t.Fragment,{children:[j.userName," is logged in as non-admin and ",j.message,"."]}):j.message})})]}),(0,t.jsx)(F.cN,{children:(0,t.jsx)(d.z,{variant:"outline",onClick:()=>C(e=>({...e,open:!1})),disabled:S,children:"OK"})})]})}),(0,t.jsx)(F.Vq,{open:z,onOpenChange:P,children:(0,t.jsxs)(F.cZ,{className:"sm:max-w-lg",children:[(0,t.jsx)(F.fK,{children:(0,t.jsx)(F.$N,{children:"Import/Export Users"})}),(0,t.jsxs)("div",{className:"flex border-b border-gray-200 mb-4",children:[(0,t.jsx)("button",{className:"px-4 py-2 text-sm font-medium ".concat("import"===X?"border-b-2 border-sky-500 text-sky-600":"text-gray-500 hover:text-gray-700"),onClick:()=>$("import"),children:"Import"}),(0,t.jsx)("button",{className:"px-4 py-2 text-sm font-medium ".concat("export"===X?"border-b-2 border-sky-500 text-sky-600":"text-gray-500 hover:text-gray-700"),onClick:()=>$("export"),children:"Export"})]}),(0,t.jsx)("div",{className:"flex flex-col gap-4 py-4",children:"import"===X?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"CSV File"}),(0,t.jsx)("input",{type:"file",accept:".csv",onChange:eN,className:"border rounded px-3 py-2 w-full"}),(0,t.jsxs)("p",{className:"text-xs text-gray-500",children:["CSV should have columns: username, password, role",(0,t.jsx)("br",{}),"Supports both plain text passwords and exported password hashes."]})]}),K&&(0,t.jsx)("div",{className:"p-3 bg-green-50 border border-green-200 rounded text-green-700 text-sm",children:K.message})]}):(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"Export Users to CSV"}),(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"Download all users as a CSV file with password hashes."}),(0,t.jsxs)("div",{className:"p-3 bg-amber-50 border border-amber-200 rounded",children:[(0,t.jsx)("p",{className:"text-sm text-amber-700",children:"⚠️ This will export all users with columns: username, password (hashed), role"}),(0,t.jsx)("p",{className:"text-xs text-amber-600 mt-1",children:"Password hashes can be imported directly for system backups."})]})]})})}),(0,t.jsxs)(F.cN,{children:[(0,t.jsx)("button",{className:"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2",onClick:()=>P(!1),disabled:B,children:"Cancel"}),"import"===X?(0,t.jsx)("button",{className:"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-sky-600 text-white hover:bg-sky-700 h-10 px-4 py-2",onClick:ek,disabled:B||!V,children:B?"Importing...":"Import"}):(0,t.jsxs)("button",{className:"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-sky-600 text-white hover:bg-sky-700 h-10 px-4 py-2",onClick:async()=>{try{let e=await L.x.get("/users/export");if(!e.ok){let s=await e.json();throw Error(s.detail||"Failed to export users")}let s=await e.json(),r=s.csv_content,t=new Blob([r],{type:"text/csv;charset=utf-8;"}),a=URL.createObjectURL(t),l=document.createElement("a");l.href=a;let n=new Date,i=e=>String(e).padStart(2,"0"),o=n.getFullYear(),c=i(n.getMonth()+1),d=i(n.getDate()),u=i(n.getHours()),m=i(n.getMinutes()),x=i(n.getSeconds());l.download="users_export_".concat(o,"-").concat(c,"-").concat(d,"-").concat(u,"-").concat(m,"-").concat(x,".csv"),l.click(),URL.revokeObjectURL(a),alert("Successfully exported ".concat(s.user_count," users to CSV file."))}catch(e){alert("Error exporting users: ".concat(e.message))}},children:[(0,t.jsx)(k,{className:"h-4 w-4 mr-1"}),"Export"]})]})]})}),(0,t.jsx)(F.Vq,{open:J,onOpenChange:eD,children:(0,t.jsxs)(F.cZ,{className:"sm:max-w-md",children:[(0,t.jsxs)(F.fK,{children:[(0,t.jsx)(F.$N,{children:"Reset Password"}),(0,t.jsxs)(F.Be,{children:["Enter a new password for"," ",(null==W?void 0:W.usernameDisplay)||"this user","."]})]}),(0,t.jsx)("div",{className:"flex flex-col gap-4 py-4",children:(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("label",{className:"text-sm font-medium text-gray-700",children:"New Password"}),(0,t.jsx)("input",{type:"password",className:"border rounded px-3 py-2 w-full",placeholder:"Enter new password",value:Q,onChange:e=>ee(e.target.value),autoFocus:!0})]})}),(0,t.jsx)(_.X,{error:et,title:"Reset Failed",onDismiss:()=>ea(null)}),(0,t.jsxs)(F.cN,{children:[(0,t.jsx)(d.z,{variant:"outline",onClick:eD,disabled:es,children:"Cancel"}),(0,t.jsx)(d.z,{variant:"default",onClick:eR,disabled:es||!Q,className:"bg-sky-600 text-white hover:bg-sky-700",children:es?"Resetting...":"Reset Password"})]})]})}),(0,t.jsx)(F.Vq,{open:el,onOpenChange:eS,children:(0,t.jsxs)(F.cZ,{className:"sm:max-w-md",children:[(0,t.jsxs)(F.fK,{children:[(0,t.jsx)(F.$N,{children:"Delete User"}),(0,t.jsxs)(F.Be,{children:['Are you sure you want to delete user "',(null==ei?void 0:ei.usernameDisplay)||"this user",'"? This action cannot be undone.']})]}),(0,t.jsx)(_.X,{error:ec,title:"Deletion Failed",onDismiss:()=>ed(null)}),(0,t.jsxs)(F.cN,{children:[(0,t.jsx)(d.z,{variant:"outline",onClick:eS,disabled:eu,children:"Cancel"}),(0,t.jsx)(d.z,{variant:"destructive",onClick:eE,disabled:eu,children:eu?"Deleting...":"Delete"})]})]})})]})}function q(e){let{refreshInterval:s,setLoading:r,refreshDataRef:l,checkPermissionAndAct:n,roleLoading:o,onResetPassword:d,onDeleteUser:g,basicAuthEnabled:j,currentUserRole:y,currentUserId:v}=e,[w,N]=(0,a.useState)([]),[k,I]=(0,a.useState)(!0),[F,_]=(0,a.useState)(!1),[M,A]=(0,a.useState)({key:"username",direction:"ascending"}),[P,q]=(0,a.useState)(null),[V,T]=(0,a.useState)(""),B=(0,a.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];r&&e&&r(!0),e&&I(!0);try{let s=await p.default.get(m.R),t=(s||[]).map(e=>({...e,usernameDisplay:Z(e.username,e.userId),fullEmailID:z(e.username,e.userId),clusterCount:-1,jobCount:-1}));N(t),_(!0),r&&e&&r(!1),e&&I(!1);let[a,l]=await Promise.all([p.default.get(x.getClusters),p.default.get(h.getManagedJobs,[{allUsers:!0}])]),n=l.jobs||[],i=(s||[]).map(e=>{let s=(a||[]).filter(s=>s.user_hash===e.userId),r=(n||[]).filter(s=>s.user_hash===e.userId);return{...e,usernameDisplay:Z(e.username,e.userId),fullEmailID:z(e.username,e.userId),clusterCount:s.length,jobCount:r.length}});N(i)}catch(s){console.error("Failed to fetch or process user data:",s),N([]),_(!0),r&&e&&r(!1),e&&I(!1)}},[r]);(0,a.useEffect)(()=>{l&&(l.current=()=>B(!0))},[l,B]),(0,a.useEffect)(()=>{(async()=>{_(!1),I(!0),await f.ZP.preloadForPage("users"),B(!0)})();let e=setInterval(()=>{B(!1)},s);return()=>clearInterval(e)},[B,s]);let O=(0,a.useMemo)(()=>(0,b.R0)(w,M.key,M.direction),[w,M]),K=e=>{let s="ascending";M.key===e&&"ascending"===M.direction&&(s="descending"),A({key:e,direction:s})},H=e=>M.key===e?"ascending"===M.direction?" ↑":" ↓":"",X=async(e,s)=>{await n("cannot edit user role",()=>{q(e),T(s)})},$=()=>{q(null),T("")},J=async e=>{if(!e||!V){console.error("User ID or role is missing."),alert("Error: User ID or role is missing.");return}I(!0);try{let s=await L.x.post("/users/update",{user_id:e,role:V});if(!s.ok){let e=await s.json();throw Error(e.detail||"Failed to update role")}p.default.invalidate(m.R),await B(!0),$()}catch(e){console.error("Failed to update user role:",e),alert("Error updating role: ".concat(e.message))}finally{I(!1)}};return k&&0===w.length&&!F?(0,t.jsx)("div",{className:"flex justify-center items-center h-64",children:(0,t.jsx)(i.Z,{})}):F?O&&0!==O.length?(0,t.jsx)(U.Zb,{children:(0,t.jsxs)(u.iA,{children:[(0,t.jsx)(u.xD,{children:(0,t.jsxs)(u.SC,{children:[(0,t.jsxs)(u.ss,{onClick:()=>K("usernameDisplay"),className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50 w-1/5",children:["Name",H("usernameDisplay")]}),(0,t.jsxs)(u.ss,{onClick:()=>K("fullEmailID"),className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50 w-1/5",children:["User ID",H("fullEmailID")]}),(0,t.jsxs)(u.ss,{onClick:()=>K("role"),className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50 w-1/5",children:["Role",H("role")]}),(0,t.jsxs)(u.ss,{onClick:()=>K("clusterCount"),className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50 w-1/5",children:["Clusters",H("clusterCount")]}),(0,t.jsxs)(u.ss,{onClick:()=>K("jobCount"),className:"sortable whitespace-nowrap cursor-pointer hover:bg-gray-50 w-1/5",children:["Jobs",H("jobCount")]}),j&&(0,t.jsx)(u.ss,{className:"whitespace-nowrap w-1/6",children:"Actions"})]})}),(0,t.jsx)(u.RM,{children:O.map(e=>(0,t.jsxs)(u.SC,{children:[(0,t.jsx)(u.pj,{className:"truncate",title:e.username,children:e.usernameDisplay}),(0,t.jsx)(u.pj,{className:"truncate",title:e.fullEmailID,children:e.fullEmailID}),(0,t.jsx)(u.pj,{className:"truncate",title:e.role,children:(0,t.jsx)("div",{className:"flex items-center gap-2",children:P===e.userId?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("select",{value:V,onChange:e=>T(e.target.value),className:"block w-auto p-1 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-sky-blue focus:border-sky-blue sm:text-sm",children:[(0,t.jsx)("option",{value:"admin",children:"Admin"}),(0,t.jsx)("option",{value:"user",children:"User"})]}),(0,t.jsx)("button",{onClick:()=>J(e.userId),className:"text-green-600 hover:text-green-800 p-1",title:"Save",children:(0,t.jsx)(C.Z,{className:"h-4 w-4"})}),(0,t.jsx)("button",{onClick:$,className:"text-gray-500 hover:text-gray-700 p-1",title:"Cancel",children:(0,t.jsx)(R.Z,{className:"h-4 w-4"})})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"capitalize",children:e.role}),"admin"===y&&(0,t.jsx)("button",{onClick:()=>X(e.userId,e.role),className:"text-sky-blue hover:text-sky-blue-bright p-1",title:"Edit role",children:(0,t.jsx)(E,{className:"h-3 w-3"})})]})})}),(0,t.jsx)(u.pj,{children:-1===e.clusterCount?(0,t.jsxs)("span",{className:"px-2 py-0.5 bg-gray-100 text-gray-400 rounded text-xs font-medium flex items-center",children:[(0,t.jsx)(i.Z,{size:10,className:"mr-1"}),"Loading..."]}):(0,t.jsx)(c(),{href:"/clusters?user=".concat(encodeURIComponent(e.userId)),className:"px-2 py-0.5 rounded text-xs font-medium transition-colors duration-200 cursor-pointer inline-block ".concat(e.clusterCount>0?"bg-blue-100 text-blue-800 hover:bg-blue-200 hover:text-blue-900":"bg-gray-100 text-gray-500 hover:bg-gray-200 hover:text-gray-700"),title:"View ".concat(e.clusterCount," cluster").concat(1!==e.clusterCount?"s":""," for ").concat(e.usernameDisplay),children:e.clusterCount})}),(0,t.jsx)(u.pj,{children:-1===e.jobCount?(0,t.jsxs)("span",{className:"px-2 py-0.5 bg-gray-100 text-gray-400 rounded text-xs font-medium flex items-center",children:[(0,t.jsx)(i.Z,{size:10,className:"mr-1"}),"Loading..."]}):(0,t.jsx)(c(),{href:"/jobs?user=".concat(encodeURIComponent(e.userId)),className:"px-2 py-0.5 rounded text-xs font-medium transition-colors duration-200 cursor-pointer inline-block ".concat(e.jobCount>0?"bg-green-100 text-green-800 hover:bg-green-200 hover:text-green-900":"bg-gray-100 text-gray-500 hover:bg-gray-200 hover:text-gray-700"),title:"View ".concat(e.jobCount," job").concat(1!==e.jobCount?"s":""," for ").concat(e.usernameDisplay),children:e.jobCount})}),j&&(0,t.jsx)(u.pj,{className:"relative",children:(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("button",{onClick:"admin"===y||e.userId===v?async()=>{d(e)}:void 0,className:"admin"===y||e.userId===v?"text-sky-blue hover:text-sky-blue-bright p-1":"text-gray-300 cursor-not-allowed p-1",title:"admin"===y||e.userId===v?"Reset Password":"You can only reset your own password",disabled:"admin"!==y&&e.userId!==v,children:(0,t.jsx)(S,{className:"h-4 w-4"})}),"admin"===y&&(0,t.jsx)("button",{onClick:()=>g(e),className:"text-sky-blue hover:text-red-500 p-1",title:"Delete User",children:(0,t.jsx)(D.Z,{className:"h-4 w-4"})})]})})]},e.userId))})]})}):(0,t.jsxs)("div",{className:"text-center py-12",children:[(0,t.jsx)("p",{className:"text-lg font-semibold text-gray-500",children:"No users found."}),(0,t.jsx)("p",{className:"text-sm text-gray-400 mt-1",children:"There are currently no users to display."})]}):(0,t.jsxs)("div",{className:"flex justify-center items-center h-64",children:[(0,t.jsx)(i.Z,{}),(0,t.jsx)("span",{className:"ml-2 text-gray-500",children:"Loading users..."})]})}q.propTypes={refreshInterval:n().number.isRequired,setLoading:n().func.isRequired,refreshDataRef:n().shape({current:n().func}).isRequired,checkPermissionAndAct:n().func.isRequired,roleLoading:n().bool.isRequired,onResetPassword:n().func.isRequired,onDeleteUser:n().func.isRequired,basicAuthEnabled:n().bool,currentUserRole:n().string,currentUserId:n().string}},4545:function(e,s,r){"use strict";function t(e){return e.startsWith("sky-jobs-controller-")}function a(e,s,r){return null===s?e:[...e].sort((e,t)=>e[s]<t[s]?"ascending"===r?-1:1:e[s]>t[s]?"ascending"===r?1:-1:0)}r.d(s,{R0:function(){return a},Ym:function(){return t}})},1163:function(e,s,r){e.exports=r(6036)}}]);
@@ -1,6 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[871,430],{9037:function(e,s,t){"use strict";t.r(s),t.d(s,{ClusterTable:function(){return E},Clusters:function(){return R},Status2Actions:function(){return F},enabledActions:function(){return V},filterClustersByName:function(){return L},handleVSCodeConnection:function(){return O}});var r=t(5893),l=t(7294),a=t(1163),n=t(8799),i=t(6989),c=t(1664),o=t.n(c),d=t(803),u=t(7673),h=t(8764),m=t(3266),x=t(7324),p=t(3081),f=t(4545),j=t(3626),y=t(998);/**
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 w=(0,y.Z)("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]),v=(0,y.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(9470);var g=t(9284),k=t(9307),b=t(3001),N=t(8950),C=t(6378),S=t(6856);t(1272);let _="__ALL_WORKSPACES__",A="__ALL_USERS__";function L(e,s){if(!s||""===s.trim())return e;let t=s.toLowerCase().trim();return e.filter(e=>(e.cluster||"").toLowerCase().includes(t))}let M=(e,s)=>{let t="",r="";return e>=0&&(t=e+"m",r=" "),s&&(t+="".concat(r,"(down)")),""===t&&(t="-"),t},q=(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},I=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 R(){var e;let s=(0,a.useRouter)(),[t,c]=(0,l.useState)(!1),d=l.useRef(null),[u,h]=(0,l.useState)(!1),[f,y]=(0,l.useState)(!1),[w,v]=(0,l.useState)(null),[k,L]=(0,l.useState)(_),[M,I]=(0,l.useState)(A),[R,O]=(0,l.useState)(""),[H,V]=(0,l.useState)([]),[W,F]=(0,l.useState)([]),[z,Z]=(0,l.useState)(!1),B=(0,b.X)();(0,l.useEffect)(()=>{s.isReady&&(s.query.workspace&&L(Array.isArray(s.query.workspace)?s.query.workspace[0]:s.query.workspace),s.query.user&&I(Array.isArray(s.query.user)?s.query.user[0]:s.query.user),s.query.name&&O(Array.isArray(s.query.name)?s.query.name[0]:s.query.name))},[s.isReady,s.query.workspace,s.query.user,s.query.name]);let P=(e,t,r)=>{let l={...s.query};e&&e!==_?l.workspace=e:delete l.workspace,t&&t!==A?l.user=t:delete l.user,r&&""!==r.trim()?l.name=r.trim():delete l.name,s.replace({pathname:s.pathname,query:l},void 0,{shallow:!0})},U=e=>{O(e),P(k,M,e)};return(0,l.useEffect)(()=>{(async()=>{try{await S.ZP.preloadForPage("clusters");let e=await C.default.get(x.fX),s=Object.keys(e),t=await C.default.get(m.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)),V(Array.from(l).sort());let a=await C.default.get(p.R),n=[...new Set(t.map(e=>({userId:e.user_hash||e.user,username:e.user})).filter(e=>e.userId)).values()],i=new Map;a.forEach(e=>{i.set(e.userId,{userId:e.userId,username:e.username,display:q(e.username,e.userId)})}),n.forEach(e=>{i.has(e.userId)||i.set(e.userId,{userId:e.userId,username:e.username,display:q(e.username,e.userId)})}),F(Array.from(i.values()).sort((e,s)=>e.display.localeCompare(s.display)))}catch(e){console.error("Error fetching data for filters:",e),V(["default"]),F([])}})()},[]),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex items-center justify-between mb-4 h-5",children:[(0,r.jsxs)("div",{className:"text-base flex items-center",children:[(0,r.jsx)(o(),{href:"/clusters",className:"text-sky-blue hover:underline leading-none",children:"Sky Clusters"}),(0,r.jsx)("div",{className:"flex items-center ml-6 space-x-3",children:(0,r.jsxs)("label",{className:"flex items-center cursor-pointer",children:[(0,r.jsx)("input",{type:"checkbox",checked:z,onChange:e=>Z(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(z?"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(z?"translate-x-5":"translate-x-1")})}),(0,r.jsx)("span",{className:"ml-2 text-sm text-gray-700",children:"Show history (Last 30 days)"})]})}),(0,r.jsxs)("div",{className:"relative ml-4 mr-2",children:[(0,r.jsx)("input",{type:"text",placeholder:"Filter by cluster name",value:R,onChange:e=>U(e.target.value),className:"h-8 w-32 sm:w-48 px-3 pr-8 text-sm border border-gray-300 rounded-md focus:ring-1 focus:ring-sky-500 focus:border-sky-500 outline-none"}),R&&(0,r.jsx)("button",{onClick:()=>U(""),className:"absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600",title:"Clear filter",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"})})})]}),(0,r.jsxs)(N.Ph,{value:k,onValueChange:e=>{L(e),P(e,M,R)},children:[(0,r.jsx)(N.i4,{className:"h-8 w-48 ml-2 mr-2 text-sm border-none focus:ring-0 focus:outline-none",children:(0,r.jsx)(N.ki,{placeholder:"Filter by workspace...",children:k===_?"All Workspaces":k})}),(0,r.jsxs)(N.Bw,{children:[(0,r.jsx)(N.Ql,{value:_,children:"All Workspaces"}),H.map(e=>(0,r.jsx)(N.Ql,{value:e,children:e},e))]})]}),(0,r.jsxs)(N.Ph,{value:M,onValueChange:e=>{I(e),P(k,e,R)},children:[(0,r.jsx)(N.i4,{className:"h-8 w-48 ml-2 mr-2 text-sm border-none focus:ring-0 focus:outline-none",children:(0,r.jsx)(N.ki,{placeholder:"Filter by user...",children:M===A?"All Users":(null===(e=W.find(e=>e.userId===M))||void 0===e?void 0:e.display)||M})}),(0,r.jsxs)(N.Bw,{children:[(0,r.jsx)(N.Ql,{value:A,children:"All Users"}),W.map(e=>(0,r.jsx)(N.Ql,{value:e.userId,children:e.display},e.userId))]})]})]}),(0,r.jsxs)("div",{className:"flex items-center",children:[t&&(0,r.jsxs)("div",{className:"flex items-center mr-2",children:[(0,r.jsx)(n.Z,{size:15,className:"mt-0"}),(0,r.jsx)("span",{className:"ml-2 text-gray-500",children:"Loading..."})]}),(0,r.jsxs)("button",{onClick:()=>{C.default.invalidate(m.getClusters),C.default.invalidate(m.uR),C.default.invalidate(x.fX),C.default.invalidate(p.R),d.current&&d.current()},disabled:t,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"}),!B&&(0,r.jsx)("span",{children:"Refresh"})]})]})]}),(0,r.jsx)(E,{refreshInterval:i.yc,setLoading:c,refreshDataRef:d,workspaceFilter:k,userFilter:M,nameFilter:R,showHistory:z,onOpenSSHModal:e=>{v(e),h(!0)},onOpenVSCodeModal:e=>{v(e),y(!0)}}),(0,r.jsx)(g.Oh,{isOpen:u,onClose:()=>h(!1),cluster:w}),(0,r.jsx)(g._R,{isOpen:f,onClose:()=>y(!1),cluster:w})]})}function E(e){let{refreshInterval:s,setLoading:t,refreshDataRef:a,workspaceFilter:c,userFilter:x,nameFilter:p,showHistory:j,onOpenSSHModal:y,onOpenVSCodeModal:w}=e,[v,g]=(0,l.useState)([]),[b,N]=(0,l.useState)({key:null,direction:"ascending"}),[S,q]=(0,l.useState)(!1),[R,E]=(0,l.useState)(!0),[O,H]=(0,l.useState)(1),[V,W]=(0,l.useState)(10),z=l.useCallback(async()=>{t(!0),q(!0);try{let e=await C.default.get(m.getClusters);if(j){let s=await C.default.get(m.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)}),g(l)}else{let s=e.map(e=>({...e,isHistorical:!1}));g(s)}}catch(e){console.error("Error fetching cluster data:",e),g([])}t(!1),q(!1),E(!1)},[t,j]),Z=l.useMemo(()=>{let e=v;return c&&c!==_&&(e=e.filter(e=>(e.workspace||"default").toLowerCase()===c.toLowerCase())),x&&x!==A&&(e=e.filter(e=>(e.user_hash||e.user)===x)),p&&(e=L(e,p)),(0,f.R0)(e,b.key,b.direction)},[v,b,c,x,p]);l.useEffect(()=>{a&&(a.current=z)},[a,z]),(0,l.useEffect)(()=>{g([]);let e=!0;z();let t=setInterval(()=>{e&&z()},s);return()=>{e=!1,clearInterval(t)}},[s,z]),(0,l.useEffect)(()=>{H(1)},[v.length]);let B=e=>{let s="ascending";b.key===e&&"ascending"===b.direction&&(s="descending"),N({key:e,direction:s})},P=e=>b.key===e?"ascending"===b.direction?" ↑":" ↓":"",U=Math.ceil(Z.length/V),Q=(O-1)*V,X=Q+V,D=Z.slice(Q,X);return(0,r.jsxs)("div",{children:[(0,r.jsx)(u.Zb,{children:(0,r.jsx)("div",{className:"overflow-x-auto",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:()=>B("status"),children:["Status",P("status")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>B("cluster"),children:["Cluster",P("cluster")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap hidden sm:table-cell",onClick:()=>B("user"),children:["User",P("user")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap hidden md:table-cell",onClick:()=>B("workspace"),children:["Workspace",P("workspace")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap hidden lg:table-cell",onClick:()=>B("infra"),children:["Infra",P("infra")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap hidden xl:table-cell",onClick:()=>B("resources_str"),children:["Resources",P("resources_str")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap",onClick:()=>B("time"),children:["Started",P("time")]}),j&&(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap hidden lg:table-cell",onClick:()=>B("duration"),children:["Duration",P("duration")]}),(0,r.jsxs)(h.ss,{className:"sortable whitespace-nowrap hidden md:table-cell",onClick:()=>B("autostop"),children:["Autostop",P("autostop")]}),(0,r.jsx)(h.ss,{className:"sticky right-0 bg-white",children:"Actions"})]})}),(0,r.jsx)(h.RM,{children:S&&R?(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..."})]})})}):D.length>0?D.map((e,s)=>(0,r.jsxs)(h.SC,{children:[(0,r.jsx)(h.pj,{children:(0,r.jsx)(k.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,{className:"hidden sm:table-cell",children:e.user}),(0,r.jsx)(h.pj,{className:"hidden md:table-cell",children:(0,r.jsx)(o(),{href:"/workspaces",className:"text-blue-600 hover:underline",children:e.workspace||"default"})}),(0,r.jsx)(h.pj,{className:"hidden lg:table-cell",children:(0,r.jsx)(i.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,{className:"hidden xl:table-cell",children:(0,r.jsx)(i.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)(i.Zg,{date:e.time})}),j&&(0,r.jsx)(h.pj,{className:"hidden lg:table-cell",children:I(e.duration)}),(0,r.jsx)(h.pj,{className:"hidden md:table-cell",children:e.isHistorical?"-":M(e.autostop,e.to_down)}),(0,r.jsx)(h.pj,{className:"text-left sticky right-0 bg-white",children:!e.isHistorical&&(0,r.jsx)(F,{cluster:e.cluster,status:e.status,onOpenSSHModal:y,onOpenVSCodeModal:w})})]},s)):(0,r.jsx)(h.SC,{children:(0,r.jsx)(h.pj,{colSpan:9,className:"text-center py-6 text-gray-500",children:j?"No clusters found":"No active clusters"})})})]})})}),v.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:V,onChange:e=>{W(parseInt(e.target.value,10)),H(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.jsxs)("div",{children:[Q+1," – ",Math.min(X,v.length)," of"," ",v.length]}),(0,r.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,r.jsx)(d.z,{variant:"ghost",size:"icon",onClick:()=>{H(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)(d.z,{variant:"ghost",size:"icon",onClick:()=>{H(e=>Math.min(e+1,U))},disabled:O===U||0===U,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 O=(e,s)=>{s&&s(e)},H=(e,s)=>{s?s(e):window.open("ssh://".concat(e))},V=e=>"RUNNING"===e?["connect","VSCode"]:[],W={connect:(0,r.jsx)(w,{className:"w-4 h-4 text-gray-500 inline-block"}),VSCode:(0,r.jsx)(v,{className:"w-4 h-4 text-gray-500 inline-block"})};function F(e){let{withLabel:s=!1,cluster:t,status:l,onOpenSSHModal:a,onOpenVSCodeModal:n}=e,c=V(l),o=(0,b.X)(),d=e=>{switch(e){case"connect":H(t,a);break;case"VSCode":O(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=""),c.includes(a))?(0,r.jsx)(i.WH,{content:l,className:"capitalize text-sm text-muted-foreground",children:(0,r.jsxs)("button",{onClick:()=>d(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)(i.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)})})})}},1163:function(e,s,t){e.exports=t(6036)},2003:function(e,s,t){"use strict";t.d(s,{j:function(){return n}});var r=t(512);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:i}=s,c=Object.keys(n).map(e=>{let s=null==t?void 0:t[e],r=null==i?void 0:i[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,c,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({...i,...o}[s]):({...i,...o})[s]===t})?[...e,t,r]:e},[]),null==t?void 0:t.class,null==t?void 0:t.className)}}}]);