skypilot-nightly 1.0.0.dev20251025__py3-none-any.whl → 1.0.0.dev20251027__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.

Potentially problematic release.


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

Files changed (33) hide show
  1. sky/__init__.py +2 -2
  2. sky/client/cli/command.py +30 -15
  3. sky/client/sdk.py +4 -4
  4. sky/dashboard/out/404.html +1 -1
  5. sky/dashboard/out/_next/static/chunks/{webpack-4abaae354da0ba13.js → webpack-585d805f693dbceb.js} +1 -1
  6. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  7. sky/dashboard/out/clusters/[cluster].html +1 -1
  8. sky/dashboard/out/clusters.html +1 -1
  9. sky/dashboard/out/config.html +1 -1
  10. sky/dashboard/out/index.html +1 -1
  11. sky/dashboard/out/infra/[context].html +1 -1
  12. sky/dashboard/out/infra.html +1 -1
  13. sky/dashboard/out/jobs/[job].html +1 -1
  14. sky/dashboard/out/jobs/pools/[pool].html +1 -1
  15. sky/dashboard/out/jobs.html +1 -1
  16. sky/dashboard/out/users.html +1 -1
  17. sky/dashboard/out/volumes.html +1 -1
  18. sky/dashboard/out/workspace/new.html +1 -1
  19. sky/dashboard/out/workspaces/[name].html +1 -1
  20. sky/dashboard/out/workspaces.html +1 -1
  21. sky/global_user_state.py +52 -72
  22. sky/server/requests/requests.py +63 -0
  23. sky/server/requests/serializers/decoders.py +9 -3
  24. sky/server/server.py +32 -6
  25. sky/utils/command_runner.py +8 -0
  26. {skypilot_nightly-1.0.0.dev20251025.dist-info → skypilot_nightly-1.0.0.dev20251027.dist-info}/METADATA +37 -37
  27. {skypilot_nightly-1.0.0.dev20251025.dist-info → skypilot_nightly-1.0.0.dev20251027.dist-info}/RECORD +33 -33
  28. /sky/dashboard/out/_next/static/{WfMolkH3tkVNEHhHaH9uk → YP5Vc3ROcDnTGta0XAhcs}/_buildManifest.js +0 -0
  29. /sky/dashboard/out/_next/static/{WfMolkH3tkVNEHhHaH9uk → YP5Vc3ROcDnTGta0XAhcs}/_ssgManifest.js +0 -0
  30. {skypilot_nightly-1.0.0.dev20251025.dist-info → skypilot_nightly-1.0.0.dev20251027.dist-info}/WHEEL +0 -0
  31. {skypilot_nightly-1.0.0.dev20251025.dist-info → skypilot_nightly-1.0.0.dev20251027.dist-info}/entry_points.txt +0 -0
  32. {skypilot_nightly-1.0.0.dev20251025.dist-info → skypilot_nightly-1.0.0.dev20251027.dist-info}/licenses/LICENSE +0 -0
  33. {skypilot_nightly-1.0.0.dev20251025.dist-info → skypilot_nightly-1.0.0.dev20251027.dist-info}/top_level.txt +0 -0
sky/__init__.py CHANGED
@@ -7,7 +7,7 @@ import urllib.request
7
7
  from sky.utils import directory_utils
8
8
 
9
9
  # Replaced with the current commit when building the wheels.
10
- _SKYPILOT_COMMIT_SHA = 'db2c05dcce1bdbe095b652c2902a1627aca435c8'
10
+ _SKYPILOT_COMMIT_SHA = 'b7eec54b8f52d7f72ff5b3908ba7f2d66b8bca6a'
11
11
 
12
12
 
13
13
  def _get_git_commit():
@@ -37,7 +37,7 @@ def _get_git_commit():
37
37
 
38
38
 
39
39
  __commit__ = _get_git_commit()
40
- __version__ = '1.0.0.dev20251025'
40
+ __version__ = '1.0.0.dev20251027'
41
41
  __root_dir__ = directory_utils.get_sky_dir()
42
42
 
43
43
 
