wizards 0.2.14 → 0.2.15

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 (32) hide show
  1. package/apps/web/dist/assets/{Account-CbcLDgwW.js → Account-B_FCuidz.js} +1 -1
  2. package/apps/web/dist/assets/{ChangelogDialog-CPaoAyWM.js → ChangelogDialog-BKvNJIrA.js} +1 -1
  3. package/apps/web/dist/assets/{ChatPanel-DzIGwA0b.js → ChatPanel-CPgh0skF.js} +1 -1
  4. package/apps/web/dist/assets/{CreditsDialog-o9h0Nrui.js → CreditsDialog-CbFq_7-m.js} +1 -1
  5. package/apps/web/dist/assets/EditorPage-8liZwYCK.js +2 -0
  6. package/apps/web/dist/assets/{FlowPreview-DdZKsXNh.js → FlowPreview-De3ZyIer.js} +1 -1
  7. package/apps/web/dist/assets/{Harness-CKcyJvtw.js → Harness-3kuJaJoj.js} +1 -1
  8. package/apps/web/dist/assets/{HomePage-DVPGy7jW.js → HomePage-DWDT64vg.js} +1 -1
  9. package/apps/web/dist/assets/{ImportWizard-CK9fXKct.js → ImportWizard-CTGmBDI8.js} +1 -1
  10. package/apps/web/dist/assets/{LocalRuntime-Cjftoi3j.js → LocalRuntime-CVdU8RtD.js} +1 -1
  11. package/apps/web/dist/assets/{NewWizardPage-0GHmokBt.js → NewWizardPage-CqFlo0b-.js} +2 -2
  12. package/apps/web/dist/assets/{ProjectPage-DURhRvUm.js → ProjectPage-CDw2Jcxx.js} +1 -1
  13. package/apps/web/dist/assets/{PublicRunner-BCHg6lbj.js → PublicRunner-BYnX2OmB.js} +1 -1
  14. package/apps/web/dist/assets/{RunnerView-a_2EqHPo.js → RunnerView-Civq59Tk.js} +1 -1
  15. package/apps/web/dist/assets/{SettingsPage-DPHW6HRz.js → SettingsPage-Bj0TxbiM.js} +1 -1
  16. package/apps/web/dist/assets/{SetupPage-r6tj7oTr.js → SetupPage-DHQYO7zB.js} +1 -1
  17. package/apps/web/dist/assets/{SharePage-2Q8SoJLs.js → SharePage-CY6bwfTI.js} +1 -1
  18. package/apps/web/dist/assets/{api-DTLkC0ge.js → api-RJbFM_oc.js} +1 -1
  19. package/apps/web/dist/assets/changelog-BWtvjeKs.js +1 -0
  20. package/apps/web/dist/assets/{esm-Buv7Ma3z.js → esm-CgnVZhIQ.js} +1 -1
  21. package/apps/web/dist/assets/index-9maLuK9R.css +1 -0
  22. package/apps/web/dist/assets/{index-C5pRB5Ah.js → index-LmRYEd-y.js} +3 -3
  23. package/apps/web/dist/assets/{meta-CDimdOlV.js → meta-CchZXdWH.js} +1 -1
  24. package/apps/web/dist/assets/{settings-menu-D1tMZ82V.js → settings-menu-CrRWSrNL.js} +1 -1
  25. package/apps/web/dist/assets/ui-HV_XbHjw.js +1 -0
  26. package/apps/web/dist/index.html +4 -4
  27. package/apps/web/dist/mcp/flow.html +2 -2
  28. package/package.json +1 -1
  29. package/apps/web/dist/assets/EditorPage-BPL4_GlP.js +0 -2
  30. package/apps/web/dist/assets/changelog-5ArxeGsu.js +0 -1
  31. package/apps/web/dist/assets/index-DMwk_afK.css +0 -1
  32. package/apps/web/dist/assets/ui-CHX2gEQl.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wizards",
3
- "version": "0.2.14",
3
+ "version": "0.2.15",
4
4
  "description": "Make a wish. Get your wizard. It guides you step by step. Let AI do the work. Runs on your machine, on the AI subscription you already have.",
5
5
  "license": "FSL-1.1-MIT",
6
6
  "homepage": "https://engenty.ai",
