zenml-nightly 0.82.0.dev20250513__py3-none-any.whl → 0.82.1.dev20250517__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. zenml/VERSION +1 -1
  2. zenml/config/build_configuration.py +9 -0
  3. zenml/config/docker_settings.py +97 -16
  4. zenml/constants.py +1 -0
  5. zenml/integrations/kubernetes/flavors/kubernetes_orchestrator_flavor.py +12 -1
  6. zenml/integrations/kubernetes/orchestrators/kube_utils.py +24 -1
  7. zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator.py +3 -0
  8. zenml/integrations/kubernetes/orchestrators/kubernetes_orchestrator_entrypoint.py +21 -5
  9. zenml/integrations/kubernetes/orchestrators/manifest_utils.py +13 -0
  10. zenml/orchestrators/step_launcher.py +4 -0
  11. zenml/orchestrators/step_run_utils.py +30 -1
  12. zenml/pipelines/build_utils.py +8 -0
  13. zenml/utils/pipeline_docker_image_builder.py +133 -7
  14. zenml/utils/tag_utils.py +3 -3
  15. zenml/zen_server/dashboard/assets/{404-D4aYbspS.js → 404-_AtuLtaX.js} +1 -1
  16. zenml/zen_server/dashboard/assets/{AlertDialogDropdownItem-CRZjthRL.js → AlertDialogDropdownItem-BG7-Ki1L.js} +1 -1
  17. zenml/zen_server/dashboard/assets/{CodeSnippet-Di-loaZu.js → CodeSnippet-CvI6D0wx.js} +1 -1
  18. zenml/zen_server/dashboard/assets/{CollapsibleCard-Dr5zb5T5.js → CollapsibleCard-D20FtrzC.js} +1 -1
  19. zenml/zen_server/dashboard/assets/{Commands-CD9Y7FOE.js → Commands-DGbAvMDk.js} +1 -1
  20. zenml/zen_server/dashboard/assets/{ComponentBadge-BgGnzcLu.js → ComponentBadge-DKw7Gndh.js} +1 -1
  21. zenml/zen_server/dashboard/assets/{ComponentIcon-B_7Y_oV-.js → ComponentIcon-ils7uNAk.js} +1 -1
  22. zenml/zen_server/dashboard/assets/{CsvVizualization-CDrjL6bW.js → CsvVizualization-DVN541XF.js} +1 -1
  23. zenml/zen_server/dashboard/assets/{DeleteAlertDialog-9RTDnEx3.js → DeleteAlertDialog-DVvXt-S6.js} +1 -1
  24. zenml/zen_server/dashboard/assets/{DialogItem-0fWTH7ki.js → DialogItem-BHWf3sIB.js} +1 -1
  25. zenml/zen_server/dashboard/assets/{Error-vBjUYjb-.js → Error-BWaXP0VK.js} +1 -1
  26. zenml/zen_server/dashboard/assets/{ExecutionStatus-B-ysY113.js → ExecutionStatus-XrvT2r65.js} +1 -1
  27. zenml/zen_server/dashboard/assets/{Helpbox-Dt3q7NGd.js → Helpbox-iE1xLmiZ.js} +1 -1
  28. zenml/zen_server/dashboard/assets/{Infobox-Bai0JtFs.js → Infobox-D9k5TFH4.js} +1 -1
  29. zenml/zen_server/dashboard/assets/{InlineAvatar-Cpj0lVRQ.js → InlineAvatar-Cfz4WSLK.js} +1 -1
  30. zenml/zen_server/dashboard/assets/{NestedCollapsible-DbhKdWx-.js → NestedCollapsible-Dor-bi98.js} +1 -1
  31. zenml/zen_server/dashboard/assets/{Partials-BNBtCjuT.js → Partials-DQJFw1yW.js} +1 -1
  32. zenml/zen_server/dashboard/assets/{ProBadge-3vtouJQf.js → ProBadge-Cp4hb1YT.js} +1 -1
  33. zenml/zen_server/dashboard/assets/{ProCta-BoTLdAdV.js → ProCta-EYoV9CvK.js} +1 -1
  34. zenml/zen_server/dashboard/assets/{ProviderIcon-kkODO9tx.js → ProviderIcon-DLo7t1lo.js} +1 -1
  35. zenml/zen_server/dashboard/assets/{ProviderRadio-26EB5tY-.js → ProviderRadio-BVDA-fAr.js} +1 -1
  36. zenml/zen_server/dashboard/assets/{RunSelector-j0C_TPVp.js → RunSelector-BLuBYNJt.js} +1 -1
  37. zenml/zen_server/dashboard/assets/{RunsBody-DexNouV4.js → RunsBody-W4WHf-sq.js} +1 -1
  38. zenml/zen_server/dashboard/assets/{SearchField-DMCywawn.js → SearchField-D-h6jXyg.js} +1 -1
  39. zenml/zen_server/dashboard/assets/{SecretTooltip-LLGP7AIC.js → SecretTooltip-CePCL8kd.js} +1 -1
  40. zenml/zen_server/dashboard/assets/{SetPassword-CBHW-Su8.js → SetPassword-DR-EiLI5.js} +1 -1
  41. zenml/zen_server/dashboard/assets/{StackList-S-9I1R4n.js → StackList-CgmN5H-i.js} +1 -1
  42. zenml/zen_server/dashboard/assets/{Tabs-C2ufJX4t.js → Tabs-DxQ8PDOD.js} +1 -1
  43. zenml/zen_server/dashboard/assets/{Tick-ay3Bgtro.js → Tick-CEsT3HPR.js} +1 -1
  44. zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-p3RX0P-Q.js → UpdatePasswordSchemas-DbFEaezI.js} +1 -1
  45. zenml/zen_server/dashboard/assets/{UsageReason-C8sD2bOU.js → UsageReason-DjI5qMje.js} +1 -1
  46. zenml/zen_server/dashboard/assets/{Wizard-DIllc07n.js → Wizard-CMI6Ksgz.js} +1 -1
  47. zenml/zen_server/dashboard/assets/{WizardFooter-dNDpuero.js → WizardFooter-CFBHFZas.js} +1 -1
  48. zenml/zen_server/dashboard/assets/{all-pipeline-runs-query-BUT1PiTp.js → all-pipeline-runs-query-BGASHYtF.js} +1 -1
  49. zenml/zen_server/dashboard/assets/{configuration-form-DBZSb0FV.js → configuration-form-BtI2Y4eX.js} +1 -1
  50. zenml/zen_server/dashboard/assets/{create-stack-BXLyjE58.js → create-stack-BJ6x5rzj.js} +1 -1
  51. zenml/zen_server/dashboard/assets/{delete-run-DzcYxUnd.js → delete-run-DlSLEl5T.js} +1 -1
  52. zenml/zen_server/dashboard/assets/{flavor-select-BTEwByv6.js → flavor-select-BnPxvQDN.js} +1 -1
  53. zenml/zen_server/dashboard/assets/{form-schemas-BJN_25Ua.js → form-schemas-CbvoEUHr.js} +1 -1
  54. zenml/zen_server/dashboard/assets/{index-wYtmKLnQ.js → index-CFESYpe4.js} +1 -1
  55. zenml/zen_server/dashboard/assets/{index-D9-ukAem.js → index-CmLcvK2z.js} +1 -1
  56. zenml/zen_server/dashboard/assets/{index-8uhUi12k.js → index-CrhdX_qG.js} +1 -1
  57. zenml/zen_server/dashboard/assets/index-CzX3ZYlI.css +1 -0
  58. zenml/zen_server/dashboard/assets/{index-BygJE88j.js → index-D2iSHVZq.js} +7 -7
  59. zenml/zen_server/dashboard/assets/{login-mutation-DywLqguW.js → login-mutation-CXc-Klim.js} +1 -1
  60. zenml/zen_server/dashboard/assets/{not-found-BOoklIG4.js → not-found-olRU3fnu.js} +1 -1
  61. zenml/zen_server/dashboard/assets/{page-ByXQN8A-.js → page-7keIM1V3.js} +1 -1
  62. zenml/zen_server/dashboard/assets/{page-4nVakAEl.js → page-B31neFwG.js} +1 -1
  63. zenml/zen_server/dashboard/assets/{page-xa1EAPcI.js → page-B3zo4KYS.js} +1 -1
  64. zenml/zen_server/dashboard/assets/{page-DfTsntQI.js → page-BN3MHq1a.js} +1 -1
  65. zenml/zen_server/dashboard/assets/{page-BIYqUwTI.js → page-BNgVExjN.js} +1 -1
  66. zenml/zen_server/dashboard/assets/{page-kzSGEVUs.js → page-BPtvu74G.js} +1 -1
  67. zenml/zen_server/dashboard/assets/{page-uDGvpa5g.js → page-BTIuG0ki.js} +1 -1
  68. zenml/zen_server/dashboard/assets/{page--hSXKqyG.js → page-BcQzleH6.js} +1 -1
  69. zenml/zen_server/dashboard/assets/{page-B3DscprQ.js → page-C05Jw4M2.js} +1 -1
  70. zenml/zen_server/dashboard/assets/{page-BE8jdyaM.js → page-C28a7K8h.js} +1 -1
  71. zenml/zen_server/dashboard/assets/{page-B1Uq1S1Q.js → page-C9WLk0X-.js} +1 -1
  72. zenml/zen_server/dashboard/assets/{page-RV8wpZ_4.js → page-CINMx64X.js} +1 -1
  73. zenml/zen_server/dashboard/assets/{page-8AzB83Py.js → page-CSwZxZMQ.js} +1 -1
  74. zenml/zen_server/dashboard/assets/{page-D2TtSfnb.js → page-CYrJbk7P.js} +1 -1
  75. zenml/zen_server/dashboard/assets/{page-EXvws1ss.js → page-Ce0cqLo3.js} +1 -1
  76. zenml/zen_server/dashboard/assets/{page-2BsNK_sZ.js → page-CgNsEkw-.js} +1 -1
  77. zenml/zen_server/dashboard/assets/{page-cOEvFs_l.js → page-Ct2FUYuR.js} +1 -1
  78. zenml/zen_server/dashboard/assets/{page-DmteSSj6.js → page-D8G2B3Bu.js} +1 -1
  79. zenml/zen_server/dashboard/assets/page-DL8a4_lg.js +3 -0
  80. zenml/zen_server/dashboard/assets/{page-Ccnk_5ji.js → page-DMhYn1cF.js} +1 -1
  81. zenml/zen_server/dashboard/assets/{page-CPLlVRXx.js → page-Dd_Yq-Uf.js} +1 -1
  82. zenml/zen_server/dashboard/assets/{page-K9yjbnd4.js → page-DfSvqT8g.js} +1 -1
  83. zenml/zen_server/dashboard/assets/{page-B7Aj2XbV.js → page-Dt6ANUTx.js} +1 -1
  84. zenml/zen_server/dashboard/assets/{page-DHnkTzqs.js → page-DtvTleaT.js} +1 -1
  85. zenml/zen_server/dashboard/assets/{page-uN0n_DE2.js → page-DwfGTiVs.js} +1 -1
  86. zenml/zen_server/dashboard/assets/{page-Ci_n_x3a.js → page-JgomSTDc.js} +1 -1
  87. zenml/zen_server/dashboard/assets/{page-DkY7AIhj.js → page-L84ig6HB.js} +1 -1
  88. zenml/zen_server/dashboard/assets/{page-bUVHi7DE.js → page-Mabsn4QJ.js} +1 -1
  89. zenml/zen_server/dashboard/assets/{page-DP2Ed-2m.js → page-P04L5cm9.js} +1 -1
  90. zenml/zen_server/dashboard/assets/{page-D-ry_oLs.js → page-PfhAnvq4.js} +1 -1
  91. zenml/zen_server/dashboard/assets/{page-CI4a9CXs.js → page-WdRrlNt_.js} +1 -1
  92. zenml/zen_server/dashboard/assets/{page-D_5R6E7b.js → page-ZfTtFicG.js} +1 -1
  93. zenml/zen_server/dashboard/assets/{page-Dt3wHeWX.js → page-cqJDDDeK.js} +1 -1
  94. zenml/zen_server/dashboard/assets/{page-B0r9dBEU.js → page-k-Wxh9L_.js} +1 -1
  95. zenml/zen_server/dashboard/assets/page-y-zV4n0c.js +1 -0
  96. zenml/zen_server/dashboard/assets/{persist-SSTTV5q0.js → persist-D87V82eO.js} +1 -1
  97. zenml/zen_server/dashboard/assets/{persist-CEeDYHW5.js → persist-UUym702q.js} +1 -1
  98. zenml/zen_server/dashboard/assets/{service-BRoAA1Kq.js → service-BQ9KIhls.js} +1 -1
  99. zenml/zen_server/dashboard/assets/{sharedSchema-BACERDat.js → sharedSchema-Bse2agAf.js} +1 -1
  100. zenml/zen_server/dashboard/assets/{stack-detail-query-ihiJr6nq.js → stack-detail-query-BAcZJrN3.js} +1 -1
  101. zenml/zen_server/dashboard/assets/{update-server-settings-mutation-CK6COmw9.js → update-server-settings-mutation-DwMM1LJz.js} +1 -1
  102. zenml/zen_server/dashboard/index.html +3 -3
  103. zenml/zen_server/feature_gate/endpoint_utils.py +9 -12
  104. zenml/zen_server/feature_gate/feature_gate_interface.py +4 -6
  105. zenml/zen_server/feature_gate/zenml_cloud_feature_gate.py +8 -9
  106. zenml/zen_server/rbac/endpoint_utils.py +1 -1
  107. zenml/zen_server/rbac/rbac_sql_zen_store.py +2 -2
  108. zenml/zen_server/routers/run_templates_endpoints.py +10 -1
  109. zenml/zen_server/template_execution/utils.py +12 -1
  110. zenml/zen_stores/migrations/versions/0.82.1_release.py +23 -0
  111. zenml/zen_stores/sql_zen_store.py +3 -6
  112. {zenml_nightly-0.82.0.dev20250513.dist-info → zenml_nightly-0.82.1.dev20250517.dist-info}/METADATA +2 -2
  113. {zenml_nightly-0.82.0.dev20250513.dist-info → zenml_nightly-0.82.1.dev20250517.dist-info}/RECORD +116 -115
  114. zenml/zen_server/dashboard/assets/index-DmTFrHJm.css +0 -1
  115. zenml/zen_server/dashboard/assets/page-BTzhAVEn.js +0 -1
  116. zenml/zen_server/dashboard/assets/page-CSQOpvvK.js +0 -3
  117. {zenml_nightly-0.82.0.dev20250513.dist-info → zenml_nightly-0.82.1.dev20250517.dist-info}/LICENSE +0 -0
  118. {zenml_nightly-0.82.0.dev20250513.dist-info → zenml_nightly-0.82.1.dev20250517.dist-info}/WHEEL +0 -0
  119. {zenml_nightly-0.82.0.dev20250513.dist-info → zenml_nightly-0.82.1.dev20250517.dist-info}/entry_points.txt +0 -0