sky/client/cli/command.py CHANGED
@@ -3358,6 +3358,7 @@ def _down_or_stop_clusters(
3358
3358
  success_progress = True
3359
3359
  message = (f'{colorama.Fore.GREEN}{operation} '
3360
3360
  f'cluster {name!r}...done{colorama.Style.RESET_ALL}')
3361
+ successes.append(name)
3361
3362
  if idle_minutes_to_autostop >= 0:
3362
3363
  option_str = 'down' if down else 'stop'
3363
3364
  passive_str = 'downed' if down else 'stopped'
@@ -3428,17 +3429,30 @@ def _down_or_stop_clusters(
3428
3429
  click.secho(f'{operation} requests are sent. Check the requests\' '
3429
3430
  'status with `sky request get <request_id>`.')
3430
3431
 
3431
- click.echo('\nSummary:')
3432
- if successes:
3433
- click.echo(' ✓ Succeeded: ' + ', '.join(successes))
3432
+ show_summary = len(clusters) > 1
3433
+
3434
+ if show_summary:
3435
+ click.echo('\nSummary:')
3436
+ if successes:
3437
+ # Preserve the original order of clusters as provided by user.
3438
+ click.echo(' ✓ Succeeded: ' + ', '.join(successes))
3439
+ if failures:
3440
+ # Format failures: if one failure, keep on same line. If multiple,
3441
+ # indent each failed cluster on its own line for readability.
3442
+ if len(failures) == 1:
3443
+ name, reason = failures[0]
3444
+ first = reason.strip().splitlines()[0]
3445
+ first = first if len(first) <= 120 else first[:120] + '…'
3446
+ click.echo(f' ✗ Failed: {name} ({first})')
3447
+ else:
3448
+ click.echo(' ✗ Failed:')
3449
+ for name, reason in failures:
3450
+ first = reason.strip().splitlines()[0]
3451
+ first = first if len(first) <= 120 else first[:120] + '…'
3452
+ click.echo(f' {name} ({first})')
3453
+
3434
3454
  if failures:
3435
- failed_pretty = []
3436
- for name, reason in failures:
3437
- first = reason.strip().splitlines()[0]
3438
- first = first if len(first) <= 120 else first[:120] + '…'
3439
- failed_pretty.append(f'{name} ({first})')
3440
- click.echo(' ✗ Failed: ' + ', '.join(failed_pretty))
3441
- raise click.ClickException('Some clusters failed. See summary above.')
3455
+ raise click.ClickException('Cluster(s) failed. See details above.')
3442
3456
 
3443
3457
 
3444
3458
  @cli.command(cls=_DocumentedCodeCommand)
@@ -6340,7 +6354,7 @@ INT_OR_NONE = IntOrNone()
6340
6354
 
6341
6355
  @api.command('status', cls=_DocumentedCodeCommand)
6342
6356
  @flags.config_option(expose_value=False)
6343
- @click.argument('request_ids',
6357
+ @click.argument('request_id_prefixes',
6344
6358
  required=False,
6345
6359
  type=str,
6346
6360
  nargs=-1,
@@ -6362,15 +6376,16 @@ INT_OR_NONE = IntOrNone()
6362
6376
  @flags.verbose_option('Show more details.')
6363
6377
  @usage_lib.entrypoint
6364
6378
  # pylint: disable=redefined-builtin
6365
- def api_status(request_ids: Optional[List[str]], all_status: bool,
6379
+ def api_status(request_id_prefixes: Optional[List[str]], all_status: bool,
6366
6380
  verbose: bool, limit: Optional[int]):
6367
6381
  """List requests on SkyPilot API server."""
6368
- if not request_ids:
6369
- request_ids = None
6382
+ if not request_id_prefixes:
6383
+ request_id_prefixes = None
6370
6384
  fields = _DEFAULT_REQUEST_FIELDS_TO_SHOW
6371
6385
  if verbose:
6372
6386
  fields = _VERBOSE_REQUEST_FIELDS_TO_SHOW
6373
- request_list = sdk.api_status(request_ids, all_status, limit, fields)
6387
+ request_list = sdk.api_status(request_id_prefixes, all_status, limit,
6388
+ fields)
6374
6389
  columns = ['ID', 'User', 'Name']
6375
6390
  if verbose:
6376
6391
  columns.append('Cluster')
sky/client/sdk.py CHANGED
@@ -2099,16 +2099,16 @@ def stream_and_get(
2099
2099
  timeout=(client_common.API_SERVER_REQUEST_CONNECTION_TIMEOUT_SECONDS,
2100
2100
  None),
2101
2101
  stream=True)
2102
+ if response.status_code in [404, 400]:
2103
+ detail = response.json().get('detail')
2104
+ with ux_utils.print_exception_no_traceback():
2105
+ raise exceptions.ClientError(f'Failed to stream logs: {detail}')
2102
2106
  stream_request_id: Optional[server_common.RequestId[
2103
2107
  T]] = server_common.get_stream_request_id(response)
2104
2108
  if request_id is not None and stream_request_id is not None:
2105
2109
  assert request_id == stream_request_id
2106
2110
  if request_id is None:
2107
2111
  request_id = stream_request_id
2108
- if response.status_code in [404, 400]:
2109
- detail = response.json().get('detail')
2110
- with ux_utils.print_exception_no_traceback():
2111
- raise exceptions.ClientError(f'Failed to stream logs: {detail}')
2112
2112
  elif response.status_code != 200:
2113
2113
  # TODO(syang): handle the case where the requestID is not provided
2114
2114
  # see https://github.com/skypilot-org/skypilot/issues/6549
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- !function(){"use strict";var e,t,n,r,c,o,u,i,f,a={},s={};function d(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}},r=!0;try{a[e](n,n.exports,d),r=!1}finally{r&&delete s[e]}return n.exports}d.m=a,e=[],d.O=function(t,n,r,c){if(n){c=c||0;for(var o=e.length;o>0&&e[o-1][2]>c;o--)e[o]=e[o-1];e[o]=[n,r,c];return}for(var u=1/0,o=0;o<e.length;o++){for(var n=e[o][0],r=e[o][1],c=e[o][2],i=!0,f=0;f<n.length;f++)u>=c&&Object.keys(d.O).every(function(e){return d.O[e](n[f])})?n.splice(f--,1):(i=!1,c<u&&(u=c));if(i){e.splice(o--,1);var a=r();void 0!==a&&(t=a)}}return t},d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},d.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var c=Object.create(null);d.r(c);var o={};t=t||[null,n({}),n([]),n(n)];for(var u=2&r&&e;"object"==typeof u&&!~t.indexOf(u);u=n(u))Object.getOwnPropertyNames(u).forEach(function(t){o[t]=function(){return e[t]}});return o.default=function(){return e},d.d(c,o),c},d.d=function(e,t){for(var n in t)d.o(t,n)&&!d.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},d.f={},d.e=function(e){return Promise.all(Object.keys(d.f).reduce(function(t,n){return d.f[n](e,t),t},[]))},d.u=function(e){return 2350===e?"static/chunks/2350.fab69e61bac57b23.js":2369===e?"static/chunks/2369.fc20f0c2c8ed9fe7.js":3937===e?"static/chunks/3937.210053269f121201.js":9025===e?"static/chunks/9025.c12318fb6a1a9093.js":4937===e?"static/chunks/4937.a2baa2df5572a276.js":3294===e?"static/chunks/3294.6d5054a953a818cb.js":8640===e?"static/chunks/8640.5b9475a2d18c5416.js":2755===e?"static/chunks/2755.227c84f5adf75c6b.js":9847===e?"static/chunks/9847.3aaca6bb33455140.js":4725===e?"static/chunks/4725.a830b5c9e7867c92.js":3785===e?"static/chunks/3785.538eb23a098fc304.js":9360===e?"static/chunks/9360.07d78b8552bc9d17.js":"static/chunks/"+e+"-"+({616:"3d59f75e2ccf9321",1141:"d5204f35a3388bf4",1272:"1ef0bf0237faccdb",1871:"81adbc5f25dff78f",3015:"2dcace420c8939f4",3850:"ff4a9a69d978632b",4282:"d2f3ef2fbf78e347",5739:"d67458fcb1386c92",6130:"2be46d70a38f1e82",6601:"06114c982db410b6",6856:"5c94d394259cdb6e",6989:"01359c57e018caa4",6990:"f6818c84ed8f1c86",7359:"c8d04e06886000b3",7411:"b15471acd2cba716",8969:"0389e2cb52412db3",9353:"cff34f7e773b2e2b"})[e]+".js"},d.miniCssF=function(e){},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},c="_N_E:",d.l=function(e,t,n,o){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var u,i,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var s=f[a];if(s.getAttribute("src")==e||s.getAttribute("data-webpack")==c+n){u=s;break}}u||(i=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,d.nc&&u.setAttribute("nonce",d.nc),u.setAttribute("data-webpack",c+n),u.src=d.tu(e)),r[e]=[t];var b=function(t,n){u.onerror=u.onload=null,clearTimeout(l);var c=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),c&&c.forEach(function(e){return e(n)}),t)return t(n)},l=setTimeout(b.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=b.bind(null,u.onerror),u.onload=b.bind(null,u.onload),i&&document.head.appendChild(u)},d.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.tt=function(){return void 0===o&&(o={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(o=trustedTypes.createPolicy("nextjs#bundler",o))),o},d.tu=function(e){return d.tt().createScriptURL(e)},d.p="/dashboard/_next/",u={2272:0},d.f.j=function(e,t){var n=d.o(u,e)?u[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(2272!=e){var r=new Promise(function(t,r){n=u[e]=[t,r]});t.push(n[2]=r);var c=d.p+d.u(e),o=Error();d.l(c,function(t){if(d.o(u,e)&&(0!==(n=u[e])&&(u[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;o.message="Loading chunk "+e+" failed.\n("+r+": "+c+")",o.name="ChunkLoadError",o.type=r,o.request=c,n[1](o)}},"chunk-"+e,e)}else u[e]=0}},d.O.j=function(e){return 0===u[e]},i=function(e,t){var n,r,c=t[0],o=t[1],i=t[2],f=0;if(c.some(function(e){return 0!==u[e]})){for(n in o)d.o(o,n)&&(d.m[n]=o[n]);if(i)var a=i(d)}for(e&&e(t);f<c.length;f++)r=c[f],d.o(u,r)&&u[r]&&u[r][0](),u[r]=0;return d.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(i.bind(null,0)),f.push=i.bind(null,f.push.bind(f)),d.nc=void 0}();
1
+ !function(){"use strict";var e,t,n,r,c,o,u,i,f,a={},s={};function d(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={exports:{}},r=!0;try{a[e](n,n.exports,d),r=!1}finally{r&&delete s[e]}return n.exports}d.m=a,e=[],d.O=function(t,n,r,c){if(n){c=c||0;for(var o=e.length;o>0&&e[o-1][2]>c;o--)e[o]=e[o-1];e[o]=[n,r,c];return}for(var u=1/0,o=0;o<e.length;o++){for(var n=e[o][0],r=e[o][1],c=e[o][2],i=!0,f=0;f<n.length;f++)u>=c&&Object.keys(d.O).every(function(e){return d.O[e](n[f])})?n.splice(f--,1):(i=!1,c<u&&(u=c));if(i){e.splice(o--,1);var a=r();void 0!==a&&(t=a)}}return t},d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},d.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var c=Object.create(null);d.r(c);var o={};t=t||[null,n({}),n([]),n(n)];for(var u=2&r&&e;"object"==typeof u&&!~t.indexOf(u);u=n(u))Object.getOwnPropertyNames(u).forEach(function(t){o[t]=function(){return e[t]}});return o.default=function(){return e},d.d(c,o),c},d.d=function(e,t){for(var n in t)d.o(t,n)&&!d.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},d.f={},d.e=function(e){return Promise.all(Object.keys(d.f).reduce(function(t,n){return d.f[n](e,t),t},[]))},d.u=function(e){return 2350===e?"static/chunks/2350.fab69e61bac57b23.js":2369===e?"static/chunks/2369.fc20f0c2c8ed9fe7.js":3937===e?"static/chunks/3937.210053269f121201.js":9025===e?"static/chunks/9025.c12318fb6a1a9093.js":4937===e?"static/chunks/4937.a2baa2df5572a276.js":3294===e?"static/chunks/3294.6d5054a953a818cb.js":8640===e?"static/chunks/8640.5b9475a2d18c5416.js":9847===e?"static/chunks/9847.3aaca6bb33455140.js":4725===e?"static/chunks/4725.a830b5c9e7867c92.js":2755===e?"static/chunks/2755.227c84f5adf75c6b.js":3785===e?"static/chunks/3785.538eb23a098fc304.js":9360===e?"static/chunks/9360.07d78b8552bc9d17.js":"static/chunks/"+e+"-"+({616:"3d59f75e2ccf9321",1141:"d5204f35a3388bf4",1272:"1ef0bf0237faccdb",1871:"81adbc5f25dff78f",3015:"2dcace420c8939f4",3850:"ff4a9a69d978632b",4282:"d2f3ef2fbf78e347",5739:"d67458fcb1386c92",6130:"2be46d70a38f1e82",6601:"06114c982db410b6",6856:"5c94d394259cdb6e",6989:"01359c57e018caa4",6990:"f6818c84ed8f1c86",7359:"c8d04e06886000b3",7411:"b15471acd2cba716",8969:"0389e2cb52412db3",9353:"cff34f7e773b2e2b"})[e]+".js"},d.miniCssF=function(e){},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},c="_N_E:",d.l=function(e,t,n,o){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var u,i,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var s=f[a];if(s.getAttribute("src")==e||s.getAttribute("data-webpack")==c+n){u=s;break}}u||(i=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,d.nc&&u.setAttribute("nonce",d.nc),u.setAttribute("data-webpack",c+n),u.src=d.tu(e)),r[e]=[t];var b=function(t,n){u.onerror=u.onload=null,clearTimeout(l);var c=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),c&&c.forEach(function(e){return e(n)}),t)return t(n)},l=setTimeout(b.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=b.bind(null,u.onerror),u.onload=b.bind(null,u.onload),i&&document.head.appendChild(u)},d.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.tt=function(){return void 0===o&&(o={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(o=trustedTypes.createPolicy("nextjs#bundler",o))),o},d.tu=function(e){return d.tt().createScriptURL(e)},d.p="/dashboard/_next/",u={2272:0},d.f.j=function(e,t){var n=d.o(u,e)?u[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(2272!=e){var r=new Promise(function(t,r){n=u[e]=[t,r]});t.push(n[2]=r);var c=d.p+d.u(e),o=Error();d.l(c,function(t){if(d.o(u,e)&&(0!==(n=u[e])&&(u[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;o.message="Loading chunk "+e+" failed.\n("+r+": "+c+")",o.name="ChunkLoadError",o.type=r,o.request=c,n[1](o)}},"chunk-"+e,e)}else u[e]=0}},d.O.j=function(e){return 0===u[e]},i=function(e,t){var n,r,c=t[0],o=t[1],i=t[2],f=0;if(c.some(function(e){return 0!==u[e]})){for(n in o)d.o(o,n)&&(d.m[n]=o[n]);if(i)var a=i(d)}for(e&&e(t);f<c.length;f++)r=c[f],d.o(u,r)&&u[r]&&u[r][0](),u[r]=0;return d.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(i.bind(null,0)),f.push=i.bind(null,f.push.bind(f)),d.nc=void 0}();
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/9353-cff34f7e773b2e2b.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-c815b90e296b8075.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/9353-cff34f7e773b2e2b.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D/%5Bjob%5D-c815b90e296b8075.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]/[job]","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/7359-c8d04e06886000b3.js" defer=""></script><script src="/dashboard/_next/static/chunks/6212-7bd06f60ba693125.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-0389e2cb52412db3.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-f6818c84ed8f1c86.js" defer=""></script><script src="/dashboard/_next/static/chunks/9353-cff34f7e773b2e2b.js" defer=""></script><script src="/dashboard/_next/static/chunks/4282-d2f3ef2fbf78e347.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-06114c982db410b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/3015-2dcace420c8939f4.js" defer=""></script><script src="/dashboard/_next/static/chunks/6856-5c94d394259cdb6e.js" defer=""></script><script src="/dashboard/_next/static/chunks/1871-81adbc5f25dff78f.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-fbf2907ce2bb67e2.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/7359-c8d04e06886000b3.js" defer=""></script><script src="/dashboard/_next/static/chunks/6212-7bd06f60ba693125.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-0389e2cb52412db3.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-f6818c84ed8f1c86.js" defer=""></script><script src="/dashboard/_next/static/chunks/9353-cff34f7e773b2e2b.js" defer=""></script><script src="/dashboard/_next/static/chunks/4282-d2f3ef2fbf78e347.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-06114c982db410b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/3015-2dcace420c8939f4.js" defer=""></script><script src="/dashboard/_next/static/chunks/6856-5c94d394259cdb6e.js" defer=""></script><script src="/dashboard/_next/static/chunks/1871-81adbc5f25dff78f.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters/%5Bcluster%5D-fbf2907ce2bb67e2.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters/[cluster]","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-9e0df5442b04f7d0.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/clusters-9e0df5442b04f7d0.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/clusters","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/config-dfb9bf07b13045f4.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/config","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/config-dfb9bf07b13045f4.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/config","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-444f1804401f04ea.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/index-444f1804401f04ea.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra/%5Bcontext%5D-9b6e47c2e8b485a2.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra/[context]","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra/%5Bcontext%5D-9b6e47c2e8b485a2.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra/[context]","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra-c84a3b8a9d599b02.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/infra-c84a3b8a9d599b02.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/infra","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/6212-7bd06f60ba693125.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-0389e2cb52412db3.js" defer=""></script><script src="/dashboard/_next/static/chunks/9353-cff34f7e773b2e2b.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-eb5822dac0c9509b.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/6212-7bd06f60ba693125.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-0389e2cb52412db3.js" defer=""></script><script src="/dashboard/_next/static/chunks/9353-cff34f7e773b2e2b.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/%5Bjob%5D-eb5822dac0c9509b.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/[job]","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/6212-7bd06f60ba693125.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-0389e2cb52412db3.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/pools/%5Bpool%5D-e020fd69dbe76cea.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/pools/[pool]","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/6212-7bd06f60ba693125.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-0389e2cb52412db3.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs/pools/%5Bpool%5D-e020fd69dbe76cea.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs/pools/[pool]","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-0dc34cf9a8710a9f.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/jobs-0dc34cf9a8710a9f.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/jobs","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/users-96d6b8bb2dec055f.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/users","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/users-96d6b8bb2dec055f.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/users","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/volumes-d2af9d22e87cc4ba.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/volumes","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/volumes-d2af9d22e87cc4ba.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/volumes","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspace/new","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspace/new","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/7359-c8d04e06886000b3.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-0389e2cb52412db3.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-f6818c84ed8f1c86.js" defer=""></script><script src="/dashboard/_next/static/chunks/9353-cff34f7e773b2e2b.js" defer=""></script><script src="/dashboard/_next/static/chunks/4282-d2f3ef2fbf78e347.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-06114c982db410b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/3015-2dcace420c8939f4.js" defer=""></script><script src="/dashboard/_next/static/chunks/1141-d5204f35a3388bf4.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces/%5Bname%5D-fb1b4d3bfb047cad.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces/[name]","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/616-3d59f75e2ccf9321.js" defer=""></script><script src="/dashboard/_next/static/chunks/6130-2be46d70a38f1e82.js" defer=""></script><script src="/dashboard/_next/static/chunks/5739-d67458fcb1386c92.js" defer=""></script><script src="/dashboard/_next/static/chunks/7411-b15471acd2cba716.js" defer=""></script><script src="/dashboard/_next/static/chunks/1272-1ef0bf0237faccdb.js" defer=""></script><script src="/dashboard/_next/static/chunks/7359-c8d04e06886000b3.js" defer=""></script><script src="/dashboard/_next/static/chunks/6989-01359c57e018caa4.js" defer=""></script><script src="/dashboard/_next/static/chunks/3850-ff4a9a69d978632b.js" defer=""></script><script src="/dashboard/_next/static/chunks/8969-0389e2cb52412db3.js" defer=""></script><script src="/dashboard/_next/static/chunks/6990-f6818c84ed8f1c86.js" defer=""></script><script src="/dashboard/_next/static/chunks/9353-cff34f7e773b2e2b.js" defer=""></script><script src="/dashboard/_next/static/chunks/4282-d2f3ef2fbf78e347.js" defer=""></script><script src="/dashboard/_next/static/chunks/6601-06114c982db410b6.js" defer=""></script><script src="/dashboard/_next/static/chunks/3015-2dcace420c8939f4.js" defer=""></script><script src="/dashboard/_next/static/chunks/1141-d5204f35a3388bf4.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces/%5Bname%5D-fb1b4d3bfb047cad.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces/[name]","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-4abaae354da0ba13.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces-6fc994fa1ee6c6bf.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces","query":{},"buildId":"WfMolkH3tkVNEHhHaH9uk","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/dashboard/_next/static/css/4c052b4444e52a58.css" as="style"/><link rel="stylesheet" href="/dashboard/_next/static/css/4c052b4444e52a58.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/dashboard/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/dashboard/_next/static/chunks/webpack-585d805f693dbceb.js" defer=""></script><script src="/dashboard/_next/static/chunks/framework-cf60a09ccd051a10.js" defer=""></script><script src="/dashboard/_next/static/chunks/main-f15ccb73239a3bf1.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/_app-513d332313670f2a.js" defer=""></script><script src="/dashboard/_next/static/chunks/pages/workspaces-6fc994fa1ee6c6bf.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js" defer=""></script><script src="/dashboard/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/workspaces","query":{},"buildId":"YP5Vc3ROcDnTGta0XAhcs","assetPrefix":"/dashboard","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
sky/global_user_state.py CHANGED
@@ -1594,41 +1594,32 @@ def get_cluster_from_name(
1594
1594
  include_user_info: bool = True,
1595
1595
  summary_response: bool = False) -> Optional[Dict[str, Any]]:
1596
1596
  assert _SQLALCHEMY_ENGINE is not None
1597
+ query_fields = [
1598
+ cluster_table.c.name,
1599
+ cluster_table.c.launched_at,
1600
+ cluster_table.c.handle,
1601
+ cluster_table.c.last_use,
1602
+ cluster_table.c.status,
1603
+ cluster_table.c.autostop,
1604
+ cluster_table.c.to_down,
1605
+ cluster_table.c.owner,
1606
+ cluster_table.c.metadata,
1607
+ cluster_table.c.cluster_hash,
1608
+ cluster_table.c.storage_mounts_metadata,
1609
+ cluster_table.c.cluster_ever_up,
1610
+ cluster_table.c.status_updated_at,
1611
+ cluster_table.c.user_hash,
1612
+ cluster_table.c.config_hash,
1613
+ cluster_table.c.workspace,
1614
+ cluster_table.c.is_managed,
1615
+ ]
1616
+ if not summary_response:
1617
+ query_fields.extend([
1618
+ cluster_table.c.last_creation_yaml,
1619
+ cluster_table.c.last_creation_command,
1620
+ ])
1597
1621
  with orm.Session(_SQLALCHEMY_ENGINE) as session:
1598
- if summary_response:
1599
- query = session.query(
1600
- cluster_table.c.name, cluster_table.c.launched_at,
1601
- cluster_table.c.handle, cluster_table.c.last_use,
1602
- cluster_table.c.status, cluster_table.c.autostop,
1603
- cluster_table.c.to_down, cluster_table.c.owner,
1604
- cluster_table.c.metadata, cluster_table.c.cluster_hash,
1605
- cluster_table.c.storage_mounts_metadata,
1606
- cluster_table.c.cluster_ever_up,
1607
- cluster_table.c.status_updated_at, cluster_table.c.user_hash,
1608
- cluster_table.c.config_hash, cluster_table.c.workspace,
1609
- cluster_table.c.is_managed)
1610
- else:
1611
- query = session.query(
1612
- cluster_table.c.name,
1613
- cluster_table.c.launched_at,
1614
- cluster_table.c.handle,
1615
- cluster_table.c.last_use,
1616
- cluster_table.c.status,
1617
- cluster_table.c.autostop,
1618
- cluster_table.c.to_down,
1619
- cluster_table.c.owner,
1620
- cluster_table.c.metadata,
1621
- cluster_table.c.cluster_hash,
1622
- cluster_table.c.storage_mounts_metadata,
1623
- cluster_table.c.cluster_ever_up,
1624
- cluster_table.c.status_updated_at,
1625
- cluster_table.c.user_hash,
1626
- cluster_table.c.config_hash,
1627
- cluster_table.c.workspace,
1628
- cluster_table.c.is_managed,
1629
- # extra fields compared to above query
1630
- cluster_table.c.last_creation_yaml,
1631
- cluster_table.c.last_creation_command)
1622
+ query = session.query(*query_fields)
1632
1623
  row = query.filter_by(name=cluster_name).first()
1633
1624
  if row is None:
1634
1625
  return None
@@ -1709,45 +1700,34 @@ def get_clusters(
1709
1700
  # we treat it as belonging to the current user.
1710
1701
  current_user_hash = common_utils.get_user_hash()
1711
1702
  assert _SQLALCHEMY_ENGINE is not None
1703
+ query_fields = [
1704
+ cluster_table.c.name,
1705
+ cluster_table.c.launched_at,
1706
+ cluster_table.c.handle,
1707
+ cluster_table.c.last_use,
1708
+ cluster_table.c.status,
1709
+ cluster_table.c.autostop,
1710
+ cluster_table.c.to_down,
1711
+ cluster_table.c.owner,
1712
+ cluster_table.c.metadata,
1713
+ cluster_table.c.cluster_hash,
1714
+ cluster_table.c.storage_mounts_metadata,
1715
+ cluster_table.c.cluster_ever_up,
1716
+ cluster_table.c.status_updated_at,
1717
+ cluster_table.c.user_hash,
1718
+ cluster_table.c.config_hash,
1719
+ cluster_table.c.workspace,
1720
+ cluster_table.c.is_managed,
1721
+ user_table.c.name.label('user_name'),
1722
+ ]
1723
+ if not summary_response:
1724
+ query_fields.extend([
1725
+ cluster_table.c.last_creation_yaml,
1726
+ cluster_table.c.last_creation_command,
1727
+ ])
1712
1728
  with orm.Session(_SQLALCHEMY_ENGINE) as session:
1713
- if summary_response:
1714
- query = session.query(
1715
- cluster_table.c.name, cluster_table.c.launched_at,
1716
- cluster_table.c.handle, cluster_table.c.last_use,
1717
- cluster_table.c.status, cluster_table.c.autostop,
1718
- cluster_table.c.to_down, cluster_table.c.owner,
1719
- cluster_table.c.metadata, cluster_table.c.cluster_hash,
1720
- cluster_table.c.storage_mounts_metadata,
1721
- cluster_table.c.cluster_ever_up,
1722
- cluster_table.c.status_updated_at, cluster_table.c.user_hash,
1723
- cluster_table.c.config_hash,
1724
- cluster_table.c.workspace, cluster_table.c.is_managed,
1725
- user_table.c.name.label('user_name')).outerjoin(
1726
- user_table, cluster_table.c.user_hash == user_table.c.id)
1727
- else:
1728
- query = session.query(
1729
- cluster_table.c.name,
1730
- cluster_table.c.launched_at,
1731
- cluster_table.c.handle,
1732
- cluster_table.c.last_use,
1733
- cluster_table.c.status,
1734
- cluster_table.c.autostop,
1735
- cluster_table.c.to_down,
1736
- cluster_table.c.owner,
1737
- cluster_table.c.metadata,
1738
- cluster_table.c.cluster_hash,
1739
- cluster_table.c.storage_mounts_metadata,
1740
- cluster_table.c.cluster_ever_up,
1741
- cluster_table.c.status_updated_at,
1742
- cluster_table.c.user_hash,
1743
- cluster_table.c.config_hash,
1744
- cluster_table.c.workspace,
1745
- cluster_table.c.is_managed,
1746
- # extra fields compared to above query
1747
- cluster_table.c.last_creation_yaml,
1748
- cluster_table.c.last_creation_command,
1749
- user_table.c.name.label('user_name')).outerjoin(
1750
- user_table, cluster_table.c.user_hash == user_table.c.id)
1729
+ query = session.query(*query_fields).outerjoin(
1730
+ user_table, cluster_table.c.user_hash == user_table.c.id)
1751
1731
  if exclude_managed_clusters:
1752
1732
  query = query.filter(cluster_table.c.is_managed == int(False))
1753
1733
  if workspaces_filter is not None:
@@ -412,6 +412,24 @@ def kill_cluster_requests(cluster_name: str, exclude_request_name: str):
412
412
  kill_requests(request_ids)
413
413
 
414
414
 
415
+ def kill_requests_with_prefix(request_ids: Optional[List[str]] = None,
416
+ user_id: Optional[str] = None) -> List[str]:
417
+ """Kill requests with a given request ID prefix."""
418
+ expanded_request_ids: Optional[List[str]] = None
419
+ if request_ids is not None:
420
+ expanded_request_ids = []
421
+ for request_id in request_ids:
422
+ request_tasks = get_requests_with_prefix(request_id,
423
+ fields=['request_id'])
424
+ if request_tasks is None or len(request_tasks) == 0:
425
+ continue
426
+ if len(request_tasks) > 1:
427
+ raise ValueError(f'Multiple requests found for '
428
+ f'request ID prefix: {request_id}')
429
+ expanded_request_ids.append(request_tasks[0].request_id)
430
+ return kill_requests(request_ids=expanded_request_ids, user_id=user_id)
431
+
432
+
415
433
  def kill_requests(request_ids: Optional[List[str]] = None,
416
434
  user_id: Optional[str] = None) -> List[str]:
417
435
  """Kill a SkyPilot API request and set its status to cancelled.
@@ -715,6 +733,51 @@ async def get_request_async(
715
733
  return await _get_request_no_lock_async(request_id, fields)
716
734
 
717
735
 
736
+ @init_db
737
+ @metrics_lib.time_me
738
+ def get_requests_with_prefix(
739
+ request_id_prefix: str,
740
+ fields: Optional[List[str]] = None) -> Optional[List[Request]]:
741
+ """Get requests with a given request ID prefix."""
742
+ assert _DB is not None
743
+ if fields:
744
+ columns_str = ', '.join(fields)
745
+ else:
746
+ columns_str = ', '.join(REQUEST_COLUMNS)
747
+ with _DB.conn:
748
+ cursor = _DB.conn.cursor()
749
+ cursor.execute((f'SELECT {columns_str} FROM {REQUEST_TABLE} '
750
+ 'WHERE request_id LIKE ?'), (request_id_prefix + '%',))
751
+ rows = cursor.fetchall()
752
+ if not rows:
753
+ return None
754
+ if fields:
755
+ rows = [_update_request_row_fields(row, fields) for row in rows]
756
+ return [Request.from_row(row) for row in rows]
757
+
758
+
759
+ @init_db_async
760
+ @metrics_lib.time_me_async
761
+ @asyncio_utils.shield
762
+ async def get_requests_async_with_prefix(
763
+ request_id_prefix: str,
764
+ fields: Optional[List[str]] = None) -> Optional[List[Request]]:
765
+ """Async version of get_request_with_prefix."""
766
+ assert _DB is not None
767
+ if fields:
768
+ columns_str = ', '.join(fields)
769
+ else:
770
+ columns_str = ', '.join(REQUEST_COLUMNS)
771
+ async with _DB.execute_fetchall_async(
772
+ (f'SELECT {columns_str} FROM {REQUEST_TABLE} '
773
+ 'WHERE request_id LIKE ?'), (request_id_prefix + '%',)) as rows:
774
+ if not rows:
775
+ return None
776
+ if fields:
777
+ rows = [_update_request_row_fields(row, fields) for row in rows]
778
+ return [Request.from_row(row) for row in rows]
779
+
780
+
718
781
  class StatusWithMsg(NamedTuple):
719
782
  status: RequestStatus
720
783
  status_msg: Optional[str] = None
@@ -56,10 +56,16 @@ def decode_status(
56
56
  clusters = return_value
57
57
  response = []
58
58
  for cluster in clusters:
59
- cluster['handle'] = decode_and_unpickle(cluster['handle'])
59
+ # handle may not always be present in the response.
60
+ if 'handle' in cluster and cluster['handle'] is not None:
61
+ cluster['handle'] = decode_and_unpickle(cluster['handle'])
60
62
  cluster['status'] = status_lib.ClusterStatus(cluster['status'])
61
- cluster['storage_mounts_metadata'] = decode_and_unpickle(
62
- cluster['storage_mounts_metadata'])
63
+ # this field is to be deprecated in the future.
64
+ # do not decode this field if it is not present.
65
+ if ('storage_mounts_metadata' in cluster and
66
+ cluster['storage_mounts_metadata'] is not None):
67
+ cluster['storage_mounts_metadata'] = decode_and_unpickle(
68
+ cluster['storage_mounts_metadata'])
63
69
  if 'is_managed' not in cluster:
64
70
  cluster['is_managed'] = False
65
71
  response.append(responses.StatusResponse.model_validate(cluster))
sky/server/server.py CHANGED
@@ -1497,10 +1497,27 @@ async def local_down(request: fastapi.Request,
1497
1497
  )
1498
1498
 
1499
1499
 
1500
+ async def get_expanded_request_id(request_id: str) -> str:
1501
+ """Gets the expanded request ID for a given request ID prefix."""
1502
+ request_tasks = await requests_lib.get_requests_async_with_prefix(
1503
+ request_id, fields=['request_id'])
1504
+ if request_tasks is None:
1505
+ raise fastapi.HTTPException(status_code=404,
1506
+ detail=f'Request {request_id!r} not found')
1507
+ if len(request_tasks) > 1:
1508
+ raise fastapi.HTTPException(status_code=400,
1509
+ detail=('Multiple requests found for '
1510
+ f'request ID prefix: {request_id}'))
1511
+ return request_tasks[0].request_id
1512
+
1513
+
1500
1514
  # === API server related APIs ===
1501
1515
  @app.get('/api/get')
1502
1516
  async def api_get(request_id: str) -> payloads.RequestPayload:
1503
1517
  """Gets a request with a given request ID prefix."""
1518
+ # Validate request_id prefix matches a single request.
1519
+ request_id = await get_expanded_request_id(request_id)
1520
+
1504
1521
  while True:
1505
1522
  req_status = await requests_lib.get_request_status_async(request_id)
1506
1523
  if req_status is None:
@@ -1560,11 +1577,16 @@ async def stream(
1560
1577
  clients, console for CLI/API clients), 'plain' (force plain text),
1561
1578
  'html' (force HTML), or 'console' (force console)
1562
1579
  """
1580
+ # We need to save the user-supplied request ID for the response header.
1581
+ user_supplied_request_id = request_id
1563
1582
  if request_id is not None and log_path is not None:
1564
1583
  raise fastapi.HTTPException(
1565
1584
  status_code=400,
1566
1585
  detail='Only one of request_id and log_path can be provided')
1567
1586
 
1587
+ if request_id is not None:
1588
+ request_id = await get_expanded_request_id(request_id)
1589
+
1568
1590
  if request_id is None and log_path is None:
1569
1591
  request_id = await requests_lib.get_latest_request_id_async()
1570
1592
  if request_id is None:
@@ -1654,7 +1676,9 @@ async def stream(
1654
1676
  'Transfer-Encoding': 'chunked'
1655
1677
  }
1656
1678
  if request_id is not None:
1657
- headers[server_constants.STREAM_REQUEST_HEADER] = request_id
1679
+ headers[server_constants.STREAM_REQUEST_HEADER] = (
1680
+ user_supplied_request_id
1681
+ if user_supplied_request_id else request_id)
1658
1682
 
1659
1683
  return fastapi.responses.StreamingResponse(
1660
1684
  content=stream_utils.log_streamer(request_id,
@@ -1676,7 +1700,7 @@ async def api_cancel(request: fastapi.Request,
1676
1700
  request_id=request.state.request_id,
1677
1701
  request_name='api_cancel',
1678
1702
  request_body=request_cancel_body,
1679
- func=requests_lib.kill_requests,
1703
+ func=requests_lib.kill_requests_with_prefix,
1680
1704
  schedule_type=requests_lib.ScheduleType.SHORT,
1681
1705
  )
1682
1706
 
@@ -1684,7 +1708,7 @@ async def api_cancel(request: fastapi.Request,
1684
1708
  @app.get('/api/status')
1685
1709
  async def api_status(
1686
1710
  request_ids: Optional[List[str]] = fastapi.Query(
1687
- None, description='Request IDs to get status for.'),
1711
+ None, description='Request ID prefixes to get status for.'),
1688
1712
  all_status: bool = fastapi.Query(
1689
1713
  False, description='Get finished requests as well.'),
1690
1714
  limit: Optional[int] = fastapi.Query(
@@ -1711,10 +1735,12 @@ async def api_status(
1711
1735
  else:
1712
1736
  encoded_request_tasks = []
1713
1737
  for request_id in request_ids:
1714
- request_task = await requests_lib.get_request_async(request_id)
1715
- if request_task is None:
1738
+ request_tasks = await requests_lib.get_requests_async_with_prefix(
1739
+ request_id)
1740
+ if request_tasks is None:
1716
1741
  continue
1717
- encoded_request_tasks.append(request_task.readable_encode())
1742
+ for request_task in request_tasks:
1743
+ encoded_request_tasks.append(request_task.readable_encode())
1718
1744
  return encoded_request_tasks
1719
1745
 
1720
1746
 
@@ -964,8 +964,16 @@ class KubernetesCommandRunner(CommandRunner):
964
964
  kubectl_args = [
965
965
  '--pod-running-timeout', f'{connect_timeout}s', '-n', self.namespace
966
966
  ]
967
+ # The same logic to either set `--context` to the k8s context where
968
+ # the sky cluster is hosted, or `--kubeconfig` to /dev/null for
969
+ # in-cluster k8s is used below in the `run()` method.
967
970
  if self.context:
968
971
  kubectl_args += ['--context', self.context]
972
+ # If context is none, it means the cluster is hosted on in-cluster k8s.
973
+ # In this case, we need to set KUBECONFIG to /dev/null to avoid looking
974
+ # for the cluster in whatever active context is set in the kubeconfig.
975
+ else:
976
+ kubectl_args += ['--kubeconfig', '/dev/null']
969
977
  local_port, remote_port = port_forward[0]
970
978
  local_port_str = f'{local_port}' if local_port is not None else ''
971
979
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20251025
3
+ Version: 1.0.0.dev20251027
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -371,51 +371,51 @@ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "shadeform"
371
371
  Requires-Dist: aiosqlite; extra == "shadeform"
372
372
  Requires-Dist: greenlet; extra == "shadeform"
373
373
  Provides-Extra: all
374
- Requires-Dist: nebius>=0.2.47; extra == "all"
374
+ Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
375
+ Requires-Dist: azure-common; extra == "all"
376
+ Requires-Dist: oci; extra == "all"
377
+ Requires-Dist: anyio; extra == "all"
378
+ Requires-Dist: azure-core>=1.31.0; extra == "all"
379
+ Requires-Dist: msgraph-sdk; extra == "all"
380
+ Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
381
+ Requires-Dist: pyjwt; extra == "all"
382
+ Requires-Dist: ecsapi>=0.2.0; extra == "all"
383
+ Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
384
+ Requires-Dist: python-dateutil; extra == "all"
375
385
  Requires-Dist: awscli>=1.27.10; extra == "all"
376
- Requires-Dist: websockets; extra == "all"
386
+ Requires-Dist: aiosqlite; extra == "all"
387
+ Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
388
+ Requires-Dist: passlib; extra == "all"
389
+ Requires-Dist: google-cloud-storage; extra == "all"
390
+ Requires-Dist: ray[default]>=2.6.1; extra == "all"
377
391
  Requires-Dist: azure-mgmt-compute>=33.0.0; extra == "all"
378
- Requires-Dist: azure-core>=1.31.0; extra == "all"
379
- Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
380
- Requires-Dist: azure-cli>=2.65.0; extra == "all"
392
+ Requires-Dist: websockets; extra == "all"
393
+ Requires-Dist: aiohttp; extra == "all"
394
+ Requires-Dist: sqlalchemy_adapter; extra == "all"
381
395
  Requires-Dist: ibm-cloud-sdk-core; extra == "all"
382
- Requires-Dist: tomli; python_version < "3.11" and extra == "all"
383
- Requires-Dist: pydo>=0.3.0; extra == "all"
384
- Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
385
- Requires-Dist: anyio; extra == "all"
386
- Requires-Dist: boto3>=1.26.1; extra == "all"
396
+ Requires-Dist: runpod>=1.6.1; extra == "all"
397
+ Requires-Dist: colorama<0.4.5; extra == "all"
387
398
  Requires-Dist: msrestazure; extra == "all"
388
- Requires-Dist: azure-common; extra == "all"
389
- Requires-Dist: passlib; extra == "all"
390
- Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
391
- Requires-Dist: greenlet; extra == "all"
392
- Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
393
- Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
399
+ Requires-Dist: casbin; extra == "all"
400
+ Requires-Dist: nebius>=0.2.47; extra == "all"
401
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
402
+ Requires-Dist: ibm-vpc; extra == "all"
403
+ Requires-Dist: ibm-cos-sdk; extra == "all"
404
+ Requires-Dist: docker; extra == "all"
394
405
  Requires-Dist: grpcio>=1.63.0; extra == "all"
406
+ Requires-Dist: boto3>=1.26.1; extra == "all"
407
+ Requires-Dist: tomli; python_version < "3.11" and extra == "all"
408
+ Requires-Dist: cudo-compute>=0.1.10; extra == "all"
395
409
  Requires-Dist: botocore>=1.29.10; extra == "all"
410
+ Requires-Dist: pydo>=0.3.0; extra == "all"
396
411
  Requires-Dist: azure-identity>=1.19.0; extra == "all"
397
- Requires-Dist: casbin; extra == "all"
398
- Requires-Dist: colorama<0.4.5; extra == "all"
399
- Requires-Dist: ecsapi>=0.2.0; extra == "all"
400
- Requires-Dist: runpod>=1.6.1; extra == "all"
401
- Requires-Dist: python-dateutil; extra == "all"
402
- Requires-Dist: oci; extra == "all"
403
- Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
404
- Requires-Dist: ibm-cos-sdk; extra == "all"
405
- Requires-Dist: ibm-vpc; extra == "all"
406
- Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
407
- Requires-Dist: sqlalchemy_adapter; extra == "all"
408
412
  Requires-Dist: azure-mgmt-network>=27.0.0; extra == "all"
409
- Requires-Dist: cudo-compute>=0.1.10; extra == "all"
410
- Requires-Dist: ray[default]>=2.6.1; extra == "all"
411
- Requires-Dist: msgraph-sdk; extra == "all"
412
- Requires-Dist: docker; extra == "all"
413
+ Requires-Dist: azure-cli>=2.65.0; extra == "all"
413
414
  Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
414
- Requires-Dist: pyjwt; extra == "all"
415
415
  Requires-Dist: azure-core>=1.24.0; extra == "all"
416
- Requires-Dist: aiosqlite; extra == "all"
417
- Requires-Dist: google-cloud-storage; extra == "all"
418
- Requires-Dist: aiohttp; extra == "all"
416
+ Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
417
+ Requires-Dist: greenlet; extra == "all"
418
+ Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
419
419
  Provides-Extra: remote
420
420
  Requires-Dist: grpcio>=1.63.0; extra == "remote"
421
421
  Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "remote"
@@ -479,7 +479,7 @@ Dynamic: summary
479
479
  ----
480
480
 
481
481
  :fire: *News* :fire:
482
- - [Jul 2025] Run **RL training for LLMs** with SkyRL on your Kubernetes or clouds: [**example**](./llm/skyrl/)
482
+ - [Oct 2025] Run **RL training for LLMs** with SkyRL on your Kubernetes or clouds: [**example**](./llm/skyrl/)
483
483
  - [Oct 2025] Train and serve [Andrej Karpathy's](https://x.com/karpathy/status/1977755427569111362) **nanochat** - the best ChatGPT that $100 can buy: [**example**](./llm/nanochat)
484
484
  - [Oct 2025] Run large-scale **LLM training with TorchTitan** on any AI infra: [**example**](./examples/training/torchtitan)
485
485
  - [Sep 2025] Scaling AI infrastructure at Abridge - **10x faster development** with SkyPilot: [**blog**](https://blog.skypilot.co/abridge/)
@@ -1,4 +1,4 @@
1
- sky/__init__.py,sha256=BxAFI3GxhbkV3CH5PSgRKuhQwtn64yzYnpsIF9YKj6k,6759
1
+ sky/__init__.py,sha256=qyk8gTSsQDufV8QIzuAfiHS1qtvirkfc5MwCk0VDe8E,6759
2
2
  sky/admin_policy.py,sha256=XdcJnYqmude-LGGop-8U-FeiJcqtfYsYtIy4rmoCJnM,9799
3
3
  sky/authentication.py,sha256=BK5Fkuk3EmS4DwCrxI_8a4SQHUNFYu9GztWSzPissSA,20123
4
4
  sky/check.py,sha256=hBDTkiADC3HFfO6brZV819FVWcdOs3aiuhB6x6mY4Q4,29728
@@ -8,7 +8,7 @@ sky/core.py,sha256=VTHly9kJmwtmdiKwkrSrzuJ_8V8t-aI9weADd0SqDWA,58305
8
8
  sky/dag.py,sha256=0ZpAEDXuIFo1SP7YJpF9vXiFxpRwqP8od-UXMg95td8,3929
9
9
  sky/exceptions.py,sha256=DTQN5db2N6FntRRw0rRLyQG2q7HDvnylpvjkRF8wYBk,20830
10
10
  sky/execution.py,sha256=klMjceOMCMDzyYczazrT-kiS6kGqfyBO_9KvlZzyTUw,35849
11
- sky/global_user_state.py,sha256=-47YAKQ_KwTfG9OnUO83HQ328cgyTz5hlgKIU2fk4o8,108180
11
+ sky/global_user_state.py,sha256=OUz-_fi5mF2E2_6l2sPpyX2HF5Cl3FOU3iVsPOt0sCc,106411
12
12
  sky/models.py,sha256=ZKisLai7vqUr6_BPev6Oziu5N23WLzTh9nRtHSlRchw,3999
13
13
  sky/optimizer.py,sha256=iR57bL_8BeG6bh1sH3J6n6i65EBFjmyftezYM4nnDZA,64150
14
14
  sky/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -86,11 +86,11 @@ sky/catalog/data_fetchers/fetch_vsphere.py,sha256=Yf7tKzwJsQ_4f64IT1EAP108C1D3Rg
86
86
  sky/client/__init__.py,sha256=pz6xvVSd9X-gwqbsDL0E9QOojYqM0KAD0j-NCyCIF1k,38
87
87
  sky/client/common.py,sha256=j8ENgeRN3KdKBf0-pi1K9w1HtkqrkBR12QtF_wGWG8M,16950
88
88
  sky/client/oauth.py,sha256=sNJ_DMsSTcxluj5FeNQ2IafZJLImRFmCAZ79bXeABn4,2871
89
- sky/client/sdk.py,sha256=HX9UGKggoV-qRYIl-iMhCwg5pTZF01SxUqikdxyEnwk,109351
89
+ sky/client/sdk.py,sha256=fiNkg_CtoNDzqCPM-i230c4W_4IIa7WlDp9ga8TMa2Y,109351
90
90
  sky/client/sdk_async.py,sha256=8G_E9Dn4d80rV-wxRH4zZUXZGAm6rLw3C8PI07fXwwQ,31106
91
91
  sky/client/service_account_auth.py,sha256=5jXk0G6ufuW-SHCO7BEHQeTO0_2a8KfFmA63auXFRj4,1529
92
92
  sky/client/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
- sky/client/cli/command.py,sha256=xeUiuEFCLVwC14F-Phjvl1AJTY495rxf0oS5vRPGpb8,257513
93
+ sky/client/cli/command.py,sha256=Co4Wy6_XJAKuWmeoO9915tCAZ0lCZaTuKeicj9ngJlk,258214
94
94
  sky/client/cli/deprecation_utils.py,sha256=H_d5UyF2CekEoThduAzt5cihBO8hwKYMu0-Wqfbjv5E,3370
95
95
  sky/client/cli/flags.py,sha256=hwQ4Y9lwTbfqYoINWUTqRMGBoXxBy4_E5hqtXbBcEeg,12219
96
96
  sky/client/cli/table_utils.py,sha256=2aFdevW6B18mztZdhynP4ptgKW4Yp7bYC9B_ZWmzjiw,10215
@@ -123,19 +123,19 @@ sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4
123
123
  sky/clouds/utils/gcp_utils.py,sha256=09MF4Vx0EW7S-GXGpyxpl2aQlHrqeu9ioV0nyionAyk,9890
124
124
  sky/clouds/utils/oci_utils.py,sha256=TFqAqRLggg4Z0bhxrrq8nouSSomZy-ub1frHXEkud2M,7302
125
125
  sky/clouds/utils/scp_utils.py,sha256=VGuccVO5uFGr8-yolWSoYrgr11z6cIeDBGcqkBzAyOs,18409
126
- sky/dashboard/out/404.html,sha256=4ZlEAzYfw-e7zS39KjkUVUXOT37BE07Zn3z8BkV3Cik,1423
127
- sky/dashboard/out/clusters.html,sha256=aAB3mnn8ggN5hOX1RmCYCqZgHslp6Oo-lzHQm3Kr0dU,1418
128
- sky/dashboard/out/config.html,sha256=Q3IeWOE3h-eujO9Ia01-cV47xHL2_1uMcCsx8rijcw4,1414
126
+ sky/dashboard/out/404.html,sha256=s51nc6hpRgqZOHwFszG6RUSFc00OWrnFUxkLPynl9Vk,1423
127
+ sky/dashboard/out/clusters.html,sha256=kmiiuuKWcCYzb7yO2CMpWw82PkdRnFmhw1pfcnZ6teY,1418
128
+ sky/dashboard/out/config.html,sha256=zVDSgjFF2JNnjkRH2dVuvkvvWhn9VaE-3R-ZGQcT3bY,1414
129
129
  sky/dashboard/out/favicon.ico,sha256=XilUZZglAl_1zRsg85QsbQgmQAzGPQjcUIJ-A3AzYn8,93590
130
- sky/dashboard/out/index.html,sha256=ZGlHAO2lB_uzjPIEgaOLHJcR5vZqE2nHR75akKktJuo,1407
131
- sky/dashboard/out/infra.html,sha256=1MuDQ_vNEg9MuPF1q24gNtrunxTuqspQlSzSjOcZ0kc,1412
132
- sky/dashboard/out/jobs.html,sha256=c2pgY91RdfRi0AqUA7oy_fx_6b-BIr_QjlA0lF1YVXE,1410
130
+ sky/dashboard/out/index.html,sha256=79gWwhQhNa_PtWa7n2Q9r_Al2sscLvY8lup86ucDsIs,1407
131
+ sky/dashboard/out/infra.html,sha256=9QSZdps85Y7x1ab_zWNslN32htlNrTj_NJQbN0yhYDw,1412
132
+ sky/dashboard/out/jobs.html,sha256=xxrB8bVqFuOBArIKI9dtKs8JqTEhro8jjD0C2MkBDFg,1410
133
133
  sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
134
- sky/dashboard/out/users.html,sha256=q30YDa9D8yt3FpWMFx9Lfj4zvFfK9fkB7k_-DxXKMUA,1412
135
- sky/dashboard/out/volumes.html,sha256=c-f4VU0X53thCZEEbXvj9huqAUSUN4C_vG_zX8XLqEI,1416
136
- sky/dashboard/out/workspaces.html,sha256=ptG8S74OfutbvNw3CXtRiRJHGzWxTgmc4ghHP6vcV-k,1422
137
- sky/dashboard/out/_next/static/WfMolkH3tkVNEHhHaH9uk/_buildManifest.js,sha256=pcTTNeaVLZXGS_0UuCzilwp8ChtVTb39zKQMiVKQiEo,2394
138
- sky/dashboard/out/_next/static/WfMolkH3tkVNEHhHaH9uk/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
134
+ sky/dashboard/out/users.html,sha256=KW22aEvwOiHrwXExS7usmOVebxyUt0xzP6eLZbj4jIk,1412
135
+ sky/dashboard/out/volumes.html,sha256=zTA_UcK8xhmwUg_40vsxNK2cXQH_2klJe3zb-_u-F0A,1416
136
+ sky/dashboard/out/workspaces.html,sha256=Cy75Bd0iO7fak3rc-Kt0Qp_qKfRt1UP_n8H-KXp2jiw,1422
137
+ sky/dashboard/out/_next/static/YP5Vc3ROcDnTGta0XAhcs/_buildManifest.js,sha256=pcTTNeaVLZXGS_0UuCzilwp8ChtVTb39zKQMiVKQiEo,2394
138
+ sky/dashboard/out/_next/static/YP5Vc3ROcDnTGta0XAhcs/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
139
139
  sky/dashboard/out/_next/static/chunks/1141-d5204f35a3388bf4.js,sha256=wcoMAJpyDTuT3Ve9XpIiPfL38HRBNw3AUbPThspHasY,18362
140
140
  sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js,sha256=VJ6y-Z6Eg2T93hQIRfWAbjAkQ7nQhglmIaVbEpKSILY,38451
141
141
  sky/dashboard/out/_next/static/chunks/1871-81adbc5f25dff78f.js,sha256=-JlmbDZU15pEAv54lv5-4j7UziaKTaYyF9FSwRdB-wM,20697
@@ -171,7 +171,7 @@ sky/dashboard/out/_next/static/chunks/framework-cf60a09ccd051a10.js,sha256=_Qbam
171
171
  sky/dashboard/out/_next/static/chunks/main-app-587214043926b3cc.js,sha256=t7glRfataAjNw691Wni-ZU4a3BsygRzPKoI8NOm-lsY,116244
172
172
  sky/dashboard/out/_next/static/chunks/main-f15ccb73239a3bf1.js,sha256=jxOPLDVX3rkMc_jvGx2a-N2v6mvfOa8O6V0o-sLT0tI,110208
173
173
  sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
174
- sky/dashboard/out/_next/static/chunks/webpack-4abaae354da0ba13.js,sha256=tyfmAMNLQqgoW3LQzSHuOK0hz5xkuaapIdM8iCDNP7s,4770
174
+ sky/dashboard/out/_next/static/chunks/webpack-585d805f693dbceb.js,sha256=s38mdbJnuFZSiIbkIaYe8pbqlM2V2VNV_ThO-g8PfoU,4770
175
175
  sky/dashboard/out/_next/static/chunks/pages/_app-513d332313670f2a.js,sha256=ZLZluABDOfg5D5yPS3kly42sCQTmBuI20Tcisv_Sr9A,95518
176
176
  sky/dashboard/out/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js,sha256=vjERjtMAbVk-19LyPf1Jc-H6TMcrSznSz6brzNqbqf8,253
177
177
  sky/dashboard/out/_next/static/chunks/pages/clusters-9e0df5442b04f7d0.js,sha256=vJs6GPARm5X6JFKdkQGZgnnuZR9tzqKhFGutKDJp0_8,869
@@ -190,14 +190,14 @@ sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-e020fd69dbe76cea.j
190
190
  sky/dashboard/out/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js,sha256=83s5N5CZwIaRcmYMfqn2we60n2VRmgFw6Tbx18b8-e0,762
191
191
  sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-fb1b4d3bfb047cad.js,sha256=8d90rL6ABuvlRe-J58wHh9XtYBBlXEejefIx5LAnOyo,1495
192
192
  sky/dashboard/out/_next/static/css/4c052b4444e52a58.css,sha256=gAtDLtuMJE6i17ji-bzO8sL_ZQHavpYIjy6FSXLgBiA,56527
193
- sky/dashboard/out/clusters/[cluster].html,sha256=cNAtjDFuBGlYd4IbyhkTozNmU-D1UBnAuSbO1tY-cN4,2937
194
- sky/dashboard/out/clusters/[cluster]/[job].html,sha256=vaNg7zMQgL-CjrbghlYBXkYwaQsKNV1yufkTCAXivhc,2073
195
- sky/dashboard/out/infra/[context].html,sha256=9rW6WmSEzuW1bqtuIEdqBaYsHqJDlrlxXf9Xksa4IXU,1436
196
- sky/dashboard/out/jobs/[job].html,sha256=TFwJAU7iuSs9gusAwVQA7xLCEF3SM40MdtXO1iS3FgM,2305
197
- sky/dashboard/out/jobs/pools/[pool].html,sha256=0hk07WrM1sck4-udAhuztOSLQIXaEBbMZasm_9TTi_0,2143
193
+ sky/dashboard/out/clusters/[cluster].html,sha256=XoZqbyhgm2n0zLgqjXjiWFOLULvow6pPizhOjMRvbTI,2937
194
+ sky/dashboard/out/clusters/[cluster]/[job].html,sha256=KYS-j33L2f6DnLup-C9oewQFFvX3huwZN56HQSAI1YA,2073
195
+ sky/dashboard/out/infra/[context].html,sha256=j8sr1IfZyDaAVC4cwbKnzoUCLRHpoX_wNnytQpLF__k,1436
196
+ sky/dashboard/out/jobs/[job].html,sha256=PcHQ-7zEVY62UuqseYwNS3GQBEBT-tNDuC0k96JuPXg,2305
197
+ sky/dashboard/out/jobs/pools/[pool].html,sha256=sxN6ShJApEt1aFNkwMz8Q2YkWbiTuWfEEP9NTgyqe0E,2143
198
198
  sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
199
- sky/dashboard/out/workspace/new.html,sha256=g1btktcFEXl9-sf4Y-udezlsr34mm9_EAA3YXGUcyNw,1428
200
- sky/dashboard/out/workspaces/[name].html,sha256=u1h25mI1oLm4BEfgFjOQKCBJT09kR1wrtHFaffWND1Q,2759
199
+ sky/dashboard/out/workspace/new.html,sha256=xop9VfKcZ0Ysmya8_3f73FUZLSSzIl-J5v4c-fT2riU,1428
200
+ sky/dashboard/out/workspaces/[name].html,sha256=JZMwzruwj8RNPr5JJ6zGVnT94yKNvK5AW0WFVGcFa1k,2759
201
201
  sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
202
202
  sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
203
203
  sky/data/data_utils.py,sha256=AjEA_JRjo9NBMlv-Lq5iV4lBED_YZ1VqBR9pG6fGVWE,35179
@@ -397,7 +397,7 @@ sky/server/constants.py,sha256=54w38B5AsRVCMCPP_iN7YoaApxbcttt3pue0VEP9DWg,2615
397
397
  sky/server/daemons.py,sha256=pEmLE0JsR6C8ZSxt8sr4ncPfZcDYvXqDCycU0IDcQ8U,9238
398
398
  sky/server/metrics.py,sha256=8mTyD-zo2gyAJSPJyCtTR8oImeFJ2K-sAdlje5Bf5U4,5781
399
399
  sky/server/rest.py,sha256=XDvKhVY9br9zt4TNbygUH_XDbH_wugzxKNYlbqVHJjY,16045
400
- sky/server/server.py,sha256=ra9dqKtDI8iQmJqMw2JItNQMczh8isaCTG6rt1uhXxs,88128
400
+ sky/server/server.py,sha256=Q2BxY1z9rA0rUgzQu0j53nRuU1MC1IwQ9QT1bPN4wE8,89335
401
401
  sky/server/state.py,sha256=YbVOMJ1JipQQv17gLIGyiGN7MKfnP83qlUa5MB1z0Yk,747
402
402
  sky/server/stream_utils.py,sha256=9yHkB5Gkpago3WgR_sKBK5nJTpUYlBcYgTGVqMPYm9k,16750
403
403
  sky/server/uvicorn.py,sha256=etFyJP9Kz5uRhM619VrQMiVhJKWPxTqbaz9H1wW1EWs,11955
@@ -414,13 +414,13 @@ sky/server/requests/executor.py,sha256=quK4m2OVY_7uFASLAo-P8mzTu2i820y5hQWU8tyLb
414
414
  sky/server/requests/payloads.py,sha256=MUHuj4CaxrpI_52K76gLDEtPmsrc2WZFt2cBKL0UFus,28286
415
415
  sky/server/requests/preconditions.py,sha256=L_4ow2Twl0h2sk2P4waL2e1WVfYm4p4DFwmR6Nip8Bw,7486
416
416
  sky/server/requests/process.py,sha256=UpJp5rZizNMFRCNRtudFSjbcJhFarFbtAGDWI9x_ZyE,13197
417
- sky/server/requests/requests.py,sha256=zPHBx7dnfxhF0PfOHJZFLZl6n-C2h7ZDW0ovlla9fdA,40678
417
+ sky/server/requests/requests.py,sha256=JFEDPdvpI6RW3gleoQp6SYomXFa4F7FwzgEHItiSybA,43157
418
418
  sky/server/requests/threads.py,sha256=AwzbcoeLDz5RnSi0jJSD3u4lGDiYkCaa1qDvPkUqeMI,4131
419
419
  sky/server/requests/queues/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
420
420
  sky/server/requests/queues/local_queue.py,sha256=X6VkBiUmgd_kfqIK1hCtMWG1b8GiZbY70TBiBR6c6GY,416
421
421
  sky/server/requests/queues/mp_queue.py,sha256=jDqP4Jd28U3ibSFyMR1DF9I2OWZrPZqFJrG5S6RFpyw,3403
422
422
  sky/server/requests/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
423
- sky/server/requests/serializers/decoders.py,sha256=lnAPHBWaiCoCr2p2RbFkDqexi3Y1lBbeKCTRJWi18Zg,8837
423
+ sky/server/requests/serializers/decoders.py,sha256=QBOlOw1fe436_CIh6PPrYPlnfrkowpwMcYFstZ7zQPU,9206
424
424
  sky/server/requests/serializers/encoders.py,sha256=POKopCYRFnk546wOZE8DbAKrmmFawCfaW34wyckhcxk,8457
425
425
  sky/setup_files/MANIFEST.in,sha256=4gbgHHwSdP6BbMJv5XOt-2K6wUVWF_T9CGsdESvh918,776
426
426
  sky/setup_files/alembic.ini,sha256=d85kX5QMzCHxrgOct7StGixQEkaO7LKGKjSXLIwBRZI,5201
@@ -509,7 +509,7 @@ sky/utils/atomic.py,sha256=vrw-7XCnckF0xCx-ttamao7evPdGtVsnjaTtgMlBXIE,1280
509
509
  sky/utils/auth_utils.py,sha256=1ugVMGEglEyTsvtZJtv06eNewGudvaWd152cShkUyuI,6238
510
510
  sky/utils/benchmark_utils.py,sha256=vBqvgS-7XBat9N4UvtmxXS70i2EQUa4BUv4fsF8g58A,1635
511
511
  sky/utils/cluster_utils.py,sha256=PxVIVCBPA8qKkKvrF7bImDC1jhUZeJDADYtV-ELTZXE,15527
512
- sky/utils/command_runner.py,sha256=XFXUi_ErcsBt4AGmjZq7aoBLW5Frl-_F8xC6XQEYguw,51404
512
+ sky/utils/command_runner.py,sha256=2m9jGetmzqaR1UdtXixEAiaDAX8vOFkzYt8kHDxLLoQ,51925
513
513
  sky/utils/command_runner.pyi,sha256=FE8lFyxsh6528uSeSS38yk9Yu9HSJ8LFJT0ylMWNR6k,10618
514
514
  sky/utils/common.py,sha256=SS-NXSqMD34GeUSxMJuZ-Kce_2yPxiPdXhQoNQR5Lho,2834
515
515
  sky/utils/common_utils.py,sha256=3p-x8pU5tAFxJ95eW-KpY-aRPTGqL6ZvMbUO_iSiPVM,39147
@@ -579,9 +579,9 @@ sky/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
579
579
  sky/workspaces/core.py,sha256=kRrdh-8MhX1953pML1B_DoStnDuNrsmHcZlnWoAxVo0,27218
580
580
  sky/workspaces/server.py,sha256=T1K52wR88nARVMUBf2cpIP3VURjDNQTcN6HIp7prghE,3511
581
581
  sky/workspaces/utils.py,sha256=IIAiFoS6sdb2t0X5YoX9AietpTanZUQNTK8cePun-sY,2143
582
- skypilot_nightly-1.0.0.dev20251025.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
583
- skypilot_nightly-1.0.0.dev20251025.dist-info/METADATA,sha256=VwAmnYbwxw8GFwae_MQ9i-Ryd-D5z50Pi3Q1z7MrXdg,31328
584
- skypilot_nightly-1.0.0.dev20251025.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
585
- skypilot_nightly-1.0.0.dev20251025.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
586
- skypilot_nightly-1.0.0.dev20251025.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
587
- skypilot_nightly-1.0.0.dev20251025.dist-info/RECORD,,
582
+ skypilot_nightly-1.0.0.dev20251027.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
583
+ skypilot_nightly-1.0.0.dev20251027.dist-info/METADATA,sha256=6G2DGcSkF1izGm6UWNYX2p9Sk2Acnz9tklgBx7DRs48,31328
584
+ skypilot_nightly-1.0.0.dev20251027.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
585
+ skypilot_nightly-1.0.0.dev20251027.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
586
+ skypilot_nightly-1.0.0.dev20251027.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
587
+ skypilot_nightly-1.0.0.dev20251027.dist-info/RECORD,,