@@ -1,2 +0,0 @@
1
- import{a as e,n as t,t as n}from"./jsx-runtime-D3jfb0Ew.js";import{A as r,O as i,S as a,c as o,d as s,j as c,k as l,n as u,nt as d,t as f}from"./api-DTLkC0ge.js";import{t as p}from"./createLucideIcon-q3MZMmnf.js";import{_ as m,d as h,g,r as _,t as v}from"./RunnerView-a_2EqHPo.js";import{n as ee,t as te}from"./refresh-cw-BNtHis1x.js";import{a as y,i as ne,n as b,r as x,t as S}from"./meta-CDimdOlV.js";import{t as re}from"./check-CUpby_J9.js";import{t as ie}from"./chevron-down-DymW-2BP.js";import{n as ae,r as oe,t as se}from"./lock-DZL2N67v.js";import{i as ce,n as le,t as ue}from"./ChatPanel-DzIGwA0b.js";import{t as de}from"./circle-alert-D2SCwFT-.js";import{t as fe}from"./upload-DNRENWzQ.js";import{n as pe,t as me}from"./plus-Du-Jx8aI.js";import{t as he}from"./external-link-MAL7vJYj.js";import{t as C}from"./wand-sparkles-Clj3VRB5.js";import{n as ge,r as _e}from"./Account-CbcLDgwW.js";import{t as ve}from"./image-BShbErBm.js";import{t as w}from"./trash-0IafyhZB.js";import{_ as T,a as E,c as D,d as ye,h as O,i as be,l as k,m as A,o as j,p as M,r as N,s as P,t as F,u as I,y as L}from"./ui-CHX2gEQl.js";import{C as xe,D as Se,F as Ce,I as we,O as Te,P as Ee,R as De,S as Oe,U as R,a as ke,c as Ae,g as je,j as Me,k as Ne,l as Pe,n as Fe,o as Ie,p as Le,s as Re,t as ze}from"./index-C5pRB5Ah.js";import{c as Be,i as Ve,l as He,n as Ue,o as We,r as Ge,s as Ke,t as qe}from"./definition-Dp0DR2D6.js";import{a as Je,c as Ye,i as Xe,l as Ze,o as Qe,r as $e,s as et,t as tt}from"./esm-Buv7Ma3z.js";import{n as nt}from"./LocalRuntime-Cjftoi3j.js";var rt={name:`cloud-check`,size:24,node:[[`path`,{d:`m17 15-5.5 5.5L9 18`,key:`15q87x`}],[`path`,{d:`M5.516 16.07A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 3.501 7.327`,key:`1xtj56`}]]};rt.node;var it=p(rt),at={name:`cloud-upload`,size:24,node:[[`path`,{d:`M12 13v8`,key:`1l5pq0`}],[`path`,{d:`M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242`,key:`1pljnt`}],[`path`,{d:`m8 17 4-4 4 4`,key:`1quai1`}]],aliases:[`upload-cloud`]};at.node;var ot=p(at),st={name:`code`,size:24,node:[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]};st.node;var ct=p(st),lt={name:`file-braces`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1`,key:`1oajmo`}],[`path`,{d:`M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1`,key:`mpwhp6`}]],aliases:[`file-json`]};lt.node;var ut=p(lt),dt={name:`file-code-corner`,size:24,node:[[`path`,{d:`M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35`,key:`1wthlu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m5 16-3 3 3 3`,key:`331omg`}],[`path`,{d:`m9 22 3-3-3-3`,key:`lsp7cz`}]],aliases:[`file-code-2`]};dt.node;var ft=p(dt),pt={name:`git-merge`,size:24,node:[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`,key:`7kw0sc`}]]};pt.node;var mt=p(pt),ht={name:`minus`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}]]};ht.node;var gt=p(ht),_t={name:`play`,size:24,node:[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]};_t.node;var vt=p(_t),yt={name:`qr-code`,size:24,node:[[`rect`,{width:`5`,height:`5`,x:`3`,y:`3`,rx:`1`,key:`1tu5fj`}],[`rect`,{width:`5`,height:`5`,x:`16`,y:`3`,rx:`1`,key:`1v8r4q`}],[`rect`,{width:`5`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`1x03jg`}],[`path`,{d:`M21 16h-3a2 2 0 0 0-2 2v3`,key:`177gqh`}],[`path`,{d:`M21 21v.01`,key:`ents32`}],[`path`,{d:`M12 7v3a2 2 0 0 1-2 2H7`,key:`8crl2c`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M12 3h.01`,key:`n36tog`}],[`path`,{d:`M12 16v.01`,key:`133mhm`}],[`path`,{d:`M16 12h1`,key:`1slzba`}],[`path`,{d:`M21 12v.01`,key:`1lwtk9`}],[`path`,{d:`M12 21v-1`,key:`1880an`}]]};yt.node;var bt=p(yt),xt={name:`scan`,size:24,node:[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}]]};xt.node;var St=p(xt),z=e(t(),1),B=e(n(),1);function Ct(e){return e.mime.startsWith(`image/`)?ve:e.mime.includes(`json`)?ut:e.mime===`text/html`||e.mime.includes(`javascript`)||e.mime===`text/css`?ft:Ce}function wt(e){return e<1024?`${e} B`:e<1048576?`${Math.round(e/1024)} KB`:`${(e/1048576).toFixed(1)} MB`}function Tt({wizardId:e,files:t,readOnly:n}){let r=d(),i=(0,z.useRef)(null),[a,o]=(0,z.useState)(!1),[s,c]=(0,z.useState)(!1),[l,f]=(0,z.useState)(null),p=`/api/studio/wizards/${e}/files`,m=()=>r.invalidateQueries({queryKey:[`wizard`,e]}),h=async e=>{if(e?.length){o(!0),f(null);try{for(let t of Array.from(e)){let e=await fetch(`${p}/${encodeURIComponent(t.name).replace(/%2F/g,`/`)}`,{method:`PUT`,credentials:`include`,headers:{"content-type":t.type||`application/octet-stream`},body:t});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error??e.statusText)}}}catch(e){f(e.message)}finally{o(!1),await m()}}},g=async e=>{if(window.confirm(L(`files.confirmDelete`,{path:e}))){f(null);try{await u.del(`${p}/${e}`)}catch(e){f(e.message)}await m()}},_=t.reduce((e,t)=>e+t.size,0);return(0,B.jsxs)(`div`,{className:O(`flex min-h-full flex-col px-5 py-5`,s&&`bg-ember-veil`),onDragOver:e=>{e.preventDefault(),c(!n)},onDragLeave:()=>c(!1),onDrop:e=>{e.preventDefault(),c(!1),n||h(e.dataTransfer.files)},children:[n?null:(0,B.jsx)(`p`,{className:`mb-4 text-[0.8125rem] text-ink-3 leading-relaxed`,children:L(`files.explain`)}),(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[n?null:(0,B.jsxs)(`button`,{type:`button`,onClick:()=>i.current?.click(),className:`inline-flex h-9 items-center gap-1.5 rounded-full bg-paper-2 px-3.5 font-medium text-[0.8125rem] text-ink-2 hover:bg-paper-3 hover:text-ink`,children:[a?(0,B.jsx)(ye,{className:`size-3.5`}):(0,B.jsx)(fe,{className:`size-3.5`}),L(`files.upload`)]}),(0,B.jsx)(`span`,{className:`ml-auto text-[0.75rem] text-ink-4`,children:L(`files.count`,{n:t.length,size:wt(_)})}),(0,B.jsx)(`input`,{ref:i,type:`file`,multiple:!0,hidden:!0,onChange:e=>void h(e.target.files)})]}),l?(0,B.jsx)(`div`,{className:`mt-3 rounded-lg bg-rose-tint px-3 py-2 text-[0.8125rem] text-rose`,children:l}):null,(0,B.jsx)(`ul`,{className:`mt-4 flex flex-col`,children:t.map(e=>{let t=Ct(e);return(0,B.jsxs)(`li`,{className:`group flex items-center gap-3 rounded-lg px-2 py-1.5 hover:bg-paper-2`,children:[(0,B.jsx)(t,{className:`size-4 shrink-0 text-ink-3`}),(0,B.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-[0.75rem]`,children:e.path}),(0,B.jsx)(`span`,{className:`text-[0.75rem] text-ink-4 tabular-nums`,children:wt(e.size)}),(0,B.jsx)(`a`,{href:`${p}/${e.path}`,className:`inline-flex size-8 items-center justify-center rounded-full text-ink-3 opacity-0 hover:text-ink group-hover:opacity-100`,"aria-label":L(`files.download`),children:(0,B.jsx)(we,{className:`size-4`})}),n?null:(0,B.jsx)(j,{label:L(`files.delete`),className:`opacity-0 hover:text-rose group-hover:opacity-100`,onClick:()=>void g(e.path),children:(0,B.jsx)(w,{className:`size-4`})})]},e.path)})}),t.length===0?(0,B.jsx)(`div`,{className:`mt-6 rounded-xl border border-border border-dashed px-4 py-8 text-center text-[0.8125rem] text-ink-4`,children:L(n?`files.none`:`files.empty`)}):null]})}var Et=Object.defineProperty,Dt=(e,t,n)=>t in e?Et(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ot=(e,t)=>{for(var n in t)Et(e,n,{get:t[n],enumerable:!0})},kt=(e,t,n)=>Dt(e,typeof t==`symbol`?t:t+``,n),At={};Ot(At,{Graph:()=>H,alg:()=>Ht});var jt=Object.defineProperty,Mt=(e,t)=>{for(var n in t)jt(e,n,{get:t[n],enumerable:!0})},Nt=class{constructor(e){this._isDirected=!0,this._isMultigraph=!1,this._isCompound=!1,this._nodes={},this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={},this._nodeCount=0,this._edgeCount=0,this._defaultNodeLabelFn=()=>{},this._defaultEdgeLabelFn=()=>{},e&&(this._isDirected=`directed`in e?e.directed:!0,this._isMultigraph=`multigraph`in e&&e.multigraph,this._isCompound=`compound`in e&&e.compound),this._isCompound&&(this._parent={},this._children={},this._children[`\0`]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return this._defaultNodeLabelFn=typeof e==`function`?e:()=>e,this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){return this.nodes().filter(e=>Object.keys(this._in[e]).length===0)}sinks(){return this.nodes().filter(e=>Object.keys(this._out[e]).length===0)}setNodes(e,t){return e.forEach(e=>{t===void 0?this.setNode(e):this.setNode(e,t)}),this}setNode(e,t){return e in this._nodes?(arguments.length>1&&(this._nodes[e]=t),this):(this._nodes[e]=arguments.length>1?t:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=`\0`,this._children[e]={},this._children[`\0`][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return e in this._nodes}removeNode(e){if(e in this._nodes){let t=e=>this.removeEdge(this._edgeObjs[e]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],this.children(e).forEach(e=>{this.setParent(e)}),delete this._children[e]),Object.keys(this._in[e]).forEach(t),delete this._in[e],delete this._preds[e],Object.keys(this._out[e]).forEach(t),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,t){if(!this._isCompound)throw Error(`Cannot set parent in a non-compound graph`);if(t===void 0)t=`\0`;else{t+=``;for(let n=t;n!==void 0;n=this.parent(n))if(n===e)throw Error(`Setting `+t+` as parent of `+e+` would create a cycle`);this.setNode(t)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=t,this._children[t][e]=!0,this}parent(e){if(this._isCompound){let t=this._parent[e];if(t!==`\0`)return t}}children(e=`\0`){if(this._isCompound){let t=this._children[e];if(t)return Object.keys(t)}else{if(e===`\0`)return this.nodes();if(this.hasNode(e))return[]}return[]}predecessors(e){let t=this._preds[e];if(t)return Object.keys(t)}successors(e){let t=this._sucs[e];if(t)return Object.keys(t)}neighbors(e){let t=this.predecessors(e);if(t){let n=new Set(t),r=this.successors(e);if(r)for(let e of r)n.add(e);return Array.from(n.values())}}isLeaf(e){let t;return t=this.isDirected()?this.successors(e):this.neighbors(e),(t?.length??0)===0}filterNodes(e){let t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph()),Object.entries(this._nodes).forEach(([n,r])=>{e(n)&&t.setNode(n,r)}),Object.values(this._edgeObjs).forEach(e=>{t.hasNode(e.v)&&t.hasNode(e.w)&&t.setEdge(e,this.edge(e))});let n={},r=e=>{let i=this.parent(e);return!i||t.hasNode(i)?(n[e]=i,i):i in n?n[i]:r(i)};return this._isCompound&&t.nodes().forEach(e=>t.setParent(e,r(e))),t}setDefaultEdgeLabel(e){return this._defaultEdgeLabelFn=typeof e==`function`?e:()=>e,this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(e,t){return e.reduce((e,n)=>(t===void 0?this.setEdge(e,n):this.setEdge(e,n,t),n)),this}setEdge(e,t,n,r){let i,a,o,s,c=!1;typeof e==`object`&&e&&`v`in e?(i=e.v,a=e.w,o=e.name,arguments.length===2&&(s=t,c=!0)):(i=e,a=t,o=r,arguments.length>2&&(s=n,c=!0)),i=``+i,a=``+a,o!==void 0&&(o=``+o);let l=V(this._isDirected,i,a,o);if(l in this._edgeLabels)return c&&(this._edgeLabels[l]=s),this;if(o!==void 0&&!this._isMultigraph)throw Error(`Cannot set a named edge when isMultigraph = false`);this.setNode(i),this.setNode(a),this._edgeLabels[l]=c?s:this._defaultEdgeLabelFn(i,a,o);let u=It(this._isDirected,i,a,o);return i=u.v,a=u.w,Object.freeze(u),this._edgeObjs[l]=u,Pt(this._preds[a],i),Pt(this._sucs[i],a),this._in[a][l]=u,this._out[i][l]=u,this._edgeCount++,this}edge(e,t,n){let r=arguments.length===1?Lt(this._isDirected,e):V(this._isDirected,e,t,n);return this._edgeLabels[r]}edgeAsObj(e,t,n){let r=arguments.length===1?this.edge(e):this.edge(e,t,n);return typeof r!=`object`||!r?{label:r}:r}hasEdge(e,t,n){return(arguments.length===1?Lt(this._isDirected,e):V(this._isDirected,e,t,n))in this._edgeLabels}removeEdge(e,t,n){let r=arguments.length===1?Lt(this._isDirected,e):V(this._isDirected,e,t,n),i=this._edgeObjs[r];if(i){let e=i.v,t=i.w;delete this._edgeLabels[r],delete this._edgeObjs[r],Ft(this._preds[t],e),Ft(this._sucs[e],t),delete this._in[t][r],delete this._out[e][r],this._edgeCount--}return this}inEdges(e,t){return this.isDirected()?this.filterEdges(this._in[e],e,t):this.nodeEdges(e,t)}outEdges(e,t){return this.isDirected()?this.filterEdges(this._out[e],e,t):this.nodeEdges(e,t)}nodeEdges(e,t){if(e in this._nodes)return this.filterEdges({...this._in[e],...this._out[e]},e,t)}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}filterEdges(e,t,n){if(!e)return;let r=Object.values(e);return n?r.filter(e=>e.v===t&&e.w===n||e.v===n&&e.w===t):r}};function Pt(e,t){e[t]?e[t]++:e[t]=1}function Ft(e,t){e[t]!==void 0&&!--e[t]&&delete e[t]}function V(e,t,n,r){let i=``+t,a=``+n;if(!e&&i>a){let e=i;i=a,a=e}return i+``+a+``+(r===void 0?`\0`:r)}function It(e,t,n,r){let i=``+t,a=``+n;if(!e&&i>a){let e=i;i=a,a=e}let o={v:i,w:a};return r&&(o.name=r),o}function Lt(e,t){return V(e,t.v,t.w,t.name)}Mt({},{read:()=>Vt,write:()=>Rt});function Rt(e){let t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:zt(e),edges:Bt(e)},n=e.graph();return n!==void 0&&(t.value=structuredClone(n)),t}function zt(e){return e.nodes().map(t=>{let n=e.node(t),r=e.parent(t),i={v:t};return n!==void 0&&(i.value=n),r!==void 0&&(i.parent=r),i})}function Bt(e){return e.edges().map(t=>{let n=e.edge(t),r={v:t.v,w:t.w};return t.name!==void 0&&(r.name=t.name),n!==void 0&&(r.value=n),r})}function Vt(e){let t=new Nt(e.options);return e.value!==void 0&&t.setGraph(e.value),e.nodes.forEach(e=>{t.setNode(e.v,e.value),e.parent&&t.setParent(e.v,e.parent)}),e.edges.forEach(e=>{t.setEdge({v:e.v,w:e.w,name:e.name},e.value)}),t}var Ht={};Mt(Ht,{CycleException:()=>rn,bellmanFord:()=>Wt,components:()=>Kt,dijkstra:()=>Yt,dijkstraAll:()=>Zt,findCycles:()=>$t,floydWarshall:()=>tn,isAcyclic:()=>on,postorder:()=>un,preorder:()=>dn,prim:()=>fn,shortestPaths:()=>pn,tarjan:()=>Qt,topsort:()=>an});var Ut=()=>1;function Wt(e,t,n,r){return Gt(e,String(t),n||Ut,r||function(t){return e.outEdges(t)??[]})}function Gt(e,t,n,r){let i={},a,o=0,s=e.nodes(),c=function(e){let t=i[e.v],r=i[e.w];if(!t||!r)return;let o=n(e);t.distance+o<r.distance&&(i[e.w]={distance:t.distance+o,predecessor:e.v},a=!0)},l=function(){s.forEach(function(e){r(e).forEach(function(t){let n=t.v===e?t.v:t.w,r=n===t.v?t.w:t.v;c({v:n,w:r})})})};s.forEach(function(e){i[e]={distance:e===t?0:1/0,predecessor:``}});let u=s.length;for(let e=1;e<u&&(a=!1,o++,l(),a);e++);if(o===u-1&&(a=!1,l(),a))throw Error(`The graph contains a negative weight cycle`);return i}function Kt(e){let t={},n=[],r;function i(n){var a,o;n in t||(t[n]=!0,r.push(n),(a=e.successors(n))==null||a.forEach(i),(o=e.predecessors(n))==null||o.forEach(i))}return e.nodes().forEach(function(e){r=[],i(e),r.length&&n.push(r)}),n}var qt=class{constructor(){this._arr=[],this._keyIndices={}}size(){return this._arr.length}keys(){return this._arr.map(e=>e.key)}has(e){return e in this._keyIndices}priority(e){let t=this._keyIndices[e];if(t!==void 0)return this._arr[t].priority}min(){if(this.size()===0)throw Error(`Queue underflow`);return this._arr[0].key}add(e,t){let n=this._keyIndices,r=String(e);if(!(r in n)){let e=this._arr,i=e.length;return n[r]=i,e.push({key:r,priority:t}),this._decrease(i),!0}return!1}removeMin(){if(this.size()===0)throw Error(`Queue underflow`);this._swap(0,this._arr.length-1);let e=this._arr.pop();return delete this._keyIndices[e.key],this._heapify(0),e.key}decrease(e,t){let n=this._keyIndices[e];if(n===void 0)throw Error(`Key not found: ${e}`);let r=this._arr[n].priority;if(t>r)throw Error(`New priority is greater than current priority. Key: ${e} Old: ${r} New: ${t}`);this._arr[n].priority=t,this._decrease(n)}_heapify(e){let t=this._arr,n=2*e,r=n+1,i=e;n<t.length&&(i=t[n].priority<t[i].priority?n:i,r<t.length&&(i=t[r].priority<t[i].priority?r:i),i!==e&&(this._swap(e,i),this._heapify(i)))}_decrease(e){let t=this._arr,n=t[e].priority,r;for(;e!==0&&(r=e>>1,!(t[r].priority<n));)this._swap(e,r),e=r}_swap(e,t){let n=this._arr,r=this._keyIndices,i=n[e],a=n[t];n[e]=a,n[t]=i,r[a.key]=e,r[i.key]=t}},Jt=()=>1;function Yt(e,t,n,r){return Xt(e,String(t),n||Jt,r||function(t){return e.outEdges(t)??[]})}function Xt(e,t,n,r){let i={},a=new qt,o,s,c=function(e){let t=e.v===o?e.w:e.v,r=i[t];if(!r)return;let c=n(e),l=s.distance+c;if(c<0)throw Error(`dijkstra does not allow negative edge weights. Bad edge: `+e+` Weight: `+c);l<r.distance&&(r.distance=l,r.predecessor=o,a.decrease(t,l))};for(e.nodes().forEach(function(e){let n=e===t?0:1/0;i[e]={distance:n,predecessor:``},a.add(e,n)});a.size()>0;){o=a.removeMin();let e=i[o];if(!e||e.distance===1/0)break;s=e,r(o).forEach(c)}return i}function Zt(e,t,n){return e.nodes().reduce(function(r,i){return r[i]=Yt(e,i,t,n),r},{})}function Qt(e){let t=0,n=[],r={},i=[];function a(o){var s;let c=r[o]={onStack:!0,lowlink:t,index:t++};if(n.push(o),(s=e.successors(o))==null||s.forEach(function(e){if(e in r){let t=r[e];t!=null&&t.onStack&&(c.lowlink=Math.min(c.lowlink,t.index))}else{a(e);let t=r[e];t&&(c.lowlink=Math.min(c.lowlink,t.lowlink))}}),c.lowlink===c.index){let e=[],t;do{t=n.pop();let i=r[t];i&&(i.onStack=!1),e.push(t)}while(o!==t);i.push(e)}}return e.nodes().forEach(function(e){e in r||a(e)}),i}function $t(e){return Qt(e).filter(function(t){let n=t[0];return n?t.length>1||t.length===1&&(e.outEdges(n,n)??[]).length>0:!1})}var en=()=>1;function tn(e,t,n){return nn(e,t||en,n||function(t){return e.outEdges(t)??[]})}function nn(e,t,n){let r={},i=e.nodes();return i.forEach(function(e){let a={};r[e]=a,a[e]={distance:0,predecessor:``},i.forEach(function(t){e!==t&&(a[t]={distance:1/0,predecessor:``})}),n(e).forEach(function(n){let r=n.v===e?n.w:n.v,i=t(n);a[r]={distance:i,predecessor:e}})}),i.forEach(function(e){let t=r[e];t&&i.forEach(function(n){let a=r[n];a&&i.forEach(function(n){let r=a[e],i=t[n],o=a[n];if(r&&i&&o){let e=r.distance+i.distance;e<o.distance&&(o.distance=e,o.predecessor=i.predecessor)}})})}),r}var rn=class extends Error{constructor(e){super(e),this.name=`CycleException`}};function an(e){let t={},n={},r=[];function i(a){var o;if(a in n)throw new rn;a in t||(n[a]=!0,t[a]=!0,(o=e.predecessors(a))==null||o.forEach(i),delete n[a],r.push(a))}if(e.sinks().forEach(i),Object.keys(t).length!==e.nodeCount())throw new rn;return r}function on(e){try{an(e)}catch(e){if(e instanceof rn)return!1;throw e}return!0}function sn(e,t,n,r,i){Array.isArray(t)||(t=[t]);let a=(t=>(e.isDirected()?e.successors(t):e.neighbors(t))??[]),o={};return t.forEach(function(t){if(!e.hasNode(t))throw Error(`Graph does not have node: `+t);i=cn(e,t,n===`post`,o,a,r,i)}),i}function cn(e,t,n,r,i,a,o){return t in r||(r[t]=!0,n||(o=a(o,t)),i(t).forEach(function(t){o=cn(e,t,n,r,i,a,o)}),n&&(o=a(o,t))),o}function ln(e,t,n){return sn(e,t,n,function(e,t){return e.push(t),e},[])}function un(e,t){return ln(e,t,`post`)}function dn(e,t){return ln(e,t,`pre`)}function fn(e,t){var n;let r=new Nt,i={},a=new qt,o;function s(e){let n=e.v===o?e.w:e.v,r=a.priority(n);if(r!==void 0){let s=t(e);s<r&&(i[n]=o,a.decrease(n,s))}}if(e.nodeCount()===0)return r;e.nodes().forEach(function(e){a.add(e,1/0),r.setNode(e)});let c=e.nodes()[0];c!==void 0&&a.decrease(c,0);let l=!1;for(;a.size()>0;){if(o=a.removeMin(),o in i)r.setEdge(o,i[o]);else{if(l)throw Error(`Input graph is not connected: `+e);l=!0}(n=e.nodeEdges(o))==null||n.forEach(s)}return r}function pn(e,t,n,r){return mn(e,t,n,r??(t=>e.outEdges(t)??[]))}function mn(e,t,n,r){if(n===void 0)return Yt(e,t,n,r);let i=!1,a=e.nodes();for(let o=0;o<a.length;o++){let s=a[o];if(s===void 0)continue;let c=r(s);for(let e=0;e<c.length;e++){let t=c[e];if(!t)continue;let r=t.v===s?t.v:t.w;n({v:r,w:r===t.v?t.w:t.v})<0&&(i=!0)}if(i)return Wt(e,t,n,r)}return Yt(e,t,n,r)}var H=Nt;function U(e,t,n,r){let i=r;for(;e.hasNode(i);)i=On(r);return n.dummy=t,e.setNode(i,n),i}function hn(e){let t=new H().setGraph(e.graph());return e.nodes().forEach(n=>t.setNode(n,e.node(n))),e.edges().forEach(n=>{let r=t.edge(n.v,n.w)||{weight:0,minlen:1},i=e.edge(n);t.setEdge(n.v,n.w,{weight:r.weight+i.weight,minlen:Math.max(r.minlen,i.minlen)})}),t}function gn(e){let t=new H({multigraph:e.isMultigraph()}).setGraph(e.graph());return e.nodes().forEach(n=>{e.children(n).length||t.setNode(n,e.node(n))}),e.edges().forEach(n=>{t.setEdge(n,e.edge(n))}),t}function _n(e,t){let n=e.x,r=e.y,i=t.x-n,a=t.y-r,o=e.width/2,s=e.height/2;if(!i&&!a)throw Error(`Not possible to find intersection inside of the rectangle`);let c,l;return Math.abs(a)*o>Math.abs(i)*s?(a<0&&(s=-s),c=s*i/a,l=s):(i<0&&(o=-o),c=o,l=o*a/i),{x:n+c,y:r+l}}function W(e){let t=K(Cn(e)+1).map(()=>[]);return e.nodes().forEach(n=>{let r=e.node(n),i=r.rank;i!==void 0&&(t[i]||(t[i]=[]),t[i][r.order]=n)}),t}function vn(e){let t=e.nodes().map(t=>{let n=e.node(t).rank;return n===void 0?Number.MAX_VALUE:n}),n=G(Math.min,t);e.nodes().forEach(t=>{let r=e.node(t);Object.hasOwn(r,`rank`)&&(r.rank-=n)})}function yn(e){let t=e.nodes().map(t=>e.node(t).rank).filter(e=>e!==void 0),n=G(Math.min,t),r=[];e.nodes().forEach(t=>{let i=e.node(t).rank-n;r[i]||(r[i]=[]),r[i].push(t)});let i=0,a=e.graph().nodeRankFactor;Array.from(r).forEach((t,n)=>{t===void 0&&n%a!==0?--i:t!==void 0&&i&&t.forEach(t=>e.node(t).rank+=i)})}function bn(e,t,n,r){let i={width:0,height:0};return arguments.length>=4&&(i.rank=n,i.order=r),U(e,`border`,i,t)}function xn(e,t=Sn){let n=[];for(let r=0;r<e.length;r+=t){let i=e.slice(r,r+t);n.push(i)}return n}var Sn=65535;function G(e,t){return t.length>Sn?e(...xn(t).map(t=>e(...t))):e(...t)}function Cn(e){let t=e.nodes().map(t=>{let n=e.node(t).rank;return n===void 0?Number.MIN_VALUE:n});return G(Math.max,t)}function wn(e,t){let n={lhs:[],rhs:[]};return e.forEach(e=>{t(e)?n.lhs.push(e):n.rhs.push(e)}),n}function Tn(e,t){let n=Date.now();try{return t()}finally{console.log(e+` time: `+(Date.now()-n)+`ms`)}}function En(e,t){return t()}var Dn=0;function On(e){return e+(``+ ++Dn)}function K(e,t,n=1){t??(t=e,e=0);let r=e=>e<t;n<0&&(r=e=>t<e);let i=[];for(let t=e;r(t);t+=n)i.push(t);return i}function kn(e,t){let n={};for(let r of t)e[r]!==void 0&&(n[r]=e[r]);return n}function An(e,t){let n;return n=typeof t==`string`?e=>e[t]:t,Object.entries(e).reduce((e,[t,r])=>(e[t]=n(r,t),e),{})}function jn(e,t){return e.reduce((e,n,r)=>(e[n]=t[r],e),{})}var Mn=`\0`;function Nn(e,t,n){if(!(e&&t&&n&&t.dummy===`edge`&&n.dummy===`edge`&&t.edgeObj&&n.edgeObj&&e[t.edgeObj.v]&&e[n.edgeObj.v]&&e[t.edgeObj.w]&&e[n.edgeObj.w]))return 0;let r=!0;t.edgeObj.w===n.edgeObj.w&&(r=!1);let i=r?e[t.edgeObj.v]?.rank??NaN:e[t.edgeObj.w]?.rank??NaN,a=Object.entries(e).find(e=>e[1].edgeObj?.v===t.edgeObj.v&&e[1].edgeObj?.w===t.edgeObj.w&&e[1].rank===i),o=Object.entries(e).find(e=>e[1].edgeObj?.v===n.edgeObj.v&&e[1].edgeObj?.w===n.edgeObj.w&&e[1].rank===i);if(!a||!o)return 0;let s=a[1].order??NaN,c=o[1].order??NaN;return isNaN(s-c)?0:s-c}var Pn=`3.1.1`,Fn=class{constructor(){kt(this,`_sentinel`);let e={};e._next=e._prev=e,this._sentinel=e}dequeue(){let e=this._sentinel,t=e._prev;if(t!==e)return In(t),t}enqueue(e){let t=this._sentinel;e._prev&&e._next&&In(e),e._next=t._next,t._next._prev=e,t._next=e,e._prev=t}toString(){let e=[],t=this._sentinel,n=t._prev;for(;n!==t;)e.push(JSON.stringify(n,Ln)),n=n._prev;return`[`+e.join(`, `)+`]`}};function In(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function Ln(e,t){if(e!==`_next`&&e!==`_prev`)return t}var Rn=Fn,zn=()=>1;function Bn(e,t){if(e.nodeCount()<=1)return[];let n=Un(e,t||zn);return Vn(n.graph,n.buckets,n.zeroIdx).flatMap(t=>e.outEdges(t.v,t.w)||[])}function Vn(e,t,n){let r=[],i=t[t.length-1],a=t[0],o;for(;e.nodeCount();){for(;o=a.dequeue();)Hn(e,t,n,o);for(;o=i.dequeue();)Hn(e,t,n,o);if(e.nodeCount()){for(let i=t.length-2;i>0;--i)if(o=t[i]?.dequeue(),o){r=r.concat(Hn(e,t,n,o,!0)||[]);break}}}return r}function Hn(e,t,n,r,i){let a=[],o=i?a:void 0;return(e.inEdges(r.v)||[]).forEach(r=>{let o=e.edge(r),s=e.node(r.v);i&&a.push({v:r.v,w:r.w}),s.out-=o,Wn(t,n,s)}),(e.outEdges(r.v)||[]).forEach(r=>{let i=e.edge(r),a=r.w,o=e.node(a);o.in-=i,Wn(t,n,o)}),e.removeNode(r.v),o}function Un(e,t){let n=new H,r=0,i=0;e.nodes().forEach(e=>{n.setNode(e,{v:e,in:0,out:0})}),e.edges().forEach(e=>{let a=n.edge(e.v,e.w)||0,o=t(e),s=a+o;n.setEdge(e.v,e.w,s);let c=n.node(e.v),l=n.node(e.w);i=Math.max(i,c.out+=o),r=Math.max(r,l.in+=o)});let a=Gn(i+r+3).map(()=>new Rn),o=r+1;return n.nodes().forEach(e=>{Wn(a,o,n.node(e))}),{graph:n,buckets:a,zeroIdx:o}}function Wn(e,t,n){var r,i,a;n.out?n.in?(a=e[n.out-n.in+t])==null||a.enqueue(n):(i=e[e.length-1])==null||i.enqueue(n):(r=e[0])==null||r.enqueue(n)}function Gn(e){let t=[];for(let n=0;n<e;n++)t.push(n);return t}function Kn(e,t){(e.graph().acyclicer===`greedy`?Bn(e,n(e)):qn(e,t??null)).forEach(t=>{let n=e.edge(t);e.removeEdge(t),n.forwardName=t.name,n.reversed=!0,e.setEdge(t.w,t.v,n,On(`rev`))});function n(e){return t=>e.edge(t).weight}}function qn(e,t){let n=[],r={},i={};function a(t){Object.hasOwn(i,t)||(i[t]=!0,r[t]=!0,e.outEdges(t).forEach(e=>{Object.hasOwn(r,e.w)?n.push(e):a(e.w)}),delete r[t])}function o(a){var s;Object.hasOwn(i,a)||(i[a]=!0,r[a]=!0,(s=e.outEdges(a))==null||s.forEach(i=>{Object.hasOwn(r,i.w)||t.node(a)?.rank>t.node(i.w)?.rank&&Yn(e,i.w,i)?n.push(i):o(i.w)}),delete r[a])}let s=a;return t&&typeof t.node==`function`&&(s=o),e.sources().forEach(s),e.nodes().forEach(s),n}function Jn(e){e.edges().forEach(t=>{let n=e.edge(t);if(n.reversed){e.removeEdge(t);let r=n.forwardName;delete n.reversed,delete n.forwardName,e.setEdge(t.w,t.v,n,r)}})}function Yn(e,t,n){let r=new Set;function i(t){if(e.sources().includes(t))return!0;r.add(t);for(let a of e.inEdges(t)??[])if((a.v!==n.v||a.w!==n.w)&&!r.has(a.v)&&i(a.v))return!0;return!1}return i(t)}function Xn(e){e.graph().dummyChains=[],e.edges().forEach(t=>Zn(e,t))}function Zn(e,t){let n=t.v,r=e.node(n).rank,i=t.w,a=e.node(i).rank,o=t.name,s=e.edge(t),c=s.labelRank;if(a===r+1)return;e.removeEdge(t);let l,u,d=0;for(++r;r<a;++d,++r)s.points=[],u={width:0,height:0,edgeLabel:s,edgeObj:t,rank:r},l=U(e,`edge`,u,`_d`),r===c&&(u.width=s.width,u.height=s.height,u.dummy=`edge-label`,u.labelpos=s.labelpos),e.setEdge(n,l,{weight:s.weight},o),d===0&&e.graph().dummyChains.push(l),n=l;e.setEdge(n,i,{weight:s.weight},o)}function Qn(e){e.graph().dummyChains.forEach(t=>{let n=e.node(t),r=n.edgeLabel,i;for(e.setEdge(n.edgeObj,r);n.dummy;)i=e.successors(t)[0],e.removeNode(t),r.points.push({x:n.x,y:n.y}),n.dummy===`edge-label`&&(r.x=n.x,r.y=n.y,r.width=n.width,r.height=n.height),t=i,n=e.node(t)})}function $n(e){let t={};function n(r){let i=e.node(r);if(Object.hasOwn(t,r))return i.rank;t[r]=!0;let a=e.outEdges(r),o=a?a.map(t=>t==null?1/0:n(t.w)-e.edge(t).minlen):[],s=G(Math.min,o);return s===1/0&&(s=0),i.rank=s}e.sources().forEach(n)}function q(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}var er=tr;function tr(e){let t=new H({directed:!1}),n=e.nodes();if(n.length===0)throw Error(`Graph must have at least one node`);let r=n[0],i=e.nodeCount();t.setNode(r,{});let a,o;for(;nr(t,e)<i&&(a=rr(t,e),a);)o=t.hasNode(a.v)?q(e,a):-q(e,a),ir(t,e,o);return t}function nr(e,t){function n(r){let i=t.nodeEdges(r);i&&i.forEach(i=>{let a=i.v,o=r===a?i.w:a;!e.hasNode(o)&&!q(t,i)&&(e.setNode(o,{}),e.setEdge(r,o,{}),n(o))})}return e.nodes().forEach(n),e.nodeCount()}function rr(e,t){return t.edges().reduce((n,r)=>{let i=1/0;return e.hasNode(r.v)!==e.hasNode(r.w)&&(i=q(t,r)),i<n[0]?[i,r]:n},[1/0,null])[1]}function ir(e,t,n){e.nodes().forEach(e=>t.node(e).rank+=n)}var{preorder:ar,postorder:or}=Ht,sr=J;J.initLowLimValues=dr,J.initCutValues=cr,J.calcCutValue=ur,J.leaveEdge=pr,J.enterEdge=mr,J.exchangeEdges=hr;function J(e){e=hn(e),$n(e);let t=er(e);dr(t),cr(t,e);let n,r;for(;n=pr(t);)r=mr(t,e,n),hr(t,e,n,r)}function cr(e,t){let n=or(e,e.nodes());n=n.slice(0,n.length-1),n.forEach(n=>lr(e,t,n))}function lr(e,t,n){let r=e.node(n).parent,i=e.edge(n,r);i.cutvalue=ur(e,t,n)}function ur(e,t,n){let r=e.node(n).parent,i=!0,a=t.edge(n,r),o=0;a||=(i=!1,t.edge(r,n)),o=a.weight;let s=t.nodeEdges(n);return s&&s.forEach(a=>{let s=a.v===n,c=s?a.w:a.v;if(c!==r){let r=s===i,l=t.edge(a).weight;if(o+=r?l:-l,_r(e,n,c)){let t=e.edge(n,c).cutvalue;o+=r?-t:t}}}),o}function dr(e,t){arguments.length<2&&(t=e.nodes()[0]),fr(e,{},1,t)}function fr(e,t,n,r,i){let a=n,o=e.node(r);t[r]=!0;let s=e.neighbors(r);return s&&s.forEach(i=>{Object.hasOwn(t,i)||(n=fr(e,t,n,i,r))}),o.low=a,o.lim=n++,i?o.parent=i:delete o.parent,n}function pr(e){return e.edges().find(t=>e.edge(t).cutvalue<0)}function mr(e,t,n){let r=n.v,i=n.w;t.hasEdge(r,i)||(r=n.w,i=n.v);let a=e.node(r),o=e.node(i),s=a,c=!1;return a.lim>o.lim&&(s=o,c=!0),t.edges().filter(t=>c===vr(e,e.node(t.v),s)&&c!==vr(e,e.node(t.w),s)).reduce((e,n)=>q(t,n)<q(t,e)?n:e)}function hr(e,t,n,r){let i=n.v,a=n.w;e.removeEdge(i,a),e.setEdge(r.v,r.w,{}),dr(e),cr(e,t),gr(e,t)}function gr(e,t){let n=e.nodes().find(t=>!e.node(t).parent);if(!n)return;let r=ar(e,[n]);r=r.slice(1),r.forEach(n=>{let r=e.node(n).parent,i=t.edge(n,r),a=!1;i||(i=t.edge(r,n),a=!0),t.node(n).rank=t.node(r).rank+(a?i.minlen:-i.minlen)})}function _r(e,t,n){return e.hasEdge(t,n)}function vr(e,t,n){return n.low<=t.lim&&t.lim<=n.lim}var yr=br;function br(e){let t=e.graph().ranker;if(typeof t==`function`)return t(e);switch(t){case`network-simplex`:Cr(e);break;case`tight-tree`:Sr(e);break;case`longest-path`:xr(e);break;case`none`:break;default:Cr(e)}}var xr=$n;function Sr(e){$n(e),er(e)}function Cr(e){sr(e)}var wr=Tr;function Tr(e){let t=Dr(e),n=e.graph();Array.isArray(n.dummyChains)&&n.dummyChains.forEach(n=>{let r=e.node(n),i=r.edgeObj,a=Er(e,t,i.v,i.w),o=a.path,s=a.lca,c=0,l=o[c],u=!0;for(;n!==i.w;){if(r=e.node(n),u){for(;(l=o[c])!==s&&e.node(l).maxRank<r.rank;)c++;l===s&&(u=!1)}if(!u){for(;c<o.length-1&&e.node(o[c+1]).minRank<=r.rank;)c++;l=o[c]}l!==void 0&&e.setParent(n,l),n=e.successors(n)[0]}})}function Er(e,t,n,r){let i=[],a=[],o=Math.min(t[n].low,t[r].low),s=Math.max(t[n].lim,t[r].lim),c;c=n;do c=e.parent(c),i.push(c);while(c&&(t[c].low>o||s>t[c].lim));let l=c,u=r;for(;(u=e.parent(u))!==l;)a.push(u);return{path:i.concat(a.reverse()),lca:l}}function Dr(e){let t={},n=0;function r(i){let a=n;e.children(i).forEach(r),t[i]={low:a,lim:n++}}return e.children(Mn).forEach(r),t}function Or(e){let t=U(e,`root`,{},`_root`),n=Ar(e),r=Object.values(n),i=G(Math.max,r)-1,a=2*i+1;e.graph().nestingRoot=t,e.edges().forEach(t=>e.edge(t).minlen*=a);let o=jr(e)+1;e.children(Mn).forEach(r=>{kr(e,t,a,o,i,n,r)}),e.graph().nodeRankFactor=a}function kr(e,t,n,r,i,a,o){let s=e.children(o);if(!s.length){o!==t&&e.setEdge(t,o,{weight:0,minlen:n});return}let c=bn(e,`_bt`),l=bn(e,`_bb`),u=e.node(o);e.setParent(c,o),u.borderTop=c,e.setParent(l,o),u.borderBottom=l,s.forEach(s=>{kr(e,t,n,r,i,a,s);let u=e.node(s),d=u.borderTop?u.borderTop:s,f=u.borderBottom?u.borderBottom:s,p=u.borderTop?r:2*r,m=d===f?i-(a[o]??0)+1:1;e.setEdge(c,d,{weight:p,minlen:m,nestingEdge:!0}),e.setEdge(f,l,{weight:p,minlen:m,nestingEdge:!0})}),e.parent(o)||e.setEdge(t,c,{weight:0,minlen:i+(a[o]??0)})}function Ar(e){let t={};function n(r,i){let a=e.children(r);a&&a.length&&a.forEach(e=>n(e,i+1)),t[r]=i}return e.children(Mn).forEach(e=>n(e,1)),t}function jr(e){return e.edges().reduce((t,n)=>t+e.edge(n).weight,0)}function Mr(e){let t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,e.edges().forEach(t=>{e.edge(t).nestingEdge&&e.removeEdge(t)})}var Nr=Pr;function Pr(e){function t(n){let r=e.children(n),i=e.node(n);if(r.length&&r.forEach(t),i&&Object.hasOwn(i,`minRank`)){i.borderLeft=[],i.borderRight=[];for(let t=i.minRank,r=i.maxRank+1;t<r;++t)Fr(e,`borderLeft`,`_bl`,n,i,t),Fr(e,`borderRight`,`_br`,n,i,t)}}e.children(Mn).forEach(t)}function Fr(e,t,n,r,i,a){let o={width:0,height:0,rank:a,borderType:t},s=i[t][a-1],c=U(e,`border`,o,n);i[t][a]=c,e.setParent(c,r),s&&e.setEdge(s,c,{weight:1})}function Ir(e){let t=e.graph().rankdir?.toLowerCase();(t===`lr`||t===`rl`)&&Rr(e)}function Lr(e){let t=e.graph().rankdir?.toLowerCase();(t===`bt`||t===`rl`)&&Br(e),(t===`lr`||t===`rl`)&&(Hr(e),Rr(e))}function Rr(e){e.nodes().forEach(t=>zr(e.node(t))),e.edges().forEach(t=>zr(e.edge(t)))}function zr(e){let t=e.width;e.width=e.height,e.height=t}function Br(e){e.nodes().forEach(t=>Vr(e.node(t))),e.edges().forEach(t=>{var n;let r=e.edge(t);(n=r.points)==null||n.forEach(Vr),Object.hasOwn(r,`y`)&&Vr(r)})}function Vr(e){e.y=-e.y}function Hr(e){e.nodes().forEach(t=>Ur(e.node(t))),e.edges().forEach(t=>{var n;let r=e.edge(t);(n=r.points)==null||n.forEach(Ur),Object.hasOwn(r,`x`)&&Ur(r)})}function Ur(e){let t=e.x;e.x=e.y,e.y=t}function Wr(e,t=null){let n={},r=e.nodes().filter(t=>!e.children(t).length),i=r.map(t=>e.node(t).rank),a=K(G(Math.max,i)+1).map(()=>[]);function o(t){if(n[t])return;n[t]=!0;let r=e.node(t);a[r.rank].push(t);let i=e.successors(t);i&&[...i].sort((e,t)=>s(e,t)).forEach(o)}r.sort((t,n)=>e.node(t).rank-e.node(n).rank).forEach(o);function s(n,r){return Nn(t,e.node(n),e.node(r))}return a}function Gr(e,t){let n=0;for(let r=1;r<t.length;++r)n+=Kr(e,t[r-1],t[r]);return n}function Kr(e,t,n){let r=jn(n,n.map((e,t)=>t)),i=t.flatMap(t=>{let n=e.outEdges(t);return n?n.map(t=>({pos:r[t.w],weight:e.edge(t).weight})).sort((e,t)=>e.pos-t.pos):[]}),a=1;for(;a<n.length;)a<<=1;let o=2*a-1;--a;let s=Array(o).fill(0),c=0;return i.forEach(e=>{let t=e.pos+a;s[t]+=e.weight;let n=0;for(;t>0;)t%2&&(n+=s[t+1]),t=t-1>>1,s[t]+=e.weight;c+=e.weight*n}),c}function qr(e,t=[]){return t.map(t=>{let n=e.inEdges(t);if(!n||!n.length)return{v:t};{let r=n.reduce((t,n)=>{let r=e.edge(n),i=e.node(n.v);return{sum:t.sum+r.weight*i.order,weight:t.weight+r.weight}},{sum:0,weight:0});return{v:t,barycenter:r.sum/r.weight,weight:r.weight}}})}function Jr(e,t){let n={};return e.forEach((e,t)=>{let r={indegree:0,in:[],out:[],vs:[e.v],i:t};e.barycenter!==void 0&&(r.barycenter=e.barycenter,r.weight=e.weight),n[e.v]=r}),t.edges().forEach(e=>{let t=n[e.v],r=n[e.w];t!==void 0&&r!==void 0&&(r.indegree++,t.out.push(r))}),Yr(Object.values(n).filter(e=>!e.indegree))}function Yr(e){let t=[];function n(e){return t=>{t.merged||(t.barycenter===void 0||e.barycenter===void 0||t.barycenter>=e.barycenter)&&Xr(e,t)}}function r(t){return n=>{n.in.push(t),--n.indegree===0&&e.push(n)}}for(;e.length;){let i=e.pop();t.push(i),i.in.reverse().forEach(n(i)),i.out.forEach(r(i))}return t.filter(e=>!e.merged).map(e=>kn(e,[`vs`,`i`,`barycenter`,`weight`]))}function Xr(e,t){let n=0,r=0;e.weight&&(n+=e.barycenter*e.weight,r+=e.weight),t.weight&&(n+=t.barycenter*t.weight,r+=t.weight),e.vs=t.vs.concat(e.vs),e.barycenter=n/r,e.weight=r,e.i=Math.min(t.i,e.i),t.merged=!0}function Zr(e,t,n,r,i){let a={},o=null,s=null,c=i;typeof t==`boolean`?(c=t,a={}):t&&(a=t,o=n??null,s=r??null);let l=wn(e,e=>Object.hasOwn(e,`barycenter`)),u=l.lhs,d=l.rhs.sort((e,t)=>t.i-e.i),f=[],p=0,m=0,h=0;u.sort($r(s,o,!!c));for(let[e,t]of Object.entries(a)){let n=u.findIndex(t=>t.vs[0]===e);u.splice(n+1,0,t)}h=Qr(f,d,h),u.forEach(e=>{h+=e.vs.length,f.push(e.vs),p+=e.barycenter*e.weight,m+=e.weight,h=Qr(f,d,h)});let g={vs:f.flat(1)};return m&&(g.barycenter=p/m,g.weight=m),g}function Qr(e,t,n){let r;for(;t.length&&(r=t[t.length-1]).i<=n;)t.pop(),e.push(r.vs),n++;return n}function $r(e,t,n){return(r,i)=>{if(r.barycenter<i.barycenter)return-1;if(r.barycenter>i.barycenter)return 1;if(e&&(typeof r.vs[0]==`string`||typeof i.vs[0]==`string`)){let n=Nn(t,e.node(r.vs[0]),e.node(i.vs[0]));if(n!==0)return n}return n?i.i-r.i:r.i-i.i}}function ei(e,t,n,r,i){var a,o;let s=null,c=i;typeof r==`boolean`?(c=r,s=null):r!==void 0&&(s=r);let l=e.children(t),u=e.node(t),d=u?u.borderLeft:void 0,f=u?u.borderRight:void 0,p={};d&&(l=l.filter(e=>e!==d&&e!==f));let m=qr(e,l);m.forEach(t=>{if(e.children(t.v).length){let{result:r}=ei(e,t.v,n,s,c);p[t.v]=r,Object.hasOwn(r,`barycenter`)&&ni(t,r)}});let h=Jr(m,n);ti(h,p);let g={},_=!1;for(let t=0;t<h.length;t++)for(let n=t+1;n<h.length;n++)if(h[t]&&h[n]&&(a=h[t])!=null&&a.barycenter&&(o=h[n])!=null&&o.barycenter&&h[t]?.barycenter===h[n].barycenter){let r=h[t]?.vs[0]??``,i=h[n]?.vs[0]??``,a=e.node(r),o=e.node(i);if(a.dummy===`edge`&&o.dummy===`edge`&&a.edgeObj?.v===o.edgeObj?.v&&a.edgeObj?.w===o.edgeObj?.w){if(a.edgeLabel.reversed){g[i]=h[t],h.splice(t,1),t--;break}g[r]=h[n],h.splice(n,1),n--}else _=!0}let v=Zr(h,g,s,e,c);if(d&&f){v.vs=[d,v.vs,f].flat(1);let t=e.predecessors(d);if(t&&t.length){let n=e.node(t[0]),r=e.predecessors(f),i=e.node(r[0]);Object.hasOwn(v,`barycenter`)||(v.barycenter=0,v.weight=0),v.barycenter=(v.barycenter*v.weight+n.order+i.order)/(v.weight+2),v.weight+=2}}return Object.defineProperty(v,"result",{value:v,enumerable:!1,configurable:!0,writable:!0}),Object.defineProperty(v,"usedBias",{value:_,enumerable:!1,configurable:!0,writable:!0}),v}function ti(e,t){e.forEach(e=>{e.vs=e.vs.flatMap(e=>t[e]?t[e].vs:e)})}function ni(e,t){e.barycenter===void 0?(e.barycenter=t.barycenter,e.weight=t.weight):(e.barycenter=(e.barycenter*e.weight+t.barycenter*t.weight)/(e.weight+t.weight),e.weight+=t.weight)}function ri(e,t,n,r){r||=e.nodes();let i=ii(e),a=new H({compound:!0}).setGraph({root:i}).setDefaultNodeLabel(t=>e.node(t));return r.forEach(r=>{let o=e.node(r),s=e.parent(r);if(o.rank===t||o.minRank<=t&&t<=o.maxRank){a.setNode(r),a.setParent(r,s||i);let c=e[n](r);c&&c.forEach(t=>{let n=t.v===r?t.w:t.v,i=a.edge(n,r),o=i===void 0?0:i.weight;a.setEdge(n,r,{weight:e.edge(t).weight+o})}),Object.hasOwn(o,`minRank`)&&a.setNode(r,{borderLeft:o.borderLeft[t],borderRight:o.borderRight[t]})}}),a}function ii(e){let t;for(;e.hasNode(t=On(`_root`)););return t}function ai(e,t,n){let r={},i;n.forEach(n=>{let a=e.parent(n),o,s;for(;a;){if(o=e.parent(a),o?(s=r[o],r[o]=a):(s=i,i=a),s&&s!==a){t.setEdge(s,a);return}a=o}})}function oi(e,t={},n=null){if(typeof t.customOrder==`function`){t.customOrder(e,oi);return}let r=Cn(e),i=si(e,K(1,r+1),`inEdges`),a=si(e,K(r-1,-1,-1),`outEdges`),o=Wr(e,n);if(li(e,o),t.disableOptimalOrderHeuristic)return;let s=1/0,c,l=t.constraints||[];for(let t=0,r=0;r<4;++t,++r){ci(t%2?i:a,t%4>=2,l,n),o=W(e);let u=Gr(e,o);u<s?(r=0,c=Object.assign({},o),s=u):u===s&&(c=structuredClone(o))}li(e,c)}function si(e,t,n){let r=new Map,i=(e,t)=>{r.has(e)||r.set(e,[]),r.get(e).push(t)};for(let t of e.nodes()){let n=e.node(t);if(typeof n.rank==`number`&&i(n.rank,t),typeof n.minRank==`number`&&typeof n.maxRank==`number`)for(let e=n.minRank;e<=n.maxRank;e++)e!==n.rank&&i(e,t)}return t.map(function(t){return ri(e,t,n,r.get(t)||[])})}function ci(e,t,n,r){let i=!0,a=new H;e.forEach(function(e){n.forEach(e=>a.setEdge(e.left,e.right));let o=e.graph().root,{result:s,usedBias:c}=ei(e,o,a,r,i);t&&c&&(i=!i),s.vs.forEach((t,n)=>e.node(t).order=n),ai(e,a,s.vs)})}function li(e,t){Object.values(t).forEach(t=>t.forEach((t,n)=>e.node(t).order=n))}function ui(e,t){let n={};function r(t,r){let i=0,a=0,o=t.length,s=r[r.length-1];return r.forEach((t,c)=>{let l=fi(e,t),u=l?e.node(l).order:o;(l||t===s)&&(r.slice(a,c+1).forEach(t=>{let r=e.predecessors(t);r&&r.forEach(r=>{let a=e.node(r),o=a.order;(o<i||u<o)&&!(a.dummy&&e.node(t).dummy)&&pi(n,r,t)})}),a=c+1,i=u)}),r}return t.length&&t.reduce(r),n}function di(e,t){let n={};function r(t,r,i,a,o){K(r,i).forEach(r=>{let i=t[r];if(i!==void 0&&e.node(i).dummy){let t=e.predecessors(i);t&&t.forEach(t=>{if(t===void 0)return;let r=e.node(t);r.dummy&&(r.order<a||r.order>o)&&pi(n,t,i)})}})}function i(t,n){let i=-1,a=-1,o=0;return n.forEach((s,c)=>{if(e.node(s).dummy===`border`){let t=e.predecessors(s);if(t&&t.length){let s=t[0];if(s===void 0)return;a=e.node(s).order,r(n,o,c,i,a),o=c,i=a}}r(n,o,n.length,a,t.length)}),n}return t.length&&t.reduce(i),n}function fi(e,t){if(e.node(t).dummy){let n=e.predecessors(t);if(n)return n.find(t=>e.node(t).dummy)}}function pi(e,t,n){if(t>n){let e=t;t=n,n=e}let r=e[t];r||(e[t]=r={}),r[n]=!0}function mi(e,t,n){if(t>n){let e=t;t=n,n=e}let r=e[t];return r!==void 0&&Object.hasOwn(r,n)}function hi(e,t,n,r,i){let a={},o={},s={};return t.forEach(e=>{e.forEach((e,t)=>{a[e]=e,o[e]=e,s[e]=t})}),t.forEach(t=>{let c=-1,l=-1,u=!1,d=t,f=t.findIndex(t=>i?.includes(t)||wi(t,e,i));f>0&&(d=[t[f],...t.slice(0,f),...t.slice(f+1)],u=!0),d.forEach(t=>{let d=r(t);if(d&&d.length){i!=null&&i.includes(t)&&(d=d.filter(t=>wi(t,e,i)));let r=d.sort((e,t)=>{let n=s[e],r=s[t];return(n===void 0?0:n)-(r===void 0?0:r)}),f=(r.length-1)/2;for(let e=Math.floor(f),i=Math.ceil(f);e<=i;++e){let i=r[e];if(i===void 0)continue;let d=s[i];if(d!==void 0&&o[t]===t&&c<d&&s[i]!==l&&!mi(n,t,i)){let e=a[i];e!==void 0&&(o[i]=t,o[t]=a[t]=e,c=d,u&&=(c=-1,l=s[i]??-1,!1))}}}})}),{root:a,align:o}}function gi(e,t,n,r,i=!1){let a={},o=_i(e,t,n,i),s=i?`borderLeft`:`borderRight`;function c(e,t){let n=o.nodes().slice(),r={},i=n.pop();for(;i;){if(r[i])e(i);else{r[i]=!0,n.push(i);for(let e of t(i))n.push(e)}i=n.pop()}}function l(e){let t=o.inEdges(e);t?a[e]=t.reduce((e,t)=>{let n=a[t.v]??0,r=o.edge(t);return Math.max(e,n+(r===void 0?0:r))},0):a[e]=0}function u(t){let n=o.outEdges(t),r=1/0;n&&(r=n.reduce((e,t)=>{let n=a[t.w],r=o.edge(t);return Math.min(e,(n===void 0?0:n)-(r===void 0?0:r))},1/0));let i=e.node(t);r!==1/0&&i.borderType!==s&&(a[t]=Math.max(a[t]===void 0?0:a[t],r))}function d(e){return o.predecessors(e)||[]}function f(e){return o.successors(e)||[]}return c(l,d),c(u,f),Object.keys(r).forEach(e=>{let t=n[e];t!==void 0&&(a[e]=a[t]??0)}),a}function _i(e,t,n,r){let i=new H,a=e.graph(),o=Si(a.nodesep,a.edgesep,r);return t.forEach(t=>{let r;t.forEach(t=>{let a=n[t];if(a!==void 0){if(i.setNode(a),r!==void 0){let s=n[r];if(s!==void 0){let n=i.edge(s,a);i.setEdge(s,a,Math.max(o(e,t,r),n||0))}}r=t}})}),i}function vi(e,t){return Object.values(t).reduce((t,n)=>{let r=-1/0,i=1/0;Object.entries(n).forEach(([t,n])=>{let a=Ci(e,t)/2;r=Math.max(n+a,r),i=Math.min(n-a,i)});let a=r-i;return a<t[0]&&(t=[a,n]),t},[1/0,null])[1]}function yi(e,t){let n=Object.values(t),r=G(Math.min,n),i=G(Math.max,n);[`u`,`d`].forEach(n=>{[`l`,`r`].forEach(a=>{let o=n+a,s=e[o];if(!s||s===t)return;let c=Object.values(s),l=r-G(Math.min,c);a!==`l`&&(l=i-G(Math.max,c)),l&&(e[o]=An(s,e=>e+l))})})}function bi(e,t=void 0){let n=e.ul;return n?An(n,(n,r)=>{if(t){let n=e[t.toLowerCase()];if(n&&n[r]!==void 0)return n[r]}let i=Object.values(e).map(e=>{let t=e[r];return t===void 0?0:t}).sort((e,t)=>e-t);return((i[1]??0)+(i[2]??0))/2}):{}}function xi(e,t){let n=W(e),r=Object.assign(ui(e,n),di(e,n)),i={},a;return[`u`,`d`].forEach(o=>{a=o===`u`?n:Object.values(n).reverse(),[`l`,`r`].forEach(n=>{n===`r`&&(a=a.map(e=>Object.values(e).reverse()));let s=hi(e,a,r,t=>(o===`u`?e.predecessors(t):e.successors(t))||[],t),c=gi(e,a,s.root,s.align,n===`r`);n===`r`&&(c=An(c,e=>-e)),i[o+n]=c})}),yi(i,vi(e,i)),bi(i,e.graph().align)}function Si(e,t,n){return(r,i,a)=>{let o=r.node(i),s=r.node(a),c=0,l;if(c+=o.width/2,Object.hasOwn(o,`labelpos`))switch(o.labelpos.toLowerCase()){case`l`:l=-o.width/2;break;case`r`:l=o.width/2}if(l&&(c+=n?l:-l),l=void 0,c+=(o.dummy?t:e)/2,c+=(s.dummy?t:e)/2,c+=s.width/2,Object.hasOwn(s,`labelpos`))switch(s.labelpos.toLowerCase()){case`l`:l=s.width/2;break;case`r`:l=-s.width/2}return l&&(c+=n?l:-l),c}}function Ci(e,t){return e.node(t).width}function wi(e,t,n){if(!n)return!1;let r=t.node(e)?.edgeObj;if(!r||t.node(e).edgeLabel.reversed)return!1;let i=n.indexOf(r?.v),a=n.indexOf(r?.w);return i!==-1&&a!==-1&&i===(a+1)%n.length||i===(a-1)%n.length}function Ti(e,t){e=gn(e),Ei(e),Object.entries(xi(e,t)).forEach(([t,n])=>e.node(t).x=n)}function Ei(e){let t=W(e),n=e.graph(),r=n.ranksep,i=n.rankalign,a=0;t.forEach(t=>{let n=t.reduce((t,n)=>{let r=e.node(n).height??0;return t>r?t:r},0);t.forEach(t=>{let r=e.node(t);r.y=i===`top`?a+r.height/2:i===`bottom`?a+n-r.height/2:a+n/2}),a+=n+r})}var Di=new WeakMap;function Oi(e,t={}){return Ai(e,En,t),e}function ki(e,t,n){let r=t;for(;r!==void 0;){let t=e.parent(r);if(t===n)return r;r=t}}function Ai(e,t,n){let r=e.nodes().filter(t=>e.children(t).length),i={};r.forEach(r=>{let a=e.node(r);if(a&&a.rankdir){let o=new H({multigraph:!0,compound:!0});o.setGraph({rankdir:a.rankdir});let s=e.children(r);s.forEach(t=>{let n={...e.node(t)};o.setNode(t,n);let i=e.parent(t);i&&i!==r&&s.includes(i)&&o.setParent(t,i)});let c=new Set;e.edges().forEach(t=>{let n=ki(e,t.v,r),i=ki(e,t.w,r);if(n&&i&&n!==i){let r=`${n}\0${i}`;c.has(r)||(c.add(r),o.setEdge(n,i,{...e.edge(t)}))}}),Ai(o,t,n);let l=Vi(o);ji(l,t,n,null),Mi(o,l);let u=1/0,d=1/0,f=-1/0,p=-1/0;o.nodes().forEach(e=>{if(e===r)return;let t=o.node(e);t&&typeof t.x==`number`&&typeof t.y==`number`&&typeof t.width==`number`&&typeof t.height==`number`&&(u=Math.min(u,t.x-t.width/2),f=Math.max(f,t.x+t.width/2),d=Math.min(d,t.y-t.height/2),p=Math.max(p,t.y+t.height/2))}),(!isFinite(u)||!isFinite(d)||!isFinite(f)||!isFinite(p))&&(u=d=0,f=p=0);let m=f-u,h=p-d;i[r]={minX:u,minY:d,maxX:f,maxY:p,width:m,height:h,offsetX:u,offsetY:d},a._dagreClusterSubgraph=o}});let a=[],o=t=>{let n=[],r=(e.children(t)||[]).filter(e=>e!==t);for(;r.length>0;){let t=r.shift();n.push(t),(e.children(t)||[]).filter(e=>e!==t).forEach(e=>r.push(e))}return n},s=new Map;r.forEach(t=>{let n=e.node(t);n&&n.rankdir&&i[t]&&s.set(t,(e.children(t)||[]).filter(e=>e!==t))});let c=new Set([...s.values()].flat()),l=new Map;s.forEach((e,t)=>{c.has(t)||l.set(t,o(t))});let u=new Set([...l.values()].flat()),d=e=>{for(let[t,n]of l)if(n.includes(e))return t;return e},f=[];e.edges().forEach(t=>{(u.has(t.v)||u.has(t.w))&&f.push({edge:t,label:e.edge(t)})});let p=new Map;u.forEach(t=>{let n=e.parent(t);p.set(t,typeof n==`string`?n:void 0)}),l.forEach((t,n)=>{let r=e.node(n),o=[];t.forEach(t=>{let n=e.node(t);n&&(o.push({id:t,node:n,parent:p.get(t)}),e.removeNode(t))});let s=f.filter(({edge:e})=>t.includes(e.v)||t.includes(e.w)),c=i[n];r&&(a.push({clusterId:n,subgraph:r._dagreClusterSubgraph,bounds:c,children:t,removedNodes:o,removedEdges:s}),r.width=c.width,r.height=c.height)});let m=new Set;f.forEach(({edge:t,label:n})=>{let r=d(t.v),i=d(t.w);if(r!==i&&e.hasNode(r)&&e.hasNode(i)){let t=`${r}\0${i}`;m.has(t)||(m.add(t),e.setEdge(r,i,{...n,width:0,height:0}))}});let h=Vi(e),g=ji(h,t,n,Di.get(e)??null);Di.set(e,g),Mi(e,h),m.forEach(t=>{let n=t.indexOf(`\0`),r=t.slice(0,n),i=t.slice(n+1);e.hasEdge(r,i)&&e.removeEdge(r,i)}),a.forEach(({clusterId:t,subgraph:n,bounds:r,removedNodes:i,removedEdges:a})=>{let o=e.node(t),s=o?.x??0,c=o?.y??0,l=(r.minX+r.maxX)/2,u=(r.minY+r.maxY)/2;i.forEach(({id:t,node:n,parent:r})=>{e.setNode(t,n),r!==void 0&&e.setParent(t,r)}),a.forEach(({edge:t,label:n})=>{e.setEdge(t,n)}),n.nodes().forEach(r=>{if(r===t)return;let i=n.node(r),a=e.node(r);a&&i&&typeof i.x==`number`&&typeof i.y==`number`&&(a.x=s+(i.x-l),a.y=c+(i.y-u))}),delete o._dagreClusterSubgraph}),r.forEach(t=>{let n=e.node(t),r=i[t];if(n&&n.rankdir&&n._dagreClusterSubgraph&&r){let i=n._dagreClusterSubgraph,a=n.x??0,o=n.y??0,s=(r.minX+r.maxX)/2,c=(r.minY+r.maxY)/2;i.nodes().forEach(n=>{if(n===t)return;let r=i.node(n),l=e.node(n);if(l&&r&&typeof r.x==`number`&&typeof r.y==`number`){let e=r.x-s,t=r.y-c;l.x=a+e,l.y=o+t}}),delete n._dagreClusterSubgraph}})}function ji(e,t,n,r=null){var i,a;let o=n?.useDynamic!==!1,s=o&&(i=r?.graph)!=null?i:null,c=o&&(a=r?.rawNodes)!=null?a:null;t(` makeSpaceForEdgeLabels`,()=>Hi(e)),t(` removeSelfEdges`,()=>Zi(e)),t(` acyclic`,()=>Kn(e,s)),t(` nestingGraph.run`,()=>Or(e)),t(` rank`,()=>yr(gn(e))),t(` injectEdgeLabelProxies`,()=>Ui(e)),t(` removeEmptyRanks`,()=>yn(e)),t(` nestingGraph.cleanup`,()=>Mr(e)),t(` normalizeRanks`,()=>vn(e)),t(` assignRankMinMax`,()=>Wi(e)),t(` removeEdgeLabelProxies`,()=>Gi(e)),t(` normalize.run`,()=>Xn(e)),t(` parentDummyChains`,()=>wr(e)),t(` addBorderSegments`,()=>Nr(e)),t(` order`,()=>oi(e,n,c)),t(` insertSelfEdges`,()=>Qi(e)),t(` adjustCoordinateSystem`,()=>Ir(e)),t(` position`,()=>Ti(e,n.corePath)),t(` positionSelfEdges`,()=>$i(e));let l=JSON.parse(JSON.stringify(e._nodes));return t(` removeBorderNodes`,()=>Xi(e)),t(` normalize.undo`,()=>Qn(e)),t(` fixupEdgeLabelCoords`,()=>Ji(e)),t(` undoCoordinateSystem`,()=>Lr(e)),t(` translateGraph`,()=>Ki(e)),t(` assignNodeIntersects`,()=>qi(e)),t(` reversePoints`,()=>Yi(e)),t(` acyclic.undo`,()=>Jn(e)),{graph:e,rawNodes:l}}function Mi(e,t){e.nodes().forEach(n=>{let r=e.node(n),i=t.node(n);r&&(r.x=i.x,r.y=i.y,r.order=i.order,r.rank=i.rank,t.children(n).length&&(r.width=i.width,r.height=i.height))}),e.edges().forEach(n=>{let r=e.edge(n),i=t.edge(n);r.points=i.points,Object.hasOwn(i,`x`)&&(r.x=i.x,r.y=i.y)}),e.graph().width=t.graph().width,e.graph().height=t.graph().height}var Ni=[`nodesep`,`edgesep`,`ranksep`,`marginx`,`marginy`],Pi={ranksep:50,edgesep:20,nodesep:50,rankdir:`TB`,rankalign:`center`},Fi=[`acyclicer`,`ranker`,`rankdir`,`align`,`rankalign`],Ii=[`width`,`height`,`rank`],Li={width:0,height:0},Ri=[`minlen`,`weight`,`width`,`height`,`labeloffset`],zi={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:`r`},Bi=[`labelpos`];function Vi(e){let t=new H({multigraph:!0,compound:!0}),n=ta(e.graph());return t.setGraph(Object.assign({},Pi,ea(n,Ni),kn(n,Fi))),e.nodes().forEach(n=>{let r=ea(ta(e.node(n)),Ii);Object.keys(Li).forEach(e=>{r[e]===void 0&&(r[e]=Li[e])}),t.setNode(n,r);let i=e.parent(n);i!==void 0&&t.setParent(n,i)}),e.edges().forEach(n=>{let r=ta(e.edge(n));t.setEdge(n,Object.assign({},zi,ea(r,Ri),kn(r,Bi)))}),t}function Hi(e){let t=e.graph();t.ranksep/=2,e.edges().forEach(n=>{let r=e.edge(n);r.minlen*=2,(r.labelpos??`r`).toLowerCase()!==`c`&&(t.rankdir===`TB`||t.rankdir===`BT`?r.width+=r.labeloffset:r.height+=r.labeloffset)})}function Ui(e){e.edges().forEach(t=>{let n=e.edge(t);if(n.width&&n.height){let n=e.node(t.v);U(e,`edge-proxy`,{rank:(e.node(t.w).rank-n.rank)/2+n.rank,e:t},`_ep`)}})}function Wi(e){let t=0;e.nodes().forEach(n=>{let r=e.node(n);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,t=Math.max(t,r.maxRank))}),e.graph().maxRank=t}function Gi(e){e.nodes().forEach(t=>{let n=e.node(t);if(n.dummy===`edge-proxy`){let r=n;e.edge(r.e).labelRank=n.rank,e.removeNode(t)}})}function Ki(e){let t=1/0,n=0,r=1/0,i=0,a=e.graph(),o=a.marginx||0,s=a.marginy||0;function c(e){let a=e.x,o=e.y,s=e.width,c=e.height;t=Math.min(t,a-s/2),n=Math.max(n,a+s/2),r=Math.min(r,o-c/2),i=Math.max(i,o+c/2)}e.nodes().forEach(t=>c(e.node(t))),e.edges().forEach(t=>{let n=e.edge(t);Object.hasOwn(n,`x`)&&c(n)}),t-=o,r-=s,e.nodes().forEach(n=>{let i=e.node(n);i.x-=t,i.y-=r}),e.edges().forEach(n=>{let i=e.edge(n);i.points.forEach(e=>{e.x-=t,e.y-=r}),Object.hasOwn(i,`x`)&&(i.x-=t),Object.hasOwn(i,`y`)&&(i.y-=r)}),a.width=n-t+o,a.height=i-r+s}function qi(e){e.edges().forEach(t=>{if(t.v===t.w)return;let n=e.edge(t),r=e.node(t.v),i=e.node(t.w),a,o;n.points?(a=n.points[0],o=n.points[n.points.length-1]):(n.points=[],a=i,o=r),n.points.unshift(_n(r,a)),n.points.push(_n(i,o))})}function Ji(e){e.edges().forEach(t=>{let n=e.edge(t);if(Object.hasOwn(n,`x`))switch((n.labelpos===`l`||n.labelpos===`r`)&&(n.width-=n.labeloffset),n.labelpos){case`l`:n.x-=n.width/2+n.labeloffset;break;case`r`:n.x+=n.width/2+n.labeloffset}})}function Yi(e){e.edges().forEach(t=>{let n=e.edge(t);n.reversed&&n.points.reverse()})}function Xi(e){e.nodes().forEach(t=>{if(e.children(t).length){let n=e.node(t),r=e.node(n.borderTop),i=e.node(n.borderBottom),a=e.node(n.borderLeft[n.borderLeft.length-1]),o=e.node(n.borderRight[n.borderRight.length-1]);n.width=Math.abs(o.x-a.x),n.height=Math.abs(i.y-r.y),n.x=a.x+n.width/2,n.y=r.y+n.height/2}}),e.nodes().forEach(t=>{e.node(t).dummy===`border`&&e.removeNode(t)})}function Zi(e){e.edges().forEach(t=>{if(t.v===t.w){let n=e.node(t.v);n.selfEdges||=[],n.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}})}function Qi(e){W(e).forEach(t=>{let n=0;t.forEach((t,r)=>{let i=e.node(t);typeof i.rank!=`number`&&(i.rank=0),i.order=r+n,(i.selfEdges||[]).forEach(t=>{U(e,`selfedge`,{width:t.label.width,height:t.label.height,rank:i.rank,order:r+ ++n,e:t.e,edgeLabel:t.label},`_se`),(!Array.isArray(t.label.points)||t.label.points.length!==7)&&(t.label.points=[{x:0,y:-10},{x:0,y:-10},{x:0,y:0},{x:0,y:10},{x:0,y:10},{x:0,y:0},{x:0,y:0}])}),delete i.selfEdges})})}function $i(e){e.nodes().forEach(t=>{let n=e.node(t),r=e=>typeof e==`number`&&isFinite(e);if(n.dummy===`selfedge`){let i=n,a=e.node(i.e.v),o=r(a?.x)?a.x:0,s=r(a?.y)?a.y:0,c=r(a?.width)?a.width:0,l=r(a?.height)?a.height:0,u=r(n.x)?n.x:o,d=r(n.y)?n.y:s,f=c/2,p=l/2;i.edgeLabel.points=[{x:u+f,y:d-p},{x:u+f,y:d-p},{x:u,y:d},{x:u-f,y:d+p},{x:u-f,y:d+p},{x:u,y:d},{x:u,y:d}],i.edgeLabel.x=u,i.edgeLabel.y=d,e.setEdge(i.e,i.edgeLabel),e.removeNode(t)}else n&&Array.isArray(n.selfEdges)&&n.selfEdges.forEach(e=>{if(!Array.isArray(e.label.points)||e.label.points.length!==7){let t=r(n.x)?n.x:0,i=r(n.y)?n.y:0,a=r(n.width)?n.width:0,o=r(n.height)?n.height:0,s=a/2,c=o/2;e.label.points=[{x:t+s,y:i-c},{x:t+s,y:i-c},{x:t,y:i},{x:t-s,y:i+c},{x:t-s,y:i+c},{x:t,y:i},{x:t,y:i}]}})})}function ea(e,t){return An(kn(e,t),Number)}function ta(e){let t={};return e&&Object.entries(e).forEach(([e,n])=>{typeof e==`string`&&(e=e.toLowerCase()),t[e]=n}),t}function na(e){let t=W(e),n=new H({compound:!0,multigraph:!0}).setGraph({});return e.nodes().forEach(t=>{n.setNode(t,{label:t}),n.setParent(t,`layer`+e.node(t).rank)}),e.edges().forEach(e=>n.setEdge(e.v,e.w,{},e.name)),t.forEach((e,t)=>{let r=`layer`+t;n.setNode(r,{rank:`same`}),e.reduce((e,t)=>(n.setEdge(e,t,{style:`invis`}),t))}),n}var ra={graphlib:At,version:Pn,layout:Oi,debug:na,util:{time:Tn,notime:En}};function ia(e,t){let n=t.steps.map(e=>e.type===`agent`?`${e.id}:${e.model??``}:${e.tools.join(`+`)}:${e.output.format}`:e.type===`generate`?`${e.id}:${e.asset}:${e.model??``}:${e.options?.duration??``}`:e.id).join(`|`);return c({queryKey:[`estimate`,e,n],queryFn:()=>u.get(`/api/studio/wizards/${e}/estimate`),staleTime:3e4,refetchOnMount:`always`})}var aa=e=>e<10?e.toLocaleString(void 0,{maximumFractionDigits:1}):Math.round(e).toLocaleString();function oa({estimate:e,stepId:t}){let n=e?.available?e.steps[t]:void 0;return n?(0,B.jsxs)(`p`,{className:`text-[0.75rem] text-ink-3 tabular-nums`,children:[L(`estimate.step`,{n:aa(n.credits),high:aa(n.high)}),` · `,n.measured?L(`estimate.measured`):L(`estimate.formula`)]}):null}function sa({model:e,effort:t,onChange:n}){let r=L(`class.effortAuto`);return(0,B.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,B.jsx)(D,{children:L(`class.label`)}),(0,B.jsx)(I,{value:e??`high`,onChange:e=>n({model:e,effort:t}),options:We.map(e=>({value:e,label:L(`class.${e}`)}))}),(0,B.jsx)(`p`,{className:`text-[0.75rem] text-ink-3`,children:L(`class.${e??`high`}.hint`)}),(0,B.jsx)(D,{children:L(`class.effort`)}),(0,B.jsx)(k,{value:t?L(`class.effort.${t}`):r,options:[r,...Ue.map(e=>L(`class.effort.${e}`))],onChange:t=>n({model:e,effort:Ue.find(e=>L(`class.effort.${e}`)===t)})})]})}var ca=280,la=92;function ua({data:e}){let{step:t,selected:n,issue:r,active:i,pulse:a,cost:o,passed:s}=e,c=b(t);return(0,B.jsxs)(`div`,{className:O(`relative w-[280px] cursor-pointer rounded-xl bg-card px-4 py-3 text-left shadow-soft ring-1 transition`,n?`shadow-elevated ring-2 ring-ember`:i?`ring-2 ring-moss`:a?`ring-2 ring-ember/60`:`ring-border-soft hover:shadow-elevated`),children:[i?(0,B.jsx)(`span`,{className:`-top-1 -right-1 absolute size-3 animate-breathe rounded-full bg-moss`}):a?(0,B.jsx)(`span`,{className:`-top-1 -right-1 absolute size-3 animate-breathe rounded-full bg-ember`}):null,(0,B.jsx)($e,{type:`target`,position:Ye.Top}),(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(`span`,{className:O(`inline-flex size-6 items-center justify-center rounded-md`,S[t.type]),children:(0,B.jsx)(c,{className:`size-3.5`})}),(0,B.jsx)(`span`,{className:`font-medium text-[0.6875rem] text-ink-3 uppercase tracking-[0.07em]`,children:y(t)}),r?(0,B.jsx)(de,{className:`ml-auto size-4 text-rose`}):s&&!i?(0,B.jsx)(re,{className:`ml-auto size-4 text-moss`}):o===null?null:(0,B.jsxs)(`span`,{className:`ml-auto text-[0.6875rem] text-ink-3 tabular-nums`,children:[`≈`,` `,o<10?o.toLocaleString(void 0,{maximumFractionDigits:1}):Math.round(o),` `,`cr`]})]}),(0,B.jsx)(`div`,{className:`mt-1.5 truncate font-display font-semibold text-[0.9375rem] text-ink`,children:t.title}),(0,B.jsx)(`div`,{className:`truncate text-[0.75rem] text-ink-3`,children:x(t)||`\xA0`}),(0,B.jsx)($e,{type:`source`,position:Ye.Bottom})]})}function da({data:e}){return(0,B.jsxs)(`div`,{className:O(`flex w-[280px] cursor-pointer items-center gap-3 rounded-full bg-paper-2 py-1.5 pr-5 pl-2 transition`,e.selected?`ring-2 ring-ember`:`hover:bg-paper-3`),children:[(0,B.jsx)(s,{kind:e.avatar,size:40,interactive:!1}),(0,B.jsx)(`span`,{className:`truncate font-display font-semibold text-[0.9375rem]`,children:e.title}),(0,B.jsx)($e,{type:`source`,position:Ye.Bottom})]})}function fa(e){let{data:t,sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o,targetPosition:s}=e,c={label:e.label,labelStyle:e.labelStyle,labelBgStyle:e.labelBgStyle,labelBgPadding:e.labelBgPadding,labelBgBorderRadius:e.labelBgBorderRadius,style:e.style,markerEnd:e.markerEnd};if(!t?.points.length){let[e,t,l]=Ze({sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o,targetPosition:s});return(0,B.jsx)(tt,{path:e,labelX:t,labelY:l,...c})}let l=[{x:n,y:r},...t.points,{x:i,y:a}],u=l.map((e,t)=>{let n=l[t-1];if(!n)return`M ${e.x} ${e.y}`;let r=(n.y+e.y)/2;return`C ${n.x} ${r} ${e.x} ${r} ${e.x} ${e.y}`}).join(` `);return(0,B.jsx)(tt,{path:u,labelX:t.labelX,labelY:t.labelY,...c})}var pa={step:ua,start:da},ma={branch:fa},ha=34,ga={};function _a(e){let t=Array.isArray(e.when.value)?e.when.value.join(` / `):String(e.when.value??``);switch(e.when.op){case`equals`:return`${e.when.field} = ${t}`;case`notEquals`:return`${e.when.field} ≠ ${t}`;case`in`:return`${e.when.field} ∈ ${t}`;case`notEmpty`:return L(`editor.whenFilled`,{field:e.when.field});case`empty`:return L(`editor.whenEmpty`,{field:e.when.field})}}function va(e,t,n,r,i,a,o){let s=new ra.graphlib.Graph;s.setGraph({rankdir:`TB`,nodesep:48,ranksep:46,marginx:20,marginy:20}),s.setDefaultEdgeLabel(()=>({})),s.setNode(`__start`,{width:ca,height:52});for(let t of e.steps)s.setNode(t.id,{width:ca,height:la});let c=[],l={markerEnd:{type:et.ArrowClosed,width:14,height:14,color:`var(--ink-4)`}};e.steps[0]&&(s.setEdge(`__start`,e.steps[0].id),c.push({id:`e-start`,source:`__start`,target:e.steps[0].id,...l})),e.steps.forEach((t,n)=>{let r=e.steps[n+1],i=new Map;for(let n of t.next??[])n.goto!==`end`&&e.steps.some(e=>e.id===n.goto)&&i.set(n.goto,[...i.get(n.goto)??[],_a(n)]);for(let[e,n]of i){let r=n.join(` · `),i=r.length>ha?`${r.slice(0,33)}…`:r;s.setEdge(t.id,e,{width:i.length*6.2+16,height:22,labelpos:`c`}),c.push({id:`b-${t.id}-${e}`,type:`branch`,source:t.id,target:e,label:i,labelStyle:{fontSize:11,fill:`var(--ink-2)`},labelBgStyle:{fill:`var(--paper-2)`},labelBgPadding:[6,3],labelBgBorderRadius:8,style:{strokeDasharray:`5 4`},...l})}r&&t.type!==`result`&&(s.hasEdge(t.id,r.id)||s.setEdge(t.id,r.id),c.push({id:`n-${t.id}`,source:t.id,target:r.id,...t.next?.length?{label:L(`editor.otherwise`),labelStyle:{fontSize:11,fill:`var(--ink-3)`},labelBgStyle:{fill:`var(--background)`}}:{},...l}))}),ra.layout(s);for(let e of c){if(e.type!==`branch`)continue;let t=s.edge(e.source,e.target),n=(t.points??[]).slice(1,-1);n.length&&t.x!==void 0&&t.y!==void 0&&(e.data={points:n,labelX:t.x,labelY:t.y})}return{nodes:[{id:`__start`,type:`start`,position:{x:s.node(`__start`).x-ca/2,y:s.node(`__start`).y-26},data:{title:e.title,avatar:e.avatar,selected:t===`__wizard`},draggable:!1},...e.steps.map((e,c)=>{let l=s.node(e.id);return{id:e.id,type:`step`,position:{x:l.x-ca/2,y:l.y-la/2},data:{step:e,selected:t===e.id,issue:n.has(e.id),index:c,active:r===e.id,pulse:i.includes(e.id),cost:a[e.id]?.credits??null,passed:o.has(e.id)},draggable:!1}})],edges:c}}function ya(){let e=Qe(),t=`inline-flex size-8 items-center justify-center rounded-full text-ink-3 hover:bg-accent hover:text-ink`;return(0,B.jsxs)(`div`,{className:`absolute bottom-4 left-4 z-10 flex items-center gap-0.5 rounded-full bg-card p-1 shadow-soft ring-1 ring-border-soft`,children:[(0,B.jsx)(`button`,{type:`button`,className:t,onClick:()=>e.zoomOut(),"aria-label":`Zoom out`,children:(0,B.jsx)(gt,{className:`size-4`})}),(0,B.jsx)(`button`,{type:`button`,className:t,onClick:()=>e.fitView({padding:.2,duration:300}),"aria-label":`Fit`,children:(0,B.jsx)(St,{className:`size-4`})}),(0,B.jsx)(`button`,{type:`button`,className:t,onClick:()=>e.zoomIn(),"aria-label":`Zoom in`,children:(0,B.jsx)(me,{className:`size-4`})})]})}var ba=.8,xa=new Set;function Sa({def:e,selected:t,onSelect:n,issueSteps:r,activeStep:i,pulse:a,costs:o=ga,passed:s=xa,minFitZoom:c=ba,fitKey:l}){let{nodes:u,edges:d}=(0,z.useMemo)(()=>va(e,t,r,i,a??[],o,s),[e,t,r,i,a,o,s]),f=Qe(),p=(0,z.useRef)(null),m=e.steps.map(e=>e.id).join(`|`);return(0,z.useEffect)(()=>{let e=requestAnimationFrame(()=>{let e=p.current;if(!e||!u.length)return;let t=u.map(e=>e.position.x),n=u.map(e=>e.position.y),r={x:Math.min(...t),y:Math.min(...n),width:Math.max(...t)+ca-Math.min(...t),height:Math.max(...n)+la-Math.min(...n)},i=Math.min(e.clientWidth/(r.width*1.2),e.clientHeight/(r.height*1.15),1),a=Math.max(i,c),o=(e.clientWidth-r.width*a)/2-r.x*a,s=i>=c?(e.clientHeight-r.height*a)/2-r.y*a:24-r.y*a;f.setViewport({x:o,y:s,zoom:a},{duration:400})});return()=>cancelAnimationFrame(e)},[m,l,f]),(0,B.jsx)(`div`,{ref:p,className:`h-full w-full`,children:(0,B.jsx)(Je,{nodes:u,edges:d,nodeTypes:pa,edgeTypes:ma,onNodeClick:(e,t)=>n(t.id===`__start`?`__wizard`:t.id),onPaneClick:()=>n(null),nodesConnectable:!1,nodesDraggable:!1,elementsSelectable:!1,panOnScroll:!0,zoomOnScroll:!1,zoomOnPinch:!0,minZoom:.3,maxZoom:1.4,proOptions:{hideAttribution:!0},children:(0,B.jsx)(ya,{})})})}function Ca(e){return(0,B.jsx)(Xe,{children:(0,B.jsx)(Sa,{...e})})}function wa({wizardId:e,...t}){let n=ia(e,t.def);return(0,B.jsx)(Ca,{...t,costs:n.data?.available?n.data.steps:ga})}var Ta={text:`Kurzer Text`,textarea:`Langer Text`,number:`Zahl`,select:`Auswahl`,multiselect:`Mehrfachauswahl`,date:`Datum`,email:`E-Mail`,url:`Link`,toggle:`Ja/Nein`,color:`Farbe`,image:`Bild-Upload`,file:`Datei-Upload`,items:`Positionen (Tabelle)`,connection:`Konto verbinden`,list:`Gespeicherte Liste`,location:`Standort`,audio:`Sprachnotiz`,signature:`Unterschrift`};function Ea(e,t){let n=t===`image`||t===`file`;return{...e,kind:t,multiple:n?e.multiple:void 0,camera:t===`file`?e.camera:void 0,video:t===`file`?e.video:void 0,scan:t===`text`?e.scan:void 0}}var Da=(0,z.createContext)(!1);function Oa({className:e,children:t}){return(0,z.useContext)(Da)?(0,B.jsx)(`fieldset`,{disabled:!0,className:O(`min-w-0`,e),children:t}):(0,B.jsx)(`div`,{className:e,children:t})}function Y({title:e,children:t,loose:n}){let r=`flex flex-col gap-4`;return(0,B.jsxs)(`div`,{className:`border-border-soft border-t px-5 py-5 first:border-t-0`,children:[e?(0,B.jsx)(`h4`,{className:`mb-3 font-medium text-[0.75rem] text-ink-3 uppercase tracking-[0.07em]`,children:e}):null,n?(0,B.jsx)(`div`,{className:r,children:t}):(0,B.jsx)(Oa,{className:r,children:t})]})}function ka(e,t){let n=new Set([...e.steps.map(e=>e.id),...e.steps.flatMap(e=>e.type===`page`?e.fields.map(e=>e.id):[])]),r=1,i=t;for(;n.has(i);)r+=1,i=`${t}${r}`;return i}function Aa({def:e,field:t,onChange:n,onRemove:r,onMove:i}){let[a,o]=(0,z.useState)(!1);return(0,B.jsxs)(`div`,{className:`rounded-lg bg-paper ring-1 ring-border-soft`,children:[(0,B.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),className:`flex w-full items-center gap-2 px-3 py-2.5 text-left`,children:[(0,B.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-[0.875rem]`,children:[t.label,t.required?(0,B.jsx)(`span`,{className:`ml-1 text-ember`,children:`*`}):null]}),(0,B.jsx)(`span`,{className:`text-[0.75rem] text-ink-4`,children:Ta[t.kind]}),(0,B.jsx)(ie,{className:O(`size-4 text-ink-4 transition`,a&&`rotate-180`)})]}),a?(0,B.jsxs)(Oa,{className:`flex flex-col gap-3 border-border-soft border-t px-3 py-3`,children:[(0,B.jsx)(P,{value:t.label,onChange:e=>n({...t,label:e.target.value})}),(0,B.jsx)(I,{value:t.kind,onChange:e=>n(Ea(t,e)),options:Ve.filter(e=>e!==`items`||t.kind===`items`).map(e=>({value:e,label:Ta[e]}))}),t.kind===`select`||t.kind===`multiselect`?(0,B.jsx)(P,{placeholder:`Option A, Option B, Option C`,value:(t.options??[]).join(`, `),onChange:e=>n({...t,options:e.target.value.split(`,`).map(e=>e.trim()).filter(Boolean)})}):null,t.kind===`connection`?(0,B.jsx)(I,{value:t.connection??``,placeholder:`Welches Konto?`,onChange:e=>n({...t,connection:e}),options:(e.connections??[]).map(e=>({value:e.id,label:e.title??e.id}))}):null,t.kind===`list`?(0,B.jsx)(I,{value:t.list??``,placeholder:`Welche Liste?`,onChange:e=>n({...t,list:e}),options:(e.lists??[]).map(e=>({value:e.id,label:e.title}))}):null,t.kind===`image`||t.kind===`file`?(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{className:`text-[0.8125rem] text-ink-2`,children:`Mehrere Dateien`}),(0,B.jsx)(M,{checked:!!t.multiple,onChange:e=>n({...t,multiple:e||void 0,...e?{}:{min:void 0,max:void 0}})})]}):null,(t.kind===`image`||t.kind===`file`)&&t.multiple?(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,B.jsx)(`span`,{className:`text-[0.8125rem] text-ink-2`,children:`Wie viele?`}),(0,B.jsx)(`div`,{className:`flex items-center gap-1.5`,children:[`min`,`max`].map(e=>(0,B.jsx)(P,{type:`number`,min:1,max:30,"aria-label":e===`min`?`Mindestens`:`Höchstens`,placeholder:e===`min`?`min.`:`max.`,value:t[e]??``,onChange:r=>{let i=Math.round(Number(r.target.value));n({...t,[e]:r.target.value&&i>=1?Math.min(i,30):void 0})},className:`h-8 w-16 text-right`},e))})]}):null,t.kind===`file`?(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{className:`text-[0.8125rem] text-ink-2`,children:`Auch mit der Kamera aufnehmen`}),(0,B.jsx)(M,{checked:!!t.camera,onChange:e=>n({...t,camera:e||void 0})})]}):null,t.kind===`file`?(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{className:`text-[0.8125rem] text-ink-2`,children:`Kamera nimmt auch kurze Videos auf`}),(0,B.jsx)(M,{checked:!!t.video,onChange:e=>n({...t,video:e||void 0})})]}):null,t.kind===`text`?(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{className:`text-[0.8125rem] text-ink-2`,children:`QR- oder Barcode scannen`}),(0,B.jsx)(M,{checked:!!t.scan,onChange:e=>n({...t,scan:e||void 0})})]}):null,[`text`,`textarea`,`number`,`email`,`url`,`location`].includes(t.kind)?(0,B.jsx)(P,{placeholder:`Platzhalter`,value:t.placeholder??``,onChange:e=>n({...t,placeholder:e.target.value||void 0})}):null,(0,B.jsx)(P,{placeholder:`Hilfetext`,value:t.help??``,onChange:e=>n({...t,help:e.target.value||void 0})}),(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{className:`text-[0.8125rem] text-ink-2`,children:L(`run.required`)}),(0,B.jsx)(M,{checked:!!t.required,onChange:e=>n({...t,required:e})})]}),(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{className:`font-mono text-[0.6875rem] text-ink-4`,children:`{{${t.id}}}`}),(0,B.jsxs)(`div`,{className:`flex`,children:[(0,B.jsx)(j,{label:L(`editor.moveUp`),onClick:()=>i(-1),className:`size-8`,children:(0,B.jsx)(g,{className:`size-3.5`})}),(0,B.jsx)(j,{label:L(`editor.moveDown`),onClick:()=>i(1),className:`size-8`,children:(0,B.jsx)(m,{className:`size-3.5`})}),(0,B.jsx)(j,{label:`Entfernen`,onClick:r,className:`size-8 hover:text-rose`,children:(0,B.jsx)(w,{className:`size-3.5`})})]})]})]}):null]})}var ja=[{label:`16:9`,width:1280,height:720},{label:`1:1`,width:1080,height:1080},{label:`4:5`,width:1080,height:1350},{label:`9:16`,width:1080,height:1920}];function Ma(e,t){let n=[];for(let r of e.steps.slice(0,t))r.type===`page`?n.push(...r.fields.map(e=>e.id)):r.type===`agent`?n.push(`steps.${r.id}`,...(r.output.fields??[]).map(e=>`steps.${r.id}.${e.id}`)):(r.type===`generate`||r.type===`widget`)&&n.push(`steps.${r.id}`);return[...n,`brand.name`,`today`]}function Na({def:e,step:t,set:n,files:r,wizardId:i}){let a=r.filter(e=>e.mime===`text/html`),s=r.filter(e=>e.mime===`application/json`),c=t.size??ja[0],l=Ma(e,e.steps.indexOf(t)),u=Object.entries(t.data),d=e=>n({...t,data:Object.fromEntries(e)}),f=[r.find(e=>e.path===t.entry)?.hash.slice(0,8),r.find(e=>e.path===t.sample)?.hash.slice(0,8),c.width,c.height].join(`-`),p=r.some(e=>e.path===t.entry);return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(Y,{title:`Vorschau mit Beispieldaten`,children:p?(0,B.jsx)(_,{src:o(`/api/studio/wizards/${i}/widgets/${t.id}/preview?v=${f}`),page:c.width,height:c.height,fit:!0}):(0,B.jsx)(`p`,{className:`text-[0.8125rem] text-ink-3`,children:`Das Widget ist noch nicht gebaut. Bitte im Gespräch darum – oder lade eine HTML-Datei unter „Dateien“ hoch.`})}),(0,B.jsxs)(Y,{title:`Widget`,children:[(0,B.jsx)(D,{children:`HTML-Datei`}),(0,B.jsx)(I,{value:t.entry,onChange:e=>n({...t,entry:e}),options:(a.some(e=>e.path===t.entry)?a:[{path:t.entry},...a]).map(e=>({value:e.path,label:e.path}))}),(0,B.jsx)(D,{children:`Beispieldaten`}),(0,B.jsx)(I,{value:t.sample??``,onChange:e=>n({...t,sample:e||void 0}),options:[{value:``,label:`keine`},...s.map(e=>({value:e.path,label:e.path}))]}),(0,B.jsx)(D,{children:`Größe`}),(0,B.jsx)(k,{value:ja.find(e=>e.width===c.width&&e.height===c.height)?.label??``,options:ja.map(e=>e.label),onChange:e=>{let r=ja.find(t=>t.label===e);r&&n({...t,size:{width:r.width,height:r.height}})}})]}),(0,B.jsxs)(Y,{title:`Daten für das Widget`,children:[(0,B.jsx)(`datalist`,{id:`sources-${t.id}`,children:l.map(e=>(0,B.jsx)(`option`,{value:e},e))}),u.map(([e,n],r)=>(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(P,{value:e,className:`w-28 font-mono text-[0.75rem]`,onChange:e=>d(u.map((t,n)=>n===r?[e.target.value,t[1]]:t))}),(0,B.jsx)(`span`,{className:`text-ink-4`,children:`←`}),(0,B.jsx)(P,{value:n,list:`sources-${t.id}`,className:`flex-1 font-mono text-[0.75rem]`,onChange:e=>d(u.map((t,n)=>n===r?[t[0],e.target.value]:t))}),(0,B.jsx)(j,{label:L(`editor.deleteStep`),onClick:()=>d(u.filter((e,t)=>t!==r)),children:(0,B.jsx)(w,{className:`size-4`})})]},r)),(0,B.jsxs)(`button`,{type:`button`,onClick:()=>d([...u,[`wert${u.length+1}`,l[0]??`today`]]),className:`inline-flex h-8 items-center gap-1 self-start rounded-full px-2.5 text-[0.75rem] text-ink-2 hover:bg-accent`,children:[(0,B.jsx)(me,{className:`size-3.5`}),` Wert`]})]})]})}function Pa({def:e,step:t,set:n,mcpServers:r,files:i,wizardId:a}){let o=e.steps.indexOf(t),s=(0,z.useContext)(Da),c=je().plugins.flatMap(e=>e.tools),l=e.steps.slice(0,o).filter(e=>e.type===`agent`||e.type===`generate`||e.type===`widget`);switch(t.type){case`widget`:return(0,B.jsx)(Na,{def:e,step:t,set:n,files:i,wizardId:a});case`page`:return(0,B.jsxs)(Y,{title:`Fragen`,loose:!0,children:[(0,B.jsx)(`div`,{className:`flex flex-col gap-2`,children:t.fields.map((r,i)=>(0,B.jsx)(Aa,{def:e,field:r,onChange:e=>n({...t,fields:t.fields.map((t,n)=>n===i?e:t)}),onRemove:()=>t.fields.length>1&&n({...t,fields:t.fields.filter((e,t)=>t!==i)}),onMove:e=>{let r=i+e;if(r<0||r>=t.fields.length)return;let a=[...t.fields];[a[i],a[r]]=[a[r],a[i]],n({...t,fields:a})}},r.id))}),s?null:(0,B.jsxs)(`button`,{type:`button`,onClick:()=>n({...t,fields:[...t.fields,{id:ka(e,`frage`),label:`Neue Frage`,kind:`text`}]}),className:`inline-flex h-9 items-center gap-1.5 self-start rounded-full px-3 text-[0.8125rem] text-ink-2 hover:bg-accent`,children:[(0,B.jsx)(me,{className:`size-4`}),` Frage hinzufügen`]})]});case`agent`:return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(Y,{title:`Auftrag`,children:[(0,B.jsx)(A,{value:t.instructions,minRows:6,maxRows:20,onChange:e=>n({...t,instructions:e.target.value}),className:`text-[0.875rem]`}),(0,B.jsxs)(`p`,{className:`text-[0.75rem] text-ink-4`,children:[`Antworten einsetzen mit `,(0,B.jsx)(`code`,{className:`font-mono`,children:`{{feld}}`}),`, frühere Ergebnisse mit `,(0,B.jsx)(`code`,{className:`font-mono`,children:`{{steps.id}}`}),`.`]})]}),(0,B.jsxs)(Y,{title:`Werkzeuge`,children:[(0,B.jsx)(k,{multi:!0,value:t.tools,options:[...new Set([...Ke,...c.map(e=>e.id),...t.tools])],onChange:e=>n({...t,tools:e})}),(0,B.jsxs)(`div`,{className:`-mt-2 flex flex-wrap gap-x-3 text-[0.75rem] text-ink-4`,children:[Ke.map(e=>(0,B.jsxs)(`span`,{children:[e,` = `,ne(e)]},e)),c.map(e=>(0,B.jsxs)(`span`,{children:[e.id,` = `,e.title]},e.id))]}),e.connections?.length?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(D,{hint:`Konten, die die Person im Durchlauf verbindet. Der Schritt liest darin, er schreibt nie.`,children:`Konten der Person`}),(0,B.jsx)(k,{multi:!0,value:t.connections??[],options:e.connections.map(e=>e.id),onChange:e=>n({...t,connections:e.length?e:void 0})})]}):null,r.length?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(D,{hint:`Nur freigegebene Systeme sind in diesem Schritt erreichbar.`,children:`Verbundene Systeme`}),(0,B.jsx)(k,{multi:!0,value:t.mcp??[],options:r.map(e=>e.id),onChange:e=>n({...t,mcp:e.length?e:void 0})})]}):null]}),(0,B.jsxs)(Y,{title:`Ergebnis`,children:[(0,B.jsx)(k,{value:t.output.format,options:[`text`,`markdown`,`json`],onChange:e=>n({...t,output:{...t.output,format:e}})}),(0,B.jsx)(sa,{model:t.model,effort:t.effort,onChange:e=>n({...t,...e})}),(0,B.jsx)(P,{placeholder:`Text während der Arbeit, z. B. „Recherchiert …“`,value:t.working??``,onChange:e=>n({...t,working:e.target.value||void 0})})]})]});case`generate`:return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(Y,{title:`Was wird erzeugt?`,children:[(0,B.jsx)(k,{value:t.asset,options:[`image`,`video`,`voice`,`document`,`dashboard`],onChange:e=>n({...t,asset:e})}),(0,B.jsx)(A,{value:t.prompt,minRows:5,maxRows:18,onChange:e=>n({...t,prompt:e.target.value}),className:`text-[0.875rem]`})]}),(0,B.jsxs)(Y,{title:`Optionen`,children:[t.asset===`document`||t.asset===`dashboard`?(0,B.jsx)(sa,{model:t.model,effort:t.effort,onChange:e=>n({...t,...e})}):null,t.asset===`image`||t.asset===`video`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(D,{children:`Format`}),(0,B.jsx)(k,{value:t.options?.aspectRatio??``,options:[...qe],onChange:e=>n({...t,options:{...t.options,aspectRatio:e}})}),(0,B.jsx)(P,{placeholder:`Stil, z. B. „helle Fotografie, minimalistisch“`,value:t.options?.style??``,onChange:e=>n({...t,options:{...t.options,style:e.target.value||void 0}})})]}):null,t.asset===`video`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(D,{children:`Länge (Sekunden)`}),(0,B.jsx)(k,{value:String(t.options?.duration??8),options:[`4`,`6`,`8`,`10`],onChange:e=>n({...t,options:{...t.options,duration:Number(e)}})}),(0,B.jsx)(D,{children:`Auflösung`}),(0,B.jsx)(k,{value:t.options?.resolution??`720p`,options:[...Be],onChange:e=>n({...t,options:{...t.options,resolution:e}})})]}):null,t.asset===`document`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(D,{children:`Vorlage`}),(0,B.jsx)(I,{value:t.options?.template??`free`,onChange:e=>n({...t,options:{...t.options,template:e}}),options:[`free`,`invoice`,`offer`,`briefing`,`letter`,`report`].map(e=>({value:e,label:e}))})]}):null]})]});case`review`:return(0,B.jsxs)(Y,{title:`Was wird gezeigt?`,children:[(0,B.jsx)(k,{multi:!0,value:t.show,options:l.map(e=>e.id),onChange:e=>e.length&&n({...t,show:e})}),(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{className:`text-[0.8125rem] text-ink-2`,children:`Text direkt bearbeitbar`}),(0,B.jsx)(M,{checked:!!t.edit,onChange:e=>n({...t,edit:e})})]}),(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{className:`text-[0.8125rem] text-ink-2`,children:`Neue Variante anfordern`}),(0,B.jsx)(M,{checked:!!t.regenerate,onChange:e=>n({...t,regenerate:e})})]})]});case`result`:return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(Y,{title:`Abschluss`,children:(0,B.jsx)(A,{minRows:2,placeholder:`Nachricht am Ende`,value:t.message??``,onChange:e=>n({...t,message:e.target.value||void 0})})}),(0,B.jsx)(Y,{title:`Downloads`,children:l.map(e=>{let r=t.deliverables.find(t=>t.from===e.id),i=He(e);return(0,B.jsxs)(`div`,{className:`rounded-lg bg-paper p-3 ring-1 ring-border-soft`,children:[(0,B.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,B.jsx)(`span`,{className:`truncate text-[0.875rem]`,children:e.title}),(0,B.jsx)(M,{checked:!!r,onChange:r=>n({...t,deliverables:r?[...t.deliverables,{from:e.id,label:e.title,formats:[i[0]]}]:t.deliverables.filter(t=>t.from!==e.id)})})]}),r?(0,B.jsx)(k,{multi:!0,value:r.formats,options:i,onChange:r=>r.length&&n({...t,deliverables:t.deliverables.map(t=>t.from===e.id?{...t,formats:r}:t)})}):null]},e.id)})})]})}}function Fa({def:e,update:t}){return(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(Y,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(D,{children:`Titel`}),(0,B.jsx)(P,{value:e.title,onChange:n=>t({...e,title:n.target.value})})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(D,{children:`Beschreibung`}),(0,B.jsx)(A,{minRows:2,value:e.description,onChange:n=>t({...e,description:n.target.value})})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(D,{hint:`Steht über der ersten Seite.`,children:`Begrüßung`}),(0,B.jsx)(A,{minRows:2,value:e.intro??``,onChange:n=>t({...e,intro:n.target.value||void 0})})]})]}),(0,B.jsx)(Y,{title:`Avatar`,children:(0,B.jsx)(`div`,{className:`grid grid-cols-5 gap-2`,children:Ge.map(n=>(0,B.jsx)(`button`,{type:`button`,onClick:()=>t({...e,avatar:n}),className:O(`flex aspect-square items-center justify-center rounded-xl transition`,e.avatar===n?`bg-ember-tint ring-2 ring-ember`:`bg-paper hover:bg-paper-2`),"aria-label":n,children:(0,B.jsx)(s,{kind:n,size:44,interactive:!1})},n))})}),e.lists?.length||e.connections?.length?(0,B.jsxs)(Y,{title:`Merkt sich für jede Person`,children:[(0,B.jsx)(`p`,{className:`text-[0.8125rem] text-ink-3`,children:`Bleibt zwischen den Durchläufen erhalten – getrennt für jede Person, die den Wizard nutzt. Ändern kannst du das im Gespräch.`}),(e.connections??[]).map(e=>(0,B.jsxs)(`div`,{className:`rounded-lg bg-paper px-3 py-2.5 ring-1 ring-border-soft`,children:[(0,B.jsx)(`div`,{className:`text-[0.875rem]`,children:e.title??e.id}),(0,B.jsxs)(`div`,{className:`text-[0.75rem] text-ink-4`,children:[`Konto · `,e.kind]})]},e.id)),(e.lists??[]).map(e=>(0,B.jsxs)(`div`,{className:`rounded-lg bg-paper px-3 py-2.5 ring-1 ring-border-soft`,children:[(0,B.jsx)(`div`,{className:`text-[0.875rem]`,children:e.title}),(0,B.jsxs)(`div`,{className:`text-[0.75rem] text-ink-4`,children:[`Liste · `,e.columns.map(e=>e.name).join(`, `)]}),(0,B.jsx)(`div`,{className:`mt-1 font-mono text-[0.6875rem] text-ink-4`,children:`{{lists.${e.id}}}`})]},e.id))]}):null]})}var Ia={page:e=>({id:e,type:`page`,title:`Neue Seite`,fields:[{id:`${e}Text`,label:`Neue Frage`,kind:`text`}]}),agent:e=>({id:e,type:`agent`,title:`KI-Schritt`,instructions:`Beschreibe die Aufgabe …`,tools:[],output:{format:`markdown`}}),generate:e=>({id:e,type:`generate`,title:`Bild erzeugen`,asset:`image`,prompt:`Beschreibe das Bild …`}),widget:e=>({id:e,type:`widget`,title:`Widget`,entry:`${e}/index.html`,data:{},sample:`${e}/sample.json`})},X=`__wizard`;function La({def:e,selected:t,onSelect:n,issues:r}){let i=[X,...e.steps.map(e=>e.id)],a=t?i.indexOf(t):-1,o=(0,z.useRef)(null);(0,z.useEffect)(()=>{o.current?.scrollIntoView({block:`nearest`,inline:`center`,behavior:`smooth`})},[t]);let s=e=>{let t=a===-1?e===1?1:i.length-1:a+e;t>=0&&t<i.length&&n(i[t])},c=(0,z.useRef)(s);c.current=s,(0,z.useEffect)(()=>{let e=e=>{(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&(e.defaultPrevented||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||e.target?.closest(`input, textarea, select, [contenteditable=""], [contenteditable="true"], [role="separator"], [role="slider"], [role="dialog"], .react-flow`)||(e.preventDefault(),c.current(e.key===`ArrowLeft`?-1:1)))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]);let l=`inline-flex size-8 shrink-0 items-center justify-center rounded-full transition`;return(0,B.jsxs)(`div`,{className:`sticky top-0 z-10 flex items-center gap-1 border-border-soft border-b bg-card/95 px-2 py-2 backdrop-blur`,children:[(0,B.jsx)(j,{label:L(`editor.prevStep`),className:`size-8 shrink-0`,disabled:a===0,onClick:()=>s(-1),children:(0,B.jsx)(oe,{className:`size-4`})}),(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center overflow-x-auto p-1 [scrollbar-width:none]`,children:[(0,B.jsx)(`button`,{ref:t===X?o:void 0,type:`button`,title:e.title,"aria-label":e.title,"aria-current":t===X?`step`:void 0,onClick:()=>n(X),className:O(l,`bg-paper-2 text-ink-2`,t===X?`ring-2 ring-ember`:`hover:ring-2 hover:ring-border-soft`),children:(0,B.jsx)(C,{className:`size-4`})}),e.steps.map((e,i)=>{let a=b(e),s=e.id===t,c=r.some(t=>t.stepId===e.id);return(0,B.jsxs)(`div`,{className:`flex shrink-0 items-center`,children:[(0,B.jsx)(`span`,{className:`h-px w-3 bg-border-soft`}),(0,B.jsxs)(`button`,{ref:s?o:void 0,type:`button`,title:`${i+1}. ${e.title}`,"aria-label":`${i+1}. ${e.title}`,"aria-current":s?`step`:void 0,onClick:()=>n(e.id),className:O(l,`relative`,S[e.type],s?`ring-2 ring-ember`:`opacity-70 hover:opacity-100`),children:[(0,B.jsx)(a,{className:`size-4`}),c?(0,B.jsx)(`span`,{className:`-top-0.5 -right-0.5 absolute size-2.5 rounded-full bg-rose ring-2 ring-card`}):null]})]},e.id)})]}),(0,B.jsx)(`span`,{className:`shrink-0 px-1 text-[0.75rem] text-ink-4 tabular-nums`,children:a>0?`${a} / ${e.steps.length}`:``}),(0,B.jsx)(j,{label:L(`editor.nextStep`),className:`size-8 shrink-0`,disabled:a===i.length-1,onClick:()=>s(1),children:(0,B.jsx)(ae,{className:`size-4`})})]})}function Ra({def:e,onSelect:t,issues:n}){return(0,B.jsx)(`div`,{className:`flex flex-col gap-1 p-3`,children:e.steps.map((e,r)=>{let i=b(e),a=n.some(t=>t.stepId===e.id);return(0,B.jsxs)(`button`,{type:`button`,onClick:()=>t(e.id),className:`flex items-center gap-3 rounded-lg px-3 py-2.5 text-left transition hover:bg-paper-2`,children:[(0,B.jsx)(`span`,{className:`w-4 text-right text-[0.75rem] text-ink-4 tabular-nums`,children:r+1}),(0,B.jsx)(`span`,{className:O(`inline-flex size-7 shrink-0 items-center justify-center rounded-md`,S[e.type]),children:(0,B.jsx)(i,{className:`size-4`})}),(0,B.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,B.jsx)(`span`,{className:`block truncate text-[0.875rem]`,children:e.title}),(0,B.jsx)(`span`,{className:`block text-[0.75rem] text-ink-4`,children:y(e)})]}),a?(0,B.jsx)(`span`,{className:`size-2 shrink-0 rounded-full bg-rose`}):null]},e.id)})})}function za(e){let{def:t,selected:n,onSelect:r,issues:i,readOnly:a=!1}=e,o=a?()=>{}:e.update,s=t.steps.find(e=>e.id===n);return(0,B.jsx)(Da,{value:a,children:(0,B.jsxs)(`div`,{children:[(0,B.jsx)(La,{def:t,selected:n,onSelect:r,issues:i}),n===X?(0,B.jsx)(Fa,{def:t,update:o}):s?(0,B.jsx)(Ba,{...e,update:o,step:s}):(0,B.jsx)(Ra,{def:t,onSelect:r,issues:i})]})})}function Ba({def:e,step:t,update:n,onSelect:r,issues:i,mcpServers:a,files:o,wizardId:s}){let c=e.steps.indexOf(t),l=b(t),u=r=>n({...e,steps:e.steps.map(e=>e.id===t.id?r:e)}),d=r=>{let i=c+r;if(i<0||i>=e.steps.length-(t.type===`result`?0:1)||e.steps[i].type===`result`)return;let a=[...e.steps];[a[c],a[i]]=[a[i],a[c]],n({...e,steps:a})},f=i=>{let a=ka(e,i===`page`?`seite`:i===`agent`?`ki`:i===`widget`?`widget`:`erzeugen`),o=[...e.steps];o.splice(t.type===`result`?c:c+1,0,Ia[i](a)),n({...e,steps:o}),r(a)},p=i.filter(e=>e.stepId===t.id),h=ia(s,e),_=(0,z.useContext)(Da);return(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2 px-5 py-4`,children:[(0,B.jsx)(`span`,{className:O(`inline-flex size-7 items-center justify-center rounded-md`,S[t.type]),children:(0,B.jsx)(l,{className:`size-4`})}),(0,B.jsx)(`span`,{className:`font-medium text-[0.75rem] text-ink-3 uppercase tracking-[0.07em]`,children:y(t)}),(0,B.jsx)(`span`,{className:`ml-auto font-mono text-[0.6875rem] text-ink-4`,children:t.id})]}),p.length?(0,B.jsx)(`div`,{className:`mx-5 mb-4 rounded-lg bg-rose-tint px-3 py-2 text-[0.8125rem] text-rose`,children:p.map((e,t)=>(0,B.jsx)(`div`,{children:e.message},t))}):null,(0,B.jsxs)(Y,{children:[(0,B.jsx)(P,{value:t.title,onChange:e=>u({...t,title:e.target.value}),className:`font-display font-semibold text-[1rem]`}),t.type===`page`||t.type===`review`?(0,B.jsx)(A,{minRows:1,placeholder:`Erklärung unter dem Titel (optional)`,value:t.description??``,onChange:e=>u({...t,description:e.target.value||void 0})}):null,(0,B.jsx)(oa,{estimate:h.data,stepId:t.id})]}),(0,B.jsx)(Pa,{def:e,step:t,set:u,mcpServers:a,files:o,wizardId:s}),_?null:(0,B.jsx)(Y,{children:(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1`,children:[t.type===`result`?null:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(j,{label:L(`editor.moveUp`),onClick:()=>d(-1),children:(0,B.jsx)(g,{className:`size-4`})}),(0,B.jsx)(j,{label:L(`editor.moveDown`),onClick:()=>d(1),children:(0,B.jsx)(m,{className:`size-4`})}),(0,B.jsx)(j,{label:L(`editor.deleteStep`),className:`hover:text-rose`,onClick:()=>{n({...e,steps:e.steps.filter(e=>e.id!==t.id)}),r(null)},children:(0,B.jsx)(w,{className:`size-4`})})]}),(0,B.jsx)(`span`,{className:`ml-auto text-[0.75rem] text-ink-4`,children:`Danach einfügen:`}),[`page`,`agent`,`generate`,`widget`].map(e=>(0,B.jsxs)(`button`,{type:`button`,onClick:()=>f(e),className:`inline-flex h-8 items-center gap-1 rounded-full px-2.5 text-[0.75rem] text-ink-2 hover:bg-accent`,children:[(0,B.jsx)(me,{className:`size-3.5`}),` `,L(`type.${e}`)]},e))]})})]})}var Va={waiting_input:`wartet`,running:`läuft`,done:`fertig`,failed:`Fehler`,cancelled:`abgebrochen`};function Ha({wizardId:e,onOpen:t}){let n=c({queryKey:[`runs`,e],queryFn:()=>u.get(`/api/studio/wizards/${e}/runs`),refetchInterval:1e4});if(n.data&&!n.data.length)return(0,B.jsx)(E,{children:L(`editor.noRuns`)});let r=new Intl.DateTimeFormat(T,{dateStyle:`short`,timeStyle:`short`});return(0,B.jsx)(`div`,{className:`flex flex-col p-2`,children:n.data?.map(e=>(0,B.jsxs)(`button`,{type:`button`,onClick:()=>t(e.id),className:`flex items-center gap-3 rounded-lg px-3 py-3 text-left hover:bg-accent`,children:[(0,B.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2 text-[0.875rem]`,children:[r.format(new Date(e.createdAt)),e.mode===`test`?(0,B.jsx)(N,{children:`Test`}):(0,B.jsxs)(N,{tone:`live`,children:[`Live v`,e.version]})]}),(0,B.jsxs)(`div`,{className:`truncate text-[0.75rem] text-ink-3`,children:[Va[e.status]??e.status,e.stepTitle&&e.status!==`done`?` · ${e.stepTitle}`:``]})]}),(0,B.jsxs)(`span`,{className:`text-[0.75rem] text-ink-4 tabular-nums`,children:[e.credits,` cr`]})]},e.id))})}var Z=(e=>(e[e.Border=-1]=`Border`,e[e.Data=0]=`Data`,e[e.Function=1]=`Function`,e[e.Position=2]=`Position`,e[e.Timing=3]=`Timing`,e[e.Alignment=4]=`Alignment`,e))(Z||{}),Ua=[0,1],Wa=[1,0],Ga=[2,3],Ka=[3,2],qa={L:Ua,M:Wa,Q:Ga,H:Ka},Ja=/^\d*$/,Ya=/^[A-Z0-9 $%*+./:-]*$/,Xa=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`,Za=1,Qa=40,$a=3,eo=3,to=40,no=10,ro=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],io=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],ao=class{constructor(e,t,n,r){if(this.version=e,this.ecc=t,e<Za||e>Qa)throw RangeError(`Version value out of range`);if(r<-1||r>7)throw RangeError(`Mask value out of range`);this.size=e*4+17;let i=Array.from({length:this.size}).fill(!1);for(let e=0;e<this.size;e++)this.modules.push(i.slice()),this.types.push(i.map(()=>0));this.drawFunctionPatterns();let a=this.addEccAndInterleave(n);if(this.drawCodewords(a),r===-1){let e=1e9;for(let t=0;t<8;t++){this.applyMask(t),this.drawFormatBits(t);let n=this.getPenaltyScore();n<e&&(r=t,e=n),this.applyMask(t)}}this.mask=r,this.applyMask(r),this.drawFormatBits(r)}size;mask;modules=[];types=[];getModule(e,t){return e>=0&&e<this.size&&t>=0&&t<this.size&&this.modules[t][e]}drawFunctionPatterns(){for(let e=0;e<this.size;e++)this.setFunctionModule(6,e,e%2==0,Z.Timing),this.setFunctionModule(e,6,e%2==0,Z.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let e=this.getAlignmentPatternPositions(),t=e.length;for(let n=0;n<t;n++)for(let r=0;r<t;r++)n===0&&r===0||n===0&&r===t-1||n===t-1&&r===0||this.drawAlignmentPattern(e[n],e[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){let t=this.ecc[1]<<3|e,n=t;for(let e=0;e<10;e++)n=n<<1^(n>>>9)*1335;let r=(t<<10|n)^21522;for(let e=0;e<=5;e++)this.setFunctionModule(8,e,$(r,e));this.setFunctionModule(8,7,$(r,6)),this.setFunctionModule(8,8,$(r,7)),this.setFunctionModule(7,8,$(r,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,$(r,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,$(r,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,$(r,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;let t=this.version<<12|e;for(let e=0;e<18;e++){let n=$(t,e),r=this.size-11+e%3,i=Math.floor(e/3);this.setFunctionModule(r,i,n),this.setFunctionModule(i,r,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),a=e+r,o=t+n;a>=0&&a<this.size&&o>=0&&o<this.size&&this.setFunctionModule(a,o,i!==2&&i!==4,Z.Position)}}drawAlignmentPattern(e,t){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(e+r,t+n,Math.max(Math.abs(r),Math.abs(n))!==1,Z.Alignment)}setFunctionModule(e,t,n,r=Z.Function){this.modules[t][e]=n,this.types[t][e]=r}addEccAndInterleave(e){let t=this.version,n=this.ecc;if(e.length!==xo(t,n))throw RangeError(`Invalid argument`);let r=io[n[0]][t],i=ro[n[0]][t],a=Math.floor(bo(t)/8),o=r-a%r,s=Math.floor(a/r),c=[],l=So(i);for(let t=0,n=0;t<r;t++){let r=e.slice(n,n+s-i+(t<o?0:1));n+=r.length;let a=Co(r,l);t<o&&r.push(0),c.push(r.concat(a))}let u=[];for(let e=0;e<c[0].length;e++)c.forEach((t,n)=>{(e!==s-i||n>=o)&&u.push(t[e])});return u}drawCodewords(e){if(e.length!==Math.floor(bo(this.version)/8))throw RangeError(`Invalid argument`);let t=0;for(let n=this.size-1;n>=1;n-=2){n===6&&(n=5);for(let r=0;r<this.size;r++)for(let i=0;i<2;i++){let a=n-i,o=n+1&2?r:this.size-1-r;!this.types[o][a]&&t<e.length*8&&(this.modules[o][a]=$(e[t>>>3],7-(t&7)),t++)}}}applyMask(e){if(e<0||e>7)throw RangeError(`Mask value out of range`);for(let t=0;t<this.size;t++)for(let n=0;n<this.size;n++){let r;switch(e){case 0:r=(n+t)%2==0;break;case 1:r=t%2==0;break;case 2:r=n%3==0;break;case 3:r=(n+t)%3==0;break;case 4:r=(Math.floor(n/3)+Math.floor(t/2))%2==0;break;case 5:r=n*t%2+n*t%3==0;break;case 6:r=(n*t%2+n*t%3)%2==0;break;case 7:r=((n+t)%2+n*t%3)%2==0;break;default:throw Error(`Unreachable`)}!this.types[t][n]&&r&&(this.modules[t][n]=!this.modules[t][n])}}getPenaltyScore(){let e=0;for(let t=0;t<this.size;t++){let n=!1,r=0,i=[0,0,0,0,0,0,0];for(let a=0;a<this.size;a++)this.modules[t][a]===n?(r++,r===5?e+=$a:r>5&&e++):(this.finderPenaltyAddHistory(r,i),n||(e+=this.finderPenaltyCountPatterns(i)*to),n=this.modules[t][a],r=1);e+=this.finderPenaltyTerminateAndCount(n,r,i)*to}for(let t=0;t<this.size;t++){let n=!1,r=0,i=[0,0,0,0,0,0,0];for(let a=0;a<this.size;a++)this.modules[a][t]===n?(r++,r===5?e+=$a:r>5&&e++):(this.finderPenaltyAddHistory(r,i),n||(e+=this.finderPenaltyCountPatterns(i)*to),n=this.modules[a][t],r=1);e+=this.finderPenaltyTerminateAndCount(n,r,i)*to}for(let t=0;t<this.size-1;t++)for(let n=0;n<this.size-1;n++){let r=this.modules[t][n];r===this.modules[t][n+1]&&r===this.modules[t+1][n]&&r===this.modules[t+1][n+1]&&(e+=eo)}let t=0;for(let e of this.modules)t=e.reduce((e,t)=>e+ +!!t,t);let n=this.size*this.size,r=Math.ceil(Math.abs(t*20-n*10)/n)-1;return e+=r*no,e}getAlignmentPatternPositions(){if(this.version===1)return[];{let e=Math.floor(this.version/7)+2,t=this.version===32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.length<e;r-=t)n.splice(1,0,r);return n}}finderPenaltyCountPatterns(e){let t=e[1],n=t>0&&e[2]===t&&e[3]===t*3&&e[4]===t&&e[5]===t;return(n&&e[0]>=t*4&&e[6]>=t?1:0)+(n&&e[6]>=t*4&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){t[0]===0&&(e+=this.size),t.pop(),t.unshift(e)}};function Q(e,t,n){if(t<0||t>31||e>>>t)throw RangeError(`Value out of range`);for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function $(e,t){return!!(e>>>t&1)}var oo=class{constructor(e,t,n){if(this.mode=e,this.numChars=t,this.bitData=n,t<0)throw RangeError(`Invalid argument`);this.bitData=n.slice()}getData(){return this.bitData.slice()}},so=[1,10,12,14],co=[2,9,11,13],lo=[4,8,16,16];function uo(e,t){return e[Math.floor((t+7)/17)+1]}function fo(e){let t=[];for(let n of e)Q(n,8,t);return new oo(lo,e.length,t)}function po(e){if(!go(e))throw RangeError(`String contains non-numeric characters`);let t=[];for(let n=0;n<e.length;){let r=Math.min(e.length-n,3);Q(Number.parseInt(e.substring(n,n+r),10),r*3+1,t),n+=r}return new oo(so,e.length,t)}function mo(e){if(!_o(e))throw RangeError(`String contains unencodable characters in alphanumeric mode`);let t=[],n=0;for(;n+2<=e.length;n+=2){let r=Xa.indexOf(e.charAt(n))*45;r+=Xa.indexOf(e.charAt(n+1)),Q(r,11,t)}return n<e.length&&Q(Xa.indexOf(e.charAt(n)),6,t),new oo(co,e.length,t)}function ho(e){return e===``?[]:go(e)?[po(e)]:_o(e)?[mo(e)]:[fo(yo(e))]}function go(e){return Ja.test(e)}function _o(e){return Ya.test(e)}function vo(e,t){let n=0;for(let r of e){let e=uo(r.mode,t);if(r.numChars>=1<<e)return 1/0;n+=4+e+r.bitData.length}return n}function yo(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)===`%`?(t.push(Number.parseInt(e.substring(n+1,n+3),16)),n+=2):t.push(e.charCodeAt(n));return t}function bo(e){if(e<Za||e>Qa)throw RangeError(`Version number out of range`);let t=(16*e+128)*e+64;if(e>=2){let n=Math.floor(e/7)+2;t-=(25*n-10)*n-55,e>=7&&(t-=36)}return t}function xo(e,t){return Math.floor(bo(e)/8)-ro[t[0]][e]*io[t[0]][e]}function So(e){if(e<1||e>255)throw RangeError(`Degree out of range`);let t=[];for(let n=0;n<e-1;n++)t.push(0);t.push(1);let n=1;for(let r=0;r<e;r++){for(let e=0;e<t.length;e++)t[e]=wo(t[e],n),e+1<t.length&&(t[e]^=t[e+1]);n=wo(n,2)}return t}function Co(e,t){let n=t.map(e=>0);for(let r of e){let e=r^n.shift();n.push(0),t.forEach((t,r)=>n[r]^=wo(t,e))}return n}function wo(e,t){if(e>>>8||t>>>8)throw RangeError(`Byte out of range`);let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return n}function To(e,t,n=1,r=40,i=-1,a=!0){if(!(Za<=n&&n<=r&&r<=Qa)||i<-1||i>7)throw RangeError(`Invalid value`);let o,s;for(o=n;;o++){let n=xo(o,t)*8,i=vo(e,o);if(i<=n){s=i;break}if(o>=r)throw RangeError(`Data too long`)}for(let e of[Wa,Ga,Ka])a&&s<=xo(o,e)*8&&(t=e);let c=[];for(let t of e){Q(t.mode[0],4,c),Q(t.numChars,uo(t.mode,o),c);for(let e of t.getData())c.push(e)}let l=xo(o,t)*8;Q(0,Math.min(4,l-c.length),c),Q(0,(8-c.length%8)%8,c);for(let e=236;c.length<l;e^=253)Q(e,8,c);let u=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((e,t)=>u[t>>>3]|=e<<7-(t&7)),new ao(o,t,u,i)}function Eo(e,t){let{ecc:n=`L`,boostEcc:r=!1,minVersion:i=1,maxVersion:a=40,maskPattern:o=-1,border:s=1}=t||{},c=typeof e==`string`?ho(e):Array.isArray(e)?[fo(e)]:void 0;if(!c)throw Error(`uqr only supports encoding string and binary data, but got: ${typeof e}`);let l=To(c,qa[n],i,a,o,r),u=Do({version:l.version,maskPattern:l.mask,size:l.size,data:l.modules,types:l.types},s);return t?.invert&&(u.data=u.data.map(e=>e.map(e=>!e))),t?.onEncoded?.(u),u}function Do(e,t=1){if(!t)return e;let{size:n}=e,r=n+t*2;e.size=r,e.data.forEach(e=>{for(let n=0;n<t;n++)e.unshift(!1),e.push(!1)});for(let n=0;n<t;n++)e.data.unshift(Array.from({length:r},e=>!1)),e.data.push(Array.from({length:r},e=>!1));let i=Z.Border;e.types.forEach(e=>{for(let n=0;n<t;n++)e.unshift(i),e.push(i)});for(let n=0;n<t;n++)e.types.unshift(Array.from({length:r},e=>i)),e.types.push(Array.from({length:r},e=>i));return e}function Oo(e){return e.replace(/&/g,`&amp;`).replace(/"/g,`&quot;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}function ko(e,t={}){let n=Eo(e,t),{pixelSize:r=10,whiteColor:i=`white`,blackColor:a=`black`}=t,o=n.size*r,s=n.size*r,c=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${s} ${o}">`,l=[];for(let e=0;e<n.size;e++)for(let t=0;t<n.size;t++){let i=t*r,a=e*r;n.data[e][t]&&l.push(`M${i},${a}h${r}v${r}h-${r}z`)}return c+=`<rect fill="${Oo(i)}" width="${s}" height="${o}"/>`,c+=`<path fill="${Oo(a)}" d="${l.join(``)}"/>`,c+=`</svg>`,c}var Ao=e=>`${e.slice(0,4)} ${e.slice(4)}`;function jo(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}async function Mo(e,t){let n=new Image,r=URL.createObjectURL(new Blob([e],{type:`image/svg+xml`}));try{n.src=r,await n.decode();let e=document.createElement(`canvas`);e.width=1024,e.height=1024;let i=e.getContext(`2d`);if(!i)return;i.imageSmoothingEnabled=!1,i.drawImage(n,0,0,1024,1024);let a=await new Promise(t=>e.toBlob(t,`image/png`));a&&jo(a,t)}finally{URL.revokeObjectURL(r)}}function No({url:e,code:t,title:n}){let r=(0,z.useMemo)(()=>ko(e,{ecc:`M`,border:2,pixelSize:8}),[e]),i=(n.trim()||`wizard`).replace(/[^\p{L}\p{N}]+/gu,`-`).toLowerCase();return(0,B.jsxs)(`div`,{className:`flex gap-4`,children:[(0,B.jsx)(`div`,{role:`img`,"aria-label":L(`share.qr`),className:`size-28 shrink-0 overflow-hidden rounded-lg bg-white [&>svg]:size-full`,dangerouslySetInnerHTML:{__html:r}}),(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2`,children:[(0,B.jsx)(`p`,{className:`text-[0.8125rem] text-ink-3`,children:L(`share.qrHint`)}),t?(0,B.jsxs)(`p`,{className:`text-[0.8125rem] text-ink-3`,children:[L(`share.code`),` `,(0,B.jsx)(`span`,{className:`select-all font-mono text-[0.9375rem] text-ink tracking-wider`,children:Ao(t)})]}):null,(0,B.jsxs)(`div`,{className:`mt-auto flex gap-2`,children:[(0,B.jsxs)(F,{variant:`secondary`,size:`sm`,onClick:()=>void Mo(r,`${i}-qr.png`),children:[(0,B.jsx)(we,{className:`size-3.5`}),` PNG`]}),(0,B.jsxs)(F,{variant:`secondary`,size:`sm`,onClick:()=>jo(new Blob([r],{type:`image/svg+xml`}),`${i}-qr.svg`),children:[(0,B.jsx)(we,{className:`size-3.5`}),` SVG`]})]})]})]})}var Po=e=>e.replace(/&/g,`&amp;`).replace(/"/g,`&quot;`).replace(/</g,`&lt;`),Fo=()=>new Intl.DateTimeFormat(T,{timeStyle:`short`});function Io({url:e,title:t}){let[n,r]=(0,z.useState)(!1),[i,a]=(0,z.useState)(!1),[,o,s]=e.match(/^(.*)\/w\/([^/]+)$/)??[];if(!s)return null;let c=`<script async src="${o}/embed.js" data-wizard="${s}"${n?` data-mode="modal" data-label="${Po(t)}"`:``}><\/script>`,l=[L(`embed.inline`),L(`embed.modal`)];return(0,B.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,B.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,B.jsx)(`p`,{className:`text-[0.8125rem] text-ink-3`,children:L(n?`embed.modalHint`:`embed.inlineHint`)}),(0,B.jsxs)(F,{variant:`secondary`,size:`sm`,onClick:()=>{navigator.clipboard.writeText(c),a(!0),setTimeout(()=>a(!1),1500)},children:[i?(0,B.jsx)(re,{className:`size-3.5`}):(0,B.jsx)(pe,{className:`size-3.5`}),L(i?`share.copied`:`share.copy`)]})]}),(0,B.jsx)(k,{value:l[+!!n],onChange:e=>r(e===l[1]),options:l}),(0,B.jsx)(`pre`,{className:`select-all whitespace-pre-wrap break-all rounded-lg bg-paper-2 px-3 py-2.5 font-mono text-[0.75rem] text-ink-2 leading-relaxed`,children:c})]})}var Lo=e=>O(`inline-flex h-8 items-center gap-1.5 rounded-full px-3 font-medium text-[0.8125rem] transition`,e?`bg-paper-2 text-ink`:`text-ink-3 hover:text-ink`);function Ro({url:e,code:t,title:n}){let[r,i]=(0,z.useState)(!1),[a,o]=(0,z.useState)(null),s=e=>o(t=>t===e?null:e);return(0,B.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,B.jsxs)(`div`,{className:`flex gap-2`,children:[(0,B.jsx)(P,{readOnly:!0,value:e,onFocus:e=>e.target.select(),className:`font-mono text-[0.8125rem]`}),(0,B.jsxs)(F,{variant:`secondary`,onClick:()=>{navigator.clipboard.writeText(e),i(!0),setTimeout(()=>i(!1),1500)},children:[r?(0,B.jsx)(re,{className:`size-4`}):(0,B.jsx)(pe,{className:`size-4`}),L(r?`share.copied`:`share.copy`)]})]}),(0,B.jsxs)(`div`,{className:`-ml-3 flex flex-wrap gap-1`,children:[(0,B.jsxs)(`button`,{type:`button`,className:Lo(!1),onClick:()=>nt(e),children:[(0,B.jsx)(he,{className:`size-3.5`}),` `,L(`share.open`)]}),(0,B.jsxs)(`button`,{type:`button`,"aria-pressed":a===`website`,className:Lo(a===`website`),onClick:()=>s(`website`),children:[(0,B.jsx)(ct,{className:`size-3.5`}),` `,L(`share.website`)]}),(0,B.jsxs)(`button`,{type:`button`,"aria-pressed":a===`qr`,className:Lo(a===`qr`),onClick:()=>s(`qr`),children:[(0,B.jsx)(bt,{className:`size-3.5`}),` `,L(`share.qr`)]})]}),a===`website`?(0,B.jsx)(Io,{url:e,title:n}):null,a===`qr`?(0,B.jsx)(No,{url:e,code:t,title:n}):null]})}var zo={sandbox:`cloud.problem.sandbox`,mcp:`cloud.problem.mcp`,model:`cloud.problem.model`,connector:`cloud.problem.connector`,invalid:`cloud.problem.invalid`};function Bo({problems:e,quiet:t}){return(0,B.jsx)(`ul`,{className:O(`flex flex-col gap-2 text-[0.8125rem]`,t?`text-ink-3`:`text-ink-2`),children:e.map((e,n)=>(0,B.jsxs)(`li`,{children:[e.steps.length?(0,B.jsxs)(`span`,{className:O(`font-medium`,t?`text-ink-2`:`text-ink`),children:[e.steps.map(e=>L(`cloud.stepName`,{title:e.title})).join(`, `),`:`,` `]}):null,L(zo[e.code]??`cloud.problem.invalid`,{detail:e.detail}),e.detail&&e.code!==`mcp`&&e.code!==`sandbox`?(0,B.jsxs)(`details`,{className:`mt-0.5`,children:[(0,B.jsx)(`summary`,{className:`cursor-pointer text-[0.75rem] text-ink-4 hover:text-ink-3`,children:L(`share.details`)}),(0,B.jsx)(`span`,{className:`mt-0.5 block break-words font-mono text-[0.6875rem] text-ink-4`,children:e.detail})]}):null]},n))})}function Vo({error:e}){let t=d(),n=e.reason===`space_limit`,r=c({queryKey:[`cloud-spaces`],queryFn:()=>u.get(`/api/studio/cloud/spaces`),enabled:n,retry:!1}),i=R({mutationFn:()=>u.post(`/api/studio/cloud/replace`),onSettled:()=>Promise.all([t.invalidateQueries({queryKey:[`cloud`]}),t.invalidateQueries({queryKey:[`cloud-spaces`]}),t.invalidateQueries({queryKey:[`wizards`]})])});if(!n)return(0,B.jsxs)(`p`,{children:[e.message,` `,e.reason===`signed_out`?(0,B.jsx)(a,{to:`/settings/account`,className:`font-medium underline underline-offset-2`,children:L(`local.toAccount`)}):null,e.again?(0,B.jsx)(`span`,{className:`text-ink-3`,children:L(`cloud.again`,{when:Fo().format(new Date(e.again))})}):null]});let o=(r.data?.spaces??[]).map(e=>e.name);return(0,B.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,B.jsx)(`p`,{children:e.message}),(0,B.jsx)(`p`,{className:`text-ink-2`,children:L(`cloud.spaceLimit`)}),o.length?(0,B.jsx)(`ul`,{className:`list-disc pl-5`,children:o.map((e,t)=>(0,B.jsx)(`li`,{children:e},t))}):null,(0,B.jsx)(`div`,{children:(0,B.jsx)(F,{variant:`secondary`,size:`sm`,busy:i.isPending,onClick:()=>window.confirm(L(`cloud.replaceConfirm`))&&i.mutate(),children:L(`cloud.replace`)})}),i.error?(0,B.jsx)(`p`,{className:`text-rose`,children:i.error.message}):null]})}function Ho({wizard:e,where:t,me:n,cloud:r}){let i=d(),a=R({mutationFn:()=>u.post(`/api/studio/wizards/${e.id}/cloud`),onSuccess:t=>{i.setQueryData([`cloud`,e.id],t),i.invalidateQueries({queryKey:[`wizards`]})}}),o=`flex items-start gap-2 text-[0.875rem] text-ink-2`;switch(t.kind){case`draft`:return null;case`unknown`:return(0,B.jsx)(ye,{className:`size-4 text-ink-4`});case`here`:return(0,B.jsxs)(`p`,{className:o,children:[(0,B.jsx)(Ee,{className:`mt-0.5 size-4 shrink-0 text-ink-3`}),` `,L(`where.hereHint`)]});case`live`:return(0,B.jsxs)(`p`,{className:o,title:r?.copy?L(`cloud.sent`,{v:r.copy.version,when:new Intl.DateTimeFormat(T,{dateStyle:`short`,timeStyle:`short`}).format(new Date(r.copy.syncedAt))}):void 0,children:[t.cloud?(0,B.jsx)(it,{className:`mt-0.5 size-4 shrink-0 text-moss`}):(0,B.jsx)(`span`,{className:`mt-[7px] size-1.5 shrink-0 rounded-full bg-moss`}),t.cloud?L(`where.liveAt`,{host:Ie(n.account?.cloudUrl??``),v:t.runs}):L(`editor.published`,{v:t.runs})]})}let s=r?.copy??null,c=r?.error??null,l=s&&!s.runnable?s.problems.filter(e=>e.blocking):[],f=e.published&&(!s||s.version<(e.publishedVersion??0)||c)&&c?.reason!==`space_limit`&&c?.reason!==`signed_out`;return(0,B.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg bg-amber-tint px-3 py-2.5 text-[0.875rem]`,children:[c?(0,B.jsx)(Vo,{error:c}):t.kind===`missing`?(0,B.jsx)(`p`,{children:t.why}):null,c&&t.runs!==null?(0,B.jsx)(`p`,{className:`text-[0.8125rem] text-ink-3`,children:L(`cloud.keepsRunning`,{v:t.runs})}):null,l.length?(0,B.jsx)(Bo,{problems:l}):null,f?(0,B.jsx)(`div`,{children:(0,B.jsxs)(F,{variant:`secondary`,size:`sm`,busy:a.isPending,onClick:()=>a.mutate(),children:[(0,B.jsx)(ot,{className:`size-3.5`}),L(s||c?`cloud.resend`:`cloud.send`)]})}):null,a.error?(0,B.jsx)(`p`,{className:`text-[0.8125rem] text-rose`,children:a.error.message}):null]})}function Uo({wizard:e,cloud:t}){let n=t?.copy??null,r=e.publishedVersion,i=n!==null&&r!==null&&n.version<r,a=!n||e.dirty||i,o=c({queryKey:[`cloud-check`,e.id,e.revision],queryFn:()=>u.get(`/api/studio/wizards/${e.id}/cloud/check`),enabled:t?.linked===!0&&a,retry:!1,staleTime:3e4}),s=!a&&n?n.problems.filter(e=>!e.blocking):[],l=a?o.data?.problems??[]:[];return s.length||l.length||a&&o.data?.documents?(0,B.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[s.length?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`text-[0.8125rem] text-ink-3`,children:L(`cloud.notes`)}),(0,B.jsx)(Bo,{problems:s,quiet:!0})]}):null,l.length?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`text-[0.8125rem] text-ink-2`,children:L(l.some(e=>e.blocking)?`cloud.checkBlocking`:`cloud.check`)}),(0,B.jsx)(Bo,{problems:l,quiet:!0})]}):null,a&&o.data?.documents?(0,B.jsx)(`p`,{className:`text-[0.8125rem] text-ink-3`,children:L(`cloud.documents`)}):null]}):a&&o.error&&!t?.error?(0,B.jsx)(`p`,{className:`text-[0.8125rem] text-ink-3`,children:o.error.message}):null}function Wo({way:e}){let t=i(),n=_e(!1);return(0,B.jsxs)(`div`,{className:O(`flex flex-col gap-3`,e?`rounded-lg bg-cobalt-tint px-3 py-3`:`border-border-soft border-t pt-5`),children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`font-medium text-[0.875rem]`,children:L(`share.others`)}),(0,B.jsx)(`p`,{className:`mt-1 text-[0.8125rem] text-ink-2 leading-relaxed`,children:L(e===`website`?`teaser.website`:e===`qr`?`teaser.qr`:`share.othersHint`)})]}),(0,B.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,B.jsx)(F,{size:`sm`,busy:n.link.isPending,onClick:()=>n.link.mutate({}),children:L(`account.signIn`)}),(0,B.jsx)(F,{size:`sm`,variant:`secondary`,onClick:()=>t(`/settings/account`),children:L(`account.create`)})]}),(0,B.jsx)(ge,{...n})]})}function Go({wizard:e,cloud:t}){let n=d(),[r,i]=(0,z.useState)(!1),[a,o]=(0,z.useState)(String(e.dailyRunLimit)),s=()=>Promise.all([n.invalidateQueries({queryKey:[`wizard`,e.id]}),n.invalidateQueries({queryKey:[`wizards`]})]),c=R({mutationFn:t=>u.patch(`/api/studio/wizards/${e.id}`,t),onSuccess:s}),l=R({mutationFn:()=>u.post(`/api/studio/wizards/${e.id}/rotate-link`),onSuccess:({cloud:t})=>(t&&n.setQueryData([`cloud`,e.id],{linked:!0,...t}),s())}),f=e.readOnly,p=c.error??l.error,m=ia(e.id,e.draft),h=m.data?.available&&m.data.reserve>0?Math.round(m.data.reserve*e.dailyRunLimit):null,g=r||!!p;return(0,B.jsxs)(`div`,{className:`border-border-soft border-t pt-4`,children:[(0,B.jsxs)(`button`,{type:`button`,"aria-expanded":g,onClick:()=>i(e=>!e),className:`flex w-full items-center justify-between gap-4 text-left text-[0.875rem]`,children:[(0,B.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,B.jsx)(ae,{className:O(`size-4 text-ink-3 transition`,g&&`rotate-90`)}),L(`share.settings`)]}),(0,B.jsxs)(`span`,{className:`text-[0.8125rem] text-ink-3 tabular-nums`,children:[L(e.shareEnabled?`share.on`:`share.off`),` ·`,` `,L(`share.perDay`,{n:e.dailyRunLimit})]})]}),g?(0,B.jsxs)(`div`,{className:`mt-4 flex flex-col gap-5`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`span`,{className:`text-[0.875rem]`,children:L(`share.enabled`)}),(0,B.jsx)(M,{checked:e.shareEnabled,disabled:f,onChange:e=>c.mutate({shareEnabled:e})})]}),(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,B.jsx)(`span`,{className:`whitespace-nowrap text-[0.875rem]`,children:L(`share.limit`)}),(0,B.jsx)(`div`,{className:`w-24`,children:(0,B.jsx)(P,{inputMode:`numeric`,className:`text-right`,disabled:f,value:a,onChange:e=>o(e.target.value.replace(/\D/g,``)),onBlur:()=>{let t=Number(a);t>=1&&t!==e.dailyRunLimit&&c.mutate({dailyRunLimit:t})}})})]}),h!==null&&m.data?(0,B.jsx)(`p`,{className:`text-[0.8125rem] text-ink-3 tabular-nums`,children:L(`estimate.share`,{run:Math.round(m.data.credits).toLocaleString(),day:h.toLocaleString()})}):null,(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,B.jsx)(`span`,{className:`text-[0.8125rem] text-ink-3`,children:L(t?.copy?`share.rotateCloud`:`share.rotateHint`)}),(0,B.jsxs)(F,{variant:`ghost`,size:`sm`,busy:l.isPending,disabled:f,onClick:()=>l.mutate(),children:[(0,B.jsx)(te,{className:`size-3.5`}),` `,L(`share.rotate`)]})]}),p?(0,B.jsx)(`p`,{className:`text-[0.8125rem] text-rose`,children:p.message}):null]}):null,f?(0,B.jsx)(`p`,{className:`mt-3 text-[0.8125rem] text-ink-3`,children:L(`share.readOnly`)}):null]})}function Ko({wizard:e,open:t,onClose:n,publish:r}){let i=Se(),a=i.data?.mode===`local`,o=a&&!!i.data?.account,s=xe(e.id,t&&o),l=i.data?Pe(e,i.data,o?s.data:null):{kind:`unknown`},d=Ae(l),f=i.data?.mode===`managed`&&e.published,p=c({queryKey:[`wizard-code`,e.id,e.shareToken],queryFn:()=>u.get(`/api/studio/wizards/${e.id}/code`),enabled:t&&f}),m=!e.published||e.dirty&&!e.readOnly,[h,g]=(0,z.useState)(null);return(0,B.jsx)(be,{open:t,onClose:n,title:L(`share.title`),children:(0,B.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[m?(0,B.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg bg-amber-tint px-3 py-2.5`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,B.jsx)(`p`,{className:`text-[0.875rem]`,children:L(e.published?`share.unpublished`:`share.publishFirst`)}),r?(0,B.jsx)(F,{size:`sm`,busy:r.busy,disabled:r.disabled,onClick:r.run,children:L(`editor.publish`)}):null]}),o&&!e.published?(0,B.jsx)(`p`,{className:`text-[0.8125rem] text-ink-3`,children:L(`cloud.onPublish`)}):null]}):null,i.data&&e.published?(0,B.jsx)(Ho,{wizard:e,where:l,me:i.data,cloud:s.data}):null,s.isError?(0,B.jsx)(`p`,{className:`text-[0.8125rem] text-rose`,children:s.error.message}):null,d?(0,B.jsx)(Ro,{url:d,code:f?p.data?.code:s.data?.copy?.code,title:e.draft.title}):null,a&&!o&&e.published?(0,B.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,B.jsxs)(`div`,{className:`flex gap-2`,children:[(0,B.jsx)(P,{readOnly:!0,value:Re(e),onFocus:e=>e.target.select(),className:`font-mono text-[0.8125rem] text-ink-3`}),(0,B.jsxs)(F,{variant:`secondary`,onClick:()=>nt(Re(e)),children:[(0,B.jsx)(he,{className:`size-4`}),` `,L(`share.open`)]})]}),Le.account?(0,B.jsx)(`div`,{className:`-ml-3 flex flex-wrap gap-1`,children:[`website`,`qr`].map(e=>(0,B.jsxs)(`button`,{type:`button`,"aria-pressed":h===e,className:Lo(h===e),onClick:()=>g(t=>t===e?null:e),children:[e===`website`?(0,B.jsx)(ct,{className:`size-3.5`}):(0,B.jsx)(bt,{className:`size-3.5`}),L(e===`website`?`share.website`:`share.qr`),(0,B.jsx)(De,{className:`size-3 text-cobalt`})]},e))}):null]}):null,o?(0,B.jsx)(Uo,{wizard:e,cloud:s.data}):null,a&&!o&&Le.account?(0,B.jsx)(Wo,{way:h}):null,(0,B.jsx)(Go,{wizard:e,cloud:o?s.data:void 0}),o&&e.published?(0,B.jsxs)(`button`,{type:`button`,onClick:()=>nt(Re(e)),className:`inline-flex items-center gap-1.5 self-start text-[0.8125rem] text-ink-3 hover:text-ink`,children:[(0,B.jsx)(Ee,{className:`size-3.5`}),` `,L(`share.openHere`),(0,B.jsx)(he,{className:`size-3`})]}):null]})})}var qo=[`title`,`description`,`avatar`,`intro`,`lists`,`connections`],Jo=(e,t)=>JSON.stringify(e)===JSON.stringify(t);function Yo(e,t,n){let r={...n};for(let n of qo)Jo(t[n],e[n])||Object.assign(r,{[n]:t[n]});let i=new Map(e.steps.map(e=>[e.id,e])),a=new Set(t.steps.map(e=>e.id)),o=n.steps.filter(e=>{let t=i.get(e.id);return a.has(e.id)||!t||!Jo(t,e)});return t.steps.forEach((e,n)=>{let r=i.get(e.id);if(r&&Jo(r,e))return;let a=o.findIndex(t=>t.id===e.id);if(a!==-1){o[a]=e;return}let s=t.steps.slice(0,n).reverse().find(e=>o.some(t=>t.id===e.id));o.splice(s?o.findIndex(e=>e.id===s.id)+1:0,0,e)}),{...r,steps:o}}function Xo(e){let t=d(),n=(0,z.useMemo)(()=>[`wizard`,e],[e]),r=`/api/studio/wizards/${e}`,i=(0,z.useRef)(null),a=(0,z.useRef)(Promise.resolve()),s=(0,z.useRef)(null),c=(0,z.useRef)(null),l=(0,z.useRef)(!1),[p,m]=(0,z.useState)(!1),[h,g]=(0,z.useState)(0),[_,v]=(0,z.useState)(null),[ee,te]=(0,z.useState)(null),y=(0,z.useCallback)(()=>!!(i.current||l.current||s.current),[]),ne=(0,z.useCallback)(async()=>{let e=await u.get(r);t.setQueryData(n,t=>t&&y()?{...e,draft:t.draft,title:t.title,revision:t.revision,dirty:!0}:e)},[t,n,r,y]),b=(0,z.useCallback)(()=>{a.current=a.current.then(async()=>{let e=s.current,i=t.getQueryData(n);if(e&&i){s.current=null,l.current=!0,m(!0);try{let a=await u.put(`${r}/draft`,{definition:e,baseRevision:i.revision});c.current=s.current?e:null,t.setQueryData(n,e=>e&&{...e,revision:a.revision,issues:a.issues})}catch(i){let a=Oe(i);if(a){s.current=null,c.current=null,te(a);let e=await u.get(r).catch(()=>null);e&&t.setQueryData(n,e);return}if(!(i instanceof f&&i.status===409)){s.current??=e,console.error(`[draft] save failed`,i);return}let o=await u.get(r),l=Yo(c.current??o.draft,s.current??e,o.draft);c.current=o.draft,s.current=l,t.setQueryData(n,{...o,draft:l,title:l.title,dirty:!0}),g(Date.now()),b()}finally{l.current=!1,m(!1)}}})},[t,n,r]),x=(0,z.useCallback)(r=>{e&&(y()||(c.current=t.getQueryData(n)?.draft??null),s.current=r,t.setQueryData(n,e=>e&&{...e,draft:r,title:r.title,dirty:!0}),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{i.current=null,b()},600))},[t,n,e,y,b]);return(0,z.useEffect)(()=>{if(!e)return;let r=new EventSource(o(`/api/studio/wizards/${e}/stream`));return r.addEventListener(`change`,e=>{let r=JSON.parse(e.data),i=t.getQueryData(n);r.kind===`draft`&&i&&r.revision<=i.revision||(ne(),r.kind===`draft`&&r.source===`mcp`&&v({client:r.client??`MCP`,steps:r.touched,at:Date.now()}))}),r.addEventListener(`hello`,e=>{let{revision:r}=JSON.parse(e.data),i=t.getQueryData(n);i&&r!==i.revision&&ne()}),()=>r.close()},[t,n,e,ne]),(0,z.useEffect)(()=>{if(!_)return;let e=setTimeout(()=>v(null),6e3);return()=>clearTimeout(e)},[_]),(0,z.useEffect)(()=>{if(!h)return;let e=setTimeout(()=>g(0),4e3);return()=>clearTimeout(e)},[h]),{save:x,saving:p,remote:_,merged:h>0,refused:ee}}function Zo({remote:e,merged:t}){return e?(0,B.jsxs)(N,{tone:`ember`,children:[(0,B.jsx)(Me,{className:`size-3`}),` `,L(`editor.changedVia`,{client:e.client})]}):t?(0,B.jsxs)(N,{children:[(0,B.jsx)(mt,{className:`size-3`}),` `,L(`editor.merged`)]}):null}var Qo=[...We,`image`,`video`],$o={chat:`editor.chat`,step:`editor.step`,files:`editor.files`,runs:`editor.runs`},es=`wizards.editor.pane`,ts=420,ns=340,rs=()=>Math.max(ns,window.innerWidth-480);function is(){try{let e=Number(localStorage.getItem(es));return e?Math.min(Math.max(e,ns),rs()):ts}catch{return ts}}function as(){let[e,t]=(0,z.useState)(is),n=(0,z.useCallback)(e=>{let n=Math.round(Math.min(Math.max(e,ns),rs()));t(n);try{localStorage.setItem(es,String(n))}catch{}},[]);return{width:e,onPointerDown:t=>{t.preventDefault();let r=t.clientX,i=e,a=e=>n(i+r-e.clientX),o=()=>{window.removeEventListener(`pointermove`,a),window.removeEventListener(`pointerup`,o),document.body.style.removeProperty(`cursor`),document.body.style.removeProperty(`user-select`)};document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`,window.addEventListener(`pointermove`,a),window.addEventListener(`pointerup`,o)},onKeyDown:t=>{let r=t.shiftKey?64:16;t.key===`ArrowLeft`?(t.preventDefault(),n(e+r)):t.key===`ArrowRight`&&(t.preventDefault(),n(e-r))},reset:()=>n(ts)}}function os(){let{id:e}=l(),t=i(),n=d(),a=Se(),[s,f]=r(),p=c({queryKey:[`wizard`,e],queryFn:()=>u.get(`/api/studio/wizards/${e}`),refetchOnWindowFocus:!1}),[m,g]=(0,z.useState)(null),[_,te]=(0,z.useState)(`chat`),y=as(),[ne,b]=(0,z.useState)(!1),[x,S]=(0,z.useState)(null),[re,ie]=(0,z.useState)(null),ae=(0,z.useCallback)(e=>ie(e&&e.status!==`done`?e.step?.id??null:null),[]),{save:oe,saving:de,remote:fe,merged:pe,refused:me}=Xo(e),he=Te(),C=ce(p.data,(t,r)=>{n.setQueryData([`wizard`,e],e=>e&&{...e,draft:t,revision:r,title:t.title,blank:!1})}),ge=(0,z.useRef)(!1);(0,z.useEffect)(()=>{let e=s.get(`prompt`);e&&p.data&&!ge.current&&(ge.current=!0,f({},{replace:!0}),C.send(e))},[s,p.data,C,f]);let _e=c({queryKey:[`wizard-models`,e,p.data?.revision],queryFn:()=>u.get(`/api/studio/wizards/${e}/models`),enabled:!!p.data}).data?.missing??[],ve=a.data?.mode===`local`&&!!a.data.account,w=xe(e??``,!!e&&ve),T=_e.some(e=>e.blocking),E=R({mutationFn:()=>u.post(`/api/studio/wizards/${e}/test-runs`),onSuccess:({runId:e})=>S(e)}),D=R({mutationFn:()=>u.post(`/api/studio/wizards/${e}/publish`),onSuccess:async({cloud:t})=>{t&&n.setQueryData([`cloud`,e],{linked:!0,...t}),await Promise.all([n.invalidateQueries({queryKey:[`wizard`,e]}),n.invalidateQueries({queryKey:[`cloud`,e]}),n.invalidateQueries({queryKey:[`wizards`]})]),b(!0)}}),be=(0,z.useMemo)(()=>new Set((p.data?.issues??[]).map(e=>e.stepId).filter(Boolean)),[p.data?.issues]);if(p.isLoading||!a.data)return(0,B.jsx)(`div`,{className:`flex min-h-dvh items-center justify-center text-ink-4`,children:(0,B.jsx)(ye,{})});if(!p.data)return(0,B.jsx)(`div`,{className:`p-10 text-center text-ink-3`,children:L(`run.notFound`)});let k=p.data,A=k.draft,M=C.phase!==`idle`&&k.blank,P=k.issues.length>0,I=he.data?.find(e=>e.id===k.projectId),Ce=I?I.origin===`local`:a.data.limits.build||he.isLoading,Ee=k.readOnly?L(Ce?`readonly.wizard`:`readonly.server`):null,De=a.data.mode===`local`&&Le.account&&_e.some(e=>Qo.includes(e.cls))?a.data.account?a.data.models?.source===`account`?null:`use`:`connect`:null,Oe=me??(D.error?D.error.message:null),Ae=e=>{g(e),e&&te(`step`)};return(0,B.jsxs)(`div`,{className:`flex h-dvh flex-col`,children:[Ee?(0,B.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 border-border-soft border-b bg-paper-2 px-4 py-2 text-[0.8125rem] text-ink-2 sm:px-6`,children:[(0,B.jsx)(se,{className:`size-4 shrink-0 text-ink-3`}),(0,B.jsx)(`p`,{className:`min-w-0 flex-1`,children:Ee})]}):null,Oe?(0,B.jsx)(`div`,{className:`shrink-0 bg-rose-tint px-4 py-2 text-[0.8125rem] text-rose sm:px-6`,children:Oe}):null,(0,B.jsxs)(`header`,{className:`flex h-16 shrink-0 items-center gap-2 px-3 sm:px-4`,children:[(0,B.jsx)(j,{label:`Zurück`,onClick:()=>t(`/`),children:(0,B.jsx)(ee,{className:`size-5`})}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>Ae(`__wizard`),className:`min-w-0 truncate rounded-md px-2 py-1 text-left hover:bg-accent`,children:(0,B.jsx)(`span`,{className:`font-display font-semibold text-[1.0625rem] tracking-tight`,children:A.title})}),(0,B.jsx)(`span`,{className:`hidden sm:inline-flex`,children:k.published?k.dirty?(0,B.jsx)(N,{tone:`warn`,children:L(`editor.unpublishedChanges`)}):(0,B.jsx)(ke,{where:Pe(k,a.data,ve?w.data:null),me:a.data,version:k.publishedVersion}):(0,B.jsx)(N,{children:L(`editor.notPublished`)})}),de?(0,B.jsx)(ye,{className:`size-4 text-ink-4`}):null,(0,B.jsx)(`span`,{className:`hidden md:inline-flex`,children:(0,B.jsx)(Zo,{remote:fe,merged:pe})}),(0,B.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[(0,B.jsx)(`a`,{href:o(`/api/studio/wizards/${k.id}/export`),download:!0,"aria-label":L(`editor.export`),title:L(`editor.export`),className:`hidden size-9 shrink-0 items-center justify-center rounded-full text-ink-3 transition hover:bg-accent hover:text-ink sm:inline-flex`,children:(0,B.jsx)(we,{className:`size-4`})}),(0,B.jsxs)(F,{variant:`secondary`,size:`sm`,disabled:P||M||T,busy:E.isPending,onClick:()=>E.mutate(),children:[(0,B.jsx)(vt,{className:`size-3.5`}),` `,L(`editor.test`)]}),k.published&&(!k.dirty||k.readOnly)?(0,B.jsxs)(F,{size:`sm`,onClick:()=>b(!0),children:[(0,B.jsx)(h,{className:`size-3.5`}),` `,L(`editor.share`)]}):k.readOnly?null:(0,B.jsxs)(B.Fragment,{children:[ve?(0,B.jsx)(j,{label:L(`editor.share`),className:`max-sm:hidden`,onClick:()=>b(!0),children:(0,B.jsx)(h,{className:`size-4`})}):null,(0,B.jsx)(F,{size:`sm`,disabled:P||M,busy:D.isPending,onClick:()=>D.mutate(),children:L(`editor.publish`)})]}),(0,B.jsx)(`span`,{className:`ml-2 hidden md:inline-flex`,children:(0,B.jsx)(ze,{me:a.data})}),(0,B.jsx)(`span`,{className:`hidden sm:inline-flex`,children:(0,B.jsx)(Fe,{me:a.data})})]})]}),(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col lg:flex-row`,children:[(0,B.jsxs)(`section`,{className:`relative min-h-[45vh] flex-1 overflow-hidden lg:min-h-0`,children:[P&&!M?(0,B.jsxs)(`div`,{className:`absolute top-3 right-3 left-3 z-10 mx-auto max-w-xl animate-rise rounded-xl bg-card p-4 shadow-elevated ring-1 ring-rose/30`,children:[(0,B.jsx)(`p`,{className:`text-[0.875rem]`,children:L(`editor.issues`)}),(0,B.jsx)(`ul`,{className:`mt-2 list-disc pl-5 text-[0.8125rem] text-ink-2`,children:k.issues.slice(0,4).map((e,t)=>(0,B.jsx)(`li`,{children:e.message},t))}),k.readOnly?null:(0,B.jsx)(F,{size:`sm`,variant:`quiet`,className:`mt-3`,disabled:C.phase!==`idle`,onClick:()=>{te(`chat`),C.send(`Bitte behebe diese Probleme im Wizard:\n${k.issues.map(e=>`- ${e.message}`).join(`
2
- `)}`)},children:L(`editor.fixWithChat`)})]}):null,!P&&!M&&_e.length?(0,B.jsxs)(`div`,{className:O(`absolute top-3 right-3 left-3 z-10 mx-auto max-w-xl animate-rise rounded-xl bg-card p-4 shadow-elevated ring-1`,T?`ring-rose/30`:`ring-amber/30`),children:[(0,B.jsx)(`p`,{className:`text-[0.875rem]`,children:L(T?`editor.models.blocking`:`editor.models.optional`)}),(0,B.jsx)(`ul`,{className:`mt-2 list-disc pl-5 text-[0.8125rem] text-ink-2`,children:_e.map(e=>(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{className:`text-ink`,children:L(`class.${e.cls}`)}),` (`,e.steps.map(e=>`„${e.title}“`).join(`, `),`): `,e.problem]},e.cls))}),(0,B.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-x-3 gap-y-2`,children:[(0,B.jsx)(F,{size:`sm`,variant:`quiet`,onClick:()=>t(`/settings/models`),children:L(`editor.models.settings`)}),De===`connect`?(0,B.jsxs)(`p`,{className:`text-[0.8125rem] text-ink-3`,children:[L(`teaser.models`),` `,(0,B.jsx)(`button`,{type:`button`,className:`font-medium text-ink underline underline-offset-2`,onClick:()=>t(`/settings/account`),children:L(`teaser.connect`)})]}):De===`use`?(0,B.jsx)(`p`,{className:`text-[0.8125rem] text-ink-3`,children:L(`teaser.modelsLinked`)}):null]})]}):null,M?(0,B.jsx)(`div`,{className:`flex h-full items-center justify-center px-6 text-[0.875rem] text-ink-3`,children:(0,B.jsx)(le,{chat:C,spinner:`size-4 text-ember`})}):(0,B.jsx)(wa,{def:A,selected:m,onSelect:Ae,issueSteps:be,activeStep:x?re:null,pulse:fe?.steps,wizardId:k.id})]}),(0,B.jsxs)(`aside`,{className:`relative flex h-[55vh] min-h-0 w-full shrink-0 flex-col bg-card shadow-[0_0_0_1px_var(--border-soft)] lg:h-auto lg:w-(--pane) lg:rounded-tl-3xl`,style:{"--pane":`${y.width}px`},children:[(0,B.jsx)(`div`,{role:`separator`,"aria-orientation":`vertical`,"aria-label":L(`editor.resize`),"aria-valuenow":y.width,tabIndex:0,title:L(`editor.resize`),onPointerDown:y.onPointerDown,onKeyDown:y.onKeyDown,onDoubleClick:y.reset,className:`group -left-1.5 absolute inset-y-0 z-10 hidden w-5 cursor-col-resize outline-none lg:block`,children:(0,B.jsx)(`span`,{className:`-translate-y-1/2 absolute top-1/2 left-[9px] h-12 w-1.5 rounded-full bg-ink-4/40 transition group-hover:bg-ember/70 group-focus-visible:bg-ember group-active:h-16 group-active:bg-ember`})}),(0,B.jsx)(`nav`,{className:`flex shrink-0 gap-1 px-3 pt-3`,children:[`chat`,`step`,`files`,`runs`].map(e=>(0,B.jsx)(`button`,{type:`button`,onClick:()=>te(e),className:O(`h-9 rounded-full px-4 font-medium text-[0.8125rem] transition`,_===e?`bg-paper-2 text-ink`:`text-ink-3 hover:text-ink`),children:L($o[e])},e))}),(0,B.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:_===`chat`?(0,B.jsx)(ue,{chat:C,avatar:A.avatar,closed:Ee??void 0}):_===`step`?(0,B.jsx)(za,{def:A,selected:m,update:oe,onSelect:Ae,issues:k.issues,mcpServers:k.mcpServers,files:k.files,wizardId:k.id,readOnly:k.readOnly}):_===`files`?(0,B.jsx)(Tt,{wizardId:k.id,files:k.files,readOnly:k.readOnly}):(0,B.jsx)(Ha,{wizardId:k.id,onOpen:S})})]})]}),x?(0,B.jsx)(`div`,{className:`fixed inset-0 z-50 flex justify-end bg-[oklch(20%_0.01_60/0.22)] backdrop-blur-[1px]`,onClick:()=>S(null),children:(0,B.jsxs)(`div`,{className:`flex h-full w-full max-w-[680px] animate-rise flex-col bg-background shadow-overlay`,onClick:e=>e.stopPropagation(),children:[(0,B.jsxs)(`div`,{className:`flex h-14 shrink-0 items-center justify-between px-4`,children:[(0,B.jsx)(N,{children:`Test`}),(0,B.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,B.jsx)(F,{variant:`ghost`,size:`sm`,busy:E.isPending,disabled:P,onClick:()=>E.mutate(),children:L(`editor.restart`)}),(0,B.jsx)(j,{label:L(`editor.close`),onClick:()=>S(null),children:(0,B.jsx)(Ne,{className:`size-5`})})]})]}),(0,B.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:(0,B.jsx)(v,{runId:x,compact:!0,onRestart:()=>E.mutate(),onView:ae},x)})]})}):null,(0,B.jsx)(Ko,{wizard:k,open:ne,onClose:()=>b(!1),publish:k.readOnly?void 0:{run:()=>D.mutate(),busy:D.isPending,disabled:P||M}})]})}export{os as EditorPage};
@@ -1 +0,0 @@
1
- var e=JSON.parse(`[{"version":"v0.2.14","timestamp":1791291785,"commits":[{"id":"ff63c86","message":"\\"What's new\\" in the banner about a newer release opens the changelog of that release in the studio instead of its page on GitHub; offline it shows the changelog this version came with","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.2.13","timestamp":1791289689,"commits":[{"id":"94297b8","message":"the space opens behind the folder in the top bar and has four parts in the settings' sliding menu: Info & Marke (Basis, Logos, Farben, Assets, Fakten), Wissen (Dokumente), Daten and Ergebnisse; Daten holds tables with typed columns, edited cell by cell, and Markdown pages, of the space or of one of its wizards; a wizard's list can be shared, one table for every run that the person running it never sees, and a step with the new Pages tool writes the wizard's pages; the space's own tables and pages go to the cloud with each published wizard and are read-only there, while what runs write stays where they ran; Ergebnisse lists the finished runs of all wizards or of one, the wizard with the latest result first, with search, live or test and the last days; a plugin's section of the space chooses its part; the studio is a step smaller on laptops and nearer the edge on phones; the run-log example no longer adds an icon to the top bar","group":"Added","scope":null,"breaking":false}]},{"version":"v0.2.12","timestamp":1791289473,"commits":[{"id":"3aaf939","message":"the documentation deploys like the cloud runtime: its image is built on GitHub's runners beside the checks of a release tag and pushed to GHCR, and the server only pulls it (deploy/Dockerfile.docs, built with --pull); the docs Dockerfile keeps its install cached across releases; a change of the docs image no longer redeploys the runtime","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.2.11","timestamp":1791287681,"commits":[{"id":"50041f3","message":"the cloud runtime deploys in minutes: its two images are built on GitHub's runners beside the checks of a release tag, with their layers cached in the registry, and pushed to GHCR; once both are green they become latest and the server pulls them instead of building for up to an hour; the runtime's Dockerfile keeps both dependency installs cached across releases (the root version blanked out, the production install in its own stage) and puts what changes every release last; IMAGE_TAG on the server pins a release","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.2.10","timestamp":1791286327,"commits":[{"id":"c5c99b0","message":"signing in from the studio returns to the studio page that asked for it, not to the host's root, which is the landing page since the studio moved to /studio","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.2.9","timestamp":1791284806,"commits":[{"id":"fff4ab3","message":"plugins add to the space: sections of the space page under the plugin's name in its menu, tools of the space assistant whose results the plugin draws as cards in its chat, a block and tools for every AI step of the space, texts in the space's search index that project_search finds beside its documents, events when a space is made, changed or deleted and when a file is read or removed, jobs that run on a schedule, public routes under an address of their own, and the runtime's web reader and document parser; the run-log example shows a space's last runs on the space page; the plugin docs describe the space","group":"Added","scope":null,"breaking":false}]},{"version":"v0.2.8","timestamp":1791284267,"commits":[{"id":"040a292","message":"Settings → Models says what the wizards can do (text, images, videos, voice, voice notes) and who does each: an AI subscription on this computer, an own API key (OpenAI, Anthropic, Google, fal.ai, ElevenLabs, Replicate, AI Gateway), a local model, or the credits, which step in where nothing of one's own is set up (a switch, on with a linked account) and may name a model of the gateway (credits:<model>: fal, ElevenLabs, Veo …); each provider's key is checked with the provider before it is kept, and a try makes a text, an image, a voice or a short clip to look at; in the cloud the page is the team's, its keys sealed per tenant and changed by its admins; voice notes run on transcription models (Scribe, Whisper) where one is bound, also on the credits; the settings show their name in the top bar's trail instead of a heading, and one container on the left slides one level down to the menu of Models and Integrate and back; on a phone the sections, a section's menu and the page take turns with a way back; Integrate puts the app's name, what it gets and its steps on one line","group":"Added","scope":null,"breaking":false}]},{"version":"v0.2.7","timestamp":1791281338,"commits":[{"id":"cc15aad","message":"the space is a page of its own: the top bar opens it beside the gear, and a menu at its left jumps to Basis, Logos, Farben, Assets, Dokumente and Fakten and marks the one in view (a picker on a phone); the studio, its assistant and the docs call a project a space (German „Space“), the address is /space and /settings/project leads there; the settings keep Konto, Connectors, Modelle and Einbinden, and the gear opens Konto; the assistant's input is one line until the text needs more, in its card and docked at the bottom","group":"Added","scope":null,"breaking":false}]},{"version":"v0.2.6","timestamp":1791280942,"commits":[{"id":"198e23c","message":"a wizard's link installs and bookmarks with the wizard's own icon: its engenty in its own colour on a pale ground of that colour with its name in small capitals below, drawn by the runtime for the manifest, the iPhone's home screen and phones that cut icons to their own shape; the page's favicon is the engenty alone, so a bookmark or tab shows it too; the name keeps the whole words that fit and never ends on a short word like \\"aus\\"; the studio's icon stands in where the runtime cannot draw; on a computer the start page offers a bookmark (⌘ D or Strg + D) instead of an install, phones keep \\"Zum Startbildschirm hinzufügen\\"","group":"Added","scope":null,"breaking":false}]},{"version":"v0.2.5","timestamp":1791272370,"commits":[{"id":"fc58644","message":"a local install says where each wizard runs and which link others can open: the cards and the editor's top bar show Live with a cloud when engenty.ai runs the version, Lokal when it runs only on this computer, Wird gesendet or Nicht in der Cloud when it did not arrive; a card's Link copies the cloud's address; the share dialog leads with that one link, says on top where the wizard runs and what the cloud lacks, folds website, QR code and the settings away, and creates a new link in the cloud too; the avatar and its menu show whether an account is connected, with its credits; Settings → Konto puts engenty.ai first and takes name and e-mail from the account; without an account the share dialog, a card's Link and the note about missing models say what an account would add","group":"Added","scope":null,"breaking":false}]},{"version":"v0.2.4","timestamp":1791242529,"commits":[{"id":"fbcfbc3","message":"a wizard a local install sends arrives whole or not at all, and the install sends again by itself: the cloud runtime keeps the files' bytes first and writes the project, the wizard, its workspace, the version and the logo in one transaction, so an object store that fails in the middle leaves nothing half done; the install plans another try after a minute, then twice as long each time up to an hour, when the cloud was out of reach or answered with an error of its own, and the share dialog says when; refusals stay with the person; a first sync that stops at an unreachable cloud marks the remaining wizards for the retry too; the public link is set on every sync; the runtime asks GitHub for a newer release once an hour instead of every six","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.2.3","timestamp":1791238483,"commits":[{"id":"38d161b","message":"the mobile app's data folder (apps/mobile/src/data) is in the repository: the ignore rule for the runtime's data folder hid every folder of that name, so main neither typechecked nor passed the mobile app's tests; the rule now names the runtime's two data folders","group":"Fixed","scope":null,"breaking":false},{"id":"251d6f4","message":"with an account signed in, what a local install publishes also runs in the cloud: the published version and its files go to the account's cloud runtime under the ids they have here, which shows the project without editing and makes the link; Settings → Konto signs in or creates an account with an invitation code and shows the credits and when they end; the share dialog says what a wizard lacks in the cloud; a team without building rights changes nothing on the server, and what visitors send is capped in size","group":"Added","scope":null,"breaking":false},{"id":"d80eb4e","message":"inside the mobile app the runner reads in the system's font, like the app's own screens; headings keep the brand's","group":"Added","scope":null,"breaking":false},{"id":"4604875","message":"the mobile app looks native: the system font, Liquid Glass (a blur before iOS 26) on the floating tab bar and the nav buttons, inset grouped lists with hairlines, Add as a form sheet with eight ID boxes, swipe to share or delete a result, files listed as the Files app does, settings rows with icon tiles","group":"Added","scope":null,"breaking":false},{"id":"d9edbe4","message":"the mobile app runs on Android: no iOS-only WebView prop that crashed the Run screen, plain http only for a runtime on this computer, result rows in the wizard's colour","group":"Fixed","scope":null,"breaking":false},{"id":"34a4588","message":"the mobile app (apps/mobile, Expo): wizards added by QR code, ID or link, runs in the runtime's runner with the app's scanner, share sheet, downloads, notifications and sign-in sheet, results kept on the phone and shared from there; engenty.ai's /w/ and /s/ links and engenty-wizards:// open in it","group":"Added","scope":null,"breaking":false},{"id":"2c19636","message":"a run tells the mobile app's device when it is done, failed or waits for the person: the app gives the run its device (POST /api/runs/:id/notify), the runtime asks the Manage-App to push (POST /v1/push in the contract); the app's own requests name the visitor in an x-wizards-visitor header, since iOS merges a Cookie header with its cookie store","group":"Added","scope":null,"breaking":false},{"id":"767e170","message":"the runner works inside the mobile app: ?app=1 drops the web's header, footer and install hint, and window.engentyApp takes over the scanner, share sheet, downloads, wake lock, notifications and account sign-in; a wizard gets an 8-character ID (GET /api/public/codes/:code) and the studio's share dialog shows it with a QR code to download as PNG or SVG; the runtime serves apple-app-site-association and assetlinks.json for the app","group":"Added","scope":null,"breaking":false},{"id":"d8f3712","message":"plan for the mobile app that runs wizards on iOS and Android","group":"Docs","scope":null,"breaking":false}]},{"version":"v0.2.2","timestamp":1791237386,"commits":[{"id":"a6c55de","message":"server.generate asks a model of the current tenant (a class, a prompt, optionally a zod schema for an object), on the models its studio is set up with and paid like any other call; without a model it throws with status 503 and the code no_model, which a route passes on","group":"Added","scope":"plugins","breaking":false},{"id":"e895e50","message":"the documentation deploys to engenty.ai/docs: an image of its own (apps/docs/Dockerfile, a standalone Next.js server on port 8896), and a release tag moves the branch deploy/docs when the site or its pages changed","group":"Deploy","scope":null,"breaking":false},{"id":"4d8b773","message":"a documentation site with a user guide and the developer docs for plugins, built like the engenty repo's: Next.js and Fumadocs in apps/docs, the pages in docs/content, in the app's light and dark colours; docs/plugins.md became its pages, and the product's build, image, package and credits leave the site out","group":"Docs","scope":null,"breaking":false}]},{"version":"v0.2.1","timestamp":1791223500,"commits":[{"id":"9c16b47","message":"the AI apps start the MCP server as the wizards command, after the rename from engenty-wizards","group":"Fixed","scope":null,"breaking":false},{"id":"f118703","message":"the wizards run in the person's own AI apps — connect writes the MCP server into Claude Desktop, Cursor, Codex and others, a run shows the wizard itself as an MCP App widget, and Settings → Einbinden adds an app with one click and tests it until it works","group":"Added","scope":null,"breaking":false}]},{"version":"v0.2.0","timestamp":1791223087,"commits":[{"id":"4404371","message":"a runtime takes plugins: tools for agent steps, routes with tables of their own, listeners on runs that end, and pages, top bar icons and settings sections in the studio; they load from modules/ and PLUGINS_DIR at start and again while it runs","group":"Added","scope":null,"breaking":false}]},{"version":"v0.1.11","timestamp":1791208594,"commits":[{"id":"85facbd","message":"the package is on npm as wizards, and the README's studio picture shows the branches with their conditions","group":"Docs","scope":null,"breaking":false},{"id":"6ca5cfc","message":"a branch that skips steps runs beside them in the editor, with its condition readable on the line; it ran behind the step with the condition hidden","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.1.10","timestamp":1791206923,"commits":[{"id":"8f35bf0","message":"the README shows the studio with a branched flow and a wizard in use, from its first page to the result","group":"Docs","scope":null,"breaking":false},{"id":"7abf9df","message":"the editor's review notes, tool names and branch labels follow the language; they were German in the English studio","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.1.9","timestamp":1791203125,"commits":[{"id":"5182fec","message":"the installer is engenty.ai/install.sh (was wizards.sh), and the command and the npm package are wizards (were engenty-wizards); the installer renames an install made under the old names","group":"Changed","scope":null,"breaking":false},{"id":"c6500f9","message":"the proxy sends the runtime /w/ and /s/ with the slash","group":"Docs","scope":null,"breaking":false}]},{"version":"v0.1.8","timestamp":1791196160,"commits":[{"id":"a965d36","message":"the marketplace's pages are written by the site at engenty.ai, at /wizards/<slug> and /de/wizards/<slug>","group":"Docs","scope":null,"breaking":false}]},{"version":"v0.1.7","timestamp":1791194770,"commits":[{"id":"66e9109","message":"a banner in the studio says when a newer release is out; the update installs from there, the runtime restarts into the new version and the page reloads","group":"Added","scope":null,"breaking":false},{"id":"5e27bf6","message":"the studio chat counts the seconds of a turn and says what the architect is doing and thinking; pasted pictures show in the thread and the architect sees them","group":"Added","scope":null,"breaking":false}]},{"version":"v0.1.6","timestamp":1791167380,"commits":[{"id":"481807b","message":"video models render at 720p, or 480p when a step asks; a larger clip is scaled down, and the price follows the resolution","group":"Added","scope":null,"breaking":false},{"id":"bb20f2b","message":"the settings say Codex makes images on the sign-in too; only video and audio still need a key","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.1.5","timestamp":1791151312,"commits":[{"id":"f4b7e43","message":"plan for a setup by capability","group":"Docs","scope":null,"breaking":false},{"id":"8ddaab7","message":"a wizard says which models it lacks before it runs, and only refuses to start when every path needs one; templates can be filtered by capability, and those this install cannot run are greyed out","group":"Added","scope":null,"breaking":false},{"id":"2689c74","message":"Codex makes images on the ChatGPT plan, and runs each model class on its own model (Luna, Sol, Astra); image, video and voice stay empty without a gateway key instead of naming models nothing can reach","group":"Added","scope":null,"breaking":false}]},{"version":"v0.1.4","timestamp":1791144283,"commits":[{"id":"071e6ca","message":"the changelog's groups read NEW, FIXED, DOCS in every language, like the entries they stand before","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.1.3","timestamp":1791142528,"commits":[{"id":"32d1698","message":"the publish job fetches the package artifact by name; with one artifact left it no longer lands in its own folder","group":"Fixed","scope":"release","breaking":false}]},{"version":"v0.1.2","timestamp":1791140122,"commits":[{"id":"4bc37b9","message":"a marketplace entry opens in the local studio at localhost:24368 instead of the Mac app's engenty-wizards:// link","group":"Added","scope":null,"breaking":false},{"id":"e09e748","message":"the Mac app is no longer built or offered; the studio offers to install itself as a Chrome app in a banner, starting at login on a Mac is a LaunchAgent that runs the command, and the setup, README and docs point there","group":"Added","scope":null,"breaking":false},{"id":"ab10b49","message":"engenty wizards starts at login — the Mac app opens in the menu bar without its window (\\"Open at Login\\" in its menus), on Linux a systemd user service; the setup asks, \`engenty-wizards autostart on|off\` switches it, and the Mac app's server takes port 24368 too","group":"Added","scope":null,"breaking":false},{"id":"239e338","message":"the setup page installs a missing AI client in its own terminal, and both setups suggest the client whose app is on the Mac — its subscription is most likely already paid for","group":"Added","scope":null,"breaking":false},{"id":"b479df7","message":"an inline terminal's stream sends its last lines and its end before it closes; a page that opens it afterwards gets them all","group":"Fixed","scope":null,"breaking":false}]},{"version":"v0.1.1","timestamp":1791138130,"commits":[{"id":"21f70df","message":"the German tagline on the sign-in page follows the new one","group":"Docs","scope":null,"breaking":false},{"id":"765ae7c","message":"the studio says when a newer release is out and, on an install made by wizards.sh, updates it from the footer","group":"Added","scope":null,"breaking":false},{"id":"825da6c","message":"the tagline is \\"Make a wish. Get your wizard.\\" In the README, the npm package description and the banner of wizards.sh.","group":"Docs","scope":null,"breaking":false},{"id":"05e2e5c","message":"the local runtime listens on 24368, AGENT on a phone keypad; the Docker image stays on 8891","group":"Added","scope":null,"breaking":false},{"id":"71bb778","message":"Ctrl-C stops engenty-wizards again — the login shell that reads the person's variables runs in a session of its own and no longer keeps the terminal","group":"Fixed","scope":null,"breaking":false},{"id":"ee20646","message":"wizards.sh opens with the tall engenty — one eye; it wakes up, looks around, hops and blinks","group":"Added","scope":null,"breaking":false},{"id":"81d4f21","message":"the studio moves to /studio; the root of a host is free for a landing page","group":"Added","scope":null,"breaking":false},{"id":"f6058fd","message":"the marketplace is an app of its own; the runtime searches it live and keeps its starters and the starred entries for offline use","group":"Added","scope":null,"breaking":false},{"id":"e6fdeab","message":"engenty-wizards://new?starter=<id> opens a marketplace template in the desktop app","group":"Added","scope":null,"breaking":false}]},{"version":"v0.1.0","timestamp":1791100948,"commits":[{"id":"71cc075","message":"install with wizards.sh; the local install and how its pieces share it","group":"Docs","scope":null,"breaking":false},{"id":"6ae641d","message":"the desktop app is a window on the local install and brings no runtime along","group":"Added","scope":null,"breaking":false},{"id":"9c9dbb8","message":"an installer, wizards.sh, that every runtime serves","group":"Added","scope":null,"breaking":false},{"id":"34d0a1a","message":"an engenty-wizards command for a local install in ~/.engenty/wizards","group":"Added","scope":null,"breaking":false},{"id":"4ac6329","message":"the search skips filler words with umlauts too","group":"Fixed","scope":null,"breaking":false},{"id":"3bda9a6","message":"the gallery's footer stays without version, changelog and open-source links","group":"Fixed","scope":null,"breaking":false},{"id":"9e65725","message":"a changelog and open-source credits in the studio's footer; pnpm release cuts a release from the commits","group":"Added","scope":null,"breaking":false},{"id":"45d2906","message":"an entry's search terms are scored one by one, not as one long text","group":"Fixed","scope":null,"breaking":false},{"id":"648819c","message":"marketplace entries carry the words people ask for, so a search by words finds them","group":"Added","scope":null,"breaking":false},{"id":"0838373","message":"one project unless the limit says more; an account page; previews and layouts in the project settings","group":"Added","scope":null,"breaking":false},{"id":"8da2aaf","message":"a project holds base infos, logos, colours, assets, documents and facts for all its wizards","group":"Added","scope":null,"breaking":false},{"id":"8679ae2","message":"the gallery has the studio's footer line","group":"Fixed","scope":null,"breaking":false},{"id":"d5086f3","message":"the gallery's field is narrower","group":"Fixed","scope":null,"breaking":false},{"id":"4a82b26","message":"the gallery invites to start a wizard from a template","group":"Other","scope":null,"breaking":false},{"id":"07d2def","message":"a template's header is the dialog's own colour under a spotlight; in the light a tinted grey","group":"Fixed","scope":null,"breaking":false},{"id":"d10be9f","message":"a template opens with its flow as a diagram; the gallery's field is narrower, its chips centred","group":"Added","scope":null,"breaking":false},{"id":"fbee998","message":"the gallery says what it is, compact and from the left; its search is a two-line field to write into","group":"Added","scope":null,"breaking":false},{"id":"478f271","message":"the gallery opens with one question and the search field; quieter filter chips","group":"Added","scope":null,"breaking":false},{"id":"15d7f94","message":"the marketplace search asks the model for the signed-in tenant; a sentence without a model keeps only close finds","group":"Fixed","scope":null,"breaking":false},{"id":"c254357","message":"a marketplace of wizards to start from, with a gallery, admin, translation and search","group":"Added","scope":null,"breaking":false},{"id":"4d6e270","message":"AI media is marked in its file and labelled with the EU icons (AI Act, Art. 50)","group":"Added","scope":null,"breaking":false},{"id":"f86f070","message":"two writers of the same blob no longer share a temporary file","group":"Fixed","scope":null,"breaking":false},{"id":"c6a06cc","message":"plan for definition versions and importing older packages","group":"Docs","scope":null,"breaking":false},{"id":"a37e826","message":"wizard packages carry their own extension, .wizard","group":"Added","scope":null,"breaking":false},{"id":"e104574","message":"wizards export as a package (.wizard.zip) and import into a project","group":"Added","scope":null,"breaking":false},{"id":"b389539","message":"the editor pane's resize handle is a short, thick pill","group":"Added","scope":null,"breaking":false},{"id":"670c3ce","message":"chat composer takes files (+) and dictation","group":"Added","scope":null,"breaking":false},{"id":"766f6fd","message":"editor side pane resizable; Steps tab steps with ← / →, header and strip spacing fixed","group":"Added","scope":null,"breaking":false},{"id":"8205c88","message":"the arrow on a live wizard's card opens it in a new tab","group":"Added","scope":null,"breaking":false},{"id":"2696a50","message":"the AI clients page says it is an MCP server and sets a client up step by step","group":"Added","scope":null,"breaking":false},{"id":"6004a7d","message":"settings in sub-pages with a nav on the left (a dropdown on phones); MCP servers under Connectors","group":"Added","scope":null,"breaking":false},{"id":"49054fa","message":"settings button in the top bar; the user menu closes on Einstellungen","group":"Added","scope":null,"breaking":false},{"id":"65c9867","message":"at most 5 projects per tenant","group":"Added","scope":null,"breaking":false},{"id":"7ecca24","message":"the project switcher switches the wizard list","group":"Fixed","scope":null,"breaking":false},{"id":"c037604","message":"light / dark in the user menu, in place of the top bar's toggle","group":"Added","scope":null,"breaking":false},{"id":"ef464ab","message":"upload limits and sorting, pictures while a step works, faster photo steps, a feedback box on reviews","group":"Added","scope":null,"breaking":false},{"id":"1cbc02f","message":"starters for receipts, video ad, property film, window offer, menu plan and ten website helpers","group":"Added","scope":null,"breaking":false},{"id":"8069115","message":"photos reach an installed AI client, and a photo without text is described","group":"Fixed","scope":null,"breaking":false},{"id":"013f7df","message":"embed a wizard in a website, inline or behind a button that opens it in a window","group":"Added","scope":null,"breaking":false},{"id":"78c2a2a","message":"the editor at /edit/<id>, signed-out visitors of the start page go to SIGNED_OUT_URL","group":"Fixed","scope":null,"breaking":false},{"id":"deb4942","message":"wizards at /w/<token>, the app at the root of https://engenty.ai","group":"Added","scope":null,"breaking":false},{"id":"b811b4c","message":"serve the app under a path (https://engenty.ai/w)","group":"Added","scope":null,"breaking":false},{"id":"4821fb1","message":"the hosted addresses (engenty.ai) as defaults, no private repo names in the public sources","group":"Fixed","scope":null,"breaking":false},{"id":"ca2207e","message":"the drop engenty as app icon, tray icon and favicon","group":"Added","scope":null,"breaking":false},{"id":"90fcbce","message":"a README for people who install it, developer notes in docs/development.md","group":"Docs","scope":null,"breaking":false},{"id":"4b0c54a","message":"a built runtime links to its own port, the sandbox falls back to agentOS","group":"Fixed","scope":null,"breaking":false},{"id":"7071edf","message":"no links to the clients' pages, a placeholder dot in the footer","group":"Fixed","scope":"setup","breaking":false},{"id":"14171bf","message":"installed AI clients as the model of a local runtime, first-start setup as a wizard","group":"Added","scope":null,"breaking":false},{"id":"ca3f3a7","message":"align vertical head turn with pointer gaze","group":"Fixed","scope":"engenty","breaking":false},{"id":"e1f04ff","message":"add furry and jelly renderers with an interactive builder","group":"Added","scope":"engenty","breaking":false},{"id":"99207af","message":"whole credits in the top bar, a footer line with the account's places","group":"Added","scope":null,"breaking":false},{"id":"e498ab1","message":"decision steps — yes/no and choice output fields, branches on step outputs","group":"Added","scope":null,"breaking":false},{"id":"e83a433","message":"pnpm workspace with apps/ and packages/","group":"Changed","scope":null,"breaking":false},{"id":"281e3a3","message":"desktop app — Tauri shell with the runtime as a Node sidecar","group":"Added","scope":null,"breaking":false},{"id":"9296521","message":"a database per tenant, model classes, sign-in at the Manage-App, phone inputs","group":"Added","scope":null,"breaking":false},{"id":"63b1693","message":"engenty's built-in connectors — Gmail, Drive, Calendar, Contacts, Outlook, OneDrive, Slack, GitHub, HubSpot, S3","group":"Added","scope":null,"breaking":false},{"id":"cd431c9","message":"connectors from the integrations registry, asked-first changes in connected accounts","group":"Added","scope":null,"breaking":false},{"id":"8dbe30d","message":"harden browser and file downloads, step navigation in the inspector, store and mailbox docs","group":"Added","scope":null,"breaking":false},{"id":"54370e8","message":"light/dark mode with engenty-coloured dark pages, jelly and fur coats, quiet focus rings","group":"Added","scope":null,"breaking":false},{"id":"371b033","message":"lists and connections kept between runs, mail and browser tools, camera and ask panel","group":"Added","scope":null,"breaking":false},{"id":"07df228","message":"setup per AI client and a self-served plugin with /wizard","group":"Added","scope":null,"breaking":false},{"id":"de27ae8","message":"interactive widgets with a workspace per wizard, shareable results","group":"Added","scope":null,"breaking":false},{"id":"12854e1","message":"live studio — MCP and other edits show up without a reload","group":"Added","scope":null,"breaking":false},{"id":"7f72420","message":"OAuth sign-in for MCP clients, connected apps in settings","group":"Added","scope":null,"breaking":false},{"id":"3014699","message":"MCP endpoint for authoring wizards with personal API keys","group":"Added","scope":null,"breaking":false},{"id":"985e612","message":"engenty wizards — prompt-built AI wizards with shareable links","group":"Added","scope":null,"breaking":false}]}]`);export{e as default};