@@ -1 +1 @@
1
- import{r as i,j as e}from"./@radix-C7hRs6Kx.js";import{z as o,f as y,j as g,k as N,c as b,l as v,S,I as u,h as p,m as w,r as k,n as F}from"./index-BygJE88j.js";import{T as C,P}from"./ProCta-BoTLdAdV.js";import{t as U}from"./zod-C0xYeTvL.js";import{b as E}from"./@tanstack-CSxjHCME.js";import{u as M}from"./index.esm-D7jFlf5N.js";import{S as L}from"./check-circle-mvyzYvIW.js";import{L as z}from"./@react-router-CNP6g_RL.js";import"./@reactflow-CQi1Z1Wq.js";import"./check-DK77doTf.js";const h=i.createContext(null);function B({children:s}){const[t,a]=i.useState(!1);return e.jsx(h.Provider,{value:{setSubmitSuccess:a,submitSuccess:t},children:s})}function f(){const s=i.useContext(h);if(s===null)throw new Error("useUpgradeContext must be used within an UpgradeProvider");return s}const T=o.object({name:o.string().min(1),company:o.string().min(1),email:o.string().email()});function I(){const{setSubmitSuccess:s}=f(),{toast:t}=y(),a=M({resolver:U(T),defaultValues:{company:"",email:"",name:""}}),n=E({mutationFn:Z,onSuccess:()=>s(!0),onError:r=>{t({emphasis:"subtle",status:"error",rounded:!0,description:r.message})}});async function c(r,l,m){n.mutate({...r,userId:l,isDebug:m})}return{form:a,submitFormMutation:n,handleSubmitForm:c}}async function Z({company:s,email:t,isDebug:a,name:n,userId:c}){return g(N,{method:"POST",credentials:"omit",headers:{"Content-Type":"application/json"},body:JSON.stringify([{debug:a,event:"Upgrade initiated",type:"track",user_id:c,properties:{company:s,email:t,name:n}}])})}function _(){return e.jsxs("div",{className:"space-y-5",children:[e.jsx(D,{}),e.jsx(R,{})]})}function D(){return e.jsxs("div",{className:"flex flex-col items-center space-y-0.5",children:[e.jsx("h1",{className:"text-center text-display-xs font-semibold",children:"Upgrade to ZenML Pro on your own VPC"}),e.jsx("p",{className:"text-theme-text-secondary",children:"Direct self-deployment, no sales calls"})]})}function R(){const s=b(),t=v(),{form:a,handleSubmitForm:n,submitFormMutation:c}=I(),{register:r,handleSubmit:l,formState:{isValid:m,isSubmitting:d}}=a,{isPending:x}=c;return s.isPending||t.isPending?e.jsx(S,{className:"h-[250px] w-full"}):s.isError||t.isError?e.jsx("p",{children:"Something went wrong...."}):e.jsxs("div",{className:"space-y-5",children:[e.jsxs("form",{onSubmit:l(j=>n(j,t.data.id,!!s.data.debug)),className:"space-y-5",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("label",{htmlFor:"name",className:"text-text-sm",children:"Your Name"}),e.jsx(u,{...r("name"),id:"name",className:"w-full"})]}),e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("label",{htmlFor:"company",className:"text-text-sm",children:"Company"}),e.jsx(u,{...r("company"),id:"company",className:"w-full"})]}),e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("label",{htmlFor:"email",className:"text-text-sm",children:"Email address"}),e.jsx(u,{...r("email"),id:"email",className:"w-full"})]}),e.jsxs(p,{size:"md",className:"w-full justify-center",disabled:d||x||!m,type:"submit",children:[(x||d)&&e.jsx("div",{role:"alert","aria-busy":"true",className:"full h-[20px] w-[20px] animate-spin rounded-rounded border-2 border-theme-text-negative border-b-theme-text-brand"}),"Continue"]})]}),e.jsxs("p",{className:"text-center text-text-xs text-theme-text-secondary",children:["By submitting the form you accept our"," ",e.jsx("a",{className:"link",href:"https://www.zenml.io/cloud-terms-and-privacy",target:"_blank",rel:"noopener noreferrer",children:"terms of use"})," ","and"," ",e.jsx("a",{href:"https://www.zenml.io/privacy-policy",target:"_blank",rel:"noopener noreferrer",className:"link",children:"privacy policy"}),"."]})]})}function V(){return e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h2",{className:"text-display-xs font-semibold",children:"As easy as following the steps"}),e.jsx("p",{className:"text-theme-text-secondary",children:"From sign-up to deployment in minutes"})]}),e.jsx(Y,{})]})}const W=["Fill out your details","Receive comprehensive ZenML Pro documentation","Deploy ZenML Pro and upgrade your tenant","Get a free 14-day trial license"];function Y(){return e.jsx("ol",{className:"space-y-3",children:W.map((s,t)=>e.jsxs("li",{className:"flex items-center space-x-1",children:[e.jsx(q,{children:t+1}),e.jsx("span",{children:s})]},t))})}function q({className:s,...t}){return e.jsx("div",{...t,className:w("flex h-4 w-4 shrink-0 items-center justify-center rounded-rounded bg-warning-400 text-text-xs text-theme-text-negative")})}function G(){return e.jsxs("section",{className:"flex w-full flex-col-reverse items-center justify-end gap-5 lg:flex-row lg:gap-[100px] xl:pl-[200px] 2xl:pl-[300px]",children:[e.jsx(V,{}),e.jsx(_,{})]})}const H="/assets/upgrade-form-CwRHBuXB.webp",O=["Comprehensive documentation to get started","Your 14-day trial license key","Step-by-step deployment instructions"];function A(){return e.jsxs("section",{className:"flex h-full w-full flex-col items-center justify-center space-y-5",children:[e.jsx(L,{className:"h-[120px] w-[120px] fill-theme-text-success"}),e.jsxs("div",{className:"space-y-7",children:[e.jsxs("div",{className:"max-w-[500px] space-y-2 text-center",children:[e.jsx("h1",{className:"text-display-xs font-semibold",children:"You're on your way to ZenML Pro!"}),e.jsx("p",{className:"text-theme-text-secondary",children:"Thank you for choosing to upgrade to ZenML Pro. We've received your request and you'll receive an email with:"}),e.jsx("ul",{className:"mx-auto w-fit space-y-3",children:O.map((s,t)=>e.jsxs("li",{className:"flex items-center gap-1",children:[e.jsx(C,{}),e.jsx("span",{children:s})]},t))}),e.jsxs("p",{className:"text-theme-text-secondary",children:["Meanwhile, you can ask your questions in our"," ",e.jsx("a",{className:"link",href:"https://zenml.io/slack",target:"_blank",rel:"noopener noreferrer",children:"Slack channel"})," ","or"," ",e.jsx("a",{className:"link",href:"https://docs.zenml.io",target:"_blank",rel:"noopener noreferrer",children:"check our documentation."})]})]}),e.jsx(p,{size:"md",className:"mx-auto",children:e.jsx(z,{to:k.home,children:"Go to Dashboard"})})]})]})}function J(){const{submitSuccess:s}=f();return e.jsxs(P,{className:"relative min-h-[620px]",children:[e.jsx("img",{src:H,className:"absolute hidden -translate-x-3/4 -rotate-[5deg] scale-75 xl:block 2xl:-translate-x-[60%]"}),s===!1&&e.jsx(G,{}),s===!0&&e.jsx(A,{})]})}function ce(){const{setCurrentBreadcrumbData:s}=F();return i.useEffect(()=>{s({segment:"upgrade",data:null})},[]),e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx("div",{className:"layout-container",children:e.jsx(B,{children:e.jsx(J,{})})})})}export{ce as default};
1
+ import{r as i,j as e}from"./@radix-C7hRs6Kx.js";import{z as o,f as y,j as g,k as N,c as b,l as v,S,I as u,h as p,m as w,r as k,n as F}from"./index-D2iSHVZq.js";import{T as C,P}from"./ProCta-EYoV9CvK.js";import{t as U}from"./zod-C0xYeTvL.js";import{b as E}from"./@tanstack-CSxjHCME.js";import{u as M}from"./index.esm-D7jFlf5N.js";import{S as L}from"./check-circle-mvyzYvIW.js";import{L as z}from"./@react-router-CNP6g_RL.js";import"./@reactflow-CQi1Z1Wq.js";import"./check-DK77doTf.js";const h=i.createContext(null);function B({children:s}){const[t,a]=i.useState(!1);return e.jsx(h.Provider,{value:{setSubmitSuccess:a,submitSuccess:t},children:s})}function f(){const s=i.useContext(h);if(s===null)throw new Error("useUpgradeContext must be used within an UpgradeProvider");return s}const T=o.object({name:o.string().min(1),company:o.string().min(1),email:o.string().email()});function I(){const{setSubmitSuccess:s}=f(),{toast:t}=y(),a=M({resolver:U(T),defaultValues:{company:"",email:"",name:""}}),n=E({mutationFn:Z,onSuccess:()=>s(!0),onError:r=>{t({emphasis:"subtle",status:"error",rounded:!0,description:r.message})}});async function c(r,l,m){n.mutate({...r,userId:l,isDebug:m})}return{form:a,submitFormMutation:n,handleSubmitForm:c}}async function Z({company:s,email:t,isDebug:a,name:n,userId:c}){return g(N,{method:"POST",credentials:"omit",headers:{"Content-Type":"application/json"},body:JSON.stringify([{debug:a,event:"Upgrade initiated",type:"track",user_id:c,properties:{company:s,email:t,name:n}}])})}function _(){return e.jsxs("div",{className:"space-y-5",children:[e.jsx(D,{}),e.jsx(R,{})]})}function D(){return e.jsxs("div",{className:"flex flex-col items-center space-y-0.5",children:[e.jsx("h1",{className:"text-center text-display-xs font-semibold",children:"Upgrade to ZenML Pro on your own VPC"}),e.jsx("p",{className:"text-theme-text-secondary",children:"Direct self-deployment, no sales calls"})]})}function R(){const s=b(),t=v(),{form:a,handleSubmitForm:n,submitFormMutation:c}=I(),{register:r,handleSubmit:l,formState:{isValid:m,isSubmitting:d}}=a,{isPending:x}=c;return s.isPending||t.isPending?e.jsx(S,{className:"h-[250px] w-full"}):s.isError||t.isError?e.jsx("p",{children:"Something went wrong...."}):e.jsxs("div",{className:"space-y-5",children:[e.jsxs("form",{onSubmit:l(j=>n(j,t.data.id,!!s.data.debug)),className:"space-y-5",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("label",{htmlFor:"name",className:"text-text-sm",children:"Your Name"}),e.jsx(u,{...r("name"),id:"name",className:"w-full"})]}),e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("label",{htmlFor:"company",className:"text-text-sm",children:"Company"}),e.jsx(u,{...r("company"),id:"company",className:"w-full"})]}),e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("label",{htmlFor:"email",className:"text-text-sm",children:"Email address"}),e.jsx(u,{...r("email"),id:"email",className:"w-full"})]}),e.jsxs(p,{size:"md",className:"w-full justify-center",disabled:d||x||!m,type:"submit",children:[(x||d)&&e.jsx("div",{role:"alert","aria-busy":"true",className:"full h-[20px] w-[20px] animate-spin rounded-rounded border-2 border-theme-text-negative border-b-theme-text-brand"}),"Continue"]})]}),e.jsxs("p",{className:"text-center text-text-xs text-theme-text-secondary",children:["By submitting the form you accept our"," ",e.jsx("a",{className:"link",href:"https://www.zenml.io/cloud-terms-and-privacy",target:"_blank",rel:"noopener noreferrer",children:"terms of use"})," ","and"," ",e.jsx("a",{href:"https://www.zenml.io/privacy-policy",target:"_blank",rel:"noopener noreferrer",className:"link",children:"privacy policy"}),"."]})]})}function V(){return e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h2",{className:"text-display-xs font-semibold",children:"As easy as following the steps"}),e.jsx("p",{className:"text-theme-text-secondary",children:"From sign-up to deployment in minutes"})]}),e.jsx(Y,{})]})}const W=["Fill out your details","Receive comprehensive ZenML Pro documentation","Deploy ZenML Pro and upgrade your tenant","Get a free 14-day trial license"];function Y(){return e.jsx("ol",{className:"space-y-3",children:W.map((s,t)=>e.jsxs("li",{className:"flex items-center space-x-1",children:[e.jsx(q,{children:t+1}),e.jsx("span",{children:s})]},t))})}function q({className:s,...t}){return e.jsx("div",{...t,className:w("flex h-4 w-4 shrink-0 items-center justify-center rounded-rounded bg-warning-400 text-text-xs text-theme-text-negative")})}function G(){return e.jsxs("section",{className:"flex w-full flex-col-reverse items-center justify-end gap-5 lg:flex-row lg:gap-[100px] xl:pl-[200px] 2xl:pl-[300px]",children:[e.jsx(V,{}),e.jsx(_,{})]})}const H="/assets/upgrade-form-CwRHBuXB.webp",O=["Comprehensive documentation to get started","Your 14-day trial license key","Step-by-step deployment instructions"];function A(){return e.jsxs("section",{className:"flex h-full w-full flex-col items-center justify-center space-y-5",children:[e.jsx(L,{className:"h-[120px] w-[120px] fill-theme-text-success"}),e.jsxs("div",{className:"space-y-7",children:[e.jsxs("div",{className:"max-w-[500px] space-y-2 text-center",children:[e.jsx("h1",{className:"text-display-xs font-semibold",children:"You're on your way to ZenML Pro!"}),e.jsx("p",{className:"text-theme-text-secondary",children:"Thank you for choosing to upgrade to ZenML Pro. We've received your request and you'll receive an email with:"}),e.jsx("ul",{className:"mx-auto w-fit space-y-3",children:O.map((s,t)=>e.jsxs("li",{className:"flex items-center gap-1",children:[e.jsx(C,{}),e.jsx("span",{children:s})]},t))}),e.jsxs("p",{className:"text-theme-text-secondary",children:["Meanwhile, you can ask your questions in our"," ",e.jsx("a",{className:"link",href:"https://zenml.io/slack",target:"_blank",rel:"noopener noreferrer",children:"Slack channel"})," ","or"," ",e.jsx("a",{className:"link",href:"https://docs.zenml.io",target:"_blank",rel:"noopener noreferrer",children:"check our documentation."})]})]}),e.jsx(p,{size:"md",className:"mx-auto",children:e.jsx(z,{to:k.home,children:"Go to Dashboard"})})]})]})}function J(){const{submitSuccess:s}=f();return e.jsxs(P,{className:"relative min-h-[620px]",children:[e.jsx("img",{src:H,className:"absolute hidden -translate-x-3/4 -rotate-[5deg] scale-75 xl:block 2xl:-translate-x-[60%]"}),s===!1&&e.jsx(G,{}),s===!0&&e.jsx(A,{})]})}function ce(){const{setCurrentBreadcrumbData:s}=F();return i.useEffect(()=>{s({segment:"upgrade",data:null})},[]),e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx("div",{className:"layout-container",children:e.jsx(B,{children:e.jsx(J,{})})})})}export{ce as default};
@@ -0,0 +1 @@
1
+ import{j as o}from"./@radix-C7hRs6Kx.js";import{S as r}from"./Tabs-DxQ8PDOD.js";import{R as m}from"./RunsBody-W4WHf-sq.js";import{R as i}from"./RunSelector-BLuBYNJt.js";import{S as p}from"./StackList-CgmN5H-i.js";import{a as s}from"./@react-router-CNP6g_RL.js";import"./index-D2iSHVZq.js";import"./@tanstack-CSxjHCME.js";import"./@reactflow-CQi1Z1Wq.js";import"./chevron-down-A-rmltmI.js";import"./ComponentIcon-ils7uNAk.js";import"./layout-h3cbx8WZ.js";import"./rocket-Cf-B-XOR.js";import"./DisplayDate-CYVBBSgr.js";import"./InlineAvatar-Cfz4WSLK.js";import"./NestedCollapsible-Dor-bi98.js";import"./type-guards-CaeD8wHO.js";import"./CodeSnippet-CvI6D0wx.js";import"./CollapsibleCard-D20FtrzC.js";import"./chevron-right-double-uNWbJT-C.js";import"./check-circle-mvyzYvIW.js";import"./refresh-CM5T3QeU.js";import"./SearchField-D-h6jXyg.js";import"./dots-horizontal-BGRJCPCs.js";import"./index-DR30v9MZ.js";import"./all-pipeline-runs-query-BGASHYtF.js";import"./ExecutionStatus-XrvT2r65.js";import"./trash-BWSZ7NRK.js";import"./DeleteAlertDialog-DVvXt-S6.js";import"./zod-C0xYeTvL.js";import"./index.esm-D7jFlf5N.js";import"./AlertDialogDropdownItem-BG7-Ki1L.js";import"./delete-run-DlSLEl5T.js";import"./plus-COjQg3AG.js";import"./index-CrhdX_qG.js";import"./stack-detail-query-BAcZJrN3.js";import"./components-Br2ezRib.js";import"./NumberBox-D2A7ENHb.js";import"./ComponentBadge-DKw7Gndh.js";import"./Infobox-D9k5TFH4.js";import"./DialogItem-BHWf3sIB.js";function V(){const{componentId:t}=s();return o.jsx("div",{className:"@container",children:o.jsx(r,{isPanel:!1,stacksTabContent:o.jsx(p,{fixedQueryParams:{component_id:t}}),runsTabContent:o.jsx(i,{children:o.jsx(m,{fixedQueryParams:{stack_component:t}})}),componentId:t})})}export{V as default};
@@ -1 +1 @@
1
- import{z as a}from"./index-BygJE88j.js";import{s as i}from"./sharedSchema-BACERDat.js";const o=a.enum(["aws","gcp","azure"]),p=a.object({provider:o}),g=a.object({region:a.string().trim().min(1),stackName:i}),r="new-infra-data",e=a.object({provider:o,stackName:a.string().min(1).trim(),location:a.string().min(1).trim(),timestamp:a.string().min(1).trim()});function d(t){localStorage.setItem(r,JSON.stringify(t))}function f(){try{const t=localStorage.getItem(r),s=t?JSON.parse(t):{};return e.safeParse(s)}catch{return c(),e.safeParse({})}}function c(){localStorage.removeItem(r)}export{g as a,p as b,c,o as d,f as p,d as s};
1
+ import{z as a}from"./index-D2iSHVZq.js";import{s as i}from"./sharedSchema-Bse2agAf.js";const o=a.enum(["aws","gcp","azure"]),p=a.object({provider:o}),g=a.object({region:a.string().trim().min(1),stackName:i}),r="new-infra-data",e=a.object({provider:o,stackName:a.string().min(1).trim(),location:a.string().min(1).trim(),timestamp:a.string().min(1).trim()});function d(t){localStorage.setItem(r,JSON.stringify(t))}function f(){try{const t=localStorage.getItem(r),s=t?JSON.parse(t):{};return e.safeParse(s)}catch{return c(),e.safeParse({})}}function c(){localStorage.removeItem(r)}export{g as a,p as b,c,o as d,f as p,d as s};
@@ -1 +1 @@
1
- import{z as t}from"./index-BygJE88j.js";import{d as s}from"./persist-SSTTV5q0.js";const r="create-terraform-data",e=t.object({provider:s,stackName:t.string().min(1).trim(),location:t.string().min(1).trim(),timestamp:t.string().min(1).trim()});function n(a){localStorage.setItem(r,JSON.stringify(a))}function l(){try{const a=localStorage.getItem(r),o=a?JSON.parse(a):{};return e.safeParse(o)}catch{return i(),e.safeParse({})}}function i(){localStorage.removeItem(r)}export{i as c,l as p,n as s};
1
+ import{z as t}from"./index-D2iSHVZq.js";import{d as s}from"./persist-D87V82eO.js";const r="create-terraform-data",e=t.object({provider:s,stackName:t.string().min(1).trim(),location:t.string().min(1).trim(),timestamp:t.string().min(1).trim()});function n(a){localStorage.setItem(r,JSON.stringify(a))}function l(){try{const a=localStorage.getItem(r),o=a?JSON.parse(a):{};return e.safeParse(o)}catch{return i(),e.safeParse({})}}function i(){localStorage.removeItem(r)}export{i as c,l as p,n as s};
@@ -1,2 +1,2 @@
1
- import{q as y,b as w}from"./@tanstack-CSxjHCME.js";import{o as l,q as f,j as u,s as h,F as p,p as m,z as i,h as j,a5 as A}from"./index-BygJE88j.js";import{j as a,r as g}from"./@radix-C7hRs6Kx.js";import{C as x}from"./CodeSnippet-Di-loaZu.js";import{I as v}from"./Infobox-Bai0JtFs.js";import{T}from"./Tick-ay3Bgtro.js";import{d as K}from"./@react-router-CNP6g_RL.js";async function b({params:e}){const r=l(m.serviceAccounts.all)+"?"+f(e),s=await u(r,{method:"GET",headers:{"Content-Type":"application/json"}});if(s.status===404&&h(),!s.ok){const t=await s.json().then(n=>Array.isArray(n.detail)?n.detail[1]:n.detail).catch(()=>"Failed to fetch service accounts");throw new p({status:s.status,statusText:s.statusText,message:t})}return s.json()}async function k({serviceAccountId:e}){const r=l(m.serviceAccounts.detail(e)),s=await u(r,{method:"GET",headers:{"Content-Type":"application/json"}});if(s.status===404&&h(),!s.ok){const t=await s.json().then(n=>Array.isArray(n.detail)?n.detail[1]:n.detail).catch(()=>`Failed to fetch service account ${e}`);throw new p({status:s.status,statusText:s.statusText,message:t})}return s.json()}async function N({serviceAccountId:e,params:r}){const s=l(m.serviceAccounts.apiKeys.all(e))+"?"+f(r),t=await u(s,{method:"GET",headers:{"Content-Type":"application/json"}});if(t.status===404&&h(),!t.ok){const n=await t.json().then(o=>Array.isArray(o.detail)?o.detail[1]:o.detail).catch(()=>"Failed to list of api keys");throw new p({status:t.status,statusText:t.statusText,message:n})}return t.json()}async function S({serviceAccountId:e,apiKeyId:r}){const s=l(m.serviceAccounts.apiKeys.detail(e,r)),t=await u(s,{method:"GET",headers:{"Content-Type":"application/json"}});if(t.status===404&&h(),!t.ok){const n=await t.json().then(o=>Array.isArray(o.detail)?o.detail[1]:o.detail).catch(()=>`Failed to fetch api key ${r}`);throw new p({status:t.status,statusText:t.statusText,message:n})}return t.json()}const $={serviceAccountList:e=>y({queryKey:[...c.serviceAccountsKey(),e],queryFn:async()=>b({params:e})}),serviceAccountDetail:e=>y({queryKey:[...c.serviceAccountsKey(),e],queryFn:async()=>k({serviceAccountId:e})}),serviceAccountApiKeys:(e,r)=>y({queryKey:[...c.apiKeysKey(e),r],queryFn:async()=>N({serviceAccountId:e,params:r})}),ApiKeysDetail:(e,r)=>y({queryKey:[...c.apiKeysKey(e),r],queryFn:async()=>S({serviceAccountId:e,apiKeyId:r})})},c={serviceAccountsKey:()=>["service_accounts"],apiKeysKey:e=>[...c.serviceAccountsKey(),e,"api_keys"]};async function C({body:e,serviceAccountId:r}){const s=l(m.serviceAccounts.apiKeys.all(r)),t=await u(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const n=await t.json().then(o=>Array.isArray(o.detail)?o.detail[1]:o.detail).catch(()=>"Failed to create service account");throw new p({status:t.status,statusText:t.statusText,message:n})}return t.json()}function I(e){return w({...e,mutationFn:async({serviceAccountId:r,body:s})=>C({body:s,serviceAccountId:r})})}const F=i.object({name:i.string().min(1,"Service Account Name is required"),description:i.string()}),R=F.extend({createDefault:i.boolean()});function U({value:e}){return a.jsxs("div",{className:"space-y-3 overflow-x-hidden px-7 py-5 text-text-md text-theme-text-primary",children:[a.jsxs("div",{className:"space-y-0.5",children:[a.jsx("p",{className:"text-text-md font-semibold text-theme-text-primary",children:"Here is your new API Key"}),a.jsx("p",{className:"text-text-md text-theme-text-secondary",children:"Your key was created successfully"})]}),a.jsx(P,{}),a.jsx(E,{value:e}),a.jsx("div",{className:"h-[1px] bg-theme-border-moderate","aria-hidden":"true"}),a.jsxs("div",{className:"space-y-3 pt-5",children:[a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsx("p",{className:"text-text-md font-semibold text-theme-text-primary",children:"Using your API Key"}),a.jsx("a",{target:"_blank",rel:"noreferrer noopener",href:"https://docs.zenml.io/how-to/project-setup-and-management/connecting-to-zenml/connect-with-a-service-account",className:"link text-text-sm text-primary-400",children:"Learn More"})]}),a.jsx("p",{className:"text-theme-text-secondary",children:"To log in to the ZenML server using the generated key, you can run the following CLI command and enter the API key when prompted:"}),a.jsx(x,{highlightCode:!0,wrap:!0,code:`zenml login --api-key ${window.location.origin}`}),a.jsx("p",{className:"text-theme-text-secondary",children:"Alternatively, you can set the following environment variables to configure workloads where CLI interaction is not possible:"}),a.jsx(x,{highlightCode:!0,wrap:!0,code:`ZENML_STORE_URL: ${window.location.origin}
1
+ import{q as y,b as w}from"./@tanstack-CSxjHCME.js";import{o as l,q as f,j as u,s as h,F as p,p as m,z as i,h as j,a5 as A}from"./index-D2iSHVZq.js";import{j as a,r as g}from"./@radix-C7hRs6Kx.js";import{C as x}from"./CodeSnippet-CvI6D0wx.js";import{I as v}from"./Infobox-D9k5TFH4.js";import{T}from"./Tick-CEsT3HPR.js";import{d as K}from"./@react-router-CNP6g_RL.js";async function b({params:e}){const r=l(m.serviceAccounts.all)+"?"+f(e),s=await u(r,{method:"GET",headers:{"Content-Type":"application/json"}});if(s.status===404&&h(),!s.ok){const t=await s.json().then(n=>Array.isArray(n.detail)?n.detail[1]:n.detail).catch(()=>"Failed to fetch service accounts");throw new p({status:s.status,statusText:s.statusText,message:t})}return s.json()}async function k({serviceAccountId:e}){const r=l(m.serviceAccounts.detail(e)),s=await u(r,{method:"GET",headers:{"Content-Type":"application/json"}});if(s.status===404&&h(),!s.ok){const t=await s.json().then(n=>Array.isArray(n.detail)?n.detail[1]:n.detail).catch(()=>`Failed to fetch service account ${e}`);throw new p({status:s.status,statusText:s.statusText,message:t})}return s.json()}async function N({serviceAccountId:e,params:r}){const s=l(m.serviceAccounts.apiKeys.all(e))+"?"+f(r),t=await u(s,{method:"GET",headers:{"Content-Type":"application/json"}});if(t.status===404&&h(),!t.ok){const n=await t.json().then(o=>Array.isArray(o.detail)?o.detail[1]:o.detail).catch(()=>"Failed to list of api keys");throw new p({status:t.status,statusText:t.statusText,message:n})}return t.json()}async function S({serviceAccountId:e,apiKeyId:r}){const s=l(m.serviceAccounts.apiKeys.detail(e,r)),t=await u(s,{method:"GET",headers:{"Content-Type":"application/json"}});if(t.status===404&&h(),!t.ok){const n=await t.json().then(o=>Array.isArray(o.detail)?o.detail[1]:o.detail).catch(()=>`Failed to fetch api key ${r}`);throw new p({status:t.status,statusText:t.statusText,message:n})}return t.json()}const $={serviceAccountList:e=>y({queryKey:[...c.serviceAccountsKey(),e],queryFn:async()=>b({params:e})}),serviceAccountDetail:e=>y({queryKey:[...c.serviceAccountsKey(),e],queryFn:async()=>k({serviceAccountId:e})}),serviceAccountApiKeys:(e,r)=>y({queryKey:[...c.apiKeysKey(e),r],queryFn:async()=>N({serviceAccountId:e,params:r})}),ApiKeysDetail:(e,r)=>y({queryKey:[...c.apiKeysKey(e),r],queryFn:async()=>S({serviceAccountId:e,apiKeyId:r})})},c={serviceAccountsKey:()=>["service_accounts"],apiKeysKey:e=>[...c.serviceAccountsKey(),e,"api_keys"]};async function C({body:e,serviceAccountId:r}){const s=l(m.serviceAccounts.apiKeys.all(r)),t=await u(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const n=await t.json().then(o=>Array.isArray(o.detail)?o.detail[1]:o.detail).catch(()=>"Failed to create service account");throw new p({status:t.status,statusText:t.statusText,message:n})}return t.json()}function I(e){return w({...e,mutationFn:async({serviceAccountId:r,body:s})=>C({body:s,serviceAccountId:r})})}const F=i.object({name:i.string().min(1,"Service Account Name is required"),description:i.string()}),R=F.extend({createDefault:i.boolean()});function U({value:e}){return a.jsxs("div",{className:"space-y-3 overflow-x-hidden px-7 py-5 text-text-md text-theme-text-primary",children:[a.jsxs("div",{className:"space-y-0.5",children:[a.jsx("p",{className:"text-text-md font-semibold text-theme-text-primary",children:"Here is your new API Key"}),a.jsx("p",{className:"text-text-md text-theme-text-secondary",children:"Your key was created successfully"})]}),a.jsx(P,{}),a.jsx(E,{value:e}),a.jsx("div",{className:"h-[1px] bg-theme-border-moderate","aria-hidden":"true"}),a.jsxs("div",{className:"space-y-3 pt-5",children:[a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsx("p",{className:"text-text-md font-semibold text-theme-text-primary",children:"Using your API Key"}),a.jsx("a",{target:"_blank",rel:"noreferrer noopener",href:"https://docs.zenml.io/how-to/project-setup-and-management/connecting-to-zenml/connect-with-a-service-account",className:"link text-text-sm text-primary-400",children:"Learn More"})]}),a.jsx("p",{className:"text-theme-text-secondary",children:"To log in to the ZenML server using the generated key, you can run the following CLI command and enter the API key when prompted:"}),a.jsx(x,{highlightCode:!0,wrap:!0,code:`zenml login --api-key ${window.location.origin}`}),a.jsx("p",{className:"text-theme-text-secondary",children:"Alternatively, you can set the following environment variables to configure workloads where CLI interaction is not possible:"}),a.jsx(x,{highlightCode:!0,wrap:!0,code:`ZENML_STORE_URL: ${window.location.origin}
2
2
  ZENML_STORE_API_KEY: ${e}`})]})]})}function E({value:e}){const[r,s]=g.useState(!1);function t(n){navigator.clipboard&&(navigator.clipboard.writeText(n),s(!0),setTimeout(()=>{s(!1)},2e3))}return a.jsxs("section",{className:"flex w-full items-center justify-between gap-5 overflow-hidden py-5 text-text-md",children:[a.jsx("code",{className:"w-[3/4] min-w-0 flex-1 overflow-x-auto font-sans text-display-xs",children:e}),r?a.jsxs(a.Fragment,{children:[a.jsx(T,{className:"h-5 w-5 shrink-0 fill-theme-text-tertiary"}),a.jsx("p",{className:"sr-only",children:"copied successfully"})]}):a.jsxs(j,{intent:"secondary",emphasis:"subtle",onClick:()=>t(e),size:"md",children:[a.jsx(A,{className:"h-4 w-4 shrink-0 fill-theme-text-primary"}),a.jsx("p",{children:"Copy"})]})]})}function P(){return a.jsx(v,{children:"Important: This key is your authentication for API access and will not be shown again. Please copy it and store it securely."})}const d=1,D=i.object({page:i.coerce.number().min(d).optional().default(d).catch(d),name:i.string().optional(),operator:i.enum(["and","or"]).optional()});function Z(){const[e]=K(),{page:r,name:s,operator:t}=D.parse({page:e.get("page")||void 0,name:e.get("name")||void 0,operator:e.get("operator")||void 0});return{page:r,name:s,logical_operator:t}}export{U as A,Z as a,$ as b,R as c,F as d,c as s,I as u};
@@ -1,4 +1,4 @@
1
- import{f as C}from"./index-8uhUi12k.js";import{g as S}from"./@radix-C7hRs6Kx.js";import{z as F}from"./index-BygJE88j.js";var d,y;function j(){if(y)return d;y=1,d=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},u=void 0,i=void 0,c=void 0,s=[];return function(){var p=o(r),g=new Date().getTime(),P=!u||g-u>p;u=g;for(var b=arguments.length,l=Array(b),f=0;f<b;f++)l[f]=arguments[f];if(P&&a.leading)return a.accumulate?Promise.resolve(t.call(this,[l])).then(function(v){return v[0]}):Promise.resolve(t.call.apply(t,[this].concat(l)));if(i?clearTimeout(c):i=n(),s.push(l),c=setTimeout(D.bind(this),p),a.accumulate){var w=s.length-1;return i.promise.then(function(v){return v[w]})}return i.promise};function D(){var m=i;clearTimeout(c),Promise.resolve(a.accumulate?t.call(this,s):t.apply(this,s[s.length-1])).then(m.resolve,m.reject),s=[],i=null}};function o(e){return typeof e=="function"?e():e}function n(){var e={};return e.promise=new Promise(function(t,r){e.resolve=t,e.reject=r}),e}return d}var k=j();const O=S(k);function T(o){var n=null,e=null,t=new Promise(function(r,a){n=r,e=a});return o&&o.then(function(r){n&&n(r)},function(r){e&&e(r)}),{promise:t,resolve:function(r){n&&n(r)},reject:function(r){e&&e(r)},cancel:function(){n=null,e=null}}}function x(o){var n=null,e=function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];n&&n();var a=o.apply(void 0,t),u=T(a),i=u.promise,c=u.cancel;return n=c,i};return e}/*! *****************************************************************************
1
+ import{f as C}from"./index-CrhdX_qG.js";import{g as S}from"./@radix-C7hRs6Kx.js";import{z as F}from"./index-D2iSHVZq.js";var d,y;function j(){if(y)return d;y=1,d=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},u=void 0,i=void 0,c=void 0,s=[];return function(){var p=o(r),g=new Date().getTime(),P=!u||g-u>p;u=g;for(var b=arguments.length,l=Array(b),f=0;f<b;f++)l[f]=arguments[f];if(P&&a.leading)return a.accumulate?Promise.resolve(t.call(this,[l])).then(function(v){return v[0]}):Promise.resolve(t.call.apply(t,[this].concat(l)));if(i?clearTimeout(c):i=n(),s.push(l),c=setTimeout(D.bind(this),p),a.accumulate){var w=s.length-1;return i.promise.then(function(v){return v[w]})}return i.promise};function D(){var m=i;clearTimeout(c),Promise.resolve(a.accumulate?t.call(this,s):t.apply(this,s[s.length-1])).then(m.resolve,m.reject),s=[],i=null}};function o(e){return typeof e=="function"?e():e}function n(){var e={};return e.promise=new Promise(function(t,r){e.resolve=t,e.reject=r}),e}return d}var k=j();const O=S(k);function T(o){var n=null,e=null,t=new Promise(function(r,a){n=r,e=a});return o&&o.then(function(r){n&&n(r)},function(r){e&&e(r)}),{promise:t,resolve:function(r){n&&n(r)},reject:function(r){e&&e(r)},cancel:function(){n=null,e=null}}}function x(o){var n=null,e=function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];n&&n();var a=o.apply(void 0,t),u=T(a),i=u.promise,c=u.cancel;return n=c,i};return e}/*! *****************************************************************************
2
2
  Copyright (c) Microsoft Corporation. All rights reserved.
3
3
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4
4
  this file except in compliance with the License. You may obtain a copy of the
@@ -1 +1 @@
1
- import{j as a,o as r,s as n,F as o,p as u}from"./index-BygJE88j.js";import{a as i}from"./@tanstack-CSxjHCME.js";function c({stackId:t}){return["stacks",t]}async function f({stackId:t}){const s=r(u.stacks.detail(t)),e=await a(s,{method:"GET",headers:{"Content-Type":"application/json"}});if(e.status===404&&n(),!e.ok)throw new o({message:`Error while fetching stack ${t}`,status:e.status,statusText:e.statusText});return e.json()}function y(t,s){return i({queryKey:c(t),queryFn:()=>f(t),...s})}export{f,y as u};
1
+ import{j as a,o as r,s as n,F as o,p as u}from"./index-D2iSHVZq.js";import{a as i}from"./@tanstack-CSxjHCME.js";function c({stackId:t}){return["stacks",t]}async function f({stackId:t}){const s=r(u.stacks.detail(t)),e=await a(s,{method:"GET",headers:{"Content-Type":"application/json"}});if(e.status===404&&n(),!e.ok)throw new o({message:`Error while fetching stack ${t}`,status:e.status,statusText:e.statusText});return e.json()}function y(t,s){return i({queryKey:c(t),queryFn:()=>f(t),...s})}export{f,y as u};
@@ -1 +1 @@
1
- import{j as n,o as i,F as o,p as u}from"./index-BygJE88j.js";import{b as c}from"./@tanstack-CSxjHCME.js";async function p(e){const r=i(u.settings),t=await n(r,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const a=await t.json().then(s=>Array.isArray(s.detail)?s.detail[1]:s.detail).catch(()=>"Failed to update Server Settings");throw new o({status:t.status,statusText:t.statusText,message:a})}return t.json()}function f(e){return c({mutationFn:async r=>p(r),...e})}export{f as u};
1
+ import{j as n,o as i,F as o,p as u}from"./index-D2iSHVZq.js";import{b as c}from"./@tanstack-CSxjHCME.js";async function p(e){const r=i(u.settings),t=await n(r,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const a=await t.json().then(s=>Array.isArray(s.detail)?s.detail[1]:s.detail).catch(()=>"Failed to update Server Settings");throw new o({status:t.status,statusText:t.statusText,message:a})}return t.json()}function f(e){return c({mutationFn:async r=>p(r),...e})}export{f as u};
@@ -5,14 +5,14 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/favicon.ico" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>ZenML Dashboard</title>
8
- <script type="module" crossorigin src="/assets/index-BygJE88j.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-D2iSHVZq.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/@radix-C7hRs6Kx.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/@tanstack-CSxjHCME.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/@react-router-CNP6g_RL.js">
12
12
  <link rel="modulepreload" crossorigin href="/assets/@reactflow-CQi1Z1Wq.js">
13
13
  <link rel="stylesheet" crossorigin href="/assets/@reactflow-Fd0xVSp_.css">
14
- <link rel="stylesheet" crossorigin href="/assets/index-DmTFrHJm.css">
15
- <link rel="prefetch" href="/assets/cloud-squares-DeRLMopf.svg"><link rel="prefetch" href="/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-400-normal-Bput3-QP.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2"><link rel="prefetch" href="/assets/inter-greek-400-normal-DxZsaF_h.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-400-normal-DMkecbls.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-400-normal-hnt3BR84.woff2"><link rel="prefetch" href="/assets/inter-latin-400-normal-BOOGhInR.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-500-normal-B6guLgqG.woff2"><link rel="prefetch" href="/assets/inter-greek-500-normal-CeQXL5ds.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-500-normal-DOriooB6.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2"><link rel="prefetch" href="/assets/inter-latin-500-normal-D2bGa7uu.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-600-normal-BGBWG807.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2"><link rel="prefetch" href="/assets/inter-greek-600-normal-Dhlb-90d.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-600-normal-BnYJhD27.woff2"><link rel="prefetch" href="/assets/inter-latin-600-normal-D273HNI0.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-400-normal-DCpCPQOf.woff"><link rel="prefetch" href="/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff"><link rel="prefetch" href="/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff"><link rel="prefetch" href="/assets/inter-greek-400-normal-BZzXV7-1.woff"><link rel="prefetch" href="/assets/inter-vietnamese-400-normal-BUNmGMP1.woff"><link rel="prefetch" href="/assets/inter-latin-ext-400-normal-C1t-h-pH.woff"><link rel="prefetch" href="/assets/inter-latin-400-normal-gitzw0hO.woff"><link rel="prefetch" href="/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff"><link rel="prefetch" href="/assets/inter-cyrillic-500-normal-DH2hs3aW.woff"><link rel="prefetch" href="/assets/inter-greek-ext-500-normal-M2hEX8vc.woff"><link rel="prefetch" href="/assets/inter-greek-500-normal-d_eO-yCQ.woff"><link rel="prefetch" href="/assets/inter-latin-ext-500-normal-UMdmhHu2.woff"><link rel="prefetch" href="/assets/inter-latin-500-normal-deR1Tlfd.woff"><link rel="prefetch" href="/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff"><link rel="prefetch" href="/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff"><link rel="prefetch" href="/assets/inter-cyrillic-600-normal-BuzJQFbW.woff"><link rel="prefetch" href="/assets/inter-greek-ext-600-normal-C9WLioJ8.woff"><link rel="prefetch" href="/assets/inter-greek-600-normal-CwicyhtI.woff"><link rel="prefetch" href="/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff"><link rel="prefetch" href="/assets/inter-latin-ext-600-normal-CAF0vJDd.woff"><link rel="prefetch" href="/assets/inter-latin-600-normal-B5cFAncS.woff"><link rel="prefetch" href="/assets/mcp-Cb1aMeoq.webp"><link rel="prefetch" href="/assets/acp-DOsXjFc7.webp"><link rel="prefetch" href="/assets/settings_preview-0JLrRgHP.webp"><link rel="prefetch" href="/assets/upgrade-form-CwRHBuXB.webp"><link rel="prefetch" href="/assets/connectors-video-C9qY4syJ.svg"><link rel="prefetch" href="/assets/repos-video-D8kpu60k.svg"><link rel="prefetch" href="/assets/adam-e-y0WnB_.webp"><link rel="prefetch" href="/assets/alex-DcCuDHPg.webp"><link rel="prefetch" href="/assets/baris-C0ZrZ10g.webp"><link rel="prefetch" href="/assets/hamza-NKKOZz1I.webp"><link rel="prefetch" href="/assets/stefan-B08Ftbba.webp"><link rel="prefetch" href="/assets/tour-cover-BYfeen6M.webp"><link rel="prefetch" href="/assets/templates-1S_8WeSK.webp"><link rel="prefetch" href="/assets/flyte-Cj-xy_8I.svg"><link rel="prefetch" href="/assets/metaflow-weOkWNyT.svg"><link rel="prefetch" href="/assets/CodeSnippet-CK5CxKct.css"><link rel="prefetch" href="/assets/page-bUVHi7DE.js"><link rel="prefetch" href="/assets/page-8AzB83Py.js"><link rel="prefetch" href="/assets/page-B0r9dBEU.js"><link rel="prefetch" href="/assets/page-uN0n_DE2.js"><link rel="prefetch" href="/assets/page-D_5R6E7b.js"><link rel="prefetch" href="/assets/SetPassword-CBHW-Su8.js"><link rel="prefetch" href="/assets/login-mutation-DywLqguW.js"><link rel="prefetch" href="/assets/page-CI4a9CXs.js"><link rel="prefetch" href="/assets/page-B3DscprQ.js"><link rel="prefetch" href="/assets/page-CSQOpvvK.js"><link rel="prefetch" href="/assets/not-found-BOoklIG4.js"><link rel="prefetch" href="/assets/page-kzSGEVUs.js"><link rel="prefetch" href="/assets/page-DkY7AIhj.js"><link rel="prefetch" href="/assets/PasswordChecker-lYTOtNom.js"><link rel="prefetch" href="/assets/tick-circle-m94Aa6Zt.js"><link rel="prefetch" href="/assets/page-cOEvFs_l.js"><link rel="prefetch" href="/assets/page-D2TtSfnb.js"><link rel="prefetch" href="/assets/page-B1Uq1S1Q.js"><link rel="prefetch" href="/assets/docker-BuDBFEDL.js"><link rel="prefetch" href="/assets/page-ByXQN8A-.js"><link rel="prefetch" href="/assets/Commands-CD9Y7FOE.js"><link rel="prefetch" href="/assets/page-uDGvpa5g.js"><link rel="prefetch" href="/assets/react-error-boundary.esm-fyoUBS25.js"><link rel="prefetch" href="/assets/page-4nVakAEl.js"><link rel="prefetch" href="/assets/code-snippets-CqONne41.js"><link rel="prefetch" href="/assets/page-CPLlVRXx.js"><link rel="prefetch" href="/assets/SecretTooltip-LLGP7AIC.js"><link rel="prefetch" href="/assets/page-Ccnk_5ji.js"><link rel="prefetch" href="/assets/update-server-settings-mutation-CK6COmw9.js"><link rel="prefetch" href="/assets/page-EXvws1ss.js"><link rel="prefetch" href="/assets/page-BIYqUwTI.js"><link rel="prefetch" href="/assets/dates-3pMLCNrD.js"><link rel="prefetch" href="/assets/key-icon-DO4DPJHZ.js"><link rel="prefetch" href="/assets/service-BRoAA1Kq.js"><link rel="prefetch" href="/assets/page-D-ry_oLs.js"><link rel="prefetch" href="/assets/page-BTzhAVEn.js"><link rel="prefetch" href="/assets/RunsBody-DexNouV4.js"><link rel="prefetch" href="/assets/RunSelector-j0C_TPVp.js"><link rel="prefetch" href="/assets/delete-run-DzcYxUnd.js"><link rel="prefetch" href="/assets/DeleteAlertDialog-9RTDnEx3.js"><link rel="prefetch" href="/assets/Tabs-C2ufJX4t.js"><link rel="prefetch" href="/assets/all-pipeline-runs-query-BUT1PiTp.js"><link rel="prefetch" href="/assets/NestedCollapsible-DbhKdWx-.js"><link rel="prefetch" href="/assets/ExecutionStatus-B-ysY113.js"><link rel="prefetch" href="/assets/page-BE8jdyaM.js"><link rel="prefetch" href="/assets/page-2BsNK_sZ.js"><link rel="prefetch" href="/assets/page-DmteSSj6.js"><link rel="prefetch" href="/assets/StackList-S-9I1R4n.js"><link rel="prefetch" href="/assets/DialogItem-0fWTH7ki.js"><link rel="prefetch" href="/assets/AlertDialogDropdownItem-CRZjthRL.js"><link rel="prefetch" href="/assets/CollapsibleCard-Dr5zb5T5.js"><link rel="prefetch" href="/assets/refresh-CM5T3QeU.js"><link rel="prefetch" href="/assets/SearchField-DMCywawn.js"><link rel="prefetch" href="/assets/page-xa1EAPcI.js"><link rel="prefetch" href="/assets/code-browser-j2EpcxIA.js"><link rel="prefetch" href="/assets/clock-CPA5cYxq.js"><link rel="prefetch" href="/assets/page--hSXKqyG.js"><link rel="prefetch" href="/assets/page-DfTsntQI.js"><link rel="prefetch" href="/assets/flavor-select-BTEwByv6.js"><link rel="prefetch" href="/assets/constants-DP3ZEnXH.js"><link rel="prefetch" href="/assets/arrow-left-CwgF2MEM.js"><link rel="prefetch" href="/assets/configuration-form-DBZSb0FV.js"><link rel="prefetch" href="/assets/terminal-square-DMtel8mb.js"><link rel="prefetch" href="/assets/index-wYtmKLnQ.js"><link rel="prefetch" href="/assets/InlineAvatar-Cpj0lVRQ.js"><link rel="prefetch" href="/assets/DisplayDate-CYVBBSgr.js"><link rel="prefetch" href="/assets/index-DR30v9MZ.js"><link rel="prefetch" href="/assets/page-Dt3wHeWX.js"><link rel="prefetch" href="/assets/Lock-DW-0_M0o.js"><link rel="prefetch" href="/assets/components-Br2ezRib.js"><link rel="prefetch" href="/assets/dots-horizontal-BGRJCPCs.js"><link rel="prefetch" href="/assets/create-stack-BXLyjE58.js"><link rel="prefetch" href="/assets/index-D9-ukAem.js"><link rel="prefetch" href="/assets/type-guards-CaeD8wHO.js"><link rel="prefetch" href="/assets/trash-BWSZ7NRK.js"><link rel="prefetch" href="/assets/page-K9yjbnd4.js"><link rel="prefetch" href="/assets/persist-CEeDYHW5.js"><link rel="prefetch" href="/assets/Partials-BNBtCjuT.js"><link rel="prefetch" href="/assets/logs-B5n0U7tB.js"><link rel="prefetch" href="/assets/link-external-DUhCSKNm.js"><link rel="prefetch" href="/assets/NumberBox-D2A7ENHb.js"><link rel="prefetch" href="/assets/Infobox-Bai0JtFs.js"><link rel="prefetch" href="/assets/WizardFooter-dNDpuero.js"><link rel="prefetch" href="/assets/Wizard-DIllc07n.js"><link rel="prefetch" href="/assets/ProviderRadio-26EB5tY-.js"><link rel="prefetch" href="/assets/persist-SSTTV5q0.js"><link rel="prefetch" href="/assets/ComponentBadge-BgGnzcLu.js"><link rel="prefetch" href="/assets/ProviderIcon-kkODO9tx.js"><link rel="prefetch" href="/assets/sharedSchema-BACERDat.js"><link rel="prefetch" href="/assets/index-8uhUi12k.js"><link rel="prefetch" href="/assets/stack-detail-query-ihiJr6nq.js"><link rel="prefetch" href="/assets/ComponentIcon-B_7Y_oV-.js"><link rel="prefetch" href="/assets/layout-h3cbx8WZ.js"><link rel="prefetch" href="/assets/login-command-CkqxPtV3.js"><link rel="prefetch" href="/assets/CodeSnippet-Di-loaZu.js"><link rel="prefetch" href="/assets/zod-C0xYeTvL.js"><link rel="prefetch" href="/assets/index.esm-D7jFlf5N.js"><link rel="prefetch" href="/assets/ProCta-BoTLdAdV.js"><link rel="prefetch" href="/assets/check-DK77doTf.js"><link rel="prefetch" href="/assets/check-circle-mvyzYvIW.js"><link rel="prefetch" href="/assets/form-schemas-BJN_25Ua.js"><link rel="prefetch" href="/assets/EmptyState-M1jafpg6.js"><link rel="prefetch" href="/assets/UsageReason-C8sD2bOU.js"><link rel="prefetch" href="/assets/gcp-CHNvgEss.js"><link rel="prefetch" href="/assets/kubernetes-D6OUjwSK.js"><link rel="prefetch" href="/assets/rocket-Cf-B-XOR.js"><link rel="prefetch" href="/assets/UpdatePasswordSchemas-p3RX0P-Q.js"><link rel="prefetch" href="/assets/chevron-right-double-uNWbJT-C.js"><link rel="prefetch" href="/assets/plus-COjQg3AG.js"><link rel="prefetch" href="/assets/chevron-down-A-rmltmI.js"><link rel="prefetch" href="/assets/Error-vBjUYjb-.js"><link rel="prefetch" href="/assets/Helpbox-Dt3q7NGd.js"><link rel="prefetch" href="/assets/help-DyMolRxD.js"><link rel="prefetch" href="/assets/Tick-ay3Bgtro.js"><link rel="prefetch" href="/assets/file-text-BdxZdjP_.js"><link rel="prefetch" href="/assets/package-D1Mhqeh8.js"><link rel="prefetch" href="/assets/page-DHnkTzqs.js"><link rel="prefetch" href="/assets/page-B7Aj2XbV.js"><link rel="prefetch" href="/assets/ProBadge-3vtouJQf.js"><link rel="prefetch" href="/assets/page-DP2Ed-2m.js"><link rel="prefetch" href="/assets/page-RV8wpZ_4.js"><link rel="prefetch" href="/assets/page-Ci_n_x3a.js"><link rel="prefetch" href="/assets/404-D4aYbspS.js"><link rel="prefetch" href="/assets/CsvVizualization-CDrjL6bW.js"><link rel="prefetch" href="/assets/MarkdownVisualization-URCyUPcZ.js"></head>
14
+ <link rel="stylesheet" crossorigin href="/assets/index-CzX3ZYlI.css">
15
+ <link rel="prefetch" href="/assets/cloud-squares-DeRLMopf.svg"><link rel="prefetch" href="/assets/inter-cyrillic-ext-400-normal-Dc4VJyIJ.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-400-normal-BLGc9T1a.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-400-normal-Bput3-QP.woff2"><link rel="prefetch" href="/assets/inter-greek-400-normal-DxZsaF_h.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-400-normal-DMkecbls.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-400-normal-hnt3BR84.woff2"><link rel="prefetch" href="/assets/inter-latin-400-normal-BOOGhInR.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-500-normal-BShVwWPj.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-500-normal-D4Vwzodn.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-500-normal-B6guLgqG.woff2"><link rel="prefetch" href="/assets/inter-greek-500-normal-CeQXL5ds.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-500-normal-DOriooB6.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-500-normal-CIS2RHJS.woff2"><link rel="prefetch" href="/assets/inter-latin-500-normal-D2bGa7uu.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-600-normal-CaqZN2hq.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-600-normal-BGBWG807.woff2"><link rel="prefetch" href="/assets/inter-greek-ext-600-normal-Cnui8OiR.woff2"><link rel="prefetch" href="/assets/inter-greek-600-normal-Dhlb-90d.woff2"><link rel="prefetch" href="/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2"><link rel="prefetch" href="/assets/inter-latin-ext-600-normal-BnYJhD27.woff2"><link rel="prefetch" href="/assets/inter-latin-600-normal-D273HNI0.woff2"><link rel="prefetch" href="/assets/inter-cyrillic-ext-400-normal-BPnxn4xp.woff"><link rel="prefetch" href="/assets/inter-cyrillic-400-normal-ZzOtrSSW.woff"><link rel="prefetch" href="/assets/inter-greek-ext-400-normal-DCpCPQOf.woff"><link rel="prefetch" href="/assets/inter-greek-400-normal-BZzXV7-1.woff"><link rel="prefetch" href="/assets/inter-vietnamese-400-normal-BUNmGMP1.woff"><link rel="prefetch" href="/assets/inter-latin-ext-400-normal-C1t-h-pH.woff"><link rel="prefetch" href="/assets/inter-latin-400-normal-gitzw0hO.woff"><link rel="prefetch" href="/assets/inter-cyrillic-ext-500-normal-CUiC4oBV.woff"><link rel="prefetch" href="/assets/inter-cyrillic-500-normal-DH2hs3aW.woff"><link rel="prefetch" href="/assets/inter-greek-ext-500-normal-M2hEX8vc.woff"><link rel="prefetch" href="/assets/inter-greek-500-normal-d_eO-yCQ.woff"><link rel="prefetch" href="/assets/inter-vietnamese-500-normal-DQPw2Hwd.woff"><link rel="prefetch" href="/assets/inter-latin-ext-500-normal-UMdmhHu2.woff"><link rel="prefetch" href="/assets/inter-latin-500-normal-deR1Tlfd.woff"><link rel="prefetch" href="/assets/inter-cyrillic-600-normal-BuzJQFbW.woff"><link rel="prefetch" href="/assets/inter-cyrillic-ext-600-normal-Bt9VVOA-.woff"><link rel="prefetch" href="/assets/inter-greek-ext-600-normal-C9WLioJ8.woff"><link rel="prefetch" href="/assets/inter-greek-600-normal-CwicyhtI.woff"><link rel="prefetch" href="/assets/inter-vietnamese-600-normal-Cm6aH8_k.woff"><link rel="prefetch" href="/assets/inter-latin-ext-600-normal-CAF0vJDd.woff"><link rel="prefetch" href="/assets/inter-latin-600-normal-B5cFAncS.woff"><link rel="prefetch" href="/assets/mcp-Cb1aMeoq.webp"><link rel="prefetch" href="/assets/acp-DOsXjFc7.webp"><link rel="prefetch" href="/assets/settings_preview-0JLrRgHP.webp"><link rel="prefetch" href="/assets/upgrade-form-CwRHBuXB.webp"><link rel="prefetch" href="/assets/connectors-video-C9qY4syJ.svg"><link rel="prefetch" href="/assets/repos-video-D8kpu60k.svg"><link rel="prefetch" href="/assets/tour-cover-BYfeen6M.webp"><link rel="prefetch" href="/assets/adam-e-y0WnB_.webp"><link rel="prefetch" href="/assets/alex-DcCuDHPg.webp"><link rel="prefetch" href="/assets/baris-C0ZrZ10g.webp"><link rel="prefetch" href="/assets/hamza-NKKOZz1I.webp"><link rel="prefetch" href="/assets/stefan-B08Ftbba.webp"><link rel="prefetch" href="/assets/templates-1S_8WeSK.webp"><link rel="prefetch" href="/assets/flyte-Cj-xy_8I.svg"><link rel="prefetch" href="/assets/metaflow-weOkWNyT.svg"><link rel="prefetch" href="/assets/CodeSnippet-CK5CxKct.css"><link rel="prefetch" href="/assets/page-Mabsn4QJ.js"><link rel="prefetch" href="/assets/page-CSwZxZMQ.js"><link rel="prefetch" href="/assets/page-k-Wxh9L_.js"><link rel="prefetch" href="/assets/page-DwfGTiVs.js"><link rel="prefetch" href="/assets/page-ZfTtFicG.js"><link rel="prefetch" href="/assets/SetPassword-DR-EiLI5.js"><link rel="prefetch" href="/assets/login-mutation-CXc-Klim.js"><link rel="prefetch" href="/assets/page-WdRrlNt_.js"><link rel="prefetch" href="/assets/page-C05Jw4M2.js"><link rel="prefetch" href="/assets/page-DL8a4_lg.js"><link rel="prefetch" href="/assets/not-found-olRU3fnu.js"><link rel="prefetch" href="/assets/page-BPtvu74G.js"><link rel="prefetch" href="/assets/page-L84ig6HB.js"><link rel="prefetch" href="/assets/PasswordChecker-lYTOtNom.js"><link rel="prefetch" href="/assets/tick-circle-m94Aa6Zt.js"><link rel="prefetch" href="/assets/page-Ct2FUYuR.js"><link rel="prefetch" href="/assets/page-CYrJbk7P.js"><link rel="prefetch" href="/assets/page-C9WLk0X-.js"><link rel="prefetch" href="/assets/docker-BuDBFEDL.js"><link rel="prefetch" href="/assets/page-7keIM1V3.js"><link rel="prefetch" href="/assets/Commands-DGbAvMDk.js"><link rel="prefetch" href="/assets/page-BTIuG0ki.js"><link rel="prefetch" href="/assets/react-error-boundary.esm-fyoUBS25.js"><link rel="prefetch" href="/assets/page-B31neFwG.js"><link rel="prefetch" href="/assets/code-snippets-CqONne41.js"><link rel="prefetch" href="/assets/page-Dd_Yq-Uf.js"><link rel="prefetch" href="/assets/SecretTooltip-CePCL8kd.js"><link rel="prefetch" href="/assets/page-DMhYn1cF.js"><link rel="prefetch" href="/assets/update-server-settings-mutation-DwMM1LJz.js"><link rel="prefetch" href="/assets/page-Ce0cqLo3.js"><link rel="prefetch" href="/assets/page-BNgVExjN.js"><link rel="prefetch" href="/assets/dates-3pMLCNrD.js"><link rel="prefetch" href="/assets/key-icon-DO4DPJHZ.js"><link rel="prefetch" href="/assets/service-BQ9KIhls.js"><link rel="prefetch" href="/assets/page-PfhAnvq4.js"><link rel="prefetch" href="/assets/page-y-zV4n0c.js"><link rel="prefetch" href="/assets/RunsBody-W4WHf-sq.js"><link rel="prefetch" href="/assets/RunSelector-BLuBYNJt.js"><link rel="prefetch" href="/assets/delete-run-DlSLEl5T.js"><link rel="prefetch" href="/assets/DeleteAlertDialog-DVvXt-S6.js"><link rel="prefetch" href="/assets/Tabs-DxQ8PDOD.js"><link rel="prefetch" href="/assets/all-pipeline-runs-query-BGASHYtF.js"><link rel="prefetch" href="/assets/NestedCollapsible-Dor-bi98.js"><link rel="prefetch" href="/assets/ExecutionStatus-XrvT2r65.js"><link rel="prefetch" href="/assets/page-C28a7K8h.js"><link rel="prefetch" href="/assets/page-CgNsEkw-.js"><link rel="prefetch" href="/assets/page-D8G2B3Bu.js"><link rel="prefetch" href="/assets/StackList-CgmN5H-i.js"><link rel="prefetch" href="/assets/DialogItem-BHWf3sIB.js"><link rel="prefetch" href="/assets/AlertDialogDropdownItem-BG7-Ki1L.js"><link rel="prefetch" href="/assets/CollapsibleCard-D20FtrzC.js"><link rel="prefetch" href="/assets/refresh-CM5T3QeU.js"><link rel="prefetch" href="/assets/SearchField-D-h6jXyg.js"><link rel="prefetch" href="/assets/page-B3zo4KYS.js"><link rel="prefetch" href="/assets/code-browser-j2EpcxIA.js"><link rel="prefetch" href="/assets/clock-CPA5cYxq.js"><link rel="prefetch" href="/assets/page-BcQzleH6.js"><link rel="prefetch" href="/assets/page-BN3MHq1a.js"><link rel="prefetch" href="/assets/flavor-select-BnPxvQDN.js"><link rel="prefetch" href="/assets/constants-DP3ZEnXH.js"><link rel="prefetch" href="/assets/arrow-left-CwgF2MEM.js"><link rel="prefetch" href="/assets/configuration-form-BtI2Y4eX.js"><link rel="prefetch" href="/assets/terminal-square-DMtel8mb.js"><link rel="prefetch" href="/assets/index-CFESYpe4.js"><link rel="prefetch" href="/assets/InlineAvatar-Cfz4WSLK.js"><link rel="prefetch" href="/assets/DisplayDate-CYVBBSgr.js"><link rel="prefetch" href="/assets/index-DR30v9MZ.js"><link rel="prefetch" href="/assets/page-cqJDDDeK.js"><link rel="prefetch" href="/assets/Lock-DW-0_M0o.js"><link rel="prefetch" href="/assets/components-Br2ezRib.js"><link rel="prefetch" href="/assets/dots-horizontal-BGRJCPCs.js"><link rel="prefetch" href="/assets/create-stack-BJ6x5rzj.js"><link rel="prefetch" href="/assets/index-CmLcvK2z.js"><link rel="prefetch" href="/assets/type-guards-CaeD8wHO.js"><link rel="prefetch" href="/assets/trash-BWSZ7NRK.js"><link rel="prefetch" href="/assets/page-DfSvqT8g.js"><link rel="prefetch" href="/assets/persist-UUym702q.js"><link rel="prefetch" href="/assets/Partials-DQJFw1yW.js"><link rel="prefetch" href="/assets/logs-B5n0U7tB.js"><link rel="prefetch" href="/assets/link-external-DUhCSKNm.js"><link rel="prefetch" href="/assets/NumberBox-D2A7ENHb.js"><link rel="prefetch" href="/assets/Infobox-D9k5TFH4.js"><link rel="prefetch" href="/assets/WizardFooter-CFBHFZas.js"><link rel="prefetch" href="/assets/Wizard-CMI6Ksgz.js"><link rel="prefetch" href="/assets/ProviderRadio-BVDA-fAr.js"><link rel="prefetch" href="/assets/persist-D87V82eO.js"><link rel="prefetch" href="/assets/ComponentBadge-DKw7Gndh.js"><link rel="prefetch" href="/assets/ProviderIcon-DLo7t1lo.js"><link rel="prefetch" href="/assets/sharedSchema-Bse2agAf.js"><link rel="prefetch" href="/assets/index-CrhdX_qG.js"><link rel="prefetch" href="/assets/stack-detail-query-BAcZJrN3.js"><link rel="prefetch" href="/assets/ComponentIcon-ils7uNAk.js"><link rel="prefetch" href="/assets/layout-h3cbx8WZ.js"><link rel="prefetch" href="/assets/login-command-CkqxPtV3.js"><link rel="prefetch" href="/assets/CodeSnippet-CvI6D0wx.js"><link rel="prefetch" href="/assets/zod-C0xYeTvL.js"><link rel="prefetch" href="/assets/index.esm-D7jFlf5N.js"><link rel="prefetch" href="/assets/ProCta-EYoV9CvK.js"><link rel="prefetch" href="/assets/check-DK77doTf.js"><link rel="prefetch" href="/assets/check-circle-mvyzYvIW.js"><link rel="prefetch" href="/assets/form-schemas-CbvoEUHr.js"><link rel="prefetch" href="/assets/EmptyState-M1jafpg6.js"><link rel="prefetch" href="/assets/UsageReason-DjI5qMje.js"><link rel="prefetch" href="/assets/gcp-CHNvgEss.js"><link rel="prefetch" href="/assets/kubernetes-D6OUjwSK.js"><link rel="prefetch" href="/assets/rocket-Cf-B-XOR.js"><link rel="prefetch" href="/assets/UpdatePasswordSchemas-DbFEaezI.js"><link rel="prefetch" href="/assets/chevron-right-double-uNWbJT-C.js"><link rel="prefetch" href="/assets/plus-COjQg3AG.js"><link rel="prefetch" href="/assets/chevron-down-A-rmltmI.js"><link rel="prefetch" href="/assets/Error-BWaXP0VK.js"><link rel="prefetch" href="/assets/Helpbox-iE1xLmiZ.js"><link rel="prefetch" href="/assets/help-DyMolRxD.js"><link rel="prefetch" href="/assets/Tick-CEsT3HPR.js"><link rel="prefetch" href="/assets/file-text-BdxZdjP_.js"><link rel="prefetch" href="/assets/package-D1Mhqeh8.js"><link rel="prefetch" href="/assets/page-DtvTleaT.js"><link rel="prefetch" href="/assets/page-Dt6ANUTx.js"><link rel="prefetch" href="/assets/ProBadge-Cp4hb1YT.js"><link rel="prefetch" href="/assets/page-P04L5cm9.js"><link rel="prefetch" href="/assets/page-CINMx64X.js"><link rel="prefetch" href="/assets/page-JgomSTDc.js"><link rel="prefetch" href="/assets/404-_AtuLtaX.js"><link rel="prefetch" href="/assets/CsvVizualization-DVN541XF.js"><link rel="prefetch" href="/assets/MarkdownVisualization-URCyUPcZ.js"></head>
16
16
  <body>
17
17
  <div id="root"></div>
18
18
  </body>
@@ -15,47 +15,44 @@
15
15
 
16
16
  from uuid import UUID
17
17
 
18
- from zenml.zen_server.rbac.models import ResourceType
19
18
  from zenml.zen_server.utils import feature_gate, server_config
20
19
 
21
20
 
22
- def check_entitlement(resource_type: ResourceType) -> None:
21
+ def check_entitlement(feature: str) -> None:
23
22
  """Queries the feature gate to see if the operation falls within the Pro workspaces entitlements.
24
23
 
25
24
  Raises an exception if the user is not entitled to create an instance of the
26
25
  resource. Otherwise, simply returns.
27
26
 
28
27
  Args:
29
- resource_type: The type of resource to check for.
28
+ feature: The feature to check for.
30
29
  """
31
30
  if not server_config().feature_gate_enabled:
32
31
  return
33
- return feature_gate().check_entitlement(resource=resource_type)
32
+ return feature_gate().check_entitlement(feature=feature)
34
33
 
35
34
 
36
- def report_usage(resource_type: ResourceType, resource_id: UUID) -> None:
35
+ def report_usage(feature: str, resource_id: UUID) -> None:
37
36
  """Reports the creation/usage of a feature/resource.
38
37
 
39
38
  Args:
40
- resource_type: The type of resource to report a usage for
39
+ feature: The feature to report a usage for.
41
40
  resource_id: ID of the resource that was created.
42
41
  """
43
42
  if not server_config().feature_gate_enabled:
44
43
  return
45
- feature_gate().report_event(
46
- resource=resource_type, resource_id=resource_id
47
- )
44
+ feature_gate().report_event(feature=feature, resource_id=resource_id)
48
45
 
49
46
 
50
- def report_decrement(resource_type: ResourceType, resource_id: UUID) -> None:
47
+ def report_decrement(feature: str, resource_id: UUID) -> None:
51
48
  """Reports the deletion/deactivation of a feature/resource.
52
49
 
53
50
  Args:
54
- resource_type: The type of resource to report a decrement in count for.
51
+ feature: The feature to report a decrement in count for.
55
52
  resource_id: ID of the resource that was deleted.
56
53
  """
57
54
  if not server_config().feature_gate_enabled:
58
55
  return
59
56
  feature_gate().report_event(
60
- resource=resource_type, resource_id=resource_id, is_decrement=True
57
+ feature=feature, resource_id=resource_id, is_decrement=True
61
58
  )
@@ -16,18 +16,16 @@
16
16
  from abc import ABC, abstractmethod
17
17
  from uuid import UUID
18
18
 
19
- from zenml.zen_server.rbac.models import ResourceType
20
-
21
19
 
22
20
  class FeatureGateInterface(ABC):
23
21
  """Feature gate interface definition."""
24
22
 
25
23
  @abstractmethod
26
- def check_entitlement(self, resource: ResourceType) -> None:
24
+ def check_entitlement(self, feature: str) -> None:
27
25
  """Checks if a user is entitled to create a resource.
28
26
 
29
27
  Args:
30
- resource: The resource the user wants to create
28
+ feature: The feature the user wants to use.
31
29
 
32
30
  Raises:
33
31
  UpgradeRequiredError in case a subscription limit is reached
@@ -36,14 +34,14 @@ class FeatureGateInterface(ABC):
36
34
  @abstractmethod
37
35
  def report_event(
38
36
  self,
39
- resource: ResourceType,
37
+ feature: str,
40
38
  resource_id: UUID,
41
39
  is_decrement: bool = False,
42
40
  ) -> None:
43
41
  """Reports the usage of a feature to the aggregator backend.
44
42
 
45
43
  Args:
46
- resource: The resource the user created
44
+ feature: The feature the user used.
47
45
  resource_id: ID of the resource that was created/deleted.
48
46
  is_decrement: In case this event reports an actual decrement of usage
49
47
  """
@@ -25,7 +25,6 @@ from zenml.zen_server.cloud_utils import cloud_connection
25
25
  from zenml.zen_server.feature_gate.feature_gate_interface import (
26
26
  FeatureGateInterface,
27
27
  )
28
- from zenml.zen_server.rbac.models import ResourceType
29
28
 
30
29
  logger = get_logger(__name__)
31
30
 
@@ -47,7 +46,7 @@ class RawUsageEvent(BaseModel):
47
46
  organization_id: str = Field(
48
47
  description="The organization that this usage can be attributed to.",
49
48
  )
50
- feature: ResourceType = Field(
49
+ feature: str = Field(
51
50
  description="The feature whose usage is being reported.",
52
51
  )
53
52
  total: int = Field(
@@ -66,22 +65,22 @@ class ZenMLCloudFeatureGateInterface(FeatureGateInterface):
66
65
  """Initialize the object."""
67
66
  self._connection = cloud_connection()
68
67
 
69
- def check_entitlement(self, resource: ResourceType) -> None:
68
+ def check_entitlement(self, feature: str) -> None:
70
69
  """Checks if a user is entitled to create a resource.
71
70
 
72
71
  Args:
73
- resource: The resource the user wants to create
72
+ feature: The feature the user wants to use.
74
73
 
75
74
  Raises:
76
75
  SubscriptionUpgradeRequiredError: in case a subscription limit is reached
77
76
  """
78
77
  try:
79
78
  response = self._connection.get(
80
- endpoint=ENTITLEMENT_ENDPOINT + "/" + resource, params=None
79
+ endpoint=ENTITLEMENT_ENDPOINT + "/" + feature, params=None
81
80
  )
82
81
  except SubscriptionUpgradeRequiredError:
83
82
  raise SubscriptionUpgradeRequiredError(
84
- f"Your subscription reached its `{resource}` limit. Please "
83
+ f"Your subscription reached its `{feature}` limit. Please "
85
84
  f"upgrade your subscription or reach out to us."
86
85
  )
87
86
 
@@ -94,20 +93,20 @@ class ZenMLCloudFeatureGateInterface(FeatureGateInterface):
94
93
 
95
94
  def report_event(
96
95
  self,
97
- resource: ResourceType,
96
+ feature: str,
98
97
  resource_id: UUID,
99
98
  is_decrement: bool = False,
100
99
  ) -> None:
101
100
  """Reports the usage of a feature to the aggregator backend.
102
101
 
103
102
  Args:
104
- resource: The resource the user created
103
+ feature: The feature the user used.
105
104
  resource_id: ID of the resource that was created/deleted.
106
105
  is_decrement: In case this event reports an actual decrement of usage
107
106
  """
108
107
  data = RawUsageEvent(
109
108
  organization_id=ORGANIZATION_ID,
110
- feature=resource,
109
+ feature=feature,
111
110
  total=1 if not is_decrement else -1,
112
111
  metadata={
113
112
  "workspace_id": str(server_config.get_external_server_id()),
@@ -182,7 +182,7 @@ def verify_permissions_and_get_or_create_entity(
182
182
  def _pre_creation_hook() -> None:
183
183
  verify_permission_for_model(model=request_model, action=Action.CREATE)
184
184
  if resource_type and needs_usage_increment:
185
- check_entitlement(resource_type=resource_type)
185
+ check_entitlement(feature=resource_type)
186
186
 
187
187
  model, created = get_or_create_method(request_model, _pre_creation_hook)
188
188
 
@@ -67,7 +67,7 @@ class RBACSqlZenStore(SqlZenStore):
67
67
  action=Action.CREATE,
68
68
  project_id=model_request.project,
69
69
  )
70
- check_entitlement(resource_type=ResourceType.MODEL)
70
+ check_entitlement(feature=ResourceType.MODEL)
71
71
  except Exception as e:
72
72
  allow_model_creation = False
73
73
  error = e
@@ -92,7 +92,7 @@ class RBACSqlZenStore(SqlZenStore):
92
92
 
93
93
  if created:
94
94
  report_usage(
95
- resource_type=ResourceType.MODEL, resource_id=model_response.id
95
+ feature=ResourceType.MODEL, resource_id=model_response.id
96
96
  )
97
97
  else:
98
98
  verify_permission_for_model(model_response, action=Action.READ)
@@ -25,7 +25,12 @@ from fastapi import (
25
25
  from zenml.analytics.enums import AnalyticsEvent
26
26
  from zenml.analytics.utils import track_handler
27
27
  from zenml.config.pipeline_run_configuration import PipelineRunConfiguration
28
- from zenml.constants import API, RUN_TEMPLATES, VERSION_1
28
+ from zenml.constants import (
29
+ API,
30
+ RUN_TEMPLATE_TRIGGERS_FEATURE_NAME,
31
+ RUN_TEMPLATES,
32
+ VERSION_1,
33
+ )
29
34
  from zenml.models import (
30
35
  Page,
31
36
  PipelineRunResponse,
@@ -36,6 +41,9 @@ from zenml.models import (
36
41
  )
37
42
  from zenml.zen_server.auth import AuthContext, authorize
38
43
  from zenml.zen_server.exceptions import error_response
44
+ from zenml.zen_server.feature_gate.endpoint_utils import (
45
+ check_entitlement,
46
+ )
39
47
  from zenml.zen_server.rbac.endpoint_utils import (
40
48
  verify_permissions_and_create_entity,
41
49
  verify_permissions_and_delete_entity,
@@ -269,6 +277,7 @@ if server_config().workload_manager_enabled:
269
277
  action=Action.CREATE,
270
278
  project_id=template.project.id,
271
279
  )
280
+ check_entitlement(feature=RUN_TEMPLATE_TRIGGERS_FEATURE_NAME)
272
281
 
273
282
  return run_template(
274
283
  template=template,
@@ -24,6 +24,7 @@ from zenml.constants import (
24
24
  ENV_ZENML_RUNNER_IMAGE_DISABLE_UV,
25
25
  ENV_ZENML_RUNNER_PARENT_IMAGE,
26
26
  ENV_ZENML_RUNNER_POD_TIMEOUT,
27
+ RUN_TEMPLATE_TRIGGERS_FEATURE_NAME,
27
28
  handle_bool_env_var,
28
29
  handle_int_env_var,
29
30
  )
@@ -49,7 +50,11 @@ from zenml.pipelines.run_utils import (
49
50
  )
50
51
  from zenml.stack.flavor import Flavor
51
52
  from zenml.utils import pydantic_utils, requirements_utils, settings_utils
53
+ from zenml.utils.time_utils import utc_now
52
54
  from zenml.zen_server.auth import AuthContext, generate_access_token
55
+ from zenml.zen_server.feature_gate.endpoint_utils import (
56
+ report_usage,
57
+ )
53
58
  from zenml.zen_server.template_execution.runner_entrypoint_configuration import (
54
59
  RunnerEntrypointConfiguration,
55
60
  )
@@ -190,6 +195,11 @@ def run_template(
190
195
  placeholder_run = create_placeholder_run(deployment=new_deployment)
191
196
  assert placeholder_run
192
197
 
198
+ report_usage(
199
+ feature=RUN_TEMPLATE_TRIGGERS_FEATURE_NAME,
200
+ resource_id=placeholder_run.id,
201
+ )
202
+
193
203
  # We create an API token scoped to the pipeline run that never expires
194
204
  api_token = generate_access_token(
195
205
  user_id=auth_context.user.id,
@@ -300,7 +310,8 @@ def run_template(
300
310
  zen_store().update_run(
301
311
  run_id=placeholder_run.id,
302
312
  run_update=PipelineRunUpdate(
303
- status=ExecutionStatus.FAILED
313
+ status=ExecutionStatus.FAILED,
314
+ end_time=utc_now(),
304
315
  ),
305
316
  )
306
317
  raise
@@ -0,0 +1,23 @@
1
+ """Release [0.82.1].
2
+
3
+ Revision ID: 0.82.1
4
+ Revises: 0.82.0
5
+ Create Date: 2025-05-14 07:47:30.641830
6
+
7
+ """
8
+
9
+ # revision identifiers, used by Alembic.
10
+ revision = "0.82.1"
11
+ down_revision = "0.82.0"
12
+ branch_labels = None
13
+ depends_on = None
14
+
15
+
16
+ def upgrade() -> None:
17
+ """Upgrade database schema and/or data, creating a new revision."""
18
+ pass
19
+
20
+
21
+ def downgrade() -> None:
22
+ """Downgrade database schema and/or data back to the previous revision."""
23
+ pass
@@ -11354,13 +11354,10 @@ class SqlZenStore(BaseZenStore):
11354
11354
  except EntityExistsError:
11355
11355
  if isinstance(tag, tag_utils.Tag):
11356
11356
  tag_schema = self._get_tag_schema(tag.name, session)
11357
- if (
11358
- tag.exclusive is not None
11359
- and tag.exclusive != tag_schema.exclusive
11360
- ):
11357
+ if bool(tag.exclusive) != tag_schema.exclusive:
11361
11358
  raise ValueError(
11362
- f"Tag `{tag_schema.name}` has been defined as a "
11363
- f"{'exclusive' if tag_schema.exclusive else 'non-exclusive'} "
11359
+ f"Tag `{tag_schema.name}` has been defined as "
11360
+ f"{'an exclusive' if tag_schema.exclusive else 'a non-exclusive'} "
11364
11361
  "tag. Please update it before attaching it to resources."
11365
11362
  )
11366
11363
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: zenml-nightly
3
- Version: 0.82.0.dev20250513
3
+ Version: 0.82.1.dev20250517
4
4
  Summary: ZenML: Write production-ready ML code.
5
5
  License: Apache-2.0
6
6
  Keywords: machine learning,production,pipeline,mlops,devops
@@ -532,7 +532,7 @@ the Apache License Version 2.0.
532
532
  <a href="https://github.com/zenml-io/zenml-projects">Projects Showcase</a>
533
533
  <br />
534
534
  <br />
535
- 🎉 Version 0.82.0 is out. Check out the release notes
535
+ 🎉 Version 0.82.1 is out. Check out the release notes
536
536
  <a href="https://github.com/zenml-io/zenml/releases">here</a>.
537
537
  <br />
538
538
  🖥️ Download our VS Code Extension <a href="https://marketplace.visualstudio.com/items?itemName=ZenML.zenml-vscode">here</a>.