@samyx/preview-stacks-ui 0.8.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/README.md +29 -0
  2. package/dist/assets/{ActionButton.vue_vue_type_script_setup_true_lang-B1iO-Hbs.js → ActionButton.vue_vue_type_script_setup_true_lang-Cd_ENfdu.js} +2 -2
  3. package/dist/assets/{ActionButton.vue_vue_type_script_setup_true_lang-B1iO-Hbs.js.map → ActionButton.vue_vue_type_script_setup_true_lang-Cd_ENfdu.js.map} +1 -1
  4. package/dist/assets/AxesTab-PIPODUl8.js +2 -0
  5. package/dist/assets/{AxesTab-Cxy76M1f.js.map → AxesTab-PIPODUl8.js.map} +1 -1
  6. package/dist/assets/ConfigTab-YvlHNuMd.js +2 -0
  7. package/dist/assets/ConfigTab-YvlHNuMd.js.map +1 -0
  8. package/dist/assets/DangerTab-DTiS6xB0.js +2 -0
  9. package/dist/assets/{DangerTab-Cnr_8-Ba.js.map → DangerTab-DTiS6xB0.js.map} +1 -1
  10. package/dist/assets/DashboardView-Bss76wHt.js +2 -0
  11. package/dist/assets/DashboardView-Bss76wHt.js.map +1 -0
  12. package/dist/assets/DeploymentDetailView-kyClP0y4.js +2 -0
  13. package/dist/assets/DeploymentDetailView-kyClP0y4.js.map +1 -0
  14. package/dist/assets/DeploymentsView-C2H6D6of.js +2 -0
  15. package/dist/assets/DeploymentsView-C2H6D6of.js.map +1 -0
  16. package/dist/assets/EquivalentCommand-BFnZRfDg.css +1 -0
  17. package/dist/assets/EquivalentCommand-DRkXOe18.js +3 -0
  18. package/dist/assets/EquivalentCommand-DRkXOe18.js.map +1 -0
  19. package/dist/assets/{ErrorNote.vue_vue_type_script_setup_true_lang-BJpi4S3s.js → ErrorNote.vue_vue_type_script_setup_true_lang-BZ9OIXGB.js} +2 -2
  20. package/dist/assets/{ErrorNote.vue_vue_type_script_setup_true_lang-BJpi4S3s.js.map → ErrorNote.vue_vue_type_script_setup_true_lang-BZ9OIXGB.js.map} +1 -1
  21. package/dist/assets/{JobDetailView-DB6cP2ka.js → JobDetailView-C8y-1Gk0.js} +2 -2
  22. package/dist/assets/{JobDetailView-DB6cP2ka.js.map → JobDetailView-C8y-1Gk0.js.map} +1 -1
  23. package/dist/assets/JobsView-Wa28PKmj.js +2 -0
  24. package/dist/assets/JobsView-Wa28PKmj.js.map +1 -0
  25. package/dist/assets/LoginView-DhMeluqJ.css +1 -0
  26. package/dist/assets/LoginView-w9pB4KOG.js +2 -0
  27. package/dist/assets/LoginView-w9pB4KOG.js.map +1 -0
  28. package/dist/assets/{LogsTab-BHYDWsWb.js → LogsTab-BA-imxfQ.js} +3 -3
  29. package/dist/assets/{LogsTab-BHYDWsWb.js.map → LogsTab-BA-imxfQ.js.map} +1 -1
  30. package/dist/assets/NotFoundView-B01q_-mC.js +2 -0
  31. package/dist/assets/{NotFoundView-ROlvmBTU.js.map → NotFoundView-B01q_-mC.js.map} +1 -1
  32. package/dist/assets/NotifiersView-DuvX0P6t.js +2 -0
  33. package/dist/assets/NotifiersView-DuvX0P6t.js.map +1 -0
  34. package/dist/assets/{OverviewTab-LKcYN5mk.js → OverviewTab-Blf-Az3p.js} +2 -2
  35. package/dist/assets/{OverviewTab-LKcYN5mk.js.map → OverviewTab-Blf-Az3p.js.map} +1 -1
  36. package/dist/assets/RegistriesView-Cnlw2YCk.js +2 -0
  37. package/dist/assets/RegistriesView-Cnlw2YCk.js.map +1 -0
  38. package/dist/assets/RelativeTime.vue_vue_type_script_setup_true_lang-DHneomCg.js +2 -0
  39. package/dist/assets/RelativeTime.vue_vue_type_script_setup_true_lang-DHneomCg.js.map +1 -0
  40. package/dist/assets/{RequiresTab-BeZeFQdv.js → RequiresTab-DQg43NYf.js} +2 -2
  41. package/dist/assets/{RequiresTab-BeZeFQdv.js.map → RequiresTab-DQg43NYf.js.map} +1 -1
  42. package/dist/assets/RoutingView-DSkMdPwp.js +9 -0
  43. package/dist/assets/RoutingView-DSkMdPwp.js.map +1 -0
  44. package/dist/assets/RuntimeTab-DDOtdkb1.js +2 -0
  45. package/dist/assets/{RuntimeTab-CWjyUEnD.js.map → RuntimeTab-DDOtdkb1.js.map} +1 -1
  46. package/dist/assets/SettingsView-DKeXVJ5c.js +2 -0
  47. package/dist/assets/SettingsView-DKeXVJ5c.js.map +1 -0
  48. package/dist/assets/SkeletonList.vue_vue_type_script_setup_true_lang-Bko4Bp5e.js +2 -0
  49. package/dist/assets/{SkeletonList.vue_vue_type_script_setup_true_lang-B4p28Paq.js.map → SkeletonList.vue_vue_type_script_setup_true_lang-Bko4Bp5e.js.map} +1 -1
  50. package/dist/assets/{SpecDetailView-CDXuYT7k.js → SpecDetailView-DItY-dvv.js} +2 -2
  51. package/dist/assets/{SpecDetailView-CDXuYT7k.js.map → SpecDetailView-DItY-dvv.js.map} +1 -1
  52. package/dist/assets/SpecsView-BOyfeFiw.js +2 -0
  53. package/dist/assets/SpecsView-BOyfeFiw.js.map +1 -0
  54. package/dist/assets/StateBadge.vue_vue_type_script_setup_true_lang-C0jjaI2w.js +2 -0
  55. package/dist/assets/{StateBadge.vue_vue_type_script_setup_true_lang-BBoSnS4z.js.map → StateBadge.vue_vue_type_script_setup_true_lang-C0jjaI2w.js.map} +1 -1
  56. package/dist/assets/{SubmitView-DoVltkUx.js → SubmitView-DJHNoMy8.js} +4 -4
  57. package/dist/assets/{SubmitView-DoVltkUx.js.map → SubmitView-DJHNoMy8.js.map} +1 -1
  58. package/dist/assets/TerminalTab-BAzAYOEa.js +3 -0
  59. package/dist/assets/TerminalTab-BAzAYOEa.js.map +1 -0
  60. package/dist/assets/TerminalTab-Bqulz6Eb.css +1 -0
  61. package/dist/assets/UsersView-DZhhpsnX.css +1 -0
  62. package/dist/assets/UsersView-DyqtgK5V.js +2 -0
  63. package/dist/assets/UsersView-DyqtgK5V.js.map +1 -0
  64. package/dist/assets/{VarEditor.vue_vue_type_script_setup_true_lang-CjFu7uoM.js → VarEditor.vue_vue_type_script_setup_true_lang-CDXij21z.js} +2 -2
  65. package/dist/assets/{VarEditor.vue_vue_type_script_setup_true_lang-CjFu7uoM.js.map → VarEditor.vue_vue_type_script_setup_true_lang-CDXij21z.js.map} +1 -1
  66. package/dist/assets/_commonjsHelpers-CqkleIqs.js +2 -0
  67. package/dist/assets/_commonjsHelpers-CqkleIqs.js.map +1 -0
  68. package/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js +2 -0
  69. package/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js.map +1 -0
  70. package/dist/assets/addon-fit-CevVMrUA.js +2 -0
  71. package/dist/assets/addon-fit-CevVMrUA.js.map +1 -0
  72. package/dist/assets/index-I3zdQqtI.css +1 -0
  73. package/dist/assets/index-zMwxPFi6.js +134 -0
  74. package/dist/assets/index-zMwxPFi6.js.map +1 -0
  75. package/dist/assets/{useDeployment-DKKVYXcr.js → useDeployment-Cm0bIOKD.js} +2 -2
  76. package/dist/assets/{useDeployment-DKKVYXcr.js.map → useDeployment-Cm0bIOKD.js.map} +1 -1
  77. package/dist/assets/xterm-D6Mng-DB.js +10 -0
  78. package/dist/assets/xterm-D6Mng-DB.js.map +1 -0
  79. package/dist/assets/xterm-DYP7pi_n.css +32 -0
  80. package/dist/index.html +2 -2
  81. package/nginx.conf +17 -1
  82. package/package.json +3 -1
  83. package/dist/assets/AxesTab-Cxy76M1f.js +0 -2
  84. package/dist/assets/ConfigTab-ezI-u-MN.js +0 -2
  85. package/dist/assets/ConfigTab-ezI-u-MN.js.map +0 -1
  86. package/dist/assets/DangerTab-Cnr_8-Ba.js +0 -2
  87. package/dist/assets/DashboardView-Dgqzqr0u.js +0 -2
  88. package/dist/assets/DashboardView-Dgqzqr0u.js.map +0 -1
  89. package/dist/assets/DeploymentDetailView-CzNOnaAb.js +0 -2
  90. package/dist/assets/DeploymentDetailView-CzNOnaAb.js.map +0 -1
  91. package/dist/assets/DeploymentsView-CDNBJ7JQ.js +0 -2
  92. package/dist/assets/DeploymentsView-CDNBJ7JQ.js.map +0 -1
  93. package/dist/assets/JobsView-DeAdOUVq.js +0 -2
  94. package/dist/assets/JobsView-DeAdOUVq.js.map +0 -1
  95. package/dist/assets/NotFoundView-ROlvmBTU.js +0 -2
  96. package/dist/assets/RegistriesView-Bvnq_VSn.js +0 -2
  97. package/dist/assets/RegistriesView-Bvnq_VSn.js.map +0 -1
  98. package/dist/assets/RoutingView-BjBTNG-z.js +0 -9
  99. package/dist/assets/RoutingView-BjBTNG-z.js.map +0 -1
  100. package/dist/assets/RuntimeTab-CWjyUEnD.js +0 -2
  101. package/dist/assets/SettingsView-D_roVhhz.js +0 -2
  102. package/dist/assets/SettingsView-D_roVhhz.js.map +0 -1
  103. package/dist/assets/SkeletonList.vue_vue_type_script_setup_true_lang-B4p28Paq.js +0 -2
  104. package/dist/assets/SpecsView-Bib418qu.js +0 -2
  105. package/dist/assets/SpecsView-Bib418qu.js.map +0 -1
  106. package/dist/assets/StateBadge.vue_vue_type_script_setup_true_lang-BBoSnS4z.js +0 -2
  107. package/dist/assets/index-B4C7uKN0.js +0 -124
  108. package/dist/assets/index-B4C7uKN0.js.map +0 -1
  109. package/dist/assets/index-Ca3L5StC.css +0 -1
@@ -1,2 +1,2 @@
1
- import{L as n,m as i,k as d,p as l,G as p,M as c}from"./index-B4C7uKN0.js";import{w as u,r as y}from"./useVars-VN9gYdR6.js";const e=n({id:"",detail:null,error:"",loading:!1,vars:[]}),f=i(()=>p(e.vars)),k=i(()=>c(e.id)),b=i(()=>{var a;return((a=e.detail)==null?void 0:a.kind)==="shared"}),h=i(()=>{var a;return(((a=e.detail)==null?void 0:a.axes)??[]).filter(s=>!s.verifiable).map(s=>s.name)});async function t(){const a=e.id;e.loading=!0;const s=await d.get(`/api/deployments/${encodeURIComponent(a)}${f.value}`);if(e.id!==a)return;if(e.loading=!1,!s.ok){e.detail=null,e.error=l(s,`GET /api/deployments/${a}`);return}e.error="";const r=s.body;e.detail={id:r.id??a,kind:r.kind==="shared"?"shared":"isolated",createdAt:r.createdAt,updatedAt:r.updatedAt,stack:typeof r.stack=="string"?r.stack:"",busy:r.busy??null,compose:r.compose?{file:r.compose.file??"?",profiles:r.compose.profiles??[],overlays:r.compose.overlays??[]}:null,requires:Array.isArray(r.requires)?r.requires:[],axes:(Array.isArray(r.axes)?r.axes:[]).map(o=>({name:o.name,hooks:Array.isArray(o.hooks)?o.hooks:[],verifiable:o.verifiable??(Array.isArray(o.hooks)&&o.hooks.includes("assert_gone"))})),env:Array.isArray(r.env)?r.env:[]}}function g(a){e.id===a&&(e.detail||e.error)||(e.id=a,e.detail=null,e.error="",e.vars=y(a),t())}function m(){u(e.id,e.vars)}function x(){m(),t()}export{x as a,e as d,b as i,g as o,m as p,k as r,h as u,f as v};
2
- //# sourceMappingURL=useDeployment-DKKVYXcr.js.map
1
+ import{S as n,C as i,A as d,B as l,K as p,U as c}from"./index-zMwxPFi6.js";import{w as u,r as y}from"./useVars-VN9gYdR6.js";const e=n({id:"",detail:null,error:"",loading:!1,vars:[]}),f=i(()=>p(e.vars)),k=i(()=>c(e.id)),b=i(()=>{var a;return((a=e.detail)==null?void 0:a.kind)==="shared"}),h=i(()=>{var a;return(((a=e.detail)==null?void 0:a.axes)??[]).filter(s=>!s.verifiable).map(s=>s.name)});async function t(){const a=e.id;e.loading=!0;const s=await d.get(`/api/deployments/${encodeURIComponent(a)}${f.value}`);if(e.id!==a)return;if(e.loading=!1,!s.ok){e.detail=null,e.error=l(s,`GET /api/deployments/${a}`);return}e.error="";const r=s.body;e.detail={id:r.id??a,kind:r.kind==="shared"?"shared":"isolated",createdAt:r.createdAt,updatedAt:r.updatedAt,stack:typeof r.stack=="string"?r.stack:"",busy:r.busy??null,compose:r.compose?{file:r.compose.file??"?",profiles:r.compose.profiles??[],overlays:r.compose.overlays??[]}:null,requires:Array.isArray(r.requires)?r.requires:[],axes:(Array.isArray(r.axes)?r.axes:[]).map(o=>({name:o.name,hooks:Array.isArray(o.hooks)?o.hooks:[],verifiable:o.verifiable??(Array.isArray(o.hooks)&&o.hooks.includes("assert_gone"))})),env:Array.isArray(r.env)?r.env:[]}}function g(a){e.id===a&&(e.detail||e.error)||(e.id=a,e.detail=null,e.error="",e.vars=y(a),t())}function m(){u(e.id,e.vars)}function x(){m(),t()}export{x as a,e as d,b as i,g as o,m as p,k as r,h as u,f as v};
2
+ //# sourceMappingURL=useDeployment-Cm0bIOKD.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDeployment-DKKVYXcr.js","sources":["../../src/composables/useDeployment.ts"],"sourcesContent":["/**\n * The deployment currently open in the detail view.\n *\n * A module singleton rather than provide/inject, because the six tabs are CHILD ROUTES: they are\n * siblings of each other and are mounted and unmounted independently, so passing the loaded\n * deployment down as a prop would mean re-fetching it on every tab change. Switching tabs must not\n * re-fetch or blank the panel — only opening a DIFFERENT deployment does.\n *\n * `vars` here are REQUEST-TIME variables, sent as `?query` on every route that resolves this\n * deployment. See `useVars.ts` for why they matter and what they can get wrong.\n */\n\nimport { computed, reactive } from 'vue';\nimport { api, problem, query } from '../api/client';\nimport type { Deployment, VarPair } from '../api/types';\nimport { readVars, writeVars } from './useVars';\nimport { rowFor } from './useControlPlane';\n\nexport const dep = reactive({\n id: '',\n detail: null as Deployment | null,\n /** The resolve failure, verbatim. It is a 400 that NAMES the missing variable. */\n error: '',\n loading: false,\n vars: [] as VarPair[],\n});\n\nexport const varsQuery = computed(() => query(dep.vars));\n\n/** The list row, which is the only place the server exposes stored `vars` and `specName` today. */\nexport const row = computed(() => rowFor(dep.id));\n\nexport const isShared = computed(() => dep.detail?.kind === 'shared');\n\nexport const unverifiableAxes = computed(() =>\n (dep.detail?.axes ?? []).filter((a) => !a.verifiable).map((a) => a.name),\n);\n\nexport async function loadDetail(): Promise<void> {\n const id = dep.id;\n dep.loading = true;\n const r = await api.get<Deployment>(`/api/deployments/${encodeURIComponent(id)}${varsQuery.value}`);\n // Navigated to another deployment while this was in flight: drop the answer rather than render\n // one deployment's spec under another's id.\n if (dep.id !== id) return;\n dep.loading = false;\n\n if (!r.ok) {\n dep.detail = null;\n dep.error = problem(r, `GET /api/deployments/${id}`);\n return;\n }\n dep.error = '';\n const b = r.body;\n dep.detail = {\n id: b.id ?? id,\n kind: b.kind === 'shared' ? 'shared' : 'isolated',\n createdAt: b.createdAt,\n updatedAt: b.updatedAt,\n stack: typeof b.stack === 'string' ? b.stack : '',\n busy: b.busy ?? null,\n compose: b.compose\n ? {\n file: b.compose.file ?? '?',\n profiles: b.compose.profiles ?? [],\n overlays: b.compose.overlays ?? [],\n }\n : null,\n requires: Array.isArray(b.requires) ? b.requires : [],\n axes: (Array.isArray(b.axes) ? b.axes : []).map((a) => ({\n name: a.name,\n hooks: Array.isArray(a.hooks) ? a.hooks : [],\n // Derive it if an older build omits the field. Defaulting to `false` would claim an axis is\n // unverifiable when it may define a perfectly good `assert_gone`.\n verifiable: a.verifiable ?? (Array.isArray(a.hooks) && a.hooks.includes('assert_gone')),\n })),\n env: Array.isArray(b.env) ? b.env : [],\n };\n}\n\n/** Point the singleton at a deployment. Resets everything a stale id could leak into the new one. */\nexport function openDeployment(id: string): void {\n if (dep.id === id && (dep.detail || dep.error)) return; // a tab change, not a navigation\n dep.id = id;\n dep.detail = null;\n dep.error = '';\n dep.vars = readVars(id);\n void loadDetail();\n}\n\nexport function persistVars(): void {\n writeVars(dep.id, dep.vars);\n}\n\nexport function applyVars(): void {\n persistVars();\n void loadDetail();\n}\n"],"names":["dep","reactive","varsQuery","computed","query","row","rowFor","isShared","_a","unverifiableAxes","a","loadDetail","id","r","api","problem","b","openDeployment","readVars","persistVars","writeVars","applyVars"],"mappings":"4HAkBO,MAAMA,EAAMC,EAAS,CAC1B,GAAI,GACJ,OAAQ,KAER,MAAO,GACP,QAAS,GACT,KAAM,CAAA,CACR,CAAC,EAEYC,EAAYC,EAAS,IAAMC,EAAMJ,EAAI,IAAI,CAAC,EAG1CK,EAAMF,EAAS,IAAMG,EAAON,EAAI,EAAE,CAAC,EAEnCO,EAAWJ,EAAS,IAAA,OAAM,QAAAK,EAAAR,EAAI,SAAJ,YAAAQ,EAAY,QAAS,SAAQ,EAEvDC,EAAmBN,EAAS,IAAA,OACtC,SAAAK,EAAAR,EAAI,SAAJ,YAAAQ,EAAY,OAAQ,CAAA,GAAI,OAAQE,GAAM,CAACA,EAAE,UAAU,EAAE,IAAKA,GAAMA,EAAE,IAAI,EACzE,EAEA,eAAsBC,GAA4B,CAChD,MAAMC,EAAKZ,EAAI,GACfA,EAAI,QAAU,GACd,MAAMa,EAAI,MAAMC,EAAI,IAAgB,oBAAoB,mBAAmBF,CAAE,CAAC,GAAGV,EAAU,KAAK,EAAE,EAGlG,GAAIF,EAAI,KAAOY,EAAI,OAGnB,GAFAZ,EAAI,QAAU,GAEV,CAACa,EAAE,GAAI,CACTb,EAAI,OAAS,KACbA,EAAI,MAAQe,EAAQF,EAAG,wBAAwBD,CAAE,EAAE,EACnD,MACF,CACAZ,EAAI,MAAQ,GACZ,MAAMgB,EAAIH,EAAE,KACZb,EAAI,OAAS,CACX,GAAIgB,EAAE,IAAMJ,EACZ,KAAMI,EAAE,OAAS,SAAW,SAAW,WACvC,UAAWA,EAAE,UACb,UAAWA,EAAE,UACb,MAAO,OAAOA,EAAE,OAAU,SAAWA,EAAE,MAAQ,GAC/C,KAAMA,EAAE,MAAQ,KAChB,QAASA,EAAE,QACP,CACE,KAAMA,EAAE,QAAQ,MAAQ,IACxB,SAAUA,EAAE,QAAQ,UAAY,CAAA,EAChC,SAAUA,EAAE,QAAQ,UAAY,CAAA,CAAC,EAEnC,KACJ,SAAU,MAAM,QAAQA,EAAE,QAAQ,EAAIA,EAAE,SAAW,CAAA,EACnD,MAAO,MAAM,QAAQA,EAAE,IAAI,EAAIA,EAAE,KAAO,CAAA,GAAI,IAAKN,IAAO,CACtD,KAAMA,EAAE,KACR,MAAO,MAAM,QAAQA,EAAE,KAAK,EAAIA,EAAE,MAAQ,CAAA,EAG1C,WAAYA,EAAE,aAAe,MAAM,QAAQA,EAAE,KAAK,GAAKA,EAAE,MAAM,SAAS,aAAa,EAAA,EACrF,EACF,IAAK,MAAM,QAAQM,EAAE,GAAG,EAAIA,EAAE,IAAM,CAAA,CAAC,CAEzC,CAGO,SAASC,EAAeL,EAAkB,CAC3CZ,EAAI,KAAOY,IAAOZ,EAAI,QAAUA,EAAI,SACxCA,EAAI,GAAKY,EACTZ,EAAI,OAAS,KACbA,EAAI,MAAQ,GACZA,EAAI,KAAOkB,EAASN,CAAE,EACjBD,EAAA,EACP,CAEO,SAASQ,GAAoB,CAClCC,EAAUpB,EAAI,GAAIA,EAAI,IAAI,CAC5B,CAEO,SAASqB,GAAkB,CAChCF,EAAA,EACKR,EAAA,CACP"}
1
+ {"version":3,"file":"useDeployment-Cm0bIOKD.js","sources":["../../src/composables/useDeployment.ts"],"sourcesContent":["/**\n * The deployment currently open in the detail view.\n *\n * A module singleton rather than provide/inject, because the six tabs are CHILD ROUTES: they are\n * siblings of each other and are mounted and unmounted independently, so passing the loaded\n * deployment down as a prop would mean re-fetching it on every tab change. Switching tabs must not\n * re-fetch or blank the panel — only opening a DIFFERENT deployment does.\n *\n * `vars` here are REQUEST-TIME variables, sent as `?query` on every route that resolves this\n * deployment. See `useVars.ts` for why they matter and what they can get wrong.\n */\n\nimport { computed, reactive } from 'vue';\nimport { api, problem, query } from '../api/client';\nimport type { Deployment, VarPair } from '../api/types';\nimport { readVars, writeVars } from './useVars';\nimport { rowFor } from './useControlPlane';\n\nexport const dep = reactive({\n id: '',\n detail: null as Deployment | null,\n /** The resolve failure, verbatim. It is a 400 that NAMES the missing variable. */\n error: '',\n loading: false,\n vars: [] as VarPair[],\n});\n\nexport const varsQuery = computed(() => query(dep.vars));\n\n/** The list row, which is the only place the server exposes stored `vars` and `specName` today. */\nexport const row = computed(() => rowFor(dep.id));\n\nexport const isShared = computed(() => dep.detail?.kind === 'shared');\n\nexport const unverifiableAxes = computed(() =>\n (dep.detail?.axes ?? []).filter((a) => !a.verifiable).map((a) => a.name),\n);\n\nexport async function loadDetail(): Promise<void> {\n const id = dep.id;\n dep.loading = true;\n const r = await api.get<Deployment>(`/api/deployments/${encodeURIComponent(id)}${varsQuery.value}`);\n // Navigated to another deployment while this was in flight: drop the answer rather than render\n // one deployment's spec under another's id.\n if (dep.id !== id) return;\n dep.loading = false;\n\n if (!r.ok) {\n dep.detail = null;\n dep.error = problem(r, `GET /api/deployments/${id}`);\n return;\n }\n dep.error = '';\n const b = r.body;\n dep.detail = {\n id: b.id ?? id,\n kind: b.kind === 'shared' ? 'shared' : 'isolated',\n createdAt: b.createdAt,\n updatedAt: b.updatedAt,\n stack: typeof b.stack === 'string' ? b.stack : '',\n busy: b.busy ?? null,\n compose: b.compose\n ? {\n file: b.compose.file ?? '?',\n profiles: b.compose.profiles ?? [],\n overlays: b.compose.overlays ?? [],\n }\n : null,\n requires: Array.isArray(b.requires) ? b.requires : [],\n axes: (Array.isArray(b.axes) ? b.axes : []).map((a) => ({\n name: a.name,\n hooks: Array.isArray(a.hooks) ? a.hooks : [],\n // Derive it if an older build omits the field. Defaulting to `false` would claim an axis is\n // unverifiable when it may define a perfectly good `assert_gone`.\n verifiable: a.verifiable ?? (Array.isArray(a.hooks) && a.hooks.includes('assert_gone')),\n })),\n env: Array.isArray(b.env) ? b.env : [],\n };\n}\n\n/** Point the singleton at a deployment. Resets everything a stale id could leak into the new one. */\nexport function openDeployment(id: string): void {\n if (dep.id === id && (dep.detail || dep.error)) return; // a tab change, not a navigation\n dep.id = id;\n dep.detail = null;\n dep.error = '';\n dep.vars = readVars(id);\n void loadDetail();\n}\n\nexport function persistVars(): void {\n writeVars(dep.id, dep.vars);\n}\n\nexport function applyVars(): void {\n persistVars();\n void loadDetail();\n}\n"],"names":["dep","reactive","varsQuery","computed","query","row","rowFor","isShared","_a","unverifiableAxes","a","loadDetail","id","r","api","problem","b","openDeployment","readVars","persistVars","writeVars","applyVars"],"mappings":"4HAkBO,MAAMA,EAAMC,EAAS,CAC1B,GAAI,GACJ,OAAQ,KAER,MAAO,GACP,QAAS,GACT,KAAM,CAAA,CACR,CAAC,EAEYC,EAAYC,EAAS,IAAMC,EAAMJ,EAAI,IAAI,CAAC,EAG1CK,EAAMF,EAAS,IAAMG,EAAON,EAAI,EAAE,CAAC,EAEnCO,EAAWJ,EAAS,IAAA,OAAM,QAAAK,EAAAR,EAAI,SAAJ,YAAAQ,EAAY,QAAS,SAAQ,EAEvDC,EAAmBN,EAAS,IAAA,OACtC,SAAAK,EAAAR,EAAI,SAAJ,YAAAQ,EAAY,OAAQ,CAAA,GAAI,OAAQE,GAAM,CAACA,EAAE,UAAU,EAAE,IAAKA,GAAMA,EAAE,IAAI,EACzE,EAEA,eAAsBC,GAA4B,CAChD,MAAMC,EAAKZ,EAAI,GACfA,EAAI,QAAU,GACd,MAAMa,EAAI,MAAMC,EAAI,IAAgB,oBAAoB,mBAAmBF,CAAE,CAAC,GAAGV,EAAU,KAAK,EAAE,EAGlG,GAAIF,EAAI,KAAOY,EAAI,OAGnB,GAFAZ,EAAI,QAAU,GAEV,CAACa,EAAE,GAAI,CACTb,EAAI,OAAS,KACbA,EAAI,MAAQe,EAAQF,EAAG,wBAAwBD,CAAE,EAAE,EACnD,MACF,CACAZ,EAAI,MAAQ,GACZ,MAAMgB,EAAIH,EAAE,KACZb,EAAI,OAAS,CACX,GAAIgB,EAAE,IAAMJ,EACZ,KAAMI,EAAE,OAAS,SAAW,SAAW,WACvC,UAAWA,EAAE,UACb,UAAWA,EAAE,UACb,MAAO,OAAOA,EAAE,OAAU,SAAWA,EAAE,MAAQ,GAC/C,KAAMA,EAAE,MAAQ,KAChB,QAASA,EAAE,QACP,CACE,KAAMA,EAAE,QAAQ,MAAQ,IACxB,SAAUA,EAAE,QAAQ,UAAY,CAAA,EAChC,SAAUA,EAAE,QAAQ,UAAY,CAAA,CAAC,EAEnC,KACJ,SAAU,MAAM,QAAQA,EAAE,QAAQ,EAAIA,EAAE,SAAW,CAAA,EACnD,MAAO,MAAM,QAAQA,EAAE,IAAI,EAAIA,EAAE,KAAO,CAAA,GAAI,IAAKN,IAAO,CACtD,KAAMA,EAAE,KACR,MAAO,MAAM,QAAQA,EAAE,KAAK,EAAIA,EAAE,MAAQ,CAAA,EAG1C,WAAYA,EAAE,aAAe,MAAM,QAAQA,EAAE,KAAK,GAAKA,EAAE,MAAM,SAAS,aAAa,EAAA,EACrF,EACF,IAAK,MAAM,QAAQM,EAAE,GAAG,EAAIA,EAAE,IAAM,CAAA,CAAC,CAEzC,CAGO,SAASC,EAAeL,EAAkB,CAC3CZ,EAAI,KAAOY,IAAOZ,EAAI,QAAUA,EAAI,SACxCA,EAAI,GAAKY,EACTZ,EAAI,OAAS,KACbA,EAAI,MAAQ,GACZA,EAAI,KAAOkB,EAASN,CAAE,EACjBD,EAAA,EACP,CAEO,SAASQ,GAAoB,CAClCC,EAAUpB,EAAI,GAAIA,EAAI,IAAI,CAC5B,CAEO,SAASqB,GAAkB,CAChCF,EAAA,EACKR,EAAA,CACP"}