stageflow 0.30.0 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -115,19 +115,19 @@ ${`:root {\n${Object.entries(re).map(([e,t])=>` ${e}: ${t};`).join(`
115
115
  `),c=im(s);if(c<0)return t.prevInput=e,nm(e,o);let l=s.slice(0,c).join(`
116
116
  `),u=om(s.slice(c).join(`
117
117
  `).trim()),d;if(l===t.settledText)d=t.settledBlocks;else if(t.settledText.length>0&&l.startsWith(t.settledText)){let e=nm(l.slice(t.settledText.length),o);d=sm(t.settledBlocks,e)}else d=nm(l,o);let f=u?nm(u,o):[];return t.settledText=l,t.settledBlocks=d,t.settledUpTo=c,t.prevInput=e,sm(d,f)}var lm={start:`0`,center:`auto`},um={start:null,center:`auto`},dm={k7Eaqz:`xkj4a21`,$$css:!0},fm={proseWidth:e=>[{ks0D6T:e==null?e:`xf68679`,$$css:!0},{"--x-maxWidth":(e=>typeof e==`number`?e+`px`:e??void 0)(e)}],proseAlign:e=>[{kUOVxO:e==null?e:`xvlecxo`,$$css:!0},{"--x-marginInline":(e=>typeof e==`number`?e+`px`:e??void 0)(e)}],blockWidth:e=>[dm,{"--x-minWidth":(e=>typeof e==`number`?e+`px`:e??void 0)(`min(${e}, 100%)`)}],blockAlign:e=>[{kUOVxO:e==null?e:`xvlecxo`,$$css:!0},{"--x-marginInline":(e=>typeof e==`number`?e+`px`:e??void 0)(e)}],cellMinWidth:e=>[{k7Eaqz:e==null?e:`xkj4a21`,$$css:!0},{"--x-minWidth":(e=>typeof e==`number`?e+`px`:e??void 0)(e)}]},pm={center:{k9WMMc:`x2b8uid`,$$css:!0},end:{k9WMMc:`xp4054r`,$$css:!0}},Q={root:{kMv6JI:`x9ynric`,kMwMTN:`x1tgivj0`,kLWn49:`xw6l6zx`,kGuDYH:`xjm74w1`,kzqmXN:`xh8yej3`,ks0D6T:`x193iq5w`,k7Eaqz:`xeuugli`,kHjlTd:`x1mzt3pk`,$$css:!0},inlineRoot:{k1xSpc:`xt0psk2`,kzqmXN:`x14atkfc`,ks0D6T:`x1x1rfll`,kMv6JI:`xjb2p0i`,kMwMTN:`x1heor9g`,kLWn49:`x15bjb6t`,kGuDYH:`x1qlqyl8`,$$css:!0},headingBase:{kMv6JI:`x1g81bgm`,kMwMTN:`x1tgivj0`,$$css:!0},h1:{kGuDYH:`xcg7oai`,k63SB2:`x1v68xuy`,kLWn49:`xfmsba7`,$$css:!0},h2:{kGuDYH:`x1xvnhcw`,k63SB2:`x12yy4cs`,kLWn49:`x1cpk1wn`,$$css:!0},h3:{kGuDYH:`xii13ha`,k63SB2:`x1jcxfy8`,kLWn49:`xwjzt0u`,$$css:!0},h4:{kGuDYH:`x8tkxat`,k63SB2:`x2hcmsi`,kLWn49:`xqerer`,$$css:!0},h5:{kGuDYH:`xsgqta0`,k63SB2:`xno150v`,kLWn49:`xo3gurs`,$$css:!0},h6:{kGuDYH:`xw5ohdf`,k63SB2:`x1pw4frv`,kLWn49:`xeixjfn`,$$css:!0},spacingHeadingMajorDefault:{keoZOQ:`x13rv44w`,k1K539:`xep27e5`,$$css:!0},spacingHeadingMinorDefault:{keoZOQ:`x1s1qpeq`,k1K539:`x1p37lm5`,$$css:!0},spacingParagraphDefault:{keoZOQ:`xj6sv8s`,k1K539:`xep27e5`,$$css:!0},spacingCodeblockDefault:{keoZOQ:`x1s1qpeq`,k1K539:`xwh1t77`,$$css:!0},spacingBlockquoteDefault:{keoZOQ:`x1s1qpeq`,k1K539:`xwh1t77`,$$css:!0},spacingListDefault:{keoZOQ:`xj6sv8s`,k1K539:`xep27e5`,$$css:!0},spacingTableDefault:{keoZOQ:`x1s1qpeq`,k1K539:`xwh1t77`,$$css:!0},spacingHrDefault:{keoZOQ:`x13rv44w`,k1K539:`x4d5cxa`,$$css:!0},spacingImageDefault:{keoZOQ:`xj6sv8s`,k1K539:`xep27e5`,$$css:!0},spacingHeadingMajorCompact:{keoZOQ:`x1s1qpeq`,k1K539:`x1p37lm5`,$$css:!0},spacingHeadingMinorCompact:{keoZOQ:`xj6sv8s`,k1K539:`x14cgwvg`,$$css:!0},spacingParagraphCompact:{keoZOQ:`xcsaf9d`,k1K539:`x14cgwvg`,$$css:!0},spacingCodeblockCompact:{keoZOQ:`xtbrsbv`,k1K539:`x1p37lm5`,$$css:!0},spacingBlockquoteCompact:{keoZOQ:`xtbrsbv`,k1K539:`x1p37lm5`,$$css:!0},spacingListCompact:{keoZOQ:`xcsaf9d`,k1K539:`x14cgwvg`,$$css:!0},spacingTableCompact:{keoZOQ:`xtbrsbv`,k1K539:`x1p37lm5`,$$css:!0},spacingHrCompact:{keoZOQ:`xj6sv8s`,k1K539:`xep27e5`,$$css:!0},spacingImageCompact:{keoZOQ:`xtbrsbv`,k1K539:`x1p37lm5`,$$css:!0},noMarginBlockStart:{keoZOQ:`xdj266r`,$$css:!0},noMarginBlockEnd:{k1K539:`xat24cr`,$$css:!0},codeBlockWrapper:{ks0D6T:`x193iq5w`,$$css:!0},tableWrapper:{kXHlph:`xw2csxc`,ks0D6T:`x193iq5w`,"--container-padding-inline-start":`xrhngw9`,"--container-padding-inline-end":`xjsfl84`,"--container-padding-block-start":`x1047aw6`,"--container-padding-block-end":`xax9j7h`,$$css:!0},blockIndent:{kUOVxO:`x1ho7dyk`,$$css:!0},hr:{kMzoRj:`xc342km`,kEafiO:`x11xkdxz`,kPef9Z:`x13fuv20`,kLZC3w:`x1pc3f07`,$$css:!0}};function mm(e){let t=e.match(/^([\d.]+)ms$/);if(t)return parseFloat(t[1]);let n=e.match(/^([\d.]+)s$/);return n?parseFloat(n[1])*1e3:null}function hm(e){let t=0;for(let n of e)switch(n.type){case`text`:t+=n.content.length;break;case`code`:t+=n.content.length;break;case`image`:t+=n.alt.length;break;case`bold`:case`italic`:case`strikethrough`:case`link`:t+=hm(n.children);break;case`break`:t+=1;break;case`citation`:t+=1}return t}function gm(e){let t=0;for(let n of e)switch(n.type){case`heading`:case`paragraph`:t+=hm(n.children);break;case`codeblock`:t+=n.content.length;break;case`blockquote`:t+=gm(n.children);break;case`list`:for(let e of n.items)t+=gm(e.children);break;case`table`:for(let e of n.headers)t+=hm(e.children);for(let e of n.rows)for(let n of e)t+=hm(n.children);break;case`hr`:break;case`image`:t+=n.alt.length}return t}var _m={1:Q.h1,2:Q.h2,3:Q.h3,4:Q.h4,5:Q.h5,6:Q.h6},vm=/^(javascript|data|vbscript):/i;function ym(e){let t=e.trim();return t.length===0||vm.test(t)?null:t}function bm(e,t){let n=[];for(let r of t){r.pattern.lastIndex=0;let t;for(;(t=r.pattern.exec(e))!==null;){let i;if(r.getEndIndex){let n=r.getEndIndex(e,t);if(n===!1)continue;i=n}else i=t.index+t[0].length;n.push({start:t.index,end:i,match:t,plugin:r})}}n.sort((e,t)=>e.start-t.start);let r=[],i=0;for(let e of n)e.start>=i&&(r.push(e),i=e.end);if(r.length===0)return[{type:`text`,content:e}];let a=[],o=0;for(let t=0;t<r.length;t++){let n=r[t];n.start>o&&a.push({type:`text`,content:e.slice(o,n.start)}),a.push({type:`plugin`,element:n.plugin.render(n.match,`plugin-${t}`),matchLength:n.end-n.start}),o=n.end}return o<e.length&&a.push({type:`text`,content:e.slice(o)}),a}function xm(e,t,n){let r=t.offset;if(t.offset+=e.length,!t.active)return e;let i=cp(e,r,t.boundaries,n);if(i==null)return e;let a=i.map(e=>e.fading?(0,q.jsx)(`span`,{className:`x1hc1fzr x19991ni x80gvsz x12w9bfk xlr8y92 x4itv7f`,children:e.text},e.key):(0,q.jsx)(`span`,{children:e.text},e.key));return(0,q.jsx)(`span`,{children:a},`wrap-${n}`)}function Sm(e,t){let n=e.numberMap.get(t);return n??(n=e.nextNumber++,e.numberMap.set(t,n)),n}function Cm(e,t,n,r,i,a=`a`,o,s){switch(e.type){case`text`:if(o&&o.length>0){let n=bm(e.content,o);if(n.length!==1||n[0].type!==`text`){let e=[];for(let i=0;i<n.length;i++){let a=n[i];a.type===`text`?e.push(xm(a.content,r,`${t}-seg-${i}`)):(r.offset+=a.matchLength,e.push((0,q.jsx)(v.Fragment,{children:a.element},`plugin-${t}-${i}`)))}return(0,q.jsx)(v.Fragment,{children:e},t)}}return xm(e.content,r,t);case`bold`:return(0,q.jsx)(`strong`,{className:`x2mo6ok`,children:e.children.map((e,t)=>Cm(e,t,n,r,i,a,o,s))},t);case`italic`:return(0,q.jsx)(`em`,{children:e.children.map((e,t)=>Cm(e,t,n,r,i,a,o,s))},t);case`strikethrough`:return(0,q.jsx)(`del`,{className:`xv1l7n4`,children:e.children.map((e,t)=>Cm(e,t,n,r,i,a,o,s))},t);case`code`:{r.offset+=e.content.length;let n=s?.inlineCode;return n?(0,q.jsx)(n,{children:e.content},t):(0,q.jsx)(qc,{children:e.content},t)}case`link`:{let c=ym(e.href);if(c==null)return(0,q.jsx)(`span`,{children:e.children.map((e,t)=>Cm(e,t,n,r,i,a,o,s))},t);let l=s?.link;if(l)return(0,q.jsx)(l,{href:c,children:e.children.map((e,t)=>Cm(e,t,n,r,i,a,o,s))},t);let u=c.startsWith(`https://`)||c.startsWith(`http://`);return(0,q.jsx)(u?`a`:a,{href:c,onClick:n?e=>{n(c,e)===!1&&e.preventDefault()}:void 0,...u?{target:`_blank`,rel:`noopener noreferrer`}:{},className:`xjse4m1 x1bvjpef`,children:e.children.map((e,t)=>Cm(e,t,n,r,i,a,o,s))},t)}case`image`:{let n=ym(e.src);if(n==null)return(0,q.jsxs)(`span`,{children:[`[`,e.alt,`]`]},t);let r=s?.image;return r?(0,q.jsx)(r,{src:n,alt:e.alt},t):(0,q.jsx)(`img`,{src:n,alt:e.alt,className:`x193iq5w xh6dtrn`},t)}case`break`:return r.offset+=1,(0,q.jsx)(`br`,{},t);case`citation`:{if(r.offset+=1,!i)return(0,q.jsxs)(`span`,{children:[`[`,e.sourceId,`]`]},t);let n=Sm(i,e.sourceId),a=i.sources[e.sourceId]??{title:e.sourceId},o=i.style===`number`?`number`:`label`,c=s?.citation;return c?(0,q.jsx)(c,{source:a,number:n,variant:o},t):(0,q.jsx)(up,{source:a,number:n,variant:o},t)}}}function wm(e,t){let n=t===`compact`;switch(e.type){case`heading`:return e.level<=3?n?Q.spacingHeadingMajorCompact:Q.spacingHeadingMajorDefault:n?Q.spacingHeadingMinorCompact:Q.spacingHeadingMinorDefault;case`paragraph`:return n?Q.spacingParagraphCompact:Q.spacingParagraphDefault;case`codeblock`:return n?Q.spacingCodeblockCompact:Q.spacingCodeblockDefault;case`blockquote`:return n?Q.spacingBlockquoteCompact:Q.spacingBlockquoteDefault;case`list`:return n?Q.spacingListCompact:Q.spacingListDefault;case`table`:return n?Q.spacingTableCompact:Q.spacingTableDefault;case`hr`:return n?Q.spacingHrCompact:Q.spacingHrDefault;case`image`:return n?Q.spacingImageCompact:Q.spacingImageDefault}}function Tm(e){return e.headers.map((t,n)=>{let r=hm(t.children);for(let t of e.rows)if(t[n]){let e=hm(t[n].children);e>r&&(r=e)}return r<=6?60:r<=15?80:120})}function Em(e,t,n,r,i,a,o,s,c,l,u=`a`,d,f,p){let m=um[l],h=m==null?null:fm.blockAlign(m),g=wm(e,r),_=t===0,v=t===n-1;switch(e.type){case`heading`:{let n=Math.min(e.level+i-1,6),p=e.children.map((e,t)=>Cm(e,t,a,o,s,u,d,f)),m=f?.heading;if(m)return(0,q.jsx)(m,{level:n,children:p},t);let h=`h${n}`;return(0,q.jsx)(h,{...J(Y(`markdown-heading`,{density:r,level:n}),w(Q.headingBase,_m[n],g,c==null?null:fm.proseWidth(c),l===`start`?null:fm.proseAlign(lm[l]),_&&Q.noMarginBlockStart,v&&Q.noMarginBlockEnd)),children:p},t)}case`paragraph`:{let n=e.children.map((e,t)=>Cm(e,t,a,o,s,u,d,f)),i=f?.paragraph;return i?(0,q.jsx)(i,{children:n},t):(0,q.jsx)(`div`,{role:`paragraph`,...J(Y(`markdown-paragraph`,{density:r}),w(g,c==null?null:fm.proseWidth(c),l===`start`?null:fm.proseAlign(lm[l]),_&&Q.noMarginBlockStart,v&&Q.noMarginBlockEnd)),children:n},t)}case`codeblock`:{o.offset+=e.content.length;let n=f?.code;return n?(0,q.jsx)(n,{code:e.content,language:e.language},t):(0,q.jsx)(`div`,{...J(Y(`markdown-codeblock`,{density:r}),w(g,Q.codeBlockWrapper,_&&Q.noMarginBlockStart,v&&Q.noMarginBlockEnd)),children:(0,q.jsx)(Uc,{code:e.content,language:e.language,isCollapsible:!0,xstyle:[c==null?void 0:fm.blockWidth(c),h]})},t)}case`blockquote`:{let n=f?.blockquote;if(n){let m=e.children.map((t,n)=>Em(t,n,e.children.length,r,i,a,o,s,c,l,u,d,f,p));return(0,q.jsx)(n,{children:m},t)}return(0,q.jsx)(_d,{...Y(`markdown-blockquote`,{density:r}),xstyle:[g,c==null?void 0:fm.proseWidth(c),l===`start`?void 0:fm.proseAlign(lm[l]),_&&Q.noMarginBlockStart,v&&Q.noMarginBlockEnd],children:e.children.map((t,n)=>Em(t,n,e.children.length,r,i,a,o,s,c,l,u,d,f,p))},t)}case`list`:if(e.items.length>0&&e.items.every(e=>e.checked!=null)){let n=e.items.map((e,t)=>({item:e,key:`task-${t}`})).filter(({item:e})=>e.checked).map(({key:e})=>e);return(0,q.jsx)(`div`,{...J(Y(`markdown-list`,{density:r}),w(g,_&&Q.noMarginBlockStart,v&&Q.noMarginBlockEnd)),children:(0,q.jsx)(Fu,{label:p(`@astryx.markdown.taskList`),isLabelHidden:!0,value:n,xstyle:Q.blockIndent,isReadOnly:!0,density:`compact`,children:e.items.map((e,t)=>{let n=e.children[0],m=e.children.length===1&&n?.type===`paragraph`?(0,q.jsx)(q.Fragment,{children:n.children.map((e,t)=>Cm(e,t,a,o,s,u,d,f))}):(0,q.jsx)(q.Fragment,{children:e.children.map((t,n)=>Em(t,n,e.children.length,r,i,a,o,s,c,l,u,d,f,p))});return(0,q.jsx)(hd,{value:`task-${t}`,label:m},t)})})},t)}return(0,q.jsx)(`div`,{...J(Y(`markdown-list`,{density:r}),w(g,c==null?null:fm.proseWidth(c),l===`start`?null:fm.proseAlign(lm[l]),_&&Q.noMarginBlockStart,v&&Q.noMarginBlockEnd)),children:(0,q.jsx)(Mu,{listStyle:e.ordered?`decimal`:`disc`,density:`compact`,start:e.ordered?e.start:void 0,xstyle:Q.blockIndent,children:e.items.map((e,t)=>{let n=e.children[0],m=e.children.length===1&&n?.type===`paragraph`?(0,q.jsx)(q.Fragment,{children:n.children.map((e,t)=>Cm(e,t,a,o,s,u,d,f))}):(0,q.jsx)(q.Fragment,{children:e.children.map((t,n)=>Em(t,n,e.children.length,r,i,a,o,s,c,l,u,d,f,p))});return(0,q.jsx)(pd,{label:m},t)})})},t);case`table`:{let n=Tm(e);return(0,q.jsx)(`div`,{tabIndex:0,role:`group`,"aria-label":p(`@astryx.markdown.table`),...J(Y(`markdown-table`,{density:r}),w(Q.tableWrapper,g,c==null?null:fm.blockWidth(c),um[l]==null?null:fm.blockAlign(um[l]),_&&Q.noMarginBlockStart,v&&Q.noMarginBlockEnd)),children:(0,q.jsxs)(op,{dividers:`rows`,textOverflow:`wrap`,children:[(0,q.jsx)(Ff,{children:(0,q.jsx)(Fd,{children:e.headers.map((t,r)=>(0,q.jsx)(Pf,{xstyle:[fm.cellMinWidth(`${n[r]}px`),e.alignments[r]===`center`&&pm.center,e.alignments[r]===`right`&&pm.end],children:t.children.map((e,t)=>Cm(e,t,a,o,s,u,d,f))},r))})}),(0,q.jsx)(If,{children:e.rows.map((t,n)=>{let r=t.map((t,n)=>(0,q.jsx)(kf,{xstyle:[e.alignments[n]===`center`&&pm.center,e.alignments[n]===`right`&&pm.end],children:t.children.map((e,t)=>Cm(e,t,a,o,s,u,d,f))},n));return(0,q.jsx)(Fd,{children:r},n)})})]})},t)}case`hr`:{let e=f?.hr;return e?(0,q.jsx)(e,{},t):(0,q.jsx)(`hr`,{...J(Y(`markdown-hr`,{density:r}),w(Q.hr,g,_&&Q.noMarginBlockStart,v&&Q.noMarginBlockEnd))},t)}case`image`:{let n=ym(e.src);if(n==null)return(0,q.jsxs)(`div`,{...J(Y(`markdown-image`,{density:r}),w(g,_&&Q.noMarginBlockStart,v&&Q.noMarginBlockEnd)),children:[`[`,e.alt,`]`]},t);let i=f?.image;return i?(0,q.jsx)(i,{src:n,alt:e.alt},t):(0,q.jsx)(`div`,{...J(Y(`markdown-image`,{density:r}),w(g,_&&Q.noMarginBlockStart,v&&Q.noMarginBlockEnd)),children:(0,q.jsx)(`img`,{src:n,alt:e.alt,className:`x193iq5w xh6dtrn`})},t)}}}function Dm({ref:e,children:t,display:n=`block`,density:r=`default`,headingLevelStart:i=1,isStreaming:a=!1,onLinkClick:o,sources:s,citationStyle:c=`label`,contentWidth:l=680,contentAlign:u=`start`,components:d,inlinePlugins:f,autolink:p,xstyle:m,className:h,style:g,"data-testid":_}){let y=Gs(),b=po(),x=(0,v.useMemo)(()=>s?new Set(Object.keys(s)):void 0,[s]),S=(0,v.useMemo)(()=>({sourceIds:x,autolink:p}),[x,p]),C=iu(t,a),T=(0,v.useRef)(rm()),E=(0,v.useRef)(p);E.current!==p&&(T.current=rm(),E.current=p);let D=(0,v.useMemo)(()=>n===`inline`?[]:a?C===``?(T.current=rm(),[]):cm(am(C),T.current,S):tm(t,S),[n,C,t,a,S]),O=(0,v.useMemo)(()=>n===`inline`?Tp(a?am(C):t,S):[],[n,C,t,a,S]),{token:k}=mt(),A=(0,v.useMemo)(()=>{let e=mm(k(`--duration-fast-max`))??230,t=mm(k(`--duration-fast-min`)),n=t==null?50:Math.max(4,Math.round(t/10));return Math.min(Math.ceil(e/n),12)},[k]),j=(0,v.useRef)([]),M=(0,v.useRef)([]),N=(0,v.useRef)([]),P=C.length,F={offset:0,boundaries:(0,v.useMemo)(()=>{let e=n===`inline`?hm(M.current):gm(j.current),t=sp(N.current,e,A);return N.current=t,t},[n,P,A]),active:a},I=s?{sources:s,numberMap:new Map,nextNumber:1,style:c}:null;if(n===`inline`){let t=(0,q.jsx)(`span`,{ref:e,"data-testid":_,...J(Y(`markdown`,{density:r}),w(Q.root,Q.inlineRoot,m),h,g),children:O.map((e,t)=>Cm(e,t,o,F,I,b,f,d))});return M.current=O,j.current=[],t}let L=(0,q.jsx)(`div`,{role:`document`,ref:e,"data-testid":_,...J(Y(`markdown`,{density:r}),w(Q.root,m),h,g),children:D.map((e,t)=>Em(e,t,D.length,r,i,o,F,I,l?typeof l==`number`?`${l}px`:l:null,u,b,f,d,y))});return j.current=D,M.current=[],L}Dm.displayName=`Markdown`;function Om(e){return e.split(`/`).pop()??e}function km(e){let t=e.split(`/`);return t.length<=1?``:t.slice(0,-1).join(`/`)}function Am(e){let t=e.toLowerCase();return t.endsWith(`.md`)||t.endsWith(`.markdown`)}function jm(e){let t=e.split(`/`).pop()??e;return/\.(png|jpe?g|gif|webp)$/i.test(t)}function Mm(e){let t=e.toLowerCase();return t.endsWith(`.md`)||t.endsWith(`.markdown`)?`markdown`:t.endsWith(`.json`)?`json`:t.endsWith(`.yaml`)||t.endsWith(`.yml`)?`yaml`:t.endsWith(`.ts`)||t.endsWith(`.tsx`)?`typescript`:t.endsWith(`.js`)||t.endsWith(`.jsx`)?`javascript`:t.endsWith(`.py`)?`python`:t.endsWith(`.sh`)?`bash`:t.endsWith(`.html`)?`html`:t.endsWith(`.css`)?`css`:(t.endsWith(`.txt`),`plaintext`)}function Nm(e,t){return`/api/runs/${encodeURIComponent(e)}/artifact?path=${encodeURIComponent(t)}`}function Pm({runId:e,path:t,readOnly:n,onBackToTranscript:r,onHide:i}){let a=Am(t),o=jm(t),[s,c]=(0,v.useState)(a||o?`rendered`:`raw`),[l,u]=(0,v.useState)({status:`loading`}),[d,f]=(0,v.useState)(null);return(0,v.useEffect)(()=>{c(Am(t)||jm(t)?`rendered`:`raw`)},[t]),(0,v.useEffect)(()=>{if(jm(t)){let n=!1,r=null;return u({status:`loading`}),f(null),fetch(Nm(e,t),{headers:{...Sn()}}).then(async e=>{if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error??`Request failed (${e.status})`)}return e.blob()}).then(e=>{let t=URL.createObjectURL(e);if(n){URL.revokeObjectURL(t);return}r=t,f(t),u({status:`ready`,content:``})}).catch(e=>{n||u({status:`error`,message:e instanceof Error?e.message:String(e)})}),()=>{n=!0,r&&URL.revokeObjectURL(r)}}let n=!1;return u({status:`loading`}),f(null),dr(e,t).then(e=>{n||u({status:`ready`,content:e})}).catch(e=>{n||u({status:`error`,message:e instanceof Error?e.message:String(e)})}),()=>{n=!0}},[e,t]),(0,q.jsxs)(`div`,{className:`reader`,style:{height:`100%`},children:[(0,q.jsxs)(`div`,{className:`reader__bar`,children:[(0,q.jsx)(`span`,{className:`reader__name`,children:Om(t)}),km(t)?(0,q.jsx)(`span`,{className:`reader__path`,children:km(t)}):null,n?(0,q.jsx)(`span`,{className:`chip`,children:`read only`}):null,(0,q.jsx)(`span`,{className:`topbar__spacer`}),(0,q.jsxs)(`div`,{className:`stream__head-trail`,children:[(0,q.jsx)(`button`,{className:`btn btn--ghost btn--sm`,onClick:r,children:`← Transcript`}),i?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:i,children:`Hide workspace`}):null,(0,q.jsxs)(`div`,{className:`seg`,children:[(0,q.jsx)(`button`,{"data-active":s===`rendered`?`true`:void 0,disabled:!a&&!o,onClick:()=>{(a||o)&&c(`rendered`)},children:`Rendered`}),(0,q.jsx)(`button`,{"data-active":s===`raw`?`true`:void 0,disabled:o,onClick:()=>{o||c(`raw`)},children:`Raw`}),(0,q.jsx)(`button`,{disabled:!0,children:`Diff`})]})]})]}),(0,q.jsxs)(`div`,{className:`reader__body`,children:[l.status===`loading`?(0,q.jsx)(`p`,{className:`muted`,style:{padding:`var(--spacing-6)`},children:`Loading…`}):null,l.status===`error`?(0,q.jsx)(`div`,{style:{padding:`var(--spacing-6)`},children:(0,q.jsxs)(`div`,{className:`gate`,style:{padding:`var(--spacing-4)`,borderColor:`var(--color-border-red)`,borderLeftColor:`var(--color-error)`,background:`var(--color-background-red)`,color:`var(--color-text-red)`},children:[(0,q.jsx)(`div`,{className:`gate__label`,style:{color:`var(--color-text-red)`},children:`Could not load artifact`}),(0,q.jsx)(`p`,{className:`gate__question`,style:{color:`var(--color-text-primary)`},children:l.message})]})}):null,l.status===`ready`?(0,q.jsx)(`div`,{className:`page`,children:o?d?(0,q.jsx)(`img`,{src:d,alt:Om(t),style:{maxWidth:`100%`,height:`auto`,display:`block`}}):null:s===`rendered`&&a?l.content.trim().length===0?(0,q.jsx)(`p`,{className:`muted`,children:`Empty file.`}):(0,q.jsx)(Dm,{headingLevelStart:2,contentWidth:`76ch`,children:l.content}):(0,q.jsx)(Uc,{code:l.content,language:Mm(t),title:Om(t),container:`section`,width:`100%`})}):null]})]})}function Fm({question:e,note:t,onNoteChange:n,onAccept:r,onReject:i,isSubmitting:a,error:o,refs:s,children:c}){let l=!!a;return(0,q.jsxs)(`div`,{className:`decide`,style:{height:`100%`},children:[(0,q.jsxs)(`div`,{className:`decide__gate`,children:[(0,q.jsxs)(`div`,{className:`decide__label`,children:[(0,q.jsx)(`span`,{className:`dot dot--waiting`}),mi(),` · artifact_backed`]}),(0,q.jsx)(`p`,{className:`decide__q`,children:e}),s?(0,q.jsx)(`div`,{className:`decide__refs`,children:s}):null,o?(0,q.jsx)(`div`,{className:`gate`,style:{padding:`var(--spacing-3)`,marginBottom:`var(--spacing-3)`,borderColor:`var(--color-border-red)`,borderLeftColor:`var(--color-error)`,background:`var(--color-background-red)`,color:`var(--color-text-red)`},children:(0,q.jsxs)(`p`,{style:{margin:0,fontSize:`var(--font-size-sm)`},children:[`Could not submit answer: `,o]})}):null,(0,q.jsx)(`textarea`,{value:t,onChange:e=>n(e.target.value),disabled:l,placeholder:`Optional review notes`,rows:3}),(0,q.jsxs)(`div`,{className:`decide__buttons`,children:[(0,q.jsx)(`button`,{className:`btn btn--accept`,disabled:l,onClick:r,children:a?`Submitting…`:`Accept`}),(0,q.jsx)(`button`,{className:`btn btn--reject`,disabled:l,onClick:i,children:`Reject`})]})]}),c?(0,q.jsx)(`div`,{className:`decide__body`,children:c}):null]})}function Im(e){if(!e||typeof e!=`object`)return null;let t=e.kind;return t===`free_text`||t===`confirm`||t===`multi_question`||t===`artifact_backed`?e:null}function Lm(e){if(!e||typeof e!=`object`)return null;let t=e.kind;return t===`free_text`||t===`confirm`||t===`multi_question`||t===`artifact_backed`?e:null}function Rm(e){let t=0;for(let n of e)n.event===`operator_prompt`&&Im(n.prompt)?.kind===`artifact_backed`&&(t+=1);return Math.max(t,1)}function zm(e){let t=[];return e.forEach((e,n)=>{if(e.event===`operator_prompt`){t.push({key:`ask-${e.at??n}`,label:`Asked you`,at:e.at});return}if(e.event!==`operator_answer`)return;let r=Lm(e.answer),i=`Answered`,a;r?.kind===`artifact_backed`||r?.kind===`confirm`?(i=r.decision===`reject`?`Rejected`:`Accepted`,a=r.text):r?.kind===`free_text`&&(a=r.text),t.push({key:`ans-${e.at??n}`,label:i,at:e.at,note:a})}),t}function Bm(e){if(!e)return``;try{let t=new Date(e),n=Math.round((Date.now()-t.getTime())/1e3);return n<60?`just now`:n<3600?`${Math.floor(n/60)}m ago`:n<86400?`${Math.floor(n/3600)}h ago`:t.toLocaleDateString()}catch{return``}}function Vm({runId:e,stageId:t,prompt:n,events:r,inboundEnvelope:i,inboundFromStageId:a,inboundToStageId:o,selectedPath:s,onSelectArtifact:c,onOpenInboundEnvelope:l}){let[u,d]=(0,v.useState)(``),{submitting:f,error:p,locked:m,submitIntent:h}=yl(e,t,{promptId:n.id,kind:n.kind}),g=Rm(r),_=zm(r);async function y(e){await h({type:`decision`,decision:e,note:u})}let b=a&&o?`${a} → ${o}`:a??`previous stage`;return(0,q.jsxs)(Fm,{question:n.message,note:u,onNoteChange:d,onAccept:()=>void y(`accept`),onReject:()=>void y(`reject`),isSubmitting:f||m,error:p,refs:n.artifacts.length>0?(0,q.jsx)(q.Fragment,{children:n.artifacts.map(e=>(0,q.jsx)(`button`,{className:`chip${e===s?` chip--active`:``}`,onClick:()=>c(e),style:e===s?{borderColor:`var(--color-warning)`,background:`var(--color-background-yellow)`}:void 0,children:e.split(`/`).pop()??e},e))}):void 0,children:[(0,q.jsxs)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:[`Iteration `,g,`. A rejection returns to the same live session, which revises this file and asks again — the stage is not restarted.`]}),_.length>0?(0,q.jsxs)(`div`,{style:{marginTop:`var(--spacing-3)`},children:[(0,q.jsx)(`strong`,{style:{fontSize:`var(--font-size-sm)`},children:`Review history`}),_.map(e=>(0,q.jsxs)(`div`,{style:{marginTop:`var(--spacing-2)`},children:[(0,q.jsx)(`span`,{style:{fontSize:`var(--font-size-sm)`,fontWeight:500},children:e.label}),e.at?(0,q.jsx)(`span`,{className:`muted`,style:{fontSize:`var(--font-size-xs)`,marginLeft:`var(--spacing-2)`,fontFamily:`var(--font-family-code)`},children:Bm(e.at)}):null,e.note?(0,q.jsx)(`p`,{className:`muted`,style:{margin:`2px 0 0`,fontSize:`var(--font-size-sm)`},children:e.note}):null]},e.key))]}):null,i?(0,q.jsxs)(`div`,{style:{marginTop:`var(--spacing-3)`},children:[(0,q.jsx)(`strong`,{style:{fontSize:`var(--font-size-sm)`},children:`Inbound context`}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,margin:`2px 0 var(--spacing-2)`},children:i.summary}),l?(0,q.jsx)(`button`,{className:`btn btn--ghost btn--sm`,onClick:l,children:b}):(0,q.jsx)(`span`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:b})]}):null]})}function Hm({envelope:e,onArtifactClick:t,payloadMaxHeight:n=280}){return(0,q.jsxs)(`div`,{className:`drawer__grid`,children:[(0,q.jsxs)(`dl`,{className:`kv`,children:[(0,q.jsx)(`dt`,{children:`Summary`}),(0,q.jsx)(`dd`,{children:e.summary}),(0,q.jsx)(`dt`,{children:`Artifacts`}),(0,q.jsx)(`dd`,{children:e.artifacts.length===0?(0,q.jsx)(`span`,{className:`muted`,children:`none`}):e.artifacts.map(e=>{let n=e.split(`/`).pop()??e;return t?(0,q.jsxs)(`button`,{type:`button`,className:`chip chip--file`,onClick:()=>t(e),children:[`◆ `,n]},e):(0,q.jsxs)(`span`,{className:`chip chip--file`,children:[`◆ `,n]},e)})}),e.notes?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`dt`,{children:`Notes`}),(0,q.jsx)(`dd`,{className:`muted`,children:e.notes})]}):null]}),e.payload?(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`eyebrow`,style:{marginBottom:`var(--spacing-2)`},children:`payload`}),(0,q.jsx)(Uc,{code:JSON.stringify(e.payload,null,2),language:`json`,container:`section`,maxHeight:n,width:`100%`})]}):(0,q.jsx)(`p`,{className:`muted`,children:`No payload.`})]})}function Um(e,t,n){let r=e=>n?.(e)??e;return t?`${r(e)} → ${r(t)}`:r(e)}function Wm({fromStageId:e,toStageId:t,envelope:n,onBackToTranscript:r,onHide:i,onArtifactClick:a,stageLabel:o}){let s=Um(e,t,o);return(0,q.jsxs)(`div`,{className:`stream`,style:{height:`100%`},children:[(0,q.jsxs)(`header`,{className:`stream__head`,children:[(0,q.jsx)(`h3`,{className:`stream__name`,children:`Handoff envelope`}),(0,q.jsx)(`span`,{className:`mono muted`,children:s}),(0,q.jsx)(`span`,{className:`topbar__spacer`}),(0,q.jsxs)(`div`,{className:`stream__head-trail`,children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:r,children:`← Transcript`}),i?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:i,children:`Hide workspace`}):null]})]}),(0,q.jsx)(`div`,{className:`stream__body`,children:(0,q.jsx)(Hm,{envelope:n,onArtifactClick:a,payloadMaxHeight:480})})]})}function Gm(e){return e===`success`?`status status--succeeded`:e===`failure`?`status status--failed`:`status`}function Km(e){return e===`success`?`dot dot--succeeded`:e===`failure`?`dot dot--failed`:`dot`}function qm({isOpen:e,onClose:t,fromStageId:n,toStageId:r,envelope:i,onOpenFullRecord:a,onArtifactClick:o}){let s=r?`${n} → ${r}`:n;return(0,v.useEffect)(()=>{if(!e)return;function n(e){e.key===`Escape`&&t()}return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e,t]),(0,q.jsxs)(`aside`,{className:`drawer`,hidden:!e,children:[(0,q.jsxs)(`div`,{className:`drawer__head`,children:[(0,q.jsx)(`span`,{className:`eyebrow`,children:`Handoff envelope`}),(0,q.jsx)(`span`,{className:`mono muted`,children:s}),(0,q.jsxs)(`span`,{className:Gm(i.status),children:[(0,q.jsx)(`span`,{className:Km(i.status)}),` `,i.status]}),(0,q.jsx)(`span`,{style:{marginLeft:`auto`}}),a?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:a,children:`Open full record`}):null,(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:t,children:`Close`})]}),(0,q.jsx)(Hm,{envelope:i,onArtifactClick:o})]})}function Jm(e){let t={submitting:!1,error:null},n=new Set,r=()=>t,i=()=>{for(let e of n)e()};return{getState:r,decide:async(n,r)=>{if(!t.submitting){t={submitting:!0,error:null},i();try{await e.submit(n,r),await e.onSuccess()}catch(e){t={...t,error:e instanceof Error?e.message:String(e)}}finally{t={...t,submitting:!1},i()}}},clearError:()=>{t.error!==null&&(t={...t,error:null},i())},subscribe:e=>(n.add(e),()=>{n.delete(e)})}}function Ym(e,t){let n=(0,v.useRef)(e);n.current=e;let r=(0,v.useRef)(t);r.current=t;let i=(0,v.useRef)(null);i.current===null&&(i.current=Jm({submit:async(e,t)=>{await cr(n.current,e,t)},onSuccess:()=>r.current()}));let a=i.current,[o,s]=(0,v.useState)(()=>a.getState());(0,v.useEffect)(()=>a.subscribe(()=>s(a.getState())),[a]);let c=(0,v.useCallback)((e,t)=>void a.decide(e,t),[a]),l=(0,v.useCallback)(()=>a.clearError(),[a]);return{submitting:o.submitting,error:o.error,decide:c,clearError:l}}function Xm({runId:e,decide:t,onSuccess:n}){let[r,i]=(0,v.useState)(``),{submitting:a,error:o,decide:s}=Ym(e,n),c=a,l=t.replayNumber!==void 0&&t.maxReplays!==void 0?`Replay ${t.replayNumber} of ${t.maxReplays}`:t.maxReplays===void 0?null:`Max ${t.maxReplays} replays`;function u(e){let n=r.trim();s(t.sourceStageId,{decision:e,loopId:t.loopId,...n?{reason:n}:{}})}return(0,q.jsx)(`div`,{className:`decide feedback-decide`,style:{height:`100%`},children:(0,q.jsxs)(`div`,{className:`decide__gate`,children:[(0,q.jsxs)(`div`,{className:`decide__label`,children:[(0,q.jsx)(`span`,{className:`dot dot--waiting`}),mi(),` · feedback_loop_decision`]}),(0,q.jsx)(`p`,{className:`decide__q`,children:t.summary??`Feedback loop limit reached — extend, continue, or abandon`}),(0,q.jsxs)(`div`,{className:`decide__refs`,children:[(0,q.jsxs)(`span`,{children:[`Source `,(0,q.jsx)(`strong`,{children:t.sourceStageId})]}),t.deferredTarget?(0,q.jsxs)(`span`,{children:[`Target `,(0,q.jsx)(`strong`,{children:t.deferredTarget})]}):null,l?(0,q.jsx)(`span`,{children:l}):null]}),o?(0,q.jsx)(`div`,{className:`gate`,style:{padding:`var(--spacing-3)`,marginBottom:`var(--spacing-3)`,borderColor:`var(--color-border-red)`,borderLeftColor:`var(--color-error)`,background:`var(--color-background-red)`,color:`var(--color-text-red)`},children:(0,q.jsxs)(`p`,{style:{margin:0,fontSize:`var(--font-size-sm)`},children:[`Could not submit decision: `,o]})}):null,(0,q.jsx)(`textarea`,{value:r,onChange:e=>i(e.target.value),disabled:c,placeholder:`Optional reason`,rows:3}),(0,q.jsxs)(`div`,{className:`decide__buttons`,children:[(0,q.jsx)(`button`,{className:`btn btn--accept`,disabled:c,onClick:()=>u(`extend`),children:a?`Submitting…`:`Extend`}),(0,q.jsx)(`button`,{className:`btn btn--primary`,disabled:c,onClick:()=>u(`continue`),children:`Continue`}),(0,q.jsx)(`button`,{className:`btn btn--reject`,disabled:c,onClick:()=>u(`abandon`),children:`Abandon`})]}),(0,q.jsx)(`p`,{className:`decide__hint`,children:`Extend raises the replay budget and continues the deferred send-back. Continue accepts the limit and advances. Abandon stops the loop.`})]})})}function Zm(e){return`Replay ${e.current_replay_number??0} of ${e.policy.max_replays}`}function Qm(e){for(let t=e.length-1;t>=0;t--){let n=e[t]?.replays;if(!n||n.length===0)continue;let r=n[n.length-1]?.replay;if(r?.target_stage_id)return r.target_stage_id}return null}function $m(e,t){let n=e.deferred_send_back?.target??Qm(t)??e.policy.target??null;return n?`${e.source_stage_id} → ${n}`:null}function eh(e){switch(e){case`waiting_for_human`:return`status status--waiting`;case`completed`:case`continued`:return`status status--succeeded`;case`abandoned`:return`status status--failed`;default:return`status`}}function th({active:e,history:t}){if(!e&&t.length===0)return null;let n=e??t[t.length-1]?.loop,r=n?$m(n,t):null,i=n?r??Zm(n):null,a=n?.state===`waiting_for_human`,o=t.flatMap(e=>e.replays),s=t.reduce((e,t)=>{let n=t.fork_generations.filter(e=>e.status===`superseded`).length;for(let e of t.replays)n+=e.fork_generations.filter(e=>e.status===`superseded`).length;return e+n},0);return(0,q.jsx)(`section`,{className:`feedback-loop-panel block`,children:(0,q.jsx)(tl,{trigger:(0,q.jsxs)(`span`,{className:`feedback-loop-panel__trigger`,children:[(0,q.jsx)(`span`,{className:`block__pipeline`,children:`Feedback loop`}),n?(0,q.jsx)(`span`,{className:eh(n.state),children:n.state.replaceAll(`_`,` `)}):null,i?(0,q.jsx)(`span`,{className:`feedback-loop-panel__summary`,children:i}):null]}),defaultIsOpen:a,children:(0,q.jsxs)(`div`,{className:`feedback-loop-panel__body`,children:[n?(0,q.jsxs)(`dl`,{className:`kv`,children:[(0,q.jsx)(`dt`,{children:`Budget`}),(0,q.jsx)(`dd`,{children:Zm(n)}),r?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`dt`,{children:`Route`}),(0,q.jsx)(`dd`,{children:r})]}):null,(0,q.jsx)(`dt`,{children:`Session`}),(0,q.jsx)(`dd`,{children:n.policy.replay_session})]}):null,o.length>0?(0,q.jsxs)(`div`,{className:`feedback-loop-panel__timeline`,children:[(0,q.jsx)(`div`,{className:`decide__label`,children:`Replay timeline`}),(0,q.jsx)(`ol`,{className:`feedback-loop-panel__list`,children:o.map(({replay:e,stage_passes:t})=>(0,q.jsxs)(`li`,{children:[(0,q.jsxs)(`span`,{children:[`#`,e.replay_number,` `,e.source_stage_id,` →`,` `,e.target_stage_id]}),(0,q.jsxs)(`span`,{className:`feedback-loop-panel__status`,children:[e.status.replaceAll(`_`,` `),t.length>0?` · ${t.length} stage pass${t.length===1?``:`es`}`:``]})]},e.replay_id))})]}):null,s>0?(0,q.jsxs)(`p`,{className:`block__sub`,children:[s,` superseded fork generation`,s===1?``:`s`,` hidden from the map.`]}):null]})},a?`waiting`:`idle`)})}var nh=160;function rh(e,t=nh){let n=e.trim();return n.length<=t?n:`${n.slice(0,t)}…`}function ih(e){let t=e.prompt;if(!t||typeof t!=`object`)return;let n=t;if(n.kind===`multi_question`){let e=n.questions?.length??0;return e===1?`1 question`:`${e} questions`}if(typeof n.message==`string`&&n.message.trim())return rh(n.message)}function ah(e){let t=e.answer;if(!t||typeof t!=`object`)return;let n=t;if(n.kind===`free_text`)return typeof n.text==`string`?rh(n.text):void 0;if(n.kind===`confirm`||n.kind===`artifact_backed`){let e=n.decision,t=typeof n.text==`string`&&n.text.trim()?rh(n.text):void 0;return e&&t?`${e} — ${t}`:e||t}if(n.kind===`multi_question`){let e=Object.keys(n.answers??{}).length;return e===1?`1 answer`:`${e} answers`}}function oh(e){switch(e.event){case`started`:return`Stage started`;case`succeeded`:return`Stage succeeded`;case`failed`:return`Stage failed`;case`interrupted`:return`Stage interrupted`;case`agent_start`:return`Agent started`;case`agent_end`:return`Agent settled`;case`turn_start`:return`Turn`;case`tool_start`:return`→ ${e.toolName??`tool`}`;case`tool_end`:return e.isError?`✕ ${e.toolName??`tool`}`:`✓ ${e.toolName??`tool`}`;case`tool_progress`:return`│ ${e.toolName??`tool`}`;case`message`:{let t=e.role??`message`;return e.text?`${t}: ${e.text}`:t}case`operator_prompt`:return`Operator prompt`;case`operator_answer`:return`Operator answer`;case`waiting_for_input`:return mi();case`resumed`:return`Stage resumed`;case`feedback_loop_decided`:return`Feedback loop decided`;default:return e.event}}function sh(e){let t=e.decision;if(t!==`extend`&&t!==`continue`&&t!==`abandon`)return;let n=typeof e.reason==`string`&&e.reason.trim()?rh(e.reason):void 0;return n?`${t} — ${n}`:t}function ch(e){if(e.event===`tool_start`&&e.argsPreview)return e.argsPreview;if(e.event===`tool_end`&&e.resultPreview)return e.resultPreview;if(e.event===`tool_progress`&&e.textPreview)return e.textPreview;if(e.event===`failed`&&e.reason||e.event===`interrupted`&&e.reason||e.event===`turn_start`&&e.reason)return e.reason;if(e.event===`operator_prompt`)return ih(e);if(e.event===`operator_answer`)return ah(e);if(e.event===`feedback_loop_decided`)return sh(e)}var lh=4;function uh(e,t){return`${e.event}-${e.at??`na`}-${t}`}function dh(e){if(!e||typeof e!=`object`)return null;let t=e.kind;return t===`free_text`||t===`confirm`||t===`multi_question`||t===`artifact_backed`?e:null}function fh(e){if(!e||typeof e!=`object`)return null;let t=e.kind;return t===`free_text`||t===`confirm`||t===`multi_question`||t===`artifact_backed`?e:null}function ph(e){return e===`tool_start`||e===`tool_end`||e===`tool_progress`}function mh(e){let t=[],n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i.event===`tool_start`){t.push({name:i.toolName??`tool`,args:i.argsPreview,at:i.at,id:i.toolCallId??`start-${r}`});continue}if(i.event===`tool_progress`){let e=-1;if(i.toolCallId&&(e=t.findIndex(e=>e.id===i.toolCallId)),e<0&&(e=t.length>0?t.length-1:-1),e<0)continue;let n=typeof i.textPreview==`string`?i.textPreview:void 0;n!==void 0&&(t[e].progressPreview=n);continue}if(i.event===`tool_end`){let e=i.toolCallId?t.findIndex(e=>e.id===i.toolCallId):t.findIndex(e=>e.name===(i.toolName??`tool`)),r=e>=0?t.splice(e,1)[0]:void 0;n.push({name:i.toolName??r?.name??`tool`,status:i.isError?`error`:`complete`,args:r?.args,result:i.resultPreview,at:i.at??r?.at,startedAt:r?.at})}}for(let e of t)n.push({name:e.name,status:`running`,args:e.args,progressPreview:e.progressPreview,at:e.at,startedAt:e.at});return n}function hh({at:e}){return e?(0,q.jsx)(`time`,{children:ii(e)}):null}function gh({envelope:e}){return(0,q.jsxs)(`div`,{className:`turn`,children:[(0,q.jsx)(`div`,{className:`turn__who`,children:`Envelope`}),(0,q.jsxs)(`div`,{className:`bubble`,style:{borderColor:`var(--color-border-green)`},children:[(0,q.jsx)(`p`,{children:e.summary}),e.artifacts.length>0?(0,q.jsx)(`p`,{className:`muted`,children:e.artifacts.map(e=>e.split(`/`).pop()??e).join(` · `)}):null]})]})}function _h({calls:e}){let[t,n]=(0,v.useState)(!1),r=!t&&e.length>lh?e.length-lh:0,i=r>0?e.slice(0,lh):e;return(0,q.jsxs)(`div`,{className:`tools`,children:[i.map((e,t)=>{let n=e.status===`running`?e.progressPreview:e.result;return(0,q.jsxs)(`div`,{className:e.status===`error`?`tool tool--error`:`tool`,children:[(0,q.jsxs)(`span`,{children:[e.status===`error`?`✕`:e.status===`running`?`▸`:`⚙`,` `,e.name,e.args?` ${e.args}`:``,n?` · ${n}`:``]}),(0,q.jsx)(hh,{at:e.at})]},`${e.name}-${e.at??t}`)}),r>0?(0,q.jsxs)(`button`,{type:`button`,className:`tools__more`,onClick:()=>n(!0),children:[`Show `,r,` more`]}):null]})}function vh({event:e}){let t=e.role??`message`,n=e.text?.trim();return n?(0,q.jsxs)(`div`,{className:`turn`,children:[(0,q.jsxs)(`div`,{className:`turn__who`,children:[t,(0,q.jsx)(hh,{at:e.at})]}),(0,q.jsx)(`div`,{className:`bubble`,children:(0,q.jsx)(`p`,{children:n})})]}):null}function yh({event:e}){let t=dh(e.prompt);return(0,q.jsxs)(`div`,{className:`ask`,children:[(0,q.jsxs)(`div`,{className:`ask__label`,children:[t?.kind??`ask`,(0,q.jsx)(`span`,{style:{marginLeft:`auto`},children:(0,q.jsx)(hh,{at:e.at})})]}),t?.kind===`multi_question`?(0,q.jsx)(`ol`,{className:`qlist`,children:t.questions.map(e=>(0,q.jsxs)(`li`,{children:[e.message,(0,q.jsx)(`small`,{children:e.kind})]},e.id))}):(0,q.jsx)(`p`,{className:`ask__q`,children:t&&`message`in t?t.message:ch(e)})]})}function bh({event:e}){let t=fh(e.answer),n,r;if(t?.kind===`free_text`)n=`answered`,r=t.text;else if(t?.kind===`confirm`||t?.kind===`artifact_backed`)n=t.decision,r=t.text;else if(t?.kind===`multi_question`){let e=Object.keys(t.answers??{}).length;n=e===1?`1 answer`:`${e} answers`}else r=ch(e);let i=n===`accept`||n===`answered`||n===`reject`?n:void 0;return(0,q.jsxs)(`div`,{className:`answer`,children:[(0,q.jsxs)(`div`,{className:`turn__who`,children:[n?(0,q.jsx)(`span`,{className:`answer__verdict`,...i?{"data-v":i}:{},children:n}):(0,q.jsx)(`span`,{children:`Operator`}),(0,q.jsx)(hh,{at:e.at})]}),r?(0,q.jsx)(`p`,{children:r}):null]})}function xh({event:e}){let t=ch(e),n=oh(e);return(0,q.jsx)(`div`,{className:`divider-iter`,children:t?`${n} · ${t}`:n})}function Sh(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(ph(r.event)){let r=[];for(;n<e.length&&ph(e[n].event);)r.push(e[n]),n+=1;let i=mh(r);i.length>0&&t.push({kind:`tools`,calls:i});continue}r.event===`message`?r.text?.trim()&&t.push({kind:`message`,event:r}):r.event===`operator_prompt`?t.push({kind:`operator_prompt`,event:r}):r.event===`operator_answer`?t.push({kind:`operator_answer`,event:r}):r.event===`turn_start`&&!ch(r)||t.push({kind:`system`,event:r}),n+=1}return t}function Ch({events:e,inboundEnvelope:t}){let n=[];t&&n.push((0,q.jsx)(gh,{envelope:t},`inbound-envelope`));let r=Sh(e);for(let e=0;e<r.length;e++){let t=r[e];if(t.kind===`tools`){n.push((0,q.jsx)(_h,{calls:t.calls},`tools-${e}`));continue}if(t.kind===`message`){n.push((0,q.jsx)(vh,{event:t.event},uh(t.event,e)));continue}if(t.kind===`operator_prompt`){n.push((0,q.jsx)(yh,{event:t.event},uh(t.event,e)));continue}if(t.kind===`operator_answer`){n.push((0,q.jsx)(bh,{event:t.event},uh(t.event,e)));continue}n.push((0,q.jsx)(xh,{event:t.event},uh(t.event,e)))}return n.length===0?(0,q.jsx)(`p`,{className:`muted`,children:`No activity yet.`}):(0,q.jsx)(q.Fragment,{children:n})}function wh(e){for(let t=e.length-1;t>=0;t--)if(e[t].kind===`system`&&e[t].status===`failed`)return e[t].id;if(!e.some(e=>e.kind===`system`&&e.sourceEvent===`succeeded`)){for(let t=e.length-1;t>=0;t--)if(e[t].kind===`tool`&&e[t].status===`failed`)return e[t].id}}function Th(e,t){let n=e.find(e=>e.id===t);if(!(!n||n.kind!==`system`))return n.detail??n.label}var Eh=160;function Dh(e,t){let n=e.slice(0,t),r=n.lastIndexOf(` `);return r>0?{shown:n.slice(0,r),cutIndex:r+1}:{shown:n,cutIndex:t}}function Oh(e){let t=e.indexOf(`
118
- `),n=t===-1?e:e.slice(0,t);if(n.length<=Eh){let r=(t===-1?``:e.slice(t+1)).replace(/^\n+/,``);return{preview:n,hasMore:r.trim().length>0,rest:r}}let{shown:r,cutIndex:i}=Dh(n,Eh);return{preview:`${r}…`,hasMore:!0,rest:e.slice(i).replace(/^\n+/,``)}}function kh(e){if(e<1e3)return`<1s`;let t=Math.round(e/1e3);return t<60?`${t}s`:`${Math.floor(t/60)}m ${t%60}s`}function Ah(e,t){if(e.kind!==`tool`||!e.startedAt)return;let n=Date.parse(e.startedAt);if(Number.isNaN(n))return;if(e.status===`running`)return Math.max(0,t-n);if(!e.finishedAt)return;let r=Date.parse(e.finishedAt);if(!Number.isNaN(r))return Math.max(0,r-n)}function jh(e){return e.status===`error`?`failed`:e.status===`running`?`running`:`succeeded`}var Mh={read:{key:`file_path`,isPath:!0},write:{key:`file_path`,isPath:!0},edit:{key:`file_path`,isPath:!0},notebookedit:{key:`notebook_path`,isPath:!0},bash:{key:`command`,isPath:!1},grep:{key:`pattern`,isPath:!1},glob:{key:`pattern`,isPath:!1},webfetch:{key:`url`,isPath:!1},websearch:{key:`query`,isPath:!1}},Nh=new Set([`read`]);function Ph(e){if(e)try{let t=JSON.parse(e);return t&&typeof t==`object`?t:void 0}catch{return}}function Fh(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Ih(e,t){let n=Ph(e)?.[t];if(typeof n==`string`)return n;if(!e)return;let r=e.match(RegExp(`"${Fh(t)}"\\s*:\\s*"((?:[^"\\\\]|\\\\.)*)"`));return r?r[1]:void 0}function Lh(e){return e.split(`/`).pop()||e}function Rh(e){let t=Mh[e.name.toLowerCase()];if(!t)return e.name;let n=Ih(e.args,t.key);return typeof n!=`string`||!n.trim()?e.name:`${e.name} ${t.isPath?Lh(n):n}`}function zh(e){if(e.status===`running`)return e.progressPreview;if(!(e.status===`complete`&&Nh.has(e.name.toLowerCase())))return e.result}function Bh(e,t){return{id:t,kind:`tool`,label:Rh(e),status:jh(e),detail:zh(e),at:e.at,startedAt:e.startedAt,finishedAt:e.status===`running`?void 0:e.at,defaultExpanded:!1}}function Vh(e,t){return{id:t,kind:`message`,label:e.role??`message`,status:`succeeded`,detail:e.text?.trim(),at:e.at,defaultExpanded:!1}}function Hh(e,t,n){return{id:n,kind:e,label:oh(t),status:e===`system`&&t.event===`failed`?`failed`:`succeeded`,detail:ch(t),at:t.at,defaultExpanded:!1,sourceEvent:e===`system`?t.event:void 0}}function Uh(e){let t=Sh(e),n=[],r=0;for(let e of t){if(e.kind===`tools`){for(let t of e.calls)n.push(Bh(t,`step-${r}`)),r+=1;continue}let t=`step-${r}`;r+=1,e.kind===`message`?n.push(Vh(e.event,t)):e.kind===`operator_prompt`?n.push(Hh(`operator_prompt`,e.event,t)):e.kind===`operator_answer`?n.push(Hh(`operator_answer`,e.event,t)):n.push(Hh(`system`,e.event,t))}let i=wh(n);for(let e of n)e.defaultExpanded=e.status===`running`||e.id===i;return n}function Wh({step:e,now:t,isOpen:n,onToggle:r}){let i=Ah(e,t),{preview:a,hasMore:o,rest:s}=e.detail?Oh(e.detail):{preview:``,hasMore:!1,rest:``};return(0,q.jsxs)(`div`,{id:`logstep-${e.id}`,className:`logstep logstep--${e.status}`,children:[(0,q.jsxs)(`button`,{type:`button`,className:`logstep__row${o?``:` logstep__row--static`}`,disabled:!o,"aria-expanded":o?n:void 0,onClick:o?()=>r(!n):void 0,children:[(0,q.jsx)(fa,{icon:`chevronDown`,size:`sm`,className:`logstep__chevron${o?n?` logstep__chevron--open`:``:` logstep__chevron--hidden`}`}),(0,q.jsx)(`span`,{className:`dot dot--${e.status} logstep__dot`}),(0,q.jsxs)(`span`,{className:`logstep__text`,children:[(0,q.jsxs)(`span`,{className:`logstep__label-row`,children:[(0,q.jsx)(`span`,{className:`logstep__label`,children:e.label}),i===void 0?null:(0,q.jsx)(`span`,{className:`logstep__duration`,children:kh(i)})]}),a?(0,q.jsx)(`span`,{className:`logstep__preview`,children:a}):null]})]}),o&&n?(0,q.jsx)(`pre`,{className:`logstep__detail`,children:s}):null]})}function Gh(e){let t=document.getElementById(`logstep-${e}`);t&&(t.scrollIntoView({behavior:`smooth`,block:`center`}),t.classList.add(`logstep--highlight`),window.setTimeout(()=>t.classList.remove(`logstep--highlight`),1500))}function Kh({events:e,headerAction:t}){let n=Uh(e),r=Date.now(),i=wh(n),a=Th(n,i),[o,s]=(0,v.useState)({});return(0,q.jsxs)(`div`,{className:`stream`,style:{height:`100%`},children:[(0,q.jsxs)(`header`,{className:`stream__head`,children:[(0,q.jsx)(`h3`,{className:`stream__name`,children:`Logs`}),t?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`topbar__spacer`}),(0,q.jsx)(`div`,{className:`stream__head-trail`,children:t})]}):null]}),(0,q.jsx)(`div`,{className:`stream__body`,children:n.length===0?(0,q.jsx)(`p`,{className:`muted`,children:`No activity yet.`}):(0,q.jsx)(`div`,{className:`logpanel`,children:n.map(e=>(0,q.jsx)(Wh,{step:e,now:r,isOpen:o[e.id]??e.defaultExpanded,onToggle:t=>s(n=>({...n,[e.id]:t}))},e.id))})}),a&&i?(0,q.jsxs)(`div`,{className:`logpanel__banner`,children:[(0,q.jsx)(`span`,{className:`logpanel__banner-text`,children:a}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:()=>{s(e=>{if(!(i in e))return e;let t={...e};return delete t[i],t}),Gh(i)},children:`Jump to failing step`})]}):null]})}function qh(e){let t=new Map;for(let n of e){let e=t.get(n.layer)??[];e.push(n),t.set(n.layer,e)}return[...t.keys()].sort((e,t)=>e-t).map(e=>(t.get(e)??[]).sort((e,t)=>e.layer_order-t.layer_order))}function Jh(e){return qh(e).flat()}function Yh(e,t,n,r=0){return{stageId:e,x:t*520,y:r+n*340,width:400,height:128,layerIndex:t,indexInLayer:n}}function Xh(e,t){return t<=1||e>=t?0:(t-e)/2*340}function Zh(e){let t=e?.plannedStageIds??[],n=e?.liveStageIds??[];if(t.length===0)return n;let r=new Set,i=[];for(let e of t)r.add(e),i.push(e);for(let e of n)r.has(e)||i.push(e);return i}function Qh(e,t){if(!e.nodes.length){let e=Zh(t);return{nodes:e.map((e,t)=>Yh(e,t,0)),edges:e.slice(1).map((t,n)=>({from:e[n],to:t}))}}let n=qh(e.nodes),r=n.reduce((e,t)=>Math.max(e,t.length),0);return{nodes:n.flatMap((e,t)=>{let n=Xh(e.length,r);return e.map((e,r)=>Yh(e.stage_id,t,r,n))}),edges:e.edges.map(e=>({from:e.from,to:e.to}))}}function $h(e){return e===`failed`}function eg(e){return e===`running`}function tg(e){if(e.status===`interrupted`)return!0;if(e.status!==`failed`)return!1;let t;for(let n of e.events)n.event===`failed`&&(t=n.reason);return typeof t==`string`&&t.startsWith(`stage timed out after `)}function ng(e,t){return e.retryingStageIds.has(t)||e.abandoningStageId===t||(e.resumingStageIds?.has(t)??!1)}function rg(e){let t={retryingStageIds:new Set,error:null},n=new Set,r=()=>t,i=()=>{for(let e of n)e()};return{getState:r,retry:async n=>{if(t.retryingStageIds.has(n))return;let r=new Set(t.retryingStageIds);r.add(n),t={retryingStageIds:r,error:null},i();try{await e.retry(n),await e.onSuccess()}catch(e){t={...t,error:e instanceof Error?e.message:String(e)}}finally{let e=new Set(t.retryingStageIds);e.delete(n),t={...t,retryingStageIds:e},i()}},clearError:()=>{t.error!==null&&(t={...t,error:null},i())},subscribe:e=>(n.add(e),()=>{n.delete(e)})}}function ig(e,t){let n=(0,v.useRef)(e);n.current=e;let r=(0,v.useRef)(t);r.current=t;let i=(0,v.useRef)(null);i.current===null&&(i.current=rg({retry:async e=>{await er(n.current,e)},onSuccess:()=>r.current()}));let a=i.current,[o,s]=(0,v.useState)(()=>a.getState());(0,v.useEffect)(()=>a.subscribe(()=>s(a.getState())),[a]);let c=(0,v.useCallback)(e=>void a.retry(e),[a]),l=(0,v.useCallback)(()=>a.clearError(),[a]);return{retryingStageIds:o.retryingStageIds,error:o.error,retry:c,clearError:l}}function ag(e){let t={resumingStageIds:new Set,error:null},n=new Set,r=()=>t,i=()=>{for(let e of n)e()};return{getState:r,resume:async n=>{if(t.resumingStageIds.has(n))return;let r=new Set(t.resumingStageIds);r.add(n),t={resumingStageIds:r,error:null},i();try{await e.resume(n),await e.onSuccess()}catch(e){t={...t,error:e instanceof Error?e.message:String(e)}}finally{let e=new Set(t.resumingStageIds);e.delete(n),t={...t,resumingStageIds:e},i()}},clearError:()=>{t.error!==null&&(t={...t,error:null},i())},subscribe:e=>(n.add(e),()=>{n.delete(e)})}}function og(e,t){let n=(0,v.useRef)(e);n.current=e;let r=(0,v.useRef)(t);r.current=t;let i=(0,v.useRef)(null);i.current===null&&(i.current=ag({resume:async e=>{await tr(n.current,e)},onSuccess:()=>r.current()}));let a=i.current,[o,s]=(0,v.useState)(a.getState);(0,v.useEffect)(()=>a.subscribe(()=>s(a.getState())),[a]);let c=(0,v.useCallback)(e=>{a.resume(e)},[a]);return{resumingStageIds:o.resumingStageIds,error:o.error,resume:c,clearError:a.clearError}}function sg(e){let t={abandoningStageId:null,error:null},n=!1,r=new Set,i=()=>t,a=()=>{for(let e of r)e()};return{getState:i,abandon:async r=>{if(!n&&(e.confirm?.(r)??window.confirm(`This stage will be marked failed. Retry stage will become available.`))){n=!0,t={abandoningStageId:r,error:null},a();try{await e.abandon(r),await e.onSuccess()}catch(e){t={...t,error:e instanceof Error?e.message:String(e)}}finally{n=!1,t={...t,abandoningStageId:null},a()}}},clearError:()=>{t.error!==null&&(t={...t,error:null},a())},subscribe:e=>(r.add(e),()=>{r.delete(e)})}}function cg(e,t){let n=(0,v.useRef)(e);n.current=e;let r=(0,v.useRef)(t);r.current=t;let i=(0,v.useRef)(null);i.current===null&&(i.current=sg({abandon:async e=>{await ir(n.current,e)},onSuccess:()=>r.current()}));let a=i.current,[o,s]=(0,v.useState)(()=>a.getState());(0,v.useEffect)(()=>a.subscribe(()=>s(a.getState())),[a]);let c=(0,v.useCallback)(e=>void a.abandon(e),[a]),l=(0,v.useCallback)(()=>a.clearError(),[a]);return{abandoningStageId:o.abandoningStageId,error:o.error,abandon:c,clearError:l}}var lg=.25,ug=1.8;function dg(e,t){return Math.abs(e.y+e.height/2-(t.y+t.height/2))<e.height*.75}function fg(e,t){let n=e.x+e.width/2,r=t.x+t.width/2;return Math.max(0,Math.round(Math.abs(r-n)/520)-1)*12}function pg(e,t,n,r,i){return`M${e} ${t} V${i} H${n} V${r}`}function mg(e,t){let n=e.y+e.height/2,r=t.y+t.height/2,i=fg(e,t);if(dg(e,t)){let n=e.x+e.width/2,r=e.y+e.height,a=t.x+t.width/2,o=t.y+t.height;return pg(n,r,a,o,Math.max(r,o)+48+i)}if(r>=n){let n=e.x+e.width/2,r=e.y+e.height,a=t.x+t.width/2,o=t.y,s=o-r;return pg(n,r,a,o,s>=48?r+s/2:Math.max(r,o)+48+i)}let a=e.x+e.width/2,o=e.y,s=t.x+t.width/2,c=t.y;return pg(a,o,s,c,Math.min(o,c)-48-i)}function hg(e){let t=e.match(/[MLHVmlhv]|-?\d*\.?\d+/g);if(!t)return[];let n=[],r=0,i=0,a=0;for(;a<t.length;){let e=t[a++].toUpperCase();e===`M`||e===`L`?(r=Number(t[a++]),i=Number(t[a++]),n.push({x:r,y:i})):e===`H`?(r=Number(t[a++]),n.push({x:r,y:i})):e===`V`&&(i=Number(t[a++]),n.push({x:r,y:i}))}return n}function gg(e,t){let n=hg(mg(e,t));if(n.length===0)return{x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),width:Math.abs(t.x-e.x)+Math.max(e.width,t.width),height:Math.abs(t.y-e.y)+Math.max(e.height,t.height)};let r=n.map(e=>e.x),i=n.map(e=>e.y),a=Math.min(...r),o=Math.max(...r),s=Math.min(...i),c=Math.max(...i);return{x:a,y:s,width:o-a,height:c-s}}function _g(e,t,n=4){return Math.hypot(e,t)>n}function vg(e,t=24){if(e.length===0)return{x:0,y:0,width:0,height:0};let n=1/0,r=1/0,i=-1/0,a=-1/0;for(let t of e)n=Math.min(n,t.x),r=Math.min(r,t.y),i=Math.max(i,t.x+t.width),a=Math.max(a,t.y+t.height);return{x:n-t,y:r-t,width:i-n+t*2,height:a-r+t*2}}function yg(e,t){if(e.width<=0||e.height<=0||t.width<=0||t.height<=0)return{panX:0,panY:0,zoom:1};let n=t.width-56,r=t.height-56;if(n<=0||r<=0)return{panX:0,panY:0,zoom:1};let i=Math.max(lg,Math.min(1.1,ug,n/e.width,r/e.height));return{zoom:i,panX:56+(n-e.width*i)/2-e.x*i,panY:56+(r-e.height*i)/2-e.y*i}}function bg(e,t){return e&&!t}function xg(e,t){return e===t?null:e}function Sg(e,t){return!!e.find(e=>e.stage_id===t)?.envelope}function Cg(e,t){return e===`waiting_for_input`||e===`pending`||e===`skipped`?null:e===`running`?`abandon`:e===`failed`||t?`retry`:null}function wg(e){switch(e){case`free_text`:return`free text`;case`confirm`:return`confirm`;case`multi_question`:return`multi-question`;case`artifact_backed`:return`artifact`}}function Tg(e,t,n,r){let i=Math.max(48,(n-e)/2);return`M${e} ${t} C${e+i} ${t} ${n-i} ${r} ${n} ${r}`}function Eg(e,t){return t?`abandoned`:e===`interrupted`?`waiting_for_input`:e}function Dg({layout:e,stages:t,nodeChrome:n,selectedStageId:r,onSelectStage:i,onDeselect:a,retryingStageIds:o,onRetryStage:s,resumingStageIds:c,onResumeStage:l,abandoningStageId:u=null,onAbandonStage:d,runId:f,showHint:p,feedbackOverlays:m=[]}){let h=(0,v.useRef)(null),g=(0,v.useRef)(!1),_=(0,v.useRef)(!1),y=(0,v.useRef)({width:0,height:0}),b=(0,v.useRef)(null),[x,S]=(0,v.useState)({width:0,height:0}),[C,w]=(0,v.useState)({x:0,y:0}),[T,E]=(0,v.useState)(1),[D,O]=(0,v.useState)(!1),k=new Map(t.map(e=>[e.stage_id,e])),A=new Map(n.map(e=>[e.stageId,e])),j=o??new Set,M=c??new Set;(0,v.useLayoutEffect)(()=>{let e=h.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect();S({width:t.width,height:t.height})};t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]),(0,v.useLayoutEffect)(()=>{g.current=!1,_.current=!1,y.current={width:0,height:0}},[f]);let N=()=>{let t=[...e.nodes];for(let n of m){let r=e.nodes.find(e=>e.stageId===n.from),i=e.nodes.find(e=>e.stageId===n.to);!r||!i||t.push(gg(r,i))}return vg(t)};(0,v.useLayoutEffect)(()=>{if(e.nodes.length===0||x.width===0||x.height===0)return;if(!g.current){let e=yg(N(),x);w({x:e.panX,y:e.panY}),E(e.zoom),g.current=!0,y.current={width:x.width,height:x.height};return}if(y.current.width===x.width&&y.current.height===x.height||(y.current={width:x.width,height:x.height},!bg(!0,_.current)))return;let t=yg(N(),x);w({x:t.panX,y:t.panY}),E(t.zoom)},[m,e.nodes,x.height,x.width]);let P=(e,t)=>{let n=t??{x:x.width/2,y:x.height/2},r=Math.max(lg,Math.min(ug,T*e)),i=(n.x-C.x)/T,a=(n.y-C.y)/T;_.current=!0,w({x:n.x-i*r,y:n.y-a*r}),E(r)},F=()=>{let t=h.current;if(!t||e.nodes.length===0)return;let n=t.getBoundingClientRect(),r=yg(N(),{width:n.width,height:n.height});w({x:r.panX,y:r.panY}),E(r.zoom),_.current=!1,g.current=!0,y.current={width:n.width,height:n.height}},I=e=>{e.target.closest(`.gnode`)||(e.currentTarget.setPointerCapture(e.pointerId),O(!0),b.current={id:e.pointerId,x:e.clientX,y:e.clientY,panX:C.x,panY:C.y})},L=e=>{let t=b.current;if(!t||t.id!==e.pointerId)return;let n=e.clientX-t.x,r=e.clientY-t.y;_g(n,r)&&(_.current=!0),w({x:t.panX+n,y:t.panY+r})},R=e=>{let t=b.current;if(!t||t.id!==e.pointerId)return;let n=e.clientX-t.x,r=e.clientY-t.y;b.current=null,O(!1),_g(n,r)||a()};return(0,q.jsxs)(`div`,{className:`graph-view`,children:[(0,q.jsxs)(`svg`,{className:`graph-grid`,"aria-hidden":`true`,width:`100%`,height:`100%`,children:[(0,q.jsx)(`defs`,{children:(0,q.jsx)(`pattern`,{id:`spatial-dots`,width:`24`,height:`24`,patternUnits:`userSpaceOnUse`,children:(0,q.jsx)(`circle`,{cx:`1`,cy:`1`,r:`1`,fill:`var(--color-border)`})})}),(0,q.jsx)(`rect`,{width:`100%`,height:`100%`,fill:`url(#spatial-dots)`})]}),(0,q.jsx)(`div`,{ref:h,className:D?`graph-stage dragging`:`graph-stage`,onPointerDown:I,onPointerMove:L,onPointerUp:R,onPointerCancel:R,onWheel:e=>{e.preventDefault();let t=e.currentTarget.getBoundingClientRect();if(e.metaKey||e.ctrlKey){P(e.deltaY<0?1.08:.92,{x:e.clientX-t.left,y:e.clientY-t.top});return}_.current=!0,w(t=>({x:t.x-e.deltaX,y:t.y-e.deltaY}))},children:(0,q.jsxs)(`svg`,{className:`graph-svg`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,q.jsxs)(`defs`,{children:[(0,q.jsx)(`marker`,{id:`spatial-arrow`,markerWidth:`8`,markerHeight:`8`,refX:`7`,refY:`3`,orient:`auto`,children:(0,q.jsx)(`path`,{d:`M0,0 L7,3 L0,6 Z`,fill:`var(--color-text-disabled)`})}),(0,q.jsx)(`marker`,{id:`spatial-arrow-active`,markerWidth:`8`,markerHeight:`8`,refX:`7`,refY:`3`,orient:`auto`,children:(0,q.jsx)(`path`,{d:`M0,0 L7,3 L0,6 Z`,fill:`var(--color-accent)`})}),(0,q.jsx)(`marker`,{id:`spatial-arrow-feedback`,markerWidth:`8`,markerHeight:`8`,refX:`7`,refY:`3`,orient:`auto`,children:(0,q.jsx)(`path`,{d:`M0,0 L7,3 L0,6 Z`,fill:`var(--color-warning)`})})]}),(0,q.jsxs)(`g`,{className:`world`,transform:`translate(${C.x} ${C.y}) scale(${T})`,children:[e.edges.map(n=>{let r=e.nodes.find(e=>e.stageId===n.from),i=e.nodes.find(e=>e.stageId===n.to);if(!r||!i)return null;let a=r.height,o=i.height,s=r.x+r.width,c=r.y+a/2,l=i.x,u=i.y+o/2,d=Sg(t,n.from);return(0,q.jsx)(`g`,{children:(0,q.jsx)(`path`,{className:d?`edge handoff`:`edge`,d:Tg(s,c,l,u),markerEnd:d?`url(#spatial-arrow-active)`:`url(#spatial-arrow)`})},`${n.from}->${n.to}`)}),m.map(t=>{let n=e.nodes.find(e=>e.stageId===t.from),r=e.nodes.find(e=>e.stageId===t.to);return!n||!r?null:(0,q.jsx)(`path`,{className:t.kind===`deferred`?`edge feedback feedback--deferred`:t.kind===`policy`?`edge feedback feedback--policy`:`edge feedback`,d:mg(n,r),markerEnd:`url(#spatial-arrow-feedback)`},`feedback:${t.kind}:${t.from}->${t.to}`)}),e.nodes.map(e=>{let t=k.get(e.stageId),n=A.get(e.stageId),a=t?.status??n?.status??`pending`,o=t?ci(t.events):!1;return(0,q.jsx)(Og,{node:e,status:a,abandoned:o,chrome:n,selected:r===e.stageId,busy:ng({retryingStageIds:j,abandoningStageId:u,resumingStageIds:M},e.stageId),retrying:j.has(e.stageId),resuming:M.has(e.stageId),abandoning:u===e.stageId,snapshot:t,onSelectStage:i,onRetryStage:s,onResumeStage:l,onAbandonStage:d},e.stageId)})]})]})}),(0,q.jsxs)(`div`,{className:`canvas-tools`,children:[(0,q.jsx)(`button`,{type:`button`,className:`icon`,title:`Zoom out`,"aria-label":`Zoom out`,onClick:()=>P(.87),children:`−`}),(0,q.jsxs)(`span`,{className:`zoom`,"aria-live":`polite`,children:[Math.round(T*100),`%`]}),(0,q.jsx)(`button`,{type:`button`,className:`icon`,title:`Zoom in`,"aria-label":`Zoom in`,onClick:()=>P(1.15),children:`+`}),(0,q.jsx)(`span`,{className:`divider`}),(0,q.jsx)(`button`,{type:`button`,className:`icon fit-btn`,onClick:F,children:`Fit run`})]}),p?(0,q.jsx)(`div`,{className:`canvas-hint`,children:`Stages become selectable when they start.`}):null]})}function Og({node:e,status:t,abandoned:n,chrome:r,selected:i,busy:a,retrying:o,resuming:s,abandoning:c,snapshot:l,onSelectStage:u,onRetryStage:d,onResumeStage:f,onAbandonStage:p}){let m=t!==`pending`,h=Cg(t,n),g=l!==void 0&&tg(l)&&f!==void 0,_=h===`retry`&&$h(t)&&d,v=h===`abandon`&&eg(t)&&p,y=Eg(t,n),b=[r?.isFeedbackSource?`feedback-source`:``,r?.isFeedbackTarget?`feedback-target`:``,r?.isSuperseded?`superseded`:``].filter(Boolean).join(` `),x=n?li():pi(t),S=r?.title??e.stageId,C=r?xg(r.kicker,r.title):null,w=[];r?.titleOnly||(w.push(x),r?.isSuperseded&&w.push(`superseded`),r?.readinessLine&&t===`pending`&&w.push(r.readinessLine),t===`waiting_for_input`?(r?.gateKinds?.length&&w.push(r.gateKinds.map(wg).join(` · `)),r?.promptSummary&&w.push(r.promptSummary)):r?.meta&&w.push(r.meta));let T=()=>{m&&u(e.stageId)};return(0,q.jsxs)(`g`,{className:`gnode ${y}${i?` selected`:``}${b?` ${b}`:``}`,"data-id":e.stageId,"data-waiting":r?.isWaitingAttention?`true`:void 0,"data-feedback-source":r?.isFeedbackSource?`true`:void 0,"data-feedback-target":r?.isFeedbackTarget?`true`:void 0,"data-superseded":r?.isSuperseded?`true`:void 0,transform:`translate(${e.x},${e.y})`,children:[(0,q.jsx)(`rect`,{className:`node-box`,x:0,y:0,width:e.width,height:128,rx:12,ry:12}),(0,q.jsx)(`circle`,{className:`port`,cx:-4,cy:64,r:4}),(0,q.jsx)(`circle`,{className:`port`,cx:e.width+4,cy:64,r:4}),m?(0,q.jsx)(`foreignObject`,{x:0,y:0,width:e.width,height:128,children:(0,q.jsxs)(`button`,{type:`button`,className:`gnode__hit`,onClick:T,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),T())},children:[C?(0,q.jsx)(`span`,{className:`gnode__kicker`,children:C}):null,(0,q.jsxs)(`span`,{className:`gnode__title`,children:[S,(0,q.jsx)(Sl,{count:r?.attemptCount})]}),w.length>0?(0,q.jsx)(`span`,{className:`gnode__meta`,children:w.join(` · `)}):null]})}):(0,q.jsxs)(`g`,{className:`gnode__static`,children:[C?(0,q.jsx)(`text`,{className:`kicker`,x:16,y:22,children:C}):null,(0,q.jsx)(`text`,{className:`node-title`,x:16,y:C?44:32,children:S}),w.length>0?(0,q.jsx)(`text`,{className:`node-meta`,x:16,y:66,children:w.join(` · `)}):null]}),(0,q.jsx)(Ag,{status:t,abandoned:n,cx:e.width-26,cy:26,showResume:!!g,showRetry:!!_,showAbandon:!!v,busy:a,resumeLabel:s?`Resuming…`:`Resume session`,retryLabel:o?`Retrying…`:`Retry stage`,abandonLabel:c?`Abandoning…`:`Abandon stage`,onResume:g?()=>{f?.(e.stageId)}:void 0,onRetry:_?()=>{d?.(e.stageId)}:void 0,onAbandon:v?()=>{p?.(e.stageId)}:void 0})]})}function kg({kind:e,cx:t,cy:n,busy:r,label:i,onActivate:a}){return(0,q.jsxs)(`g`,{className:`node-action-btn node-${e}${r?` is-busy`:``}`,role:`button`,tabIndex:r?-1:0,"aria-label":i,"aria-disabled":r||void 0,onClick:e=>{r||(e.stopPropagation(),a?.())},onKeyDown:e=>{r||(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.stopPropagation(),a?.())},children:[(0,q.jsx)(`title`,{children:i}),(0,q.jsx)(`circle`,{className:`action-bg`,cx:t,cy:n,r:11}),e===`retry`?(0,q.jsx)(`path`,{className:`action-icon`,d:[`M${t-3.2} ${n-2.2}`,`A4.2 4.2 0 1 0 ${t+.2} ${n-4}`,`M${t+.2} ${n-7.2}`,`L${t+.2} ${n-3.6}`,`L${t-3.4} ${n-3.6}`].join(` `)}):e===`resume`?(0,q.jsx)(`path`,{className:`action-icon`,d:`M${t-2.2} ${n-3.6} L${t-2.2} ${n+3.6} L${t+4.2} ${n} Z`}):(0,q.jsx)(`rect`,{className:`action-icon`,x:t-3.5,y:n-3.5,width:7,height:7,rx:1.25})]})}function Ag({status:e,abandoned:t,cx:n,cy:r,showResume:i,showRetry:a,showAbandon:o,busy:s,resumeLabel:c,retryLabel:l,abandonLabel:u,onResume:d,onRetry:f,onAbandon:p}){let m=r+28,h=i?m+26:m;return(0,q.jsxs)(`g`,{className:`node-status`,children:[e===`succeeded`?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`circle`,{cx:n,cy:r,r:11,fill:`var(--color-success)`}),(0,q.jsx)(`path`,{d:`M${n-4} ${r} l3 3 l6-7`,fill:`none`,stroke:`var(--color-background-surface)`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`})]}):null,e===`running`?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`circle`,{className:`node-spin`,cx:n,cy:r,r:11,fill:`none`,stroke:`var(--color-border)`,strokeWidth:2}),(0,q.jsx)(`circle`,{className:`node-spin`,cx:n,cy:r,r:11,fill:`none`,stroke:`var(--color-accent)`,strokeWidth:2.25,strokeLinecap:`round`,strokeDasharray:`18 52`})]}):null,e===`waiting_for_input`||e===`interrupted`?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`circle`,{cx:n,cy:r,r:10,fill:`none`,stroke:`var(--color-warning)`,strokeWidth:2,strokeDasharray:`4 3`}),(0,q.jsx)(`text`,{x:n,y:r+4,textAnchor:`middle`,fill:`var(--color-warning)`,fontSize:11,fontWeight:700,children:`!`})]}):null,e===`failed`&&!t?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`circle`,{cx:n,cy:r,r:11,fill:`var(--color-error)`}),(0,q.jsx)(`text`,{x:n,y:r+4,textAnchor:`middle`,fill:`var(--color-background-surface)`,fontSize:12,fontWeight:700,children:`!`})]}):null,t?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`circle`,{cx:n,cy:r,r:11,fill:`var(--color-error)`}),(0,q.jsx)(`rect`,{x:n-5,y:r-1.5,width:10,height:3,rx:1,fill:`var(--color-background-surface)`})]}):null,e===`pending`||e===`skipped`?(0,q.jsx)(`circle`,{cx:n,cy:r,r:10,fill:`none`,stroke:`var(--color-text-disabled)`,strokeWidth:1.5}):null,i?(0,q.jsx)(kg,{kind:`resume`,cx:n,cy:m,busy:s,label:c,onActivate:d}):null,a?(0,q.jsx)(kg,{kind:`retry`,cx:n,cy:h,busy:s,label:l,onActivate:f}):null,o?(0,q.jsx)(kg,{kind:`abandon`,cx:n,cy:m,busy:s,label:u,onActivate:p}):null]})}var jg=64;function Mg(e){return e.scrollHeight-e.scrollTop-e.clientHeight<jg}function Ng({stageName:e,status:t,trailing:n,children:r,composer:i,autoScroll:a,scrollKey:o}){let s=(0,v.useRef)(null),c=(0,v.useRef)(!0);(0,v.useEffect)(()=>{a&&(c.current=!0)},[a]),(0,v.useEffect)(()=>{if(!a||!c.current)return;let e=s.current;e&&(e.scrollTop=e.scrollHeight)},[a,o]);function l(e){c.current=Mg(e.currentTarget)}return(0,q.jsxs)(`div`,{className:`stream`,style:{height:`100%`},children:[(0,q.jsxs)(`header`,{className:`stream__head`,children:[(0,q.jsx)(`h3`,{className:`stream__name`,children:e}),t,n?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`topbar__spacer`}),(0,q.jsx)(`div`,{className:`stream__head-trail`,children:n})]}):null]}),(0,q.jsx)(`div`,{ref:s,className:`stream__body`,onScroll:l,children:(0,q.jsx)(`div`,{className:`thread`,children:r})}),i]})}function Pg(e){switch(e){case`passed`:return`passed`;case`failed`:return`failed`;case`running`:return`running`;case`skipped`:return`skipped`;default:return`pending`}}function Fg(e){let t=e.checks.length===1?`check`:`checks`;return`Attempt ${e.attempt} · ${e.status} · verification ${e.verification_outcome.replace(`_`,` `)} · ${e.checks.length} ${t}`}function Ig({check:e}){let t=e.evidence===void 0?void 0:JSON.stringify(e.evidence,null,2);return(0,q.jsxs)(`div`,{className:`verification-check`,children:[(0,q.jsxs)(`div`,{className:`verification-check__summary`,children:[(0,q.jsxs)(`span`,{className:`status status--${e.status===`passed`?`succeeded`:e.status===`failed`?`failed`:`running`}`,children:[(0,q.jsx)(`span`,{className:`dot dot--${e.status===`passed`?`succeeded`:e.status===`failed`?`failed`:`running`}`}),` `,Pg(e.status)]}),(0,q.jsx)(`code`,{children:e.check_id}),(0,q.jsx)(`span`,{className:`muted`,children:e.check_type})]}),t===void 0?null:(0,q.jsx)(Uc,{code:t,language:`json`,title:`Evidence`,size:`sm`,width:`100%`,maxHeight:260,container:`section`,isCollapsible:!0})]})}function Lg({history:e,error:t,recovering:n=!1,onRecover:r,onStop:i}){let[a,o]=(0,v.useState)(``);return t?(0,q.jsxs)(`div`,{className:`banner banner--warning`,children:[`Verification evidence unavailable: `,t]}):e===null||e.attempts.every(e=>e.checks.length===0)?null:(0,q.jsxs)(`section`,{className:`verification-history`,"aria-label":`Verification history`,children:[(0,q.jsxs)(`div`,{className:`verification-history__head`,children:[(0,q.jsx)(`strong`,{children:`Verification`}),(0,q.jsxs)(`span`,{className:`muted`,children:[e.attempts.length,` attempts`]})]}),e.attempts.map(t=>(0,q.jsx)(tl,{trigger:(0,q.jsx)(`span`,{className:`verification-history__attempt`,children:Fg(t)}),defaultIsOpen:t.attempt===e.attempts.length,children:(0,q.jsx)(`div`,{className:`verification-history__checks`,children:t.checks.length>0?t.checks.map(e=>(0,q.jsx)(Ig,{check:e},e.check_id)):(0,q.jsx)(`p`,{className:`muted`,children:`No completion checks ran in this attempt.`})})},t.attempt)),e.manual_recovery?.status===`available`?(0,q.jsxs)(`section`,{className:`manual-recovery`,"aria-label":`Manual recovery`,children:[(0,q.jsx)(`strong`,{children:`Manual recovery required`}),(0,q.jsx)(`p`,{className:`muted`,children:`This stage remains failed until an operator explicitly retries it or stops recovery.`}),(0,q.jsx)(`label`,{className:`manual-recovery__label`,htmlFor:`manual-recovery-guidance`,children:`Guidance for the retry (optional)`}),(0,q.jsx)(`textarea`,{id:`manual-recovery-guidance`,className:`manual-recovery__guidance`,value:a,maxLength:4e3,onChange:e=>o(e.target.value),placeholder:`Tell the agent what to address before it retries.`,disabled:n}),(0,q.jsxs)(`div`,{className:`manual-recovery__actions`,children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:n||r===void 0,onClick:()=>r?.(a),children:n?`Starting recovery…`:`Retry with guidance`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm btn--reject`,disabled:n||i===void 0,onClick:()=>i?.(),children:`Stop recovery`})]})]}):null,e.manual_recovery?.status===`stopped`?(0,q.jsx)(`p`,{className:`muted`,children:`Manual recovery was stopped by an operator.`}):null]})}var Rg=`Cancel this run? Enter a short reason (required):`,zg=`Cancelled from operator console`;function Bg(e){return e===`created`||e===`queued`||e===`running`}function Vg(e){return e===`succeeded`||e===`failed`||e===`cancelled`||e===`created`||e===`queued`||e===`running`}function Hg(e){return e===`created`||e===`queued`||e===`running`}function Ug(e,t=window.prompt.bind(window)){return t(`Type the run id to permanently delete it:\n${e}`)===e}function Wg(e){let t={cancelling:!1,error:null},n=!1,r=new Set,i=()=>t,a=()=>{for(let e of r)e()};return{getState:i,cancel:async()=>{if(n)return;let r=e.promptReason?e.promptReason():window.prompt(Rg,zg);if(r===null)return;let i=r.trim();if(i!==``){n=!0,t={cancelling:!0,error:null},a();try{await e.cancel(i),await e.onSuccess()}catch(e){t={...t,error:e instanceof Error?e.message:String(e)}}finally{n=!1,t={...t,cancelling:!1},a()}}},clearError:()=>{t.error!==null&&(t={...t,error:null},a())},subscribe:e=>(r.add(e),()=>{r.delete(e)})}}function Gg(e){let t={deleting:!1,error:null},n=!1,r=new Set,i=()=>t,a=()=>{for(let e of r)e()};return{getState:i,deleteRun:async r=>{if(!n&&(e.confirmTyped?.(r)??Ug(r))){n=!0,t={deleting:!0,error:null},a();try{await e.deleteRun(e.isActive),await e.onSuccess()}catch(e){t={...t,error:e instanceof Error?e.message:String(e)}}finally{n=!1,t={...t,deleting:!1},a()}}},clearError:()=>{t.error!==null&&(t={...t,error:null},a())},subscribe:e=>(r.add(e),()=>{r.delete(e)})}}function Kg(e,t){let n=(0,v.useRef)(e);n.current=e;let r=(0,v.useRef)(t);r.current=t;let i=(0,v.useRef)(null);i.current===null&&(i.current=Wg({cancel:async e=>{await ar(n.current,e)},onSuccess:()=>r.current()}));let a=i.current,[o,s]=(0,v.useState)(()=>a.getState());(0,v.useEffect)(()=>a.subscribe(()=>s(a.getState())),[a]);let c=(0,v.useCallback)(()=>void a.cancel(),[a]),l=(0,v.useCallback)(()=>a.clearError(),[a]);return{cancelling:o.cancelling,error:o.error,cancel:c,clearError:l}}function qg(e,t,n){let r=(0,v.useRef)(e);r.current=e;let i=(0,v.useRef)(n);i.current=n;let a=t!==void 0&&Hg(t),o=(0,v.useRef)(a);o.current=a;let s=(0,v.useRef)(null);s.current===null&&(s.current=Gg({deleteRun:async e=>{await or(r.current,{force:e})},onSuccess:()=>i.current(),get isActive(){return o.current}}));let c=s.current,[l,u]=(0,v.useState)(()=>c.getState());(0,v.useEffect)(()=>c.subscribe(()=>u(c.getState())),[c]);let d=(0,v.useCallback)(()=>void c.deleteRun(r.current),[c]),f=(0,v.useCallback)(()=>c.clearError(),[c]);return{deleting:l.deleting,error:l.error,deleteRun:d,clearError:f}}function Jg(e){let{readiness:t,blocked_by:n,status:r}=e;if(t===`blocked`)return n?.length?`Blocked on ${n.join(`, `)}`:`Blocked`;if(t===`skipped`)return`Skipped`;if(t===`ready`)return`Ready`;if((t!==`waiting`||r!==`waiting_for_input`)&&(t!==`interrupted`||r!==`interrupted`)){if(t===`interrupted`)return pi(`interrupted`);if(t===`succeeded`)return pi(`succeeded`);if(t===`failed`)return pi(`failed`);if(t===`running`)return pi(`running`)}}var Yg=`stageflow:envelope:`;function Xg(e){return`${Yg}${e}`}function Zg(e){if(!e.startsWith(Yg))return null;let t=e.slice(19);return t.length>0?t:null}function Qg(e,t){return`${e}->${t}`}var $g={deferred:3,replay:2,policy:1},e_=new Set([`scheduled`,`active`,`waiting_for_human`]);function t_(e,t,n){let r=new Map,i=e=>{let t=Qg(e.from,e.to),n=r.get(t);(!n||$g[e.kind]>$g[n.kind])&&r.set(t,e)};for(let e of n?.nodes??[]){let t=e.feedback_loop?.target;t&&i({from:e.stage_id,to:t,kind:`policy`})}e?.deferred_send_back?.target&&i({from:e.source_stage_id,to:e.deferred_send_back.target,kind:`deferred`});let a=!!e?.deferred_send_back?.target,o=e=>{for(let n of t??[])for(let{replay:t}of n.replays)t.status!==`superseded`&&t.status!==`failed`&&e(t.status)&&i({from:t.source_stage_id,to:t.target_stage_id,kind:`replay`})};return o(e=>e_.has(e)),![...r.values()].some(e=>e.kind===`replay`)&&!a&&o(e=>e===`completed`),e&&i({from:e.source_stage_id,to:e.policy.target,kind:`policy`}),[...r.values()]}function n_(e){let t=new Set;for(let n of e??[]){for(let e of n.fork_generations)if(e.status===`superseded`)for(let n of e.clone_stage_ids)t.add(n);for(let{stage_passes:e,fork_generations:r}of n.replays){for(let n of e)n.status===`superseded`&&t.add(n.stage_id);for(let e of r)if(e.status===`superseded`)for(let n of e.clone_stage_ids)t.add(n)}}return t}function r_(e,t){for(let n of t)if(n.status===`superseded`)for(let t of n.clone_stage_ids)e.add(t)}function i_(e){let t=new Set;for(let n of e??[]){r_(t,n.fork_generations);for(let e of n.replays)r_(t,e.fork_generations)}return t}function a_(e,t){return e.filter(e=>!t.has(e))}function o_(e,t){return t.size===0?e:{nodes:e.nodes.filter(e=>!t.has(e.stage_id)),edges:e.edges.filter(e=>!t.has(e.from)&&!t.has(e.to))}}function s_(e){let t=e.active_feedback_loop;if(!(e.waiting_kind!==`feedback_loop_decision`||!t||t.state!==`waiting_for_human`))return{loopId:t.loop_id,sourceStageId:t.source_stage_id,deferredTarget:t.deferred_send_back?.target,replayNumber:t.current_replay_number,maxReplays:t.policy.max_replays,summary:e.waiting_summary}}function c_(e,t){return e.stages.some(e=>e.stage_id===t)}function l_(e,t,n){return c_(e,t)||e.pipeline_track?.nodes?.some(e=>e.stage_id===t)?!0:!!n?.includes(t)}function u_(e){return new Map(e.stages.map(e=>[e.stage_id,e]))}function d_(e){let t=e.pipeline_track;return t?.nodes?.length?Jh(t.nodes).map(e=>e.stage_id):e.stages.map(e=>e.stage_id)}function f_(e){let t=e.waiting_stage_id;if(!t)return null;let n=e.stages.find(e=>e.stage_id===t)?.pending_prompt?.id;return n?`${t}:${n}`:e.waiting_prompt_id?e.waiting_prompt_id:c_(e,t)?`${t}:`:null}function p_(e,t){if(t.userPicked&&t.previousStageId&&c_(e,t.previousStageId))return t.previousStageId;let n=f_(e);return n&&n!==t.dismissedWaitKey&&e.waiting_stage_id&&c_(e,e.waiting_stage_id)?e.waiting_stage_id:null}function m_(e,t){return e.artifacts.includes(t)?!0:!!e.envelope?.artifacts.includes(t)}function h_(e,t){let n=u_(e);for(let r of d_(e)){let e=n.get(r);if(e&&m_(e,t))return r}return null}function g_(e,t,n){return t===void 0||t===``?e:e===t?t:n===void 0?e:`${t} · ${n}`}function __(e,t,n){if(n===void 0)return;let r=Jh(e).filter(e=>(e.definition_id??e.stage_id)===n).findIndex(e=>e.stage_id===t);if(!(r<0))return r+1}function v_(e,t){return g_(t.stage_id,t.definition_id,__(e,t.stage_id,t.definition_id))}function y_(e,t){let n=e.pipeline_track?.nodes??[],r=n.find(e=>e.stage_id===t);return r?v_(n,r):g_(t)}function b_(e,t,n){let r=hi(e.status);return{id:e.stage_id,label:n??e.stage_id,status:r,selected:e.stage_id===t,meta:r===`waiting`?pi(e.status):e.last_at,envelope:e.envelope?{summary:e.envelope.summary,artifactCount:e.envelope.artifacts.length}:null}}function x_(e,t,n){return{id:e,label:n??e,status:`pending`,selected:e===t,meta:`pending`,envelope:null}}function S_(e,t,n,r){let i=v_(r,e);return t?b_(t,n,i):x_(e.stage_id,n,i)}function C_(e,t,n){if(!n||n.length===0)return e.map(e=>b_(e,t));let r=new Map(e.map(e=>[e.stage_id,e])),i=new Set,a=[];for(let e of n){i.add(e);let n=r.get(e);a.push(n?b_(n,t):x_(e,t))}for(let n of e)i.has(n.stage_id)||a.push(b_(n,t));return a}function w_(e,t,n){return e.waiting_stage_ids?.includes(t)?!0:n===`waiting_for_input`}function T_(e){if(e)switch(e.kind){case`free_text`:case`confirm`:return e.message;case`artifact_backed`:return e.message||e.artifacts[0];case`multi_question`:return e.questions.length===1?`1 question`:`${e.questions.length} questions`}}function E_(e,t,n,r,i,a){return Jh(t).map(o=>{let s=n.get(o.stage_id),c=s?.status??o.status;return{stageId:o.stage_id,title:v_(t,o),kicker:o.definition_id??o.stage_id,status:c,attemptCount:s?.attempt_count??o.attempt_count??1,readinessLine:Jg({readiness:o.readiness,blocked_by:o.blocked_by,status:c}),gateKinds:o.gate_kinds,meta:c===`running`?s?.last_at:void 0,promptSummary:c===`waiting_for_input`?T_(s?.pending_prompt):void 0,isWaitingAttention:w_(e,o.stage_id,c),isFeedbackSource:r.has(o.stage_id)||void 0,isFeedbackTarget:i.has(o.stage_id)||void 0,isSuperseded:a.has(o.stage_id)||void 0}})}function D_(e,t,n,r,i,a){return t.map(t=>{let o=n.get(t.id),s=o?.status??`pending`;return{stageId:t.id,title:t.label,kicker:t.id,status:s,attemptCount:o?.attempt_count??1,meta:s===`running`?o?.last_at:void 0,promptSummary:s===`waiting_for_input`?T_(o?.pending_prompt):void 0,isWaitingAttention:w_(e,t.id,s),isFeedbackSource:r.has(t.id)||void 0,isFeedbackTarget:i.has(t.id)||void 0,isSuperseded:a.has(t.id)||void 0}})}function O_(e,t,n,r,i,a){let o=u_(e),s=o_(e.pipeline_track,a),c=n&&a_(n,a),l=Qh(s,{liveStageIds:a_(e.stages.map(e=>e.stage_id),a),plannedStageIds:c}),u=new Set(r.map(e=>e.from)),d=new Set(r.map(e=>e.to));if(!s.nodes.length){let n=C_(e.stages.filter(e=>!a.has(e.stage_id)),t,c);return{spatialLayout:l,nodeChrome:D_(e,n,o,u,d,i),trackStages:n}}let f=s.nodes,p=Jh(f).map(e=>S_(e,o.get(e.stage_id),t,f));return{spatialLayout:l,nodeChrome:E_(e,f,o,u,d,i),trackStages:p}}function k_(e,t,n){return e===`stream`?t===`waiting_for_input`&&n?{kind:`reply`,prompt:n}:!t||t===`succeeded`||t===`failed`||t===`interrupted`||t===`pending`||t===`skipped`?{kind:`idle`,label:`Session closed`}:{kind:`none`}:{kind:`none`}}function A_(e){return e===`waiting_for_input`?`alive`:e===`succeeded`||e===`failed`||e===`interrupted`||e===`pending`||e===`skipped`?`closed`:null}function j_(e){let t=[];for(let n of e.stages)for(let r of n.artifacts)t.push({path:r,meta:y_(e,n.stage_id)});return t}function M_(e,t){let n=j_(e);return t?.envelope?[{path:Xg(t.stage_id),label:`Handoff envelope`,meta:y_(e,t.stage_id)},...n]:n}function N_(e,t,n){let r=e.pipeline_track;if(r?.nodes?.length)return r.edges.find(e=>e.to===t)?.from;if(n&&n.length>0){let e=n.indexOf(t);if(e>0)return n[e-1]}let i=e.stages.findIndex(e=>e.stage_id===t);if(i>0)return e.stages[i-1]?.stage_id}function P_(e,t,n){let r=e.pipeline_track;if(r?.nodes?.length){let e=r.edges.filter(e=>e.from===t);return e.length===1?e[0]?.to:void 0}if(n&&n.length>0){let e=n.indexOf(t);if(e>=0)return n[e+1]}let i=e.stages.findIndex(e=>e.stage_id===t);if(!(i<0))return e.stages[i+1]?.stage_id}function F_(e){return e?.kind===`artifact_backed`?e:void 0}function I_(e){return e?.status===`waiting_for_input`&&e.pending_prompt?.kind===`artifact_backed`}function L_(e,t){return t.retrying||t.abandoning?!0:e?e.status===`created`||e.status===`running`||e.waiting_stage_id?!0:e.stages.some(e=>e.status===`running`||e.status===`waiting_for_input`):!1}function R_(e,t,n,r){let i=p_(t,n),a=e.kind===`stream`&&e.stageId&&l_(t,e.stageId,r)?e.stageId:i,o=e.kind===`envelope`?e.stageId:e.kind===`artifact`?h_(t,e.path):a,s=t.stages.find(e=>e.stage_id===o)??null,c=t.pipeline_track?.nodes?.length?void 0:r,l=o?N_(t,o,c):void 0,u=l?t.stages.find(e=>e.stage_id===l):void 0,d=I_(s),f=e.kind===`artifact`&&!!n.wasWaitingArtifact&&!d,p;p=e.kind===`envelope`?`envelope`:e.kind===`artifact`&&!f?`artifact`:o?`stream`:`empty`;let m=p===`artifact`&&d,h=m?F_(s?.pending_prompt):void 0,g=s_(t),_=!!g,v=t_(t.active_feedback_loop,t.feedback_loops,t.pipeline_track),y=i_(t.feedback_loops),b=n_(t.feedback_loops),x=e.kind===`envelope`?e.stageId:null,S=x?t.stages.find(e=>e.stage_id===x)??null:null,C=e.kind===`envelope`?{fromStageId:e.stageId,toStageId:P_(t,e.stageId,c),envelope:S?.envelope??null}:null,w=(n.drawerStageId?t.stages.find(e=>e.stage_id===n.drawerStageId)??null:null)?.envelope??null,T=p!==`envelope`&&n.drawerStageId&&w?{fromStageId:n.drawerStageId,toStageId:P_(t,n.drawerStageId,c),envelope:w}:null,{spatialLayout:E,nodeChrome:D,trackStages:O}=O_(t,o,r,v,b,y);return{selectedStageId:o,selectedStage:s,kind:p,composer:k_(p,s?.status,s?.pending_prompt),showDecide:m,decidePrompt:h,showFeedbackDecide:_,feedbackDecide:g,feedbackOverlays:v,artifactReadOnly:!m,selectedPath:p===`artifact`&&e.kind===`artifact`?e.path:p===`envelope`&&e.kind===`envelope`?Xg(e.stageId):void 0,trackStages:O,spatialLayout:E,nodeChrome:D,artifactFiles:M_(t,s),sessionChip:A_(s?.status),inboundEnvelope:u?.envelope??null,inboundFromStageId:u?.stage_id,inboundToStageId:s?.stage_id,drawer:T,envelope:C,liveStream:s?.status===`running`||s?.status===`waiting_for_input`,activeEnvelopeId:e.kind===`envelope`?e.stageId:n.drawerStageId,waitingArtifact:d,syncStreamRoute:f}}function z_(e){return e.syncStreamRoute?{action:`openStream`,stageId:e.selectedStageId??void 0}:e.view.kind!==`stream`||!e.run?{action:`none`}:e.streamViewStageId&&!l_(e.run,e.streamViewStageId,e.plannedStageIds)?{action:`openStream`}:e.userPickedStageId||e.dismissedWaitKey||!e.selectedStageId||e.streamViewStageId===e.selectedStageId?{action:`none`}:{action:`openStream`,stageId:e.selectedStageId}}var B_=300,V_=200,H_=140,U_=24;function W_(e,t){let n=t-H_;return t<340?Math.max(0,n):Math.max(V_,Math.min(e,n))}function G_(e){return e===`alive`?(0,q.jsx)(`span`,{className:`chip`,children:`session alive`}):e===`closed`?(0,q.jsx)(`span`,{className:`chip`,children:`session closed`}):null}function K_(e,t,n){let r=t.selectedStage;if(t.composer.kind===`reply`&&r)return(0,q.jsx)(`div`,{className:`composer`,children:(0,q.jsx)(`div`,{className:`composer__inner`,children:(0,q.jsx)(bl,{runId:e,stageId:r.stage_id,prompt:t.composer.prompt,onReviewSideBySide:n})})});if(t.composer.kind===`idle`)return(0,q.jsx)(`div`,{className:`composer composer--idle`,children:(0,q.jsx)(`div`,{className:`composer__inner`,children:(0,q.jsx)(`p`,{className:`muted`,children:t.composer.label})})})}function q_({runId:e,view:t,onBack:n,onReran:r,onOpenStream:i,onOpenArtifact:a,onOpenEnvelope:o}){let[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(null),[d,f]=(0,v.useState)(null),[p,m]=(0,v.useState)(null),[h,g]=(0,v.useState)(null),[_,y]=(0,v.useState)(!1),[b,x]=(0,v.useState)(null),[S,C]=(0,v.useState)(()=>t.kind===`stream`&&t.stageId?t.stageId:null),w=(0,v.useRef)(null),[T,E]=(0,v.useState)(null),[D,O]=(0,v.useState)(null),[k,A]=(0,v.useState)(B_),[j,M]=(0,v.useState)(null),[N,P]=(0,v.useState)(0),[F,I]=(0,v.useState)(!1),L=(0,v.useRef)(null),R=(0,v.useRef)(null),[z,B]=(0,v.useState)(!1),V=(0,v.useRef)(!1),H=(0,v.useRef)(i);H.current=i;let U=Nr(),W=t.kind===`stream`?t.stageId:void 0,ee=(0,v.useCallback)(async()=>{try{let t=await Tn(e);c(t),f(null)}catch(e){f(e instanceof Error?e.message:String(e))}},[e]),te=(0,v.useCallback)(async()=>{await ee(),U.refresh()},[ee,U]),ne=(0,v.useCallback)(async(t,n)=>{y(!0),x(null);try{await nr(e,t,n),await te()}catch(e){x(e instanceof Error?e.message:String(e))}finally{y(!1)}},[te,e]),re=(0,v.useCallback)(async t=>{if(window.confirm(`Stop manual recovery? This stage will remain failed in this run.`)){y(!0),x(null);try{await rr(e,t),await te()}catch(e){x(e instanceof Error?e.message:String(e))}finally{y(!1)}}},[te,e]),{retryingStageIds:ie,error:ae,retry:oe,clearError:se}=ig(e,te),ce=(0,v.useCallback)(e=>{C(e),i(e),oe(e)},[i,oe]),{resumingStageIds:le,error:ue,resume:de,clearError:fe}=og(e,te),pe=(0,v.useCallback)(e=>{C(e),i(e),de(e)},[i,de]),{abandoningStageId:me,error:he,abandon:ge,clearError:_e}=cg(e,te),ve=(0,v.useCallback)(async()=>{U.refresh(),n()},[U,n]),{cancelling:ye,error:be,cancel:xe,clearError:Se}=Kg(e,te),{deleting:Ce,error:we,deleteRun:Te,clearError:Ee}=qg(e,s?.status,ve),De={retryingStageIds:ie,abandoningStageId:me,resumingStageIds:le};(0,v.useEffect)(()=>{C(W??null),w.current=null,E(null),O(null),A(B_),M(null),c(null),f(null),m(null),g(null),y(!1),x(null),V.current=!1},[e]),(0,v.useEffect)(()=>{ee()},[ee]),(0,v.useEffect)(()=>{t.kind===`stream`&&C(W??null)},[t.kind,W]),(0,v.useEffect)(()=>{let e=!1;return On().then(t=>{e||u(t.pipelines)}).catch(()=>{e||u([])}),()=>{e=!0}},[]);let Oe=L_(s,{retrying:ie.size>0,abandoning:me!==null});(0,v.useEffect)(()=>{if(!Oe)return;let e=window.setInterval(()=>void ee(),1e3);return()=>window.clearInterval(e)},[ee,Oe]);let ke=l?.find(e=>e.id===s?.pipeline_id)?.stages.map(e=>e.id)??[],G=s?R_(t,s,{previousStageId:S??w.current,userPicked:S!==null,drawerStageId:T,dismissedWaitKey:D,wasWaitingArtifact:V.current},ke):null,Ae=G?.selectedStageId,je=G?.selectedStage?.attempt_count;(0,v.useEffect)(()=>{if(!Ae){m(null),g(null);return}let t=!1;return m(null),g(null),En(e,Ae).then(e=>{t||m(e)}).catch(e=>{t||g(e instanceof Error?e.message:String(e))}),()=>{t=!0}},[e,Ae,je]),G&&(w.current=G.selectedStageId),G?.waitingArtifact?V.current=!0:t.kind!==`artifact`&&(V.current=!1),(0,v.useEffect)(()=>{let e=z_({view:t,streamViewStageId:W,run:s,plannedStageIds:ke,selectedStageId:G?.selectedStageId??null,syncStreamRoute:G?.syncStreamRoute??!1,userPickedStageId:S,dismissedWaitKey:D});e.action===`openStream`&&H.current(e.stageId)},[t,W,s,ke,G?.selectedStageId,G?.syncStreamRoute,S,D]),(0,v.useEffect)(()=>{let e=L.current;if(!e)return;let t=()=>P(e.getBoundingClientRect().height);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let Me=(0,v.useCallback)(e=>{let t=L.current?.getBoundingClientRect().height??N;A(W_(e,t))},[N]),Ne=(0,v.useCallback)(()=>{s&&O(f_(s)),C(null),w.current=null,E(null),i()},[i,s]),Pe=(0,v.useCallback)(()=>{let e=G?.selectedStageId??(t.kind===`envelope`?t.stageId:void 0)??S;if(e){C(e),i(e);return}i()},[i,S,t,G?.selectedStageId]);async function Fe(){B(!0),f(null),se(),_e(),fe(),Se(),Ee();try{r((await $n(e)).runId)}catch(e){f(e instanceof Error?e.message:String(e))}finally{B(!1)}}let K=G?.selectedStage??null,Ie=p!==null&&p.stage_id===K?.stage_id?p.manual_recovery:void 0,Le=G?.selectedPath,Re=s?fi(s.status):void 0,ze=G?K_(e,G,a):void 0,Be=!!(G&&G.spatialLayout.nodes.length>0),Ve=!!(G&&(G.selectedStageId||G.kind===`artifact`||G.kind===`envelope`)),He=K?ci(K.events):!1,Ue=(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:Ne,children:`Hide workspace`}),We;if(d)We=(0,q.jsx)(`div`,{style:{padding:`var(--spacing-4)`},children:(0,q.jsx)(`div`,{className:`banner banner--error`,children:d})});else if(!s||!G)We=(0,q.jsx)(`div`,{style:{padding:`var(--spacing-4)`},children:(0,q.jsx)(`p`,{children:`Loading…`})});else if(G.kind===`artifact`&&Le)We=(0,q.jsx)(Pm,{runId:e,path:Le,readOnly:G.artifactReadOnly,onBackToTranscript:Pe,onHide:Ne});else if(G.kind===`envelope`&&G.envelope)We=G.envelope.envelope?(0,q.jsx)(Wm,{fromStageId:G.envelope.fromStageId,toStageId:G.envelope.toStageId,envelope:G.envelope.envelope,onBackToTranscript:Pe,onHide:Ne,onArtifactClick:a,stageLabel:e=>y_(s,e)}):(0,q.jsxs)(`div`,{className:`stream`,style:{height:`100%`},children:[(0,q.jsxs)(`header`,{className:`stream__head`,children:[(0,q.jsx)(`h3`,{className:`stream__name`,children:`Handoff envelope`}),(0,q.jsx)(`span`,{className:`topbar__spacer`}),(0,q.jsxs)(`div`,{className:`stream__head-trail`,children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:Pe,children:`← Transcript`}),Ue]})]}),(0,q.jsx)(`div`,{style:{padding:`var(--spacing-4)`},children:(0,q.jsxs)(`div`,{className:`banner banner--warning`,children:[G.envelope.fromStageId,` has not emitted a handoff envelope.`]})})]});else if(G.selectedStageId){let e=G.selectedStageId,t=K?fi(K.status):void 0,n=j!==`transcript`,r=j!==`logs`,i=(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:()=>M(r?`logs`:null),children:r?`Hide logs`:`Show logs`}),Ue]}),a=(0,q.jsxs)(q.Fragment,{children:[K?(0,q.jsx)(bi,{costUsd:K.cost_usd}):null,(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:()=>M(n?`transcript`:null),children:n?`Hide transcript`:`Show transcript`}),Ue]});We=(0,q.jsxs)(`div`,{className:`center-split`,children:[(0,q.jsx)(`div`,{className:`center-split__transcript`,hidden:!n,children:(0,q.jsxs)(Ng,{stageName:G.trackStages.find(t=>t.id===e)?.label??e,status:(0,q.jsxs)(q.Fragment,{children:[He?(0,q.jsxs)(`span`,{className:`status status--failed`,children:[(0,q.jsx)(`span`,{className:`dot dot--failed`}),` `,li()]}):(0,q.jsxs)(`span`,{className:`status${t&&t!==`running`?` status--${t}`:``}`,children:[(0,q.jsx)(`span`,{className:`dot${t?` dot--${t}`:``}`}),` `,K?pi(K.status):`pending`]}),K?(0,q.jsx)(Sl,{count:K.attempt_count}):null,K?(0,q.jsx)(bi,{costUsd:K.cost_usd}):null,G_(G.sessionChip),K&&tg(K)&&Ie===void 0?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:ng(De,K.stage_id),onClick:()=>pe(K.stage_id),children:le.has(K.stage_id)?`Resuming…`:`Resume session`}):null,K&&$h(K.status)&&Ie===void 0?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:ng(De,K.stage_id),onClick:()=>ce(K.stage_id),children:ie.has(K.stage_id)?`Retrying…`:`Retry stage`}):null,K&&eg(K.status)?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm btn--reject`,disabled:ng(De,K.stage_id),onClick:()=>ge(K.stage_id),children:me===K.stage_id?`Abandoning…`:`Abandon`}):null]}),trailing:i,autoScroll:G.liveStream,scrollKey:K?.events.length,composer:ze,children:[(0,q.jsx)(Ch,{events:K?.events??[],inboundEnvelope:G.inboundEnvelope}),(0,q.jsx)(Lg,{history:p,error:h,recovering:_,onRecover:K?e=>void ne(K.stage_id,e):void 0,onStop:K?()=>void re(K.stage_id):void 0})]})}),(0,q.jsx)(`div`,{className:`center-split__logs`,hidden:!r,children:(0,q.jsx)(Kh,{events:K?.events??[],headerAction:a})})]})}let Ge=Math.max(0,N-H_),Ke=N<340?Ge:V_;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{ref:L,className:`pane run-detail${Ve?` has-stage`:``}${F?` is-resizing`:``}`,style:{height:`100%`,"--work-h":`${k}px`},children:[(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`div`,{className:`topbar`,children:[(0,q.jsx)(`a`,{className:`topbar__back`,href:`#/runs`,onClick:e=>{e.preventDefault(),n()},children:`← Runs`}),(0,q.jsx)(`h2`,{className:`topbar__title`,children:s?Rr(s):`Loading…`}),s?(0,q.jsx)(`span`,{className:`topbar__sub`,title:Lr(s),children:Lr(s)}):null,s?.binding?(0,q.jsx)(`span`,{className:`topbar__sub`,title:Hr(s.binding),children:Vr(s.binding)}):null,s?(0,q.jsxs)(`span`,{className:`status${Re&&Re!==`running`?` status--${Re}`:``}`,title:s.status===`cancelled`&&s.cancel_reason?s.cancel_reason:void 0,children:[(0,q.jsx)(`span`,{className:`dot${Re?` dot--${Re}`:``}`}),` `,s.status===`cancelled`?ui(s.cancel_reason):pi(s.status)]}):null,s&&yi(s.total_cost_usd)?(0,q.jsx)(`span`,{className:`topbar__sub`,title:`Total cost across every stage in this run`,children:yi(s.total_cost_usd)}):null,(0,q.jsx)(`span`,{className:`topbar__spacer`}),s&&Bg(s.status)?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:ye||Ce||z,onClick:()=>{Se(),xe()},children:ye?`Cancelling…`:`Cancel`}):null,s&&Vg(s.status)?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm btn--reject`,disabled:ye||Ce||z,onClick:()=>{Ee(),Te()},children:Ce?`Deleting…`:`Delete`}):null,(0,q.jsx)(`button`,{className:`btn btn--primary`,disabled:z||ye||Ce,onClick:()=>void Fe(),children:z?s?.status===`created`?`Starting…`:`Starting fresh…`:s?.status===`created`?`Start run`:`Start fresh`})]}),ae?(0,q.jsx)(`div`,{className:`banner banner--error`,style:{padding:`var(--spacing-3) var(--spacing-5)`},children:ae}):null,ue?(0,q.jsx)(`div`,{className:`banner banner--error`,style:{padding:`var(--spacing-3) var(--spacing-5)`},children:ue}):null,he?(0,q.jsx)(`div`,{className:`banner banner--error`,style:{padding:`var(--spacing-3) var(--spacing-5)`},children:he}):null,be?(0,q.jsx)(`div`,{className:`banner banner--error`,style:{padding:`var(--spacing-3) var(--spacing-5)`},children:be}):null,we?(0,q.jsx)(`div`,{className:`banner banner--error`,style:{padding:`var(--spacing-3) var(--spacing-5)`},children:we}):null,b?(0,q.jsx)(`div`,{className:`banner banner--error`,style:{padding:`var(--spacing-3) var(--spacing-5)`},children:b}):null]}),d&&!s?(0,q.jsx)(`div`,{style:{padding:`var(--spacing-4)`},children:(0,q.jsx)(`div`,{className:`banner banner--error`,children:d})}):!s||!G?(0,q.jsx)(`div`,{style:{padding:`var(--spacing-4)`},children:(0,q.jsx)(`p`,{children:`Loading…`})}):Be?(0,q.jsxs)(`div`,{className:`workspace`,children:[s.active_feedback_loop||(s.feedback_loops?.length??0)>0?(0,q.jsx)(th,{active:s.active_feedback_loop,history:s.feedback_loops??[]}):null,(0,q.jsx)(Dg,{layout:G.spatialLayout,stages:s.stages,nodeChrome:G.nodeChrome,selectedStageId:G.selectedStageId,onSelectStage:e=>{C(e),i(e)},onDeselect:Ne,retryingStageIds:ie,onRetryStage:ce,resumingStageIds:le,onResumeStage:pe,abandoningStageId:me,onAbandonStage:ge,runId:e,showHint:!Ve,feedbackOverlays:G.feedbackOverlays})]}):(0,q.jsx)(`div`,{style:{padding:`var(--spacing-4)`},children:(0,q.jsx)(`p`,{children:`No stages have started yet.`})}),Ve&&s&&G?(0,q.jsxs)(`div`,{className:`work`,children:[(0,q.jsx)(`div`,{className:`work-split${F?` is-dragging`:``}`,role:`separator`,"aria-orientation":`horizontal`,"aria-label":`Resize workspace`,"aria-valuemin":Ke,"aria-valuemax":Ge,"aria-valuenow":Math.round(k),tabIndex:0,onPointerDown:e=>{(e.button==null||e.button===0)&&(e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId),I(!0),R.current={id:e.pointerId,y:e.clientY,h:k})},onPointerMove:e=>{let t=R.current;!t||t.id!==e.pointerId||Me(t.h+(t.y-e.clientY))},onPointerUp:e=>{R.current?.id===e.pointerId&&(R.current=null,I(!1))},onPointerCancel:e=>{R.current?.id===e.pointerId&&(R.current=null,I(!1))},onKeyDown:e=>{e.key===`ArrowUp`&&(e.preventDefault(),Me(k+U_)),e.key===`ArrowDown`&&(e.preventDefault(),Me(k-U_)),e.key===`Home`&&(e.preventDefault(),Me(Ge)),e.key===`End`&&(e.preventDefault(),Me(Ke))},children:(0,q.jsx)(`span`,{className:`work-split__grip`,"aria-hidden":`true`})}),(0,q.jsxs)(`div`,{className:`work-row`,children:[(0,q.jsx)(`div`,{className:`aside`,style:{width:240,flexShrink:0,overflow:`auto`},children:(0,q.jsx)(wl,{files:G.artifactFiles,selectedPath:Le,onSelect:e=>{let t=Zg(e);if(t){C(t),o(t);return}a(e)},footer:(0,q.jsx)(tl,{trigger:(0,q.jsx)(`span`,{style:{fontSize:`var(--font-size-sm)`,fontWeight:500},children:`Input`}),defaultIsOpen:!1,children:(0,q.jsx)(Uc,{code:s.task_yaml,language:`yaml`,container:`section`,maxHeight:200,width:`100%`})})})}),(0,q.jsx)(`div`,{style:{flex:1,minWidth:0,minHeight:0,display:`flex`,flexDirection:`column`},children:We}),G.showFeedbackDecide&&G.feedbackDecide?(0,q.jsx)(`div`,{className:`decide`,style:{width:320,flexShrink:0},children:(0,q.jsx)(Xm,{runId:e,decide:G.feedbackDecide,onSuccess:te})}):G.showDecide&&G.decidePrompt&&K?(0,q.jsx)(`div`,{className:`decide`,style:{width:320,flexShrink:0},children:(0,q.jsx)(Vm,{runId:e,stageId:K.stage_id,prompt:G.decidePrompt,events:K.events,inboundEnvelope:G.inboundEnvelope,inboundFromStageId:G.inboundFromStageId,inboundToStageId:G.inboundToStageId,selectedPath:Le,onSelectArtifact:a,onOpenInboundEnvelope:G.inboundFromStageId?()=>{let e=G.inboundFromStageId;e&&E(e)}:void 0})}):null]})]}):null]}),G?.drawer?(0,q.jsx)(qm,{isOpen:!0,onClose:()=>E(null),fromStageId:G.drawer.fromStageId,toStageId:G.drawer.toStageId,envelope:G.drawer.envelope,onOpenFullRecord:()=>{let e=G.drawer?.fromStageId;E(null),e&&o(e)},onArtifactClick:e=>{E(null),a(e)}}):null]})}function J_({label:e,status:t,index:n,meta:r,selected:i,proposed:a,onClick:o}){let s=gi(t)||(n==null?``:String(n+1));return(0,q.jsxs)(`button`,{type:`button`,className:`node`,"data-s":t,"data-selected":i?`true`:void 0,"data-proposed":a?`true`:void 0,onClick:o,"aria-disabled":!o,style:{cursor:o?`pointer`:`default`},children:[(0,q.jsx)(`span`,{className:`node__ring`,"aria-hidden":`true`,children:s}),(0,q.jsx)(`span`,{className:`node__name`,children:e}),r?(0,q.jsx)(`span`,{className:`node__meta`,children:r}):null]})}function Y_(e){return e===1?`1 file`:`${e} files`}function X_({mode:e,flowed:t,envelope:n,fromStageId:r,selected:i,onEnvelopeClick:a}){let o=n==null,s=o?`no envelope yet`:`envelope · ${Y_(n.artifactCount)}`;return(0,q.jsxs)(`span`,{className:`wire`,"data-flowed":t?`true`:void 0,children:[(0,q.jsx)(`span`,{className:`wire__line`}),e===`definition`?null:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{className:`wire__env`,disabled:o||!a,"data-selected":i?`true`:void 0,onClick:o||!a?void 0:()=>a(r),children:s}),n?.summary?(0,q.jsx)(`span`,{className:`wire__summary`,children:n.summary}):null]})]})}function Z_({stages:e,mode:t=`run`,onSelect:n,onEnvelopeClick:r,activeEnvelopeId:i}){return(0,q.jsx)(`nav`,{className:`track`,"aria-label":`Pipeline track`,children:(0,q.jsx)(`div`,{className:`track__rail`,children:e.map((a,o)=>(0,q.jsxs)(v.Fragment,{children:[(0,q.jsx)(J_,{id:a.id,label:a.label,status:a.status,index:o,meta:a.meta,selected:a.selected,proposed:a.proposed,onClick:n&&(t===`definition`||a.status!==`pending`)?()=>n(a.id):void 0}),o<e.length-1?(0,q.jsx)(X_,{mode:t,flowed:a.envelope!=null,envelope:a.envelope,fromStageId:a.id,selected:i===a.id,onEnvelopeClick:r}):null]},a.id))})})}var Q_=`Providers are connected through Pi. Stageflow binds the credential store you choose; it is not a standalone non-Pi LLM client.`;function $_(e){return e.credentialSource===void 0}function ev(e){return e?`pi_home`:`sf_owned`}function tv(e){return e.supportsApiKey}function nv(e){return e.supportsOauth&&!e.supportsApiKey}function rv(e){return e?e.configured?e.authKind===`oauth`?`Connected (OAuth)`:e.authKind===`api_key`?`Connected (API key)`:`Connected`:`Not connected`:`Unknown`}function iv(e){return e.credentialSource===void 0?!1:e.credentialSource===`pi_home`||e.configuredCount>0}function av(e){return e.filter(e=>e?.configured===!0).length}async function ov(){let e=await Vn();if($_(e))return{ready:!1,message:`Connect providers before starting a run. Choose an existing Pi login or add API keys in Stageflow.`};let t=e.credentialSource;if(t===`pi_home`)return{ready:!0,credentialSource:t};let n=await Bn();return iv({credentialSource:t,configuredCount:av(await Promise.all(n.providers.map(async e=>{try{let{provider:t}=await Hn(e.id);return t}catch{return}})))})?{ready:!0,credentialSource:t}:{ready:!1,credentialSource:t,message:`Connect at least one provider API key in Settings → Providers (or #/connect) before starting a run.`}}function sv(e){return!Array.isArray(e)||e.length===0?`no gate`:`will ask you`}function cv({onStarted:e,initialPipelinePath:t,initialTaskPath:n}){let[r,i]=(0,v.useState)([]),[a,o]=(0,v.useState)([]),[s,c]=(0,v.useState)(``),[l,u]=(0,v.useState)(``),[d,f]=(0,v.useState)(null),[p,m]=(0,v.useState)(!1),[h,g]=(0,v.useState)(null),[_,y]=(0,v.useState)(null),{snapshot:b,error:x}=Mr(),S=b.health;(0,v.useEffect)(()=>{(async()=>{try{let[e,r]=await Promise.all([Dn(),On()]);i(e.tasks),o(r.pipelines);let a=n&&e.tasks.some(e=>e.path===n)?n:e.tasks[0]?.path??``,s=t&&r.pipelines.some(e=>e.path===t)?t:r.pipelines[0]?.path??``;c(a),u(s)}catch(e){f(e instanceof Error?e.message:String(e))}})()},[t,n]);let C=a.find(e=>e.path===l)??null,w=(0,v.useMemo)(()=>C?C.stages.map(e=>({id:e.id,label:e.id,status:ni(e.gate_kinds)?`waiting`:`pending`,meta:sv(e.gate_kinds)})):[],[C]),T=S!=null&&S.slotsAvailable===0,E=S==null?0:Qr(b,S.activeRunIds).length,D=d??(S==null&&x?x:null);async function O(){if(!s||!l){f(`Pick a task and a pipeline.`);return}m(!0),f(null),g(null),y(null);try{let e=await ov();if(!e.ready){y(e.message??`Connect providers before starting a run.`),m(!1);return}}catch(e){y(e instanceof Error?e.message:String(e)),m(!1);return}let t=await Qn(s,l);if(m(!1),t.ok){e(t.runId);return}g(t)}return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`p`,{className:`crumbs`,children:[(0,q.jsx)(`a`,{href:`#/today`,children:`Today`}),` / start a run`]}),(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Start a run`}),(0,q.jsx)(`p`,{children:`A run is a task path plus a pipeline path. Nothing else is decided here.`})]})}),T&&S?(0,q.jsxs)(`div`,{className:`gate`,style:{padding:`var(--spacing-4)`,marginBottom:`var(--spacing-5)`},children:[(0,q.jsxs)(`div`,{className:`gate__label`,children:[(0,q.jsx)(`span`,{className:`dot dot--waiting`}),` No free session slots`]}),(0,q.jsxs)(`p`,{className:`gate__question`,children:[`All `,S.maxConcurrent,` slots are in use`,E>0?` — ${E===1?`one is`:`${E} are`} held by stages waiting on you`:``]}),S.activeRunIds.length>0?(0,q.jsxs)(`p`,{style:{margin:`var(--spacing-2) 0 0`,color:`var(--color-text-yellow)`,fontSize:`var(--font-size-sm)`},children:[`Blocking runs: `,S.activeRunIds.map((e,t)=>(0,q.jsxs)(v.Fragment,{children:[t>0?`, `:``,(0,q.jsx)(`a`,{href:`#/runs/${e}`,children:e.slice(0,8)})]},e))]}):null]}):null,_?(0,q.jsxs)(`div`,{className:`gate`,style:{padding:`var(--spacing-4)`,marginBottom:`var(--spacing-5)`},children:[(0,q.jsxs)(`div`,{className:`gate__label`,children:[(0,q.jsx)(`span`,{className:`dot dot--waiting`}),` Providers not ready`]}),(0,q.jsx)(`p`,{className:`gate__question`,children:_}),(0,q.jsxs)(`p`,{style:{margin:`var(--spacing-2) 0 0`,fontSize:`var(--font-size-sm)`},children:[(0,q.jsx)(`a`,{href:`#/connect`,children:`Connect providers`}),` · `,(0,q.jsx)(`a`,{href:`#/settings`,children:`Open Settings`})]})]}):null,h?(0,q.jsxs)(`div`,{className:`gate`,style:{padding:`var(--spacing-4)`,marginBottom:`var(--spacing-5)`,borderColor:`var(--color-border-red)`,borderLeftColor:`var(--color-error)`,background:`var(--color-background-red)`,color:`var(--color-text-red)`},children:[(0,q.jsx)(`div`,{className:`gate__label`,style:{color:`var(--color-text-red)`},children:`Could not start run`}),(0,q.jsx)(`p`,{className:`gate__question`,style:{color:`var(--color-text-primary)`},children:h.error})]}):null,D?(0,q.jsxs)(`p`,{style:{color:`var(--color-text-red)`,marginBottom:`var(--spacing-4)`},children:[`Could not start run: `,D]}):null,(0,q.jsxs)(`div`,{className:`grid-2`,children:[(0,q.jsx)(`div`,{children:(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Task`})}),(0,q.jsx)(`div`,{className:`pick`,children:r.map(e=>(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`radio`,name:`task`,checked:s===e.path,onChange:()=>c(e.path)}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:e.id}),(0,q.jsx)(`span`,{children:e.goal}),(0,q.jsx)(`span`,{className:`mono muted`,style:{display:`block`,fontSize:`var(--font-size-xs)`},children:e.path})]})]},e.path))})]})}),(0,q.jsx)(`div`,{children:(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Pipeline`})}),(0,q.jsx)(`div`,{className:`pick`,children:a.map(e=>(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`radio`,name:`pipeline`,checked:l===e.path,onChange:()=>u(e.path)}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:e.id}),(0,q.jsxs)(`span`,{children:[e.stages.length,` stages`]}),(0,q.jsx)(`span`,{className:`mono muted`,style:{display:`block`,fontSize:`var(--font-size-xs)`},children:e.path})]})]},e.path))}),w.length>0?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`eyebrow`,style:{marginTop:`var(--spacing-4)`,marginBottom:`var(--spacing-3)`},children:`What will run`}),(0,q.jsx)(`div`,{className:`track track--inline`,children:(0,q.jsx)(Z_,{stages:w,mode:`definition`})}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-3)`},children:w.filter(e=>e.status===`waiting`).length===0?`No stage in this pipeline is declared to stop for a human.`:`${w.filter(e=>e.status===`waiting`).length} ${w.filter(e=>e.status===`waiting`).length===1?`stage`:`stages`} will hold and wait for you.`})]}):null]})})]}),(0,q.jsxs)(`div`,{className:`form-actions`,style:{paddingBottom:`var(--spacing-8)`},children:[(0,q.jsx)(`button`,{className:`btn btn--primary`,disabled:!s||!l||T||p,onClick:()=>void O(),children:p?`Starting…`:`Start run`}),(0,q.jsx)(`a`,{className:`btn btn--ghost`,href:`#/today`,children:`Cancel`})]})]})}var lv={waiting:`dot dot--waiting`,running:`dot dot--running`,failed:`dot dot--failed`,succeeded:`dot dot--succeeded`};function uv({label:e,count:t,status:n,children:r}){return(0,q.jsxs)(`section`,{className:`zone`,children:[(0,q.jsxs)(`div`,{className:`zone__head`,children:[(0,q.jsx)(`span`,{className:lv[n]}),(0,q.jsx)(`span`,{className:`eyebrow`,children:e}),(0,q.jsx)(`span`,{className:`zone__rule`}),(0,q.jsx)(`span`,{className:`zone__count`,children:t})]}),r]})}function dv({waiting:e,inFlight:t,broken:n,finished:r}){return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(uv,{label:e.label,count:e.count,status:e.status,children:e.children}),(0,q.jsx)(uv,{label:t.label,count:t.count,status:t.status,children:t.children}),(0,q.jsx)(uv,{label:n.label,count:n.count,status:n.status,children:n.children}),(0,q.jsx)(uv,{label:r.label,count:r.count,status:r.status,children:r.children})]})}function fv(e){return e===0?`Nothing needs you`:e===1?`One thing needs you`:`${e} things need you`}function pv(e){let t=e.waiting_stage_id??`this stage`;switch(e.waiting_kind){case`confirm`:return`Stage ${t} paused its session to ask. Rejecting sends your note back to the same session.`;case`artifact_backed`:return`Stage ${t} asked an artifact_backed prompt. Reject revises in the same session.`;case`multi_question`:return`Stage ${t} asked a multi_question prompt. All answers go back in one reply.`;case`free_text`:return`Stage ${t} asked a free_text prompt.`;case`feedback_loop_decision`:return`Feedback loop limit — decide extend, continue, or abandon`;default:return`Stage ${t} is waiting for input.`}}function mv(e){let t=e.waiting_artifacts?.[0];return t?{icon:`◆`,name:t.split(`/`).pop()??t}:{icon:`?`,name:e.waiting_kind??`waiting`}}function hv(e){let t=e.waiting_summary??`Waiting for input`;return t.length<=180?t:`${t.slice(0,180)}…`}var gv=400,_v=12;function vv(e){let t=e.split(`
119
- `).slice(0,_v).join(`
120
- `);return t.length>gv&&(t=`${t.slice(0,gv).trimEnd()}…`),t}function yv(e){let t=vv(e),n=t.split(`
121
- `),r,i=[];for(let e of n){let t=e.match(/^#+\s+(.+)/);if(!r&&t?.[1]){r=t[1];continue}e.trim()&&i.push(e.replace(/^#+\s+/,``))}return(0,q.jsxs)(q.Fragment,{children:[r?(0,q.jsx)(`strong`,{children:r}):null,i.length>0?i.map((e,t)=>(0,q.jsx)(`p`,{children:e},t)):r?null:(0,q.jsx)(`p`,{children:t})]})}function bv({run:e}){let t=e.waiting_artifacts?.[0],[n,r]=(0,v.useState)(null);return(0,v.useEffect)(()=>{if(e.waiting_kind!==`artifact_backed`||!t){r(null);return}let n=!1;return dr(e.run_id,t).then(e=>{n||r(yv(e))}).catch(()=>{n||r(null)}),()=>{n=!0}},[e.run_id,e.waiting_kind,t]),e.waiting_kind===`multi_question`&&e.waiting_questions?.length?(0,q.jsx)(`span`,{className:`peek-doc`,children:e.waiting_questions.map((e,t)=>(0,q.jsx)(`p`,{children:e},t))}):(0,q.jsx)(`span`,{className:`peek-doc`,children:n??(0,q.jsx)(`p`,{children:hv(e)})})}function xv(e){let t=ii(e.updated_at??e.created_at),n=ai(e.stages,e.waiting_stage_id);return n?`held ${t} at ${n}`:`held ${t}`}function Sv(e){let t=e.stages?.find(e=>e.status===`running`);return t?t.id:e.waiting_stage_id?e.waiting_stage_id:``}function Cv({run:e,onOpen:t,onOpenArtifact:n}){let r=e.waiting_kind,i=r===`feedback_loop_decision`,a=!i&&e.waiting_prompt_id&&r?{promptId:e.waiting_prompt_id,kind:r}:null,{locked:o,error:s,submitIntent:c}=yl(e.run_id,e.waiting_stage_id,a),l=!i&&al({promptId:e.waiting_prompt_id,kind:i?null:r}),u=e.waiting_artifacts?.[0],d=mv(e),f=e.waiting_questions?.length??0;function p(){u?n(e.run_id,u):t(e.run_id)}return(0,q.jsxs)(`article`,{className:`block`,children:[(0,q.jsxs)(`div`,{className:`block__body`,children:[(0,q.jsxs)(`div`,{className:`block__meta`,children:[(0,q.jsx)(`a`,{className:`block__pipeline`,href:`#/pipelines/${e.pipeline_id}`,children:Lr(e)}),(0,q.jsx)(`span`,{className:`status status--waiting`,children:xv(e)})]}),(0,q.jsx)(`p`,{className:`block__q`,children:e.waiting_summary??`Waiting for input`}),(0,q.jsx)(`p`,{className:`block__sub`,children:pv(e)}),s?(0,q.jsxs)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`},children:[`Could not accept: `,s]}):null,(0,q.jsxs)(`div`,{className:`block__actions`,children:[i?(0,q.jsx)(`button`,{className:`btn btn--primary`,onClick:()=>t(e.run_id),children:`Decide on run`}):null,l?(0,q.jsx)(`button`,{className:`btn btn--accept`,disabled:o,onClick:()=>void c({type:`decision`,decision:`accept`}),children:`Accept`}):null,r===`confirm`||r===`artifact_backed`?(0,q.jsx)(`button`,{className:`btn btn--reject`,onClick:()=>t(e.run_id),children:`Reject with note`}):null,r===`multi_question`?(0,q.jsx)(`button`,{className:`btn btn--primary`,onClick:()=>t(e.run_id),children:f>0?`Answer ${f} questions`:`Answer questions`}):null,r===`free_text`?(0,q.jsx)(`button`,{className:`btn btn--primary`,onClick:()=>t(e.run_id),children:`Answer`}):null,r===`artifact_backed`&&u?(0,q.jsxs)(`button`,{className:`btn`,onClick:()=>n(e.run_id,u),children:[`Read `,d.name]}):null,(0,q.jsx)(`button`,{className:`btn btn--ghost`,onClick:()=>t(e.run_id),children:`Open run`})]})]}),(0,q.jsxs)(`button`,{className:`block__peek`,onClick:p,"aria-label":u?`Open ${d.name}`:`Open run`,children:[(0,q.jsxs)(`span`,{className:`block__peek-name`,children:[(0,q.jsx)(`span`,{"aria-hidden":`true`,children:d.icon}),` `,d.name]}),(0,q.jsx)(bv,{run:e})]})]})}function wv({onOpen:e,onOpenArtifact:t,onNew:n,onSeeRuns:r}){let{snapshot:i,error:a,loading:o}=Mr(),[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(null),d=Wr(i),f=qr(i),p=s??a;async function m(t){u(t);try{e((await $n(t)).runId)}catch(e){c(e instanceof Error?e.message:String(e))}finally{u(null)}}let h=!o&&d.waiting.length===0&&d.inFlight.length===0&&d.broken.length===0&&d.finished.length===0,g=d.finished.slice(0,3);return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`div`,{className:`page-head`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:fv(d.waiting.length)}),(0,q.jsx)(`p`,{children:f.line})]}),(0,q.jsx)(`a`,{className:`btn btn--primary`,href:`#/new`,onClick:e=>{e.preventDefault(),n()},children:`Start a run`})]}),p?(0,q.jsxs)(`p`,{style:{color:`var(--color-text-red)`},children:[`Could not load runs: `,p]}):null,o?(0,q.jsx)(`p`,{className:`muted`,children:`Loading…`}):null,h?(0,q.jsx)(`div`,{className:`empty-hint`,children:`No runs yet. Start a pipeline to see triage zones fill in.`}):null,!o&&!h?(0,q.jsx)(dv,{waiting:{label:mi(),count:d.waiting.length,status:`waiting`,children:d.waiting.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Nothing waiting.`}):d.waiting.map(n=>(0,q.jsx)(Cv,{run:n,onOpen:e,onOpenArtifact:t},n.run_id))},inFlight:{label:`In flight`,count:d.inFlight.length,status:`running`,children:d.inFlight.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`No runs in flight.`}):(0,q.jsx)(`div`,{className:`runs`,children:d.inFlight.map(t=>(0,q.jsxs)(`a`,{className:`run-row`,href:`#/runs/${t.run_id}`,onClick:n=>{n.preventDefault(),e(t.run_id)},children:[(0,q.jsxs)(`span`,{className:`run-row__id`,children:[(0,q.jsx)(`span`,{className:`dot dot--running`}),(0,q.jsxs)(`span`,{className:`run-row__name`,children:[Rr(t),` `,(0,q.jsxs)(`span`,{children:[`· `,Sv(t)]})]})]}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`span`,{className:`track-mini`,"aria-hidden":`true`,children:t.stages.map(e=>{let t=_i(e.status);return(0,q.jsx)(`i`,{className:`track-mini__seg`,...t?{"data-s":t}:{}},e.id)})}),(0,q.jsx)(`span`,{className:`track-mini__label`,children:oi(t)})]}),(0,q.jsx)(`span`,{className:`run-row__right`,children:ii(t.updated_at??t.created_at)})]},t.run_id))})},broken:{label:`Broken`,count:d.broken.length,status:`failed`,children:d.broken.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`No failed runs.`}):d.broken.map(t=>(0,q.jsxs)(`div`,{className:`fail-row`,children:[(0,q.jsx)(`span`,{className:`dot dot--failed`}),(0,q.jsxs)(`span`,{className:`fail-row__why`,children:[(0,q.jsx)(`b`,{children:Rr(t)}),` · `,Lr(t),t.failed_reason?(0,q.jsx)(`span`,{children:t.failed_reason}):null]}),(0,q.jsx)(`button`,{className:`btn btn--sm`,onClick:n=>{n.stopPropagation(),e(t.run_id)},children:`Open stage`}),(0,q.jsx)(`button`,{className:`btn btn--sm`,disabled:l===t.run_id,onClick:e=>{e.stopPropagation(),m(t.run_id)},children:l===t.run_id?`Starting fresh…`:`Start fresh`})]},t.run_id))},finished:{label:`Finished`,count:d.finished.length,status:`succeeded`,children:d.finished.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`No finished runs yet.`}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`runs`,children:g.map(t=>(0,q.jsxs)(`a`,{className:`run-row`,href:`#/runs/${t.run_id}`,onClick:n=>{n.preventDefault(),e(t.run_id)},children:[(0,q.jsxs)(`span`,{className:`run-row__id`,children:[(0,q.jsx)(`span`,{className:`dot dot--succeeded`}),(0,q.jsxs)(`span`,{className:`run-row__name`,children:[Rr(t),` `,(0,q.jsxs)(`span`,{children:[`· `,Lr(t)]})]})]}),(0,q.jsxs)(`span`,{className:`mono muted`,children:[t.stages.length,` stages`]}),(0,q.jsx)(`span`,{className:`run-row__right`,children:ii(t.updated_at??t.created_at)})]},t.run_id))}),(0,q.jsx)(`p`,{style:{margin:`var(--spacing-3) 0 0`},children:(0,q.jsx)(`button`,{className:`btn btn--sm btn--ghost`,onClick:r,children:`See every run →`})})]})}}):null]})}var Tv=/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/,Ev=/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;function Dv(e){let t={};e.directory.trim()||(t.directory=`Directory is required.`);let n=e.id.trim();if(n?(n.length>64||!Tv.test(n))&&(t.id=`Id must be lowercase kebab-case.`):t.id=`Id is required.`,e.selectedStageIds.length===0)t.stages=`Add at least one stage id.`;else if(new Set(e.selectedStageIds).size!==e.selectedStageIds.length)t.stages=`A pipeline cannot repeat the same stage id.`;else{for(let n of e.selectedStageIds)if(!Ev.test(n)){t.stages=`Stage id "${n}" must be lowercase kebab-case.`;break}if(!t.stages&&e.compositionMode===`dependencies`){let n=new Set(e.selectedStageIds);for(let r of e.selectedStageIds){let i=e.stageNeeds[r];if(i&&(!n.has(i)||i===r)){t.stages=`Stage "${r}" needs a stage that is in this pipeline.`;break}}}}return t}function Ov(e,t){let n=t?.trim(),r;if(e===409)r=`Could not create pipeline: this id already exists.`;else if(e===422){let e=n?.toLowerCase()??``;r=e.includes(`cycle`)?`Could not create pipeline: dependency cycle detected.`:e.includes(`unknown needs`)?`Could not create pipeline: a stage needs another stage that is not in this pipeline.`:e.includes(`duplicate`)?`Could not create pipeline: the same stage was listed more than once.`:e.includes(`missing stage file`)?`Could not create pipeline: create stage files beside the pipeline directory first.`:`Could not create pipeline. Try again.`}else r=`Could not create pipeline. Try again.`;return n?`${r} ${n}`:r}function kv(e){let t={};for(let n=1;n<e.length;n++)t[e[n]]=e[n-1];return t}function Av(e){let t=new Set;for(let n of e){let e=n.path.replace(/\\/g,`/`),r=e.lastIndexOf(`/`);t.add(r>=0?e.slice(0,r):`pipelines`)}return t.size===0&&t.add(`pipelines`),[...t].sort()}function jv({isOpen:e,onClose:t,onCreated:n,pipelines:r}){let i=Av(r),[a,o]=(0,v.useState)(i[0]??`pipelines`),[s,c]=(0,v.useState)(``),[l,u]=(0,v.useState)([]),[d,f]=(0,v.useState)(``),[p,m]=(0,v.useState)(`linear`),[h,g]=(0,v.useState)({}),[_,y]=(0,v.useState)({}),[b,x]=(0,v.useState)(null),[S,C]=(0,v.useState)(!1),w=(0,v.useRef)(!1);(0,v.useEffect)(()=>{e&&!w.current&&(o(Av(r)[0]??`pipelines`),c(``),u([]),f(``),m(`linear`),g({}),y({}),x(null)),w.current=e},[e,r]),(0,v.useEffect)(()=>{if(!e)return;function t(e){e.key===`Escape`&&j()}return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e]);function T(e){e!==p&&(g(e===`dependencies`?kv(l):{}),m(e))}function E(){let e=d.trim();!e||l.includes(e)||(u(t=>[...t,e]),f(``))}function D(e,t){u(n=>{let r=e+t;if(r<0||r>=n.length)return n;let i=[...n],[a]=i.splice(e,1);return i.splice(r,0,a),p===`dependencies`&&g(kv(i)),i})}function O(e){let t=l[e];u(t=>t.filter((t,n)=>n!==e)),g(e=>{let n={...e};delete n[t];for(let[e,r]of Object.entries(n))r===t&&delete n[e];return n})}function k(e,t){g(n=>{let r={...n};return t?r[e]=t:delete r[e],r})}async function A(){let e=s.trim(),t=a.trim(),r=Dv({directory:t,id:e,selectedStageIds:l,compositionMode:p,stageNeeds:h});if(y(r),x(null),Object.keys(r).length>0)return;C(!0);let i=await Pn({directory:t,id:e,stages:l.map(e=>{if(p===`dependencies`){let t=h[e];return t?{id:e,uses:`./${e}.yaml`,needs:t}:{id:e,uses:`./${e}.yaml`}}return{id:e,uses:`./${e}.yaml`}})});if(C(!1),i.ok){n(i.pipeline);return}x(Ov(i.status,i.error))}function j(){c(``),u([]),f(``),m(`linear`),g({}),y({}),x(null),t()}return e?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,className:`drawer-scrim`,"aria-label":`Close panel`,onClick:j}),(0,q.jsxs)(`aside`,{className:`drawer drawer--right`,"aria-labelledby":`new-pipeline-title`,children:[(0,q.jsxs)(`div`,{className:`drawer__head`,children:[(0,q.jsx)(`h2`,{id:`new-pipeline-title`,style:{margin:0,fontSize:`var(--font-size-lg)`},children:`New pipeline`}),(0,q.jsx)(`span`,{style:{marginLeft:`auto`}}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:j,children:`Close`})]}),(0,q.jsxs)(`div`,{className:`drawer__body`,children:[b?(0,q.jsx)(`div`,{className:`gate`,style:{padding:`var(--spacing-4)`,marginBottom:`var(--spacing-5)`,borderColor:`var(--color-border-red)`,borderLeftColor:`var(--color-error)`,background:`var(--color-background-red)`,color:`var(--color-text-red)`},children:(0,q.jsx)(`p`,{className:`gate__question`,style:{color:`var(--color-text-primary)`,margin:0},children:b})}):null,(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-pipeline-directory`,children:`Directory`}),(0,q.jsx)(`input`,{id:`new-pipeline-directory`,className:`input`,list:`pipeline-directory-options`,value:a,onChange:e=>o(e.target.value),autoComplete:`off`,spellCheck:!1}),(0,q.jsx)(`datalist`,{id:`pipeline-directory-options`,children:i.map(e=>(0,q.jsx)(`option`,{value:e},e))}),_.directory?(0,q.jsx)(`p`,{className:`field-error`,children:_.directory}):(0,q.jsxs)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:[`Repo-relative folder for `,(0,q.jsxs)(`span`,{className:`mono`,children:[s.trim()||`id`,`.pipeline.yaml`]}),` and stage files.`]})]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-pipeline-id`,children:`Id`}),(0,q.jsx)(`input`,{id:`new-pipeline-id`,className:`input`,value:s,onChange:e=>c(e.target.value),autoComplete:`off`,spellCheck:!1}),_.id?(0,q.jsx)(`p`,{className:`field-error`,children:_.id}):null]}),(0,q.jsxs)(`div`,{className:`filters`,style:{marginTop:`var(--spacing-2)`},children:[(0,q.jsx)(`button`,{type:`button`,className:`tab`,"data-active":p===`linear`?`true`:void 0,onClick:()=>T(`linear`),children:`Linear`}),(0,q.jsx)(`button`,{type:`button`,className:`tab`,"data-active":p===`dependencies`?`true`:void 0,onClick:()=>T(`dependencies`),children:`Dependencies`})]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`span`,{className:`eyebrow`,children:`Stage ids`}),(0,q.jsxs)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,margin:`var(--spacing-1) 0 var(--spacing-3)`},children:[`Each id maps to `,(0,q.jsx)(`span`,{className:`mono`,children:`./<id>.yaml`}),` beside the pipeline file. Create stage files first.`]}),(0,q.jsxs)(`div`,{style:{display:`flex`,gap:`var(--spacing-2)`,marginBottom:`var(--spacing-3)`},children:[(0,q.jsx)(`input`,{className:`input`,value:d,onChange:e=>f(e.target.value),placeholder:`stage-id`,autoComplete:`off`,spellCheck:!1,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),E())}}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:E,children:`Add`})]}),l.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`No stages added yet.`}):(0,q.jsx)(`ul`,{style:{listStyle:`none`,margin:0,padding:0},children:l.map((e,t)=>(0,q.jsxs)(`li`,{style:{display:`flex`,alignItems:`center`,gap:`var(--spacing-2)`,padding:`var(--spacing-2) 0`,borderBottom:`1px solid var(--color-border)`},children:[(0,q.jsxs)(`span`,{className:`mono`,style:{flex:p===`dependencies`?void 0:1},children:[t+1,`. `,e]}),p===`dependencies`?(0,q.jsxs)(`label`,{style:{display:`flex`,alignItems:`center`,gap:`var(--spacing-2)`,flex:1,fontSize:`var(--font-size-sm)`},children:[(0,q.jsx)(`span`,{className:`muted`,children:`Needs`}),(0,q.jsxs)(`select`,{className:`input`,value:h[e]??``,onChange:t=>k(e,t.target.value),style:{flex:1,minWidth:0},children:[(0,q.jsx)(`option`,{value:``,children:`(none — root)`}),l.filter(t=>t!==e).map(e=>(0,q.jsx)(`option`,{value:e,children:e},e))]})]}):null,(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm btn--ghost`,disabled:t===0,onClick:()=>D(t,-1),children:`Up`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm btn--ghost`,disabled:t===l.length-1,onClick:()=>D(t,1),children:`Down`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm btn--ghost`,onClick:()=>O(t),children:`Remove`})]},`${e}-${t}`))}),_.stages?(0,q.jsx)(`p`,{className:`field-error`,children:_.stages}):null]}),(0,q.jsxs)(`div`,{className:`form-actions`,children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:S,onClick:()=>void A(),children:S?`Creating…`:`Create pipeline`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:j,children:`Cancel`})]})]})]})]}):null}function Mv(e,t){return e===`all`?{}:e===`none`?{gate_kinds:[]}:{gate_kinds:t}}var Nv=/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/,Pv=`__inherit__`,Fv=`__other__`,Iv=[`free_text`,`confirm`,`multi_question`,`artifact_backed`];function Lv(e){let t={},n=e.id.trim();return n?(n.length>64||!Nv.test(n))&&(t.id=`Id must be lowercase kebab-case.`):t.id=`Id is required.`,e.useDropdown&&e.modelSelect===`__other__`&&!e.model.trim()&&(t.model=`Model is required when Other is selected.`),e.system_prompt.trim()||(t.system_prompt=`System prompt is required.`),t}function Rv(e){return e.useDropdown?e.modelSelect===`__inherit__`?``:e.modelSelect===`__other__`?e.customModel.trim():e.modelSelect.trim():e.plainModel.trim()}function zv(e,t){let n=e===409?`Could not create Stage: this id already exists.`:`Could not create Stage. Try again.`,r=t?.trim();return r?`${n} ${r}`:n}var Bv=()=>({id:``,system_prompt:``,gateMode:`all`,gateKinds:[],modelSelect:Pv,customModel:``,plainModel:``});function Vv({isOpen:e,onClose:t,onCreated:n,pipelineDirectory:r}){let[i,a]=(0,v.useState)(Bv),[o,s]=(0,v.useState)(null),[c,l]=(0,v.useState)(!1),[u,d]=(0,v.useState)({}),[f,p]=(0,v.useState)(null),[m,h]=(0,v.useState)(!1);(0,v.useEffect)(()=>{if(!e)return;let t=!1;return(async()=>{try{let{models:e}=await Nn();if(t)return;e.length>0?(s(e),l(!0)):(s([]),l(!1))}catch{if(t)return;s(null),l(!1)}})(),()=>{t=!0}},[e]),(0,v.useEffect)(()=>{if(!e)return;function n(e){e.key===`Escape`&&t()}return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e,t]);function g(){return Rv({useDropdown:c,modelSelect:i.modelSelect,customModel:i.customModel,plainModel:i.plainModel})}function _(e){a(t=>({...t,gateKinds:t.gateKinds.includes(e)?t.gateKinds.filter(t=>t!==e):[...t.gateKinds,e]}))}async function y(){let e=g(),t={id:i.id.trim(),system_prompt:i.system_prompt,model:e},o=Lv({...t,useDropdown:c,modelSelect:i.modelSelect});if(d(o),p(null),Object.keys(o).length>0)return;h(!0);let s=await Fn({pipeline_directory:r,filename:`${i.id.trim()}.yaml`,id:t.id,system_prompt:t.system_prompt,...e.length>0?{model:e}:{},...Mv(i.gateMode,i.gateKinds)});if(h(!1),s.ok){a(Bv()),d({}),p(null),n(s.stage);return}p(zv(s.status,s.error))}function b(){a(Bv()),d({}),p(null),t()}return e?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,className:`drawer-scrim`,"aria-label":`Close panel`,onClick:b}),(0,q.jsxs)(`aside`,{className:`drawer drawer--right`,"aria-labelledby":`new-stage-title`,children:[(0,q.jsxs)(`div`,{className:`drawer__head`,children:[(0,q.jsx)(`h2`,{id:`new-stage-title`,style:{margin:0,fontSize:`var(--font-size-lg)`},children:`New stage`}),(0,q.jsx)(`span`,{style:{marginLeft:`auto`}}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:b,children:`Close`})]}),(0,q.jsxs)(`div`,{className:`drawer__body`,children:[f?(0,q.jsx)(`div`,{className:`gate`,style:{padding:`var(--spacing-4)`,marginBottom:`var(--spacing-5)`,borderColor:`var(--color-border-red)`,borderLeftColor:`var(--color-error)`,background:`var(--color-background-red)`,color:`var(--color-text-red)`},children:(0,q.jsx)(`p`,{className:`gate__question`,style:{color:`var(--color-text-primary)`,margin:0},children:f})}):null,(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-stage-id`,children:`Id`}),(0,q.jsx)(`input`,{id:`new-stage-id`,className:`input`,value:i.id,onChange:e=>a(t=>({...t,id:e.target.value})),autoComplete:`off`,spellCheck:!1}),u.id?(0,q.jsx)(`p`,{className:`field-error`,children:u.id}):(0,q.jsxs)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:[`Writes `,(0,q.jsxs)(`span`,{className:`mono`,children:[r,`/<id>.yaml`]}),`.`]})]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-stage-model`,children:`Model`}),c&&o?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`select`,{id:`new-stage-model`,className:`select`,value:i.modelSelect,onChange:e=>a(t=>({...t,modelSelect:e.target.value})),children:[(0,q.jsx)(`option`,{value:Pv,children:`Inherit default`}),o.map(e=>(0,q.jsx)(`option`,{value:e,children:e},e)),(0,q.jsx)(`option`,{value:Fv,children:`Other...`})]}),i.modelSelect===`__other__`?(0,q.jsx)(`input`,{className:`input`,style:{marginTop:`var(--spacing-2)`},value:i.customModel,onChange:e=>a(t=>({...t,customModel:e.target.value})),placeholder:`Model id`,autoComplete:`off`,spellCheck:!1}):null]}):(0,q.jsx)(`input`,{id:`new-stage-model`,className:`input`,value:i.plainModel,onChange:e=>a(t=>({...t,plainModel:e.target.value})),autoComplete:`off`,spellCheck:!1}),u.model?(0,q.jsx)(`p`,{className:`field-error`,children:u.model}):(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:`Optional. Inherits pipeline then global default when omitted.`})]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-stage-prompt`,children:`System prompt`}),(0,q.jsx)(`textarea`,{id:`new-stage-prompt`,className:`textarea`,rows:6,value:i.system_prompt,onChange:e=>a(t=>({...t,system_prompt:e.target.value}))}),u.system_prompt?(0,q.jsx)(`p`,{className:`field-error`,children:u.system_prompt}):null]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`span`,{className:`eyebrow`,children:`HITL`}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,margin:`var(--spacing-1) 0 var(--spacing-3)`},children:`All kinds keeps every ask kind available. No HITL unregisters ask_operator. Allowlist restricts kinds.`}),(0,q.jsxs)(`div`,{className:`pick`,children:[(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`radio`,name:`new-stage-hitl`,checked:i.gateMode===`all`,onChange:()=>a(e=>({...e,gateMode:`all`}))}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`All kinds`}),(0,q.jsx)(`span`,{className:`muted`,children:` Compatible default. Every ask kind is available.`})]})]}),(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`radio`,name:`new-stage-hitl`,checked:i.gateMode===`none`,onChange:()=>a(e=>({...e,gateMode:`none`}))}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`No HITL`}),(0,q.jsx)(`span`,{className:`muted`,children:` Writes gate_kinds: []. The stage cannot ask the operator.`})]})]}),(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`radio`,name:`new-stage-hitl`,checked:i.gateMode===`allowlist`,onChange:()=>a(e=>({...e,gateMode:`allowlist`}))}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Allowlist`}),(0,q.jsx)(`span`,{className:`muted`,children:` Only the kinds you select.`})]})]})]}),i.gateMode===`allowlist`?(0,q.jsx)(`div`,{className:`pick`,style:{marginTop:`var(--spacing-3)`},children:Iv.map(e=>(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`checkbox`,checked:i.gateKinds.includes(e),onChange:()=>_(e)}),(0,q.jsx)(`span`,{children:(0,q.jsx)(`strong`,{className:`mono`,children:e})})]},e))}):null]}),(0,q.jsxs)(`div`,{className:`form-actions`,children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:m,onClick:()=>void y(),children:m?`Creating…`:`Create stage`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:b,children:`Cancel`})]})]})]})]}):null}function Hv(e){window.location.hash=e.startsWith(`#`)?e:`#${e}`}function Uv(e){return`/runs/${encodeURIComponent(e)}`}function Wv(e,t){return`/runs/${encodeURIComponent(e)}/stages/${encodeURIComponent(t)}`}function Gv(e,t){return`/runs/${encodeURIComponent(e)}/artifacts?path=${encodeURIComponent(t)}`}function Kv(e,t){return`/runs/${encodeURIComponent(e)}/stages/${encodeURIComponent(t)}/envelope`}function qv(e){return`/pipelines/${encodeURIComponent(e)}`}function Jv(e){return`/tasks/${encodeURIComponent(e)}`}function Yv(e){return`/triggers/${encodeURIComponent(e)}`}function Xv(e){return`/skills/${encodeURIComponent(e)}`}function Zv(e,t){return`/extensions/packages/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}function Qv(e){return`/extensions/files/${encodeURIComponent(e)}`}function $v(e){let t=new URLSearchParams;e?.pipeline&&t.set(`pipeline`,e.pipeline),e?.task&&t.set(`task`,e.task);let n=t.toString();return n?`/workshop?${n}`:`/workshop`}function ey(e){let t=new URLSearchParams;e?.pipeline&&t.set(`pipeline`,e.pipeline),e?.task&&t.set(`task`,e.task);let n=t.toString();return n?`/new?${n}`:`/new`}function ty(e){let t=e.replace(/^#\/?/,``),n=t.indexOf(`?`);return n<0?{path:t,params:new URLSearchParams}:{path:t.slice(0,n),params:new URLSearchParams(t.slice(n+1))}}function ny(e){let t=e.indexOf(`/`),n=t<0?e:e.slice(0,t);return n?decodeURIComponent(n):``}function ry(e=window.location.hash){let{path:t,params:n}=ty(e);if(!t||t===`today`)return{name:`today`};if(t===`runs`)return{name:`runs`};if(t===`new`){let e=n.get(`pipeline`)??void 0,t=n.get(`task`)??void 0;return{name:`new`,...e?{pipelineId:e}:{},...t?{taskPath:t}:{}}}if(t===`pipelines`)return{name:`pipelines`};if(t.startsWith(`pipelines/`)){let e=ny(t.slice(10));if(e)return{name:`pipeline`,pipelineId:e}}if(t===`tasks`)return{name:`tasks`};if(t.startsWith(`tasks/`)){let e=ny(t.slice(6));if(e)return{name:`task`,taskId:e}}if(t===`triggers`)return{name:`triggers`};if(t.startsWith(`triggers/`)){let e=ny(t.slice(9));if(e)return{name:`trigger`,triggerId:e}}if(t===`skills`)return{name:`skills`};if(t.startsWith(`skills/`)){let e=ny(t.slice(7));if(e)return{name:`skill`,skillName:e}}if(t===`extensions`)return{name:`extensions`};if(t.startsWith(`extensions/packages/`)){let e=t.slice(20),n=e.indexOf(`/`);if(n>0){let t=decodeURIComponent(e.slice(0,n)),r=decodeURIComponent(e.slice(n+1));if((t===`user`||t===`project`)&&r)return{name:`extensionPackage`,scope:t,source:r}}}if(t.startsWith(`extensions/files/`)){let e=decodeURIComponent(t.slice(17));if(e)return{name:`extensionFile`,path:e}}if(t===`settings`)return{name:`settings`};if(t===`connect`)return{name:`connect`};if(t===`workshop`||t===`workshop-lab`){let e=n.get(`pipeline`)??void 0,t=n.get(`task`)??void 0;return{name:`workshop`,...e?{pipelinePath:e}:{},...t?{taskPath:t}:{}}}if(t.startsWith(`runs/`)){let e=t.slice(5).split(`/`),r=decodeURIComponent(e[0]??``);if(!r)return{name:`today`};if(e[1]===`stages`&&e[3]===`envelope`&&e[2]&&e.length===4)return{name:`detail`,runId:r,view:{kind:`envelope`,stageId:decodeURIComponent(e[2])}};if(e[1]===`stages`&&e[2]&&e.length===3)return{name:`detail`,runId:r,view:{kind:`stream`,stageId:decodeURIComponent(e[2])}};if(e[1]===`artifacts`&&e.length===2){let e=n.get(`path`);if(e)return{name:`detail`,runId:r,view:{kind:`artifact`,path:e}}}return e.length,{name:`detail`,runId:r,view:{kind:`stream`}}}return{name:`today`}}var iy={center:{kGNEyG:`x6s0dn4`,$$css:!0},end:{kGNEyG:`xuk3077`,$$css:!0},start:{kGNEyG:`x1cy8zhl`,$$css:!0},stretch:{kGNEyG:`x1qjc9v5`,$$css:!0}},ay={start:{kjj79g:`x1nhvcw1`,$$css:!0},center:{kjj79g:`xl56j7k`,$$css:!0},end:{kjj79g:`x13a6bvl`,$$css:!0},between:{kjj79g:`x1qughib`,$$css:!0},around:{kjj79g:`x1l1ennw`,$$css:!0},evenly:{kjj79g:`xaw8158`,$$css:!0}},oy={horizontal:{kXwgrk:`x1q0g3np`,$$css:!0},vertical:{kXwgrk:`xdt5ytf`,$$css:!0}},sy={nowrap:{kwnvtZ:`xozqiw3`,$$css:!0},wrap:{kwnvtZ:`x1a02dak`,$$css:!0},"wrap-reverse":{kwnvtZ:`x8hhl5t`,$$css:!0}},cy={stack:{k1xSpc:`x78zum5`,$$css:!0}},ly={0:{k1C7PZ:`x1o57wo1`,khm7nJ:`x6yxi7o`,$$css:!0},1:{k1C7PZ:`x1lfs0n9`,khm7nJ:`x1ngg2t4`,$$css:!0},2:{k1C7PZ:`xak3so`,khm7nJ:`x1x7z4sm`,$$css:!0},3:{k1C7PZ:`xewh9hi`,khm7nJ:`x4olc9o`,$$css:!0},4:{k1C7PZ:`xty4p9g`,khm7nJ:`xtx9w7w`,$$css:!0},5:{k1C7PZ:`x1eqhezk`,khm7nJ:`x1iu6piu`,$$css:!0},6:{k1C7PZ:`x3qlgwd`,khm7nJ:`xczp1bk`,$$css:!0},8:{k1C7PZ:`xicv188`,khm7nJ:`xgx0vcf`,$$css:!0},10:{k1C7PZ:`x1p37tyl`,khm7nJ:`x1xpicb7`,$$css:!0},"0.5":{k1C7PZ:`x1kihgfc`,khm7nJ:`x1tw44j4`,$$css:!0},"1.5":{k1C7PZ:`x1thn6ci`,khm7nJ:`xhq53yo`,$$css:!0}};function uy({crossAlign:e,direction:t,gap:n,mainAlign:r,wrap:i}){return[cy.stack,oy[t],n!=null&&ly[n],e!=null&&iy[e],r!=null&&ay[r],i!=null&&sy[i]]}var dy={0:{kZCmMZ:`x18gyask`,kwRFfy:`x1s0aq8i`,$$css:!0},1:{kZCmMZ:`x1vsv5vr`,kwRFfy:`x1nryj5t`,$$css:!0},2:{kZCmMZ:`x12gdq22`,kwRFfy:`x1djylfy`,$$css:!0},3:{kZCmMZ:`x126nfab`,kwRFfy:`x1t818jl`,$$css:!0},4:{kZCmMZ:`x1rey3nv`,kwRFfy:`xnjyzlh`,$$css:!0},5:{kZCmMZ:`x1blguxw`,kwRFfy:`xdbrk9v`,$$css:!0},6:{kZCmMZ:`x31w388`,kwRFfy:`x1we12cn`,$$css:!0},8:{kZCmMZ:`x1j3hnjz`,kwRFfy:`x1q91b2g`,$$css:!0},10:{kZCmMZ:`xqp078j`,kwRFfy:`x160ivqr`,$$css:!0},"0.5":{kZCmMZ:`x138rykx`,kwRFfy:`x1le3yxw`,$$css:!0},"1.5":{kZCmMZ:`xfti1ec`,kwRFfy:`x17hk9do`,$$css:!0}},fy={0:{kLKAdn:`x1ydh6w3`,kGO01o:`x1l20ajd`,$$css:!0},1:{kLKAdn:`xfsso4q`,kGO01o:`xy143xn`,$$css:!0},2:{kLKAdn:`x1xye8es`,kGO01o:`x1wesfrj`,$$css:!0},3:{kLKAdn:`x1vlblms`,kGO01o:`xvmdzux`,$$css:!0},4:{kLKAdn:`x1oa1p4a`,kGO01o:`x1awphl8`,$$css:!0},5:{kLKAdn:`xx7rijo`,kGO01o:`x1hk98q`,$$css:!0},6:{kLKAdn:`x1adxfkp`,kGO01o:`xjpqqx5`,$$css:!0},8:{kLKAdn:`xoxd1wu`,kGO01o:`x2oz4g1`,$$css:!0},10:{kLKAdn:`xk6660b`,kGO01o:`x2izi54`,$$css:!0},"0.5":{kLKAdn:`xbx876j`,kGO01o:`xij103a`,$$css:!0},"1.5":{kLKAdn:`x1kwdpsa`,kGO01o:`x1opdxmq`,$$css:!0}},py={scrollable:{kVQacm:`xysyzu8`,$$css:!0}};function my({direction:e=`vertical`,hAlign:t,vAlign:n,justify:r,align:i,gap:a,padding:o,paddingInline:s,paddingBlock:c,isScrollable:l,width:u,height:d,maxWidth:f,minHeight:p,wrap:m,as:h=`div`,xstyle:g,className:_,style:y,children:b,ref:x,...S}){let C=t??(e===`horizontal`?r:i),T=n??(e===`horizontal`?i:r),E=e===`horizontal`?C:T,D=e===`horizontal`?T:C,O=s??o,k=c??o,A=w(...uy({direction:e,crossAlign:D,mainAlign:E,gap:a,wrap:m}),O!=null&&dy[O],k!=null&&fy[k],l&&py.scrollable,g),j={...u!=null&&{width:typeof u==`number`?`${u}px`:u},...d!=null&&{height:typeof d==`number`?`${d}px`:d},...f!=null&&{maxWidth:typeof f==`number`?`${f}px`:f},...p!=null&&{minHeight:typeof p==`number`?`${p}px`:p}};return(0,v.createElement)(h,{ref:x,...J(Y(`stack`,{direction:e,gap:a,wrap:m}),A,_,{...y,...j}),...S},b)}my.displayName=`Stack`;var hy={reset:{kAzted:`x2lwn1j`,k7Eaqz:`xeuugli`,$$css:!0}},gy={center:{kSGwAc:`xamitd3`,$$css:!0},end:{kSGwAc:`xpvyfi4`,$$css:!0},start:{kSGwAc:`xqcrz7y`,$$css:!0},stretch:{kSGwAc:`xkh2ocl`,$$css:!0}},_y={fill:{kzQI83:`x1iyjqo2`,$$css:!0},static:{kzQI83:`x1c4vz4f`,kmuXW:`x2lah0s`,$$css:!0}};function vy({crossAlignSelf:e,size:t}={}){return[hy.reset,_y[t??`static`],e!=null&&gy[e]]}var yy={scrollable:{kVQacm:`xysyzu8`,$$css:!0}};function by({crossAlignSelf:e,size:t,isScrollable:n,as:r=`div`,xstyle:i,className:a,style:o,children:s,ref:c,...l}){let u=w(...vy({crossAlignSelf:e,size:t}),n&&yy.scrollable,i);return(0,v.createElement)(r,{ref:c,...J(Y(`stack-item`,{size:t}),u,a,o),...l},s)}by.displayName=`StackItem`;function xy({status:e}){let t=fi(e),n=t&&t!==`running`?`status status--${t}`:`status`,r=t?`dot dot--${t}`:`dot`;return(0,q.jsxs)(`span`,{className:n,children:[(0,q.jsx)(`span`,{className:r}),` `,pi(e)]})}var Sy=null,Cy=null;function wy(e,t=4e3){Sy||(Sy=document.createElement(`div`),Sy.className=`toast`,Sy.setAttribute(`role`,`status`),document.body.appendChild(Sy)),Sy.textContent=e,Sy.setAttribute(`data-show`,`true`),Cy&&clearTimeout(Cy),Cy=setTimeout(()=>{Sy?.setAttribute(`data-show`,`false`)},t)}function Ty(e){return e.map(e=>{let t=e.gate_kinds;return{id:e.id,label:e.id,status:ni(t)?`waiting`:`pending`,meta:Ey(t)}})}function Ey(e){return!Array.isArray(e)||e.length===0?`none`:e.join(` · `)}function Dy(e){return e.inline?`inline`:e.uses_path?e.uses_path:`—`}function Oy(e){let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/`);return n>=0?t.slice(0,n):`.`}function ky(e,t){let n=Oy(e.path);return t.filter(e=>n===`.`?!e.path.includes(`/`):e.path.startsWith(`${n}/`))[0]?.path??t[0]?.path}function Ay({stages:e}){return(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`span`,{className:`mini`,"aria-hidden":`true`,children:e.map((e,t)=>(0,q.jsxs)(v.Fragment,{children:[t>0?(0,q.jsx)(`i`,{className:`mini__w`}):null,(0,q.jsx)(`i`,{className:`mini__n`,"data-s":ni(e.gate_kinds)?`waiting`:void 0,children:ni(e.gate_kinds)?`?`:String(t+1)})]},e.id))}),(0,q.jsx)(`span`,{className:`mini__label`,style:{display:`block`},children:e.map(e=>e.id).join(` · `)})]})}function jy({pipelineId:e,onNew:t}){let{snapshot:n,error:r,loading:i}=Mr(),[a,o]=(0,v.useState)([]),[s,c]=(0,v.useState)([]),[l,u]=(0,v.useState)(null),[d,f]=(0,v.useState)(!0),[p,m]=(0,v.useState)(!1),[h,g]=(0,v.useState)(!1),_=(0,v.useCallback)(async()=>{try{let[e,t]=await Promise.all([On(),Dn()]);o(e.pipelines),c(t.tasks),u(null)}catch(e){u(e instanceof Error?e.message:String(e))}finally{f(!1)}},[]);(0,v.useEffect)(()=>{_()},[_]);let y=d||i,b=l??r,x=e?a.find(t=>t.id===e)??null:null,S=x?Xr(n,x):[];async function C(e){g(!1);try{let e=await On();o(e.pipelines),u(null)}catch(e){u(e instanceof Error?e.message:String(e))}wy(`Pipeline created · ${e.id}`),t(qv(e.id))}return e?(0,q.jsx)(My,{pipelineId:e,pipeline:x,tasks:s,runs:S,loading:y,error:b,onNew:t,onStageCreated:()=>void _(),stagePanelOpen:p,onOpenStagePanel:()=>m(!0),onCloseStagePanel:()=>m(!1)}):(0,q.jsxs)(`div`,{className:`main__inner main__inner--wide`,children:[(0,q.jsxs)(`div`,{className:`page-head`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Pipelines`}),(0,q.jsx)(`p`,{children:`Manifest-declared pipeline files and their embedded stages. Each row shows its chain and which stages will stop for a human.`})]}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,onClick:()=>g(!0),children:`New pipeline`})]}),b?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:b}):null,y?(0,q.jsx)(`p`,{className:`muted`,children:`Loading pipelines…`}):null,!y&&a.length===0?(0,q.jsxs)(`div`,{className:`empty-hint`,children:[(0,q.jsxs)(`p`,{style:{margin:`0 0 var(--spacing-3)`},children:[`No pipelines in the manifest yet. Add a `,(0,q.jsx)(`span`,{className:`mono`,children:`stageflow.yaml`}),` catalog entry or run`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`sf init`}),`.`]}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,onClick:()=>g(!0),children:`New pipeline`})]}):null,!y&&a.length>0?(0,q.jsx)(q.Fragment,{children:a.map(e=>{let t=Xr(n,e),r=ri(e.stages);return(0,q.jsxs)(`a`,{className:`rrow`,href:`#${qv(e.id)}`,children:[(0,q.jsxs)(`span`,{className:`rrow__id`,children:[(0,q.jsx)(`span`,{className:`rrow__task`,children:e.id}),(0,q.jsx)(`span`,{className:`rrow__pipe`,children:e.path})]}),(0,q.jsxs)(`span`,{className:`rrow__right`,children:[r===1?`1 gate`:`${r} gates`,(0,q.jsx)(`br`,{}),(0,q.jsxs)(`span`,{className:`mono`,style:{fontSize:`var(--font-size-xs)`},children:[t.length,` `,t.length===1?`run`:`runs`]})]}),(0,q.jsx)(`span`,{className:`rrow__track`,children:(0,q.jsx)(Ay,{stages:e.stages})})]},`${e.path}:${e.id}`)})}):null,(0,q.jsx)(jv,{isOpen:h,onClose:()=>g(!1),onCreated:e=>void C(e),pipelines:a})]})}function My({pipelineId:e,pipeline:t,tasks:n,runs:r,loading:i,error:a,onNew:o,onStageCreated:s,stagePanelOpen:c,onOpenStagePanel:l,onCloseStagePanel:u}){let d=(0,v.useMemo)(()=>t?Ty(t.stages):[],[t]),f=t?ri(t.stages):0,p=t?`${t.path} · ${t.stages.length} stages · ${f===1?`1 gate`:`${f} gates`} · ${r.length} ${r.length===1?`run`:`runs`}`:e,m=t?ky(t,n):void 0;return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`p`,{className:`crumbs`,children:[(0,q.jsx)(`a`,{href:`#/pipelines`,children:`Pipelines`}),` / `,e]}),(0,q.jsxs)(`div`,{className:`page-head`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:e}),(0,q.jsx)(`p`,{className:`mono`,children:p})]}),t?(0,q.jsxs)(`div`,{className:`page-head__actions`,children:[(0,q.jsx)(`a`,{className:`btn`,href:`#${$v({pipeline:t.path})}`,children:`Open in Workshop`}),(0,q.jsx)(`button`,{className:`btn btn--primary`,onClick:()=>o(ey({pipeline:t.path,...m?{task:m}:{}})),children:`Start a run with this`})]}):null]}),a?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:a}):null,i?(0,q.jsx)(`p`,{className:`muted`,children:`Loading…`}):null,!i&&!t?(0,q.jsxs)(`p`,{className:`muted`,children:[e,` is not in the current manifest catalog.`]}):null,t?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Z_,{stages:d,mode:`definition`}),(0,q.jsxs)(`div`,{className:`page-head`,style:{marginTop:`var(--spacing-6)`},children:[(0,q.jsx)(`h3`,{style:{margin:0},children:`Stages`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:l,children:`Add stage file`})]}),(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Stage`}),(0,q.jsx)(`th`,{children:`Gate`}),(0,q.jsx)(`th`,{children:`Source`})]})}),(0,q.jsx)(`tbody`,{children:t.stages.map(e=>(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`td`,{className:`mono`,children:e.id}),(0,q.jsx)(`td`,{className:`muted`,children:Ey(e.gate_kinds)}),(0,q.jsx)(`td`,{className:`mono muted`,children:Dy(e)})]},e.id))})]}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-3)`},children:f===1?`Only one stage stops for a human. That is worth knowing before you start a run, not after.`:f===0?`No stage in this pipeline is declared to stop for a human.`:`${f} stages stop for a human.`}),(0,q.jsx)(`h3`,{style:{marginTop:`var(--spacing-6)`},children:`Recent runs`}),r.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`No runs of this pipeline yet.`}):(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Task`}),(0,q.jsx)(`th`,{children:`Status`}),(0,q.jsx)(`th`,{children:`When`})]})}),(0,q.jsx)(`tbody`,{children:r.map(e=>(0,q.jsxs)(`tr`,{children:[(0,q.jsxs)(`td`,{children:[(0,q.jsx)(`a`,{href:`#${Uv(e.run_id)}`,children:Rr(e)}),e.task_path?(0,q.jsx)(`span`,{className:`muted mono`,style:{display:`block`,fontSize:`var(--font-size-xs)`},children:Pr(e.task_path,e.project_root)}):null]}),(0,q.jsx)(`td`,{children:(0,q.jsx)(xy,{status:di(e)})}),(0,q.jsx)(`td`,{className:`muted`,children:ii(e.created_at)})]},e.run_id))})]})]}):null,(0,q.jsx)(Vv,{isOpen:c,onClose:u,pipelineDirectory:t?Oy(t.path):`pipelines`,onCreated:e=>{u(),s()}})]})}function Ny({taskId:e,onNew:t}){let{snapshot:n,error:r,loading:i}=Mr(),[a,o]=(0,v.useState)([]),[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(!0),d=(0,v.useCallback)(async()=>{try{let e=await Dn();o(e.tasks),c(null)}catch(e){c(e instanceof Error?e.message:String(e))}finally{u(!1)}},[]);(0,v.useEffect)(()=>{d()},[d]);let f=l||i,p=s??r,m=e?a.find(t=>t.id===e)??null:null,h=m?Yr(n,m.id):[];return e?(0,q.jsx)(Py,{taskId:e,task:m,runs:h,loading:f,error:p,onNew:t}):(0,q.jsxs)(`div`,{className:`main__inner main__inner--wide`,children:[(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Tasks`}),(0,q.jsx)(`p`,{children:`A task is a brief plus the pipeline it should run through. Tasks are reusable; runs are not.`})]})}),p?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:p}):null,f?(0,q.jsx)(`p`,{className:`muted`,children:`Loading tasks…`}):null,!f&&a.length===0?(0,q.jsx)(`p`,{className:`muted`,children:`No tasks yet. Add a YAML file under tasks/ in this project.`}):null,!f&&a.length>0?(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Task`}),(0,q.jsx)(`th`,{children:`Pipeline`}),(0,q.jsx)(`th`,{children:`Runs`}),(0,q.jsx)(`th`,{children:`Last result`}),(0,q.jsx)(`th`,{})]})}),(0,q.jsx)(`tbody`,{children:a.map(e=>{let r=Yr(n,e.id),i=r[0],a=i?di(i):void 0,o=i?.pipeline_id;return(0,q.jsxs)(`tr`,{children:[(0,q.jsxs)(`td`,{children:[(0,q.jsx)(`a`,{href:`#${Jv(e.id)}`,children:e.id}),(0,q.jsx)(`div`,{className:`muted`,style:{fontSize:`var(--font-size-xs)`},children:e.goal})]}),(0,q.jsx)(`td`,{className:`mono`,children:o??`—`}),(0,q.jsx)(`td`,{className:`mono`,children:r.length}),(0,q.jsx)(`td`,{children:a?(0,q.jsx)(xy,{status:a}):(0,q.jsx)(`span`,{className:`muted`,children:`no runs`})}),(0,q.jsx)(`td`,{style:{textAlign:`right`},children:i?(0,q.jsx)(`a`,{className:`btn btn--sm`,href:`#${Uv(i.run_id)}`,children:`Open run`}):(0,q.jsx)(`button`,{className:`btn btn--sm`,onClick:()=>t(ey({task:e.path})),children:`Run it`})})]},e.id)})})]}):null]})}function Py({taskId:e,task:t,runs:n,loading:r,error:i,onNew:a}){let o=n[0],s=o?.pipeline_path&&o.project_root?Pr(o.pipeline_path,o.project_root):o?.pipeline_path&&!o.pipeline_path.startsWith(`/`)?o.pipeline_path:void 0,c=Wr({runs:n,health:null}),l=c.waiting.length+c.inFlight.length,u=t?`${t.path} · ${n.length} ${n.length===1?`run`:`runs`}${l>0?` · ${l} in flight`:``}`:e;return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`p`,{className:`crumbs`,children:[(0,q.jsx)(`a`,{href:`#/tasks`,children:`Tasks`}),` / `,e]}),(0,q.jsxs)(`div`,{className:`page-head`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:e}),(0,q.jsx)(`p`,{className:`mono`,children:u})]}),t?(0,q.jsxs)(`div`,{className:`page-head__actions`,children:[s?(0,q.jsx)(`a`,{className:`btn`,href:`#${$v({pipeline:s})}`,title:`Opens the bound pipeline; task stays unattached until you attach it`,children:`Open in Workshop`}):(0,q.jsx)(`button`,{type:`button`,className:`btn`,disabled:!0,title:`Run this task once so Workshop can resolve its pipeline path`,children:`Open in Workshop`}),(0,q.jsx)(`button`,{className:`btn btn--primary`,onClick:()=>a(ey({task:t.path,pipeline:o?.pipeline_id})),children:`Run it again`})]}):null]}),i?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:i}):null,r?(0,q.jsx)(`p`,{className:`muted`,children:`Loading…`}):null,!r&&!t?(0,q.jsxs)(`p`,{className:`muted`,children:[e,` is not in this project's tasks/ catalog.`]}):null,t?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h3`,{children:`Brief`}),(0,q.jsx)(`p`,{children:t.goal}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Pipeline`}),o?(0,q.jsx)(`a`,{href:`#${qv(o.pipeline_id)}`,style:{fontWeight:500},children:o.pipeline_id}):(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`No runs yet — pick a pipeline when you start one.`}),(0,q.jsx)(`h3`,{style:{marginTop:`var(--spacing-6)`},children:`Run history`}),n.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`No runs of this task yet.`}):(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Run`}),(0,q.jsx)(`th`,{children:`Status`}),(0,q.jsx)(`th`,{children:`Pipeline`}),(0,q.jsx)(`th`,{children:`When`})]})}),(0,q.jsx)(`tbody`,{children:n.map(e=>(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`td`,{children:(0,q.jsx)(`a`,{href:`#${Uv(e.run_id)}`,children:e.run_id})}),(0,q.jsx)(`td`,{children:(0,q.jsx)(xy,{status:di(e)})}),(0,q.jsx)(`td`,{children:(0,q.jsx)(`a`,{href:`#${qv(e.pipeline_id)}`,children:e.pipeline_id})}),(0,q.jsx)(`td`,{className:`muted`,children:ii(e.created_at)})]},e.run_id))})]})]}):null]})}var Fy=/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;function Iy(e){let t={};e.directory.trim()||(t.directory=`Directory is required.`);let n=e.id.trim();return n?(n.length>64||!Fy.test(n))&&(t.id=`Id must be lowercase kebab-case.`):t.id=`Id is required.`,e.pipeline||(t.pipeline=`Select a pipeline.`),e.taskMode===`catalog`&&!e.task&&(t.task=`Select a task.`),e.kind===`schedule`&&!e.cron.trim()&&(t.cron=`Cron expression is required.`),e.kind===`event`&&!e.source.trim()&&(t.source=`Event source is required.`),t}function Ly(e,t){let n=t?.trim(),r;return r=e===409?`Could not create trigger: this id already exists.`:e===422?`Could not create trigger: invalid reference or schedule.`:e===400?`Could not create trigger: invalid input.`:`Could not create trigger. Try again.`,n?`${r} ${n}`:r}function Ry(e){let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/`);return n>=0?t.slice(0,n):`.`}var zy=()=>({directory:``,directoryTouched:!1,id:``,pipeline:``,task:``,taskMode:`catalog`,kind:`manual`,cron:``,timezone:``,source:``,enabled:!0});function By({isOpen:e,onClose:t,onCreated:n}){let[r,i]=(0,v.useState)(zy),[a,o]=(0,v.useState)(null),[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)({}),[d,f]=(0,v.useState)(null),[p,m]=(0,v.useState)(!1);(0,v.useEffect)(()=>{if(!e)return;i(zy()),u({}),f(null),o(null),c(null);let t=!1;return(async()=>{try{let[e,n]=await Promise.all([On(),Dn()]);if(t)return;o(e.pipelines),c(n.tasks)}catch{if(t)return;o([]),c([])}})(),()=>{t=!0}},[e]),(0,v.useEffect)(()=>{if(!e)return;function t(e){e.key===`Escape`&&_()}return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e]);function h(e){i(t=>{let n={...t,pipeline:e};if(!t.directoryTouched&&a){let t=a.find(t=>t.id===e);t&&(n.directory=Ry(t.path))}return n})}async function g(){let e={directory:r.directory.trim(),id:r.id.trim(),pipeline:r.pipeline,task:r.task,taskMode:r.taskMode,kind:r.kind,cron:r.cron.trim(),source:r.source.trim()},t=Iy(e);if(u(t),f(null),Object.keys(t).length>0)return;m(!0);let i=await Mn({directory:e.directory,id:e.id,pipeline:e.pipeline,...e.taskMode===`catalog`?{task:e.task}:{},kind:e.kind,...e.kind===`schedule`?{schedule:{cron:e.cron,...r.timezone.trim()?{timezone:r.timezone.trim()}:{}}}:{},...e.kind===`event`?{event:{source:e.source}}:{},enabled:r.enabled});if(m(!1),i.ok){n(i.trigger);return}f(Ly(i.status,i.error))}function _(){i(zy()),u({}),f(null),t()}if(!e)return null;let y=a===null,b=s===null;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,className:`drawer-scrim`,"aria-label":`Close panel`,onClick:_}),(0,q.jsxs)(`aside`,{className:`drawer drawer--right`,"aria-labelledby":`new-trigger-title`,children:[(0,q.jsxs)(`div`,{className:`drawer__head`,children:[(0,q.jsx)(`h2`,{id:`new-trigger-title`,style:{margin:0,fontSize:`var(--font-size-lg)`},children:`New trigger`}),(0,q.jsx)(`span`,{style:{marginLeft:`auto`}}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:_,children:`Close`})]}),(0,q.jsxs)(`div`,{className:`drawer__body`,children:[d?(0,q.jsx)(`div`,{className:`gate`,style:{padding:`var(--spacing-4)`,marginBottom:`var(--spacing-5)`,borderColor:`var(--color-border-red)`,borderLeftColor:`var(--color-error)`,background:`var(--color-background-red)`,color:`var(--color-text-red)`},children:(0,q.jsx)(`p`,{className:`gate__question`,style:{color:`var(--color-text-primary)`,margin:0},children:d})}):null,(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-trigger-pipeline`,children:`Pipeline`}),(0,q.jsxs)(`select`,{id:`new-trigger-pipeline`,className:`select`,value:r.pipeline,disabled:y,onChange:e=>h(e.target.value),children:[(0,q.jsx)(`option`,{value:``,children:y?`Loading pipelines…`:`Select a pipeline`}),(a??[]).map(e=>(0,q.jsx)(`option`,{value:e.id,children:e.id},e.id))]}),l.pipeline?(0,q.jsx)(`p`,{className:`field-error`,children:l.pipeline}):!y&&a?.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:`No pipelines in the manifest yet.`}):null]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`span`,{className:`eyebrow`,children:`Task`}),(0,q.jsxs)(`div`,{className:`pick`,style:{marginTop:`var(--spacing-2)`},children:[(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`radio`,name:`new-trigger-task-mode`,checked:r.taskMode===`catalog`,onChange:()=>i(e=>({...e,taskMode:`catalog`}))}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Pick from catalog`}),(0,q.jsx)(`span`,{className:`muted`,children:` Runs the same catalog task on every fire.`})]})]}),(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`radio`,name:`new-trigger-task-mode`,checked:r.taskMode===`dynamic`,onChange:()=>i(e=>({...e,taskMode:`dynamic`}))}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Dynamic — supplied when fired`}),(0,q.jsx)(`span`,{className:`muted`,children:` No fixed task; the caller must supply one.`})]})]})]}),r.taskMode===`catalog`?(0,q.jsxs)(`div`,{style:{marginTop:`var(--spacing-3)`},children:[(0,q.jsxs)(`select`,{id:`new-trigger-task`,className:`select`,value:r.task,disabled:b,onChange:e=>i(t=>({...t,task:e.target.value})),children:[(0,q.jsx)(`option`,{value:``,children:b?`Loading tasks…`:`Select a task`}),(s??[]).map(e=>(0,q.jsx)(`option`,{value:e.id,children:e.id},e.path))]}),l.task?(0,q.jsx)(`p`,{className:`field-error`,children:l.task}):!b&&s?.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:`No tasks in the manifest yet.`}):null]}):(0,q.jsxs)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-3)`},children:[`This trigger has no fixed task. Whoever fires it — a webhook, a script,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`sf trigger fire --task-inline`}),`, or the`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`fire_trigger`}),` MCP tool — must supply one, or the fire is rejected.`]})]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-trigger-directory`,children:`Directory`}),(0,q.jsx)(`input`,{id:`new-trigger-directory`,className:`input`,value:r.directory,onChange:e=>i(t=>({...t,directory:e.target.value,directoryTouched:!0})),autoComplete:`off`,spellCheck:!1}),l.directory?(0,q.jsx)(`p`,{className:`field-error`,children:l.directory}):(0,q.jsxs)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:[`Repo-relative folder for `,(0,q.jsxs)(`span`,{className:`mono`,children:[r.id.trim()||`id`,`.trigger.yaml`]}),`.`]})]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-trigger-id`,children:`Id`}),(0,q.jsx)(`input`,{id:`new-trigger-id`,className:`input`,value:r.id,onChange:e=>i(t=>({...t,id:e.target.value})),autoComplete:`off`,spellCheck:!1}),l.id?(0,q.jsx)(`p`,{className:`field-error`,children:l.id}):null]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-trigger-kind`,children:`Kind`}),(0,q.jsxs)(`select`,{id:`new-trigger-kind`,className:`select`,value:r.kind,onChange:e=>i(t=>({...t,kind:e.target.value})),children:[(0,q.jsx)(`option`,{value:`manual`,children:`Manual`}),(0,q.jsx)(`option`,{value:`schedule`,children:`Schedule`}),(0,q.jsx)(`option`,{value:`event`,children:`Event`})]})]}),r.kind===`schedule`?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-trigger-cron`,children:`Cron expression`}),(0,q.jsx)(`input`,{id:`new-trigger-cron`,className:`input mono`,value:r.cron,onChange:e=>i(t=>({...t,cron:e.target.value})),placeholder:`0 * * * *`,autoComplete:`off`,spellCheck:!1}),l.cron?(0,q.jsx)(`p`,{className:`field-error`,children:l.cron}):(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:`Validated server-side against real cron syntax.`})]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-trigger-timezone`,children:`Timezone (optional)`}),(0,q.jsx)(`input`,{id:`new-trigger-timezone`,className:`input`,value:r.timezone,onChange:e=>i(t=>({...t,timezone:e.target.value})),placeholder:`UTC`,autoComplete:`off`,spellCheck:!1})]})]}):null,r.kind===`event`?(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-trigger-source`,children:`Event source`}),(0,q.jsx)(`input`,{id:`new-trigger-source`,className:`input`,value:r.source,onChange:e=>i(t=>({...t,source:e.target.value})),autoComplete:`off`,spellCheck:!1}),l.source?(0,q.jsx)(`p`,{className:`field-error`,children:l.source}):(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:`No event adapter reads this yet; the trigger will not fire on its own until one lands.`}),(0,q.jsxs)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:[`Adapter-specific settings (a GitHub poller's `,(0,q.jsx)(`span`,{className:`mono`,children:`repo`}),`, a webhook's `,(0,q.jsx)(`span`,{className:`mono`,children:`secretRef`}),`/`,(0,q.jsx)(`span`,{className:`mono`,children:`header`}),`, an email adapter's `,(0,q.jsx)(`span`,{className:`mono`,children:`host`}),`/`,(0,q.jsx)(`span`,{className:`mono`,children:`port`}),`/`,(0,q.jsx)(`span`,{className:`mono`,children:`user`}),`/`,(0,q.jsx)(`span`,{className:`mono`,children:`secretRef`}),`) live in`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`event.config`}),`, which this console doesn't have a builder for yet — author it via YAML, HTTP, or MCP directly.`]})]}):null,(0,q.jsx)(`div`,{className:`form-field`,children:(0,q.jsxs)(`label`,{className:`pick__opt`,style:{display:`flex`,alignItems:`center`,gap:`var(--spacing-2)`},children:[(0,q.jsx)(`input`,{type:`checkbox`,checked:r.enabled,onChange:e=>i(t=>({...t,enabled:e.target.checked}))}),(0,q.jsx)(`span`,{children:`Enabled`})]})}),(0,q.jsxs)(`div`,{className:`form-actions`,children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:p,onClick:()=>void g(),children:p?`Creating…`:`Create trigger`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:_,children:`Cancel`})]})]})]})]})}function Vy(e){return e===`schedule`?`Schedule`:e===`event`?`Event`:`Manual`}function Hy(e){return e.kind===`schedule`&&e.schedule?e.schedule.timezone?`${e.schedule.cron} (${e.schedule.timezone})`:e.schedule.cron:e.kind===`event`&&e.event?`on ${e.event.source}`:`Fired manually only`}function Uy(e){return e?`Enabled`:`Disabled`}function Wy(e){return e??`Dynamic (task supplied at fire time)`}function Gy(e){return e??`Dynamic`}function Ky({triggerId:e}){let[t,n]=(0,v.useState)([]),[r,i]=(0,v.useState)(null),[a,o]=(0,v.useState)(!0),[s,c]=(0,v.useState)(!1),l=(0,v.useCallback)(async()=>{try{let e=await kn();n(e.triggers),i(null)}catch(e){i(e instanceof Error?e.message:String(e))}finally{o(!1)}},[]);(0,v.useEffect)(()=>{l()},[l]);async function u(e){c(!1),await l(),wy(`Trigger created · ${e.id}`)}return e?(0,q.jsx)(qy,{triggerId:e,onRefreshList:l}):(0,q.jsxs)(`div`,{className:`main__inner main__inner--wide`,children:[(0,q.jsxs)(`div`,{className:`page-head`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Triggers`}),(0,q.jsx)(`p`,{children:`Manifest-declared triggers and what they fire. Schedule and event triggers run automatically; every trigger can also be fired by hand.`})]}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,onClick:()=>c(!0),children:`New trigger`})]}),r?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:r}):null,a?(0,q.jsx)(`p`,{className:`muted`,children:`Loading triggers…`}):null,!a&&t.length===0?(0,q.jsxs)(`div`,{className:`empty-hint`,children:[(0,q.jsxs)(`p`,{style:{margin:`0 0 var(--spacing-3)`},children:[`No triggers yet. Add a `,(0,q.jsx)(`span`,{className:`mono`,children:`*.trigger.yaml`}),` `,`file to this project's catalog.`]}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,onClick:()=>c(!0),children:`New trigger`})]}):null,!a&&t.length>0?(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Trigger`}),(0,q.jsx)(`th`,{children:`Kind`}),(0,q.jsx)(`th`,{children:`Status`}),(0,q.jsx)(`th`,{children:`Last fired`}),(0,q.jsx)(`th`,{})]})}),(0,q.jsx)(`tbody`,{children:t.map(e=>(0,q.jsxs)(`tr`,{children:[(0,q.jsxs)(`td`,{children:[(0,q.jsx)(`a`,{href:`#${Yv(e.id)}`,children:e.id}),(0,q.jsxs)(`div`,{className:`muted`,style:{fontSize:`var(--font-size-xs)`},children:[e.pipeline,` · `,Gy(e.task)]})]}),(0,q.jsx)(`td`,{className:`mono`,children:Vy(e.kind)}),(0,q.jsx)(`td`,{children:(0,q.jsx)(`span`,{className:e.enabled?void 0:`muted`,children:Uy(e.enabled)})}),(0,q.jsx)(`td`,{className:`muted`,children:e.last_fired_at?ii(e.last_fired_at):`never`}),(0,q.jsx)(`td`,{style:{textAlign:`right`},children:(0,q.jsx)(`a`,{className:`btn btn--sm`,href:`#${Yv(e.id)}`,children:`Open`})})]},e.id))})]}):null,(0,q.jsx)(By,{isOpen:s,onClose:()=>c(!1),onCreated:e=>void u(e)})]})}function qy({triggerId:e,onRefreshList:t}){let[n,r]=(0,v.useState)(null),[i,a]=(0,v.useState)(!0),[o,s]=(0,v.useState)(null),[c,l]=(0,v.useState)(!1),u=(0,v.useCallback)(async()=>{try{let t=await An(e);r(t),s(null)}catch(e){s(e instanceof Error?e.message:String(e)),r(null)}finally{a(!1)}},[e]);(0,v.useEffect)(()=>{a(!0),u()},[u]);async function d(){l(!0);try{let n=await jn(e);wy(n.queued?`Trigger queued · ${e}`:`Trigger fired · ${e} · ${n.runId}`),await u(),t()}catch(e){s(e instanceof Error?e.message:String(e))}finally{l(!1)}}let f=n?`${n.definition_ref} · ${Vy(n.kind)}`:e;return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`p`,{className:`crumbs`,children:[(0,q.jsx)(`a`,{href:`#/triggers`,children:`Triggers`}),` / `,e]}),(0,q.jsxs)(`div`,{className:`page-head`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:e}),(0,q.jsx)(`p`,{className:`mono`,children:f})]}),n?(0,q.jsx)(`button`,{className:`btn btn--primary`,disabled:c,onClick:()=>void d(),children:c?`Firing…`:`Fire`}):null]}),o?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:o}):null,i?(0,q.jsx)(`p`,{className:`muted`,children:`Loading…`}):null,!i&&!n?(0,q.jsxs)(`p`,{className:`muted`,children:[e,` is not in the current manifest catalog.`]}):null,n?(0,q.jsxs)(`dl`,{className:`kv`,children:[(0,q.jsx)(`dt`,{children:`Pipeline`}),(0,q.jsx)(`dd`,{children:n.pipeline}),(0,q.jsx)(`dt`,{children:`Task`}),(0,q.jsx)(`dd`,{className:n.task?void 0:`muted`,children:Wy(n.task)}),(0,q.jsx)(`dt`,{children:`Kind`}),(0,q.jsx)(`dd`,{children:Vy(n.kind)}),(0,q.jsx)(`dt`,{children:`Schedule`}),(0,q.jsx)(`dd`,{children:Hy(n)}),(0,q.jsx)(`dt`,{children:`Status`}),(0,q.jsx)(`dd`,{children:Uy(n.enabled)}),(0,q.jsx)(`dt`,{children:`Last fired`}),(0,q.jsx)(`dd`,{children:n.last_fired_at?ii(n.last_fired_at):`never`}),n.last_run_id?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`dt`,{children:`Last run`}),(0,q.jsx)(`dd`,{children:(0,q.jsx)(`a`,{href:`#${Uv(n.last_run_id)}`,children:n.last_run_id})})]}):null,n.next_run_at?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`dt`,{children:`Next run`}),(0,q.jsx)(`dd`,{className:`mono`,children:n.next_run_at})]}):null]}):null]})}function Jy({skillName:e}){let[t,n]=(0,v.useState)([]),[r,i]=(0,v.useState)(null),[a,o]=(0,v.useState)(!0),s=(0,v.useCallback)(async()=>{try{let e=await In();n(e.skills),i(null)}catch(e){i(e instanceof Error?e.message:String(e))}finally{o(!1)}},[]);(0,v.useEffect)(()=>{s()},[s]);let c=e?t.find(t=>t.name===e)??null:null;return e?(0,q.jsx)(Yy,{skillName:e,skill:c,loading:a,error:r}):(0,q.jsxs)(`div`,{className:`main__inner main__inner--wide`,children:[(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Skills`}),(0,q.jsx)(`p`,{children:`Skills the Pi SDK can discover on this machine. Factory stages do not load them.`})]})}),r?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:r}):null,a?(0,q.jsx)(`p`,{className:`muted`,children:`Loading skills…`}):null,!a&&t.length===0?(0,q.jsx)(`p`,{className:`muted`,children:`No skills found under ~/.pi/agent/skills, ~/.agents/skills, or this project's .pi/skills / .agents/skills.`}):null,!a&&t.length>0?(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Skill`}),(0,q.jsx)(`th`,{children:`Scope`}),(0,q.jsx)(`th`,{children:`Source`}),(0,q.jsx)(`th`,{children:`Invocation`})]})}),(0,q.jsx)(`tbody`,{children:t.map(e=>(0,q.jsxs)(`tr`,{children:[(0,q.jsxs)(`td`,{children:[(0,q.jsx)(`a`,{href:`#${Xv(e.name)}`,children:e.name}),(0,q.jsx)(`div`,{className:`muted`,style:{fontSize:`var(--font-size-xs)`},children:e.description})]}),(0,q.jsx)(`td`,{className:`mono`,children:e.scope}),(0,q.jsx)(`td`,{className:`mono`,children:e.source}),(0,q.jsx)(`td`,{className:`mono`,children:e.disableModelInvocation?`command-only`:`model`})]},`${e.scope}:${e.filePath}`))})]}):null]})}function Yy({skillName:e,skill:t,loading:n,error:r}){return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`p`,{className:`crumbs`,children:[(0,q.jsx)(`a`,{href:`#/skills`,children:`Skills`}),` / `,e]}),(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:e}),(0,q.jsx)(`p`,{className:`mono`,children:t?`${t.scope} · ${t.source}`:e})]})}),r?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:r}):null,n?(0,q.jsx)(`p`,{className:`muted`,children:`Loading…`}):null,!n&&!t?(0,q.jsxs)(`p`,{className:`muted`,children:[e,` is not in the Pi skill catalog on this machine.`]}):null,t?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h3`,{children:`Description`}),(0,q.jsx)(`p`,{children:t.description}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Invocation`}),(0,q.jsx)(`p`,{className:`mono`,children:t.disableModelInvocation?`command-only`:`model`}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`File path`}),(0,q.jsx)(`p`,{className:`mono`,children:t.filePath}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Base dir`}),(0,q.jsx)(`p`,{className:`mono`,children:t.baseDir})]}):null]})}function Xy({packageScope:e,packageSource:t,filePath:n}){let[r,i]=(0,v.useState)([]),[a,o]=(0,v.useState)([]),[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(!0),d=(0,v.useCallback)(async()=>{try{let e=await Ln();i(e.packages),o(e.extensions),c(null)}catch(e){c(e instanceof Error?e.message:String(e))}finally{u(!1)}},[]);if((0,v.useEffect)(()=>{d()},[d]),e&&t){let n=r.find(n=>n.scope===e&&n.source===t)??null;return(0,q.jsx)(Zy,{scope:e,source:t,pkg:n,loading:l,error:s})}if(n){let e=a.find(e=>e.path===n)??null;return(0,q.jsx)(Qy,{filePath:n,file:e,loading:l,error:s})}let f=!l&&r.length===0&&a.length===0;return(0,q.jsxs)(`div`,{className:`main__inner main__inner--wide`,children:[(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Extensions`}),(0,q.jsx)(`p`,{children:`Extensions the Pi SDK can discover on this machine. Factory stages do not load them.`})]})}),s?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:s}):null,l?(0,q.jsx)(`p`,{className:`muted`,children:`Loading extensions…`}):null,f?(0,q.jsx)(`p`,{className:`muted`,children:`No extensions found under ~/.pi/agent/extensions, this project's .pi/extensions, or packages in Pi settings.`}):null,!l&&r.length>0?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h3`,{children:`Packages`}),(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Source`}),(0,q.jsx)(`th`,{children:`Scope`}),(0,q.jsx)(`th`,{children:`Installed`})]})}),(0,q.jsx)(`tbody`,{children:r.map(e=>(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`td`,{children:(0,q.jsx)(`a`,{href:`#${Zv(e.scope,e.source)}`,children:e.source})}),(0,q.jsx)(`td`,{className:`mono`,children:e.scope}),(0,q.jsx)(`td`,{className:`mono`,children:e.installedPath??`not installed`})]},`${e.scope}:${e.source}`))})]})]}):null,!l&&a.length>0?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h3`,{children:`Files`}),(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Name`}),(0,q.jsx)(`th`,{children:`Scope`}),(0,q.jsx)(`th`,{children:`Source`}),(0,q.jsx)(`th`,{children:`Origin`})]})}),(0,q.jsx)(`tbody`,{children:a.map(e=>(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`td`,{children:(0,q.jsx)(`a`,{href:`#${Qv(e.path)}`,children:e.name})}),(0,q.jsx)(`td`,{className:`mono`,children:e.scope}),(0,q.jsx)(`td`,{className:`mono`,children:e.source}),(0,q.jsx)(`td`,{className:`mono`,children:e.origin})]},`${e.scope}:${e.path}`))})]})]}):null]})}function Zy({scope:e,source:t,pkg:n,loading:r,error:i}){return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`p`,{className:`crumbs`,children:[(0,q.jsx)(`a`,{href:`#/extensions`,children:`Extensions`}),` / `,t]}),(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:t}),(0,q.jsx)(`p`,{className:`mono`,children:n?`${n.scope} · package`:`${e} · package`})]})}),i?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:i}):null,r?(0,q.jsx)(`p`,{className:`muted`,children:`Loading…`}):null,!r&&!n?(0,q.jsxs)(`p`,{className:`muted`,children:[t,` is not in the Pi package catalog on this machine.`]}):null,n?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Scope`}),(0,q.jsx)(`p`,{className:`mono`,children:n.scope}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Source`}),(0,q.jsx)(`p`,{className:`mono`,children:n.source}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Filtered`}),(0,q.jsx)(`p`,{className:`mono`,children:n.filtered?`yes`:`no`}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Installed path`}),(0,q.jsx)(`p`,{className:`mono`,children:n.installedPath??`not installed`})]}):null]})}function Qy({filePath:e,file:t,loading:n,error:r}){let i=t?.name??e;return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`p`,{className:`crumbs`,children:[(0,q.jsx)(`a`,{href:`#/extensions`,children:`Extensions`}),` / `,i]}),(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:i}),(0,q.jsx)(`p`,{className:`mono`,children:t?`${t.scope} · ${t.source}`:e})]})}),r?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:r}):null,n?(0,q.jsx)(`p`,{className:`muted`,children:`Loading…`}):null,!n&&!t?(0,q.jsx)(`p`,{className:`muted`,children:`This path is not in the Pi extension catalog on this machine.`}):null,t?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Scope`}),(0,q.jsx)(`p`,{className:`mono`,children:t.scope}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Source`}),(0,q.jsx)(`p`,{className:`mono`,children:t.source}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Origin`}),(0,q.jsx)(`p`,{className:`mono`,children:t.origin}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`File path`}),(0,q.jsx)(`p`,{className:`mono`,children:t.path}),t.baseDir?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Base dir`}),(0,q.jsx)(`p`,{className:`mono`,children:t.baseDir})]}):null]}):null]})}var $y=`sf-theme`;function eb(){try{let e=localStorage.getItem($y);if(e===`light`||e===`dark`||e===`system`)return e}catch{}return`system`}function tb(e){try{localStorage.setItem($y,e)}catch{}}function nb({value:e,onChange:t}){return(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Appearance`})}),(0,q.jsx)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:`Applies immediately, on every screen.`}),(0,q.jsx)(`div`,{className:`theme-picks`,role:`radiogroup`,"aria-label":`Color theme`,children:[`system`,`light`,`dark`].map(n=>(0,q.jsxs)(`button`,{type:`button`,className:`theme-pick`,"data-theme":n,"aria-pressed":e===n?`true`:`false`,onClick:()=>{tb(n),t(n)},children:[(0,q.jsx)(`span`,{className:`theme-pick__swatch`,"data-preview":n}),(0,q.jsx)(`strong`,{children:n===`system`?`System`:n===`light`?`Light`:`Dark`}),(0,q.jsx)(`span`,{children:n===`system`?`Follows this machine`:`Astryx neutral`})]},n))})]})}var rb=`http://127.0.0.1:3847/mcp`;function ib(e,t={}){if(t.viteDev)return rb;let n=e.hostname;return n===`localhost`||n===`::1`||n===`[::1]`?n=`127.0.0.1`:n.includes(`:`)&&!n.startsWith(`[`)&&(n=`[${n}]`),`${`${e.protocol}//${n}${e.port?`:${e.port}`:``}`}/mcp`}function ab(e){return`${JSON.stringify({mcpServers:{stageflow:{url:e}}},null,2)}\n`}function ob(){let e=ib(window.location,{viteDev:!1}),t=ab(e),[n,r]=(0,v.useState)(()=>bn());return(0,v.useEffect)(()=>{xn(n)},[n]),(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Operator-host MCP`})}),(0,q.jsx)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:`This console process also serves Streamable HTTP MCP on the same origin. Cursor connects with a URL. There is no stdio command, and the endpoint dies when this process stops.`}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Endpoint`}),(0,q.jsxs)(`p`,{children:[`Same host as this console, path`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`/mcp`}),`. When the Host is bound off loopback, send`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`Authorization: Bearer`}),` with the control token below (drive scope).`]})]}),(0,q.jsx)(`span`,{className:`mono`,style:{wordBreak:`break-all`},children:e})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Control token`}),(0,q.jsxs)(`p`,{children:[`Stored in this browser only (`,(0,q.jsx)(`span`,{className:`mono`,children:`localStorage`}),`). Leave empty for local loopback Hosts that run without`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`STAGEFLOW_CONTROL_TOKEN`}),`.`]})]}),(0,q.jsx)(`input`,{type:`password`,autoComplete:`off`,value:n,onChange:e=>r(e.target.value),placeholder:`STAGEFLOW_CONTROL_TOKEN`,style:{minWidth:`16rem`}})]}),(0,q.jsxs)(`ol`,{className:`steps`,children:[(0,q.jsx)(`li`,{children:(0,q.jsx)(`span`,{children:`Keep this operator console running. MCP is not a second server.`})}),(0,q.jsx)(`li`,{children:(0,q.jsxs)(`span`,{children:[`Open Cursor Settings → MCP, or add`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`.cursor/mcp.json`}),` in this project.`]})}),(0,q.jsx)(`li`,{children:(0,q.jsxs)(`span`,{children:[`Paste the snippet below. Use `,(0,q.jsx)(`span`,{className:`mono`,children:`url`}),`, not`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`command`}),`. Remote clients also need the bearer control token.`]})}),(0,q.jsx)(`li`,{children:(0,q.jsxs)(`span`,{children:[`Reload MCP in Cursor. Tools that should appear:`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`list_pipelines`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`start_run`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`get_run`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`get_health`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`list_runs`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`read_artifact`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`wait_run`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`answer_gate`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`decide_feedback_loop`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`describe_pipeline`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`validate`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`list_providers`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`list_models`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`list_project_mcp`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`probe_project_mcp`}),`.`]})})]}),(0,q.jsx)(Uc,{code:t,language:`json`,title:`.cursor/mcp.json`,container:`section`,hasLanguageLabel:!1,width:`100%`}),(0,q.jsx)(`p`,{className:`muted`,style:{margin:`var(--spacing-4) 0 0`,fontSize:`var(--font-size-sm)`},children:`This URL is this console's origin plus /mcp. It must match the MCP endpoint line printed on boot.`}),(0,q.jsxs)(`p`,{className:`muted`,style:{margin:`var(--spacing-2) 0 0`,fontSize:`var(--font-size-sm)`},children:[`MCP can submit a waiting-stage answer (`,(0,q.jsx)(`span`,{className:`mono`,children:`answer_gate`}),`) and a feedback-loop decision (`,(0,q.jsx)(`span`,{className:`mono`,children:`decide_feedback_loop`}),`).`]})]})}var sb=`Servers from this project's git-root .mcp.json. Check tests whether a server can connect. It does not start a run and does not attach tools to stages. YAML mcp: still allowlists what a stage receives.`;function cb(e){switch(e){case`not-yet-probed`:return`Not yet probed`;case`probing`:return`Probing…`;case`connected`:return`Connected`;case`needs_auth`:return`Needs auth`;case`connect_failed`:return`Connect failed`;case`unresolved_var`:return`Unresolved variable`;case`invalid_config`:return`Invalid config`;case`missing_catalog`:return`Missing catalog`;case`cancelled`:return`Cancelled`}}function lb(e){switch(e){case`probing`:return`running`;case`connected`:return`succeeded`;case`needs_auth`:return`waiting`;case`connect_failed`:case`unresolved_var`:case`invalid_config`:case`missing_catalog`:return`failed`;case`not-yet-probed`:case`cancelled`:return}}function ub(e){return e===`missing_catalog`?`No git-root .mcp.json in this project.`:e===`invalid_config`?`Project .mcp.json is invalid.`:null}function db(e){let t={loading:!0,catalogStatus:null,servers:[],error:null},n=!1,r=new Map,i=new Set,a=()=>t,o=()=>{for(let e of i)e()},s=(e,n)=>{t={...t,servers:t.servers.map(t=>t.name===e?{...t,...n}:t)},o()};return{getState:a,load:async()=>{if(!n){t={loading:!0,catalogStatus:null,servers:[],error:null},o();try{let r=await e.list();if(n)return;if(r.status!==`ok`){t={loading:!1,catalogStatus:r.status,servers:[],error:null},o();return}t={loading:!1,catalogStatus:`ok`,servers:r.servers.map(e=>({name:e.name,transport:e.transport,status:`not-yet-probed`})),error:null},o()}catch(e){if(n)return;t={loading:!1,catalogStatus:null,servers:[],error:e instanceof Error?e.message:String(e)},o()}}},check:async t=>{if(n||r.has(t))return;let i=new AbortController;r.set(t,i),s(t,{status:`probing`,error:void 0});try{let r=await e.probe(t,{signal:i.signal});if(n)return;s(t,{status:r.status,error:r.error})}catch(e){if(n||i.signal.aborted)return;s(t,{status:`connect_failed`,error:e instanceof Error?e.message:String(e)})}finally{r.delete(t)}},dispose:()=>{n=!0;for(let e of r.values())e.abort();r.clear()},subscribe:e=>(i.add(e),()=>{i.delete(e)})}}function fb(){let e=(0,v.useRef)(null),[t,n]=(0,v.useState)({loading:!0,catalogStatus:null,servers:[],error:null});(0,v.useEffect)(()=>{let t=db({list:lr,probe:ur});e.current=t,n(t.getState());let r=t.subscribe(()=>n(t.getState()));return t.load(),()=>{r(),t.dispose(),e.current===t&&(e.current=null)}},[]);let r=t.catalogStatus?ub(t.catalogStatus):null;return(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Project MCP servers`})}),(0,q.jsx)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:sb}),t.error?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:t.error}):null,r?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:r}):null,t.loading?(0,q.jsx)(`p`,{className:`muted`,children:`Loading project catalog…`}):t.catalogStatus===`ok`&&t.servers.length===0?(0,q.jsx)(`p`,{className:`muted`,children:`No servers in .mcp.json.`}):t.servers.map(t=>{let n=lb(t.status),r=t.status===`probing`;return(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:t.name}),(0,q.jsx)(`p`,{children:t.transport}),t.error?(0,q.jsx)(`p`,{children:t.error}):null]}),(0,q.jsxs)(`span`,{style:{display:`flex`,gap:`var(--spacing-2)`,alignItems:`center`},children:[(0,q.jsxs)(`span`,{className:`status`,children:[(0,q.jsx)(`span`,{className:`dot${n?` dot--${n}`:``}`}),` `,cb(t.status)]}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,disabled:r,onClick:()=>void e.current?.check(t.name),children:r?`Probing…`:`Check`})]})]},t.name)})]})}var pb=`Pi may complete login via a local callback in the Stageflow process. If the browser cannot reach this machine, paste the redirect URL or code when prompted.`,mb=`If automatic completion does not finish, paste the redirect URL or manual code below.`;function hb(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n?.type===`auth_url`)return n}}function gb(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n?.type===`device_code`)return n}}function _b(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n?.type===`progress`||n?.type===`info`)return n.message}}function vb(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n?.type===`info`&&n.links&&n.links.length>0)return n.links}}function yb(e){return e.status===`completed`||e.status===`failed`||e.status===`cancelled`}function bb(e){return e.type===`select`?`select`:e.type===`secret`?`password`:`text`}function xb(e){return e.supportsOauth}var Sb=500;function Cb({providerId:e,providerName:t,onComplete:n,onDismiss:r}){let[i,a]=(0,v.useState)(null),[o,s]=(0,v.useState)(null),[c,l]=(0,v.useState)(``),[u,d]=(0,v.useState)(!1),[f,p]=(0,v.useState)(null),m=(0,v.useRef)(!1),h=(0,v.useRef)(!1);(0,v.useEffect)(()=>{m.current||(m.current=!0,(async()=>{d(!0);let t=await Gn(e);if(d(!1),!t.ok){s(t.error);return}a(t.session)})())},[e]),(0,v.useEffect)(()=>{if(!i||yb(i))return;let t=window.setInterval(()=>{(async()=>{try{let{session:t}=await Kn(e,i.id);a(t)}catch(e){s(e instanceof Error?e.message:String(e))}})()},Sb);return()=>window.clearInterval(t)},[e,i?.id,i?.status]),(0,v.useEffect)(()=>{if(!(!i||!yb(i)||h.current)){if(h.current=!0,i.status===`completed`){n(i.provider,i.warning?.message);return}if(i.status===`failed`){s(i.error?.message??`OAuth login failed`);return}r()}},[i,n,r]);let g=i?.pendingPrompt;(0,v.useEffect)(()=>{g||(l(``),s(e=>e===`Enter a value to continue.`?null:e))},[g]);async function _(e,t){try{await navigator.clipboard.writeText(t),p(e),window.setTimeout(()=>p(null),1500)}catch{s(`Could not copy to clipboard`)}}async function y(){if(!i)return;let t=c.trim();if(!t){s(`Enter a value to continue.`);return}d(!0),s(null);let n=await qn(e,i.id,t);if(d(!1),!n.ok){s(n.error);return}l(``),a(n.session)}async function b(t){if(!i)return;d(!0),s(null);let n=await qn(e,i.id,t);if(d(!1),!n.ok){s(n.error);return}a(n.session)}async function x(){if(!i){r();return}d(!0),await Jn(e,i.id),d(!1),h.current=!0,r()}let S=i?hb(i.events):void 0,C=i?gb(i.events):void 0,w=i?_b(i.events):void 0,T=i?vb(i.events):void 0,E=g?bb(g):null;return(0,q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`var(--spacing-2)`,marginTop:`var(--spacing-2)`},children:[(0,q.jsxs)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:[`Connecting `,t,` with Pi OAuth / subscription login.`]}),w?(0,q.jsx)(`p`,{className:`muted`,style:{margin:0},children:w}):null,T&&T.length>0?(0,q.jsx)(`div`,{style:{display:`flex`,gap:`var(--spacing-2)`,flexWrap:`wrap`},children:T.map(e=>(0,q.jsx)(`a`,{className:`btn btn--ghost`,href:e.url,target:`_blank`,rel:`noreferrer`,children:e.label??`Open link`},e.url))}):null,S?(0,q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`var(--spacing-2)`},children:[S.instructions?(0,q.jsx)(`p`,{style:{margin:0,fontSize:`var(--font-size-sm)`},children:S.instructions}):null,(0,q.jsxs)(`div`,{style:{display:`flex`,gap:`var(--spacing-2)`,flexWrap:`wrap`},children:[(0,q.jsx)(`a`,{className:`btn btn--primary`,href:S.url,target:`_blank`,rel:`noreferrer`,children:`Open browser`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:()=>void _(`url`,S.url),children:f===`url`?`Copied`:`Copy link`})]}),(0,q.jsxs)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:[pb,` `,mb]})]}):null,C?(0,q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`var(--spacing-2)`},children:[(0,q.jsxs)(`p`,{style:{margin:0},children:[`Device code: `,(0,q.jsx)(`strong`,{children:C.userCode})]}),typeof C.expiresInSeconds==`number`?(0,q.jsxs)(`p`,{className:`muted`,style:{margin:0,fontSize:`var(--font-size-sm)`},children:[`Code expires in about `,C.expiresInSeconds,`s.`]}):null,(0,q.jsxs)(`div`,{style:{display:`flex`,gap:`var(--spacing-2)`,flexWrap:`wrap`},children:[(0,q.jsx)(`a`,{className:`btn btn--primary`,href:C.verificationUri,target:`_blank`,rel:`noreferrer`,children:`Open verification page`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:()=>void _(`code`,C.userCode),children:f===`code`?`Copied`:`Copy code`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:()=>void _(`uri`,C.verificationUri),children:f===`uri`?`Copied`:`Copy URI`})]})]}):null,g&&E===`select`?(0,q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`var(--spacing-2)`},children:[(0,q.jsx)(`p`,{style:{margin:0},children:g.message}),(g.options??[]).map(e=>(0,q.jsxs)(`button`,{type:`button`,className:`btn btn--ghost`,disabled:u,onClick:()=>void b(e.id),children:[e.label,e.description?` — ${e.description}`:``]},e.id))]}):null,g&&E!==`select`?(0,q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`var(--spacing-2)`},children:[(0,q.jsx)(`p`,{style:{margin:0},children:g.message}),g.type===`manual_code`?(0,q.jsx)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:mb}):null,(0,q.jsx)(`input`,{className:`input`,type:E===`password`?`password`:`text`,autoComplete:`off`,placeholder:g.placeholder??``,value:c,onChange:e=>l(e.target.value)}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:u,onClick:()=>void y(),children:u?`Sending…`:`Continue`})]}):null,o?(0,q.jsx)(`p`,{style:{margin:0,color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`},children:o}):null,(0,q.jsx)(`div`,{style:{display:`flex`,gap:`var(--spacing-2)`},children:(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,disabled:u,onClick:()=>void x(),children:`Cancel`})})]})}function wb({provider:e,status:t,connecting:n,oauthing:r,apiKeyDraft:i,rowBusy:a,showDisconnect:o,onSetConnecting:s,onSetOauthing:c,onApiKeyChange:l,onConnectSubmit:u,onDisconnect:d,onOauthComplete:f,onOauthDismiss:p}){let m=t?.configured===!0,h=tv(e),g=xb(e),_=nv(e);return(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:e.name}),(0,q.jsx)(`p`,{children:rv(t)}),n?(0,q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`var(--spacing-2)`,marginTop:`var(--spacing-2)`},children:[(0,q.jsx)(`input`,{className:`input`,type:`password`,autoComplete:`off`,placeholder:`API key`,value:i,onChange:e=>l(e.target.value)}),(0,q.jsxs)(`div`,{style:{display:`flex`,gap:`var(--spacing-2)`},children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:a,onClick:()=>u(e.id),children:a?`Saving…`:`Save key`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,disabled:a,onClick:()=>{s(null),l(``)},children:`Cancel`})]})]}):null,r?(0,q.jsx)(Cb,{providerId:e.id,providerName:e.name,onComplete:f,onDismiss:p}):null]}),(0,q.jsxs)(`span`,{style:{display:`flex`,gap:`var(--spacing-2)`},children:[m&&o?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,disabled:a||r,onClick:()=>d(e.id),children:`Disconnect`}):null,m&&!o?(0,q.jsx)(`span`,{className:`muted`,children:`Connected`}):null,h&&!m&&!r?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:a,onClick:()=>{s(e.id),c(null),l(``)},children:`Connect`}):null,g&&!m&&!n&&!r?(0,q.jsx)(`button`,{type:`button`,className:_?`btn btn--primary`:`btn btn--ghost`,disabled:a,onClick:()=>{c(e.id),s(null),l(``)},children:`Connect with OAuth`}):null]})]},e.id)}function Tb(){let[e,t]=(0,v.useState)([]),[n,r]=(0,v.useState)({}),[i,a]=(0,v.useState)(void 0),[o,s]=(0,v.useState)(!0),[c,l]=(0,v.useState)(null),[u,d]=(0,v.useState)(!1),[f,p]=(0,v.useState)(null),[m,h]=(0,v.useState)(null),[g,_]=(0,v.useState)(``),[y,b]=(0,v.useState)(null),[x,S]=(0,v.useState)(null),[C,w]=(0,v.useState)(null),T=(0,v.useCallback)(async()=>{l(null);let[e,n]=await Promise.all([Bn(),Vn()]);t(e.providers),a(n.credentialSource);let i={};await Promise.all(e.providers.map(async e=>{try{let{provider:t}=await Hn(e.id);i[e.id]=t}catch{i[e.id]=void 0}})),r(i)},[]);(0,v.useEffect)(()=>{(async()=>{s(!0);try{await T()}catch(e){l(e instanceof Error?e.message:String(e))}finally{s(!1)}})()},[T]);async function E(e){if(e===`pi_home`||e===`sf_owned`){d(!0),l(null);try{let t=await Xn(e);a(t.credentialSource),await T()}catch(e){l(e instanceof Error?e.message:String(e))}finally{d(!1)}}}async function D(e){let t=g.trim();if(!t){S(`Paste an API key to connect.`);return}b(e),S(null);let n=await Un(e,t);if(b(null),!n.ok){S(n.error);return}_(``),p(null),r(t=>({...t,[e]:n.provider}))}async function O(e){b(e),S(null);let t=await Wn(e);if(b(null),!t.ok){S(t.error);return}r(n=>({...n,[e]:t.provider}))}return(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Providers`})}),(0,q.jsx)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:Q_}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Credential source`}),(0,q.jsx)(`p`,{children:`Use credentials already stored by Pi, or keep a Stageflow-owned store for keys you paste here.`})]}),o?(0,q.jsx)(`span`,{className:`muted`,children:`—`}):(0,q.jsxs)(`select`,{className:`select`,value:i??``,disabled:u,onChange:e=>void E(e.target.value),children:[(0,q.jsx)(`option`,{value:``,disabled:!0,children:`Not set`}),(0,q.jsx)(`option`,{value:`pi_home`,children:`Existing Pi login (~/.pi)`}),(0,q.jsx)(`option`,{value:`sf_owned`,children:`Stageflow-owned store`})]})]}),c?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:c}):null,x?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:x}):null,C?(0,q.jsx)(`p`,{style:{color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:C}):null,o?(0,q.jsx)(`p`,{className:`muted`,children:`Loading providers…`}):e.length===0?(0,q.jsx)(`p`,{className:`muted`,children:`No providers reported by Pi.`}):e.map(e=>(0,q.jsx)(wb,{provider:e,status:n[e.id],connecting:f===e.id,oauthing:m===e.id,apiKeyDraft:g,rowBusy:y===e.id,showDisconnect:!0,onSetConnecting:e=>{p(e),S(null)},onSetOauthing:e=>{h(e),S(null),w(null)},onApiKeyChange:_,onConnectSubmit:e=>void D(e),onDisconnect:e=>void O(e),onOauthComplete:(t,n)=>{h(null),w(n??null),t?r(n=>({...n,[e.id]:t})):T()},onOauthDismiss:()=>{h(null),S(null)}},e.id))]})}var Eb=`sf-notify-waiting`;function Db(){try{let e=localStorage.getItem(Eb);if(e===`system`||e===`off`)return e}catch{}return`off`}function Ob(e){try{localStorage.setItem(Eb,e)}catch{}}function kb(){return typeof Notification>`u`?`unsupported`:Notification.permission}async function Ab(){return typeof Notification>`u`?`unsupported`:Notification.permission==="default"?Notification.requestPermission():Notification.permission}function jb(e,t){let n=new Set(e.map(e=>e.run_id));if(t===null)return{emit:[],nextSeen:n};let r=[],i=new Set(t);for(let t of e)i.has(t.run_id)||(r.push(t),i.add(t.run_id));for(let e of[...i])n.has(e)||i.delete(e);return{emit:r,nextSeen:i}}function Mb(e){let{snapshot:t,loading:n}=Mr(),r=(0,v.useRef)(null);(0,v.useEffect)(()=>{if(n)return;let{emit:i,nextSeen:a}=jb(Gr(t),r.current);if(r.current=a,e){for(let e of i)if(typeof Notification<`u`&&Notification.permission===`granted`){let t=[e.pipeline_id,e.waiting_summary].filter(e=>!!e);new Notification(`Stage waiting on you`,{body:t.join(` — `)})}}},[t,n,e])}var Nb=`cursor/auto`;function Pb(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KiB`:e<1073741824?`${(e/1048576).toFixed(1)} MiB`:`${(e/1073741824).toFixed(2)} GiB`}function Fb({themeMode:e,onThemeChange:t,notifyPreference:n,onNotifyChange:r}){let{snapshot:i,loading:a}=Mr(),o=Nr(),s=i.health,c=a&&s==null,l=!c&&s==null?`unavailable`:null,[u,d]=(0,v.useState)(null),[f,p]=(0,v.useState)(!1),[m,h]=(0,v.useState)(kb),[g,_]=(0,v.useState)(``),[y,b]=(0,v.useState)([]),[x,S]=(0,v.useState)(null),[C,w]=(0,v.useState)(!1);(0,v.useEffect)(()=>{let e=!1;return(async()=>{try{let[t,n]=await Promise.all([Yn(),Nn()]);if(e)return;_(t.workshopModel??``),b(n.models)}catch(t){if(e)return;S(t instanceof Error?t.message:String(t))}})(),()=>{e=!0}},[]);async function T(e){let t=e===`system`?`system`:`off`;if(Ob(t),r(t),t===`system`&&kb()==="default"){let e=await Ab();h(e)}}async function E(e){let t=Number(e);p(!0),d(null);try{await zn(t),await o.refresh()}catch(e){d(e instanceof Error?e.message:String(e))}finally{p(!1)}}async function D(e){w(!0),S(null);try{let t=e.trim()||Nb,n=await Zn(t);_(n.workshopModel??t)}catch(e){S(e instanceof Error?e.message:String(e))}finally{w(!1)}}let O=[1,2,3,4,6],k=s?.maxConcurrent,A=k!=null&&!O.includes(k)?[k,...O]:O;return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Settings`}),(0,q.jsx)(`p`,{children:`Local to this machine. Nothing here is shared, because Stageflow runs as one operator's CLI.`})]})}),(0,q.jsx)(nb,{value:e,onChange:t}),(0,q.jsx)(Tb,{}),(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Workshop`})}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Workshop model`}),(0,q.jsx)(`p`,{children:`Default model for Workshop Author chat. Uses the same configured providers as stage runs — no separate credentials. Override per session in Workshop chrome.`})]}),(0,q.jsxs)(`select`,{className:`select`,value:g||Nb,disabled:C,onChange:e=>void D(e.target.value),children:[y.includes(g||Nb)?null:(0,q.jsx)(`option`,{value:g||Nb,children:g||Nb}),y.length===0?(0,q.jsx)(`option`,{value:Nb,children:Nb}):y.map(e=>(0,q.jsx)(`option`,{value:e,children:e},e))]})]}),x?(0,q.jsxs)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:[`Could not update Workshop model: `,x]}):null]}),(0,q.jsx)(fb,{}),(0,q.jsx)(ob,{}),(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Concurrency`})}),l?(0,q.jsxs)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:[`Could not load capacity: `,l]}):null,(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Session slots`}),(0,q.jsx)(`p`,{children:`How many stage sessions may be alive at once. A stage waiting on you still holds its slot. Lowering the cap does not stop runs that are already in flight.`})]}),c?(0,q.jsx)(`span`,{className:`muted`,children:`—`}):s?(0,q.jsx)(`select`,{className:`select`,value:s.maxConcurrent,disabled:f,onChange:e=>void E(e.target.value),children:A.map(e=>(0,q.jsxs)(`option`,{value:e,children:[e,e===s.maxConcurrent?` · current`:``]},e))}):(0,q.jsx)(`span`,{className:`muted`,children:`—`})]}),u?(0,q.jsxs)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:[`Could not update slots: `,u]}):null,(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Slots available`}),(0,q.jsx)(`p`,{children:`Free slots that can accept a new run right now.`})]}),(0,q.jsx)(`span`,{className:`muted`,children:c?`—`:s?String(s.slotsAvailable):`—`})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`When slots are full`}),(0,q.jsxs)(`p`,{children:[`New starts enter the admission queue until`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`STAGEFLOW_MAX_QUEUED`}),` is full, then reject with `,(0,q.jsx)(`span`,{className:`mono`,children:`busy_capacity`}),`.`]})]}),(0,q.jsx)(`span`,{className:`muted`,children:`Queue, then busy_capacity`})]})]}),(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Disk`})}),l?(0,q.jsxs)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:[`Could not load disk: `,l]}):null,c?(0,q.jsx)(`p`,{className:`muted`,children:`—`}):s?.disk?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Runs`}),(0,q.jsx)(`p`,{children:`Cached workspaces under the durable root.`})]}),(0,q.jsx)(`span`,{className:`muted`,children:Pb(s.disk.runs_bytes)})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsx)(`span`,{children:(0,q.jsx)(`strong`,{children:`Worktrees`})}),(0,q.jsx)(`span`,{className:`muted`,children:Pb(s.disk.worktrees_bytes)})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsx)(`span`,{children:(0,q.jsx)(`strong`,{children:`Repos caches`})}),(0,q.jsx)(`span`,{className:`muted`,children:Pb(s.disk.repos_bytes)})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsx)(`span`,{children:(0,q.jsx)(`strong`,{children:`State database`})}),(0,q.jsx)(`span`,{className:`muted`,children:Pb(s.disk.state_db_bytes)})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsx)(`span`,{children:(0,q.jsx)(`strong`,{children:`A2A artifacts`})}),(0,q.jsx)(`span`,{className:`muted`,children:Pb(s.disk.a2a_artifacts_bytes)})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsx)(`span`,{children:(0,q.jsx)(`strong`,{children:`Free on volume`})}),(0,q.jsx)(`span`,{className:`muted`,children:Pb(s.disk.free_bytes)})]})]}):(0,q.jsx)(`p`,{className:`muted`,children:`Disk breakdown unavailable.`})]}),(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Held stages`})}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Hold timeout`}),(0,q.jsx)(`p`,{children:`A held stage waits until you answer. There is no timeout yet.`})]}),(0,q.jsx)(`span`,{className:`muted`,children:`—`})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Notify me when a stage asks`}),(0,q.jsx)(`p`,{children:`A held stage is invisible if this window is closed. A system notification is the only thing that reaches you.`})]}),(0,q.jsxs)(`select`,{className:`select`,value:n,onChange:e=>void T(e.target.value),children:[(0,q.jsx)(`option`,{value:`system`,children:`System notification`}),(0,q.jsx)(`option`,{value:`off`,children:`Nothing`})]})]}),n===`system`&&m===`denied`?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-xs)`,padding:`var(--spacing-2) 0`},children:`Notifications blocked — enable in browser settings`}):null]})]})}function Ib({onComplete:e}){let[t,n]=(0,v.useState)(!0),[r,i]=(0,v.useState)(null),[a,o]=(0,v.useState)(null),[s,c]=(0,v.useState)(!1),[l,u]=(0,v.useState)(`sf_owned`),[d,f]=(0,v.useState)(`offer`),[p,m]=(0,v.useState)(!1),[h,g]=(0,v.useState)([]),[_,y]=(0,v.useState)({}),[b,x]=(0,v.useState)(null),[S,C]=(0,v.useState)(null),[w,T]=(0,v.useState)(``),[E,D]=(0,v.useState)(null);(0,v.useEffect)(()=>{(async()=>{n(!0),i(null);try{let e=await Vn();c(e.piHomeUsable);let t=ev(e.piHomeUsable);u(t),e.piHomeUsable?f(`offer`):(f(`keys`),await O())}catch(e){i(e instanceof Error?e.message:String(e))}finally{n(!1)}})()},[]);async function O(){let e=(await Bn()).providers.filter(e=>tv(e)||xb(e));g(e);let t={};await Promise.all(e.map(async e=>{try{let{provider:n}=await Hn(e.id);t[e.id]=n}catch{t[e.id]=void 0}})),y(t)}async function k(){m(!0),i(null);try{if(await Xn(l),l===`pi_home`){e();return}await O(),f(`keys`)}catch(e){i(e instanceof Error?e.message:String(e))}finally{m(!1)}}async function A(e){let t=w.trim();if(!t){i(`Paste an API key to connect.`);return}D(e),i(null);try{await Xn(`sf_owned`)}catch(e){D(null),i(e instanceof Error?e.message:String(e));return}let n=await Un(e,t);if(D(null),!n.ok){i(n.error);return}T(``),x(null),y(t=>({...t,[e]:n.provider}))}let j=Object.values(_).some(e=>e?.configured);return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Connect providers`}),(0,q.jsx)(`p`,{children:Q_})]})}),t?(0,q.jsx)(`p`,{className:`muted`,children:`Checking for an existing Pi login…`}):null,r?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`,marginBottom:`var(--spacing-4)`},children:r}):null,a?(0,q.jsx)(`p`,{style:{color:`var(--color-text-secondary)`,marginBottom:`var(--spacing-4)`},children:a}):null,!t&&d===`offer`?(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Credential source`})}),(0,q.jsx)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:s?`Usable Pi credentials were found on this machine. Reuse them, or set up keys inside Stageflow.`:`No usable Pi login was detected. Set up credentials in Stageflow.`}),(0,q.jsxs)(`div`,{className:`theme-picks`,role:`radiogroup`,"aria-label":`Credential source`,children:[(0,q.jsxs)(`button`,{type:`button`,className:`theme-pick`,"aria-pressed":l===`pi_home`?`true`:`false`,disabled:!s,onClick:()=>u(`pi_home`),children:[(0,q.jsx)(`strong`,{children:`Use existing Pi login`}),(0,q.jsx)(`span`,{children:`Reuse ~/.pi credentials without re-entering keys`})]}),(0,q.jsxs)(`button`,{type:`button`,className:`theme-pick`,"aria-pressed":l===`sf_owned`?`true`:`false`,onClick:()=>u(`sf_owned`),children:[(0,q.jsx)(`strong`,{children:`Set up in Stageflow`}),(0,q.jsx)(`span`,{children:`Paste API keys or complete Pi OAuth in an SF-owned store`})]})]}),(0,q.jsx)(`div`,{className:`form-actions`,style:{marginTop:`var(--spacing-4)`},children:(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:p||!s&&l===`pi_home`,onClick:()=>void k(),children:p?`Saving…`:`Continue`})})]}):null,!t&&d===`keys`?(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Providers`})}),(0,q.jsx)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:`Connect at least one provider with an API key or Pi OAuth / subscription login.`}),h.length===0?(0,q.jsx)(`p`,{className:`muted`,children:`No connectable providers are available from Pi right now.`}):h.map(e=>(0,q.jsx)(wb,{provider:e,status:_[e.id],connecting:b===e.id,oauthing:S===e.id,apiKeyDraft:w,rowBusy:E===e.id,showDisconnect:!1,onSetConnecting:x,onSetOauthing:C,onApiKeyChange:T,onConnectSubmit:e=>void A(e),onDisconnect:()=>void 0,onOauthComplete:(t,n)=>{C(null),o(n??null),t?y(n=>({...n,[e.id]:t})):O()},onOauthDismiss:()=>C(null)},e.id)),(0,q.jsxs)(`div`,{className:`form-actions`,style:{marginTop:`var(--spacing-4)`},children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:!j,onClick:e,children:`Continue to console`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:e,children:`Skip for now`})]})]}):null]})}var Lb=null;function Rb(e,t){e.currentIndex=0,e.wipContextDeps=null,e.wipCommitCallbacks=[];let n=Lb;Lb=e;try{if(t(),e.isFirstRender=!1,e.cells.length!==e.currentIndex)throw Error(`Rendered ${e.currentIndex} hooks but expected ${e.cells.length}. Hooks must be called in the exact same order in every render.`)}finally{Lb=n}}function zb(){if(!Lb)throw Error(`No resource fiber available`);return Lb}function Bb(){return Lb}var Vb=typeof process<`u`&&!1,Hb=e=>({version:0,committedVersion:0,dispatchUpdate:e,changelog:[],committedLog:[],unsettledCount:0,rollbackCallbacks:[]}),Ub=e=>{e.committedVersion=e.version;for(let t of e.changelog)t.logged=!1,t.settled||(t.settled=!0,e.unsettledCount--),e.committedLog.push(t);e.changelog.length=0,e.unsettledCount===0&&(e.committedLog.length=0),e.rollbackCallbacks.length=0},Wb=(e,t)=>{let n=e.version>t;if(e.version=t,n){for(let t=0;t<e.rollbackCallbacks.length;t++)e.rollbackCallbacks[t]();if(e.rollbackCallbacks.length=0,t<=e.committedVersion){let n=[];for(;e.committedVersion-n.length>t;){let t=e.committedLog.pop();if(t===void 0){if(Vb)throw Error(`tap: committed history is shorter than the replay base.`);break}Jb(t.fiber,t.cell),t.cell.workInProgress=t.prevState,n.push({record:t,prevState:t.prevState,eagerState:t.eagerState,hasEagerState:t.hasEagerState})}if(n.length>0){let t=e.committedVersion;qb(e,()=>{for(let t=n.length-1;t>=0;t--){let r=n[t];r.record.prevState=r.prevState,r.record.eagerState=r.eagerState,r.record.hasEagerState=r.hasEagerState,e.committedLog.push(r.record)}e.committedVersion=t})}e.committedVersion=t;for(let t of e.changelog)t.logged=!1;e.changelog.length=0}else{for(;e.committedVersion+e.changelog.length>t;)e.changelog.pop().logged=!1;for(let t=0;t<e.changelog.length;t++)Gb(e.changelog[t]);Ub(e)}}},Gb=e=>{Jb(e.fiber,e.cell),e.queued||(e.queued=!0,(e.cell.queue??=[]).push(e))},Kb=(e,t)=>{e.wipCommitCallbacks.push(t)},qb=(e,t)=>{e.rollbackCallbacks.push(t)},Jb=(e,t)=>{t.isDirty||(t.isDirty=!0,e.markDirty?.(),qb(e.root,()=>{if(t.queue!==null){for(let e of t.queue)e.queued=!1;t.queue=null}t.workInProgress=t.current,t.isDirty=!1}))},Yb=Symbol.for(`react.memo_cache_sentinel`),Xb=e=>Array(e).fill(Yb),Zb=(e,t)=>{let n=e.memoCache,r=n.workInProgress;if(r===null){let t=n.current;r=t===null?[]:t.map(e=>e.slice()),n.workInProgress=r,qb(e.root,()=>{n.workInProgress=null})}let i=n.index++,a=r[i];return a===void 0?(a=Xb(t),r[i]=a):Vb&&a.length!==t&&console.error(`Expected a constant size argument for each invocation of c(). The previous cache was allocated with size ${a.length} but size ${t} was requested.`),a},Qb=e=>Zb(zb(),e),$b=v.default.__COMPILER_RUNTIME?.c??(e=>(0,v.useMemo)(()=>{let t=Xb(e);return t[Yb]=!0,t},[])),ex=()=>Bb()!==null,$=e=>ex()?Qb(e):$b(e),tx=(e,...t)=>Object.assign(Object.create(null),e,...t),nx=()=>{throw Error(`Rendered more hooks than during the previous render. Hooks must be called in the exact same order in every render.`)},rx=()=>{throw Error(`Hook order changed between renders`)},ix=e=>({type:e,setup:void 0,setupDeps:void 0,cleanup:void 0,deps:null,generation:0});function ax(e,t,n){let r=zb(),i=r.currentIndex++,a=r.cells[i],o=a===void 0?ix(n):a.type===n?a:rx();if(a===void 0&&(r.isFirstRender||nx(),r.cells[i]=o,n===`insertion`?(r.insertionCells??=[]).push(o):r.effectCells.push(o)),o.deps!==null&&!!t!=!!o.deps)throw Error(`useEffect called with and without dependencies across re-renders`);Kb(r,()=>{o.setup=e,o.setupDeps=t,o.generation++})}function ox(e,t){ax(e,t,`effect`)}var sx=(e,t)=>{Vb&&e.length!==t.length&&console.error(`The final argument passed to a hook changed size between renders. The order and size of this array must remain constant.
118
+ `),n=t===-1?e:e.slice(0,t);if(n.length<=Eh){let r=(t===-1?``:e.slice(t+1)).replace(/^\n+/,``);return{preview:n,hasMore:r.trim().length>0,rest:r}}let{shown:r,cutIndex:i}=Dh(n,Eh);return{preview:`${r}…`,hasMore:!0,rest:e.slice(i).replace(/^\n+/,``)}}function kh(e){if(e<1e3)return`<1s`;let t=Math.round(e/1e3);return t<60?`${t}s`:`${Math.floor(t/60)}m ${t%60}s`}function Ah(e,t){if(e.kind!==`tool`||!e.startedAt)return;let n=Date.parse(e.startedAt);if(Number.isNaN(n))return;if(e.status===`running`)return Math.max(0,t-n);if(!e.finishedAt)return;let r=Date.parse(e.finishedAt);if(!Number.isNaN(r))return Math.max(0,r-n)}function jh(e){return e.status===`error`?`failed`:e.status===`running`?`running`:`succeeded`}var Mh={read:{key:`file_path`,isPath:!0},write:{key:`file_path`,isPath:!0},edit:{key:`file_path`,isPath:!0},notebookedit:{key:`notebook_path`,isPath:!0},bash:{key:`command`,isPath:!1},grep:{key:`pattern`,isPath:!1},glob:{key:`pattern`,isPath:!1},webfetch:{key:`url`,isPath:!1},websearch:{key:`query`,isPath:!1}},Nh=new Set([`read`]);function Ph(e){if(e)try{let t=JSON.parse(e);return t&&typeof t==`object`?t:void 0}catch{return}}function Fh(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Ih(e,t){let n=Ph(e)?.[t];if(typeof n==`string`)return n;if(!e)return;let r=e.match(RegExp(`"${Fh(t)}"\\s*:\\s*"((?:[^"\\\\]|\\\\.)*)"`));return r?r[1]:void 0}function Lh(e){return e.split(`/`).pop()||e}function Rh(e){let t=Mh[e.name.toLowerCase()];if(!t)return e.name;let n=Ih(e.args,t.key);return typeof n!=`string`||!n.trim()?e.name:`${e.name} ${t.isPath?Lh(n):n}`}function zh(e){if(e.status===`running`)return e.progressPreview;if(!(e.status===`complete`&&Nh.has(e.name.toLowerCase())))return e.result}function Bh(e,t){return{id:t,kind:`tool`,label:Rh(e),status:jh(e),detail:zh(e),at:e.at,startedAt:e.startedAt,finishedAt:e.status===`running`?void 0:e.at,defaultExpanded:!1}}function Vh(e,t){return{id:t,kind:`message`,label:e.role??`message`,status:`succeeded`,detail:e.text?.trim(),at:e.at,defaultExpanded:!1}}function Hh(e,t,n){return{id:n,kind:e,label:oh(t),status:e===`system`&&t.event===`failed`?`failed`:`succeeded`,detail:ch(t),at:t.at,defaultExpanded:!1,sourceEvent:e===`system`?t.event:void 0}}function Uh(e){let t=Sh(e),n=[],r=0;for(let e of t){if(e.kind===`tools`){for(let t of e.calls)n.push(Bh(t,`step-${r}`)),r+=1;continue}let t=`step-${r}`;r+=1,e.kind===`message`?n.push(Vh(e.event,t)):e.kind===`operator_prompt`?n.push(Hh(`operator_prompt`,e.event,t)):e.kind===`operator_answer`?n.push(Hh(`operator_answer`,e.event,t)):n.push(Hh(`system`,e.event,t))}let i=wh(n);for(let e of n)e.defaultExpanded=e.status===`running`||e.id===i;return n}function Wh({step:e,now:t,isOpen:n,onToggle:r}){let i=Ah(e,t),{preview:a,hasMore:o,rest:s}=e.detail?Oh(e.detail):{preview:``,hasMore:!1,rest:``};return(0,q.jsxs)(`div`,{id:`logstep-${e.id}`,className:`logstep logstep--${e.status}`,children:[(0,q.jsxs)(`button`,{type:`button`,className:`logstep__row${o?``:` logstep__row--static`}`,disabled:!o,"aria-expanded":o?n:void 0,onClick:o?()=>r(!n):void 0,children:[(0,q.jsx)(fa,{icon:`chevronDown`,size:`sm`,className:`logstep__chevron${o?n?` logstep__chevron--open`:``:` logstep__chevron--hidden`}`}),(0,q.jsx)(`span`,{className:`dot dot--${e.status} logstep__dot`}),(0,q.jsxs)(`span`,{className:`logstep__text`,children:[(0,q.jsxs)(`span`,{className:`logstep__label-row`,children:[(0,q.jsx)(`span`,{className:`logstep__label`,children:e.label}),i===void 0?null:(0,q.jsx)(`span`,{className:`logstep__duration`,children:kh(i)})]}),a?(0,q.jsx)(`span`,{className:`logstep__preview`,children:a}):null]})]}),o&&n?(0,q.jsx)(`pre`,{className:`logstep__detail`,children:s}):null]})}function Gh(e){let t=document.getElementById(`logstep-${e}`);t&&(t.scrollIntoView({behavior:`smooth`,block:`center`}),t.classList.add(`logstep--highlight`),window.setTimeout(()=>t.classList.remove(`logstep--highlight`),1500))}function Kh({events:e,headerAction:t}){let n=Uh(e),r=Date.now(),i=wh(n),a=Th(n,i),[o,s]=(0,v.useState)({});return(0,q.jsxs)(`div`,{className:`stream`,style:{height:`100%`},children:[(0,q.jsxs)(`header`,{className:`stream__head`,children:[(0,q.jsx)(`h3`,{className:`stream__name`,children:`Logs`}),t?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`topbar__spacer`}),(0,q.jsx)(`div`,{className:`stream__head-trail`,children:t})]}):null]}),(0,q.jsx)(`div`,{className:`stream__body`,children:n.length===0?(0,q.jsx)(`p`,{className:`muted`,children:`No activity yet.`}):(0,q.jsx)(`div`,{className:`logpanel`,children:n.map(e=>(0,q.jsx)(Wh,{step:e,now:r,isOpen:o[e.id]??e.defaultExpanded,onToggle:t=>s(n=>({...n,[e.id]:t}))},e.id))})}),a&&i?(0,q.jsxs)(`div`,{className:`logpanel__banner`,children:[(0,q.jsx)(`span`,{className:`logpanel__banner-text`,children:a}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:()=>{s(e=>{if(!(i in e))return e;let t={...e};return delete t[i],t}),Gh(i)},children:`Jump to failing step`})]}):null]})}function qh(e){let t=new Map;for(let n of e){let e=t.get(n.layer)??[];e.push(n),t.set(n.layer,e)}return[...t.keys()].sort((e,t)=>e-t).map(e=>(t.get(e)??[]).sort((e,t)=>e.layer_order-t.layer_order))}function Jh(e){return qh(e).flat()}function Yh(e,t,n,r=0){return{stageId:e,x:t*520,y:r+n*340,width:400,height:128,layerIndex:t,indexInLayer:n}}function Xh(e,t){return t<=1||e>=t?0:(t-e)/2*340}function Zh(e){let t=e?.plannedStageIds??[],n=e?.liveStageIds??[];if(t.length===0)return n;let r=new Set,i=[];for(let e of t)r.add(e),i.push(e);for(let e of n)r.has(e)||i.push(e);return i}function Qh(e,t){if(!e.nodes.length){let e=Zh(t);return{nodes:e.map((e,t)=>Yh(e,t,0)),edges:e.slice(1).map((t,n)=>({from:e[n],to:t}))}}let n=qh(e.nodes),r=n.reduce((e,t)=>Math.max(e,t.length),0);return{nodes:n.flatMap((e,t)=>{let n=Xh(e.length,r);return e.map((e,r)=>Yh(e.stage_id,t,r,n))}),edges:e.edges.map(e=>({from:e.from,to:e.to}))}}function $h(e){return e===`failed`}function eg(e){return e===`running`}function tg(e){if(e.status===`interrupted`)return!0;if(e.status!==`failed`)return!1;let t;for(let n of e.events)n.event===`failed`&&(t=n.reason);return typeof t==`string`&&t.startsWith(`stage timed out after `)}function ng(e,t){return e.retryingStageIds.has(t)||e.abandoningStageId===t||(e.resumingStageIds?.has(t)??!1)}function rg(e){let t={retryingStageIds:new Set,error:null},n=new Set,r=()=>t,i=()=>{for(let e of n)e()};return{getState:r,retry:async n=>{if(t.retryingStageIds.has(n))return;let r=new Set(t.retryingStageIds);r.add(n),t={retryingStageIds:r,error:null},i();try{await e.retry(n),await e.onSuccess()}catch(e){t={...t,error:e instanceof Error?e.message:String(e)}}finally{let e=new Set(t.retryingStageIds);e.delete(n),t={...t,retryingStageIds:e},i()}},clearError:()=>{t.error!==null&&(t={...t,error:null},i())},subscribe:e=>(n.add(e),()=>{n.delete(e)})}}function ig(e,t){let n=(0,v.useRef)(e);n.current=e;let r=(0,v.useRef)(t);r.current=t;let i=(0,v.useRef)(null);i.current===null&&(i.current=rg({retry:async e=>{await er(n.current,e)},onSuccess:()=>r.current()}));let a=i.current,[o,s]=(0,v.useState)(()=>a.getState());(0,v.useEffect)(()=>a.subscribe(()=>s(a.getState())),[a]);let c=(0,v.useCallback)(e=>void a.retry(e),[a]),l=(0,v.useCallback)(()=>a.clearError(),[a]);return{retryingStageIds:o.retryingStageIds,error:o.error,retry:c,clearError:l}}function ag(e){let t={resumingStageIds:new Set,error:null},n=new Set,r=()=>t,i=()=>{for(let e of n)e()};return{getState:r,resume:async n=>{if(t.resumingStageIds.has(n))return;let r=new Set(t.resumingStageIds);r.add(n),t={resumingStageIds:r,error:null},i();try{await e.resume(n),await e.onSuccess()}catch(e){t={...t,error:e instanceof Error?e.message:String(e)}}finally{let e=new Set(t.resumingStageIds);e.delete(n),t={...t,resumingStageIds:e},i()}},clearError:()=>{t.error!==null&&(t={...t,error:null},i())},subscribe:e=>(n.add(e),()=>{n.delete(e)})}}function og(e,t){let n=(0,v.useRef)(e);n.current=e;let r=(0,v.useRef)(t);r.current=t;let i=(0,v.useRef)(null);i.current===null&&(i.current=ag({resume:async e=>{await tr(n.current,e)},onSuccess:()=>r.current()}));let a=i.current,[o,s]=(0,v.useState)(a.getState);(0,v.useEffect)(()=>a.subscribe(()=>s(a.getState())),[a]);let c=(0,v.useCallback)(e=>{a.resume(e)},[a]);return{resumingStageIds:o.resumingStageIds,error:o.error,resume:c,clearError:a.clearError}}function sg(e){let t={abandoningStageId:null,error:null},n=!1,r=new Set,i=()=>t,a=()=>{for(let e of r)e()};return{getState:i,abandon:async r=>{if(!n&&(e.confirm?.(r)??window.confirm(`This stage will be marked failed. Retry stage will become available.`))){n=!0,t={abandoningStageId:r,error:null},a();try{await e.abandon(r),await e.onSuccess()}catch(e){t={...t,error:e instanceof Error?e.message:String(e)}}finally{n=!1,t={...t,abandoningStageId:null},a()}}},clearError:()=>{t.error!==null&&(t={...t,error:null},a())},subscribe:e=>(r.add(e),()=>{r.delete(e)})}}function cg(e,t){let n=(0,v.useRef)(e);n.current=e;let r=(0,v.useRef)(t);r.current=t;let i=(0,v.useRef)(null);i.current===null&&(i.current=sg({abandon:async e=>{await ir(n.current,e)},onSuccess:()=>r.current()}));let a=i.current,[o,s]=(0,v.useState)(()=>a.getState());(0,v.useEffect)(()=>a.subscribe(()=>s(a.getState())),[a]);let c=(0,v.useCallback)(e=>void a.abandon(e),[a]),l=(0,v.useCallback)(()=>a.clearError(),[a]);return{abandoningStageId:o.abandoningStageId,error:o.error,abandon:c,clearError:l}}var lg=.25,ug=1.8;function dg(e,t){return Math.abs(e.y+e.height/2-(t.y+t.height/2))<e.height*.75}function fg(e,t){let n=e.x+e.width/2,r=t.x+t.width/2;return Math.max(0,Math.round(Math.abs(r-n)/520)-1)*12}function pg(e,t,n,r,i){return`M${e} ${t} V${i} H${n} V${r}`}function mg(e,t){let n=e.y+e.height/2,r=t.y+t.height/2,i=fg(e,t);if(dg(e,t)){let n=e.x+e.width/2,r=e.y+e.height,a=t.x+t.width/2,o=t.y+t.height;return pg(n,r,a,o,Math.max(r,o)+48+i)}if(r>=n){let n=e.x+e.width/2,r=e.y+e.height,a=t.x+t.width/2,o=t.y,s=o-r;return pg(n,r,a,o,s>=48?r+s/2:Math.max(r,o)+48+i)}let a=e.x+e.width/2,o=e.y,s=t.x+t.width/2,c=t.y;return pg(a,o,s,c,Math.min(o,c)-48-i)}function hg(e){let t=e.match(/[MLHVmlhv]|-?\d*\.?\d+/g);if(!t)return[];let n=[],r=0,i=0,a=0;for(;a<t.length;){let e=t[a++].toUpperCase();e===`M`||e===`L`?(r=Number(t[a++]),i=Number(t[a++]),n.push({x:r,y:i})):e===`H`?(r=Number(t[a++]),n.push({x:r,y:i})):e===`V`&&(i=Number(t[a++]),n.push({x:r,y:i}))}return n}function gg(e,t){let n=hg(mg(e,t));if(n.length===0)return{x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),width:Math.abs(t.x-e.x)+Math.max(e.width,t.width),height:Math.abs(t.y-e.y)+Math.max(e.height,t.height)};let r=n.map(e=>e.x),i=n.map(e=>e.y),a=Math.min(...r),o=Math.max(...r),s=Math.min(...i),c=Math.max(...i);return{x:a,y:s,width:o-a,height:c-s}}function _g(e,t,n=4){return Math.hypot(e,t)>n}function vg(e,t=24){if(e.length===0)return{x:0,y:0,width:0,height:0};let n=1/0,r=1/0,i=-1/0,a=-1/0;for(let t of e)n=Math.min(n,t.x),r=Math.min(r,t.y),i=Math.max(i,t.x+t.width),a=Math.max(a,t.y+t.height);return{x:n-t,y:r-t,width:i-n+t*2,height:a-r+t*2}}function yg(e,t){if(e.width<=0||e.height<=0||t.width<=0||t.height<=0)return{panX:0,panY:0,zoom:1};let n=t.width-56,r=t.height-56;if(n<=0||r<=0)return{panX:0,panY:0,zoom:1};let i=Math.max(lg,Math.min(1.1,ug,n/e.width,r/e.height));return{zoom:i,panX:56+(n-e.width*i)/2-e.x*i,panY:56+(r-e.height*i)/2-e.y*i}}function bg(e,t){return e&&!t}function xg(e,t){return e===t?null:e}function Sg(e,t){return!!e.find(e=>e.stage_id===t)?.envelope}function Cg(e,t){return e===`waiting_for_input`||e===`pending`||e===`skipped`?null:e===`running`?`abandon`:e===`failed`||t?`retry`:null}function wg(e){switch(e){case`free_text`:return`free text`;case`confirm`:return`confirm`;case`multi_question`:return`multi-question`;case`artifact_backed`:return`artifact`}}function Tg(e,t,n,r){let i=Math.max(48,(n-e)/2);return`M${e} ${t} C${e+i} ${t} ${n-i} ${r} ${n} ${r}`}function Eg(e,t){return t?`abandoned`:e===`interrupted`?`waiting_for_input`:e}function Dg({layout:e,stages:t,nodeChrome:n,selectedStageId:r,onSelectStage:i,onDeselect:a,retryingStageIds:o,onRetryStage:s,resumingStageIds:c,onResumeStage:l,abandoningStageId:u=null,onAbandonStage:d,runId:f,showHint:p,feedbackOverlays:m=[]}){let h=(0,v.useRef)(null),g=(0,v.useRef)(!1),_=(0,v.useRef)(!1),y=(0,v.useRef)({width:0,height:0}),b=(0,v.useRef)(null),[x,S]=(0,v.useState)({width:0,height:0}),[C,w]=(0,v.useState)({x:0,y:0}),[T,E]=(0,v.useState)(1),[D,O]=(0,v.useState)(!1),k=new Map(t.map(e=>[e.stage_id,e])),A=new Map(n.map(e=>[e.stageId,e])),j=o??new Set,M=c??new Set;(0,v.useLayoutEffect)(()=>{let e=h.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect();S({width:t.width,height:t.height})};t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]),(0,v.useLayoutEffect)(()=>{g.current=!1,_.current=!1,y.current={width:0,height:0}},[f]);let N=()=>{let t=[...e.nodes];for(let n of m){let r=e.nodes.find(e=>e.stageId===n.from),i=e.nodes.find(e=>e.stageId===n.to);!r||!i||t.push(gg(r,i))}return vg(t)};(0,v.useLayoutEffect)(()=>{if(e.nodes.length===0||x.width===0||x.height===0)return;if(!g.current){let e=yg(N(),x);w({x:e.panX,y:e.panY}),E(e.zoom),g.current=!0,y.current={width:x.width,height:x.height};return}if(y.current.width===x.width&&y.current.height===x.height||(y.current={width:x.width,height:x.height},!bg(!0,_.current)))return;let t=yg(N(),x);w({x:t.panX,y:t.panY}),E(t.zoom)},[m,e.nodes,x.height,x.width]);let P=(e,t)=>{let n=t??{x:x.width/2,y:x.height/2},r=Math.max(lg,Math.min(ug,T*e)),i=(n.x-C.x)/T,a=(n.y-C.y)/T;_.current=!0,w({x:n.x-i*r,y:n.y-a*r}),E(r)},F=()=>{let t=h.current;if(!t||e.nodes.length===0)return;let n=t.getBoundingClientRect(),r=yg(N(),{width:n.width,height:n.height});w({x:r.panX,y:r.panY}),E(r.zoom),_.current=!1,g.current=!0,y.current={width:n.width,height:n.height}},I=e=>{e.target.closest(`.gnode`)||(e.currentTarget.setPointerCapture(e.pointerId),O(!0),b.current={id:e.pointerId,x:e.clientX,y:e.clientY,panX:C.x,panY:C.y})},L=e=>{let t=b.current;if(!t||t.id!==e.pointerId)return;let n=e.clientX-t.x,r=e.clientY-t.y;_g(n,r)&&(_.current=!0),w({x:t.panX+n,y:t.panY+r})},R=e=>{let t=b.current;if(!t||t.id!==e.pointerId)return;let n=e.clientX-t.x,r=e.clientY-t.y;b.current=null,O(!1),_g(n,r)||a()};return(0,q.jsxs)(`div`,{className:`graph-view`,children:[(0,q.jsxs)(`svg`,{className:`graph-grid`,"aria-hidden":`true`,width:`100%`,height:`100%`,children:[(0,q.jsx)(`defs`,{children:(0,q.jsx)(`pattern`,{id:`spatial-dots`,width:`24`,height:`24`,patternUnits:`userSpaceOnUse`,children:(0,q.jsx)(`circle`,{cx:`1`,cy:`1`,r:`1`,fill:`var(--color-border)`})})}),(0,q.jsx)(`rect`,{width:`100%`,height:`100%`,fill:`url(#spatial-dots)`})]}),(0,q.jsx)(`div`,{ref:h,className:D?`graph-stage dragging`:`graph-stage`,onPointerDown:I,onPointerMove:L,onPointerUp:R,onPointerCancel:R,onWheel:e=>{e.preventDefault();let t=e.currentTarget.getBoundingClientRect();if(e.metaKey||e.ctrlKey){P(e.deltaY<0?1.08:.92,{x:e.clientX-t.left,y:e.clientY-t.top});return}_.current=!0,w(t=>({x:t.x-e.deltaX,y:t.y-e.deltaY}))},children:(0,q.jsxs)(`svg`,{className:`graph-svg`,xmlns:`http://www.w3.org/2000/svg`,children:[(0,q.jsxs)(`defs`,{children:[(0,q.jsx)(`marker`,{id:`spatial-arrow`,markerWidth:`8`,markerHeight:`8`,refX:`7`,refY:`3`,orient:`auto`,children:(0,q.jsx)(`path`,{d:`M0,0 L7,3 L0,6 Z`,fill:`var(--color-text-disabled)`})}),(0,q.jsx)(`marker`,{id:`spatial-arrow-active`,markerWidth:`8`,markerHeight:`8`,refX:`7`,refY:`3`,orient:`auto`,children:(0,q.jsx)(`path`,{d:`M0,0 L7,3 L0,6 Z`,fill:`var(--color-accent)`})}),(0,q.jsx)(`marker`,{id:`spatial-arrow-feedback`,markerWidth:`8`,markerHeight:`8`,refX:`7`,refY:`3`,orient:`auto`,children:(0,q.jsx)(`path`,{d:`M0,0 L7,3 L0,6 Z`,fill:`var(--color-warning)`})})]}),(0,q.jsxs)(`g`,{className:`world`,transform:`translate(${C.x} ${C.y}) scale(${T})`,children:[e.edges.map(n=>{let r=e.nodes.find(e=>e.stageId===n.from),i=e.nodes.find(e=>e.stageId===n.to);if(!r||!i)return null;let a=r.height,o=i.height,s=r.x+r.width,c=r.y+a/2,l=i.x,u=i.y+o/2,d=Sg(t,n.from);return(0,q.jsx)(`g`,{children:(0,q.jsx)(`path`,{className:d?`edge handoff`:`edge`,d:Tg(s,c,l,u),markerEnd:d?`url(#spatial-arrow-active)`:`url(#spatial-arrow)`})},`${n.from}->${n.to}`)}),m.map(t=>{let n=e.nodes.find(e=>e.stageId===t.from),r=e.nodes.find(e=>e.stageId===t.to);return!n||!r?null:(0,q.jsx)(`path`,{className:t.kind===`deferred`?`edge feedback feedback--deferred`:t.kind===`policy`?`edge feedback feedback--policy`:`edge feedback`,d:mg(n,r),markerEnd:`url(#spatial-arrow-feedback)`},`feedback:${t.kind}:${t.from}->${t.to}`)}),e.nodes.map(e=>{let t=k.get(e.stageId),n=A.get(e.stageId),a=t?.status??n?.status??`pending`,o=t?ci(t.events):!1;return(0,q.jsx)(Og,{node:e,status:a,abandoned:o,chrome:n,selected:r===e.stageId,busy:ng({retryingStageIds:j,abandoningStageId:u,resumingStageIds:M},e.stageId),retrying:j.has(e.stageId),resuming:M.has(e.stageId),abandoning:u===e.stageId,snapshot:t,onSelectStage:i,onRetryStage:s,onResumeStage:l,onAbandonStage:d},e.stageId)})]})]})}),(0,q.jsxs)(`div`,{className:`canvas-tools`,children:[(0,q.jsx)(`button`,{type:`button`,className:`icon`,title:`Zoom out`,"aria-label":`Zoom out`,onClick:()=>P(.87),children:`−`}),(0,q.jsxs)(`span`,{className:`zoom`,"aria-live":`polite`,children:[Math.round(T*100),`%`]}),(0,q.jsx)(`button`,{type:`button`,className:`icon`,title:`Zoom in`,"aria-label":`Zoom in`,onClick:()=>P(1.15),children:`+`}),(0,q.jsx)(`span`,{className:`divider`}),(0,q.jsx)(`button`,{type:`button`,className:`icon fit-btn`,onClick:F,children:`Fit run`})]}),p?(0,q.jsx)(`div`,{className:`canvas-hint`,children:`Stages become selectable when they start.`}):null]})}function Og({node:e,status:t,abandoned:n,chrome:r,selected:i,busy:a,retrying:o,resuming:s,abandoning:c,snapshot:l,onSelectStage:u,onRetryStage:d,onResumeStage:f,onAbandonStage:p}){let m=t!==`pending`,h=Cg(t,n),g=l!==void 0&&tg(l)&&f!==void 0,_=h===`retry`&&$h(t)&&d,v=h===`abandon`&&eg(t)&&p,y=Eg(t,n),b=[r?.isFeedbackSource?`feedback-source`:``,r?.isFeedbackTarget?`feedback-target`:``,r?.isSuperseded?`superseded`:``].filter(Boolean).join(` `),x=n?li():pi(t),S=r?.title??e.stageId,C=r?xg(r.kicker,r.title):null,w=[];r?.titleOnly||(w.push(x),r?.isSuperseded&&w.push(`superseded`),r?.readinessLine&&t===`pending`&&w.push(r.readinessLine),t===`waiting_for_input`?(r?.gateKinds?.length&&w.push(r.gateKinds.map(wg).join(` · `)),r?.promptSummary&&w.push(r.promptSummary)):r?.meta&&w.push(r.meta));let T=()=>{m&&u(e.stageId)};return(0,q.jsxs)(`g`,{className:`gnode ${y}${i?` selected`:``}${b?` ${b}`:``}`,"data-id":e.stageId,"data-waiting":r?.isWaitingAttention?`true`:void 0,"data-feedback-source":r?.isFeedbackSource?`true`:void 0,"data-feedback-target":r?.isFeedbackTarget?`true`:void 0,"data-superseded":r?.isSuperseded?`true`:void 0,transform:`translate(${e.x},${e.y})`,children:[(0,q.jsx)(`rect`,{className:`node-box`,x:0,y:0,width:e.width,height:128,rx:12,ry:12}),(0,q.jsx)(`circle`,{className:`port`,cx:-4,cy:64,r:4}),(0,q.jsx)(`circle`,{className:`port`,cx:e.width+4,cy:64,r:4}),m?(0,q.jsx)(`foreignObject`,{x:0,y:0,width:e.width,height:128,children:(0,q.jsxs)(`button`,{type:`button`,className:`gnode__hit`,onClick:T,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),T())},children:[C?(0,q.jsx)(`span`,{className:`gnode__kicker`,children:C}):null,(0,q.jsxs)(`span`,{className:`gnode__title`,children:[S,(0,q.jsx)(Sl,{count:r?.attemptCount})]}),w.length>0?(0,q.jsx)(`span`,{className:`gnode__meta`,children:w.join(` · `)}):null]})}):(0,q.jsxs)(`g`,{className:`gnode__static`,children:[C?(0,q.jsx)(`text`,{className:`kicker`,x:16,y:22,children:C}):null,(0,q.jsx)(`text`,{className:`node-title`,x:16,y:C?44:32,children:S}),w.length>0?(0,q.jsx)(`text`,{className:`node-meta`,x:16,y:66,children:w.join(` · `)}):null]}),(0,q.jsx)(Ag,{status:t,abandoned:n,cx:e.width-26,cy:26,showResume:!!g,showRetry:!!_,showAbandon:!!v,busy:a,resumeLabel:s?`Resuming…`:`Resume session`,retryLabel:o?`Retrying…`:`Retry stage`,abandonLabel:c?`Abandoning…`:`Abandon stage`,onResume:g?()=>{f?.(e.stageId)}:void 0,onRetry:_?()=>{d?.(e.stageId)}:void 0,onAbandon:v?()=>{p?.(e.stageId)}:void 0})]})}function kg({kind:e,cx:t,cy:n,busy:r,label:i,onActivate:a}){return(0,q.jsxs)(`g`,{className:`node-action-btn node-${e}${r?` is-busy`:``}`,role:`button`,tabIndex:r?-1:0,"aria-label":i,"aria-disabled":r||void 0,onClick:e=>{r||(e.stopPropagation(),a?.())},onKeyDown:e=>{r||(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.stopPropagation(),a?.())},children:[(0,q.jsx)(`title`,{children:i}),(0,q.jsx)(`circle`,{className:`action-bg`,cx:t,cy:n,r:11}),e===`retry`?(0,q.jsx)(`path`,{className:`action-icon`,d:[`M${t-3.2} ${n-2.2}`,`A4.2 4.2 0 1 0 ${t+.2} ${n-4}`,`M${t+.2} ${n-7.2}`,`L${t+.2} ${n-3.6}`,`L${t-3.4} ${n-3.6}`].join(` `)}):e===`resume`?(0,q.jsx)(`path`,{className:`action-icon`,d:`M${t-2.2} ${n-3.6} L${t-2.2} ${n+3.6} L${t+4.2} ${n} Z`}):(0,q.jsx)(`rect`,{className:`action-icon`,x:t-3.5,y:n-3.5,width:7,height:7,rx:1.25})]})}function Ag({status:e,abandoned:t,cx:n,cy:r,showResume:i,showRetry:a,showAbandon:o,busy:s,resumeLabel:c,retryLabel:l,abandonLabel:u,onResume:d,onRetry:f,onAbandon:p}){let m=r+28,h=i?m+26:m;return(0,q.jsxs)(`g`,{className:`node-status`,children:[e===`succeeded`?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`circle`,{cx:n,cy:r,r:11,fill:`var(--color-success)`}),(0,q.jsx)(`path`,{d:`M${n-4} ${r} l3 3 l6-7`,fill:`none`,stroke:`var(--color-background-surface)`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`})]}):null,e===`running`?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`circle`,{className:`node-spin`,cx:n,cy:r,r:11,fill:`none`,stroke:`var(--color-border)`,strokeWidth:2}),(0,q.jsx)(`circle`,{className:`node-spin`,cx:n,cy:r,r:11,fill:`none`,stroke:`var(--color-accent)`,strokeWidth:2.25,strokeLinecap:`round`,strokeDasharray:`18 52`})]}):null,e===`waiting_for_input`||e===`interrupted`?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`circle`,{cx:n,cy:r,r:10,fill:`none`,stroke:`var(--color-warning)`,strokeWidth:2,strokeDasharray:`4 3`}),(0,q.jsx)(`text`,{x:n,y:r+4,textAnchor:`middle`,fill:`var(--color-warning)`,fontSize:11,fontWeight:700,children:`!`})]}):null,e===`failed`&&!t?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`circle`,{cx:n,cy:r,r:11,fill:`var(--color-error)`}),(0,q.jsx)(`text`,{x:n,y:r+4,textAnchor:`middle`,fill:`var(--color-background-surface)`,fontSize:12,fontWeight:700,children:`!`})]}):null,t?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`circle`,{cx:n,cy:r,r:11,fill:`var(--color-error)`}),(0,q.jsx)(`rect`,{x:n-5,y:r-1.5,width:10,height:3,rx:1,fill:`var(--color-background-surface)`})]}):null,e===`pending`||e===`skipped`?(0,q.jsx)(`circle`,{cx:n,cy:r,r:10,fill:`none`,stroke:`var(--color-text-disabled)`,strokeWidth:1.5}):null,i?(0,q.jsx)(kg,{kind:`resume`,cx:n,cy:m,busy:s,label:c,onActivate:d}):null,a?(0,q.jsx)(kg,{kind:`retry`,cx:n,cy:h,busy:s,label:l,onActivate:f}):null,o?(0,q.jsx)(kg,{kind:`abandon`,cx:n,cy:m,busy:s,label:u,onActivate:p}):null]})}var jg=64;function Mg(e){return e.scrollHeight-e.scrollTop-e.clientHeight<jg}function Ng({stageName:e,status:t,trailing:n,children:r,composer:i,autoScroll:a,scrollKey:o}){let s=(0,v.useRef)(null),c=(0,v.useRef)(!0);(0,v.useEffect)(()=>{a&&(c.current=!0)},[a]),(0,v.useEffect)(()=>{if(!a||!c.current)return;let e=s.current;e&&(e.scrollTop=e.scrollHeight)},[a,o]);function l(e){c.current=Mg(e.currentTarget)}return(0,q.jsxs)(`div`,{className:`stream`,style:{height:`100%`},children:[(0,q.jsxs)(`header`,{className:`stream__head`,children:[(0,q.jsx)(`h3`,{className:`stream__name`,children:e}),t,n?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`topbar__spacer`}),(0,q.jsx)(`div`,{className:`stream__head-trail`,children:n})]}):null]}),(0,q.jsx)(`div`,{ref:s,className:`stream__body`,onScroll:l,children:(0,q.jsx)(`div`,{className:`thread`,children:r})}),i]})}function Pg(e){switch(e){case`passed`:return`passed`;case`failed`:return`failed`;case`running`:return`running`;case`skipped`:return`skipped`;default:return`pending`}}function Fg(e){let t=e.checks.length===1?`check`:`checks`;return`Attempt ${e.attempt} · ${e.status} · verification ${e.verification_outcome.replace(`_`,` `)} · ${e.checks.length} ${t}`}function Ig({check:e}){let t=e.evidence===void 0?void 0:JSON.stringify(e.evidence,null,2);return(0,q.jsxs)(`div`,{className:`verification-check`,children:[(0,q.jsxs)(`div`,{className:`verification-check__summary`,children:[(0,q.jsxs)(`span`,{className:`status status--${e.status===`passed`?`succeeded`:e.status===`failed`?`failed`:`running`}`,children:[(0,q.jsx)(`span`,{className:`dot dot--${e.status===`passed`?`succeeded`:e.status===`failed`?`failed`:`running`}`}),` `,Pg(e.status)]}),(0,q.jsx)(`code`,{children:e.check_id}),(0,q.jsx)(`span`,{className:`muted`,children:e.check_type})]}),t===void 0?null:(0,q.jsx)(Uc,{code:t,language:`json`,title:`Evidence`,size:`sm`,width:`100%`,maxHeight:260,container:`section`,isCollapsible:!0})]})}function Lg({history:e,error:t,recovering:n=!1,onRecover:r,onStop:i}){let[a,o]=(0,v.useState)(``);return t?(0,q.jsxs)(`div`,{className:`banner banner--warning`,children:[`Verification evidence unavailable: `,t]}):e===null||e.attempts.every(e=>e.checks.length===0)?null:(0,q.jsxs)(`section`,{className:`verification-history`,"aria-label":`Verification history`,children:[(0,q.jsxs)(`div`,{className:`verification-history__head`,children:[(0,q.jsx)(`strong`,{children:`Verification`}),(0,q.jsxs)(`span`,{className:`muted`,children:[e.attempts.length,` attempts`]})]}),e.attempts.map(t=>(0,q.jsx)(tl,{trigger:(0,q.jsx)(`span`,{className:`verification-history__attempt`,children:Fg(t)}),defaultIsOpen:t.attempt===e.attempts.length,children:(0,q.jsx)(`div`,{className:`verification-history__checks`,children:t.checks.length>0?t.checks.map(e=>(0,q.jsx)(Ig,{check:e},e.check_id)):(0,q.jsx)(`p`,{className:`muted`,children:`No completion checks ran in this attempt.`})})},t.attempt)),e.manual_recovery?.status===`available`?(0,q.jsxs)(`section`,{className:`manual-recovery`,"aria-label":`Manual recovery`,children:[(0,q.jsx)(`strong`,{children:`Manual recovery required`}),(0,q.jsx)(`p`,{className:`muted`,children:`This stage remains failed until an operator explicitly retries it or stops recovery.`}),(0,q.jsx)(`label`,{className:`manual-recovery__label`,htmlFor:`manual-recovery-guidance`,children:`Guidance for the retry (optional)`}),(0,q.jsx)(`textarea`,{id:`manual-recovery-guidance`,className:`manual-recovery__guidance`,value:a,maxLength:4e3,onChange:e=>o(e.target.value),placeholder:`Tell the agent what to address before it retries.`,disabled:n}),(0,q.jsxs)(`div`,{className:`manual-recovery__actions`,children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:n||r===void 0,onClick:()=>r?.(a),children:n?`Starting recovery…`:`Retry with guidance`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm btn--reject`,disabled:n||i===void 0,onClick:()=>i?.(),children:`Stop recovery`})]})]}):null,e.manual_recovery?.status===`stopped`?(0,q.jsx)(`p`,{className:`muted`,children:`Manual recovery was stopped by an operator.`}):null]})}var Rg=`Cancel this run? Enter a short reason (required):`,zg=`Cancelled from operator console`;function Bg(e){return e===`created`||e===`queued`||e===`running`}function Vg(e){return e===`succeeded`||e===`failed`||e===`cancelled`||e===`created`||e===`queued`||e===`running`}function Hg(e){return e===`created`||e===`queued`||e===`running`}function Ug(e,t=window.prompt.bind(window)){return t(`Type the run id to permanently delete it:\n${e}`)===e}function Wg(e){let t={cancelling:!1,error:null},n=!1,r=new Set,i=()=>t,a=()=>{for(let e of r)e()};return{getState:i,cancel:async()=>{if(n)return;let r=e.promptReason?e.promptReason():window.prompt(Rg,zg);if(r===null)return;let i=r.trim();if(i!==``){n=!0,t={cancelling:!0,error:null},a();try{await e.cancel(i),await e.onSuccess()}catch(e){t={...t,error:e instanceof Error?e.message:String(e)}}finally{n=!1,t={...t,cancelling:!1},a()}}},clearError:()=>{t.error!==null&&(t={...t,error:null},a())},subscribe:e=>(r.add(e),()=>{r.delete(e)})}}function Gg(e){let t={deleting:!1,error:null},n=!1,r=new Set,i=()=>t,a=()=>{for(let e of r)e()};return{getState:i,deleteRun:async r=>{if(!n&&(e.confirmTyped?.(r)??Ug(r))){n=!0,t={deleting:!0,error:null},a();try{await e.deleteRun(e.isActive),await e.onSuccess()}catch(e){t={...t,error:e instanceof Error?e.message:String(e)}}finally{n=!1,t={...t,deleting:!1},a()}}},clearError:()=>{t.error!==null&&(t={...t,error:null},a())},subscribe:e=>(r.add(e),()=>{r.delete(e)})}}function Kg(e,t){let n=(0,v.useRef)(e);n.current=e;let r=(0,v.useRef)(t);r.current=t;let i=(0,v.useRef)(null);i.current===null&&(i.current=Wg({cancel:async e=>{await ar(n.current,e)},onSuccess:()=>r.current()}));let a=i.current,[o,s]=(0,v.useState)(()=>a.getState());(0,v.useEffect)(()=>a.subscribe(()=>s(a.getState())),[a]);let c=(0,v.useCallback)(()=>void a.cancel(),[a]),l=(0,v.useCallback)(()=>a.clearError(),[a]);return{cancelling:o.cancelling,error:o.error,cancel:c,clearError:l}}function qg(e,t,n){let r=(0,v.useRef)(e);r.current=e;let i=(0,v.useRef)(n);i.current=n;let a=t!==void 0&&Hg(t),o=(0,v.useRef)(a);o.current=a;let s=(0,v.useRef)(null);s.current===null&&(s.current=Gg({deleteRun:async e=>{await or(r.current,{force:e})},onSuccess:()=>i.current(),get isActive(){return o.current}}));let c=s.current,[l,u]=(0,v.useState)(()=>c.getState());(0,v.useEffect)(()=>c.subscribe(()=>u(c.getState())),[c]);let d=(0,v.useCallback)(()=>void c.deleteRun(r.current),[c]),f=(0,v.useCallback)(()=>c.clearError(),[c]);return{deleting:l.deleting,error:l.error,deleteRun:d,clearError:f}}function Jg(e){let{readiness:t,blocked_by:n,status:r}=e;if(t===`blocked`)return n?.length?`Blocked on ${n.join(`, `)}`:`Blocked`;if(t===`skipped`)return`Skipped`;if(t===`ready`)return`Ready`;if((t!==`waiting`||r!==`waiting_for_input`)&&(t!==`interrupted`||r!==`interrupted`)){if(t===`interrupted`)return pi(`interrupted`);if(t===`succeeded`)return pi(`succeeded`);if(t===`failed`)return pi(`failed`);if(t===`running`)return pi(`running`)}}var Yg=`stageflow:envelope:`;function Xg(e){return`${Yg}${e}`}function Zg(e){if(!e.startsWith(Yg))return null;let t=e.slice(19);return t.length>0?t:null}function Qg(e,t){return`${e}->${t}`}var $g={deferred:3,replay:2,policy:1},e_=new Set([`scheduled`,`active`,`waiting_for_human`]);function t_(e,t,n){let r=new Map,i=e=>{let t=Qg(e.from,e.to),n=r.get(t);(!n||$g[e.kind]>$g[n.kind])&&r.set(t,e)};for(let e of n?.nodes??[]){let t=e.feedback_loop?.target;t&&i({from:e.stage_id,to:t,kind:`policy`})}e?.deferred_send_back?.target&&i({from:e.source_stage_id,to:e.deferred_send_back.target,kind:`deferred`});let a=!!e?.deferred_send_back?.target,o=e=>{for(let n of t??[])for(let{replay:t}of n.replays)t.status!==`superseded`&&t.status!==`failed`&&e(t.status)&&i({from:t.source_stage_id,to:t.target_stage_id,kind:`replay`})};return o(e=>e_.has(e)),![...r.values()].some(e=>e.kind===`replay`)&&!a&&o(e=>e===`completed`),e&&i({from:e.source_stage_id,to:e.policy.target,kind:`policy`}),[...r.values()]}function n_(e){let t=new Set;for(let n of e??[]){for(let e of n.fork_generations)if(e.status===`superseded`)for(let n of e.clone_stage_ids)t.add(n);for(let{stage_passes:e,fork_generations:r}of n.replays){for(let n of e)n.status===`superseded`&&t.add(n.stage_id);for(let e of r)if(e.status===`superseded`)for(let n of e.clone_stage_ids)t.add(n)}}return t}function r_(e,t){for(let n of t)if(n.status===`superseded`)for(let t of n.clone_stage_ids)e.add(t)}function i_(e){let t=new Set;for(let n of e??[]){r_(t,n.fork_generations);for(let e of n.replays)r_(t,e.fork_generations)}return t}function a_(e,t){return e.filter(e=>!t.has(e))}function o_(e,t){return t.size===0?e:{nodes:e.nodes.filter(e=>!t.has(e.stage_id)),edges:e.edges.filter(e=>!t.has(e.from)&&!t.has(e.to))}}function s_(e){let t=e.active_feedback_loop;if(!(e.waiting_kind!==`feedback_loop_decision`||!t||t.state!==`waiting_for_human`))return{loopId:t.loop_id,sourceStageId:t.source_stage_id,deferredTarget:t.deferred_send_back?.target,replayNumber:t.current_replay_number,maxReplays:t.policy.max_replays,summary:e.waiting_summary}}function c_(e,t){return e.stages.some(e=>e.stage_id===t)}function l_(e,t,n){return c_(e,t)||e.pipeline_track?.nodes?.some(e=>e.stage_id===t)?!0:!!n?.includes(t)}function u_(e){return new Map(e.stages.map(e=>[e.stage_id,e]))}function d_(e){let t=e.pipeline_track;return t?.nodes?.length?Jh(t.nodes).map(e=>e.stage_id):e.stages.map(e=>e.stage_id)}function f_(e){let t=e.waiting_stage_id;if(!t)return null;let n=e.stages.find(e=>e.stage_id===t)?.pending_prompt?.id;return n?`${t}:${n}`:e.waiting_prompt_id?e.waiting_prompt_id:c_(e,t)?`${t}:`:null}function p_(e,t){if(t.userPicked&&t.previousStageId&&c_(e,t.previousStageId))return t.previousStageId;let n=f_(e);return n&&n!==t.dismissedWaitKey&&e.waiting_stage_id&&c_(e,e.waiting_stage_id)?e.waiting_stage_id:null}function m_(e,t){return e.artifacts.includes(t)?!0:!!e.envelope?.artifacts.includes(t)}function h_(e,t){let n=u_(e);for(let r of d_(e)){let e=n.get(r);if(e&&m_(e,t))return r}return null}function g_(e,t,n){return t===void 0||t===``?e:e===t?t:n===void 0?e:`${t} · ${n}`}function __(e,t,n){if(n===void 0)return;let r=Jh(e).filter(e=>(e.definition_id??e.stage_id)===n).findIndex(e=>e.stage_id===t);if(!(r<0))return r+1}function v_(e,t){return g_(t.stage_id,t.definition_id,__(e,t.stage_id,t.definition_id))}function y_(e,t){let n=e.pipeline_track?.nodes??[],r=n.find(e=>e.stage_id===t);return r?v_(n,r):g_(t)}function b_(e,t,n){let r=hi(e.status);return{id:e.stage_id,label:n??e.stage_id,status:r,selected:e.stage_id===t,meta:r===`waiting`?pi(e.status):e.last_at,envelope:e.envelope?{summary:e.envelope.summary,artifactCount:e.envelope.artifacts.length}:null}}function x_(e,t,n){return{id:e,label:n??e,status:`pending`,selected:e===t,meta:`pending`,envelope:null}}function S_(e,t,n,r){let i=v_(r,e);return t?b_(t,n,i):x_(e.stage_id,n,i)}function C_(e,t,n){if(!n||n.length===0)return e.map(e=>b_(e,t));let r=new Map(e.map(e=>[e.stage_id,e])),i=new Set,a=[];for(let e of n){i.add(e);let n=r.get(e);a.push(n?b_(n,t):x_(e,t))}for(let n of e)i.has(n.stage_id)||a.push(b_(n,t));return a}function w_(e,t,n){return e.waiting_stage_ids?.includes(t)?!0:n===`waiting_for_input`}function T_(e){if(e)switch(e.kind){case`free_text`:case`confirm`:return e.message;case`artifact_backed`:return e.message||e.artifacts[0];case`multi_question`:return e.questions.length===1?`1 question`:`${e.questions.length} questions`}}function E_(e,t,n,r,i,a){return Jh(t).map(o=>{let s=n.get(o.stage_id),c=s?.status??o.status;return{stageId:o.stage_id,title:v_(t,o),kicker:o.definition_id??o.stage_id,status:c,attemptCount:s?.attempt_count??o.attempt_count??1,readinessLine:Jg({readiness:o.readiness,blocked_by:o.blocked_by,status:c}),gateKinds:o.gate_kinds,meta:c===`running`?s?.last_at:void 0,promptSummary:c===`waiting_for_input`?T_(s?.pending_prompt):void 0,isWaitingAttention:w_(e,o.stage_id,c),isFeedbackSource:r.has(o.stage_id)||void 0,isFeedbackTarget:i.has(o.stage_id)||void 0,isSuperseded:a.has(o.stage_id)||void 0}})}function D_(e,t,n,r,i,a){return t.map(t=>{let o=n.get(t.id),s=o?.status??`pending`;return{stageId:t.id,title:t.label,kicker:t.id,status:s,attemptCount:o?.attempt_count??1,meta:s===`running`?o?.last_at:void 0,promptSummary:s===`waiting_for_input`?T_(o?.pending_prompt):void 0,isWaitingAttention:w_(e,t.id,s),isFeedbackSource:r.has(t.id)||void 0,isFeedbackTarget:i.has(t.id)||void 0,isSuperseded:a.has(t.id)||void 0}})}function O_(e,t,n,r,i,a){let o=u_(e),s=o_(e.pipeline_track,a),c=n&&a_(n,a),l=Qh(s,{liveStageIds:a_(e.stages.map(e=>e.stage_id),a),plannedStageIds:c}),u=new Set(r.map(e=>e.from)),d=new Set(r.map(e=>e.to));if(!s.nodes.length){let n=C_(e.stages.filter(e=>!a.has(e.stage_id)),t,c);return{spatialLayout:l,nodeChrome:D_(e,n,o,u,d,i),trackStages:n}}let f=s.nodes,p=Jh(f).map(e=>S_(e,o.get(e.stage_id),t,f));return{spatialLayout:l,nodeChrome:E_(e,f,o,u,d,i),trackStages:p}}function k_(e,t,n){return e===`stream`?t===`waiting_for_input`&&n?{kind:`reply`,prompt:n}:!t||t===`succeeded`||t===`failed`||t===`interrupted`||t===`pending`||t===`skipped`?{kind:`idle`,label:`Session closed`}:{kind:`none`}:{kind:`none`}}function A_(e){return e===`waiting_for_input`?`alive`:e===`succeeded`||e===`failed`||e===`interrupted`||e===`pending`||e===`skipped`?`closed`:null}function j_(e){let t=[];for(let n of e.stages)for(let r of n.artifacts)t.push({path:r,meta:y_(e,n.stage_id)});return t}function M_(e,t){let n=j_(e);return t?.envelope?[{path:Xg(t.stage_id),label:`Handoff envelope`,meta:y_(e,t.stage_id)},...n]:n}function N_(e,t,n){let r=e.pipeline_track;if(r?.nodes?.length)return r.edges.find(e=>e.to===t)?.from;if(n&&n.length>0){let e=n.indexOf(t);if(e>0)return n[e-1]}let i=e.stages.findIndex(e=>e.stage_id===t);if(i>0)return e.stages[i-1]?.stage_id}function P_(e,t,n){let r=e.pipeline_track;if(r?.nodes?.length){let e=r.edges.filter(e=>e.from===t);return e.length===1?e[0]?.to:void 0}if(n&&n.length>0){let e=n.indexOf(t);if(e>=0)return n[e+1]}let i=e.stages.findIndex(e=>e.stage_id===t);if(!(i<0))return e.stages[i+1]?.stage_id}function F_(e){return e?.kind===`artifact_backed`?e:void 0}function I_(e){return e?.status===`waiting_for_input`&&e.pending_prompt?.kind===`artifact_backed`}function L_(e,t){return t.retrying||t.abandoning?!0:e?e.status===`created`||e.status===`running`||e.waiting_stage_id?!0:e.stages.some(e=>e.status===`running`||e.status===`waiting_for_input`):!1}function R_(e,t,n,r){let i=p_(t,n),a=e.kind===`stream`&&e.stageId&&l_(t,e.stageId,r)?e.stageId:i,o=e.kind===`envelope`?e.stageId:e.kind===`artifact`?h_(t,e.path):a,s=t.stages.find(e=>e.stage_id===o)??null,c=t.pipeline_track?.nodes?.length?void 0:r,l=o?N_(t,o,c):void 0,u=l?t.stages.find(e=>e.stage_id===l):void 0,d=I_(s),f=e.kind===`artifact`&&!!n.wasWaitingArtifact&&!d,p;p=e.kind===`envelope`?`envelope`:e.kind===`artifact`&&!f?`artifact`:o?`stream`:`empty`;let m=p===`artifact`&&d,h=m?F_(s?.pending_prompt):void 0,g=s_(t),_=!!g,v=t_(t.active_feedback_loop,t.feedback_loops,t.pipeline_track),y=i_(t.feedback_loops),b=n_(t.feedback_loops),x=e.kind===`envelope`?e.stageId:null,S=x?t.stages.find(e=>e.stage_id===x)??null:null,C=e.kind===`envelope`?{fromStageId:e.stageId,toStageId:P_(t,e.stageId,c),envelope:S?.envelope??null}:null,w=(n.drawerStageId?t.stages.find(e=>e.stage_id===n.drawerStageId)??null:null)?.envelope??null,T=p!==`envelope`&&n.drawerStageId&&w?{fromStageId:n.drawerStageId,toStageId:P_(t,n.drawerStageId,c),envelope:w}:null,{spatialLayout:E,nodeChrome:D,trackStages:O}=O_(t,o,r,v,b,y);return{selectedStageId:o,selectedStage:s,kind:p,composer:k_(p,s?.status,s?.pending_prompt),showDecide:m,decidePrompt:h,showFeedbackDecide:_,feedbackDecide:g,feedbackOverlays:v,artifactReadOnly:!m,selectedPath:p===`artifact`&&e.kind===`artifact`?e.path:p===`envelope`&&e.kind===`envelope`?Xg(e.stageId):void 0,trackStages:O,spatialLayout:E,nodeChrome:D,artifactFiles:M_(t,s),sessionChip:A_(s?.status),inboundEnvelope:u?.envelope??null,inboundFromStageId:u?.stage_id,inboundToStageId:s?.stage_id,drawer:T,envelope:C,liveStream:s?.status===`running`||s?.status===`waiting_for_input`,activeEnvelopeId:e.kind===`envelope`?e.stageId:n.drawerStageId,waitingArtifact:d,syncStreamRoute:f}}function z_(e){return e.syncStreamRoute?{action:`openStream`,stageId:e.selectedStageId??void 0}:e.view.kind!==`stream`||!e.run?{action:`none`}:e.streamViewStageId&&!l_(e.run,e.streamViewStageId,e.plannedStageIds)?{action:`openStream`}:e.userPickedStageId||e.dismissedWaitKey||!e.selectedStageId||e.streamViewStageId===e.selectedStageId?{action:`none`}:{action:`openStream`,stageId:e.selectedStageId}}var B_=300,V_=200,H_=140,U_=24;function W_(e,t){let n=t-H_;return t<340?Math.max(0,n):Math.max(V_,Math.min(e,n))}function G_(e){return e===`alive`?(0,q.jsx)(`span`,{className:`chip`,children:`session alive`}):e===`closed`?(0,q.jsx)(`span`,{className:`chip`,children:`session closed`}):null}function K_(e,t,n){let r=t.selectedStage;if(t.composer.kind===`reply`&&r)return(0,q.jsx)(`div`,{className:`composer`,children:(0,q.jsx)(`div`,{className:`composer__inner`,children:(0,q.jsx)(bl,{runId:e,stageId:r.stage_id,prompt:t.composer.prompt,onReviewSideBySide:n})})});if(t.composer.kind===`idle`)return(0,q.jsx)(`div`,{className:`composer composer--idle`,children:(0,q.jsx)(`div`,{className:`composer__inner`,children:(0,q.jsx)(`p`,{className:`muted`,children:t.composer.label})})})}function q_({runId:e,view:t,onBack:n,onReran:r,onOpenStream:i,onOpenArtifact:a,onOpenEnvelope:o}){let[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(null),[d,f]=(0,v.useState)(null),[p,m]=(0,v.useState)(null),[h,g]=(0,v.useState)(null),[_,y]=(0,v.useState)(!1),[b,x]=(0,v.useState)(null),[S,C]=(0,v.useState)(()=>t.kind===`stream`&&t.stageId?t.stageId:null),w=(0,v.useRef)(null),[T,E]=(0,v.useState)(null),[D,O]=(0,v.useState)(null),[k,A]=(0,v.useState)(B_),[j,M]=(0,v.useState)(null),[N,P]=(0,v.useState)(0),[F,I]=(0,v.useState)(!1),L=(0,v.useRef)(null),R=(0,v.useRef)(null),[z,B]=(0,v.useState)(!1),V=(0,v.useRef)(!1),H=(0,v.useRef)(i);H.current=i;let U=Nr(),W=t.kind===`stream`?t.stageId:void 0,ee=(0,v.useCallback)(async()=>{try{let t=await Tn(e);c(t),f(null)}catch(e){f(e instanceof Error?e.message:String(e))}},[e]),te=(0,v.useCallback)(async()=>{await ee(),U.refresh()},[ee,U]),ne=(0,v.useCallback)(async(t,n)=>{y(!0),x(null);try{await nr(e,t,n),await te()}catch(e){x(e instanceof Error?e.message:String(e))}finally{y(!1)}},[te,e]),re=(0,v.useCallback)(async t=>{if(window.confirm(`Stop manual recovery? This stage will remain failed in this run.`)){y(!0),x(null);try{await rr(e,t),await te()}catch(e){x(e instanceof Error?e.message:String(e))}finally{y(!1)}}},[te,e]),{retryingStageIds:ie,error:ae,retry:oe,clearError:se}=ig(e,te),ce=(0,v.useCallback)(e=>{C(e),i(e),oe(e)},[i,oe]),{resumingStageIds:le,error:ue,resume:de,clearError:fe}=og(e,te),pe=(0,v.useCallback)(e=>{C(e),i(e),de(e)},[i,de]),{abandoningStageId:me,error:he,abandon:ge,clearError:_e}=cg(e,te),ve=(0,v.useCallback)(async()=>{U.refresh(),n()},[U,n]),{cancelling:ye,error:be,cancel:xe,clearError:Se}=Kg(e,te),{deleting:Ce,error:we,deleteRun:Te,clearError:Ee}=qg(e,s?.status,ve),De={retryingStageIds:ie,abandoningStageId:me,resumingStageIds:le};(0,v.useEffect)(()=>{C(W??null),w.current=null,E(null),O(null),A(B_),M(null),c(null),f(null),m(null),g(null),y(!1),x(null),V.current=!1},[e]),(0,v.useEffect)(()=>{ee()},[ee]),(0,v.useEffect)(()=>{t.kind===`stream`&&C(W??null)},[t.kind,W]),(0,v.useEffect)(()=>{let e=!1;return On().then(t=>{e||u(t.pipelines)}).catch(()=>{e||u([])}),()=>{e=!0}},[]);let Oe=L_(s,{retrying:ie.size>0,abandoning:me!==null});(0,v.useEffect)(()=>{if(!Oe)return;let e=window.setInterval(()=>void ee(),1e3);return()=>window.clearInterval(e)},[ee,Oe]);let ke=l?.find(e=>e.id===s?.pipeline_id)?.stages.map(e=>e.id)??[],G=s?R_(t,s,{previousStageId:S??w.current,userPicked:S!==null,drawerStageId:T,dismissedWaitKey:D,wasWaitingArtifact:V.current},ke):null,Ae=G?.selectedStageId,je=G?.selectedStage?.attempt_count;(0,v.useEffect)(()=>{if(!Ae){m(null),g(null);return}let t=!1;return m(null),g(null),En(e,Ae).then(e=>{t||m(e)}).catch(e=>{t||g(e instanceof Error?e.message:String(e))}),()=>{t=!0}},[e,Ae,je]),G&&(w.current=G.selectedStageId),G?.waitingArtifact?V.current=!0:t.kind!==`artifact`&&(V.current=!1),(0,v.useEffect)(()=>{let e=z_({view:t,streamViewStageId:W,run:s,plannedStageIds:ke,selectedStageId:G?.selectedStageId??null,syncStreamRoute:G?.syncStreamRoute??!1,userPickedStageId:S,dismissedWaitKey:D});e.action===`openStream`&&H.current(e.stageId)},[t,W,s,ke,G?.selectedStageId,G?.syncStreamRoute,S,D]),(0,v.useEffect)(()=>{let e=L.current;if(!e)return;let t=()=>P(e.getBoundingClientRect().height);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let Me=(0,v.useCallback)(e=>{let t=L.current?.getBoundingClientRect().height??N;A(W_(e,t))},[N]),Ne=(0,v.useCallback)(()=>{s&&O(f_(s)),C(null),w.current=null,E(null),i()},[i,s]),Pe=(0,v.useCallback)(()=>{let e=G?.selectedStageId??(t.kind===`envelope`?t.stageId:void 0)??S;if(e){C(e),i(e);return}i()},[i,S,t,G?.selectedStageId]);async function Fe(){B(!0),f(null),se(),_e(),fe(),Se(),Ee();try{r((await $n(e)).runId)}catch(e){f(e instanceof Error?e.message:String(e))}finally{B(!1)}}let K=G?.selectedStage??null,Ie=p!==null&&p.stage_id===K?.stage_id?p.manual_recovery:void 0,Le=G?.selectedPath,Re=s?fi(s.status):void 0,ze=G?K_(e,G,a):void 0,Be=!!(G&&G.spatialLayout.nodes.length>0),Ve=!!(G&&(G.selectedStageId||G.kind===`artifact`||G.kind===`envelope`)),He=K?ci(K.events):!1,Ue=(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:Ne,children:`Hide workspace`}),We;if(d)We=(0,q.jsx)(`div`,{style:{padding:`var(--spacing-4)`},children:(0,q.jsx)(`div`,{className:`banner banner--error`,children:d})});else if(!s||!G)We=(0,q.jsx)(`div`,{style:{padding:`var(--spacing-4)`},children:(0,q.jsx)(`p`,{children:`Loading…`})});else if(G.kind===`artifact`&&Le)We=(0,q.jsx)(Pm,{runId:e,path:Le,readOnly:G.artifactReadOnly,onBackToTranscript:Pe,onHide:Ne});else if(G.kind===`envelope`&&G.envelope)We=G.envelope.envelope?(0,q.jsx)(Wm,{fromStageId:G.envelope.fromStageId,toStageId:G.envelope.toStageId,envelope:G.envelope.envelope,onBackToTranscript:Pe,onHide:Ne,onArtifactClick:a,stageLabel:e=>y_(s,e)}):(0,q.jsxs)(`div`,{className:`stream`,style:{height:`100%`},children:[(0,q.jsxs)(`header`,{className:`stream__head`,children:[(0,q.jsx)(`h3`,{className:`stream__name`,children:`Handoff envelope`}),(0,q.jsx)(`span`,{className:`topbar__spacer`}),(0,q.jsxs)(`div`,{className:`stream__head-trail`,children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:Pe,children:`← Transcript`}),Ue]})]}),(0,q.jsx)(`div`,{style:{padding:`var(--spacing-4)`},children:(0,q.jsxs)(`div`,{className:`banner banner--warning`,children:[G.envelope.fromStageId,` has not emitted a handoff envelope.`]})})]});else if(G.selectedStageId){let e=G.selectedStageId,t=K?fi(K.status):void 0,n=j!==`transcript`,r=j!==`logs`,i=(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:()=>M(r?`logs`:null),children:r?`Hide logs`:`Show logs`}),Ue]}),a=(0,q.jsxs)(q.Fragment,{children:[K?(0,q.jsx)(bi,{costUsd:K.cost_usd}):null,(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:()=>M(n?`transcript`:null),children:n?`Hide transcript`:`Show transcript`}),Ue]});We=(0,q.jsxs)(`div`,{className:`center-split`,children:[(0,q.jsx)(`div`,{className:`center-split__transcript`,hidden:!n,children:(0,q.jsxs)(Ng,{stageName:G.trackStages.find(t=>t.id===e)?.label??e,status:(0,q.jsxs)(q.Fragment,{children:[He?(0,q.jsxs)(`span`,{className:`status status--failed`,children:[(0,q.jsx)(`span`,{className:`dot dot--failed`}),` `,li()]}):(0,q.jsxs)(`span`,{className:`status${t&&t!==`running`?` status--${t}`:``}`,children:[(0,q.jsx)(`span`,{className:`dot${t?` dot--${t}`:``}`}),` `,K?pi(K.status):`pending`]}),K?(0,q.jsx)(Sl,{count:K.attempt_count}):null,K?(0,q.jsx)(bi,{costUsd:K.cost_usd}):null,G_(G.sessionChip),K&&tg(K)&&Ie===void 0?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:ng(De,K.stage_id),onClick:()=>pe(K.stage_id),children:le.has(K.stage_id)?`Resuming…`:`Resume session`}):null,K&&$h(K.status)&&Ie===void 0?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:ng(De,K.stage_id),onClick:()=>ce(K.stage_id),children:ie.has(K.stage_id)?`Retrying…`:`Retry stage`}):null,K&&eg(K.status)?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm btn--reject`,disabled:ng(De,K.stage_id),onClick:()=>ge(K.stage_id),children:me===K.stage_id?`Abandoning…`:`Abandon`}):null]}),trailing:i,autoScroll:G.liveStream,scrollKey:K?.events.length,composer:ze,children:[(0,q.jsx)(Ch,{events:K?.events??[],inboundEnvelope:G.inboundEnvelope}),(0,q.jsx)(Lg,{history:p,error:h,recovering:_,onRecover:K?e=>void ne(K.stage_id,e):void 0,onStop:K?()=>void re(K.stage_id):void 0})]})}),(0,q.jsx)(`div`,{className:`center-split__logs`,hidden:!r,children:(0,q.jsx)(Kh,{events:K?.events??[],headerAction:a})})]})}let Ge=Math.max(0,N-H_),Ke=N<340?Ge:V_;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{ref:L,className:`pane run-detail${Ve?` has-stage`:``}${F?` is-resizing`:``}`,style:{height:`100%`,"--work-h":`${k}px`},children:[(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`div`,{className:`topbar`,children:[(0,q.jsx)(`a`,{className:`topbar__back`,href:`#/runs`,onClick:e=>{e.preventDefault(),n()},children:`← Runs`}),(0,q.jsx)(`h2`,{className:`topbar__title`,children:s?Rr(s):`Loading…`}),s?(0,q.jsx)(`span`,{className:`topbar__sub`,title:Lr(s),children:Lr(s)}):null,s?.binding?(0,q.jsx)(`span`,{className:`topbar__sub`,title:Hr(s.binding),children:Vr(s.binding)}):null,s?(0,q.jsxs)(`span`,{className:`status${Re&&Re!==`running`?` status--${Re}`:``}`,title:s.status===`cancelled`&&s.cancel_reason?s.cancel_reason:void 0,children:[(0,q.jsx)(`span`,{className:`dot${Re?` dot--${Re}`:``}`}),` `,s.status===`cancelled`?ui(s.cancel_reason):pi(s.status)]}):null,s&&yi(s.total_cost_usd)?(0,q.jsx)(`span`,{className:`topbar__sub`,title:`Total cost across every stage in this run`,children:yi(s.total_cost_usd)}):null,(0,q.jsx)(`span`,{className:`topbar__spacer`}),s&&Bg(s.status)?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,disabled:ye||Ce||z,onClick:()=>{Se(),xe()},children:ye?`Cancelling…`:`Cancel`}):null,s&&Vg(s.status)?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm btn--reject`,disabled:ye||Ce||z,onClick:()=>{Ee(),Te()},children:Ce?`Deleting…`:`Delete`}):null,(0,q.jsx)(`button`,{className:`btn btn--primary`,disabled:z||ye||Ce,onClick:()=>void Fe(),children:z?s?.status===`created`?`Starting…`:`Starting fresh…`:s?.status===`created`?`Start run`:`Start fresh`})]}),ae?(0,q.jsx)(`div`,{className:`banner banner--error`,style:{padding:`var(--spacing-3) var(--spacing-5)`},children:ae}):null,ue?(0,q.jsx)(`div`,{className:`banner banner--error`,style:{padding:`var(--spacing-3) var(--spacing-5)`},children:ue}):null,he?(0,q.jsx)(`div`,{className:`banner banner--error`,style:{padding:`var(--spacing-3) var(--spacing-5)`},children:he}):null,be?(0,q.jsx)(`div`,{className:`banner banner--error`,style:{padding:`var(--spacing-3) var(--spacing-5)`},children:be}):null,we?(0,q.jsx)(`div`,{className:`banner banner--error`,style:{padding:`var(--spacing-3) var(--spacing-5)`},children:we}):null,b?(0,q.jsx)(`div`,{className:`banner banner--error`,style:{padding:`var(--spacing-3) var(--spacing-5)`},children:b}):null]}),d&&!s?(0,q.jsx)(`div`,{style:{padding:`var(--spacing-4)`},children:(0,q.jsx)(`div`,{className:`banner banner--error`,children:d})}):!s||!G?(0,q.jsx)(`div`,{style:{padding:`var(--spacing-4)`},children:(0,q.jsx)(`p`,{children:`Loading…`})}):Be?(0,q.jsxs)(`div`,{className:`workspace`,children:[s.active_feedback_loop||(s.feedback_loops?.length??0)>0?(0,q.jsx)(th,{active:s.active_feedback_loop,history:s.feedback_loops??[]}):null,(0,q.jsx)(Dg,{layout:G.spatialLayout,stages:s.stages,nodeChrome:G.nodeChrome,selectedStageId:G.selectedStageId,onSelectStage:e=>{C(e),i(e)},onDeselect:Ne,retryingStageIds:ie,onRetryStage:ce,resumingStageIds:le,onResumeStage:pe,abandoningStageId:me,onAbandonStage:ge,runId:e,showHint:!Ve,feedbackOverlays:G.feedbackOverlays})]}):(0,q.jsx)(`div`,{style:{padding:`var(--spacing-4)`},children:(0,q.jsx)(`p`,{children:`No stages have started yet.`})}),Ve&&s&&G?(0,q.jsxs)(`div`,{className:`work`,children:[(0,q.jsx)(`div`,{className:`work-split${F?` is-dragging`:``}`,role:`separator`,"aria-orientation":`horizontal`,"aria-label":`Resize workspace`,"aria-valuemin":Ke,"aria-valuemax":Ge,"aria-valuenow":Math.round(k),tabIndex:0,onPointerDown:e=>{(e.button==null||e.button===0)&&(e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId),I(!0),R.current={id:e.pointerId,y:e.clientY,h:k})},onPointerMove:e=>{let t=R.current;!t||t.id!==e.pointerId||Me(t.h+(t.y-e.clientY))},onPointerUp:e=>{R.current?.id===e.pointerId&&(R.current=null,I(!1))},onPointerCancel:e=>{R.current?.id===e.pointerId&&(R.current=null,I(!1))},onKeyDown:e=>{e.key===`ArrowUp`&&(e.preventDefault(),Me(k+U_)),e.key===`ArrowDown`&&(e.preventDefault(),Me(k-U_)),e.key===`Home`&&(e.preventDefault(),Me(Ge)),e.key===`End`&&(e.preventDefault(),Me(Ke))},children:(0,q.jsx)(`span`,{className:`work-split__grip`,"aria-hidden":`true`})}),(0,q.jsxs)(`div`,{className:`work-row`,children:[(0,q.jsx)(`div`,{className:`aside`,style:{width:240,flexShrink:0,overflow:`auto`},children:(0,q.jsx)(wl,{files:G.artifactFiles,selectedPath:Le,onSelect:e=>{let t=Zg(e);if(t){C(t),o(t);return}a(e)},footer:(0,q.jsx)(tl,{trigger:(0,q.jsx)(`span`,{style:{fontSize:`var(--font-size-sm)`,fontWeight:500},children:`Input`}),defaultIsOpen:!1,children:(0,q.jsx)(Uc,{code:s.task_yaml,language:`yaml`,container:`section`,maxHeight:200,width:`100%`})})})}),(0,q.jsx)(`div`,{style:{flex:1,minWidth:0,minHeight:0,display:`flex`,flexDirection:`column`},children:We}),G.showFeedbackDecide&&G.feedbackDecide?(0,q.jsx)(`div`,{className:`decide`,style:{width:320,flexShrink:0},children:(0,q.jsx)(Xm,{runId:e,decide:G.feedbackDecide,onSuccess:te})}):G.showDecide&&G.decidePrompt&&K?(0,q.jsx)(`div`,{className:`decide`,style:{width:320,flexShrink:0},children:(0,q.jsx)(Vm,{runId:e,stageId:K.stage_id,prompt:G.decidePrompt,events:K.events,inboundEnvelope:G.inboundEnvelope,inboundFromStageId:G.inboundFromStageId,inboundToStageId:G.inboundToStageId,selectedPath:Le,onSelectArtifact:a,onOpenInboundEnvelope:G.inboundFromStageId?()=>{let e=G.inboundFromStageId;e&&E(e)}:void 0})}):null]})]}):null]}),G?.drawer?(0,q.jsx)(qm,{isOpen:!0,onClose:()=>E(null),fromStageId:G.drawer.fromStageId,toStageId:G.drawer.toStageId,envelope:G.drawer.envelope,onOpenFullRecord:()=>{let e=G.drawer?.fromStageId;E(null),e&&o(e)},onArtifactClick:e=>{E(null),a(e)}}):null]})}function J_({label:e,status:t,index:n,meta:r,selected:i,proposed:a,onClick:o}){let s=gi(t)||(n==null?``:String(n+1));return(0,q.jsxs)(`button`,{type:`button`,className:`node`,"data-s":t,"data-selected":i?`true`:void 0,"data-proposed":a?`true`:void 0,onClick:o,"aria-disabled":!o,style:{cursor:o?`pointer`:`default`},children:[(0,q.jsx)(`span`,{className:`node__ring`,"aria-hidden":`true`,children:s}),(0,q.jsx)(`span`,{className:`node__name`,children:e}),r?(0,q.jsx)(`span`,{className:`node__meta`,children:r}):null]})}function Y_(e){return e===1?`1 file`:`${e} files`}function X_({mode:e,flowed:t,envelope:n,fromStageId:r,selected:i,onEnvelopeClick:a}){let o=n==null,s=o?`no envelope yet`:`envelope · ${Y_(n.artifactCount)}`;return(0,q.jsxs)(`span`,{className:`wire`,"data-flowed":t?`true`:void 0,children:[(0,q.jsx)(`span`,{className:`wire__line`}),e===`definition`?null:(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{className:`wire__env`,disabled:o||!a,"data-selected":i?`true`:void 0,onClick:o||!a?void 0:()=>a(r),children:s}),n?.summary?(0,q.jsx)(`span`,{className:`wire__summary`,children:n.summary}):null]})]})}function Z_({stages:e,mode:t=`run`,onSelect:n,onEnvelopeClick:r,activeEnvelopeId:i}){return(0,q.jsx)(`nav`,{className:`track`,"aria-label":`Pipeline track`,children:(0,q.jsx)(`div`,{className:`track__rail`,children:e.map((a,o)=>(0,q.jsxs)(v.Fragment,{children:[(0,q.jsx)(J_,{id:a.id,label:a.label,status:a.status,index:o,meta:a.meta,selected:a.selected,proposed:a.proposed,onClick:n&&(t===`definition`||a.status!==`pending`)?()=>n(a.id):void 0}),o<e.length-1?(0,q.jsx)(X_,{mode:t,flowed:a.envelope!=null,envelope:a.envelope,fromStageId:a.id,selected:i===a.id,onEnvelopeClick:r}):null]},a.id))})})}var Q_=`Connect model providers here. Credentials are stored under your Stageflow home ($STAGEFLOW_HOME/agent/auth.json).`;function $_(e){return e.cursorSdkReady===!0&&e.cursorApiKeyConfigured===!0}function ev(e,t){return t>0||$_(e)?!1:(e.credentialSource,!0)}function tv(e){return e.supportsApiKey}function nv(e){return e.supportsOauth&&!e.supportsApiKey}function rv(e){return e?e.configured?e.authKind===`oauth`?`Connected (OAuth)`:e.authKind===`api_key`?`Connected (API key)`:`Connected`:`Not connected`:`Unknown`}function iv(e){return e.filter(e=>e?.configured===!0).length}async function av(){let e=await Vn(),t=await Bn(),n=iv(await Promise.all(t.providers.map(async e=>{try{let{provider:t}=await Hn(e.id);return t}catch{return}}))),r=e.credentialSource;return ev(e,n)?r===void 0?{ready:!1,message:`Connect providers before starting a run. Add API keys or OAuth in Stageflow, or set up Cursor (SDK) with CURSOR_API_KEY.`}:{ready:!1,credentialSource:r,message:`Connect at least one model provider in Settings → Providers (Pi API key or OAuth, or Cursor SDK with CURSOR_API_KEY) before starting a run.`}:{ready:!0,credentialSource:r}}function ov(e){return!Array.isArray(e)||e.length===0?`no gate`:`will ask you`}function sv({onStarted:e,initialPipelinePath:t,initialTaskPath:n}){let[r,i]=(0,v.useState)([]),[a,o]=(0,v.useState)([]),[s,c]=(0,v.useState)(``),[l,u]=(0,v.useState)(``),[d,f]=(0,v.useState)(null),[p,m]=(0,v.useState)(!1),[h,g]=(0,v.useState)(null),[_,y]=(0,v.useState)(null),{snapshot:b,error:x}=Mr(),S=b.health;(0,v.useEffect)(()=>{(async()=>{try{let[e,r]=await Promise.all([Dn(),On()]);i(e.tasks),o(r.pipelines);let a=n&&e.tasks.some(e=>e.path===n)?n:e.tasks[0]?.path??``,s=t&&r.pipelines.some(e=>e.path===t)?t:r.pipelines[0]?.path??``;c(a),u(s)}catch(e){f(e instanceof Error?e.message:String(e))}})()},[t,n]);let C=a.find(e=>e.path===l)??null,w=(0,v.useMemo)(()=>C?C.stages.map(e=>({id:e.id,label:e.id,status:ni(e.gate_kinds)?`waiting`:`pending`,meta:ov(e.gate_kinds)})):[],[C]),T=S!=null&&S.slotsAvailable===0,E=S==null?0:Qr(b,S.activeRunIds).length,D=d??(S==null&&x?x:null);async function O(){if(!s||!l){f(`Pick a task and a pipeline.`);return}m(!0),f(null),g(null),y(null);try{let e=await av();if(!e.ready){y(e.message??`Connect providers before starting a run.`),m(!1);return}}catch(e){y(e instanceof Error?e.message:String(e)),m(!1);return}let t=await Qn(s,l);if(m(!1),t.ok){e(t.runId);return}g(t)}return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`p`,{className:`crumbs`,children:[(0,q.jsx)(`a`,{href:`#/today`,children:`Today`}),` / start a run`]}),(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Start a run`}),(0,q.jsx)(`p`,{children:`A run is a task path plus a pipeline path. Nothing else is decided here.`})]})}),T&&S?(0,q.jsxs)(`div`,{className:`gate`,style:{padding:`var(--spacing-4)`,marginBottom:`var(--spacing-5)`},children:[(0,q.jsxs)(`div`,{className:`gate__label`,children:[(0,q.jsx)(`span`,{className:`dot dot--waiting`}),` No free session slots`]}),(0,q.jsxs)(`p`,{className:`gate__question`,children:[`All `,S.maxConcurrent,` slots are in use`,E>0?` — ${E===1?`one is`:`${E} are`} held by stages waiting on you`:``]}),S.activeRunIds.length>0?(0,q.jsxs)(`p`,{style:{margin:`var(--spacing-2) 0 0`,color:`var(--color-text-yellow)`,fontSize:`var(--font-size-sm)`},children:[`Blocking runs: `,S.activeRunIds.map((e,t)=>(0,q.jsxs)(v.Fragment,{children:[t>0?`, `:``,(0,q.jsx)(`a`,{href:`#/runs/${e}`,children:e.slice(0,8)})]},e))]}):null]}):null,_?(0,q.jsxs)(`div`,{className:`gate`,style:{padding:`var(--spacing-4)`,marginBottom:`var(--spacing-5)`},children:[(0,q.jsxs)(`div`,{className:`gate__label`,children:[(0,q.jsx)(`span`,{className:`dot dot--waiting`}),` Providers not ready`]}),(0,q.jsx)(`p`,{className:`gate__question`,children:_}),(0,q.jsxs)(`p`,{style:{margin:`var(--spacing-2) 0 0`,fontSize:`var(--font-size-sm)`},children:[(0,q.jsx)(`a`,{href:`#/connect`,children:`Connect providers`}),` · `,(0,q.jsx)(`a`,{href:`#/settings`,children:`Open Settings`})]})]}):null,h?(0,q.jsxs)(`div`,{className:`gate`,style:{padding:`var(--spacing-4)`,marginBottom:`var(--spacing-5)`,borderColor:`var(--color-border-red)`,borderLeftColor:`var(--color-error)`,background:`var(--color-background-red)`,color:`var(--color-text-red)`},children:[(0,q.jsx)(`div`,{className:`gate__label`,style:{color:`var(--color-text-red)`},children:`Could not start run`}),(0,q.jsx)(`p`,{className:`gate__question`,style:{color:`var(--color-text-primary)`},children:h.error})]}):null,D?(0,q.jsxs)(`p`,{style:{color:`var(--color-text-red)`,marginBottom:`var(--spacing-4)`},children:[`Could not start run: `,D]}):null,(0,q.jsxs)(`div`,{className:`grid-2`,children:[(0,q.jsx)(`div`,{children:(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Task`})}),(0,q.jsx)(`div`,{className:`pick`,children:r.map(e=>(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`radio`,name:`task`,checked:s===e.path,onChange:()=>c(e.path)}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:e.id}),(0,q.jsx)(`span`,{children:e.goal}),(0,q.jsx)(`span`,{className:`mono muted`,style:{display:`block`,fontSize:`var(--font-size-xs)`},children:e.path})]})]},e.path))})]})}),(0,q.jsx)(`div`,{children:(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Pipeline`})}),(0,q.jsx)(`div`,{className:`pick`,children:a.map(e=>(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`radio`,name:`pipeline`,checked:l===e.path,onChange:()=>u(e.path)}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:e.id}),(0,q.jsxs)(`span`,{children:[e.stages.length,` stages`]}),(0,q.jsx)(`span`,{className:`mono muted`,style:{display:`block`,fontSize:`var(--font-size-xs)`},children:e.path})]})]},e.path))}),w.length>0?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`eyebrow`,style:{marginTop:`var(--spacing-4)`,marginBottom:`var(--spacing-3)`},children:`What will run`}),(0,q.jsx)(`div`,{className:`track track--inline`,children:(0,q.jsx)(Z_,{stages:w,mode:`definition`})}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-3)`},children:w.filter(e=>e.status===`waiting`).length===0?`No stage in this pipeline is declared to stop for a human.`:`${w.filter(e=>e.status===`waiting`).length} ${w.filter(e=>e.status===`waiting`).length===1?`stage`:`stages`} will hold and wait for you.`})]}):null]})})]}),(0,q.jsxs)(`div`,{className:`form-actions`,style:{paddingBottom:`var(--spacing-8)`},children:[(0,q.jsx)(`button`,{className:`btn btn--primary`,disabled:!s||!l||T||p,onClick:()=>void O(),children:p?`Starting…`:`Start run`}),(0,q.jsx)(`a`,{className:`btn btn--ghost`,href:`#/today`,children:`Cancel`})]})]})}var cv={waiting:`dot dot--waiting`,running:`dot dot--running`,failed:`dot dot--failed`,succeeded:`dot dot--succeeded`};function lv({label:e,count:t,status:n,children:r}){return(0,q.jsxs)(`section`,{className:`zone`,children:[(0,q.jsxs)(`div`,{className:`zone__head`,children:[(0,q.jsx)(`span`,{className:cv[n]}),(0,q.jsx)(`span`,{className:`eyebrow`,children:e}),(0,q.jsx)(`span`,{className:`zone__rule`}),(0,q.jsx)(`span`,{className:`zone__count`,children:t})]}),r]})}function uv({waiting:e,inFlight:t,broken:n,finished:r}){return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(lv,{label:e.label,count:e.count,status:e.status,children:e.children}),(0,q.jsx)(lv,{label:t.label,count:t.count,status:t.status,children:t.children}),(0,q.jsx)(lv,{label:n.label,count:n.count,status:n.status,children:n.children}),(0,q.jsx)(lv,{label:r.label,count:r.count,status:r.status,children:r.children})]})}function dv(e){return e===0?`Nothing needs you`:e===1?`One thing needs you`:`${e} things need you`}function fv(e){let t=e.waiting_stage_id??`this stage`;switch(e.waiting_kind){case`confirm`:return`Stage ${t} paused its session to ask. Rejecting sends your note back to the same session.`;case`artifact_backed`:return`Stage ${t} asked an artifact_backed prompt. Reject revises in the same session.`;case`multi_question`:return`Stage ${t} asked a multi_question prompt. All answers go back in one reply.`;case`free_text`:return`Stage ${t} asked a free_text prompt.`;case`feedback_loop_decision`:return`Feedback loop limit — decide extend, continue, or abandon`;default:return`Stage ${t} is waiting for input.`}}function pv(e){let t=e.waiting_artifacts?.[0];return t?{icon:`◆`,name:t.split(`/`).pop()??t}:{icon:`?`,name:e.waiting_kind??`waiting`}}function mv(e){let t=e.waiting_summary??`Waiting for input`;return t.length<=180?t:`${t.slice(0,180)}…`}var hv=400,gv=12;function _v(e){let t=e.split(`
119
+ `).slice(0,gv).join(`
120
+ `);return t.length>hv&&(t=`${t.slice(0,hv).trimEnd()}…`),t}function vv(e){let t=_v(e),n=t.split(`
121
+ `),r,i=[];for(let e of n){let t=e.match(/^#+\s+(.+)/);if(!r&&t?.[1]){r=t[1];continue}e.trim()&&i.push(e.replace(/^#+\s+/,``))}return(0,q.jsxs)(q.Fragment,{children:[r?(0,q.jsx)(`strong`,{children:r}):null,i.length>0?i.map((e,t)=>(0,q.jsx)(`p`,{children:e},t)):r?null:(0,q.jsx)(`p`,{children:t})]})}function yv({run:e}){let t=e.waiting_artifacts?.[0],[n,r]=(0,v.useState)(null);return(0,v.useEffect)(()=>{if(e.waiting_kind!==`artifact_backed`||!t){r(null);return}let n=!1;return dr(e.run_id,t).then(e=>{n||r(vv(e))}).catch(()=>{n||r(null)}),()=>{n=!0}},[e.run_id,e.waiting_kind,t]),e.waiting_kind===`multi_question`&&e.waiting_questions?.length?(0,q.jsx)(`span`,{className:`peek-doc`,children:e.waiting_questions.map((e,t)=>(0,q.jsx)(`p`,{children:e},t))}):(0,q.jsx)(`span`,{className:`peek-doc`,children:n??(0,q.jsx)(`p`,{children:mv(e)})})}function bv(e){let t=ii(e.updated_at??e.created_at),n=ai(e.stages,e.waiting_stage_id);return n?`held ${t} at ${n}`:`held ${t}`}function xv(e){let t=e.stages?.find(e=>e.status===`running`);return t?t.id:e.waiting_stage_id?e.waiting_stage_id:``}function Sv({run:e,onOpen:t,onOpenArtifact:n}){let r=e.waiting_kind,i=r===`feedback_loop_decision`,a=!i&&e.waiting_prompt_id&&r?{promptId:e.waiting_prompt_id,kind:r}:null,{locked:o,error:s,submitIntent:c}=yl(e.run_id,e.waiting_stage_id,a),l=!i&&al({promptId:e.waiting_prompt_id,kind:i?null:r}),u=e.waiting_artifacts?.[0],d=pv(e),f=e.waiting_questions?.length??0;function p(){u?n(e.run_id,u):t(e.run_id)}return(0,q.jsxs)(`article`,{className:`block`,children:[(0,q.jsxs)(`div`,{className:`block__body`,children:[(0,q.jsxs)(`div`,{className:`block__meta`,children:[(0,q.jsx)(`a`,{className:`block__pipeline`,href:`#/pipelines/${e.pipeline_id}`,children:Lr(e)}),(0,q.jsx)(`span`,{className:`status status--waiting`,children:bv(e)})]}),(0,q.jsx)(`p`,{className:`block__q`,children:e.waiting_summary??`Waiting for input`}),(0,q.jsx)(`p`,{className:`block__sub`,children:fv(e)}),s?(0,q.jsxs)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`},children:[`Could not accept: `,s]}):null,(0,q.jsxs)(`div`,{className:`block__actions`,children:[i?(0,q.jsx)(`button`,{className:`btn btn--primary`,onClick:()=>t(e.run_id),children:`Decide on run`}):null,l?(0,q.jsx)(`button`,{className:`btn btn--accept`,disabled:o,onClick:()=>void c({type:`decision`,decision:`accept`}),children:`Accept`}):null,r===`confirm`||r===`artifact_backed`?(0,q.jsx)(`button`,{className:`btn btn--reject`,onClick:()=>t(e.run_id),children:`Reject with note`}):null,r===`multi_question`?(0,q.jsx)(`button`,{className:`btn btn--primary`,onClick:()=>t(e.run_id),children:f>0?`Answer ${f} questions`:`Answer questions`}):null,r===`free_text`?(0,q.jsx)(`button`,{className:`btn btn--primary`,onClick:()=>t(e.run_id),children:`Answer`}):null,r===`artifact_backed`&&u?(0,q.jsxs)(`button`,{className:`btn`,onClick:()=>n(e.run_id,u),children:[`Read `,d.name]}):null,(0,q.jsx)(`button`,{className:`btn btn--ghost`,onClick:()=>t(e.run_id),children:`Open run`})]})]}),(0,q.jsxs)(`button`,{className:`block__peek`,onClick:p,"aria-label":u?`Open ${d.name}`:`Open run`,children:[(0,q.jsxs)(`span`,{className:`block__peek-name`,children:[(0,q.jsx)(`span`,{"aria-hidden":`true`,children:d.icon}),` `,d.name]}),(0,q.jsx)(yv,{run:e})]})]})}function Cv({onOpen:e,onOpenArtifact:t,onNew:n,onSeeRuns:r}){let{snapshot:i,error:a,loading:o}=Mr(),[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(null),d=Wr(i),f=qr(i),p=s??a;async function m(t){u(t);try{e((await $n(t)).runId)}catch(e){c(e instanceof Error?e.message:String(e))}finally{u(null)}}let h=!o&&d.waiting.length===0&&d.inFlight.length===0&&d.broken.length===0&&d.finished.length===0,g=d.finished.slice(0,3);return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`div`,{className:`page-head`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:dv(d.waiting.length)}),(0,q.jsx)(`p`,{children:f.line})]}),(0,q.jsx)(`a`,{className:`btn btn--primary`,href:`#/new`,onClick:e=>{e.preventDefault(),n()},children:`Start a run`})]}),p?(0,q.jsxs)(`p`,{style:{color:`var(--color-text-red)`},children:[`Could not load runs: `,p]}):null,o?(0,q.jsx)(`p`,{className:`muted`,children:`Loading…`}):null,h?(0,q.jsx)(`div`,{className:`empty-hint`,children:`No runs yet. Start a pipeline to see triage zones fill in.`}):null,!o&&!h?(0,q.jsx)(uv,{waiting:{label:mi(),count:d.waiting.length,status:`waiting`,children:d.waiting.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Nothing waiting.`}):d.waiting.map(n=>(0,q.jsx)(Sv,{run:n,onOpen:e,onOpenArtifact:t},n.run_id))},inFlight:{label:`In flight`,count:d.inFlight.length,status:`running`,children:d.inFlight.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`No runs in flight.`}):(0,q.jsx)(`div`,{className:`runs`,children:d.inFlight.map(t=>(0,q.jsxs)(`a`,{className:`run-row`,href:`#/runs/${t.run_id}`,onClick:n=>{n.preventDefault(),e(t.run_id)},children:[(0,q.jsxs)(`span`,{className:`run-row__id`,children:[(0,q.jsx)(`span`,{className:`dot dot--running`}),(0,q.jsxs)(`span`,{className:`run-row__name`,children:[Rr(t),` `,(0,q.jsxs)(`span`,{children:[`· `,xv(t)]})]})]}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`span`,{className:`track-mini`,"aria-hidden":`true`,children:t.stages.map(e=>{let t=_i(e.status);return(0,q.jsx)(`i`,{className:`track-mini__seg`,...t?{"data-s":t}:{}},e.id)})}),(0,q.jsx)(`span`,{className:`track-mini__label`,children:oi(t)})]}),(0,q.jsx)(`span`,{className:`run-row__right`,children:ii(t.updated_at??t.created_at)})]},t.run_id))})},broken:{label:`Broken`,count:d.broken.length,status:`failed`,children:d.broken.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`No failed runs.`}):d.broken.map(t=>(0,q.jsxs)(`div`,{className:`fail-row`,children:[(0,q.jsx)(`span`,{className:`dot dot--failed`}),(0,q.jsxs)(`span`,{className:`fail-row__why`,children:[(0,q.jsx)(`b`,{children:Rr(t)}),` · `,Lr(t),t.failed_reason?(0,q.jsx)(`span`,{children:t.failed_reason}):null]}),(0,q.jsx)(`button`,{className:`btn btn--sm`,onClick:n=>{n.stopPropagation(),e(t.run_id)},children:`Open stage`}),(0,q.jsx)(`button`,{className:`btn btn--sm`,disabled:l===t.run_id,onClick:e=>{e.stopPropagation(),m(t.run_id)},children:l===t.run_id?`Starting fresh…`:`Start fresh`})]},t.run_id))},finished:{label:`Finished`,count:d.finished.length,status:`succeeded`,children:d.finished.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`No finished runs yet.`}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`runs`,children:g.map(t=>(0,q.jsxs)(`a`,{className:`run-row`,href:`#/runs/${t.run_id}`,onClick:n=>{n.preventDefault(),e(t.run_id)},children:[(0,q.jsxs)(`span`,{className:`run-row__id`,children:[(0,q.jsx)(`span`,{className:`dot dot--succeeded`}),(0,q.jsxs)(`span`,{className:`run-row__name`,children:[Rr(t),` `,(0,q.jsxs)(`span`,{children:[`· `,Lr(t)]})]})]}),(0,q.jsxs)(`span`,{className:`mono muted`,children:[t.stages.length,` stages`]}),(0,q.jsx)(`span`,{className:`run-row__right`,children:ii(t.updated_at??t.created_at)})]},t.run_id))}),(0,q.jsx)(`p`,{style:{margin:`var(--spacing-3) 0 0`},children:(0,q.jsx)(`button`,{className:`btn btn--sm btn--ghost`,onClick:r,children:`See every run →`})})]})}}):null]})}var wv=/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/,Tv=/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;function Ev(e){let t={};e.directory.trim()||(t.directory=`Directory is required.`);let n=e.id.trim();if(n?(n.length>64||!wv.test(n))&&(t.id=`Id must be lowercase kebab-case.`):t.id=`Id is required.`,e.selectedStageIds.length===0)t.stages=`Add at least one stage id.`;else if(new Set(e.selectedStageIds).size!==e.selectedStageIds.length)t.stages=`A pipeline cannot repeat the same stage id.`;else{for(let n of e.selectedStageIds)if(!Tv.test(n)){t.stages=`Stage id "${n}" must be lowercase kebab-case.`;break}if(!t.stages&&e.compositionMode===`dependencies`){let n=new Set(e.selectedStageIds);for(let r of e.selectedStageIds){let i=e.stageNeeds[r];if(i&&(!n.has(i)||i===r)){t.stages=`Stage "${r}" needs a stage that is in this pipeline.`;break}}}}return t}function Dv(e,t){let n=t?.trim(),r;if(e===409)r=`Could not create pipeline: this id already exists.`;else if(e===422){let e=n?.toLowerCase()??``;r=e.includes(`cycle`)?`Could not create pipeline: dependency cycle detected.`:e.includes(`unknown needs`)?`Could not create pipeline: a stage needs another stage that is not in this pipeline.`:e.includes(`duplicate`)?`Could not create pipeline: the same stage was listed more than once.`:e.includes(`missing stage file`)?`Could not create pipeline: create stage files beside the pipeline directory first.`:`Could not create pipeline. Try again.`}else r=`Could not create pipeline. Try again.`;return n?`${r} ${n}`:r}function Ov(e){let t={};for(let n=1;n<e.length;n++)t[e[n]]=e[n-1];return t}function kv(e){let t=new Set;for(let n of e){let e=n.path.replace(/\\/g,`/`),r=e.lastIndexOf(`/`);t.add(r>=0?e.slice(0,r):`pipelines`)}return t.size===0&&t.add(`pipelines`),[...t].sort()}function Av({isOpen:e,onClose:t,onCreated:n,pipelines:r}){let i=kv(r),[a,o]=(0,v.useState)(i[0]??`pipelines`),[s,c]=(0,v.useState)(``),[l,u]=(0,v.useState)([]),[d,f]=(0,v.useState)(``),[p,m]=(0,v.useState)(`linear`),[h,g]=(0,v.useState)({}),[_,y]=(0,v.useState)({}),[b,x]=(0,v.useState)(null),[S,C]=(0,v.useState)(!1),w=(0,v.useRef)(!1);(0,v.useEffect)(()=>{e&&!w.current&&(o(kv(r)[0]??`pipelines`),c(``),u([]),f(``),m(`linear`),g({}),y({}),x(null)),w.current=e},[e,r]),(0,v.useEffect)(()=>{if(!e)return;function t(e){e.key===`Escape`&&j()}return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e]);function T(e){e!==p&&(g(e===`dependencies`?Ov(l):{}),m(e))}function E(){let e=d.trim();!e||l.includes(e)||(u(t=>[...t,e]),f(``))}function D(e,t){u(n=>{let r=e+t;if(r<0||r>=n.length)return n;let i=[...n],[a]=i.splice(e,1);return i.splice(r,0,a),p===`dependencies`&&g(Ov(i)),i})}function O(e){let t=l[e];u(t=>t.filter((t,n)=>n!==e)),g(e=>{let n={...e};delete n[t];for(let[e,r]of Object.entries(n))r===t&&delete n[e];return n})}function k(e,t){g(n=>{let r={...n};return t?r[e]=t:delete r[e],r})}async function A(){let e=s.trim(),t=a.trim(),r=Ev({directory:t,id:e,selectedStageIds:l,compositionMode:p,stageNeeds:h});if(y(r),x(null),Object.keys(r).length>0)return;C(!0);let i=await Pn({directory:t,id:e,stages:l.map(e=>{if(p===`dependencies`){let t=h[e];return t?{id:e,uses:`./${e}.yaml`,needs:t}:{id:e,uses:`./${e}.yaml`}}return{id:e,uses:`./${e}.yaml`}})});if(C(!1),i.ok){n(i.pipeline);return}x(Dv(i.status,i.error))}function j(){c(``),u([]),f(``),m(`linear`),g({}),y({}),x(null),t()}return e?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,className:`drawer-scrim`,"aria-label":`Close panel`,onClick:j}),(0,q.jsxs)(`aside`,{className:`drawer drawer--right`,"aria-labelledby":`new-pipeline-title`,children:[(0,q.jsxs)(`div`,{className:`drawer__head`,children:[(0,q.jsx)(`h2`,{id:`new-pipeline-title`,style:{margin:0,fontSize:`var(--font-size-lg)`},children:`New pipeline`}),(0,q.jsx)(`span`,{style:{marginLeft:`auto`}}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:j,children:`Close`})]}),(0,q.jsxs)(`div`,{className:`drawer__body`,children:[b?(0,q.jsx)(`div`,{className:`gate`,style:{padding:`var(--spacing-4)`,marginBottom:`var(--spacing-5)`,borderColor:`var(--color-border-red)`,borderLeftColor:`var(--color-error)`,background:`var(--color-background-red)`,color:`var(--color-text-red)`},children:(0,q.jsx)(`p`,{className:`gate__question`,style:{color:`var(--color-text-primary)`,margin:0},children:b})}):null,(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-pipeline-directory`,children:`Directory`}),(0,q.jsx)(`input`,{id:`new-pipeline-directory`,className:`input`,list:`pipeline-directory-options`,value:a,onChange:e=>o(e.target.value),autoComplete:`off`,spellCheck:!1}),(0,q.jsx)(`datalist`,{id:`pipeline-directory-options`,children:i.map(e=>(0,q.jsx)(`option`,{value:e},e))}),_.directory?(0,q.jsx)(`p`,{className:`field-error`,children:_.directory}):(0,q.jsxs)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:[`Repo-relative folder for `,(0,q.jsxs)(`span`,{className:`mono`,children:[s.trim()||`id`,`.pipeline.yaml`]}),` and stage files.`]})]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-pipeline-id`,children:`Id`}),(0,q.jsx)(`input`,{id:`new-pipeline-id`,className:`input`,value:s,onChange:e=>c(e.target.value),autoComplete:`off`,spellCheck:!1}),_.id?(0,q.jsx)(`p`,{className:`field-error`,children:_.id}):null]}),(0,q.jsxs)(`div`,{className:`filters`,style:{marginTop:`var(--spacing-2)`},children:[(0,q.jsx)(`button`,{type:`button`,className:`tab`,"data-active":p===`linear`?`true`:void 0,onClick:()=>T(`linear`),children:`Linear`}),(0,q.jsx)(`button`,{type:`button`,className:`tab`,"data-active":p===`dependencies`?`true`:void 0,onClick:()=>T(`dependencies`),children:`Dependencies`})]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`span`,{className:`eyebrow`,children:`Stage ids`}),(0,q.jsxs)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,margin:`var(--spacing-1) 0 var(--spacing-3)`},children:[`Each id maps to `,(0,q.jsx)(`span`,{className:`mono`,children:`./<id>.yaml`}),` beside the pipeline file. Create stage files first.`]}),(0,q.jsxs)(`div`,{style:{display:`flex`,gap:`var(--spacing-2)`,marginBottom:`var(--spacing-3)`},children:[(0,q.jsx)(`input`,{className:`input`,value:d,onChange:e=>f(e.target.value),placeholder:`stage-id`,autoComplete:`off`,spellCheck:!1,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),E())}}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:E,children:`Add`})]}),l.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`No stages added yet.`}):(0,q.jsx)(`ul`,{style:{listStyle:`none`,margin:0,padding:0},children:l.map((e,t)=>(0,q.jsxs)(`li`,{style:{display:`flex`,alignItems:`center`,gap:`var(--spacing-2)`,padding:`var(--spacing-2) 0`,borderBottom:`1px solid var(--color-border)`},children:[(0,q.jsxs)(`span`,{className:`mono`,style:{flex:p===`dependencies`?void 0:1},children:[t+1,`. `,e]}),p===`dependencies`?(0,q.jsxs)(`label`,{style:{display:`flex`,alignItems:`center`,gap:`var(--spacing-2)`,flex:1,fontSize:`var(--font-size-sm)`},children:[(0,q.jsx)(`span`,{className:`muted`,children:`Needs`}),(0,q.jsxs)(`select`,{className:`input`,value:h[e]??``,onChange:t=>k(e,t.target.value),style:{flex:1,minWidth:0},children:[(0,q.jsx)(`option`,{value:``,children:`(none — root)`}),l.filter(t=>t!==e).map(e=>(0,q.jsx)(`option`,{value:e,children:e},e))]})]}):null,(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm btn--ghost`,disabled:t===0,onClick:()=>D(t,-1),children:`Up`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm btn--ghost`,disabled:t===l.length-1,onClick:()=>D(t,1),children:`Down`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm btn--ghost`,onClick:()=>O(t),children:`Remove`})]},`${e}-${t}`))}),_.stages?(0,q.jsx)(`p`,{className:`field-error`,children:_.stages}):null]}),(0,q.jsxs)(`div`,{className:`form-actions`,children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:S,onClick:()=>void A(),children:S?`Creating…`:`Create pipeline`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:j,children:`Cancel`})]})]})]})]}):null}function jv(e,t){return e===`all`?{}:e===`none`?{gate_kinds:[]}:{gate_kinds:t}}var Mv=/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/,Nv=`__inherit__`,Pv=`__other__`,Fv=[`free_text`,`confirm`,`multi_question`,`artifact_backed`];function Iv(e){let t={},n=e.id.trim();return n?(n.length>64||!Mv.test(n))&&(t.id=`Id must be lowercase kebab-case.`):t.id=`Id is required.`,e.useDropdown&&e.modelSelect===`__other__`&&!e.model.trim()&&(t.model=`Model is required when Other is selected.`),e.system_prompt.trim()||(t.system_prompt=`System prompt is required.`),t}function Lv(e){return e.useDropdown?e.modelSelect===`__inherit__`?``:e.modelSelect===`__other__`?e.customModel.trim():e.modelSelect.trim():e.plainModel.trim()}function Rv(e,t){let n=e===409?`Could not create Stage: this id already exists.`:`Could not create Stage. Try again.`,r=t?.trim();return r?`${n} ${r}`:n}var zv=()=>({id:``,system_prompt:``,gateMode:`all`,gateKinds:[],modelSelect:Nv,customModel:``,plainModel:``});function Bv({isOpen:e,onClose:t,onCreated:n,pipelineDirectory:r}){let[i,a]=(0,v.useState)(zv),[o,s]=(0,v.useState)(null),[c,l]=(0,v.useState)(!1),[u,d]=(0,v.useState)({}),[f,p]=(0,v.useState)(null),[m,h]=(0,v.useState)(!1);(0,v.useEffect)(()=>{if(!e)return;let t=!1;return(async()=>{try{let{models:e}=await Nn();if(t)return;e.length>0?(s(e),l(!0)):(s([]),l(!1))}catch{if(t)return;s(null),l(!1)}})(),()=>{t=!0}},[e]),(0,v.useEffect)(()=>{if(!e)return;function n(e){e.key===`Escape`&&t()}return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e,t]);function g(){return Lv({useDropdown:c,modelSelect:i.modelSelect,customModel:i.customModel,plainModel:i.plainModel})}function _(e){a(t=>({...t,gateKinds:t.gateKinds.includes(e)?t.gateKinds.filter(t=>t!==e):[...t.gateKinds,e]}))}async function y(){let e=g(),t={id:i.id.trim(),system_prompt:i.system_prompt,model:e},o=Iv({...t,useDropdown:c,modelSelect:i.modelSelect});if(d(o),p(null),Object.keys(o).length>0)return;h(!0);let s=await Fn({pipeline_directory:r,filename:`${i.id.trim()}.yaml`,id:t.id,system_prompt:t.system_prompt,...e.length>0?{model:e}:{},...jv(i.gateMode,i.gateKinds)});if(h(!1),s.ok){a(zv()),d({}),p(null),n(s.stage);return}p(Rv(s.status,s.error))}function b(){a(zv()),d({}),p(null),t()}return e?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,className:`drawer-scrim`,"aria-label":`Close panel`,onClick:b}),(0,q.jsxs)(`aside`,{className:`drawer drawer--right`,"aria-labelledby":`new-stage-title`,children:[(0,q.jsxs)(`div`,{className:`drawer__head`,children:[(0,q.jsx)(`h2`,{id:`new-stage-title`,style:{margin:0,fontSize:`var(--font-size-lg)`},children:`New stage`}),(0,q.jsx)(`span`,{style:{marginLeft:`auto`}}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:b,children:`Close`})]}),(0,q.jsxs)(`div`,{className:`drawer__body`,children:[f?(0,q.jsx)(`div`,{className:`gate`,style:{padding:`var(--spacing-4)`,marginBottom:`var(--spacing-5)`,borderColor:`var(--color-border-red)`,borderLeftColor:`var(--color-error)`,background:`var(--color-background-red)`,color:`var(--color-text-red)`},children:(0,q.jsx)(`p`,{className:`gate__question`,style:{color:`var(--color-text-primary)`,margin:0},children:f})}):null,(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-stage-id`,children:`Id`}),(0,q.jsx)(`input`,{id:`new-stage-id`,className:`input`,value:i.id,onChange:e=>a(t=>({...t,id:e.target.value})),autoComplete:`off`,spellCheck:!1}),u.id?(0,q.jsx)(`p`,{className:`field-error`,children:u.id}):(0,q.jsxs)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:[`Writes `,(0,q.jsxs)(`span`,{className:`mono`,children:[r,`/<id>.yaml`]}),`.`]})]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-stage-model`,children:`Model`}),c&&o?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`select`,{id:`new-stage-model`,className:`select`,value:i.modelSelect,onChange:e=>a(t=>({...t,modelSelect:e.target.value})),children:[(0,q.jsx)(`option`,{value:Nv,children:`Inherit default`}),o.map(e=>(0,q.jsx)(`option`,{value:e,children:e},e)),(0,q.jsx)(`option`,{value:Pv,children:`Other...`})]}),i.modelSelect===`__other__`?(0,q.jsx)(`input`,{className:`input`,style:{marginTop:`var(--spacing-2)`},value:i.customModel,onChange:e=>a(t=>({...t,customModel:e.target.value})),placeholder:`Model id`,autoComplete:`off`,spellCheck:!1}):null]}):(0,q.jsx)(`input`,{id:`new-stage-model`,className:`input`,value:i.plainModel,onChange:e=>a(t=>({...t,plainModel:e.target.value})),autoComplete:`off`,spellCheck:!1}),u.model?(0,q.jsx)(`p`,{className:`field-error`,children:u.model}):(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:`Optional. Inherits pipeline then global default when omitted.`})]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-stage-prompt`,children:`System prompt`}),(0,q.jsx)(`textarea`,{id:`new-stage-prompt`,className:`textarea`,rows:6,value:i.system_prompt,onChange:e=>a(t=>({...t,system_prompt:e.target.value}))}),u.system_prompt?(0,q.jsx)(`p`,{className:`field-error`,children:u.system_prompt}):null]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`span`,{className:`eyebrow`,children:`HITL`}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,margin:`var(--spacing-1) 0 var(--spacing-3)`},children:`All kinds keeps every ask kind available. No HITL unregisters ask_operator. Allowlist restricts kinds.`}),(0,q.jsxs)(`div`,{className:`pick`,children:[(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`radio`,name:`new-stage-hitl`,checked:i.gateMode===`all`,onChange:()=>a(e=>({...e,gateMode:`all`}))}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`All kinds`}),(0,q.jsx)(`span`,{className:`muted`,children:` Compatible default. Every ask kind is available.`})]})]}),(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`radio`,name:`new-stage-hitl`,checked:i.gateMode===`none`,onChange:()=>a(e=>({...e,gateMode:`none`}))}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`No HITL`}),(0,q.jsx)(`span`,{className:`muted`,children:` Writes gate_kinds: []. The stage cannot ask the operator.`})]})]}),(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`radio`,name:`new-stage-hitl`,checked:i.gateMode===`allowlist`,onChange:()=>a(e=>({...e,gateMode:`allowlist`}))}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Allowlist`}),(0,q.jsx)(`span`,{className:`muted`,children:` Only the kinds you select.`})]})]})]}),i.gateMode===`allowlist`?(0,q.jsx)(`div`,{className:`pick`,style:{marginTop:`var(--spacing-3)`},children:Fv.map(e=>(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`checkbox`,checked:i.gateKinds.includes(e),onChange:()=>_(e)}),(0,q.jsx)(`span`,{children:(0,q.jsx)(`strong`,{className:`mono`,children:e})})]},e))}):null]}),(0,q.jsxs)(`div`,{className:`form-actions`,children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:m,onClick:()=>void y(),children:m?`Creating…`:`Create stage`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:b,children:`Cancel`})]})]})]})]}):null}function Vv(e){window.location.hash=e.startsWith(`#`)?e:`#${e}`}function Hv(e){return`/runs/${encodeURIComponent(e)}`}function Uv(e,t){return`/runs/${encodeURIComponent(e)}/stages/${encodeURIComponent(t)}`}function Wv(e,t){return`/runs/${encodeURIComponent(e)}/artifacts?path=${encodeURIComponent(t)}`}function Gv(e,t){return`/runs/${encodeURIComponent(e)}/stages/${encodeURIComponent(t)}/envelope`}function Kv(e){return`/pipelines/${encodeURIComponent(e)}`}function qv(e){return`/tasks/${encodeURIComponent(e)}`}function Jv(e){return`/triggers/${encodeURIComponent(e)}`}function Yv(e){return`/skills/${encodeURIComponent(e)}`}function Xv(e,t){return`/extensions/packages/${encodeURIComponent(e)}/${encodeURIComponent(t)}`}function Zv(e){return`/extensions/files/${encodeURIComponent(e)}`}function Qv(e){let t=new URLSearchParams;e?.pipeline&&t.set(`pipeline`,e.pipeline),e?.task&&t.set(`task`,e.task);let n=t.toString();return n?`/workshop?${n}`:`/workshop`}function $v(e){let t=new URLSearchParams;e?.pipeline&&t.set(`pipeline`,e.pipeline),e?.task&&t.set(`task`,e.task);let n=t.toString();return n?`/new?${n}`:`/new`}function ey(e){let t=e.replace(/^#\/?/,``),n=t.indexOf(`?`);return n<0?{path:t,params:new URLSearchParams}:{path:t.slice(0,n),params:new URLSearchParams(t.slice(n+1))}}function ty(e){let t=e.indexOf(`/`),n=t<0?e:e.slice(0,t);return n?decodeURIComponent(n):``}function ny(e=window.location.hash){let{path:t,params:n}=ey(e);if(!t||t===`today`)return{name:`today`};if(t===`runs`)return{name:`runs`};if(t===`new`){let e=n.get(`pipeline`)??void 0,t=n.get(`task`)??void 0;return{name:`new`,...e?{pipelineId:e}:{},...t?{taskPath:t}:{}}}if(t===`pipelines`)return{name:`pipelines`};if(t.startsWith(`pipelines/`)){let e=ty(t.slice(10));if(e)return{name:`pipeline`,pipelineId:e}}if(t===`tasks`)return{name:`tasks`};if(t.startsWith(`tasks/`)){let e=ty(t.slice(6));if(e)return{name:`task`,taskId:e}}if(t===`triggers`)return{name:`triggers`};if(t.startsWith(`triggers/`)){let e=ty(t.slice(9));if(e)return{name:`trigger`,triggerId:e}}if(t===`skills`)return{name:`skills`};if(t.startsWith(`skills/`)){let e=ty(t.slice(7));if(e)return{name:`skill`,skillName:e}}if(t===`extensions`)return{name:`extensions`};if(t.startsWith(`extensions/packages/`)){let e=t.slice(20),n=e.indexOf(`/`);if(n>0){let t=decodeURIComponent(e.slice(0,n)),r=decodeURIComponent(e.slice(n+1));if((t===`user`||t===`project`)&&r)return{name:`extensionPackage`,scope:t,source:r}}}if(t.startsWith(`extensions/files/`)){let e=decodeURIComponent(t.slice(17));if(e)return{name:`extensionFile`,path:e}}if(t===`settings`)return{name:`settings`};if(t===`connect`)return{name:`connect`};if(t===`workshop`||t===`workshop-lab`){let e=n.get(`pipeline`)??void 0,t=n.get(`task`)??void 0;return{name:`workshop`,...e?{pipelinePath:e}:{},...t?{taskPath:t}:{}}}if(t.startsWith(`runs/`)){let e=t.slice(5).split(`/`),r=decodeURIComponent(e[0]??``);if(!r)return{name:`today`};if(e[1]===`stages`&&e[3]===`envelope`&&e[2]&&e.length===4)return{name:`detail`,runId:r,view:{kind:`envelope`,stageId:decodeURIComponent(e[2])}};if(e[1]===`stages`&&e[2]&&e.length===3)return{name:`detail`,runId:r,view:{kind:`stream`,stageId:decodeURIComponent(e[2])}};if(e[1]===`artifacts`&&e.length===2){let e=n.get(`path`);if(e)return{name:`detail`,runId:r,view:{kind:`artifact`,path:e}}}return e.length,{name:`detail`,runId:r,view:{kind:`stream`}}}return{name:`today`}}var ry={center:{kGNEyG:`x6s0dn4`,$$css:!0},end:{kGNEyG:`xuk3077`,$$css:!0},start:{kGNEyG:`x1cy8zhl`,$$css:!0},stretch:{kGNEyG:`x1qjc9v5`,$$css:!0}},iy={start:{kjj79g:`x1nhvcw1`,$$css:!0},center:{kjj79g:`xl56j7k`,$$css:!0},end:{kjj79g:`x13a6bvl`,$$css:!0},between:{kjj79g:`x1qughib`,$$css:!0},around:{kjj79g:`x1l1ennw`,$$css:!0},evenly:{kjj79g:`xaw8158`,$$css:!0}},ay={horizontal:{kXwgrk:`x1q0g3np`,$$css:!0},vertical:{kXwgrk:`xdt5ytf`,$$css:!0}},oy={nowrap:{kwnvtZ:`xozqiw3`,$$css:!0},wrap:{kwnvtZ:`x1a02dak`,$$css:!0},"wrap-reverse":{kwnvtZ:`x8hhl5t`,$$css:!0}},sy={stack:{k1xSpc:`x78zum5`,$$css:!0}},cy={0:{k1C7PZ:`x1o57wo1`,khm7nJ:`x6yxi7o`,$$css:!0},1:{k1C7PZ:`x1lfs0n9`,khm7nJ:`x1ngg2t4`,$$css:!0},2:{k1C7PZ:`xak3so`,khm7nJ:`x1x7z4sm`,$$css:!0},3:{k1C7PZ:`xewh9hi`,khm7nJ:`x4olc9o`,$$css:!0},4:{k1C7PZ:`xty4p9g`,khm7nJ:`xtx9w7w`,$$css:!0},5:{k1C7PZ:`x1eqhezk`,khm7nJ:`x1iu6piu`,$$css:!0},6:{k1C7PZ:`x3qlgwd`,khm7nJ:`xczp1bk`,$$css:!0},8:{k1C7PZ:`xicv188`,khm7nJ:`xgx0vcf`,$$css:!0},10:{k1C7PZ:`x1p37tyl`,khm7nJ:`x1xpicb7`,$$css:!0},"0.5":{k1C7PZ:`x1kihgfc`,khm7nJ:`x1tw44j4`,$$css:!0},"1.5":{k1C7PZ:`x1thn6ci`,khm7nJ:`xhq53yo`,$$css:!0}};function ly({crossAlign:e,direction:t,gap:n,mainAlign:r,wrap:i}){return[sy.stack,ay[t],n!=null&&cy[n],e!=null&&ry[e],r!=null&&iy[r],i!=null&&oy[i]]}var uy={0:{kZCmMZ:`x18gyask`,kwRFfy:`x1s0aq8i`,$$css:!0},1:{kZCmMZ:`x1vsv5vr`,kwRFfy:`x1nryj5t`,$$css:!0},2:{kZCmMZ:`x12gdq22`,kwRFfy:`x1djylfy`,$$css:!0},3:{kZCmMZ:`x126nfab`,kwRFfy:`x1t818jl`,$$css:!0},4:{kZCmMZ:`x1rey3nv`,kwRFfy:`xnjyzlh`,$$css:!0},5:{kZCmMZ:`x1blguxw`,kwRFfy:`xdbrk9v`,$$css:!0},6:{kZCmMZ:`x31w388`,kwRFfy:`x1we12cn`,$$css:!0},8:{kZCmMZ:`x1j3hnjz`,kwRFfy:`x1q91b2g`,$$css:!0},10:{kZCmMZ:`xqp078j`,kwRFfy:`x160ivqr`,$$css:!0},"0.5":{kZCmMZ:`x138rykx`,kwRFfy:`x1le3yxw`,$$css:!0},"1.5":{kZCmMZ:`xfti1ec`,kwRFfy:`x17hk9do`,$$css:!0}},dy={0:{kLKAdn:`x1ydh6w3`,kGO01o:`x1l20ajd`,$$css:!0},1:{kLKAdn:`xfsso4q`,kGO01o:`xy143xn`,$$css:!0},2:{kLKAdn:`x1xye8es`,kGO01o:`x1wesfrj`,$$css:!0},3:{kLKAdn:`x1vlblms`,kGO01o:`xvmdzux`,$$css:!0},4:{kLKAdn:`x1oa1p4a`,kGO01o:`x1awphl8`,$$css:!0},5:{kLKAdn:`xx7rijo`,kGO01o:`x1hk98q`,$$css:!0},6:{kLKAdn:`x1adxfkp`,kGO01o:`xjpqqx5`,$$css:!0},8:{kLKAdn:`xoxd1wu`,kGO01o:`x2oz4g1`,$$css:!0},10:{kLKAdn:`xk6660b`,kGO01o:`x2izi54`,$$css:!0},"0.5":{kLKAdn:`xbx876j`,kGO01o:`xij103a`,$$css:!0},"1.5":{kLKAdn:`x1kwdpsa`,kGO01o:`x1opdxmq`,$$css:!0}},fy={scrollable:{kVQacm:`xysyzu8`,$$css:!0}};function py({direction:e=`vertical`,hAlign:t,vAlign:n,justify:r,align:i,gap:a,padding:o,paddingInline:s,paddingBlock:c,isScrollable:l,width:u,height:d,maxWidth:f,minHeight:p,wrap:m,as:h=`div`,xstyle:g,className:_,style:y,children:b,ref:x,...S}){let C=t??(e===`horizontal`?r:i),T=n??(e===`horizontal`?i:r),E=e===`horizontal`?C:T,D=e===`horizontal`?T:C,O=s??o,k=c??o,A=w(...ly({direction:e,crossAlign:D,mainAlign:E,gap:a,wrap:m}),O!=null&&uy[O],k!=null&&dy[k],l&&fy.scrollable,g),j={...u!=null&&{width:typeof u==`number`?`${u}px`:u},...d!=null&&{height:typeof d==`number`?`${d}px`:d},...f!=null&&{maxWidth:typeof f==`number`?`${f}px`:f},...p!=null&&{minHeight:typeof p==`number`?`${p}px`:p}};return(0,v.createElement)(h,{ref:x,...J(Y(`stack`,{direction:e,gap:a,wrap:m}),A,_,{...y,...j}),...S},b)}py.displayName=`Stack`;var my={reset:{kAzted:`x2lwn1j`,k7Eaqz:`xeuugli`,$$css:!0}},hy={center:{kSGwAc:`xamitd3`,$$css:!0},end:{kSGwAc:`xpvyfi4`,$$css:!0},start:{kSGwAc:`xqcrz7y`,$$css:!0},stretch:{kSGwAc:`xkh2ocl`,$$css:!0}},gy={fill:{kzQI83:`x1iyjqo2`,$$css:!0},static:{kzQI83:`x1c4vz4f`,kmuXW:`x2lah0s`,$$css:!0}};function _y({crossAlignSelf:e,size:t}={}){return[my.reset,gy[t??`static`],e!=null&&hy[e]]}var vy={scrollable:{kVQacm:`xysyzu8`,$$css:!0}};function yy({crossAlignSelf:e,size:t,isScrollable:n,as:r=`div`,xstyle:i,className:a,style:o,children:s,ref:c,...l}){let u=w(..._y({crossAlignSelf:e,size:t}),n&&vy.scrollable,i);return(0,v.createElement)(r,{ref:c,...J(Y(`stack-item`,{size:t}),u,a,o),...l},s)}yy.displayName=`StackItem`;function by({status:e}){let t=fi(e),n=t&&t!==`running`?`status status--${t}`:`status`,r=t?`dot dot--${t}`:`dot`;return(0,q.jsxs)(`span`,{className:n,children:[(0,q.jsx)(`span`,{className:r}),` `,pi(e)]})}var xy=null,Sy=null;function Cy(e,t=4e3){xy||(xy=document.createElement(`div`),xy.className=`toast`,xy.setAttribute(`role`,`status`),document.body.appendChild(xy)),xy.textContent=e,xy.setAttribute(`data-show`,`true`),Sy&&clearTimeout(Sy),Sy=setTimeout(()=>{xy?.setAttribute(`data-show`,`false`)},t)}function wy(e){return e.map(e=>{let t=e.gate_kinds;return{id:e.id,label:e.id,status:ni(t)?`waiting`:`pending`,meta:Ty(t)}})}function Ty(e){return!Array.isArray(e)||e.length===0?`none`:e.join(` · `)}function Ey(e){return e.inline?`inline`:e.uses_path?e.uses_path:`—`}function Dy(e){let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/`);return n>=0?t.slice(0,n):`.`}function Oy(e,t){let n=Dy(e.path);return t.filter(e=>n===`.`?!e.path.includes(`/`):e.path.startsWith(`${n}/`))[0]?.path??t[0]?.path}function ky({stages:e}){return(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`span`,{className:`mini`,"aria-hidden":`true`,children:e.map((e,t)=>(0,q.jsxs)(v.Fragment,{children:[t>0?(0,q.jsx)(`i`,{className:`mini__w`}):null,(0,q.jsx)(`i`,{className:`mini__n`,"data-s":ni(e.gate_kinds)?`waiting`:void 0,children:ni(e.gate_kinds)?`?`:String(t+1)})]},e.id))}),(0,q.jsx)(`span`,{className:`mini__label`,style:{display:`block`},children:e.map(e=>e.id).join(` · `)})]})}function Ay({pipelineId:e,onNew:t}){let{snapshot:n,error:r,loading:i}=Mr(),[a,o]=(0,v.useState)([]),[s,c]=(0,v.useState)([]),[l,u]=(0,v.useState)(null),[d,f]=(0,v.useState)(!0),[p,m]=(0,v.useState)(!1),[h,g]=(0,v.useState)(!1),_=(0,v.useCallback)(async()=>{try{let[e,t]=await Promise.all([On(),Dn()]);o(e.pipelines),c(t.tasks),u(null)}catch(e){u(e instanceof Error?e.message:String(e))}finally{f(!1)}},[]);(0,v.useEffect)(()=>{_()},[_]);let y=d||i,b=l??r,x=e?a.find(t=>t.id===e)??null:null,S=x?Xr(n,x):[];async function C(e){g(!1);try{let e=await On();o(e.pipelines),u(null)}catch(e){u(e instanceof Error?e.message:String(e))}Cy(`Pipeline created · ${e.id}`),t(Kv(e.id))}return e?(0,q.jsx)(jy,{pipelineId:e,pipeline:x,tasks:s,runs:S,loading:y,error:b,onNew:t,onStageCreated:()=>void _(),stagePanelOpen:p,onOpenStagePanel:()=>m(!0),onCloseStagePanel:()=>m(!1)}):(0,q.jsxs)(`div`,{className:`main__inner main__inner--wide`,children:[(0,q.jsxs)(`div`,{className:`page-head`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Pipelines`}),(0,q.jsx)(`p`,{children:`Manifest-declared pipeline files and their embedded stages. Each row shows its chain and which stages will stop for a human.`})]}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,onClick:()=>g(!0),children:`New pipeline`})]}),b?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:b}):null,y?(0,q.jsx)(`p`,{className:`muted`,children:`Loading pipelines…`}):null,!y&&a.length===0?(0,q.jsxs)(`div`,{className:`empty-hint`,children:[(0,q.jsxs)(`p`,{style:{margin:`0 0 var(--spacing-3)`},children:[`No pipelines in the manifest yet. Add a `,(0,q.jsx)(`span`,{className:`mono`,children:`stageflow.yaml`}),` catalog entry or run`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`sf init`}),`.`]}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,onClick:()=>g(!0),children:`New pipeline`})]}):null,!y&&a.length>0?(0,q.jsx)(q.Fragment,{children:a.map(e=>{let t=Xr(n,e),r=ri(e.stages);return(0,q.jsxs)(`a`,{className:`rrow`,href:`#${Kv(e.id)}`,children:[(0,q.jsxs)(`span`,{className:`rrow__id`,children:[(0,q.jsx)(`span`,{className:`rrow__task`,children:e.id}),(0,q.jsx)(`span`,{className:`rrow__pipe`,children:e.path})]}),(0,q.jsxs)(`span`,{className:`rrow__right`,children:[r===1?`1 gate`:`${r} gates`,(0,q.jsx)(`br`,{}),(0,q.jsxs)(`span`,{className:`mono`,style:{fontSize:`var(--font-size-xs)`},children:[t.length,` `,t.length===1?`run`:`runs`]})]}),(0,q.jsx)(`span`,{className:`rrow__track`,children:(0,q.jsx)(ky,{stages:e.stages})})]},`${e.path}:${e.id}`)})}):null,(0,q.jsx)(Av,{isOpen:h,onClose:()=>g(!1),onCreated:e=>void C(e),pipelines:a})]})}function jy({pipelineId:e,pipeline:t,tasks:n,runs:r,loading:i,error:a,onNew:o,onStageCreated:s,stagePanelOpen:c,onOpenStagePanel:l,onCloseStagePanel:u}){let d=(0,v.useMemo)(()=>t?wy(t.stages):[],[t]),f=t?ri(t.stages):0,p=t?`${t.path} · ${t.stages.length} stages · ${f===1?`1 gate`:`${f} gates`} · ${r.length} ${r.length===1?`run`:`runs`}`:e,m=t?Oy(t,n):void 0;return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`p`,{className:`crumbs`,children:[(0,q.jsx)(`a`,{href:`#/pipelines`,children:`Pipelines`}),` / `,e]}),(0,q.jsxs)(`div`,{className:`page-head`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:e}),(0,q.jsx)(`p`,{className:`mono`,children:p})]}),t?(0,q.jsxs)(`div`,{className:`page-head__actions`,children:[(0,q.jsx)(`a`,{className:`btn`,href:`#${Qv({pipeline:t.path})}`,children:`Open in Workshop`}),(0,q.jsx)(`button`,{className:`btn btn--primary`,onClick:()=>o($v({pipeline:t.path,...m?{task:m}:{}})),children:`Start a run with this`})]}):null]}),a?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:a}):null,i?(0,q.jsx)(`p`,{className:`muted`,children:`Loading…`}):null,!i&&!t?(0,q.jsxs)(`p`,{className:`muted`,children:[e,` is not in the current manifest catalog.`]}):null,t?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Z_,{stages:d,mode:`definition`}),(0,q.jsxs)(`div`,{className:`page-head`,style:{marginTop:`var(--spacing-6)`},children:[(0,q.jsx)(`h3`,{style:{margin:0},children:`Stages`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:l,children:`Add stage file`})]}),(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Stage`}),(0,q.jsx)(`th`,{children:`Gate`}),(0,q.jsx)(`th`,{children:`Source`})]})}),(0,q.jsx)(`tbody`,{children:t.stages.map(e=>(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`td`,{className:`mono`,children:e.id}),(0,q.jsx)(`td`,{className:`muted`,children:Ty(e.gate_kinds)}),(0,q.jsx)(`td`,{className:`mono muted`,children:Ey(e)})]},e.id))})]}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-3)`},children:f===1?`Only one stage stops for a human. That is worth knowing before you start a run, not after.`:f===0?`No stage in this pipeline is declared to stop for a human.`:`${f} stages stop for a human.`}),(0,q.jsx)(`h3`,{style:{marginTop:`var(--spacing-6)`},children:`Recent runs`}),r.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`No runs of this pipeline yet.`}):(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Task`}),(0,q.jsx)(`th`,{children:`Status`}),(0,q.jsx)(`th`,{children:`When`})]})}),(0,q.jsx)(`tbody`,{children:r.map(e=>(0,q.jsxs)(`tr`,{children:[(0,q.jsxs)(`td`,{children:[(0,q.jsx)(`a`,{href:`#${Hv(e.run_id)}`,children:Rr(e)}),e.task_path?(0,q.jsx)(`span`,{className:`muted mono`,style:{display:`block`,fontSize:`var(--font-size-xs)`},children:Pr(e.task_path,e.project_root)}):null]}),(0,q.jsx)(`td`,{children:(0,q.jsx)(by,{status:di(e)})}),(0,q.jsx)(`td`,{className:`muted`,children:ii(e.created_at)})]},e.run_id))})]})]}):null,(0,q.jsx)(Bv,{isOpen:c,onClose:u,pipelineDirectory:t?Dy(t.path):`pipelines`,onCreated:e=>{u(),s()}})]})}function My({taskId:e,onNew:t}){let{snapshot:n,error:r,loading:i}=Mr(),[a,o]=(0,v.useState)([]),[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(!0),d=(0,v.useCallback)(async()=>{try{let e=await Dn();o(e.tasks),c(null)}catch(e){c(e instanceof Error?e.message:String(e))}finally{u(!1)}},[]);(0,v.useEffect)(()=>{d()},[d]);let f=l||i,p=s??r,m=e?a.find(t=>t.id===e)??null:null,h=m?Yr(n,m.id):[];return e?(0,q.jsx)(Ny,{taskId:e,task:m,runs:h,loading:f,error:p,onNew:t}):(0,q.jsxs)(`div`,{className:`main__inner main__inner--wide`,children:[(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Tasks`}),(0,q.jsx)(`p`,{children:`A task is a brief plus the pipeline it should run through. Tasks are reusable; runs are not.`})]})}),p?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:p}):null,f?(0,q.jsx)(`p`,{className:`muted`,children:`Loading tasks…`}):null,!f&&a.length===0?(0,q.jsx)(`p`,{className:`muted`,children:`No tasks yet. Add a YAML file under tasks/ in this project.`}):null,!f&&a.length>0?(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Task`}),(0,q.jsx)(`th`,{children:`Pipeline`}),(0,q.jsx)(`th`,{children:`Runs`}),(0,q.jsx)(`th`,{children:`Last result`}),(0,q.jsx)(`th`,{})]})}),(0,q.jsx)(`tbody`,{children:a.map(e=>{let r=Yr(n,e.id),i=r[0],a=i?di(i):void 0,o=i?.pipeline_id;return(0,q.jsxs)(`tr`,{children:[(0,q.jsxs)(`td`,{children:[(0,q.jsx)(`a`,{href:`#${qv(e.id)}`,children:e.id}),(0,q.jsx)(`div`,{className:`muted`,style:{fontSize:`var(--font-size-xs)`},children:e.goal})]}),(0,q.jsx)(`td`,{className:`mono`,children:o??`—`}),(0,q.jsx)(`td`,{className:`mono`,children:r.length}),(0,q.jsx)(`td`,{children:a?(0,q.jsx)(by,{status:a}):(0,q.jsx)(`span`,{className:`muted`,children:`no runs`})}),(0,q.jsx)(`td`,{style:{textAlign:`right`},children:i?(0,q.jsx)(`a`,{className:`btn btn--sm`,href:`#${Hv(i.run_id)}`,children:`Open run`}):(0,q.jsx)(`button`,{className:`btn btn--sm`,onClick:()=>t($v({task:e.path})),children:`Run it`})})]},e.id)})})]}):null]})}function Ny({taskId:e,task:t,runs:n,loading:r,error:i,onNew:a}){let o=n[0],s=o?.pipeline_path&&o.project_root?Pr(o.pipeline_path,o.project_root):o?.pipeline_path&&!o.pipeline_path.startsWith(`/`)?o.pipeline_path:void 0,c=Wr({runs:n,health:null}),l=c.waiting.length+c.inFlight.length,u=t?`${t.path} · ${n.length} ${n.length===1?`run`:`runs`}${l>0?` · ${l} in flight`:``}`:e;return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`p`,{className:`crumbs`,children:[(0,q.jsx)(`a`,{href:`#/tasks`,children:`Tasks`}),` / `,e]}),(0,q.jsxs)(`div`,{className:`page-head`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:e}),(0,q.jsx)(`p`,{className:`mono`,children:u})]}),t?(0,q.jsxs)(`div`,{className:`page-head__actions`,children:[s?(0,q.jsx)(`a`,{className:`btn`,href:`#${Qv({pipeline:s})}`,title:`Opens the bound pipeline; task stays unattached until you attach it`,children:`Open in Workshop`}):(0,q.jsx)(`button`,{type:`button`,className:`btn`,disabled:!0,title:`Run this task once so Workshop can resolve its pipeline path`,children:`Open in Workshop`}),(0,q.jsx)(`button`,{className:`btn btn--primary`,onClick:()=>a($v({task:t.path,pipeline:o?.pipeline_id})),children:`Run it again`})]}):null]}),i?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:i}):null,r?(0,q.jsx)(`p`,{className:`muted`,children:`Loading…`}):null,!r&&!t?(0,q.jsxs)(`p`,{className:`muted`,children:[e,` is not in this project's tasks/ catalog.`]}):null,t?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h3`,{children:`Brief`}),(0,q.jsx)(`p`,{children:t.goal}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Pipeline`}),o?(0,q.jsx)(`a`,{href:`#${Kv(o.pipeline_id)}`,style:{fontWeight:500},children:o.pipeline_id}):(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`No runs yet — pick a pipeline when you start one.`}),(0,q.jsx)(`h3`,{style:{marginTop:`var(--spacing-6)`},children:`Run history`}),n.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`No runs of this task yet.`}):(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Run`}),(0,q.jsx)(`th`,{children:`Status`}),(0,q.jsx)(`th`,{children:`Pipeline`}),(0,q.jsx)(`th`,{children:`When`})]})}),(0,q.jsx)(`tbody`,{children:n.map(e=>(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`td`,{children:(0,q.jsx)(`a`,{href:`#${Hv(e.run_id)}`,children:e.run_id})}),(0,q.jsx)(`td`,{children:(0,q.jsx)(by,{status:di(e)})}),(0,q.jsx)(`td`,{children:(0,q.jsx)(`a`,{href:`#${Kv(e.pipeline_id)}`,children:e.pipeline_id})}),(0,q.jsx)(`td`,{className:`muted`,children:ii(e.created_at)})]},e.run_id))})]})]}):null]})}var Py=/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;function Fy(e){let t={};e.directory.trim()||(t.directory=`Directory is required.`);let n=e.id.trim();return n?(n.length>64||!Py.test(n))&&(t.id=`Id must be lowercase kebab-case.`):t.id=`Id is required.`,e.pipeline||(t.pipeline=`Select a pipeline.`),e.taskMode===`catalog`&&!e.task&&(t.task=`Select a task.`),e.kind===`schedule`&&!e.cron.trim()&&(t.cron=`Cron expression is required.`),e.kind===`event`&&!e.source.trim()&&(t.source=`Event source is required.`),t}function Iy(e,t){let n=t?.trim(),r;return r=e===409?`Could not create trigger: this id already exists.`:e===422?`Could not create trigger: invalid reference or schedule.`:e===400?`Could not create trigger: invalid input.`:`Could not create trigger. Try again.`,n?`${r} ${n}`:r}function Ly(e){let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/`);return n>=0?t.slice(0,n):`.`}var Ry=()=>({directory:``,directoryTouched:!1,id:``,pipeline:``,task:``,taskMode:`catalog`,kind:`manual`,cron:``,timezone:``,source:``,enabled:!0});function zy({isOpen:e,onClose:t,onCreated:n}){let[r,i]=(0,v.useState)(Ry),[a,o]=(0,v.useState)(null),[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)({}),[d,f]=(0,v.useState)(null),[p,m]=(0,v.useState)(!1);(0,v.useEffect)(()=>{if(!e)return;i(Ry()),u({}),f(null),o(null),c(null);let t=!1;return(async()=>{try{let[e,n]=await Promise.all([On(),Dn()]);if(t)return;o(e.pipelines),c(n.tasks)}catch{if(t)return;o([]),c([])}})(),()=>{t=!0}},[e]),(0,v.useEffect)(()=>{if(!e)return;function t(e){e.key===`Escape`&&_()}return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e]);function h(e){i(t=>{let n={...t,pipeline:e};if(!t.directoryTouched&&a){let t=a.find(t=>t.id===e);t&&(n.directory=Ly(t.path))}return n})}async function g(){let e={directory:r.directory.trim(),id:r.id.trim(),pipeline:r.pipeline,task:r.task,taskMode:r.taskMode,kind:r.kind,cron:r.cron.trim(),source:r.source.trim()},t=Fy(e);if(u(t),f(null),Object.keys(t).length>0)return;m(!0);let i=await Mn({directory:e.directory,id:e.id,pipeline:e.pipeline,...e.taskMode===`catalog`?{task:e.task}:{},kind:e.kind,...e.kind===`schedule`?{schedule:{cron:e.cron,...r.timezone.trim()?{timezone:r.timezone.trim()}:{}}}:{},...e.kind===`event`?{event:{source:e.source}}:{},enabled:r.enabled});if(m(!1),i.ok){n(i.trigger);return}f(Iy(i.status,i.error))}function _(){i(Ry()),u({}),f(null),t()}if(!e)return null;let y=a===null,b=s===null;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{type:`button`,className:`drawer-scrim`,"aria-label":`Close panel`,onClick:_}),(0,q.jsxs)(`aside`,{className:`drawer drawer--right`,"aria-labelledby":`new-trigger-title`,children:[(0,q.jsxs)(`div`,{className:`drawer__head`,children:[(0,q.jsx)(`h2`,{id:`new-trigger-title`,style:{margin:0,fontSize:`var(--font-size-lg)`},children:`New trigger`}),(0,q.jsx)(`span`,{style:{marginLeft:`auto`}}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--sm`,onClick:_,children:`Close`})]}),(0,q.jsxs)(`div`,{className:`drawer__body`,children:[d?(0,q.jsx)(`div`,{className:`gate`,style:{padding:`var(--spacing-4)`,marginBottom:`var(--spacing-5)`,borderColor:`var(--color-border-red)`,borderLeftColor:`var(--color-error)`,background:`var(--color-background-red)`,color:`var(--color-text-red)`},children:(0,q.jsx)(`p`,{className:`gate__question`,style:{color:`var(--color-text-primary)`,margin:0},children:d})}):null,(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-trigger-pipeline`,children:`Pipeline`}),(0,q.jsxs)(`select`,{id:`new-trigger-pipeline`,className:`select`,value:r.pipeline,disabled:y,onChange:e=>h(e.target.value),children:[(0,q.jsx)(`option`,{value:``,children:y?`Loading pipelines…`:`Select a pipeline`}),(a??[]).map(e=>(0,q.jsx)(`option`,{value:e.id,children:e.id},e.id))]}),l.pipeline?(0,q.jsx)(`p`,{className:`field-error`,children:l.pipeline}):!y&&a?.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:`No pipelines in the manifest yet.`}):null]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`span`,{className:`eyebrow`,children:`Task`}),(0,q.jsxs)(`div`,{className:`pick`,style:{marginTop:`var(--spacing-2)`},children:[(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`radio`,name:`new-trigger-task-mode`,checked:r.taskMode===`catalog`,onChange:()=>i(e=>({...e,taskMode:`catalog`}))}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Pick from catalog`}),(0,q.jsx)(`span`,{className:`muted`,children:` Runs the same catalog task on every fire.`})]})]}),(0,q.jsxs)(`label`,{className:`pick__opt`,children:[(0,q.jsx)(`input`,{type:`radio`,name:`new-trigger-task-mode`,checked:r.taskMode===`dynamic`,onChange:()=>i(e=>({...e,taskMode:`dynamic`}))}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Dynamic — supplied when fired`}),(0,q.jsx)(`span`,{className:`muted`,children:` No fixed task; the caller must supply one.`})]})]})]}),r.taskMode===`catalog`?(0,q.jsxs)(`div`,{style:{marginTop:`var(--spacing-3)`},children:[(0,q.jsxs)(`select`,{id:`new-trigger-task`,className:`select`,value:r.task,disabled:b,onChange:e=>i(t=>({...t,task:e.target.value})),children:[(0,q.jsx)(`option`,{value:``,children:b?`Loading tasks…`:`Select a task`}),(s??[]).map(e=>(0,q.jsx)(`option`,{value:e.id,children:e.id},e.path))]}),l.task?(0,q.jsx)(`p`,{className:`field-error`,children:l.task}):!b&&s?.length===0?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:`No tasks in the manifest yet.`}):null]}):(0,q.jsxs)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-3)`},children:[`This trigger has no fixed task. Whoever fires it — a webhook, a script,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`sf trigger fire --task-inline`}),`, or the`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`fire_trigger`}),` MCP tool — must supply one, or the fire is rejected.`]})]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-trigger-directory`,children:`Directory`}),(0,q.jsx)(`input`,{id:`new-trigger-directory`,className:`input`,value:r.directory,onChange:e=>i(t=>({...t,directory:e.target.value,directoryTouched:!0})),autoComplete:`off`,spellCheck:!1}),l.directory?(0,q.jsx)(`p`,{className:`field-error`,children:l.directory}):(0,q.jsxs)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:[`Repo-relative folder for `,(0,q.jsxs)(`span`,{className:`mono`,children:[r.id.trim()||`id`,`.trigger.yaml`]}),`.`]})]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-trigger-id`,children:`Id`}),(0,q.jsx)(`input`,{id:`new-trigger-id`,className:`input`,value:r.id,onChange:e=>i(t=>({...t,id:e.target.value})),autoComplete:`off`,spellCheck:!1}),l.id?(0,q.jsx)(`p`,{className:`field-error`,children:l.id}):null]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-trigger-kind`,children:`Kind`}),(0,q.jsxs)(`select`,{id:`new-trigger-kind`,className:`select`,value:r.kind,onChange:e=>i(t=>({...t,kind:e.target.value})),children:[(0,q.jsx)(`option`,{value:`manual`,children:`Manual`}),(0,q.jsx)(`option`,{value:`schedule`,children:`Schedule`}),(0,q.jsx)(`option`,{value:`event`,children:`Event`})]})]}),r.kind===`schedule`?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-trigger-cron`,children:`Cron expression`}),(0,q.jsx)(`input`,{id:`new-trigger-cron`,className:`input mono`,value:r.cron,onChange:e=>i(t=>({...t,cron:e.target.value})),placeholder:`0 * * * *`,autoComplete:`off`,spellCheck:!1}),l.cron?(0,q.jsx)(`p`,{className:`field-error`,children:l.cron}):(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:`Validated server-side against real cron syntax.`})]}),(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-trigger-timezone`,children:`Timezone (optional)`}),(0,q.jsx)(`input`,{id:`new-trigger-timezone`,className:`input`,value:r.timezone,onChange:e=>i(t=>({...t,timezone:e.target.value})),placeholder:`UTC`,autoComplete:`off`,spellCheck:!1})]})]}):null,r.kind===`event`?(0,q.jsxs)(`div`,{className:`form-field`,children:[(0,q.jsx)(`label`,{htmlFor:`new-trigger-source`,children:`Event source`}),(0,q.jsx)(`input`,{id:`new-trigger-source`,className:`input`,value:r.source,onChange:e=>i(t=>({...t,source:e.target.value})),autoComplete:`off`,spellCheck:!1}),l.source?(0,q.jsx)(`p`,{className:`field-error`,children:l.source}):(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:`No event adapter reads this yet; the trigger will not fire on its own until one lands.`}),(0,q.jsxs)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`,marginTop:`var(--spacing-1)`},children:[`Adapter-specific settings (a GitHub poller's `,(0,q.jsx)(`span`,{className:`mono`,children:`repo`}),`, a webhook's `,(0,q.jsx)(`span`,{className:`mono`,children:`secretRef`}),`/`,(0,q.jsx)(`span`,{className:`mono`,children:`header`}),`, an email adapter's `,(0,q.jsx)(`span`,{className:`mono`,children:`host`}),`/`,(0,q.jsx)(`span`,{className:`mono`,children:`port`}),`/`,(0,q.jsx)(`span`,{className:`mono`,children:`user`}),`/`,(0,q.jsx)(`span`,{className:`mono`,children:`secretRef`}),`) live in`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`event.config`}),`, which this console doesn't have a builder for yet — author it via YAML, HTTP, or MCP directly.`]})]}):null,(0,q.jsx)(`div`,{className:`form-field`,children:(0,q.jsxs)(`label`,{className:`pick__opt`,style:{display:`flex`,alignItems:`center`,gap:`var(--spacing-2)`},children:[(0,q.jsx)(`input`,{type:`checkbox`,checked:r.enabled,onChange:e=>i(t=>({...t,enabled:e.target.checked}))}),(0,q.jsx)(`span`,{children:`Enabled`})]})}),(0,q.jsxs)(`div`,{className:`form-actions`,children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:p,onClick:()=>void g(),children:p?`Creating…`:`Create trigger`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:_,children:`Cancel`})]})]})]})]})}function By(e){return e===`schedule`?`Schedule`:e===`event`?`Event`:`Manual`}function Vy(e){return e.kind===`schedule`&&e.schedule?e.schedule.timezone?`${e.schedule.cron} (${e.schedule.timezone})`:e.schedule.cron:e.kind===`event`&&e.event?`on ${e.event.source}`:`Fired manually only`}function Hy(e){return e?`Enabled`:`Disabled`}function Uy(e){return e??`Dynamic (task supplied at fire time)`}function Wy(e){return e??`Dynamic`}function Gy({triggerId:e}){let[t,n]=(0,v.useState)([]),[r,i]=(0,v.useState)(null),[a,o]=(0,v.useState)(!0),[s,c]=(0,v.useState)(!1),l=(0,v.useCallback)(async()=>{try{let e=await kn();n(e.triggers),i(null)}catch(e){i(e instanceof Error?e.message:String(e))}finally{o(!1)}},[]);(0,v.useEffect)(()=>{l()},[l]);async function u(e){c(!1),await l(),Cy(`Trigger created · ${e.id}`)}return e?(0,q.jsx)(Ky,{triggerId:e,onRefreshList:l}):(0,q.jsxs)(`div`,{className:`main__inner main__inner--wide`,children:[(0,q.jsxs)(`div`,{className:`page-head`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Triggers`}),(0,q.jsx)(`p`,{children:`Manifest-declared triggers and what they fire. Schedule and event triggers run automatically; every trigger can also be fired by hand.`})]}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,onClick:()=>c(!0),children:`New trigger`})]}),r?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:r}):null,a?(0,q.jsx)(`p`,{className:`muted`,children:`Loading triggers…`}):null,!a&&t.length===0?(0,q.jsxs)(`div`,{className:`empty-hint`,children:[(0,q.jsxs)(`p`,{style:{margin:`0 0 var(--spacing-3)`},children:[`No triggers yet. Add a `,(0,q.jsx)(`span`,{className:`mono`,children:`*.trigger.yaml`}),` `,`file to this project's catalog.`]}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,onClick:()=>c(!0),children:`New trigger`})]}):null,!a&&t.length>0?(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Trigger`}),(0,q.jsx)(`th`,{children:`Kind`}),(0,q.jsx)(`th`,{children:`Status`}),(0,q.jsx)(`th`,{children:`Last fired`}),(0,q.jsx)(`th`,{})]})}),(0,q.jsx)(`tbody`,{children:t.map(e=>(0,q.jsxs)(`tr`,{children:[(0,q.jsxs)(`td`,{children:[(0,q.jsx)(`a`,{href:`#${Jv(e.id)}`,children:e.id}),(0,q.jsxs)(`div`,{className:`muted`,style:{fontSize:`var(--font-size-xs)`},children:[e.pipeline,` · `,Wy(e.task)]})]}),(0,q.jsx)(`td`,{className:`mono`,children:By(e.kind)}),(0,q.jsx)(`td`,{children:(0,q.jsx)(`span`,{className:e.enabled?void 0:`muted`,children:Hy(e.enabled)})}),(0,q.jsx)(`td`,{className:`muted`,children:e.last_fired_at?ii(e.last_fired_at):`never`}),(0,q.jsx)(`td`,{style:{textAlign:`right`},children:(0,q.jsx)(`a`,{className:`btn btn--sm`,href:`#${Jv(e.id)}`,children:`Open`})})]},e.id))})]}):null,(0,q.jsx)(zy,{isOpen:s,onClose:()=>c(!1),onCreated:e=>void u(e)})]})}function Ky({triggerId:e,onRefreshList:t}){let[n,r]=(0,v.useState)(null),[i,a]=(0,v.useState)(!0),[o,s]=(0,v.useState)(null),[c,l]=(0,v.useState)(!1),u=(0,v.useCallback)(async()=>{try{let t=await An(e);r(t),s(null)}catch(e){s(e instanceof Error?e.message:String(e)),r(null)}finally{a(!1)}},[e]);(0,v.useEffect)(()=>{a(!0),u()},[u]);async function d(){l(!0);try{let n=await jn(e);Cy(n.queued?`Trigger queued · ${e}`:`Trigger fired · ${e} · ${n.runId}`),await u(),t()}catch(e){s(e instanceof Error?e.message:String(e))}finally{l(!1)}}let f=n?`${n.definition_ref} · ${By(n.kind)}`:e;return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`p`,{className:`crumbs`,children:[(0,q.jsx)(`a`,{href:`#/triggers`,children:`Triggers`}),` / `,e]}),(0,q.jsxs)(`div`,{className:`page-head`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:e}),(0,q.jsx)(`p`,{className:`mono`,children:f})]}),n?(0,q.jsx)(`button`,{className:`btn btn--primary`,disabled:c,onClick:()=>void d(),children:c?`Firing…`:`Fire`}):null]}),o?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:o}):null,i?(0,q.jsx)(`p`,{className:`muted`,children:`Loading…`}):null,!i&&!n?(0,q.jsxs)(`p`,{className:`muted`,children:[e,` is not in the current manifest catalog.`]}):null,n?(0,q.jsxs)(`dl`,{className:`kv`,children:[(0,q.jsx)(`dt`,{children:`Pipeline`}),(0,q.jsx)(`dd`,{children:n.pipeline}),(0,q.jsx)(`dt`,{children:`Task`}),(0,q.jsx)(`dd`,{className:n.task?void 0:`muted`,children:Uy(n.task)}),(0,q.jsx)(`dt`,{children:`Kind`}),(0,q.jsx)(`dd`,{children:By(n.kind)}),(0,q.jsx)(`dt`,{children:`Schedule`}),(0,q.jsx)(`dd`,{children:Vy(n)}),(0,q.jsx)(`dt`,{children:`Status`}),(0,q.jsx)(`dd`,{children:Hy(n.enabled)}),(0,q.jsx)(`dt`,{children:`Last fired`}),(0,q.jsx)(`dd`,{children:n.last_fired_at?ii(n.last_fired_at):`never`}),n.last_run_id?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`dt`,{children:`Last run`}),(0,q.jsx)(`dd`,{children:(0,q.jsx)(`a`,{href:`#${Hv(n.last_run_id)}`,children:n.last_run_id})})]}):null,n.next_run_at?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`dt`,{children:`Next run`}),(0,q.jsx)(`dd`,{className:`mono`,children:n.next_run_at})]}):null]}):null]})}function qy({skillName:e}){let[t,n]=(0,v.useState)([]),[r,i]=(0,v.useState)(null),[a,o]=(0,v.useState)(!0),s=(0,v.useCallback)(async()=>{try{let e=await In();n(e.skills),i(null)}catch(e){i(e instanceof Error?e.message:String(e))}finally{o(!1)}},[]);(0,v.useEffect)(()=>{s()},[s]);let c=e?t.find(t=>t.name===e)??null:null;return e?(0,q.jsx)(Jy,{skillName:e,skill:c,loading:a,error:r}):(0,q.jsxs)(`div`,{className:`main__inner main__inner--wide`,children:[(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Skills`}),(0,q.jsx)(`p`,{children:`Skills the Pi SDK can discover on this machine. Factory stages do not load them.`})]})}),r?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:r}):null,a?(0,q.jsx)(`p`,{className:`muted`,children:`Loading skills…`}):null,!a&&t.length===0?(0,q.jsx)(`p`,{className:`muted`,children:`No skills found under ~/.pi/agent/skills, ~/.agents/skills, or this project's .pi/skills / .agents/skills.`}):null,!a&&t.length>0?(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Skill`}),(0,q.jsx)(`th`,{children:`Scope`}),(0,q.jsx)(`th`,{children:`Source`}),(0,q.jsx)(`th`,{children:`Invocation`})]})}),(0,q.jsx)(`tbody`,{children:t.map(e=>(0,q.jsxs)(`tr`,{children:[(0,q.jsxs)(`td`,{children:[(0,q.jsx)(`a`,{href:`#${Yv(e.name)}`,children:e.name}),(0,q.jsx)(`div`,{className:`muted`,style:{fontSize:`var(--font-size-xs)`},children:e.description})]}),(0,q.jsx)(`td`,{className:`mono`,children:e.scope}),(0,q.jsx)(`td`,{className:`mono`,children:e.source}),(0,q.jsx)(`td`,{className:`mono`,children:e.disableModelInvocation?`command-only`:`model`})]},`${e.scope}:${e.filePath}`))})]}):null]})}function Jy({skillName:e,skill:t,loading:n,error:r}){return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`p`,{className:`crumbs`,children:[(0,q.jsx)(`a`,{href:`#/skills`,children:`Skills`}),` / `,e]}),(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:e}),(0,q.jsx)(`p`,{className:`mono`,children:t?`${t.scope} · ${t.source}`:e})]})}),r?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:r}):null,n?(0,q.jsx)(`p`,{className:`muted`,children:`Loading…`}):null,!n&&!t?(0,q.jsxs)(`p`,{className:`muted`,children:[e,` is not in the Pi skill catalog on this machine.`]}):null,t?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h3`,{children:`Description`}),(0,q.jsx)(`p`,{children:t.description}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Invocation`}),(0,q.jsx)(`p`,{className:`mono`,children:t.disableModelInvocation?`command-only`:`model`}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`File path`}),(0,q.jsx)(`p`,{className:`mono`,children:t.filePath}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Base dir`}),(0,q.jsx)(`p`,{className:`mono`,children:t.baseDir})]}):null]})}function Yy({packageScope:e,packageSource:t,filePath:n}){let[r,i]=(0,v.useState)([]),[a,o]=(0,v.useState)([]),[s,c]=(0,v.useState)(null),[l,u]=(0,v.useState)(!0),d=(0,v.useCallback)(async()=>{try{let e=await Ln();i(e.packages),o(e.extensions),c(null)}catch(e){c(e instanceof Error?e.message:String(e))}finally{u(!1)}},[]);if((0,v.useEffect)(()=>{d()},[d]),e&&t){let n=r.find(n=>n.scope===e&&n.source===t)??null;return(0,q.jsx)(Xy,{scope:e,source:t,pkg:n,loading:l,error:s})}if(n){let e=a.find(e=>e.path===n)??null;return(0,q.jsx)(Zy,{filePath:n,file:e,loading:l,error:s})}let f=!l&&r.length===0&&a.length===0;return(0,q.jsxs)(`div`,{className:`main__inner main__inner--wide`,children:[(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Extensions`}),(0,q.jsx)(`p`,{children:`Extensions the Pi SDK can discover on this machine. Factory stages do not load them.`})]})}),s?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:s}):null,l?(0,q.jsx)(`p`,{className:`muted`,children:`Loading extensions…`}):null,f?(0,q.jsx)(`p`,{className:`muted`,children:`No extensions found under ~/.pi/agent/extensions, this project's .pi/extensions, or packages in Pi settings.`}):null,!l&&r.length>0?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h3`,{children:`Packages`}),(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Source`}),(0,q.jsx)(`th`,{children:`Scope`}),(0,q.jsx)(`th`,{children:`Installed`})]})}),(0,q.jsx)(`tbody`,{children:r.map(e=>(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`td`,{children:(0,q.jsx)(`a`,{href:`#${Xv(e.scope,e.source)}`,children:e.source})}),(0,q.jsx)(`td`,{className:`mono`,children:e.scope}),(0,q.jsx)(`td`,{className:`mono`,children:e.installedPath??`not installed`})]},`${e.scope}:${e.source}`))})]})]}):null,!l&&a.length>0?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`h3`,{children:`Files`}),(0,q.jsxs)(`table`,{className:`table`,children:[(0,q.jsx)(`thead`,{children:(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`th`,{children:`Name`}),(0,q.jsx)(`th`,{children:`Scope`}),(0,q.jsx)(`th`,{children:`Source`}),(0,q.jsx)(`th`,{children:`Origin`})]})}),(0,q.jsx)(`tbody`,{children:a.map(e=>(0,q.jsxs)(`tr`,{children:[(0,q.jsx)(`td`,{children:(0,q.jsx)(`a`,{href:`#${Zv(e.path)}`,children:e.name})}),(0,q.jsx)(`td`,{className:`mono`,children:e.scope}),(0,q.jsx)(`td`,{className:`mono`,children:e.source}),(0,q.jsx)(`td`,{className:`mono`,children:e.origin})]},`${e.scope}:${e.path}`))})]})]}):null]})}function Xy({scope:e,source:t,pkg:n,loading:r,error:i}){return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`p`,{className:`crumbs`,children:[(0,q.jsx)(`a`,{href:`#/extensions`,children:`Extensions`}),` / `,t]}),(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:t}),(0,q.jsx)(`p`,{className:`mono`,children:n?`${n.scope} · package`:`${e} · package`})]})}),i?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:i}):null,r?(0,q.jsx)(`p`,{className:`muted`,children:`Loading…`}):null,!r&&!n?(0,q.jsxs)(`p`,{className:`muted`,children:[t,` is not in the Pi package catalog on this machine.`]}):null,n?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Scope`}),(0,q.jsx)(`p`,{className:`mono`,children:n.scope}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Source`}),(0,q.jsx)(`p`,{className:`mono`,children:n.source}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Filtered`}),(0,q.jsx)(`p`,{className:`mono`,children:n.filtered?`yes`:`no`}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Installed path`}),(0,q.jsx)(`p`,{className:`mono`,children:n.installedPath??`not installed`})]}):null]})}function Zy({filePath:e,file:t,loading:n,error:r}){let i=t?.name??e;return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsxs)(`p`,{className:`crumbs`,children:[(0,q.jsx)(`a`,{href:`#/extensions`,children:`Extensions`}),` / `,i]}),(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:i}),(0,q.jsx)(`p`,{className:`mono`,children:t?`${t.scope} · ${t.source}`:e})]})}),r?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`},children:r}):null,n?(0,q.jsx)(`p`,{className:`muted`,children:`Loading…`}):null,!n&&!t?(0,q.jsx)(`p`,{className:`muted`,children:`This path is not in the Pi extension catalog on this machine.`}):null,t?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Scope`}),(0,q.jsx)(`p`,{className:`mono`,children:t.scope}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Source`}),(0,q.jsx)(`p`,{className:`mono`,children:t.source}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Origin`}),(0,q.jsx)(`p`,{className:`mono`,children:t.origin}),(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`File path`}),(0,q.jsx)(`p`,{className:`mono`,children:t.path}),t.baseDir?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-sm)`},children:`Base dir`}),(0,q.jsx)(`p`,{className:`mono`,children:t.baseDir})]}):null]}):null]})}var Qy=`sf-theme`;function $y(){try{let e=localStorage.getItem(Qy);if(e===`light`||e===`dark`||e===`system`)return e}catch{}return`system`}function eb(e){try{localStorage.setItem(Qy,e)}catch{}}function tb({value:e,onChange:t}){return(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Appearance`})}),(0,q.jsx)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:`Applies immediately, on every screen.`}),(0,q.jsx)(`div`,{className:`theme-picks`,role:`radiogroup`,"aria-label":`Color theme`,children:[`system`,`light`,`dark`].map(n=>(0,q.jsxs)(`button`,{type:`button`,className:`theme-pick`,"data-theme":n,"aria-pressed":e===n?`true`:`false`,onClick:()=>{eb(n),t(n)},children:[(0,q.jsx)(`span`,{className:`theme-pick__swatch`,"data-preview":n}),(0,q.jsx)(`strong`,{children:n===`system`?`System`:n===`light`?`Light`:`Dark`}),(0,q.jsx)(`span`,{children:n===`system`?`Follows this machine`:`Astryx neutral`})]},n))})]})}var nb=`http://127.0.0.1:3847/mcp`;function rb(e,t={}){if(t.viteDev)return nb;let n=e.hostname;return n===`localhost`||n===`::1`||n===`[::1]`?n=`127.0.0.1`:n.includes(`:`)&&!n.startsWith(`[`)&&(n=`[${n}]`),`${`${e.protocol}//${n}${e.port?`:${e.port}`:``}`}/mcp`}function ib(e){return`${JSON.stringify({mcpServers:{stageflow:{url:e}}},null,2)}\n`}function ab(){let e=rb(window.location,{viteDev:!1}),t=ib(e),[n,r]=(0,v.useState)(()=>bn());return(0,v.useEffect)(()=>{xn(n)},[n]),(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Operator-host MCP`})}),(0,q.jsx)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:`This console process also serves Streamable HTTP MCP on the same origin. Cursor connects with a URL. There is no stdio command, and the endpoint dies when this process stops.`}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Endpoint`}),(0,q.jsxs)(`p`,{children:[`Same host as this console, path`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`/mcp`}),`. When the Host is bound off loopback, send`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`Authorization: Bearer`}),` with the control token below (drive scope).`]})]}),(0,q.jsx)(`span`,{className:`mono`,style:{wordBreak:`break-all`},children:e})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Control token`}),(0,q.jsxs)(`p`,{children:[`Stored in this browser only (`,(0,q.jsx)(`span`,{className:`mono`,children:`localStorage`}),`). Leave empty for local loopback Hosts that run without`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`STAGEFLOW_CONTROL_TOKEN`}),`.`]})]}),(0,q.jsx)(`input`,{type:`password`,autoComplete:`off`,value:n,onChange:e=>r(e.target.value),placeholder:`STAGEFLOW_CONTROL_TOKEN`,style:{minWidth:`16rem`}})]}),(0,q.jsxs)(`ol`,{className:`steps`,children:[(0,q.jsx)(`li`,{children:(0,q.jsx)(`span`,{children:`Keep this operator console running. MCP is not a second server.`})}),(0,q.jsx)(`li`,{children:(0,q.jsxs)(`span`,{children:[`Open Cursor Settings → MCP, or add`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`.cursor/mcp.json`}),` in this project.`]})}),(0,q.jsx)(`li`,{children:(0,q.jsxs)(`span`,{children:[`Paste the snippet below. Use `,(0,q.jsx)(`span`,{className:`mono`,children:`url`}),`, not`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`command`}),`. Remote clients also need the bearer control token.`]})}),(0,q.jsx)(`li`,{children:(0,q.jsxs)(`span`,{children:[`Reload MCP in Cursor. Tools that should appear:`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`list_pipelines`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`start_run`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`get_run`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`get_health`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`list_runs`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`read_artifact`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`wait_run`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`answer_gate`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`decide_feedback_loop`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`describe_pipeline`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`validate`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`list_providers`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`list_models`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`list_project_mcp`}),`,`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`probe_project_mcp`}),`.`]})})]}),(0,q.jsx)(Uc,{code:t,language:`json`,title:`.cursor/mcp.json`,container:`section`,hasLanguageLabel:!1,width:`100%`}),(0,q.jsx)(`p`,{className:`muted`,style:{margin:`var(--spacing-4) 0 0`,fontSize:`var(--font-size-sm)`},children:`This URL is this console's origin plus /mcp. It must match the MCP endpoint line printed on boot.`}),(0,q.jsxs)(`p`,{className:`muted`,style:{margin:`var(--spacing-2) 0 0`,fontSize:`var(--font-size-sm)`},children:[`MCP can submit a waiting-stage answer (`,(0,q.jsx)(`span`,{className:`mono`,children:`answer_gate`}),`) and a feedback-loop decision (`,(0,q.jsx)(`span`,{className:`mono`,children:`decide_feedback_loop`}),`).`]})]})}var ob=`Servers from this project's git-root .mcp.json. Check tests whether a server can connect. It does not start a run and does not attach tools to stages. YAML mcp: still allowlists what a stage receives.`;function sb(e){switch(e){case`not-yet-probed`:return`Not yet probed`;case`probing`:return`Probing…`;case`connected`:return`Connected`;case`needs_auth`:return`Needs auth`;case`connect_failed`:return`Connect failed`;case`unresolved_var`:return`Unresolved variable`;case`invalid_config`:return`Invalid config`;case`missing_catalog`:return`Missing catalog`;case`cancelled`:return`Cancelled`}}function cb(e){switch(e){case`probing`:return`running`;case`connected`:return`succeeded`;case`needs_auth`:return`waiting`;case`connect_failed`:case`unresolved_var`:case`invalid_config`:case`missing_catalog`:return`failed`;case`not-yet-probed`:case`cancelled`:return}}function lb(e){return e===`missing_catalog`?`No git-root .mcp.json in this project.`:e===`invalid_config`?`Project .mcp.json is invalid.`:null}function ub(e){let t={loading:!0,catalogStatus:null,servers:[],error:null},n=!1,r=new Map,i=new Set,a=()=>t,o=()=>{for(let e of i)e()},s=(e,n)=>{t={...t,servers:t.servers.map(t=>t.name===e?{...t,...n}:t)},o()};return{getState:a,load:async()=>{if(!n){t={loading:!0,catalogStatus:null,servers:[],error:null},o();try{let r=await e.list();if(n)return;if(r.status!==`ok`){t={loading:!1,catalogStatus:r.status,servers:[],error:null},o();return}t={loading:!1,catalogStatus:`ok`,servers:r.servers.map(e=>({name:e.name,transport:e.transport,status:`not-yet-probed`})),error:null},o()}catch(e){if(n)return;t={loading:!1,catalogStatus:null,servers:[],error:e instanceof Error?e.message:String(e)},o()}}},check:async t=>{if(n||r.has(t))return;let i=new AbortController;r.set(t,i),s(t,{status:`probing`,error:void 0});try{let r=await e.probe(t,{signal:i.signal});if(n)return;s(t,{status:r.status,error:r.error})}catch(e){if(n||i.signal.aborted)return;s(t,{status:`connect_failed`,error:e instanceof Error?e.message:String(e)})}finally{r.delete(t)}},dispose:()=>{n=!0;for(let e of r.values())e.abort();r.clear()},subscribe:e=>(i.add(e),()=>{i.delete(e)})}}function db(){let e=(0,v.useRef)(null),[t,n]=(0,v.useState)({loading:!0,catalogStatus:null,servers:[],error:null});(0,v.useEffect)(()=>{let t=ub({list:lr,probe:ur});e.current=t,n(t.getState());let r=t.subscribe(()=>n(t.getState()));return t.load(),()=>{r(),t.dispose(),e.current===t&&(e.current=null)}},[]);let r=t.catalogStatus?lb(t.catalogStatus):null;return(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Project MCP servers`})}),(0,q.jsx)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:ob}),t.error?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:t.error}):null,r?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:r}):null,t.loading?(0,q.jsx)(`p`,{className:`muted`,children:`Loading project catalog…`}):t.catalogStatus===`ok`&&t.servers.length===0?(0,q.jsx)(`p`,{className:`muted`,children:`No servers in .mcp.json.`}):t.servers.map(t=>{let n=cb(t.status),r=t.status===`probing`;return(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:t.name}),(0,q.jsx)(`p`,{children:t.transport}),t.error?(0,q.jsx)(`p`,{children:t.error}):null]}),(0,q.jsxs)(`span`,{style:{display:`flex`,gap:`var(--spacing-2)`,alignItems:`center`},children:[(0,q.jsxs)(`span`,{className:`status`,children:[(0,q.jsx)(`span`,{className:`dot${n?` dot--${n}`:``}`}),` `,sb(t.status)]}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,disabled:r,onClick:()=>void e.current?.check(t.name),children:r?`Probing…`:`Check`})]})]},t.name)})]})}var fb=`Pi may complete login via a local callback in the Stageflow process. If the browser cannot reach this machine, paste the redirect URL or code when prompted.`,pb=`If automatic completion does not finish, paste the redirect URL or manual code below.`;function mb(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n?.type===`auth_url`)return n}}function hb(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n?.type===`device_code`)return n}}function gb(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n?.type===`progress`||n?.type===`info`)return n.message}}function _b(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n?.type===`info`&&n.links&&n.links.length>0)return n.links}}function vb(e){return e.status===`completed`||e.status===`failed`||e.status===`cancelled`}function yb(e){return e.type===`select`?`select`:e.type===`secret`?`password`:`text`}function bb(e){return e.supportsOauth}var xb=500;function Sb({providerId:e,providerName:t,onComplete:n,onDismiss:r}){let[i,a]=(0,v.useState)(null),[o,s]=(0,v.useState)(null),[c,l]=(0,v.useState)(``),[u,d]=(0,v.useState)(!1),[f,p]=(0,v.useState)(null),m=(0,v.useRef)(!1),h=(0,v.useRef)(!1);(0,v.useEffect)(()=>{m.current||(m.current=!0,(async()=>{d(!0);let t=await Gn(e);if(d(!1),!t.ok){s(t.error);return}a(t.session)})())},[e]),(0,v.useEffect)(()=>{if(!i||vb(i))return;let t=window.setInterval(()=>{(async()=>{try{let{session:t}=await Kn(e,i.id);a(t)}catch(e){s(e instanceof Error?e.message:String(e))}})()},xb);return()=>window.clearInterval(t)},[e,i?.id,i?.status]),(0,v.useEffect)(()=>{if(!(!i||!vb(i)||h.current)){if(h.current=!0,i.status===`completed`){n(i.provider,i.warning?.message);return}if(i.status===`failed`){s(i.error?.message??`OAuth login failed`);return}r()}},[i,n,r]);let g=i?.pendingPrompt;(0,v.useEffect)(()=>{g||(l(``),s(e=>e===`Enter a value to continue.`?null:e))},[g]);async function _(e,t){try{await navigator.clipboard.writeText(t),p(e),window.setTimeout(()=>p(null),1500)}catch{s(`Could not copy to clipboard`)}}async function y(){if(!i)return;let t=c.trim();if(!t){s(`Enter a value to continue.`);return}d(!0),s(null);let n=await qn(e,i.id,t);if(d(!1),!n.ok){s(n.error);return}l(``),a(n.session)}async function b(t){if(!i)return;d(!0),s(null);let n=await qn(e,i.id,t);if(d(!1),!n.ok){s(n.error);return}a(n.session)}async function x(){if(!i){r();return}d(!0),await Jn(e,i.id),d(!1),h.current=!0,r()}let S=i?mb(i.events):void 0,C=i?hb(i.events):void 0,w=i?gb(i.events):void 0,T=i?_b(i.events):void 0,E=g?yb(g):null;return(0,q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`var(--spacing-2)`,marginTop:`var(--spacing-2)`},children:[(0,q.jsxs)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:[`Connecting `,t,` with Pi OAuth / subscription login.`]}),w?(0,q.jsx)(`p`,{className:`muted`,style:{margin:0},children:w}):null,T&&T.length>0?(0,q.jsx)(`div`,{style:{display:`flex`,gap:`var(--spacing-2)`,flexWrap:`wrap`},children:T.map(e=>(0,q.jsx)(`a`,{className:`btn btn--ghost`,href:e.url,target:`_blank`,rel:`noreferrer`,children:e.label??`Open link`},e.url))}):null,S?(0,q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`var(--spacing-2)`},children:[S.instructions?(0,q.jsx)(`p`,{style:{margin:0,fontSize:`var(--font-size-sm)`},children:S.instructions}):null,(0,q.jsxs)(`div`,{style:{display:`flex`,gap:`var(--spacing-2)`,flexWrap:`wrap`},children:[(0,q.jsx)(`a`,{className:`btn btn--primary`,href:S.url,target:`_blank`,rel:`noreferrer`,children:`Open browser`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:()=>void _(`url`,S.url),children:f===`url`?`Copied`:`Copy link`})]}),(0,q.jsxs)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:[fb,` `,pb]})]}):null,C?(0,q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`var(--spacing-2)`},children:[(0,q.jsxs)(`p`,{style:{margin:0},children:[`Device code: `,(0,q.jsx)(`strong`,{children:C.userCode})]}),typeof C.expiresInSeconds==`number`?(0,q.jsxs)(`p`,{className:`muted`,style:{margin:0,fontSize:`var(--font-size-sm)`},children:[`Code expires in about `,C.expiresInSeconds,`s.`]}):null,(0,q.jsxs)(`div`,{style:{display:`flex`,gap:`var(--spacing-2)`,flexWrap:`wrap`},children:[(0,q.jsx)(`a`,{className:`btn btn--primary`,href:C.verificationUri,target:`_blank`,rel:`noreferrer`,children:`Open verification page`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:()=>void _(`code`,C.userCode),children:f===`code`?`Copied`:`Copy code`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:()=>void _(`uri`,C.verificationUri),children:f===`uri`?`Copied`:`Copy URI`})]})]}):null,g&&E===`select`?(0,q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`var(--spacing-2)`},children:[(0,q.jsx)(`p`,{style:{margin:0},children:g.message}),(g.options??[]).map(e=>(0,q.jsxs)(`button`,{type:`button`,className:`btn btn--ghost`,disabled:u,onClick:()=>void b(e.id),children:[e.label,e.description?` — ${e.description}`:``]},e.id))]}):null,g&&E!==`select`?(0,q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`var(--spacing-2)`},children:[(0,q.jsx)(`p`,{style:{margin:0},children:g.message}),g.type===`manual_code`?(0,q.jsx)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:pb}):null,(0,q.jsx)(`input`,{className:`input`,type:E===`password`?`password`:`text`,autoComplete:`off`,placeholder:g.placeholder??``,value:c,onChange:e=>l(e.target.value)}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:u,onClick:()=>void y(),children:u?`Sending…`:`Continue`})]}):null,o?(0,q.jsx)(`p`,{style:{margin:0,color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`},children:o}):null,(0,q.jsx)(`div`,{style:{display:`flex`,gap:`var(--spacing-2)`},children:(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,disabled:u,onClick:()=>void x(),children:`Cancel`})})]})}function Cb({provider:e,status:t,connecting:n,oauthing:r,apiKeyDraft:i,rowBusy:a,showDisconnect:o,onSetConnecting:s,onSetOauthing:c,onApiKeyChange:l,onConnectSubmit:u,onDisconnect:d,onOauthComplete:f,onOauthDismiss:p}){let m=t?.configured===!0,h=tv(e),g=bb(e),_=nv(e);return(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:e.name}),(0,q.jsx)(`p`,{children:rv(t)}),n?(0,q.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`var(--spacing-2)`,marginTop:`var(--spacing-2)`},children:[(0,q.jsx)(`input`,{className:`input`,type:`password`,autoComplete:`off`,placeholder:`API key`,value:i,onChange:e=>l(e.target.value)}),(0,q.jsxs)(`div`,{style:{display:`flex`,gap:`var(--spacing-2)`},children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:a,onClick:()=>u(e.id),children:a?`Saving…`:`Save key`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,disabled:a,onClick:()=>{s(null),l(``)},children:`Cancel`})]})]}):null,r?(0,q.jsx)(Sb,{providerId:e.id,providerName:e.name,onComplete:f,onDismiss:p}):null]}),(0,q.jsxs)(`span`,{style:{display:`flex`,gap:`var(--spacing-2)`},children:[m&&o?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,disabled:a||r,onClick:()=>d(e.id),children:`Disconnect`}):null,m&&!o?(0,q.jsx)(`span`,{className:`muted`,children:`Connected`}):null,h&&!m&&!r?(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:a,onClick:()=>{s(e.id),c(null),l(``)},children:`Connect`}):null,g&&!m&&!n&&!r?(0,q.jsx)(`button`,{type:`button`,className:_?`btn btn--primary`:`btn btn--ghost`,disabled:a,onClick:()=>{c(e.id),s(null),l(``)},children:`Connect with OAuth`}):null]})]},e.id)}function wb(){let[e,t]=(0,v.useState)([]),[n,r]=(0,v.useState)({}),[i,a]=(0,v.useState)(!0),[o,s]=(0,v.useState)(null),[c,l]=(0,v.useState)(null),[u,d]=(0,v.useState)(null),[f,p]=(0,v.useState)(``),[m,h]=(0,v.useState)(null),[g,_]=(0,v.useState)(null),[y,b]=(0,v.useState)(null),[x,S]=(0,v.useState)(null),C=(0,v.useCallback)(async()=>{s(null);let[e,n]=await Promise.all([Bn(),Vn()]);S({cursorSdkReady:n.cursorSdkReady,cursorApiKeyConfigured:n.cursorApiKeyConfigured}),t(e.providers);let i={};await Promise.all(e.providers.map(async e=>{try{let{provider:t}=await Hn(e.id);i[e.id]=t}catch{i[e.id]=void 0}})),r(i)},[]);(0,v.useEffect)(()=>{(async()=>{a(!0);try{await C()}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}})()},[C]);async function w(e){let t=f.trim();if(!t){_(`Paste an API key to connect.`);return}h(e),_(null);let n=await Un(e,t);if(h(null),!n.ok){_(n.error);return}p(``),l(null),r(t=>({...t,[e]:n.provider}))}async function T(e){h(e),_(null);let t=await Wn(e);if(h(null),!t.ok){_(t.error);return}r(n=>({...n,[e]:t.provider}))}return(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Providers`})}),(0,q.jsx)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:Q_}),o?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:o}):null,g?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:g}):null,y?(0,q.jsx)(`p`,{style:{color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:y}):null,i?(0,q.jsx)(`p`,{className:`muted`,children:`Loading providers…`}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Cursor (SDK)`}),(0,q.jsx)(`br`,{}),(0,q.jsxs)(`span`,{className:`muted`,children:[`For `,(0,q.jsx)(`code`,{children:`cursor/…`}),` models (not a Pi provider login).`,` `,(0,q.jsx)(`code`,{children:`pi-cursor-sdk`}),` ships with the Stageflow npm package; set`,` `,(0,q.jsx)(`code`,{children:`CURSOR_API_KEY`}),` on the Host process.`]})]}),(0,q.jsx)(`span`,{className:`muted`,children:x?.cursorSdkReady&&x?.cursorApiKeyConfigured?`Connected`:x?.cursorSdkReady?`API key missing on Host`:x?.cursorApiKeyConfigured?`SDK not found`:`Not connected`})]}),e.length===0?(0,q.jsx)(`p`,{className:`muted`,children:`No Pi providers reported.`}):e.map(e=>(0,q.jsx)(Cb,{provider:e,status:n[e.id],connecting:c===e.id,oauthing:u===e.id,apiKeyDraft:f,rowBusy:m===e.id,showDisconnect:!0,onSetConnecting:e=>{l(e),_(null)},onSetOauthing:e=>{d(e),_(null),b(null)},onApiKeyChange:p,onConnectSubmit:e=>void w(e),onDisconnect:e=>void T(e),onOauthComplete:(t,n)=>{d(null),b(n??null),t?r(n=>({...n,[e.id]:t})):C()},onOauthDismiss:()=>{d(null),_(null)}},e.id))]})]})}var Tb=`sf-notify-waiting`;function Eb(){try{let e=localStorage.getItem(Tb);if(e===`system`||e===`off`)return e}catch{}return`off`}function Db(e){try{localStorage.setItem(Tb,e)}catch{}}function Ob(){return typeof Notification>`u`?`unsupported`:Notification.permission}async function kb(){return typeof Notification>`u`?`unsupported`:Notification.permission==="default"?Notification.requestPermission():Notification.permission}function Ab(e,t){let n=new Set(e.map(e=>e.run_id));if(t===null)return{emit:[],nextSeen:n};let r=[],i=new Set(t);for(let t of e)i.has(t.run_id)||(r.push(t),i.add(t.run_id));for(let e of[...i])n.has(e)||i.delete(e);return{emit:r,nextSeen:i}}function jb(e){let{snapshot:t,loading:n}=Mr(),r=(0,v.useRef)(null);(0,v.useEffect)(()=>{if(n)return;let{emit:i,nextSeen:a}=Ab(Gr(t),r.current);if(r.current=a,e){for(let e of i)if(typeof Notification<`u`&&Notification.permission===`granted`){let t=[e.pipeline_id,e.waiting_summary].filter(e=>!!e);new Notification(`Stage waiting on you`,{body:t.join(` — `)})}}},[t,n,e])}var Mb=`cursor/auto`;function Nb(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KiB`:e<1073741824?`${(e/1048576).toFixed(1)} MiB`:`${(e/1073741824).toFixed(2)} GiB`}function Pb({themeMode:e,onThemeChange:t,notifyPreference:n,onNotifyChange:r}){let{snapshot:i,loading:a}=Mr(),o=Nr(),s=i.health,c=a&&s==null,l=!c&&s==null?`unavailable`:null,[u,d]=(0,v.useState)(null),[f,p]=(0,v.useState)(!1),[m,h]=(0,v.useState)(Ob),[g,_]=(0,v.useState)(``),[y,b]=(0,v.useState)([]),[x,S]=(0,v.useState)(null),[C,w]=(0,v.useState)(!1);(0,v.useEffect)(()=>{let e=!1;return(async()=>{try{let[t,n]=await Promise.all([Yn(),Nn()]);if(e)return;_(t.workshopModel??``),b(n.models)}catch(t){if(e)return;S(t instanceof Error?t.message:String(t))}})(),()=>{e=!0}},[]);async function T(e){let t=e===`system`?`system`:`off`;if(Db(t),r(t),t===`system`&&Ob()==="default"){let e=await kb();h(e)}}async function E(e){let t=Number(e);p(!0),d(null);try{await zn(t),await o.refresh()}catch(e){d(e instanceof Error?e.message:String(e))}finally{p(!1)}}async function D(e){w(!0),S(null);try{let t=e.trim()||Mb,n=await Zn(t);_(n.workshopModel??t)}catch(e){S(e instanceof Error?e.message:String(e))}finally{w(!1)}}let O=[1,2,3,4,6],k=s?.maxConcurrent,A=k!=null&&!O.includes(k)?[k,...O]:O;return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Settings`}),(0,q.jsx)(`p`,{children:`Local to this machine. Nothing here is shared, because Stageflow runs as one operator's CLI.`})]})}),(0,q.jsx)(tb,{value:e,onChange:t}),(0,q.jsx)(wb,{}),(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Workshop`})}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Workshop model`}),(0,q.jsx)(`p`,{children:`Default model for Workshop Author chat. Uses the same configured providers as stage runs — no separate credentials. Override per session in Workshop chrome.`})]}),(0,q.jsxs)(`select`,{className:`select`,value:g||Mb,disabled:C,onChange:e=>void D(e.target.value),children:[y.includes(g||Mb)?null:(0,q.jsx)(`option`,{value:g||Mb,children:g||Mb}),y.length===0?(0,q.jsx)(`option`,{value:Mb,children:Mb}):y.map(e=>(0,q.jsx)(`option`,{value:e,children:e},e))]})]}),x?(0,q.jsxs)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:[`Could not update Workshop model: `,x]}):null]}),(0,q.jsx)(db,{}),(0,q.jsx)(ab,{}),(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Concurrency`})}),l?(0,q.jsxs)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:[`Could not load capacity: `,l]}):null,(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Session slots`}),(0,q.jsx)(`p`,{children:`How many stage sessions may be alive at once. A stage waiting on you still holds its slot. Lowering the cap does not stop runs that are already in flight.`})]}),c?(0,q.jsx)(`span`,{className:`muted`,children:`—`}):s?(0,q.jsx)(`select`,{className:`select`,value:s.maxConcurrent,disabled:f,onChange:e=>void E(e.target.value),children:A.map(e=>(0,q.jsxs)(`option`,{value:e,children:[e,e===s.maxConcurrent?` · current`:``]},e))}):(0,q.jsx)(`span`,{className:`muted`,children:`—`})]}),u?(0,q.jsxs)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:[`Could not update slots: `,u]}):null,(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Slots available`}),(0,q.jsx)(`p`,{children:`Free slots that can accept a new run right now.`})]}),(0,q.jsx)(`span`,{className:`muted`,children:c?`—`:s?String(s.slotsAvailable):`—`})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`When slots are full`}),(0,q.jsxs)(`p`,{children:[`New starts enter the admission queue until`,` `,(0,q.jsx)(`span`,{className:`mono`,children:`STAGEFLOW_MAX_QUEUED`}),` is full, then reject with `,(0,q.jsx)(`span`,{className:`mono`,children:`busy_capacity`}),`.`]})]}),(0,q.jsx)(`span`,{className:`muted`,children:`Queue, then busy_capacity`})]})]}),(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Disk`})}),l?(0,q.jsxs)(`p`,{style:{color:`var(--color-text-red)`,fontSize:`var(--font-size-sm)`,marginBottom:`var(--spacing-3)`},children:[`Could not load disk: `,l]}):null,c?(0,q.jsx)(`p`,{className:`muted`,children:`—`}):s?.disk?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Runs`}),(0,q.jsx)(`p`,{children:`Cached workspaces under the durable root.`})]}),(0,q.jsx)(`span`,{className:`muted`,children:Nb(s.disk.runs_bytes)})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsx)(`span`,{children:(0,q.jsx)(`strong`,{children:`Worktrees`})}),(0,q.jsx)(`span`,{className:`muted`,children:Nb(s.disk.worktrees_bytes)})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsx)(`span`,{children:(0,q.jsx)(`strong`,{children:`Repos caches`})}),(0,q.jsx)(`span`,{className:`muted`,children:Nb(s.disk.repos_bytes)})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsx)(`span`,{children:(0,q.jsx)(`strong`,{children:`State database`})}),(0,q.jsx)(`span`,{className:`muted`,children:Nb(s.disk.state_db_bytes)})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsx)(`span`,{children:(0,q.jsx)(`strong`,{children:`A2A artifacts`})}),(0,q.jsx)(`span`,{className:`muted`,children:Nb(s.disk.a2a_artifacts_bytes)})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsx)(`span`,{children:(0,q.jsx)(`strong`,{children:`Free on volume`})}),(0,q.jsx)(`span`,{className:`muted`,children:Nb(s.disk.free_bytes)})]})]}):(0,q.jsx)(`p`,{className:`muted`,children:`Disk breakdown unavailable.`})]}),(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Held stages`})}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Hold timeout`}),(0,q.jsx)(`p`,{children:`A held stage waits until you answer. There is no timeout yet.`})]}),(0,q.jsx)(`span`,{className:`muted`,children:`—`})]}),(0,q.jsxs)(`div`,{className:`setting`,children:[(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`strong`,{children:`Notify me when a stage asks`}),(0,q.jsx)(`p`,{children:`A held stage is invisible if this window is closed. A system notification is the only thing that reaches you.`})]}),(0,q.jsxs)(`select`,{className:`select`,value:n,onChange:e=>void T(e.target.value),children:[(0,q.jsx)(`option`,{value:`system`,children:`System notification`}),(0,q.jsx)(`option`,{value:`off`,children:`Nothing`})]})]}),n===`system`&&m===`denied`?(0,q.jsx)(`p`,{className:`muted`,style:{fontSize:`var(--font-size-xs)`,padding:`var(--spacing-2) 0`},children:`Notifications blocked — enable in browser settings`}):null]})]})}function Fb({onComplete:e}){let[t,n]=(0,v.useState)(!0),[r,i]=(0,v.useState)(null),[a,o]=(0,v.useState)(null),[s,c]=(0,v.useState)([]),[l,u]=(0,v.useState)({}),[d,f]=(0,v.useState)(null),[p,m]=(0,v.useState)(null),[h,g]=(0,v.useState)(``),[_,y]=(0,v.useState)(null);async function b(){let e=(await Bn()).providers.filter(e=>tv(e)||bb(e));c(e);let t={};await Promise.all(e.map(async e=>{try{let{provider:n}=await Hn(e.id);t[e.id]=n}catch{t[e.id]=void 0}})),u(t)}(0,v.useEffect)(()=>{(async()=>{n(!0),i(null);try{(await Vn()).credentialSource===void 0&&await Xn(`sf_owned`),await b()}catch(e){i(e instanceof Error?e.message:String(e))}finally{n(!1)}})()},[]);async function x(e){let t=h.trim();if(!t){i(`Paste an API key to connect.`);return}y(e),i(null);try{await Xn(`sf_owned`)}catch(e){y(null),i(e instanceof Error?e.message:String(e));return}let n=await Un(e,t);if(y(null),!n.ok){i(n.error);return}g(``),f(null),u(t=>({...t,[e]:n.provider}))}let S=Object.values(l).some(e=>e?.configured);return(0,q.jsxs)(`div`,{className:`main__inner`,children:[(0,q.jsx)(`div`,{className:`page-head`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:`Connect providers`}),(0,q.jsx)(`p`,{children:Q_})]})}),t?(0,q.jsx)(`p`,{className:`muted`,children:`Loading providers…`}):null,r?(0,q.jsx)(`p`,{style:{color:`var(--color-text-red)`,marginBottom:`var(--spacing-4)`},children:r}):null,a?(0,q.jsx)(`p`,{style:{color:`var(--color-text-secondary)`,marginBottom:`var(--spacing-4)`},children:a}):null,t?null:(0,q.jsxs)(`section`,{className:`card`,children:[(0,q.jsx)(`div`,{className:`card__head`,children:(0,q.jsx)(`h2`,{children:`Providers`})}),(0,q.jsx)(`p`,{style:{margin:0,color:`var(--color-text-secondary)`,fontSize:`var(--font-size-sm)`},children:`Connect at least one provider with an API key or Pi OAuth / subscription login.`}),s.length===0?(0,q.jsx)(`p`,{className:`muted`,children:`No connectable providers are available from Pi right now.`}):s.map(e=>(0,q.jsx)(Cb,{provider:e,status:l[e.id],connecting:d===e.id,oauthing:p===e.id,apiKeyDraft:h,rowBusy:_===e.id,showDisconnect:!1,onSetConnecting:f,onSetOauthing:m,onApiKeyChange:g,onConnectSubmit:e=>void x(e),onDisconnect:()=>void 0,onOauthComplete:(t,n)=>{m(null),o(n??null),t?u(n=>({...n,[e.id]:t})):b()},onOauthDismiss:()=>m(null)},e.id)),(0,q.jsxs)(`div`,{className:`form-actions`,style:{marginTop:`var(--spacing-4)`},children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:!S,onClick:e,children:`Continue to console`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,onClick:e,children:`Skip for now`})]})]})]})}var Ib=null;function Lb(e,t){e.currentIndex=0,e.wipContextDeps=null,e.wipCommitCallbacks=[];let n=Ib;Ib=e;try{if(t(),e.isFirstRender=!1,e.cells.length!==e.currentIndex)throw Error(`Rendered ${e.currentIndex} hooks but expected ${e.cells.length}. Hooks must be called in the exact same order in every render.`)}finally{Ib=n}}function Rb(){if(!Ib)throw Error(`No resource fiber available`);return Ib}function zb(){return Ib}var Bb=typeof process<`u`&&!1,Vb=e=>({version:0,committedVersion:0,dispatchUpdate:e,changelog:[],committedLog:[],unsettledCount:0,rollbackCallbacks:[]}),Hb=e=>{e.committedVersion=e.version;for(let t of e.changelog)t.logged=!1,t.settled||(t.settled=!0,e.unsettledCount--),e.committedLog.push(t);e.changelog.length=0,e.unsettledCount===0&&(e.committedLog.length=0),e.rollbackCallbacks.length=0},Ub=(e,t)=>{let n=e.version>t;if(e.version=t,n){for(let t=0;t<e.rollbackCallbacks.length;t++)e.rollbackCallbacks[t]();if(e.rollbackCallbacks.length=0,t<=e.committedVersion){let n=[];for(;e.committedVersion-n.length>t;){let t=e.committedLog.pop();if(t===void 0){if(Bb)throw Error(`tap: committed history is shorter than the replay base.`);break}qb(t.fiber,t.cell),t.cell.workInProgress=t.prevState,n.push({record:t,prevState:t.prevState,eagerState:t.eagerState,hasEagerState:t.hasEagerState})}if(n.length>0){let t=e.committedVersion;Kb(e,()=>{for(let t=n.length-1;t>=0;t--){let r=n[t];r.record.prevState=r.prevState,r.record.eagerState=r.eagerState,r.record.hasEagerState=r.hasEagerState,e.committedLog.push(r.record)}e.committedVersion=t})}e.committedVersion=t;for(let t of e.changelog)t.logged=!1;e.changelog.length=0}else{for(;e.committedVersion+e.changelog.length>t;)e.changelog.pop().logged=!1;for(let t=0;t<e.changelog.length;t++)Wb(e.changelog[t]);Hb(e)}}},Wb=e=>{qb(e.fiber,e.cell),e.queued||(e.queued=!0,(e.cell.queue??=[]).push(e))},Gb=(e,t)=>{e.wipCommitCallbacks.push(t)},Kb=(e,t)=>{e.rollbackCallbacks.push(t)},qb=(e,t)=>{t.isDirty||(t.isDirty=!0,e.markDirty?.(),Kb(e.root,()=>{if(t.queue!==null){for(let e of t.queue)e.queued=!1;t.queue=null}t.workInProgress=t.current,t.isDirty=!1}))},Jb=Symbol.for(`react.memo_cache_sentinel`),Yb=e=>Array(e).fill(Jb),Xb=(e,t)=>{let n=e.memoCache,r=n.workInProgress;if(r===null){let t=n.current;r=t===null?[]:t.map(e=>e.slice()),n.workInProgress=r,Kb(e.root,()=>{n.workInProgress=null})}let i=n.index++,a=r[i];return a===void 0?(a=Yb(t),r[i]=a):Bb&&a.length!==t&&console.error(`Expected a constant size argument for each invocation of c(). The previous cache was allocated with size ${a.length} but size ${t} was requested.`),a},Zb=e=>Xb(Rb(),e),Qb=v.default.__COMPILER_RUNTIME?.c??(e=>(0,v.useMemo)(()=>{let t=Yb(e);return t[Jb]=!0,t},[])),$b=()=>zb()!==null,$=e=>$b()?Zb(e):Qb(e),ex=(e,...t)=>Object.assign(Object.create(null),e,...t),tx=()=>{throw Error(`Rendered more hooks than during the previous render. Hooks must be called in the exact same order in every render.`)},nx=()=>{throw Error(`Hook order changed between renders`)},rx=e=>({type:e,setup:void 0,setupDeps:void 0,cleanup:void 0,deps:null,generation:0});function ix(e,t,n){let r=Rb(),i=r.currentIndex++,a=r.cells[i],o=a===void 0?rx(n):a.type===n?a:nx();if(a===void 0&&(r.isFirstRender||tx(),r.cells[i]=o,n===`insertion`?(r.insertionCells??=[]).push(o):r.effectCells.push(o)),o.deps!==null&&!!t!=!!o.deps)throw Error(`useEffect called with and without dependencies across re-renders`);Gb(r,()=>{o.setup=e,o.setupDeps=t,o.generation++})}function ax(e,t){ix(e,t,`effect`)}var ox=(e,t)=>{Bb&&e.length!==t.length&&console.error(`The final argument passed to a hook changed size between renders. The order and size of this array must remain constant.
122
122
 
123
- Previous: [${e.join(`, `)}]\nIncoming: [${t.join(`, `)}]`);for(let n=0;n<e.length&&n<t.length;n++)if(!Object.is(e[n],t[n]))return!1;return!0},cx=(e,t)=>{Kb(e,()=>{t.current=t.wip,t.currentDeps=t.wipDeps,t.isDirty=!1})},lx=(e,t)=>{let n=zb(),r=n.currentIndex++,i=n.cells[r];if(i===void 0){n.isFirstRender||nx();let a=e();return Vb&&n.devStrictMode&&e(),i={type:`memo`,current:a,currentDeps:t,wip:a,wipDeps:t,isDirty:!1},n.cells[r]=i,a}i.type!==`memo`&&rx();let a=i;if(sx(a.wipDeps,t))return a.isDirty&&cx(n,a),a.wip;let o=e();return Vb&&n.devStrictMode&&e(),a.wip=o,a.wipDeps=t,a.isDirty||(a.isDirty=!0,qb(n.root,()=>{a.wip=a.current,a.wipDeps=a.currentDeps,a.isDirty=!1})),cx(n,a),o};function ux(e){return lx(()=>({current:e}),[])}var dx=Symbol(`tap.Context.defaultValue`),fx=e=>e,px=new Map,mx=new Set,hx=()=>new Map(px),gx=(e,t)=>{let n=px;px=e;try{return t()}finally{px=n}},_x=(e,t)=>{e[dx]=t},vx=e=>typeof e==`object`&&!!e&&dx in e,yx=e=>typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===Symbol.for(`react.context`),bx=e=>vx(e)||yx(e),xx=e=>{if(!vx(e)){if(yx(e)){_x(e,e._currentValue??e._currentValue2);return}throw Error("A tap resource's `use()` only accepts a tap context.")}},Sx=(e,t,n)=>{if(typeof e!=`object`||!e)throw Error(`useContextProvider only accepts a React context.`);xx(e);let r=e,i=zb(),a=ux(void 0),o=a.current===void 0||!Object.is(a.current.value,t);ox(()=>{a.current={value:t}},[t]);let s=px.get(r),c=s!==void 0||px.has(r);px.set(r,{value:t,source:i});try{return Cx(r,o,n)}finally{c?px.set(r,s):px.delete(r)}},Cx=(e,t,n)=>{let r=mx.has(e);t?mx.add(e):mx.delete(e);try{return n()}finally{r?mx.add(e):mx.delete(e)}},wx=e=>{xx(e);let t=e,n=Tx(t,e),r=zb();return(r.wipContextDeps??=new Map).set(t,n.source),n.value},Tx=(e,t)=>px.get(e)??{value:fx(t)[dx],source:null},Ex=(e,t,n,r)=>{if(!r)return n;let i=n;for(let[n,a]of r)a!==t&&a!==e&&(i??=new Map).set(n,a);return i},Dx=(e,t=e.wipContextDeps)=>{let n=Bb();!n||!t||(n.wipContextDeps=Ex(n,e,n.wipContextDeps,t))},Ox=()=>mx.size>0,kx=e=>{if(!e.contextDeps||!Ox())return!1;for(let t of mx.keys())if(e.contextDeps.has(t))return!0;return!1},Ax=(e,t,n)=>{if(e.isNeverMounted)throw Error(`Resource updated before mount`);let r=!1,i=!0;e.root.unsettledCount++,e.root.dispatchUpdate(()=>r?i:(r=!0,n&&e.root.changelog.length===0&&!t.cell.isDirty&&!t.hasEagerState&&(t.prevState=t.cell.workInProgress,t.eagerState=n(t.cell.workInProgress,t.action),t.hasEagerState=!0,i=!Object.is(t.cell.current,t.eagerState),!i&&!t.settled&&(t.settled=!0,e.root.unsettledCount--)),i),()=>(r=!0,i=!0,Gb(t),t.logged||(t.logged=!0,e.root.changelog.push(t)),!0))},jx=(e,t,n,r,i)=>{let a=r?r(n):n;Vb&&e.devStrictMode&&r&&r(n);let o={type:`reducer`,workInProgress:a,current:a,isDirty:!1,queue:null,renderQueue:null,reducer:t,dispatch:n=>{let r=Bb();if(r!==null){if(r!==e)throw Error(`Cannot update a resource while rendering a different resource.`);(e.renderPendingCells??=new Set).add(o),(o.renderQueue??=[]).push(n)}else Ax(e,{fiber:e,cell:o,action:n,hasEagerState:!1,eagerState:void 0,prevState:o.current,settled:!1,queued:!1,logged:!1},i?t:void 0)}};return o};function Mx(e,t,n,r){let i=zb(),a=i.currentIndex++,o=i.cells[a],s=(()=>{if(o!==void 0)return o.type===`reducer`?o:rx();i.isFirstRender||nx();let s=jx(i,e,t,n,r);return i.cells[a]=s,s})(),c=s.queue;if(c!==null){let t=e===s.reducer;for(let n=0;n<c.length;n++){let r=c[n];!r.hasEagerState||!t||!Object.is(r.prevState,s.workInProgress)?(r.prevState=s.workInProgress,r.eagerState=e(s.workInProgress,r.action),r.hasEagerState=!0,Vb&&i.devStrictMode&&(r.eagerState=e(s.workInProgress,r.action))):Vb&&i.devStrictMode&&e(s.workInProgress,r.action),r.queued=!1,s.workInProgress=r.eagerState}s.queue=null}if(s.reducer=e,s.renderQueue!==null){let t=s.workInProgress;for(let n of s.renderQueue)t=e(t,n);s.renderQueue=null,i.renderPendingCells?.delete(s),Object.is(t,s.workInProgress)||(Jb(i,s),s.workInProgress=t)}return s.isDirty&&Kb(i,()=>{s.current=s.workInProgress,s.isDirty=!1}),[s.workInProgress,s.dispatch]}function Nx(e,t,n){return Mx(e,t,n,!1)}var Px=(e,t)=>typeof t==`function`?t(e):t,Fx=e=>e===void 0?void 0:typeof e==`function`?e():e;function Ix(e){return Mx(Px,e,Fx,!0)}var Lx=(e,t)=>lx(()=>e,t);function Rx(e,t){ax(e,t,`insertion`)}function zx(e){let t=zb(),n=ux(e);return n.current!==e&&Kb(t,()=>{n.current=e}),Lx(((...e)=>{if(Vb&&Bb())throw Error(`useEffectEvent cannot be called during render`);return n.current(...e)}),[])}var Bx=e=>typeof e==`object`&&!!e&&typeof e.then==`function`,Vx=()=>{},Hx=e=>{let t=e;switch(typeof t.status==`string`?t.status!==`fulfilled`&&t.status!==`rejected`&&e.then(Vx,Vx):(t.status=`pending`,e.then(e=>{t.status===`pending`&&(t.status=`fulfilled`,t.value=e)},e=>{t.status===`pending`&&(t.status=`rejected`,t.reason=e)})),t.status){case`fulfilled`:return t.value;case`rejected`:throw t.reason;default:throw e}},Ux=e=>Bx(e)?Hx(e):wx(e),Wx=!1,Gx=(e,t,n=t)=>{let r=zb().isNeverMounted,i=r?n():t();Vb&&!Wx&&(!r||n===t)&&(Object.is(i,t())||(Wx=!0,console.error(`The result of getSnapshot should be cached to avoid an infinite loop`)));let[,a]=Nx(e=>e+1,0),o=ux(0),s=zx(()=>{try{if(Object.is(i,t()))return o.current=0,!1}catch{}return!0});return ox(()=>e(()=>{s()&&a()}),[e]),ox(()=>{if(s()){if(++o.current>50)throw o.current=0,Error(`Maximum update depth exceeded. The result of getSnapshot should be cached to avoid an infinite loop.`);a()}},[e,i,t]),i},Kx=(e,t)=>{},qx=0,Jx=()=>{let e=ux(null);return e.current??=`:tap${qx++}:`,e.current},Yx=(e,t,n)=>{let r=()=>{if(!e)return;let n=t();if(typeof e==`function`){let t=e(n);return typeof t==`function`?t:()=>e(null)}return e.current=n,()=>{e.current=null}};n==null?ox(r):ox(r,[...n,e])},Xx=v.default;function Zx(e){let t=(0,v.useRef)(e);return(0,v.useInsertionEffect)(()=>{t.current=e}),(0,v.useCallback)(((...e)=>t.current(...e)),[])}var Qx=Xx.useEffectEvent??Zx,$x=()=>Bb()!==null,eS=v.default,tS=e=>$x()?Ix(e):eS.useState(e),nS=(e,t,n)=>$x()?Nx(e,t,n):eS.useReducer(e,t,n),rS=e=>$x()?ux(e):eS.useRef(e),iS=(e,t)=>$x()?lx(e,t):eS.useMemo(e,t),aS=(e,t)=>$x()?Lx(e,t):eS.useCallback(e,t),oS=(e,t)=>$x()?ox(e,t):eS.useEffect(e,t),sS=(e,t)=>$x()?ox(e,t):eS.useLayoutEffect(e,t),cS=e=>$x()?zx(e):Qx(e),lS=(e,t,n)=>$x()?Gx(e,t,n):eS.useSyncExternalStore(e,t,n),uS=(e,t)=>$x()?void 0:eS.useDebugValue(e,t),dS=(e,t)=>$x()?Rx(e,t):eS.useInsertionEffect(e,t),fS=()=>$x()?Jx():eS.useId(),pS=(e,t,n)=>$x()?Yx(e,t,n):eS.useImperativeHandle(e,t,n),mS=e=>eS.forwardRef(e),hS=(e,t)=>eS.memo(e,t),gS=eS.Fragment;eS.Children,eS.Suspense;var _S=e=>{let t=eS.createContext(e);return _x(t,e),t},vS=e=>$x()&&bx(e)?Ux(e):eS.use(e),yS=e=>$x()&&bx(e)?Ux(e):eS.useContext(e),bS=(e,t)=>{if(e.length!==0){if(e.length===1)throw e[0];for(let t of e)console.error(t);throw AggregateError(e,t)}},xS=50,SS={schedulers:new Set,isScheduled:!1},CS=null,wS=[],TS=class{_isDirty=!1;_task;constructor(e){this._task=e}get isDirty(){return this._isDirty}markDirty(){if(CS&&(CS.get(this)??0)>=xS)throw Error(`Maximum update depth exceeded. This can happen when a resource repeatedly calls setState inside useEffect.`);this._isDirty=!0,SS.schedulers.add(this),OS()}runTask(){CS?.set(this,(CS.get(this)??0)+1),this._isDirty=!1,this._task()}settle(){this._isDirty=!1}},ES=[];new TS(()=>{let e=ES.splice(0),t=[];for(let n of e)try{n()}catch(e){t.push(e)}bS(t,`Errors occurred while running scheduled tasks`)});var DS=e=>{if(CS!==null){wS.push(e);return}e()},OS=()=>{SS.isScheduled||(SS.isScheduled=!0,AS())},kS=()=>{let e=CS;CS=new Map;let t=[];try{for(let e of SS.schedulers)if(SS.schedulers.delete(e),e.isDirty)try{e.runTask()}catch(e){t.push(e)}}finally{if(CS=e,SS.schedulers.clear(),SS.isScheduled=!1,CS===null)for(;wS.length>0;)try{wS.shift()()}catch(e){t.push(e)}}bS(t,`Errors occurred during flushSync`)},AS=(()=>{if(typeof MessageChannel<`u`){let e=null,t;return()=>{if(!e){let n=new MessageChannel;n.port1.onmessage=()=>{e?.unref?.(),kS()},e=n.port1,t=n.port2}e.ref?.(),t.postMessage(null)}}return()=>setTimeout(kS,0)})(),jS=e=>{if(CS!==null)return Vb&&console.warn(`flushTapSync was called from inside a render or commit. The flush is deferred until the current pass completes.`),e();let t=SS;SS={schedulers:new Set,isScheduled:!0};try{let t=e();return kS(),t}finally{let e=SS.schedulers;if(SS=t,e.size>0){for(let t of e)SS.schedulers.add(t);OS()}}};function MS(e){if(e.length===0)return;let t;for(let n=0;n<e.length;n++)try{e[n]()}catch(e){(t??=[]).push(e)}t!==void 0&&bS(t,`Errors during commit`)}function NS(e){let t=e.setup,n=e.setupDeps,r=e.generation,i;try{let e=t();if(e!==void 0&&typeof e!=`function`)throw Error(`An effect function must either return a cleanup function or nothing. Received: ${typeof e}`);i=e}finally{e.generation===r?(e.cleanup=i,e.deps=n):i?.()}}var PS=e=>e.setup===void 0?!1:e.deps===null||e.setupDeps===void 0||!sx(e.deps,e.setupDeps);function FS(e,t){let n;for(let t of e)PS(t)&&(n??=[]).push(t);if(n===void 0)return t;for(let e of n)if(e.deps=null,e.cleanup!==void 0)try{e.cleanup()}catch(e){(t??=[]).push(e)}finally{e.cleanup=void 0}for(let e of n)try{NS(e)}catch(e){(t??=[]).push(e)}return t}function IS(e,t=!0){let n;e.insertionCells!==null&&t&&(n=FS(e.insertionCells,n)),n=FS(e.effectCells,n),n!==void 0&&bS(n,`Errors during commit`)}function LS(e){let t;for(let n of e)if(n.deps=null,n.cleanup)try{n.cleanup?.()}catch(e){(t??=[]).push(e)}finally{n.cleanup=void 0}t!==void 0&&bS(t,`Errors during cleanup`)}var RS={useState:Ix,useReducer:Nx,useRef:ux,useMemo:lx,useCallback:Lx,useEffect:ox,useLayoutEffect:ox,useInsertionEffect:Rx,useEffectEvent:zx,useContext:wx,use:Ux,useSyncExternalStore:Gx,useDebugValue:Kx,useId:Jx,useImperativeHandle:Yx,useMemoCache:Qb},zS=v.default,BS=zS.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE??zS.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,VS=BS==null?null:`H`in BS?{get current(){return BS.H},set current(e){BS.H=e}}:`ReactCurrentDispatcher`in BS?{get current(){return BS.ReactCurrentDispatcher.current},set current(e){BS.ReactCurrentDispatcher.current=e}}:null;function HS(e){if(!VS)return e();let t=VS.current;VS.current=RS;try{return e()}finally{VS.current=t}}function US(e,t,n=void 0,r){return{hook:e,root:t,markDirty:n,devStrictMode:r,cells:[],effectCells:[],insertionCells:null,hostCells:null,contextDeps:null,wipContextDeps:null,wipCommitCallbacks:null,memoCache:{current:null,workInProgress:null,index:0},renderPendingCells:null,currentIndex:0,isFirstRender:!0,isMounted:!1,isReleased:!1,isNeverMounted:!0}}function WS(e){e.wipCommitCallbacks=null,e.wipContextDeps=null,e.memoCache.workInProgress=null}function GS(e,t,n){try{t?(e.isReleased=!0,e.insertionCells!==null&&LS(e.insertionCells)):e.isMounted&&(e.isMounted=!1,LS(e.effectCells))}catch(e){(n??=[]).push(e)}if(e.hostCells!==null){for(let r of e.hostCells)if(r.fiber!==null&&(n=GS(r.fiber,t,n)),r.fibers!==null)for(let{fiber:e}of r.fibers.values())n=GS(e,t,n)}return n}function KS(e,t=!0){let n;t&&(n=GS(e,!0,n)),n=GS(e,!1,n),n!==void 0&&bS(n,`Errors during cleanup`)}function qS(e){let t;for(let n of e)n.isReleased&&(t=GS(n,!0,t));for(let n of e)t=GS(n,!1,t);t!==void 0&&bS(t,`Errors during cleanup`)}function JS(e,t){if(e.renderPendingCells!==null){for(let t of e.renderPendingCells)t.renderQueue=null;e.renderPendingCells.clear()}let n=0,r;try{do{if(++n>25)throw Error(`Too many re-renders. tap limits the number of renders to prevent an infinite loop.`);e.memoCache.index=0,Rb(e,()=>{r=HS(()=>e.hook(...t))})}while((e.renderPendingCells?.size??0)>0)}catch(t){throw WS(e),t}return Dx(e),r}function YS(e){let t=e.wipCommitCallbacks;e.wipCommitCallbacks=null;let n=Vb&&!e.isMounted&&e.devStrictMode===`root`;e.isMounted=!0,e.isNeverMounted=!1,t!==null&&(e.contextDeps=e.wipContextDeps,Ub(e.root),e.memoCache.workInProgress!==null&&(e.memoCache.current=e.memoCache.workInProgress,e.memoCache.workInProgress=null),MS(t)),n&&(IS(e,t!==null),KS(e,!1),e.isMounted=!0),IS(e,!n&&t!==null)}var XS=()=>{let e=zb();return e.devStrictMode?e.isFirstRender?`child`:`root`:null},ZS=()=>`child`,QS=()=>null,$S=()=>{if(!Vb)return QS;let e=rS(0);return tS(()=>e.current++),e.current===2?ZS:QS},eC=()=>Bb()?XS:$S(),tC=e=>{let t=zb(),n=t.currentIndex++,r=t.cells[n],i;if(r===void 0){t.isFirstRender||nx();let r=e instanceof Map;i={type:`host`,fiber:r?null:e,fibers:r?e:null},t.cells[n]=i,(t.hostCells??=[]).push(i)}else r.type!==`host`&&rx(),i=r;return i.fibers===null&&i.fiber!==e&&Kb(t,()=>{i.fiber=e}),i},nC=(e,t)=>{if(!(e instanceof Map))return t(e);for(let{fiber:n}of e.values())t(n)},rC=e=>{e.isReleased=!1},iC=e=>{e.isReleased=!0,e.isMounted||queueMicrotask(()=>{e.isReleased&&KS(e,!0)})},aC=e=>{dS(()=>(nC(e,rC),()=>nC(e,iC)),[e]),oS(()=>()=>{qS(e instanceof Map?Array.from(e.values(),({fiber:e})=>e):[e])},[e])},oC=e=>Bb()?tC(e):(aC(e),null),sC=()=>{let e=rS(0),t=e.current,n=zb();return{version:t,markDirty:iS(()=>()=>{e.current++,n.markDirty?.()},[n]),root:n.root}},cC=()=>{let[e]=tS(()=>Hb((e,t)=>{let i=!1;r(t=>(i=!e(),i?t:t+1)),i||n(()=>e()&&t())})),[t,n]=nS((t,n)=>(Wb(e,t),t+ +!!n()),0),[,r]=tS(0);return Wb(e,t),{root:e,version:t,markDirty:void 0}},lC=()=>{let e=eC(),{root:t,version:n,markDirty:r}=Bb()?sC():cC();return{version:n,createFiber:aS((n,i,a)=>US(n,t,a?()=>{a(),r?.()}:r,e()),[])}},uC=e=>e(),dC=e=>{let t=[];for(let n of e)try{n()}catch(e){t.push(e)}bS(t,`Errors occurred while notifying Tap root subscribers`)},fC=(e,t,n)=>{let r=new TS(()=>s.handleUpdate()),i=[],a=Hb((e,t)=>{i.length===0&&!e()||(i.push(t),r.markDirty())}),o=US(uC,a,void 0,t),s={scheduler:r,queue:i,fiber:o,subscribers:new Set,pendingHostRender:!1,isMounted:!1,hasRendered:!1,committedRender:e,context:new Map,value:void 0,applyQueue:()=>{Wb(a,a.committedVersion);for(let e of i)Vb&&o.devStrictMode&&e(),e();return Wb(a,a.committedVersion+a.changelog.length),i.length},publish:(e,t)=>{r.isDirty||a.committedVersion!==t||s.value===e||(s.value=e,DS(()=>dC(s.subscribers)))},finishFlush:(e,t,n)=>{Ub(a),i.splice(0,n),s.pendingHostRender=!1,i.length===0&&r.settle(),s.isMounted&&YS(o),s.publish(e,t)},handleUpdate:()=>{let e=s.applyQueue(),t;try{Vb&&o.devStrictMode&&gx(s.context,()=>JS(o,[s.committedRender])),t=gx(s.context,()=>JS(o,[s.committedRender]))}catch(e){if(Wb(a,a.committedVersion),Bx(e)){let t=()=>{s.isMounted&&r.markDirty()};e.then(t,t);return}if(s.isMounted){s.pendingHostRender=!0,n(e=>e+1);return}throw e}if(r.isDirty)throw Error(`Scheduler is dirty, this should never happen`);s.finishFlush(t,a.version,e)}};return s},pC=e=>{let[,t]=tS(0),n=eC(),r=rS(null),i=r.current??=fC(e,n(),t),a=hx(),o=i.scheduler.isDirty||i.pendingHostRender?i.applyQueue():0,s=gx(a,()=>JS(i.fiber,[e])),c={render:e,context:a,value:s,drained:o,wip:i.fiber.wipCommitCallbacks,version:i.fiber.root.version,processed:!1};return i.hasRendered||(i.hasRendered=!0,i.committedRender=e,i.context=a,i.value=s),oS(()=>(i.isMounted=!0,()=>{i.isMounted=!1}),[i]),oC(i.fiber),oS(()=>{if(c.processed){i.fiber.isMounted||(YS(i.fiber),i.queue.length&&!i.scheduler.isDirty&&i.scheduler.markDirty());return}if(c.processed=!0,i.committedRender=c.render,i.context=c.context,i.fiber.wipCommitCallbacks!==c.wip){i.scheduler.isDirty||i.handleUpdate();return}if(c.drained>0&&i.fiber.root.version===c.version){i.finishFlush(c.value,c.version,c.drained);return}YS(i.fiber),i.publish(c.value,c.version)}),iS(()=>({getValue:()=>i.value,subscribe:e=>(i.subscribers.add(e),()=>i.subscribers.delete(e))}),[i])};function mC(e){return(...t)=>({hook:e,args:t})}function hC(e,t,n){return typeof t==`function`?(...n)=>hC(e,t(...n)):n?{...t,key:e,deps:n}:{...t,key:e}}var gC=(e,t)=>({fiber:e,key:t,currentDeps:null,current:null,wipDeps:null,wip:null});function _C(e){let{version:t,createFiber:n}=lC(),r=rS(null),i=r.current??=gC(n(e.hook,e.key),e.key),a=iS(()=>i.fiber.hook===e.hook&&i.key===e.key&&!i.fiber.isReleased?i.fiber:n(e.hook,e.key),[i,e.hook,e.key,n]);i.wipDeps=i.currentDeps,i.wip=i.current;let o=[a,t,e.args];(kx(a)||i.currentDeps===null||!sx(i.currentDeps,o))&&(i.wipDeps=o,i.wip={value:JS(a,e.args)});let s=i.wip,c=oC(a);return oS(()=>{if(i.currentDeps=i.wipDeps,i.current=i.wip,i.fiber=a,i.key=e.key,YS(a),c!==null)return()=>{c.fiber!==a&&KS(a,!0)}},[i,c,a,e.key,s]),s.value}var vC=(e,t,n)=>{let r=rS(null),i=r.current??={wipDeps:null,wip:null,currentDeps:null,current:null};return i.wipDeps=i.currentDeps,i.wip=i.current,oS(()=>{i.currentDeps=i.wipDeps,i.current=i.wip}),!n&&i.currentDeps&&sx(i.currentDeps,t)?i.current:(i.wipDeps=t,i.wip=e(),i.wip)},yC=(e,t)=>{let n=e.get(t);n&&(n.isDirty=!0)},bC=(e,t)=>!e.isDirty&&!kx(e.fiber)&&t!==void 0&&e.committedDeps!==void 0&&sx(e.committedDeps,t),xC=e=>{if(!Ox())return!1;for(let{fiber:t}of e.values())if(kx(t))return!0;return!1};function SC(e){let[t]=tS(()=>new Map),{version:n,createFiber:r}=lC(),i=xC(t),a=!1,o=vC(()=>{let n=new Set,i=[],o=0;for(let s=0;s<e.length;s++){let c=e[s],l=c.key;if(l===void 0)throw Error(`useResources did not provide a key for array at index ${s}`);if(n.has(l))throw Error(`Duplicate key ${l} in useResources`);n.add(l);let u=t.get(l);if(!u){let e=r(c.hook,c.key,()=>yC(t,l));u={fiber:e,next:{value:JS(e,c.args),deps:c.deps},isDirty:!1,committedDeps:void 0,committedValue:void 0},o++,t.set(l,u)}else if(u.fiber.hook!==c.hook){let e=r(c.hook,c.key,()=>yC(t,l)),n=JS(e,c.args);u.next={value:n,deps:c.deps,remount:e},a=!0}else if(bC(u,c.deps))typeof u.next==`object`&&WS(u.fiber),u.fiber.contextDeps&&Dx(u.fiber,u.fiber.contextDeps),u.next=`skip`;else{let e=JS(u.fiber,c.args);u.next={value:e,deps:c.deps}}i.push(typeof u.next==`object`?u.next.value:u.committedValue)}if(t.size>i.length-o)for(let e of t.keys())n.has(e)||(t.get(e).next=`delete`,a=!0);return i},[e,t,r,n],i);return oC(t),oS(()=>{if(a){let e=[];for(let[n,r]of t.entries()){let i=r.next;i===`delete`?(e.push(r.fiber),t.delete(n)):i!==`skip`&&i.remount&&(e.push(r.fiber),r.fiber=i.remount)}for(let t of e)t.isReleased=!0;qS(e)}for(let e of t.values()){let t=e.next;t===`skip`?!e.fiber.isNeverMounted&&!e.fiber.isMounted&&YS(e.fiber):t!==`delete`&&(YS(e.fiber),e.committedDeps=t.deps,e.committedValue=t.value,e.isDirty=!1,e.next=`skip`)}},[o,t,a]),o}var CC=e=>e(),wC=e=>{let{createFiber:t}=lC(),[n]=tS(()=>t(CC,void 0)),r=JS(n,[e]);oC(n);let i=!1,a=()=>{i&&n.isMounted||(i=!0,YS(n))};return oS(a),{value:r,effects:a}},TC=mC(()=>{let e=$(4),[t,n]=tS(EC),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(e,t)=>(n(n=>{let r=tx(n.renderers);return r[e]=[...r[e]??[],t],{...n,renderers:r}}),()=>{n(n=>{let r=tx(n.renderers),i=r[e]?.filter(e=>e!==t)??[];return i.length>0?r[e]=i:delete r[e],{...n,renderers:r}})}),e[0]=r):r=e[0];let i=r,a;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=e=>(n(t=>({...t,fallbacks:[...t.fallbacks,e]})),()=>{n(t=>({...t,fallbacks:t.fallbacks.filter(t=>t!==e)}))}),e[1]=a):a=e[1];let o=a,s;return e[2]===t?s=e[3]:(s={getState:()=>t,setDataUI:i,setFallbackDataUI:o},e[2]=t,e[3]=s),s});function EC(){return{renderers:tx(),fallbacks:[]}}var DC=(e,t,n)=>{let r=e=>{console.error(`[assistant-ui] ${n} listener threw an error`,e)};for(let n of e)try{let e=n(typeof t==`function`?t():t);e!==null&&(typeof e==`object`||typeof e==`function`)&&`then`in e&&typeof e.then==`function`&&Promise.resolve(e).catch(r)}catch(e){r(e)}},OC=e=>e,kC=new Set([`$$typeof`,`nodeType`,`then`,`__v_raw`,`__v_isRef`,`__v_isReactive`,`__v_isReadonly`,`__v_isShallow`,`__v_skip`]),AC=(e,t)=>{if(e===Symbol.toStringTag)return t;if(typeof e!=`symbol`){if(e===`toJSON`)return()=>t;if(!kC.has(e))return!1}},jC=class{getOwnPropertyDescriptor(e,t){let n=this.get(e,t);if(n!==void 0)return{value:n,writable:!1,enumerable:!0,configurable:!0}}set(){return!1}setPrototypeOf(){return!1}defineProperty(){return!1}deleteProperty(){return!1}preventExtensions(){return!1}},MC=Symbol(`assistant-ui.store.clientId`),NC=Symbol(`assistant-ui.store.instanceTag`),PC=(e,t)=>{let n=new Proxy((()=>{}),{apply:()=>(t(),n),get:(n,r)=>r===`source`?e.source:r===`query`?e.query:r===`name`?e.name:r===MC?RC(t()):t()[r],has:(e,n)=>n===`source`||n===`query`||n===`name`||n===MC||n in t(),ownKeys:()=>Reflect.ownKeys(t()),getOwnPropertyDescriptor:(e,n)=>{if(!(typeof n==`symbol`||!(n in t())))return{value:t()[n],writable:!1,enumerable:!0,configurable:!0}}});return n},FC=(e,t)=>{let n=()=>{throw Error(e)};return new Proxy((()=>{}),{apply:n,get:(e,r)=>{if(r===`source`||r===`query`)return null;if(r===`name`)return t;if(r===MC)return n();let i=AC(r,`AssistantClientAccessor`);return i===!1?n():i},has:(e,t)=>t===`source`||t===`query`||t===`name`,ownKeys:()=>[],getOwnPropertyDescriptor:()=>void 0})},IC=e=>e?.source!=null,LC=e=>e?.source===null,RC=e=>e[MC]??e,zC=e=>e[NC]??RC(e),BC=e=>e===`optional`||e===`subscribe`||e===`on`||e===`__proto__`||typeof e==`symbol`,VC=e=>{let t=[];for(let n in e)BC(n)||t.push(n);return t},HC=class extends jC{#e;constructor(e){super(),this.#e=e}get(e,t){let n=AC(t,`OptionalAssistantClient`);if(n!==!1)return n;if(BC(t))return;let r=this.#e[t];return IC(r)?r:void 0}ownKeys(){return VC(this.#e)}has(e,t){return!BC(t)&&t in this.#e}},UC=e=>new Proxy({},new HC(e)),WC=()=>()=>{},GC=`You are using a component or hook that requires an AuiProvider. Wrap your component in an <AuiProvider> component.`,KC=class extends jC{#e;#t;#n;#r;constructor(e,t,n){super(),this.#e=e,this.#t=t,this.#n=n}get(e,t){if(t===`subscribe`||t===`on`)return WC;if(t===`optional`)return this.#r??=UC(this.#n());let n=AC(t,this.#e);return n===!1?FC(this.#t(String(t)),String(t)):n}ownKeys(){return[`subscribe`,`on`,`optional`]}getOwnPropertyDescriptor(e,t){if(t!==`optional`)return super.getOwnPropertyDescriptor(e,t);let n=this.get(e,t);if(n!==void 0)return{value:n,writable:!1,enumerable:!1,configurable:!0}}has(e,t){return t===`subscribe`||t===`on`||t===`optional`}},qC=((e,t)=>{let n=new Proxy({},new KC(e,t,()=>n));return n})(`DefaultAssistantClient`,()=>GC),JC=()=>new Proxy({},{get(e,t){let n=AC(t,`AssistantClient`);return n===!1?FC(`The current scope does not have a "${String(t)}" property.`,String(t)):n}}),YC=_S(qC),XC=()=>{},ZC=new WeakMap,QC=e=>ZC.get(e)??XC,$C=(e,t)=>{ZC.set(e,t)},ew=()=>yS(YC),tw=(e,t)=>Sx(YC,e,t),nw=Symbol(`assistant-ui.transform-scopes`);function rw(e,t){let n=e;if(n[nw])throw Error(`transformScopes is already attached to this resource`);n[nw]=t}function iw(e){return e[nw]}var aw=e=>typeof e==`string`?{scope:e.split(`.`)[0],event:e}:{scope:e.scope,event:e.event},ow=Symbol(`assistant-ui.store.clientIndex`),sw=e=>e[ow],cw=_S([]),lw=()=>vS(cw),uw=(e,t)=>{let n=$(3),r=lw(),i;return n[0]!==e||n[1]!==r?(i=[...r,e],n[0]=e,n[1]=r,n[2]=i):i=n[2],Sx(cw,i,t)},dw=Symbol(`assistant-ui.store.getValue`),fw=e=>{let t=e[dw];if(!t)throw Error(`Client scope contains a non-client resource. Ensure your Derived get() returns a client created with useClientResource(), not a plain resource.`);return t.getState?.()},pw=new Map;function mw(e){let t=pw.get(e);return t||(t=function(...t){if(!this||typeof this!=`object`)throw Error(`Method "${String(e)}" called without proper context. This may indicate the function was called incorrectly.`);let n=this[dw];if(!n)throw Error(`Method "${String(e)}" called on invalid client proxy. Ensure you are calling this method on a valid client instance.`);let r=n[e];if(!r)throw Error(`Method "${String(e)}" is not implemented.`);if(typeof r!=`function`)throw Error(`"${String(e)}" is not a function.`);return r(...t)},pw.set(e,t)),t}var hw=class extends jC{boundFns;cachedReceiver;outputRef;tagRef;index;self;constructor(e,t,n){super(),this.outputRef=e,this.tagRef=t,this.index=n}get(e,t,n){if(t===dw)return this.outputRef.current;if(t===ow)return this.index;if(t===MC)return this.self;if(t===NC)return this.tagRef.current;let r=AC(t,`ClientProxy`);if(r!==!1)return r;let i=this.outputRef.current[t];if(typeof i==`function`){if(n===void 0)return i;(!this.boundFns||this.cachedReceiver!==n)&&(this.boundFns=new Map,this.cachedReceiver=n);let e=this.boundFns.get(t);return e||(e=mw(t).bind(n),this.boundFns.set(t,e)),e}return i}ownKeys(){return Object.keys(this.outputRef.current)}has(e,t){return t===dw||t===ow||t===MC||t===NC||t in this.outputRef.current}},gw=e=>{let t=rS(null),n=rS(null),r=iS(()=>({}),[e.hook,e.key]),i=lw().length,a=iS(()=>{let e=new hw(t,n,i),r=new Proxy({},e);return e.self=r,r},[i]),o=uw(a,function(){return _C(e)});return t.current||(t.current=o,n.current=r),oS(()=>{t.current=o,n.current=r}),{methods:a,state:o.getState?.(),key:e.key}},_w=mC(gw),vw=0,yw=0,bw=e=>{vw++,yw++;try{return e()}finally{yw--,vw++}},xw=e=>{let t,n=new Map,r=-1,i=t=>{if(yw===0)return fw(e[t]());if(r!==vw)n.clear(),r=vw;else if(n.has(t))return n.get(t);let i=fw(e[t]());return n.set(t,i),i};class a extends jC{get(t,n){let r=AC(n,`OptionalAssistantState`);if(r!==!1)return r;let a=n;if(!BC(a)&&IC(e[a]))return i(a)}ownKeys(){return VC(e)}has(t,n){return!BC(n)&&n in e}}class o extends jC{get(e,n){let r=AC(n,`AssistantState`);if(r!==!1)return r;if(n===`optional`)return t??=new Proxy({},new a);let o=n;if(!BC(o))return i(o)}ownKeys(){return[...VC(e),`optional`]}has(t,n){return n===`optional`||!BC(n)&&n in e}}return new Proxy({},new o)},Sw=new WeakMap,Cw=e=>{let t=Sw.get(e);return t||(t=xw(e),Sw.set(e,t)),t},ww=_S(null),Tw=Symbol(`aui.scope-effect-unapplied`),Ew=(e,t)=>Sx(ww,e,t),Dw=()=>{let e=vS(ww);if(!e)throw Error(`AssistantTapContext is not available`);return e},Ow=()=>Dw().clientRef,kw=(e,t,n)=>{let r=$(8),{clientRef:i}=Dw(),a;r[0]!==i||r[1]!==t||r[2]!==e?(a=()=>{let n=i.current;if(n===null)throw Error(`useAssistantScopeEffect ran before the client was committed. This is likely an internal bug in assistant-ui.`);let r=()=>{let t=i.current?.[e];return t!==void 0&&IC(t)?zC(t):void 0},a=Tw,o,s=e=>{if(o?.(),o=void 0,a=Tw,e!==void 0){let e=t();o=typeof e==`function`?e:void 0}a=e};s(r());let c=n.subscribe(()=>{let e=r();e!==a&&s(e)});return()=>{c(),o?.()}},r[0]=i,r[1]=t,r[2]=e,r[3]=a):a=r[3];let o;r[4]!==i||r[5]!==n||r[6]!==e?(o=[i,e,...n],r[4]=i,r[5]=n,r[6]=e,r[7]=o):o=r[7],oS(a,o)},Aw=()=>{let e=$(3),{emit:t}=Dw(),n=lw(),r;return e[0]!==n||e[1]!==t?(r=(e,r)=>{t(e,r,n)},e[0]=n,e[1]=t,e[2]=r):r=e[2],cS(r)},jw=_S(void 0),Mw=(e,t)=>{let n=vS(jw);return Sx(jw,e??n,t)},Nw=(e,t)=>{if(Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!Object.is(e[n],t[n]))return!1;return!0}let n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>Object.hasOwn(t,n)&&Object.is(e[n],t[n]))},Pw=Symbol(`assistant-ui.derived-hook`),Fw=e=>{e[Pw]=!0},Iw=e=>e[Pw]===!0,Lw=e=>{console.error(`NotificationManager: event listener error`,e)},Rw=(e,t,n)=>{try{let r=e(t,n);r!==null&&(typeof r==`object`||typeof r==`function`)&&typeof r.then==`function`&&Promise.resolve(r).catch(Lw)}catch(e){Lw(e)}},zw=()=>{let e=new Map,t=new Set,n=new Set;return{on(n,r){let i=r;if(n===`*`)return t.add(i),()=>t.delete(i);let a=e.get(n);return a||(a=new Set,e.set(n,a)),a.add(i),()=>{a.delete(i),a.size===0&&e.get(n)===a&&e.delete(n)}},emit(n,r,i){!e.has(n)&&t.size===0||queueMicrotask(()=>{let a=e.get(n);if(a)for(let e of a)Rw(e,r,i);if(t.size>0){let e={event:n,payload:r};for(let n of t)Rw(n,e,i)}})},subscribe(e){return n.add(e),()=>n.delete(e)},notifySubscribers(){bw(()=>{for(let e of n)try{e()}catch(e){console.error(`NotificationManager: subscriber callback error`,e)}})}}},Bw=()=>tS(zw)[0],Vw=()=>{let[e]=tS(()=>({controller:new AbortController,generation:0}));return dS(()=>{let t=++e.generation;return()=>queueMicrotask(()=>{e.generation===t&&e.controller.abort()})},[e]),e.controller.signal},Hw=e=>{let t=iS(()=>({}),[]);return t.v!==void 0&&Nw(t.v,e)?t.v:(t.v=e,e)},Uw=(()=>{try{return!1}catch{return!1}})(),Ww=(e,t)=>{let n={...e},r=new Set,i=!0;for(;i;){i=!1;for(let e of Object.values(n)){if(r.has(e.hook))continue;r.add(e.hook);let a=iw(e.hook);if(a){a(n,t),i=!0;break}}}return n},Gw=e=>Iw(e.hook),Kw=e=>{if(!Gw(e))return{source:`root`,query:{}};let t=e.args[0];return{source:t.source,query:t.query??{}}},qw=Symbol.for(`aui.event-receiver-ref`),Jw=(e,t)=>{let n=e===qC?JC():e,r=Object.create(n);Object.assign(r,t);let i;return Object.defineProperty(r,"optional",{get:()=>i??=UC(r),enumerable:!1}),r},Yw=({notifications:e,clientRef:t})=>iS(()=>({subscribe:e.subscribe,on:function(n,r){if(!this)throw Error(`const { on } = useAui() is not supported. Use aui.on() instead.`);let{scope:i,event:a}=aw(n),o=n[qw];if(i!==`*`&&!o&&LC(this[i]))throw Error(`Scope "${i}" is not available. Use { scope: "*", event: "${a}" } to listen globally.`);let s=e.on(a,(e,n)=>{if(i===`*`)return r(e);let a=((o??t).current??this)[i];if(!IC(a))return;let s=RC(a);if(s===n[sw(s)])return r(e)});if(i!==`*`){if(o){if(t.parent===qC)return s}else if(LC(t.parent[i]))return s}let c=t.parent.on(n,r);return()=>{s(),c()}}}),[e,t]),Xw=e=>{let t=$(5),n;t[0]===e?n=t[1]:(n=Kw(e),t[0]=e,t[1]=n);let{source:r,query:i}=n,a=Hw(i),o;return t[2]!==r||t[3]!==a?(o={source:r,query:a},t[2]=r,t[3]=a,t[4]=o):o=t[4],Hw(o)},Zw=(e,t)=>{let n=$(3),r;return n[0]!==t||n[1]!==e?(r=t?e:_w(e),n[0]=t,n[1]=e,n[2]=r):r=n[2],_C(r)},Qw=mC((e,t)=>{let n=ew(),r=Gw(t),i=Zw(t,r),a=r?i:i.methods,o=Xw(t),s=iS(()=>PC({name:e,...o},()=>a),[e,o,a]);return n[e]=s,s}),$w=e=>{let t=$(2),n;return t[0]===e?n=t[1]:(n=e.map(uT),t[0]=e,t[1]=n),SC(n)},eT=(e,t)=>{let n=Hw(t),r=iS(()=>({}),[]);return r.deps!==n&&(r.deps=n,r.client=e),r.client},tT=({parent:e,entries:t,clientRef:n,notifications:r})=>{let i=Jw(e,Yw({notifications:r,clientRef:n}));return{client:eT(i,[e,...Ew(iS(()=>({clientRef:n,emit:r.emit}),[n,r.emit]),function(){return tw(i,function(){return $w(t)})})])}},nT=({parent:e,entries:t,destroySignal:n})=>{let r=rS({parent:e,current:null}).current,{value:i,effects:a}=wC(function(){let i=Bw(),{client:a}=Mw(n,function(){return tT({parent:e,entries:t,clientRef:r,notifications:i})});return oS(()=>e.subscribe(i.notifySubscribers),[e,i]),oS(()=>i.notifySubscribers()),a});return dS(()=>{r.parent=e,r.current=i},[i,e,r]),{client:i,effects:a}},rT=({parent:e,entries:t,destroySignal:n})=>{let r=rS({parent:e,current:null}).current,{value:i,effects:a}=wC(function(){let i=Bw(),a=pC(function(){return Mw(n,function(){return tT({parent:e,entries:t,clientRef:r,notifications:i})})}),o=lS(a.subscribe,()=>a.getValue().client,()=>a.getValue().client);return oS(()=>{let t=()=>jS(()=>{r.current=a.getValue().client,i.notifySubscribers()}),n=a.subscribe(t),o=e.subscribe(t);return()=>{n(),o()}},[a,e,i]),o});return dS(()=>{r.parent=e,r.current=i},[i,e,r]),{client:i,effects:a}},iT=(e,t,n,r)=>{let{get:i}=r.args[0],a=lS(e.subscribe,()=>i(e),()=>i(e)),o=Xw(r),s=iS(()=>PC({name:n,...o},()=>a),[n,o,a]);return t[n]=s,s},aT=(e,t)=>{if(Uw){let[e]=tS(()=>t.map(([e])=>e).join(`,`)),n=t.find(([,e])=>!Gw(e));if(n)throw Error(`Scope "${n[0]}" is a root scope but this useAui mounted derived-only; remount with a new key to change scope kinds.`);let r=t.map(([e])=>e).join(`,`);if(r!==e)throw Error(`A derived-only config mounted scopes [${e}] but now has [${r}]; remount with a new key to change the scope set.`)}let n=rS({parent:e,current:null}).current,r=Jw(e,{subscribe:e.subscribe,on:function(t,r){if(!this)throw Error(`const { on } = useAui() is not supported. Use aui.on() instead.`);let{scope:i,event:a}=aw(t);if(i===`*`)return e.on(t,r);let o=t[qw];if(!o&&LC(this[i]))throw Error(`Scope "${i}" is not available. Use { scope: "*", event: "${a}" } to listen globally.`);return e.on({scope:i,event:a,[qw]:o??n},r)}}),i=eT(r,[e,...t.map(([t,n])=>iT(e,r,t,n))]);return dS(()=>{n.parent=e,n.current=i},[i,e,n]),i},oT=(e,t)=>{let n=$(8),r;n[0]!==t||n[1]!==e?(r=Object.entries(Ww(t,e)),n[0]=t,n[1]=e,n[2]=r):r=n[2];let i=r,a;n[3]===i?a=n[4]:(a=()=>i.length===0||i.some(dT),n[3]=i,n[4]=a);let[o]=tS(a),s;return n[5]!==i||n[6]!==o?(s={entries:i,rooted:o},n[5]=i,n[6]=o,n[7]=s):s=n[7],s},sT=(e,t,n,r)=>{let{entries:i,rooted:a}=oT(e,t);return a?n({parent:e,entries:i,destroySignal:r}):{client:aT(e,i)}},cT=(e,t,n)=>sT(e,t,nT,n);function lT(e){let t=ew();if(e){let{client:n,effects:r}=sT(t,e,rT,Vw());return r&&$C(n,r),n}return t}function uT(e){let[t,n]=e;return hC(t,Qw(t,n))}function dT(e){let[,t]=e;return!Gw(t)}var fT=e=>{let t=$(6),n=lT(),r;t[0]===n?r=t[1]:(r=Cw(n),t[0]=n,t[1]=r);let i=r,a,o;t[2]!==i||t[3]!==e?(a=()=>e(i),o=()=>e(i),t[2]=i,t[3]=e,t[4]=a,t[5]=o):(a=t[4],o=t[5]);let s=lS(n.subscribe,a,o);if(typeof s==`object`&&s&&(s===i||s===i.optional))throw Error(`You tried to return the entire AssistantState. This is not supported due to technical limitations.`);return uS(s),s},pT=e=>{let t=$(3),{get:n}=e,r=lT(),i;return t[0]!==r||t[1]!==n?(i=()=>n(r),t[0]=r,t[1]=n,t[2]=i):i=t[2],fT(i)};Fw(pT);var mT=mC(pT),hT=e=>{if(e.key===void 0)throw Error(`useClientLookup: Element has no key`);return e.key};function gT(e){let t=$(12),n;t[0]===e?n=t[1]:(n=e.map(yT),t[0]=e,t[1]=n);let r=SC(n),i;t[2]===e?i=t[3]:(i=e.reduce(vT,Object.create(null)),t[2]=e,t[3]=i);let a=i,o;t[4]===r?o=t[5]:(o=r.map(_T),t[4]=r,t[5]=o);let s=o,c;t[6]!==a||t[7]!==r?(c=e=>{if(`index`in e){if(e.index<0||e.index>=r.length)throw Error(`useClientLookup: index ${e.index} out of bounds (length: ${r.length}) (ignore if recovered)`);return r[e.index].methods}let t=a[e.key];if(t===void 0)throw Error(`useClientLookup: key "${e.key}" not found (ignore if recovered)`);return r[t].methods},t[6]=a,t[7]=r,t[8]=c):c=t[8];let l;return t[9]!==s||t[10]!==c?(l={state:s,get:c},t[9]=s,t[10]=c,t[11]=l):l=t[11],l}function _T(e){return e.state}function vT(e,t,n){return e[hT(t)]=n,e}function yT(e){return hC(hT(e),_w(e),e.deps)}var bT=Symbol(`skip-update`),xT=(e,...t)=>{let n=[];for(let r of e)try{r(...t)}catch(e){n.push(e)}if(n.length===1)throw n[0];if(n.length>1){for(let e of n)console.error(e);throw AggregateError(n)}},ST=e=>{xT(e)},CT=(e,t)=>{try{e()}catch(e){console.error(`[assistant-ui] Subscription rollback cleanup threw`,e)}throw t},wT=(e,t)=>e===void 0||t===void 0?e===t:Nw(e,t),TT=class{_subscribers=new Set;subscribe(e){return this._subscribers.add(e),()=>this._subscribers.delete(e)}waitForUpdate(){return new Promise(e=>{let t=this.subscribe(()=>{t(),e()})})}_notifySubscribers(){xT(this._subscribers)}},ET=class extends TT{_state;constructor(e){super(),this._state=e,this.subscribe=this.subscribe.bind(this),this.getState=this.getState.bind(this),this.getServerSnapshot=()=>e}getState(){return this._state}getServerSnapshot;setState(e){Object.is(e,this._state)||(this._state=e,this._notifySubscribers())}},DT=class{_subscriptions=new Set;_connection;get isConnected(){return!!this._connection}notifySubscribers(e,t){if(t){DC(this._subscriptions,e,t);return}xT(this._subscriptions,e)}_updateConnection(){if(this._subscriptions.size>0){if(this._connection)return;this._connection=this._connect()}else{let e=this._connection;this._connection=void 0,e?.()}}subscribe(e){this._subscriptions.add(e);try{this._updateConnection()}catch(t){throw this._subscriptions.delete(e),t}return()=>{this._subscriptions.delete(e),this._updateConnection()}}},OT=class extends DT{get path(){return this.binding.path}binding;constructor(e){super(),this.binding=e;let t=e.getState();if(t===bT)throw Error(`Entry not available in the store`);this._previousState=t}_previousState;getState=()=>(this.isConnected||this._syncState(),this._previousState);_syncState(){let e=this.binding.getState();return e===bT||wT(e,this._previousState)?!1:(this._previousState=e,!0)}_connect(){let e=this.binding.subscribe(()=>{this._syncState()&&this.notifySubscribers()});try{return this._syncState(),e}catch(t){throw CT(e,t)}}},kT=class extends DT{get path(){return this.binding.path}binding;constructor(e){super(),this.binding=e}_previousStateDirty=!0;_previousState;getState=()=>{if(!this.isConnected||this._previousStateDirty){let e=this.binding.getState();e!==bT&&(this._previousState===void 0||!wT(e,this._previousState))&&(this._previousState=e),this._previousStateDirty=!1}if(this._previousState===void 0)throw Error(`Entry not available in the store`);return this._previousState};_connect(){let e=this.binding.subscribe(()=>{this._previousStateDirty=!0,this.notifySubscribers()});return this._previousStateDirty=!0,e}},AT=class extends DT{get path(){return this.binding.path}binding;constructor(e){super(),this.binding=e}getState(){return this.binding.getState()}outerSubscribe(e){return this.binding.subscribe(e)}_connect(){let e=()=>{this.notifySubscribers()},t=this.binding.getState(),n=t?.subscribe(e),r=()=>{let r=this.binding.getState();if(r===t)return;t=r;let i=n;n=void 0;try{i?.()}finally{n=r?.subscribe(e),e()}},i;try{i=this.outerSubscribe(r)}catch(e){throw CT(()=>n?.(),e)}return()=>ST([()=>i(),()=>n?.()])}},jT=class extends DT{config;constructor(e){super(),this.config=e}getState(){return this.config.binding.getState()}outerSubscribe(e){return this.config.binding.subscribe(e)}_connect(){let e=`Runtime event "${this.config.event}"`,t=t=>{this.notifySubscribers(t,e)},n=this.config.binding.getState(),r=n?.unstable_on(this.config.event,t),i=()=>{let e=this.config.binding.getState();if(e===n)return;n=e;let i=r;r=void 0;try{i?.()}finally{r=e?.unstable_on(this.config.event,t),this.config.notifyOnRebind&&t({})}},a;try{a=this.outerSubscribe(i)}catch(e){throw CT(()=>r?.(),e)}return()=>ST([()=>a(),()=>r?.()])}},MT=e=>{if(!e.overwrite)return e;let{overwrite:t,...n}=e;return n},NT=e=>{let t=Array.from(e).map(e=>e.getModelContext()).sort((e,t)=>(t.priority??0)-(e.priority??0)),n=tx();return t.reduce((e,t)=>{let r=t.priority??0;if(t.system&&(e.system?e.system+=`\n\n${t.system}`:e.system=t.system),t.tools)for(let[i,a]of Object.entries(t.tools)){let t=e.tools!==void 0&&Object.hasOwn(e.tools,i)?e.tools[i]:void 0;if(t&&t!==a){let o=n[i];if(o===r){if(!a.overwrite)throw Error(`You tried to define a tool with the name ${i}, but it already exists.`);e.tools[i]=MT(a);continue}let s=o>r?t:a,c=o>r?a:t;e.tools[i]=MT({...c,...s}),n[i]=Math.max(o,r);continue}e.tools||=tx(),e.tools[i]=MT(a),Object.hasOwn(n,i)||(n[i]=r)}return t.config&&(e.config={...t.config,...e.config}),t.callSettings&&(e.callSettings={...t.callSettings,...e.callSettings}),t.unstable_composerMetadata&&(e.unstable_composerMetadata={...t.unstable_composerMetadata,...e.unstable_composerMetadata}),e},{})},PT=class{_providers=new Map;_providerUnsubscribes=new Map;getModelContext(){return NT(new Set(this._providers.values()))}registerModelContextProvider(e){let t=Symbol();this._providers.set(t,e);let n;try{n=e.subscribe?.(()=>{this.notifySubscribers()})}catch(e){this._providers.delete(t);try{this.notifySubscribers()}catch(e){console.error(e)}throw e}this._providerUnsubscribes.set(t,n),this.notifySubscribers();let r=!1;return()=>{if(r)return;r=!0,this._providers.delete(t);let e=this._providerUnsubscribes.get(t);this._providerUnsubscribes.delete(t);let n=!1,i,a=e=>{try{e()}catch(e){n?console.error(e):(n=!0,i=e)}};if(e&&a(e),a(()=>this.notifySubscribers()),n)throw i}}_subscribers=new Set;notifySubscribers(){xT(this._subscribers)}subscribe(e){return this._subscribers.add(e),()=>{this._subscribers.delete(e)}}},FT=(e,t)=>e.length===t.length&&e.every((e,n)=>Object.is(e,t[n])),IT=(e,t)=>{let[n]=tS(()=>({pending:void 0}));oS(()=>{let r=n.pending;n.pending=void 0;let i;return r!==void 0&&FT(r.deps,t)?i=r:(r?.cleanup?.(),i={deps:t,cleanup:e()}),()=>{n.pending=i,queueMicrotask(()=>{n.pending===i&&(n.pending=void 0,i.cleanup?.())})}},t)},LT=[],RT={modelName:void 0,toolNames:LT},zT=(e,t)=>e===t||Nw(e,t),BT=(e,t)=>{let n=e.getModelContext(),r=n.config?.modelName,i=n.tools?Object.keys(n.tools).sort():LT,a=i.length?i:LT;return r===t.modelName&&zT(a,t.toolNames)?t:{modelName:r,toolNames:a}},VT=mC(()=>{let e=$(11),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=new PT,e[0]=t):t=e[0];let n=t,r;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>BT(n,RT),e[1]=r):r=e[1];let[i,a]=tS(r),o,s;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=()=>(a(e=>BT(n,e)),n.subscribe(()=>{a(e=>BT(n,e))})),s=[n],e[2]=o,e[3]=s):(o=e[2],s=e[3]),oS(o,s);let c;e[4]===i?c=e[5]:(c=()=>BT(n,i),e[4]=i,e[5]=c);let l,u,d;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>n.getModelContext(),u=e=>n.subscribe(e),d=e=>n.registerModelContextProvider(e),e[6]=l,e[7]=u,e[8]=d):(l=e[6],u=e[7],d=e[8]);let f;return e[9]===c?f=e[10]:(f={getState:c,getModelContext:l,subscribe:u,register:d},e[9]=c,e[10]=f),f}),HT=(e,t)=>{if(t.status?.type!==`running`&&t.status?.type!==`requires-action`){let n=e.complete;return typeof n==`function`?n({args:t.args,result:t.result}):n??null}let n=e.running;return typeof n==`function`?n({args:t.args}):n??null},UT=e=>e.display===void 0?e.type===`human`:e.display===`standalone`,WT=e=>function(t){return HT(e,t)},GT=e=>{let t=$(16),{toolkit:n,mcpApp:r}=e,i;t[0]===r?i=t[1]:(i=r?[hC(`mcpApp`,r)]:[],t[0]=r,t[1]=i);let a=SC(i)[0],[o,s]=tS(qT),c;t[2]!==a||t[3]!==o?(c={toolUIs:o,mcpApp:a},t[2]=a,t[3]=o,t[4]=c):c=t[4];let l=c,u=Ow(),d;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(d=(e,t,n)=>{let r={render:t,renderText:n?.renderText,standalone:n?.standalone??!1};return s(t=>{let n=tx(t);return n[e]=[...n[e]??[],r],n}),()=>{s(t=>{let n=t[e]?.filter(e=>e!==r)??[],i=tx(t);return n.length>0?(i[e]=n,i):(delete i[e],i)})}},t[5]=d):d=t[5];let f=d,p,m;t[6]===n?(p=t[7],m=t[8]):(p=()=>{if(!n)return;let e=[];for(let[t,r]of Object.entries(n)){let n=`render`in r?r.render:void 0,i=`renderText`in r?r.renderText:void 0,a=n??(i?WT(i):void 0);a&&e.push(f(t,a,{standalone:UT(r),renderText:i}))}return()=>ST(e)},m=[n,f],t[6]=n,t[7]=p,t[8]=m),oS(p,m);let h;t[9]!==u||t[10]!==n?(h=()=>{if(!n)return;let e=Object.entries(n).reduce(JT,tx());return u.current.modelContext().register({getModelContext:()=>({tools:e})})},t[9]=u,t[10]=n,t[11]=h):h=t[11];let g;t[12]===n?g=t[13]:(g=[n],t[12]=n,t[13]=g),kw(`modelContext`,h,g);let _;return t[14]===l?_=t[15]:(_={getState:()=>l,setToolUI:f},t[14]=l,t[15]=_),_},KT=mC(GT);rw(GT,(e,t)=>{!e.modelContext&&t.modelContext.source===null&&(e.modelContext=VT())});function qT(){return tx()}function JT(e,t){let[n,r]=t;if(r.type===`mcp`)return e;let{display:i,render:a,renderText:o,...s}=r;return e[n]=s,e}var YT=e=>lS(e.subscribe,e.getState,e.getServerSnapshot),XT=Symbol.for(`assistant-ui.silent-runtime-action`),ZT=e=>typeof e==`object`&&!!e&&XT in e,QT=(e,t)=>{let n=t();return n.catch(t=>{ZT(t)||console.error(`[assistant-ui] ${e} failed:`,t)}),n},$T=mC(e=>{let t=$(9),{runtime:n}=e,r=YT(n),i;t[0]===r?i=t[1]:(i=()=>r,t[0]=r,t[1]=i);let a,o;t[2]===n?(a=t[3],o=t[4]):(a=()=>QT(`attachment remove`,n.remove),o=()=>n,t[2]=n,t[3]=a,t[4]=o);let s;return t[5]!==i||t[6]!==a||t[7]!==o?(s={getState:i,remove:a,__internal_getRuntime:o},t[5]=i,t[6]=a,t[7]=o,t[8]=s):s=t[8],s}),eE=mC(e=>{let t=$(5),{runtime:n,index:r}=e,i;t[0]!==r||t[1]!==n?(i=n.getAttachmentByIndex(r),t[0]=r,t[1]=n,t[2]=i):i=t[2];let a=i,o;return t[3]===a?o=t[4]:(o=$T({runtime:a}),t[3]=a,t[4]=o),_C(o)}),tE=mC(({item:e,onMove:t,onRemove:n})=>({getState:()=>e,steer:()=>t({lane:`steer`,insertAfter:null}),move:t,remove:n})),nE=mC(e=>{let t=$(65),{threadIdRef:n,messageIdRef:r,runtime:i,isSuggestion:a}=e,o=YT(i),s=Aw(),c=rS(!1),l,u;t[0]!==s||t[1]!==r||t[2]!==i||t[3]!==n?(l=()=>{let e=[],t=i.unstable_on(`send`,e=>{let t=c.current;c.current=!1,s(`composer.send`,{threadId:n.current,...r&&{messageId:r.current},chars:e.chars,attachments:e.attachments,...t?{suggestion:!0}:void 0})});e.push(t);let a=i.unstable_on(`attachmentAdd`,e=>{s(`composer.attachmentAdd`,{threadId:n.current,...r&&{messageId:r.current},...e.contentType?{contentType:e.contentType}:void 0})});return e.push(a),e.push(i.unstable_on(`attachmentAddError`,e=>{s(`composer.attachmentAddError`,{threadId:n.current,...r&&{messageId:r.current},...e.attachmentId&&{attachmentId:e.attachmentId},reason:e.reason,message:e.message,...e.contentType?{contentType:e.contentType}:void 0})})),()=>ST(e)},u=[i,s,n,r],t[0]=s,t[1]=r,t[2]=i,t[3]=n,t[4]=l,t[5]=u):(l=t[4],u=t[5]),oS(l,u);let d;if(t[6]!==i||t[7]!==o.attachments){let e;t[9]===i?e=t[10]:(e=(e,t)=>hC(e.id,eE({runtime:i,index:t}),[i,t]),t[9]=i,t[10]=e),d=o.attachments.map(e),t[6]=i,t[7]=o.attachments,t[8]=d}else d=t[8];let f=gT(d),p=o.queue,m;if(t[11]!==p||t[12]!==i){let e;t[14]===i?e=t[15]:(e=e=>hC(e.id,tE({item:e,onMove:t=>i.moveQueueItem(e.id,t),onRemove:()=>i.removeQueueItem(e.id)})),t[14]=i,t[15]=e),m=p.map(e),t[11]=p,t[12]=i,t[13]=m}else m=t[13];let h=gT(m),g=o.type??`thread`,_;t[16]!==f.state||t[17]!==p||t[18]!==o.attachmentAccept||t[19]!==o.canCancel||t[20]!==o.canSend||t[21]!==o.dictation||t[22]!==o.inTransit||t[23]!==o.isEditing||t[24]!==o.isEmpty||t[25]!==o.quote||t[26]!==o.role||t[27]!==o.runConfig||t[28]!==o.submission||t[29]!==o.text||t[30]!==g?(_={text:o.text,role:o.role,attachments:f.state,runConfig:o.runConfig,isEditing:o.isEditing,canCancel:o.canCancel,canSend:o.canSend,attachmentAccept:o.attachmentAccept,isEmpty:o.isEmpty,type:g,dictation:o.dictation,quote:o.quote,queue:p,submission:o.submission,inTransit:o.inTransit},t[16]=f.state,t[17]=p,t[18]=o.attachmentAccept,t[19]=o.canCancel,t[20]=o.canSend,t[21]=o.dictation,t[22]=o.inTransit,t[23]=o.isEditing,t[24]=o.isEmpty,t[25]=o.quote,t[26]=o.role,t[27]=o.runConfig,t[28]=o.submission,t[29]=o.text,t[30]=g,t[31]=_):_=t[31];let v=_,y;t[32]===v?y=t[33]:(y=()=>v,t[32]=v,t[33]=y);let b;t[34]!==a||t[35]!==i?(b=e=>{let t=i.getState();c.current=t.canSend&&(a?.(t.text)??!1),i.send(e)},t[34]=a,t[35]=i,t[36]=b):b=t[36];let x;t[37]!==s||t[38]!==r||t[39]!==i||t[40]!==n?(x=()=>{!r&&i.getState().canCancel&&s(`composer.cancel`,{threadId:n.current}),i.cancel()},t[37]=s,t[38]=r,t[39]=i,t[40]=n,t[41]=x):x=t[41];let S=i.beginEdit??rE,C;t[42]===f?C=t[43]:(C=e=>`id`in e?f.get({key:e.id}):f.get(e),t[42]=f,t[43]=C);let w;t[44]===h?w=t[45]:(w=e=>`id`in e?h.get({key:e.id}):h.get(e),t[44]=h,t[45]=w);let T;t[46]===i?T=t[47]:(T=()=>i,t[46]=i,t[47]=T);let E;return t[48]!==i.addAttachment||t[49]!==i.clearAttachments||t[50]!==i.reset||t[51]!==i.setQuote||t[52]!==i.setRole||t[53]!==i.setRunConfig||t[54]!==i.setText||t[55]!==i.startDictation||t[56]!==i.stopDictation||t[57]!==S||t[58]!==C||t[59]!==w||t[60]!==T||t[61]!==y||t[62]!==b||t[63]!==x?(E={getState:y,setText:i.setText,setRole:i.setRole,setRunConfig:i.setRunConfig,addAttachment:i.addAttachment,reset:i.reset,clearAttachments:i.clearAttachments,send:b,cancel:x,beginEdit:S,startDictation:i.startDictation,stopDictation:i.stopDictation,setQuote:i.setQuote,attachment:C,queueItem:w,__internal_getRuntime:T},t[48]=i.addAttachment,t[49]=i.clearAttachments,t[50]=i.reset,t[51]=i.setQuote,t[52]=i.setRole,t[53]=i.setRunConfig,t[54]=i.setText,t[55]=i.startDictation,t[56]=i.stopDictation,t[57]=S,t[58]=C,t[59]=w,t[60]=T,t[61]=y,t[62]=b,t[63]=x,t[64]=E):E=t[64],E});function rE(){throw Error(`beginEdit is not supported in this runtime`)}var iE=e=>({get current(){return e()}}),aE=mC(e=>{let t=$(17),{runtime:n}=e,r=YT(n),i;t[0]===r?i=t[1]:(i=()=>r,t[0]=r,t[1]=i);let a,o,s;t[2]===n?(a=t[3],o=t[4],s=t[5]):(a=e=>n.addToolResult(e),o=e=>n.resumeToolCall(e),s=e=>n.respondToToolApproval(e),t[2]=n,t[3]=a,t[4]=o,t[5]=s);let c;t[6]===n.unstable_recordInteraction?c=t[7]:(c=n.unstable_recordInteraction&&{unstable_recordInteraction:e=>n.unstable_recordInteraction(e)},t[6]=n.unstable_recordInteraction,t[7]=c);let l;t[8]===n?l=t[9]:(l=()=>n,t[8]=n,t[9]=l);let u;return t[10]!==i||t[11]!==a||t[12]!==o||t[13]!==s||t[14]!==c||t[15]!==l?(u={getState:i,addToolResult:a,resumeToolCall:o,respondToToolApproval:s,...c,__internal_getRuntime:l},t[10]=i,t[11]=a,t[12]=o,t[13]=s,t[14]=c,t[15]=l,t[16]=u):u=t[16],u}),oE=mC(e=>{let t=$(5),{runtime:n,index:r}=e,i;t[0]!==r||t[1]!==n?(i=n.getAttachmentByIndex(r),t[0]=r,t[1]=n,t[2]=i):i=t[2];let a=i,o;return t[3]===a?o=t[4]:(o=$T({runtime:a}),t[3]=a,t[4]=o),_C(o)}),sE=mC(e=>{let t=$(5),{runtime:n,index:r}=e,i;t[0]!==r||t[1]!==n?(i=n.getMessagePartByIndex(r),t[0]=r,t[1]=n,t[2]=i):i=t[2];let a=i,o;return t[3]===a?o=t[4]:(o=aE({runtime:a}),t[3]=a,t[4]=o),_C(o)}),cE=mC(e=>{let t=$(77),{runtime:n,threadIdRef:r,threadId:i,isLast:a}=e,o=YT(n),s=Aw(),[c,l]=tS(!1),[u,d]=tS(!1),f;t[0]===n?f=t[1]:(f=iE(()=>n.getState().id),t[0]=n,t[1]=f);let p=f,m=rS(o.status),h;t[2]!==s||t[3]!==n||t[4]!==i?(h=e=>{s(e,{threadId:i,messageId:n.getState().id})},t[2]=s,t[3]=n,t[4]=i,t[5]=h):h=t[5];let g=h,_,v;t[6]!==s||t[7]!==o.id||t[8]!==o.status||t[9]!==i?(_=()=>{let e=o.status,t=m.current;m.current=e,e?.type===`incomplete`&&e.reason===`error`&&(t?.type!==`incomplete`||t.reason!==`error`)&&s(`message.error`,{threadId:i,messageId:o.id,reason:`error`})},v=[o.status,o.id,s,i],t[6]=s,t[7]=o.id,t[8]=o.status,t[9]=i,t[10]=_,t[11]=v):(_=t[10],v=t[11]),oS(_,v);let y;t[12]!==p||t[13]!==n.composer||t[14]!==r?(y=nE({runtime:n.composer,threadIdRef:r,messageIdRef:p}),t[12]=p,t[13]=n.composer,t[14]=r,t[15]=y):y=t[15];let b=gw(y),x;if(t[16]!==n||t[17]!==o.content){let e;t[19]===n?e=t[20]:(e=(e,t)=>hC(`toolCallId`in e&&e.toolCallId!=null?`toolCallId-${e.toolCallId}`:`index-${t}`,sE({runtime:n,index:t}),[n,t]),t[19]=n,t[20]=e),x=o.content.map(e),t[16]=n,t[17]=o.content,t[18]=x}else x=t[18];let S=gT(x),C;t[21]===o.attachments?C=t[22]:(C=o.attachments??[],t[21]=o.attachments,t[22]=C);let w;if(t[23]!==n||t[24]!==C){let e;t[26]===n?e=t[27]:(e=(e,t)=>hC(e.id,oE({runtime:n,index:t}),[n,t]),t[26]=n,t[27]=e),w=C.map(e),t[23]=n,t[24]=C,t[25]=w}else w=t[25];let T=gT(w),E=o,D;t[28]===a?D=t[29]:(D=a===!1?{isLast:a}:{},t[28]=a,t[29]=D);let O;t[30]!==b.state||t[31]!==c||t[32]!==u||t[33]!==S.state||t[34]!==D||t[35]!==E?(O={...E,...D,parts:S.state,composer:b.state,isCopied:c,isHovering:u},t[30]=b.state,t[31]=c,t[32]=u,t[33]=S.state,t[34]=D,t[35]=E,t[36]=O):O=t[36];let k=O,A;t[37]===k?A=t[38]:(A=()=>k,t[37]=k,t[38]=A);let j;t[39]===b.methods?j=t[40]:(j=()=>b.methods,t[39]=b.methods,t[40]=j);let M;t[41]===n?M=t[42]:(M=()=>n.delete(),t[41]=n,t[42]=M);let N,P;t[43]!==g||t[44]!==n?(N=e=>(g(`message.reload`),n.reload(e)),P=()=>(g(`message.speak`),n.speak()),t[43]=g,t[44]=n,t[45]=N,t[46]=P):(N=t[45],P=t[46]);let F,I;t[47]===n?(F=t[48],I=t[49]):(F=()=>n.stopSpeaking(),I=e=>n.submitFeedback(e),t[47]=n,t[48]=F,t[49]=I);let L;t[50]!==g||t[51]!==n?(L=e=>(g(`message.branchSwitched`),n.switchToBranch(e)),t[50]=g,t[51]=n,t[52]=L):L=t[52];let R;t[53]===n?R=t[54]:(R=()=>n.unstable_getCopyText(),t[53]=n,t[54]=R);let z;t[55]===S?z=t[56]:(z=e=>`index`in e?S.get({index:e.index}):S.get({key:`toolCallId-${e.toolCallId}`}),t[55]=S,t[56]=z);let B;t[57]===T?B=t[58]:(B=e=>`id`in e?T.get({key:e.id}):T.get(e),t[57]=T,t[58]=B);let V;t[59]===g?V=t[60]:(V=e=>{e&&g(`message.copied`),l(e)},t[59]=g,t[60]=V);let H;t[61]===n?H=t[62]:(H=()=>n,t[61]=n,t[62]=H);let U;return t[63]!==A||t[64]!==j||t[65]!==M||t[66]!==N||t[67]!==P||t[68]!==F||t[69]!==I||t[70]!==L||t[71]!==R||t[72]!==z||t[73]!==B||t[74]!==V||t[75]!==H?(U={getState:A,composer:j,delete:M,reload:N,speak:P,stopSpeaking:F,submitFeedback:I,switchToBranch:L,getCopyText:R,part:z,attachment:B,setIsCopied:V,setIsHovering:d,__internal_getRuntime:H},t[63]=A,t[64]=j,t[65]=M,t[66]=N,t[67]=P,t[68]=F,t[69]=I,t[70]=L,t[71]=R,t[72]=z,t[73]=B,t[74]=V,t[75]=H,t[76]=U):U=t[76],U}),lE=e=>e.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
123
+ Previous: [${e.join(`, `)}]\nIncoming: [${t.join(`, `)}]`);for(let n=0;n<e.length&&n<t.length;n++)if(!Object.is(e[n],t[n]))return!1;return!0},sx=(e,t)=>{Gb(e,()=>{t.current=t.wip,t.currentDeps=t.wipDeps,t.isDirty=!1})},cx=(e,t)=>{let n=Rb(),r=n.currentIndex++,i=n.cells[r];if(i===void 0){n.isFirstRender||tx();let a=e();return Bb&&n.devStrictMode&&e(),i={type:`memo`,current:a,currentDeps:t,wip:a,wipDeps:t,isDirty:!1},n.cells[r]=i,a}i.type!==`memo`&&nx();let a=i;if(ox(a.wipDeps,t))return a.isDirty&&sx(n,a),a.wip;let o=e();return Bb&&n.devStrictMode&&e(),a.wip=o,a.wipDeps=t,a.isDirty||(a.isDirty=!0,Kb(n.root,()=>{a.wip=a.current,a.wipDeps=a.currentDeps,a.isDirty=!1})),sx(n,a),o};function lx(e){return cx(()=>({current:e}),[])}var ux=Symbol(`tap.Context.defaultValue`),dx=e=>e,fx=new Map,px=new Set,mx=()=>new Map(fx),hx=(e,t)=>{let n=fx;fx=e;try{return t()}finally{fx=n}},gx=(e,t)=>{e[ux]=t},_x=e=>typeof e==`object`&&!!e&&ux in e,vx=e=>typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===Symbol.for(`react.context`),yx=e=>_x(e)||vx(e),bx=e=>{if(!_x(e)){if(vx(e)){gx(e,e._currentValue??e._currentValue2);return}throw Error("A tap resource's `use()` only accepts a tap context.")}},xx=(e,t,n)=>{if(typeof e!=`object`||!e)throw Error(`useContextProvider only accepts a React context.`);bx(e);let r=e,i=Rb(),a=lx(void 0),o=a.current===void 0||!Object.is(a.current.value,t);ax(()=>{a.current={value:t}},[t]);let s=fx.get(r),c=s!==void 0||fx.has(r);fx.set(r,{value:t,source:i});try{return Sx(r,o,n)}finally{c?fx.set(r,s):fx.delete(r)}},Sx=(e,t,n)=>{let r=px.has(e);t?px.add(e):px.delete(e);try{return n()}finally{r?px.add(e):px.delete(e)}},Cx=e=>{bx(e);let t=e,n=wx(t,e),r=Rb();return(r.wipContextDeps??=new Map).set(t,n.source),n.value},wx=(e,t)=>fx.get(e)??{value:dx(t)[ux],source:null},Tx=(e,t,n,r)=>{if(!r)return n;let i=n;for(let[n,a]of r)a!==t&&a!==e&&(i??=new Map).set(n,a);return i},Ex=(e,t=e.wipContextDeps)=>{let n=zb();!n||!t||(n.wipContextDeps=Tx(n,e,n.wipContextDeps,t))},Dx=()=>px.size>0,Ox=e=>{if(!e.contextDeps||!Dx())return!1;for(let t of px.keys())if(e.contextDeps.has(t))return!0;return!1},kx=(e,t,n)=>{if(e.isNeverMounted)throw Error(`Resource updated before mount`);let r=!1,i=!0;e.root.unsettledCount++,e.root.dispatchUpdate(()=>r?i:(r=!0,n&&e.root.changelog.length===0&&!t.cell.isDirty&&!t.hasEagerState&&(t.prevState=t.cell.workInProgress,t.eagerState=n(t.cell.workInProgress,t.action),t.hasEagerState=!0,i=!Object.is(t.cell.current,t.eagerState),!i&&!t.settled&&(t.settled=!0,e.root.unsettledCount--)),i),()=>(r=!0,i=!0,Wb(t),t.logged||(t.logged=!0,e.root.changelog.push(t)),!0))},Ax=(e,t,n,r,i)=>{let a=r?r(n):n;Bb&&e.devStrictMode&&r&&r(n);let o={type:`reducer`,workInProgress:a,current:a,isDirty:!1,queue:null,renderQueue:null,reducer:t,dispatch:n=>{let r=zb();if(r!==null){if(r!==e)throw Error(`Cannot update a resource while rendering a different resource.`);(e.renderPendingCells??=new Set).add(o),(o.renderQueue??=[]).push(n)}else kx(e,{fiber:e,cell:o,action:n,hasEagerState:!1,eagerState:void 0,prevState:o.current,settled:!1,queued:!1,logged:!1},i?t:void 0)}};return o};function jx(e,t,n,r){let i=Rb(),a=i.currentIndex++,o=i.cells[a],s=(()=>{if(o!==void 0)return o.type===`reducer`?o:nx();i.isFirstRender||tx();let s=Ax(i,e,t,n,r);return i.cells[a]=s,s})(),c=s.queue;if(c!==null){let t=e===s.reducer;for(let n=0;n<c.length;n++){let r=c[n];!r.hasEagerState||!t||!Object.is(r.prevState,s.workInProgress)?(r.prevState=s.workInProgress,r.eagerState=e(s.workInProgress,r.action),r.hasEagerState=!0,Bb&&i.devStrictMode&&(r.eagerState=e(s.workInProgress,r.action))):Bb&&i.devStrictMode&&e(s.workInProgress,r.action),r.queued=!1,s.workInProgress=r.eagerState}s.queue=null}if(s.reducer=e,s.renderQueue!==null){let t=s.workInProgress;for(let n of s.renderQueue)t=e(t,n);s.renderQueue=null,i.renderPendingCells?.delete(s),Object.is(t,s.workInProgress)||(qb(i,s),s.workInProgress=t)}return s.isDirty&&Gb(i,()=>{s.current=s.workInProgress,s.isDirty=!1}),[s.workInProgress,s.dispatch]}function Mx(e,t,n){return jx(e,t,n,!1)}var Nx=(e,t)=>typeof t==`function`?t(e):t,Px=e=>e===void 0?void 0:typeof e==`function`?e():e;function Fx(e){return jx(Nx,e,Px,!0)}var Ix=(e,t)=>cx(()=>e,t);function Lx(e,t){ix(e,t,`insertion`)}function Rx(e){let t=Rb(),n=lx(e);return n.current!==e&&Gb(t,()=>{n.current=e}),Ix(((...e)=>{if(Bb&&zb())throw Error(`useEffectEvent cannot be called during render`);return n.current(...e)}),[])}var zx=e=>typeof e==`object`&&!!e&&typeof e.then==`function`,Bx=()=>{},Vx=e=>{let t=e;switch(typeof t.status==`string`?t.status!==`fulfilled`&&t.status!==`rejected`&&e.then(Bx,Bx):(t.status=`pending`,e.then(e=>{t.status===`pending`&&(t.status=`fulfilled`,t.value=e)},e=>{t.status===`pending`&&(t.status=`rejected`,t.reason=e)})),t.status){case`fulfilled`:return t.value;case`rejected`:throw t.reason;default:throw e}},Hx=e=>zx(e)?Vx(e):Cx(e),Ux=!1,Wx=(e,t,n=t)=>{let r=Rb().isNeverMounted,i=r?n():t();Bb&&!Ux&&(!r||n===t)&&(Object.is(i,t())||(Ux=!0,console.error(`The result of getSnapshot should be cached to avoid an infinite loop`)));let[,a]=Mx(e=>e+1,0),o=lx(0),s=Rx(()=>{try{if(Object.is(i,t()))return o.current=0,!1}catch{}return!0});return ax(()=>e(()=>{s()&&a()}),[e]),ax(()=>{if(s()){if(++o.current>50)throw o.current=0,Error(`Maximum update depth exceeded. The result of getSnapshot should be cached to avoid an infinite loop.`);a()}},[e,i,t]),i},Gx=(e,t)=>{},Kx=0,qx=()=>{let e=lx(null);return e.current??=`:tap${Kx++}:`,e.current},Jx=(e,t,n)=>{let r=()=>{if(!e)return;let n=t();if(typeof e==`function`){let t=e(n);return typeof t==`function`?t:()=>e(null)}return e.current=n,()=>{e.current=null}};n==null?ax(r):ax(r,[...n,e])},Yx=v.default;function Xx(e){let t=(0,v.useRef)(e);return(0,v.useInsertionEffect)(()=>{t.current=e}),(0,v.useCallback)(((...e)=>t.current(...e)),[])}var Zx=Yx.useEffectEvent??Xx,Qx=()=>zb()!==null,$x=v.default,eS=e=>Qx()?Fx(e):$x.useState(e),tS=(e,t,n)=>Qx()?Mx(e,t,n):$x.useReducer(e,t,n),nS=e=>Qx()?lx(e):$x.useRef(e),rS=(e,t)=>Qx()?cx(e,t):$x.useMemo(e,t),iS=(e,t)=>Qx()?Ix(e,t):$x.useCallback(e,t),aS=(e,t)=>Qx()?ax(e,t):$x.useEffect(e,t),oS=(e,t)=>Qx()?ax(e,t):$x.useLayoutEffect(e,t),sS=e=>Qx()?Rx(e):Zx(e),cS=(e,t,n)=>Qx()?Wx(e,t,n):$x.useSyncExternalStore(e,t,n),lS=(e,t)=>Qx()?void 0:$x.useDebugValue(e,t),uS=(e,t)=>Qx()?Lx(e,t):$x.useInsertionEffect(e,t),dS=()=>Qx()?qx():$x.useId(),fS=(e,t,n)=>Qx()?Jx(e,t,n):$x.useImperativeHandle(e,t,n),pS=e=>$x.forwardRef(e),mS=(e,t)=>$x.memo(e,t),hS=$x.Fragment;$x.Children,$x.Suspense;var gS=e=>{let t=$x.createContext(e);return gx(t,e),t},_S=e=>Qx()&&yx(e)?Hx(e):$x.use(e),vS=e=>Qx()&&yx(e)?Hx(e):$x.useContext(e),yS=(e,t)=>{if(e.length!==0){if(e.length===1)throw e[0];for(let t of e)console.error(t);throw AggregateError(e,t)}},bS=50,xS={schedulers:new Set,isScheduled:!1},SS=null,CS=[],wS=class{_isDirty=!1;_task;constructor(e){this._task=e}get isDirty(){return this._isDirty}markDirty(){if(SS&&(SS.get(this)??0)>=bS)throw Error(`Maximum update depth exceeded. This can happen when a resource repeatedly calls setState inside useEffect.`);this._isDirty=!0,xS.schedulers.add(this),DS()}runTask(){SS?.set(this,(SS.get(this)??0)+1),this._isDirty=!1,this._task()}settle(){this._isDirty=!1}},TS=[];new wS(()=>{let e=TS.splice(0),t=[];for(let n of e)try{n()}catch(e){t.push(e)}yS(t,`Errors occurred while running scheduled tasks`)});var ES=e=>{if(SS!==null){CS.push(e);return}e()},DS=()=>{xS.isScheduled||(xS.isScheduled=!0,kS())},OS=()=>{let e=SS;SS=new Map;let t=[];try{for(let e of xS.schedulers)if(xS.schedulers.delete(e),e.isDirty)try{e.runTask()}catch(e){t.push(e)}}finally{if(SS=e,xS.schedulers.clear(),xS.isScheduled=!1,SS===null)for(;CS.length>0;)try{CS.shift()()}catch(e){t.push(e)}}yS(t,`Errors occurred during flushSync`)},kS=(()=>{if(typeof MessageChannel<`u`){let e=null,t;return()=>{if(!e){let n=new MessageChannel;n.port1.onmessage=()=>{e?.unref?.(),OS()},e=n.port1,t=n.port2}e.ref?.(),t.postMessage(null)}}return()=>setTimeout(OS,0)})(),AS=e=>{if(SS!==null)return Bb&&console.warn(`flushTapSync was called from inside a render or commit. The flush is deferred until the current pass completes.`),e();let t=xS;xS={schedulers:new Set,isScheduled:!0};try{let t=e();return OS(),t}finally{let e=xS.schedulers;if(xS=t,e.size>0){for(let t of e)xS.schedulers.add(t);DS()}}};function jS(e){if(e.length===0)return;let t;for(let n=0;n<e.length;n++)try{e[n]()}catch(e){(t??=[]).push(e)}t!==void 0&&yS(t,`Errors during commit`)}function MS(e){let t=e.setup,n=e.setupDeps,r=e.generation,i;try{let e=t();if(e!==void 0&&typeof e!=`function`)throw Error(`An effect function must either return a cleanup function or nothing. Received: ${typeof e}`);i=e}finally{e.generation===r?(e.cleanup=i,e.deps=n):i?.()}}var NS=e=>e.setup===void 0?!1:e.deps===null||e.setupDeps===void 0||!ox(e.deps,e.setupDeps);function PS(e,t){let n;for(let t of e)NS(t)&&(n??=[]).push(t);if(n===void 0)return t;for(let e of n)if(e.deps=null,e.cleanup!==void 0)try{e.cleanup()}catch(e){(t??=[]).push(e)}finally{e.cleanup=void 0}for(let e of n)try{MS(e)}catch(e){(t??=[]).push(e)}return t}function FS(e,t=!0){let n;e.insertionCells!==null&&t&&(n=PS(e.insertionCells,n)),n=PS(e.effectCells,n),n!==void 0&&yS(n,`Errors during commit`)}function IS(e){let t;for(let n of e)if(n.deps=null,n.cleanup)try{n.cleanup?.()}catch(e){(t??=[]).push(e)}finally{n.cleanup=void 0}t!==void 0&&yS(t,`Errors during cleanup`)}var LS={useState:Fx,useReducer:Mx,useRef:lx,useMemo:cx,useCallback:Ix,useEffect:ax,useLayoutEffect:ax,useInsertionEffect:Lx,useEffectEvent:Rx,useContext:Cx,use:Hx,useSyncExternalStore:Wx,useDebugValue:Gx,useId:qx,useImperativeHandle:Jx,useMemoCache:Zb},RS=v.default,zS=RS.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE??RS.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,BS=zS==null?null:`H`in zS?{get current(){return zS.H},set current(e){zS.H=e}}:`ReactCurrentDispatcher`in zS?{get current(){return zS.ReactCurrentDispatcher.current},set current(e){zS.ReactCurrentDispatcher.current=e}}:null;function VS(e){if(!BS)return e();let t=BS.current;BS.current=LS;try{return e()}finally{BS.current=t}}function HS(e,t,n=void 0,r){return{hook:e,root:t,markDirty:n,devStrictMode:r,cells:[],effectCells:[],insertionCells:null,hostCells:null,contextDeps:null,wipContextDeps:null,wipCommitCallbacks:null,memoCache:{current:null,workInProgress:null,index:0},renderPendingCells:null,currentIndex:0,isFirstRender:!0,isMounted:!1,isReleased:!1,isNeverMounted:!0}}function US(e){e.wipCommitCallbacks=null,e.wipContextDeps=null,e.memoCache.workInProgress=null}function WS(e,t,n){try{t?(e.isReleased=!0,e.insertionCells!==null&&IS(e.insertionCells)):e.isMounted&&(e.isMounted=!1,IS(e.effectCells))}catch(e){(n??=[]).push(e)}if(e.hostCells!==null){for(let r of e.hostCells)if(r.fiber!==null&&(n=WS(r.fiber,t,n)),r.fibers!==null)for(let{fiber:e}of r.fibers.values())n=WS(e,t,n)}return n}function GS(e,t=!0){let n;t&&(n=WS(e,!0,n)),n=WS(e,!1,n),n!==void 0&&yS(n,`Errors during cleanup`)}function KS(e){let t;for(let n of e)n.isReleased&&(t=WS(n,!0,t));for(let n of e)t=WS(n,!1,t);t!==void 0&&yS(t,`Errors during cleanup`)}function qS(e,t){if(e.renderPendingCells!==null){for(let t of e.renderPendingCells)t.renderQueue=null;e.renderPendingCells.clear()}let n=0,r;try{do{if(++n>25)throw Error(`Too many re-renders. tap limits the number of renders to prevent an infinite loop.`);e.memoCache.index=0,Lb(e,()=>{r=VS(()=>e.hook(...t))})}while((e.renderPendingCells?.size??0)>0)}catch(t){throw US(e),t}return Ex(e),r}function JS(e){let t=e.wipCommitCallbacks;e.wipCommitCallbacks=null;let n=Bb&&!e.isMounted&&e.devStrictMode===`root`;e.isMounted=!0,e.isNeverMounted=!1,t!==null&&(e.contextDeps=e.wipContextDeps,Hb(e.root),e.memoCache.workInProgress!==null&&(e.memoCache.current=e.memoCache.workInProgress,e.memoCache.workInProgress=null),jS(t)),n&&(FS(e,t!==null),GS(e,!1),e.isMounted=!0),FS(e,!n&&t!==null)}var YS=()=>{let e=Rb();return e.devStrictMode?e.isFirstRender?`child`:`root`:null},XS=()=>`child`,ZS=()=>null,QS=()=>{if(!Bb)return ZS;let e=nS(0);return eS(()=>e.current++),e.current===2?XS:ZS},$S=()=>zb()?YS:QS(),eC=e=>{let t=Rb(),n=t.currentIndex++,r=t.cells[n],i;if(r===void 0){t.isFirstRender||tx();let r=e instanceof Map;i={type:`host`,fiber:r?null:e,fibers:r?e:null},t.cells[n]=i,(t.hostCells??=[]).push(i)}else r.type!==`host`&&nx(),i=r;return i.fibers===null&&i.fiber!==e&&Gb(t,()=>{i.fiber=e}),i},tC=(e,t)=>{if(!(e instanceof Map))return t(e);for(let{fiber:n}of e.values())t(n)},nC=e=>{e.isReleased=!1},rC=e=>{e.isReleased=!0,e.isMounted||queueMicrotask(()=>{e.isReleased&&GS(e,!0)})},iC=e=>{uS(()=>(tC(e,nC),()=>tC(e,rC)),[e]),aS(()=>()=>{KS(e instanceof Map?Array.from(e.values(),({fiber:e})=>e):[e])},[e])},aC=e=>zb()?eC(e):(iC(e),null),oC=()=>{let e=nS(0),t=e.current,n=Rb();return{version:t,markDirty:rS(()=>()=>{e.current++,n.markDirty?.()},[n]),root:n.root}},sC=()=>{let[e]=eS(()=>Vb((e,t)=>{let i=!1;r(t=>(i=!e(),i?t:t+1)),i||n(()=>e()&&t())})),[t,n]=tS((t,n)=>(Ub(e,t),t+ +!!n()),0),[,r]=eS(0);return Ub(e,t),{root:e,version:t,markDirty:void 0}},cC=()=>{let e=$S(),{root:t,version:n,markDirty:r}=zb()?oC():sC();return{version:n,createFiber:iS((n,i,a)=>HS(n,t,a?()=>{a(),r?.()}:r,e()),[])}},lC=e=>e(),uC=e=>{let t=[];for(let n of e)try{n()}catch(e){t.push(e)}yS(t,`Errors occurred while notifying Tap root subscribers`)},dC=(e,t,n)=>{let r=new wS(()=>s.handleUpdate()),i=[],a=Vb((e,t)=>{i.length===0&&!e()||(i.push(t),r.markDirty())}),o=HS(lC,a,void 0,t),s={scheduler:r,queue:i,fiber:o,subscribers:new Set,pendingHostRender:!1,isMounted:!1,hasRendered:!1,committedRender:e,context:new Map,value:void 0,applyQueue:()=>{Ub(a,a.committedVersion);for(let e of i)Bb&&o.devStrictMode&&e(),e();return Ub(a,a.committedVersion+a.changelog.length),i.length},publish:(e,t)=>{r.isDirty||a.committedVersion!==t||s.value===e||(s.value=e,ES(()=>uC(s.subscribers)))},finishFlush:(e,t,n)=>{Hb(a),i.splice(0,n),s.pendingHostRender=!1,i.length===0&&r.settle(),s.isMounted&&JS(o),s.publish(e,t)},handleUpdate:()=>{let e=s.applyQueue(),t;try{Bb&&o.devStrictMode&&hx(s.context,()=>qS(o,[s.committedRender])),t=hx(s.context,()=>qS(o,[s.committedRender]))}catch(e){if(Ub(a,a.committedVersion),zx(e)){let t=()=>{s.isMounted&&r.markDirty()};e.then(t,t);return}if(s.isMounted){s.pendingHostRender=!0,n(e=>e+1);return}throw e}if(r.isDirty)throw Error(`Scheduler is dirty, this should never happen`);s.finishFlush(t,a.version,e)}};return s},fC=e=>{let[,t]=eS(0),n=$S(),r=nS(null),i=r.current??=dC(e,n(),t),a=mx(),o=i.scheduler.isDirty||i.pendingHostRender?i.applyQueue():0,s=hx(a,()=>qS(i.fiber,[e])),c={render:e,context:a,value:s,drained:o,wip:i.fiber.wipCommitCallbacks,version:i.fiber.root.version,processed:!1};return i.hasRendered||(i.hasRendered=!0,i.committedRender=e,i.context=a,i.value=s),aS(()=>(i.isMounted=!0,()=>{i.isMounted=!1}),[i]),aC(i.fiber),aS(()=>{if(c.processed){i.fiber.isMounted||(JS(i.fiber),i.queue.length&&!i.scheduler.isDirty&&i.scheduler.markDirty());return}if(c.processed=!0,i.committedRender=c.render,i.context=c.context,i.fiber.wipCommitCallbacks!==c.wip){i.scheduler.isDirty||i.handleUpdate();return}if(c.drained>0&&i.fiber.root.version===c.version){i.finishFlush(c.value,c.version,c.drained);return}JS(i.fiber),i.publish(c.value,c.version)}),rS(()=>({getValue:()=>i.value,subscribe:e=>(i.subscribers.add(e),()=>i.subscribers.delete(e))}),[i])};function pC(e){return(...t)=>({hook:e,args:t})}function mC(e,t,n){return typeof t==`function`?(...n)=>mC(e,t(...n)):n?{...t,key:e,deps:n}:{...t,key:e}}var hC=(e,t)=>({fiber:e,key:t,currentDeps:null,current:null,wipDeps:null,wip:null});function gC(e){let{version:t,createFiber:n}=cC(),r=nS(null),i=r.current??=hC(n(e.hook,e.key),e.key),a=rS(()=>i.fiber.hook===e.hook&&i.key===e.key&&!i.fiber.isReleased?i.fiber:n(e.hook,e.key),[i,e.hook,e.key,n]);i.wipDeps=i.currentDeps,i.wip=i.current;let o=[a,t,e.args];(Ox(a)||i.currentDeps===null||!ox(i.currentDeps,o))&&(i.wipDeps=o,i.wip={value:qS(a,e.args)});let s=i.wip,c=aC(a);return aS(()=>{if(i.currentDeps=i.wipDeps,i.current=i.wip,i.fiber=a,i.key=e.key,JS(a),c!==null)return()=>{c.fiber!==a&&GS(a,!0)}},[i,c,a,e.key,s]),s.value}var _C=(e,t,n)=>{let r=nS(null),i=r.current??={wipDeps:null,wip:null,currentDeps:null,current:null};return i.wipDeps=i.currentDeps,i.wip=i.current,aS(()=>{i.currentDeps=i.wipDeps,i.current=i.wip}),!n&&i.currentDeps&&ox(i.currentDeps,t)?i.current:(i.wipDeps=t,i.wip=e(),i.wip)},vC=(e,t)=>{let n=e.get(t);n&&(n.isDirty=!0)},yC=(e,t)=>!e.isDirty&&!Ox(e.fiber)&&t!==void 0&&e.committedDeps!==void 0&&ox(e.committedDeps,t),bC=e=>{if(!Dx())return!1;for(let{fiber:t}of e.values())if(Ox(t))return!0;return!1};function xC(e){let[t]=eS(()=>new Map),{version:n,createFiber:r}=cC(),i=bC(t),a=!1,o=_C(()=>{let n=new Set,i=[],o=0;for(let s=0;s<e.length;s++){let c=e[s],l=c.key;if(l===void 0)throw Error(`useResources did not provide a key for array at index ${s}`);if(n.has(l))throw Error(`Duplicate key ${l} in useResources`);n.add(l);let u=t.get(l);if(!u){let e=r(c.hook,c.key,()=>vC(t,l));u={fiber:e,next:{value:qS(e,c.args),deps:c.deps},isDirty:!1,committedDeps:void 0,committedValue:void 0},o++,t.set(l,u)}else if(u.fiber.hook!==c.hook){let e=r(c.hook,c.key,()=>vC(t,l)),n=qS(e,c.args);u.next={value:n,deps:c.deps,remount:e},a=!0}else if(yC(u,c.deps))typeof u.next==`object`&&US(u.fiber),u.fiber.contextDeps&&Ex(u.fiber,u.fiber.contextDeps),u.next=`skip`;else{let e=qS(u.fiber,c.args);u.next={value:e,deps:c.deps}}i.push(typeof u.next==`object`?u.next.value:u.committedValue)}if(t.size>i.length-o)for(let e of t.keys())n.has(e)||(t.get(e).next=`delete`,a=!0);return i},[e,t,r,n],i);return aC(t),aS(()=>{if(a){let e=[];for(let[n,r]of t.entries()){let i=r.next;i===`delete`?(e.push(r.fiber),t.delete(n)):i!==`skip`&&i.remount&&(e.push(r.fiber),r.fiber=i.remount)}for(let t of e)t.isReleased=!0;KS(e)}for(let e of t.values()){let t=e.next;t===`skip`?!e.fiber.isNeverMounted&&!e.fiber.isMounted&&JS(e.fiber):t!==`delete`&&(JS(e.fiber),e.committedDeps=t.deps,e.committedValue=t.value,e.isDirty=!1,e.next=`skip`)}},[o,t,a]),o}var SC=e=>e(),CC=e=>{let{createFiber:t}=cC(),[n]=eS(()=>t(SC,void 0)),r=qS(n,[e]);aC(n);let i=!1,a=()=>{i&&n.isMounted||(i=!0,JS(n))};return aS(a),{value:r,effects:a}},wC=pC(()=>{let e=$(4),[t,n]=eS(TC),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(e,t)=>(n(n=>{let r=ex(n.renderers);return r[e]=[...r[e]??[],t],{...n,renderers:r}}),()=>{n(n=>{let r=ex(n.renderers),i=r[e]?.filter(e=>e!==t)??[];return i.length>0?r[e]=i:delete r[e],{...n,renderers:r}})}),e[0]=r):r=e[0];let i=r,a;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=e=>(n(t=>({...t,fallbacks:[...t.fallbacks,e]})),()=>{n(t=>({...t,fallbacks:t.fallbacks.filter(t=>t!==e)}))}),e[1]=a):a=e[1];let o=a,s;return e[2]===t?s=e[3]:(s={getState:()=>t,setDataUI:i,setFallbackDataUI:o},e[2]=t,e[3]=s),s});function TC(){return{renderers:ex(),fallbacks:[]}}var EC=(e,t,n)=>{let r=e=>{console.error(`[assistant-ui] ${n} listener threw an error`,e)};for(let n of e)try{let e=n(typeof t==`function`?t():t);e!==null&&(typeof e==`object`||typeof e==`function`)&&`then`in e&&typeof e.then==`function`&&Promise.resolve(e).catch(r)}catch(e){r(e)}},DC=e=>e,OC=new Set([`$$typeof`,`nodeType`,`then`,`__v_raw`,`__v_isRef`,`__v_isReactive`,`__v_isReadonly`,`__v_isShallow`,`__v_skip`]),kC=(e,t)=>{if(e===Symbol.toStringTag)return t;if(typeof e!=`symbol`){if(e===`toJSON`)return()=>t;if(!OC.has(e))return!1}},AC=class{getOwnPropertyDescriptor(e,t){let n=this.get(e,t);if(n!==void 0)return{value:n,writable:!1,enumerable:!0,configurable:!0}}set(){return!1}setPrototypeOf(){return!1}defineProperty(){return!1}deleteProperty(){return!1}preventExtensions(){return!1}},jC=Symbol(`assistant-ui.store.clientId`),MC=Symbol(`assistant-ui.store.instanceTag`),NC=(e,t)=>{let n=new Proxy((()=>{}),{apply:()=>(t(),n),get:(n,r)=>r===`source`?e.source:r===`query`?e.query:r===`name`?e.name:r===jC?LC(t()):t()[r],has:(e,n)=>n===`source`||n===`query`||n===`name`||n===jC||n in t(),ownKeys:()=>Reflect.ownKeys(t()),getOwnPropertyDescriptor:(e,n)=>{if(!(typeof n==`symbol`||!(n in t())))return{value:t()[n],writable:!1,enumerable:!0,configurable:!0}}});return n},PC=(e,t)=>{let n=()=>{throw Error(e)};return new Proxy((()=>{}),{apply:n,get:(e,r)=>{if(r===`source`||r===`query`)return null;if(r===`name`)return t;if(r===jC)return n();let i=kC(r,`AssistantClientAccessor`);return i===!1?n():i},has:(e,t)=>t===`source`||t===`query`||t===`name`,ownKeys:()=>[],getOwnPropertyDescriptor:()=>void 0})},FC=e=>e?.source!=null,IC=e=>e?.source===null,LC=e=>e[jC]??e,RC=e=>e[MC]??LC(e),zC=e=>e===`optional`||e===`subscribe`||e===`on`||e===`__proto__`||typeof e==`symbol`,BC=e=>{let t=[];for(let n in e)zC(n)||t.push(n);return t},VC=class extends AC{#e;constructor(e){super(),this.#e=e}get(e,t){let n=kC(t,`OptionalAssistantClient`);if(n!==!1)return n;if(zC(t))return;let r=this.#e[t];return FC(r)?r:void 0}ownKeys(){return BC(this.#e)}has(e,t){return!zC(t)&&t in this.#e}},HC=e=>new Proxy({},new VC(e)),UC=()=>()=>{},WC=`You are using a component or hook that requires an AuiProvider. Wrap your component in an <AuiProvider> component.`,GC=class extends AC{#e;#t;#n;#r;constructor(e,t,n){super(),this.#e=e,this.#t=t,this.#n=n}get(e,t){if(t===`subscribe`||t===`on`)return UC;if(t===`optional`)return this.#r??=HC(this.#n());let n=kC(t,this.#e);return n===!1?PC(this.#t(String(t)),String(t)):n}ownKeys(){return[`subscribe`,`on`,`optional`]}getOwnPropertyDescriptor(e,t){if(t!==`optional`)return super.getOwnPropertyDescriptor(e,t);let n=this.get(e,t);if(n!==void 0)return{value:n,writable:!1,enumerable:!1,configurable:!0}}has(e,t){return t===`subscribe`||t===`on`||t===`optional`}},KC=((e,t)=>{let n=new Proxy({},new GC(e,t,()=>n));return n})(`DefaultAssistantClient`,()=>WC),qC=()=>new Proxy({},{get(e,t){let n=kC(t,`AssistantClient`);return n===!1?PC(`The current scope does not have a "${String(t)}" property.`,String(t)):n}}),JC=gS(KC),YC=()=>{},XC=new WeakMap,ZC=e=>XC.get(e)??YC,QC=(e,t)=>{XC.set(e,t)},$C=()=>vS(JC),ew=(e,t)=>xx(JC,e,t),tw=Symbol(`assistant-ui.transform-scopes`);function nw(e,t){let n=e;if(n[tw])throw Error(`transformScopes is already attached to this resource`);n[tw]=t}function rw(e){return e[tw]}var iw=e=>typeof e==`string`?{scope:e.split(`.`)[0],event:e}:{scope:e.scope,event:e.event},aw=Symbol(`assistant-ui.store.clientIndex`),ow=e=>e[aw],sw=gS([]),cw=()=>_S(sw),lw=(e,t)=>{let n=$(3),r=cw(),i;return n[0]!==e||n[1]!==r?(i=[...r,e],n[0]=e,n[1]=r,n[2]=i):i=n[2],xx(sw,i,t)},uw=Symbol(`assistant-ui.store.getValue`),dw=e=>{let t=e[uw];if(!t)throw Error(`Client scope contains a non-client resource. Ensure your Derived get() returns a client created with useClientResource(), not a plain resource.`);return t.getState?.()},fw=new Map;function pw(e){let t=fw.get(e);return t||(t=function(...t){if(!this||typeof this!=`object`)throw Error(`Method "${String(e)}" called without proper context. This may indicate the function was called incorrectly.`);let n=this[uw];if(!n)throw Error(`Method "${String(e)}" called on invalid client proxy. Ensure you are calling this method on a valid client instance.`);let r=n[e];if(!r)throw Error(`Method "${String(e)}" is not implemented.`);if(typeof r!=`function`)throw Error(`"${String(e)}" is not a function.`);return r(...t)},fw.set(e,t)),t}var mw=class extends AC{boundFns;cachedReceiver;outputRef;tagRef;index;self;constructor(e,t,n){super(),this.outputRef=e,this.tagRef=t,this.index=n}get(e,t,n){if(t===uw)return this.outputRef.current;if(t===aw)return this.index;if(t===jC)return this.self;if(t===MC)return this.tagRef.current;let r=kC(t,`ClientProxy`);if(r!==!1)return r;let i=this.outputRef.current[t];if(typeof i==`function`){if(n===void 0)return i;(!this.boundFns||this.cachedReceiver!==n)&&(this.boundFns=new Map,this.cachedReceiver=n);let e=this.boundFns.get(t);return e||(e=pw(t).bind(n),this.boundFns.set(t,e)),e}return i}ownKeys(){return Object.keys(this.outputRef.current)}has(e,t){return t===uw||t===aw||t===jC||t===MC||t in this.outputRef.current}},hw=e=>{let t=nS(null),n=nS(null),r=rS(()=>({}),[e.hook,e.key]),i=cw().length,a=rS(()=>{let e=new mw(t,n,i),r=new Proxy({},e);return e.self=r,r},[i]),o=lw(a,function(){return gC(e)});return t.current||(t.current=o,n.current=r),aS(()=>{t.current=o,n.current=r}),{methods:a,state:o.getState?.(),key:e.key}},gw=pC(hw),_w=0,vw=0,yw=e=>{_w++,vw++;try{return e()}finally{vw--,_w++}},bw=e=>{let t,n=new Map,r=-1,i=t=>{if(vw===0)return dw(e[t]());if(r!==_w)n.clear(),r=_w;else if(n.has(t))return n.get(t);let i=dw(e[t]());return n.set(t,i),i};class a extends AC{get(t,n){let r=kC(n,`OptionalAssistantState`);if(r!==!1)return r;let a=n;if(!zC(a)&&FC(e[a]))return i(a)}ownKeys(){return BC(e)}has(t,n){return!zC(n)&&n in e}}class o extends AC{get(e,n){let r=kC(n,`AssistantState`);if(r!==!1)return r;if(n===`optional`)return t??=new Proxy({},new a);let o=n;if(!zC(o))return i(o)}ownKeys(){return[...BC(e),`optional`]}has(t,n){return n===`optional`||!zC(n)&&n in e}}return new Proxy({},new o)},xw=new WeakMap,Sw=e=>{let t=xw.get(e);return t||(t=bw(e),xw.set(e,t)),t},Cw=gS(null),ww=Symbol(`aui.scope-effect-unapplied`),Tw=(e,t)=>xx(Cw,e,t),Ew=()=>{let e=_S(Cw);if(!e)throw Error(`AssistantTapContext is not available`);return e},Dw=()=>Ew().clientRef,Ow=(e,t,n)=>{let r=$(8),{clientRef:i}=Ew(),a;r[0]!==i||r[1]!==t||r[2]!==e?(a=()=>{let n=i.current;if(n===null)throw Error(`useAssistantScopeEffect ran before the client was committed. This is likely an internal bug in assistant-ui.`);let r=()=>{let t=i.current?.[e];return t!==void 0&&FC(t)?RC(t):void 0},a=ww,o,s=e=>{if(o?.(),o=void 0,a=ww,e!==void 0){let e=t();o=typeof e==`function`?e:void 0}a=e};s(r());let c=n.subscribe(()=>{let e=r();e!==a&&s(e)});return()=>{c(),o?.()}},r[0]=i,r[1]=t,r[2]=e,r[3]=a):a=r[3];let o;r[4]!==i||r[5]!==n||r[6]!==e?(o=[i,e,...n],r[4]=i,r[5]=n,r[6]=e,r[7]=o):o=r[7],aS(a,o)},kw=()=>{let e=$(3),{emit:t}=Ew(),n=cw(),r;return e[0]!==n||e[1]!==t?(r=(e,r)=>{t(e,r,n)},e[0]=n,e[1]=t,e[2]=r):r=e[2],sS(r)},Aw=gS(void 0),jw=(e,t)=>{let n=_S(Aw);return xx(Aw,e??n,t)},Mw=(e,t)=>{if(Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!Object.is(e[n],t[n]))return!1;return!0}let n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>Object.hasOwn(t,n)&&Object.is(e[n],t[n]))},Nw=Symbol(`assistant-ui.derived-hook`),Pw=e=>{e[Nw]=!0},Fw=e=>e[Nw]===!0,Iw=e=>{console.error(`NotificationManager: event listener error`,e)},Lw=(e,t,n)=>{try{let r=e(t,n);r!==null&&(typeof r==`object`||typeof r==`function`)&&typeof r.then==`function`&&Promise.resolve(r).catch(Iw)}catch(e){Iw(e)}},Rw=()=>{let e=new Map,t=new Set,n=new Set;return{on(n,r){let i=r;if(n===`*`)return t.add(i),()=>t.delete(i);let a=e.get(n);return a||(a=new Set,e.set(n,a)),a.add(i),()=>{a.delete(i),a.size===0&&e.get(n)===a&&e.delete(n)}},emit(n,r,i){!e.has(n)&&t.size===0||queueMicrotask(()=>{let a=e.get(n);if(a)for(let e of a)Lw(e,r,i);if(t.size>0){let e={event:n,payload:r};for(let n of t)Lw(n,e,i)}})},subscribe(e){return n.add(e),()=>n.delete(e)},notifySubscribers(){yw(()=>{for(let e of n)try{e()}catch(e){console.error(`NotificationManager: subscriber callback error`,e)}})}}},zw=()=>eS(Rw)[0],Bw=()=>{let[e]=eS(()=>({controller:new AbortController,generation:0}));return uS(()=>{let t=++e.generation;return()=>queueMicrotask(()=>{e.generation===t&&e.controller.abort()})},[e]),e.controller.signal},Vw=e=>{let t=rS(()=>({}),[]);return t.v!==void 0&&Mw(t.v,e)?t.v:(t.v=e,e)},Hw=(()=>{try{return!1}catch{return!1}})(),Uw=(e,t)=>{let n={...e},r=new Set,i=!0;for(;i;){i=!1;for(let e of Object.values(n)){if(r.has(e.hook))continue;r.add(e.hook);let a=rw(e.hook);if(a){a(n,t),i=!0;break}}}return n},Ww=e=>Fw(e.hook),Gw=e=>{if(!Ww(e))return{source:`root`,query:{}};let t=e.args[0];return{source:t.source,query:t.query??{}}},Kw=Symbol.for(`aui.event-receiver-ref`),qw=(e,t)=>{let n=e===KC?qC():e,r=Object.create(n);Object.assign(r,t);let i;return Object.defineProperty(r,"optional",{get:()=>i??=HC(r),enumerable:!1}),r},Jw=({notifications:e,clientRef:t})=>rS(()=>({subscribe:e.subscribe,on:function(n,r){if(!this)throw Error(`const { on } = useAui() is not supported. Use aui.on() instead.`);let{scope:i,event:a}=iw(n),o=n[Kw];if(i!==`*`&&!o&&IC(this[i]))throw Error(`Scope "${i}" is not available. Use { scope: "*", event: "${a}" } to listen globally.`);let s=e.on(a,(e,n)=>{if(i===`*`)return r(e);let a=((o??t).current??this)[i];if(!FC(a))return;let s=LC(a);if(s===n[ow(s)])return r(e)});if(i!==`*`){if(o){if(t.parent===KC)return s}else if(IC(t.parent[i]))return s}let c=t.parent.on(n,r);return()=>{s(),c()}}}),[e,t]),Yw=e=>{let t=$(5),n;t[0]===e?n=t[1]:(n=Gw(e),t[0]=e,t[1]=n);let{source:r,query:i}=n,a=Vw(i),o;return t[2]!==r||t[3]!==a?(o={source:r,query:a},t[2]=r,t[3]=a,t[4]=o):o=t[4],Vw(o)},Xw=(e,t)=>{let n=$(3),r;return n[0]!==t||n[1]!==e?(r=t?e:gw(e),n[0]=t,n[1]=e,n[2]=r):r=n[2],gC(r)},Zw=pC((e,t)=>{let n=$C(),r=Ww(t),i=Xw(t,r),a=r?i:i.methods,o=Yw(t),s=rS(()=>NC({name:e,...o},()=>a),[e,o,a]);return n[e]=s,s}),Qw=e=>{let t=$(2),n;return t[0]===e?n=t[1]:(n=e.map(lT),t[0]=e,t[1]=n),xC(n)},$w=(e,t)=>{let n=Vw(t),r=rS(()=>({}),[]);return r.deps!==n&&(r.deps=n,r.client=e),r.client},eT=({parent:e,entries:t,clientRef:n,notifications:r})=>{let i=qw(e,Jw({notifications:r,clientRef:n}));return{client:$w(i,[e,...Tw(rS(()=>({clientRef:n,emit:r.emit}),[n,r.emit]),function(){return ew(i,function(){return Qw(t)})})])}},tT=({parent:e,entries:t,destroySignal:n})=>{let r=nS({parent:e,current:null}).current,{value:i,effects:a}=CC(function(){let i=zw(),{client:a}=jw(n,function(){return eT({parent:e,entries:t,clientRef:r,notifications:i})});return aS(()=>e.subscribe(i.notifySubscribers),[e,i]),aS(()=>i.notifySubscribers()),a});return uS(()=>{r.parent=e,r.current=i},[i,e,r]),{client:i,effects:a}},nT=({parent:e,entries:t,destroySignal:n})=>{let r=nS({parent:e,current:null}).current,{value:i,effects:a}=CC(function(){let i=zw(),a=fC(function(){return jw(n,function(){return eT({parent:e,entries:t,clientRef:r,notifications:i})})}),o=cS(a.subscribe,()=>a.getValue().client,()=>a.getValue().client);return aS(()=>{let t=()=>AS(()=>{r.current=a.getValue().client,i.notifySubscribers()}),n=a.subscribe(t),o=e.subscribe(t);return()=>{n(),o()}},[a,e,i]),o});return uS(()=>{r.parent=e,r.current=i},[i,e,r]),{client:i,effects:a}},rT=(e,t,n,r)=>{let{get:i}=r.args[0],a=cS(e.subscribe,()=>i(e),()=>i(e)),o=Yw(r),s=rS(()=>NC({name:n,...o},()=>a),[n,o,a]);return t[n]=s,s},iT=(e,t)=>{if(Hw){let[e]=eS(()=>t.map(([e])=>e).join(`,`)),n=t.find(([,e])=>!Ww(e));if(n)throw Error(`Scope "${n[0]}" is a root scope but this useAui mounted derived-only; remount with a new key to change scope kinds.`);let r=t.map(([e])=>e).join(`,`);if(r!==e)throw Error(`A derived-only config mounted scopes [${e}] but now has [${r}]; remount with a new key to change the scope set.`)}let n=nS({parent:e,current:null}).current,r=qw(e,{subscribe:e.subscribe,on:function(t,r){if(!this)throw Error(`const { on } = useAui() is not supported. Use aui.on() instead.`);let{scope:i,event:a}=iw(t);if(i===`*`)return e.on(t,r);let o=t[Kw];if(!o&&IC(this[i]))throw Error(`Scope "${i}" is not available. Use { scope: "*", event: "${a}" } to listen globally.`);return e.on({scope:i,event:a,[Kw]:o??n},r)}}),i=$w(r,[e,...t.map(([t,n])=>rT(e,r,t,n))]);return uS(()=>{n.parent=e,n.current=i},[i,e,n]),i},aT=(e,t)=>{let n=$(8),r;n[0]!==t||n[1]!==e?(r=Object.entries(Uw(t,e)),n[0]=t,n[1]=e,n[2]=r):r=n[2];let i=r,a;n[3]===i?a=n[4]:(a=()=>i.length===0||i.some(uT),n[3]=i,n[4]=a);let[o]=eS(a),s;return n[5]!==i||n[6]!==o?(s={entries:i,rooted:o},n[5]=i,n[6]=o,n[7]=s):s=n[7],s},oT=(e,t,n,r)=>{let{entries:i,rooted:a}=aT(e,t);return a?n({parent:e,entries:i,destroySignal:r}):{client:iT(e,i)}},sT=(e,t,n)=>oT(e,t,tT,n);function cT(e){let t=$C();if(e){let{client:n,effects:r}=oT(t,e,nT,Bw());return r&&QC(n,r),n}return t}function lT(e){let[t,n]=e;return mC(t,Zw(t,n))}function uT(e){let[,t]=e;return!Ww(t)}var dT=e=>{let t=$(6),n=cT(),r;t[0]===n?r=t[1]:(r=Sw(n),t[0]=n,t[1]=r);let i=r,a,o;t[2]!==i||t[3]!==e?(a=()=>e(i),o=()=>e(i),t[2]=i,t[3]=e,t[4]=a,t[5]=o):(a=t[4],o=t[5]);let s=cS(n.subscribe,a,o);if(typeof s==`object`&&s&&(s===i||s===i.optional))throw Error(`You tried to return the entire AssistantState. This is not supported due to technical limitations.`);return lS(s),s},fT=e=>{let t=$(3),{get:n}=e,r=cT(),i;return t[0]!==r||t[1]!==n?(i=()=>n(r),t[0]=r,t[1]=n,t[2]=i):i=t[2],dT(i)};Pw(fT);var pT=pC(fT),mT=e=>{if(e.key===void 0)throw Error(`useClientLookup: Element has no key`);return e.key};function hT(e){let t=$(12),n;t[0]===e?n=t[1]:(n=e.map(vT),t[0]=e,t[1]=n);let r=xC(n),i;t[2]===e?i=t[3]:(i=e.reduce(_T,Object.create(null)),t[2]=e,t[3]=i);let a=i,o;t[4]===r?o=t[5]:(o=r.map(gT),t[4]=r,t[5]=o);let s=o,c;t[6]!==a||t[7]!==r?(c=e=>{if(`index`in e){if(e.index<0||e.index>=r.length)throw Error(`useClientLookup: index ${e.index} out of bounds (length: ${r.length}) (ignore if recovered)`);return r[e.index].methods}let t=a[e.key];if(t===void 0)throw Error(`useClientLookup: key "${e.key}" not found (ignore if recovered)`);return r[t].methods},t[6]=a,t[7]=r,t[8]=c):c=t[8];let l;return t[9]!==s||t[10]!==c?(l={state:s,get:c},t[9]=s,t[10]=c,t[11]=l):l=t[11],l}function gT(e){return e.state}function _T(e,t,n){return e[mT(t)]=n,e}function vT(e){return mC(mT(e),gw(e),e.deps)}var yT=Symbol(`skip-update`),bT=(e,...t)=>{let n=[];for(let r of e)try{r(...t)}catch(e){n.push(e)}if(n.length===1)throw n[0];if(n.length>1){for(let e of n)console.error(e);throw AggregateError(n)}},xT=e=>{bT(e)},ST=(e,t)=>{try{e()}catch(e){console.error(`[assistant-ui] Subscription rollback cleanup threw`,e)}throw t},CT=(e,t)=>e===void 0||t===void 0?e===t:Mw(e,t),wT=class{_subscribers=new Set;subscribe(e){return this._subscribers.add(e),()=>this._subscribers.delete(e)}waitForUpdate(){return new Promise(e=>{let t=this.subscribe(()=>{t(),e()})})}_notifySubscribers(){bT(this._subscribers)}},TT=class extends wT{_state;constructor(e){super(),this._state=e,this.subscribe=this.subscribe.bind(this),this.getState=this.getState.bind(this),this.getServerSnapshot=()=>e}getState(){return this._state}getServerSnapshot;setState(e){Object.is(e,this._state)||(this._state=e,this._notifySubscribers())}},ET=class{_subscriptions=new Set;_connection;get isConnected(){return!!this._connection}notifySubscribers(e,t){if(t){EC(this._subscriptions,e,t);return}bT(this._subscriptions,e)}_updateConnection(){if(this._subscriptions.size>0){if(this._connection)return;this._connection=this._connect()}else{let e=this._connection;this._connection=void 0,e?.()}}subscribe(e){this._subscriptions.add(e);try{this._updateConnection()}catch(t){throw this._subscriptions.delete(e),t}return()=>{this._subscriptions.delete(e),this._updateConnection()}}},DT=class extends ET{get path(){return this.binding.path}binding;constructor(e){super(),this.binding=e;let t=e.getState();if(t===yT)throw Error(`Entry not available in the store`);this._previousState=t}_previousState;getState=()=>(this.isConnected||this._syncState(),this._previousState);_syncState(){let e=this.binding.getState();return e===yT||CT(e,this._previousState)?!1:(this._previousState=e,!0)}_connect(){let e=this.binding.subscribe(()=>{this._syncState()&&this.notifySubscribers()});try{return this._syncState(),e}catch(t){throw ST(e,t)}}},OT=class extends ET{get path(){return this.binding.path}binding;constructor(e){super(),this.binding=e}_previousStateDirty=!0;_previousState;getState=()=>{if(!this.isConnected||this._previousStateDirty){let e=this.binding.getState();e!==yT&&(this._previousState===void 0||!CT(e,this._previousState))&&(this._previousState=e),this._previousStateDirty=!1}if(this._previousState===void 0)throw Error(`Entry not available in the store`);return this._previousState};_connect(){let e=this.binding.subscribe(()=>{this._previousStateDirty=!0,this.notifySubscribers()});return this._previousStateDirty=!0,e}},kT=class extends ET{get path(){return this.binding.path}binding;constructor(e){super(),this.binding=e}getState(){return this.binding.getState()}outerSubscribe(e){return this.binding.subscribe(e)}_connect(){let e=()=>{this.notifySubscribers()},t=this.binding.getState(),n=t?.subscribe(e),r=()=>{let r=this.binding.getState();if(r===t)return;t=r;let i=n;n=void 0;try{i?.()}finally{n=r?.subscribe(e),e()}},i;try{i=this.outerSubscribe(r)}catch(e){throw ST(()=>n?.(),e)}return()=>xT([()=>i(),()=>n?.()])}},AT=class extends ET{config;constructor(e){super(),this.config=e}getState(){return this.config.binding.getState()}outerSubscribe(e){return this.config.binding.subscribe(e)}_connect(){let e=`Runtime event "${this.config.event}"`,t=t=>{this.notifySubscribers(t,e)},n=this.config.binding.getState(),r=n?.unstable_on(this.config.event,t),i=()=>{let e=this.config.binding.getState();if(e===n)return;n=e;let i=r;r=void 0;try{i?.()}finally{r=e?.unstable_on(this.config.event,t),this.config.notifyOnRebind&&t({})}},a;try{a=this.outerSubscribe(i)}catch(e){throw ST(()=>r?.(),e)}return()=>xT([()=>a(),()=>r?.()])}},jT=e=>{if(!e.overwrite)return e;let{overwrite:t,...n}=e;return n},MT=e=>{let t=Array.from(e).map(e=>e.getModelContext()).sort((e,t)=>(t.priority??0)-(e.priority??0)),n=ex();return t.reduce((e,t)=>{let r=t.priority??0;if(t.system&&(e.system?e.system+=`\n\n${t.system}`:e.system=t.system),t.tools)for(let[i,a]of Object.entries(t.tools)){let t=e.tools!==void 0&&Object.hasOwn(e.tools,i)?e.tools[i]:void 0;if(t&&t!==a){let o=n[i];if(o===r){if(!a.overwrite)throw Error(`You tried to define a tool with the name ${i}, but it already exists.`);e.tools[i]=jT(a);continue}let s=o>r?t:a,c=o>r?a:t;e.tools[i]=jT({...c,...s}),n[i]=Math.max(o,r);continue}e.tools||=ex(),e.tools[i]=jT(a),Object.hasOwn(n,i)||(n[i]=r)}return t.config&&(e.config={...t.config,...e.config}),t.callSettings&&(e.callSettings={...t.callSettings,...e.callSettings}),t.unstable_composerMetadata&&(e.unstable_composerMetadata={...t.unstable_composerMetadata,...e.unstable_composerMetadata}),e},{})},NT=class{_providers=new Map;_providerUnsubscribes=new Map;getModelContext(){return MT(new Set(this._providers.values()))}registerModelContextProvider(e){let t=Symbol();this._providers.set(t,e);let n;try{n=e.subscribe?.(()=>{this.notifySubscribers()})}catch(e){this._providers.delete(t);try{this.notifySubscribers()}catch(e){console.error(e)}throw e}this._providerUnsubscribes.set(t,n),this.notifySubscribers();let r=!1;return()=>{if(r)return;r=!0,this._providers.delete(t);let e=this._providerUnsubscribes.get(t);this._providerUnsubscribes.delete(t);let n=!1,i,a=e=>{try{e()}catch(e){n?console.error(e):(n=!0,i=e)}};if(e&&a(e),a(()=>this.notifySubscribers()),n)throw i}}_subscribers=new Set;notifySubscribers(){bT(this._subscribers)}subscribe(e){return this._subscribers.add(e),()=>{this._subscribers.delete(e)}}},PT=(e,t)=>e.length===t.length&&e.every((e,n)=>Object.is(e,t[n])),FT=(e,t)=>{let[n]=eS(()=>({pending:void 0}));aS(()=>{let r=n.pending;n.pending=void 0;let i;return r!==void 0&&PT(r.deps,t)?i=r:(r?.cleanup?.(),i={deps:t,cleanup:e()}),()=>{n.pending=i,queueMicrotask(()=>{n.pending===i&&(n.pending=void 0,i.cleanup?.())})}},t)},IT=[],LT={modelName:void 0,toolNames:IT},RT=(e,t)=>e===t||Mw(e,t),zT=(e,t)=>{let n=e.getModelContext(),r=n.config?.modelName,i=n.tools?Object.keys(n.tools).sort():IT,a=i.length?i:IT;return r===t.modelName&&RT(a,t.toolNames)?t:{modelName:r,toolNames:a}},BT=pC(()=>{let e=$(11),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=new NT,e[0]=t):t=e[0];let n=t,r;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>zT(n,LT),e[1]=r):r=e[1];let[i,a]=eS(r),o,s;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=()=>(a(e=>zT(n,e)),n.subscribe(()=>{a(e=>zT(n,e))})),s=[n],e[2]=o,e[3]=s):(o=e[2],s=e[3]),aS(o,s);let c;e[4]===i?c=e[5]:(c=()=>zT(n,i),e[4]=i,e[5]=c);let l,u,d;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>n.getModelContext(),u=e=>n.subscribe(e),d=e=>n.registerModelContextProvider(e),e[6]=l,e[7]=u,e[8]=d):(l=e[6],u=e[7],d=e[8]);let f;return e[9]===c?f=e[10]:(f={getState:c,getModelContext:l,subscribe:u,register:d},e[9]=c,e[10]=f),f}),VT=(e,t)=>{if(t.status?.type!==`running`&&t.status?.type!==`requires-action`){let n=e.complete;return typeof n==`function`?n({args:t.args,result:t.result}):n??null}let n=e.running;return typeof n==`function`?n({args:t.args}):n??null},HT=e=>e.display===void 0?e.type===`human`:e.display===`standalone`,UT=e=>function(t){return VT(e,t)},WT=e=>{let t=$(16),{toolkit:n,mcpApp:r}=e,i;t[0]===r?i=t[1]:(i=r?[mC(`mcpApp`,r)]:[],t[0]=r,t[1]=i);let a=xC(i)[0],[o,s]=eS(KT),c;t[2]!==a||t[3]!==o?(c={toolUIs:o,mcpApp:a},t[2]=a,t[3]=o,t[4]=c):c=t[4];let l=c,u=Dw(),d;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(d=(e,t,n)=>{let r={render:t,renderText:n?.renderText,standalone:n?.standalone??!1};return s(t=>{let n=ex(t);return n[e]=[...n[e]??[],r],n}),()=>{s(t=>{let n=t[e]?.filter(e=>e!==r)??[],i=ex(t);return n.length>0?(i[e]=n,i):(delete i[e],i)})}},t[5]=d):d=t[5];let f=d,p,m;t[6]===n?(p=t[7],m=t[8]):(p=()=>{if(!n)return;let e=[];for(let[t,r]of Object.entries(n)){let n=`render`in r?r.render:void 0,i=`renderText`in r?r.renderText:void 0,a=n??(i?UT(i):void 0);a&&e.push(f(t,a,{standalone:HT(r),renderText:i}))}return()=>xT(e)},m=[n,f],t[6]=n,t[7]=p,t[8]=m),aS(p,m);let h;t[9]!==u||t[10]!==n?(h=()=>{if(!n)return;let e=Object.entries(n).reduce(qT,ex());return u.current.modelContext().register({getModelContext:()=>({tools:e})})},t[9]=u,t[10]=n,t[11]=h):h=t[11];let g;t[12]===n?g=t[13]:(g=[n],t[12]=n,t[13]=g),Ow(`modelContext`,h,g);let _;return t[14]===l?_=t[15]:(_={getState:()=>l,setToolUI:f},t[14]=l,t[15]=_),_},GT=pC(WT);nw(WT,(e,t)=>{!e.modelContext&&t.modelContext.source===null&&(e.modelContext=BT())});function KT(){return ex()}function qT(e,t){let[n,r]=t;if(r.type===`mcp`)return e;let{display:i,render:a,renderText:o,...s}=r;return e[n]=s,e}var JT=e=>cS(e.subscribe,e.getState,e.getServerSnapshot),YT=Symbol.for(`assistant-ui.silent-runtime-action`),XT=e=>typeof e==`object`&&!!e&&YT in e,ZT=(e,t)=>{let n=t();return n.catch(t=>{XT(t)||console.error(`[assistant-ui] ${e} failed:`,t)}),n},QT=pC(e=>{let t=$(9),{runtime:n}=e,r=JT(n),i;t[0]===r?i=t[1]:(i=()=>r,t[0]=r,t[1]=i);let a,o;t[2]===n?(a=t[3],o=t[4]):(a=()=>ZT(`attachment remove`,n.remove),o=()=>n,t[2]=n,t[3]=a,t[4]=o);let s;return t[5]!==i||t[6]!==a||t[7]!==o?(s={getState:i,remove:a,__internal_getRuntime:o},t[5]=i,t[6]=a,t[7]=o,t[8]=s):s=t[8],s}),$T=pC(e=>{let t=$(5),{runtime:n,index:r}=e,i;t[0]!==r||t[1]!==n?(i=n.getAttachmentByIndex(r),t[0]=r,t[1]=n,t[2]=i):i=t[2];let a=i,o;return t[3]===a?o=t[4]:(o=QT({runtime:a}),t[3]=a,t[4]=o),gC(o)}),eE=pC(({item:e,onMove:t,onRemove:n})=>({getState:()=>e,steer:()=>t({lane:`steer`,insertAfter:null}),move:t,remove:n})),tE=pC(e=>{let t=$(65),{threadIdRef:n,messageIdRef:r,runtime:i,isSuggestion:a}=e,o=JT(i),s=kw(),c=nS(!1),l,u;t[0]!==s||t[1]!==r||t[2]!==i||t[3]!==n?(l=()=>{let e=[],t=i.unstable_on(`send`,e=>{let t=c.current;c.current=!1,s(`composer.send`,{threadId:n.current,...r&&{messageId:r.current},chars:e.chars,attachments:e.attachments,...t?{suggestion:!0}:void 0})});e.push(t);let a=i.unstable_on(`attachmentAdd`,e=>{s(`composer.attachmentAdd`,{threadId:n.current,...r&&{messageId:r.current},...e.contentType?{contentType:e.contentType}:void 0})});return e.push(a),e.push(i.unstable_on(`attachmentAddError`,e=>{s(`composer.attachmentAddError`,{threadId:n.current,...r&&{messageId:r.current},...e.attachmentId&&{attachmentId:e.attachmentId},reason:e.reason,message:e.message,...e.contentType?{contentType:e.contentType}:void 0})})),()=>xT(e)},u=[i,s,n,r],t[0]=s,t[1]=r,t[2]=i,t[3]=n,t[4]=l,t[5]=u):(l=t[4],u=t[5]),aS(l,u);let d;if(t[6]!==i||t[7]!==o.attachments){let e;t[9]===i?e=t[10]:(e=(e,t)=>mC(e.id,$T({runtime:i,index:t}),[i,t]),t[9]=i,t[10]=e),d=o.attachments.map(e),t[6]=i,t[7]=o.attachments,t[8]=d}else d=t[8];let f=hT(d),p=o.queue,m;if(t[11]!==p||t[12]!==i){let e;t[14]===i?e=t[15]:(e=e=>mC(e.id,eE({item:e,onMove:t=>i.moveQueueItem(e.id,t),onRemove:()=>i.removeQueueItem(e.id)})),t[14]=i,t[15]=e),m=p.map(e),t[11]=p,t[12]=i,t[13]=m}else m=t[13];let h=hT(m),g=o.type??`thread`,_;t[16]!==f.state||t[17]!==p||t[18]!==o.attachmentAccept||t[19]!==o.canCancel||t[20]!==o.canSend||t[21]!==o.dictation||t[22]!==o.inTransit||t[23]!==o.isEditing||t[24]!==o.isEmpty||t[25]!==o.quote||t[26]!==o.role||t[27]!==o.runConfig||t[28]!==o.submission||t[29]!==o.text||t[30]!==g?(_={text:o.text,role:o.role,attachments:f.state,runConfig:o.runConfig,isEditing:o.isEditing,canCancel:o.canCancel,canSend:o.canSend,attachmentAccept:o.attachmentAccept,isEmpty:o.isEmpty,type:g,dictation:o.dictation,quote:o.quote,queue:p,submission:o.submission,inTransit:o.inTransit},t[16]=f.state,t[17]=p,t[18]=o.attachmentAccept,t[19]=o.canCancel,t[20]=o.canSend,t[21]=o.dictation,t[22]=o.inTransit,t[23]=o.isEditing,t[24]=o.isEmpty,t[25]=o.quote,t[26]=o.role,t[27]=o.runConfig,t[28]=o.submission,t[29]=o.text,t[30]=g,t[31]=_):_=t[31];let v=_,y;t[32]===v?y=t[33]:(y=()=>v,t[32]=v,t[33]=y);let b;t[34]!==a||t[35]!==i?(b=e=>{let t=i.getState();c.current=t.canSend&&(a?.(t.text)??!1),i.send(e)},t[34]=a,t[35]=i,t[36]=b):b=t[36];let x;t[37]!==s||t[38]!==r||t[39]!==i||t[40]!==n?(x=()=>{!r&&i.getState().canCancel&&s(`composer.cancel`,{threadId:n.current}),i.cancel()},t[37]=s,t[38]=r,t[39]=i,t[40]=n,t[41]=x):x=t[41];let S=i.beginEdit??nE,C;t[42]===f?C=t[43]:(C=e=>`id`in e?f.get({key:e.id}):f.get(e),t[42]=f,t[43]=C);let w;t[44]===h?w=t[45]:(w=e=>`id`in e?h.get({key:e.id}):h.get(e),t[44]=h,t[45]=w);let T;t[46]===i?T=t[47]:(T=()=>i,t[46]=i,t[47]=T);let E;return t[48]!==i.addAttachment||t[49]!==i.clearAttachments||t[50]!==i.reset||t[51]!==i.setQuote||t[52]!==i.setRole||t[53]!==i.setRunConfig||t[54]!==i.setText||t[55]!==i.startDictation||t[56]!==i.stopDictation||t[57]!==S||t[58]!==C||t[59]!==w||t[60]!==T||t[61]!==y||t[62]!==b||t[63]!==x?(E={getState:y,setText:i.setText,setRole:i.setRole,setRunConfig:i.setRunConfig,addAttachment:i.addAttachment,reset:i.reset,clearAttachments:i.clearAttachments,send:b,cancel:x,beginEdit:S,startDictation:i.startDictation,stopDictation:i.stopDictation,setQuote:i.setQuote,attachment:C,queueItem:w,__internal_getRuntime:T},t[48]=i.addAttachment,t[49]=i.clearAttachments,t[50]=i.reset,t[51]=i.setQuote,t[52]=i.setRole,t[53]=i.setRunConfig,t[54]=i.setText,t[55]=i.startDictation,t[56]=i.stopDictation,t[57]=S,t[58]=C,t[59]=w,t[60]=T,t[61]=y,t[62]=b,t[63]=x,t[64]=E):E=t[64],E});function nE(){throw Error(`beginEdit is not supported in this runtime`)}var rE=e=>({get current(){return e()}}),iE=pC(e=>{let t=$(17),{runtime:n}=e,r=JT(n),i;t[0]===r?i=t[1]:(i=()=>r,t[0]=r,t[1]=i);let a,o,s;t[2]===n?(a=t[3],o=t[4],s=t[5]):(a=e=>n.addToolResult(e),o=e=>n.resumeToolCall(e),s=e=>n.respondToToolApproval(e),t[2]=n,t[3]=a,t[4]=o,t[5]=s);let c;t[6]===n.unstable_recordInteraction?c=t[7]:(c=n.unstable_recordInteraction&&{unstable_recordInteraction:e=>n.unstable_recordInteraction(e)},t[6]=n.unstable_recordInteraction,t[7]=c);let l;t[8]===n?l=t[9]:(l=()=>n,t[8]=n,t[9]=l);let u;return t[10]!==i||t[11]!==a||t[12]!==o||t[13]!==s||t[14]!==c||t[15]!==l?(u={getState:i,addToolResult:a,resumeToolCall:o,respondToToolApproval:s,...c,__internal_getRuntime:l},t[10]=i,t[11]=a,t[12]=o,t[13]=s,t[14]=c,t[15]=l,t[16]=u):u=t[16],u}),aE=pC(e=>{let t=$(5),{runtime:n,index:r}=e,i;t[0]!==r||t[1]!==n?(i=n.getAttachmentByIndex(r),t[0]=r,t[1]=n,t[2]=i):i=t[2];let a=i,o;return t[3]===a?o=t[4]:(o=QT({runtime:a}),t[3]=a,t[4]=o),gC(o)}),oE=pC(e=>{let t=$(5),{runtime:n,index:r}=e,i;t[0]!==r||t[1]!==n?(i=n.getMessagePartByIndex(r),t[0]=r,t[1]=n,t[2]=i):i=t[2];let a=i,o;return t[3]===a?o=t[4]:(o=iE({runtime:a}),t[3]=a,t[4]=o),gC(o)}),sE=pC(e=>{let t=$(77),{runtime:n,threadIdRef:r,threadId:i,isLast:a}=e,o=JT(n),s=kw(),[c,l]=eS(!1),[u,d]=eS(!1),f;t[0]===n?f=t[1]:(f=rE(()=>n.getState().id),t[0]=n,t[1]=f);let p=f,m=nS(o.status),h;t[2]!==s||t[3]!==n||t[4]!==i?(h=e=>{s(e,{threadId:i,messageId:n.getState().id})},t[2]=s,t[3]=n,t[4]=i,t[5]=h):h=t[5];let g=h,_,v;t[6]!==s||t[7]!==o.id||t[8]!==o.status||t[9]!==i?(_=()=>{let e=o.status,t=m.current;m.current=e,e?.type===`incomplete`&&e.reason===`error`&&(t?.type!==`incomplete`||t.reason!==`error`)&&s(`message.error`,{threadId:i,messageId:o.id,reason:`error`})},v=[o.status,o.id,s,i],t[6]=s,t[7]=o.id,t[8]=o.status,t[9]=i,t[10]=_,t[11]=v):(_=t[10],v=t[11]),aS(_,v);let y;t[12]!==p||t[13]!==n.composer||t[14]!==r?(y=tE({runtime:n.composer,threadIdRef:r,messageIdRef:p}),t[12]=p,t[13]=n.composer,t[14]=r,t[15]=y):y=t[15];let b=hw(y),x;if(t[16]!==n||t[17]!==o.content){let e;t[19]===n?e=t[20]:(e=(e,t)=>mC(`toolCallId`in e&&e.toolCallId!=null?`toolCallId-${e.toolCallId}`:`index-${t}`,oE({runtime:n,index:t}),[n,t]),t[19]=n,t[20]=e),x=o.content.map(e),t[16]=n,t[17]=o.content,t[18]=x}else x=t[18];let S=hT(x),C;t[21]===o.attachments?C=t[22]:(C=o.attachments??[],t[21]=o.attachments,t[22]=C);let w;if(t[23]!==n||t[24]!==C){let e;t[26]===n?e=t[27]:(e=(e,t)=>mC(e.id,aE({runtime:n,index:t}),[n,t]),t[26]=n,t[27]=e),w=C.map(e),t[23]=n,t[24]=C,t[25]=w}else w=t[25];let T=hT(w),E=o,D;t[28]===a?D=t[29]:(D=a===!1?{isLast:a}:{},t[28]=a,t[29]=D);let O;t[30]!==b.state||t[31]!==c||t[32]!==u||t[33]!==S.state||t[34]!==D||t[35]!==E?(O={...E,...D,parts:S.state,composer:b.state,isCopied:c,isHovering:u},t[30]=b.state,t[31]=c,t[32]=u,t[33]=S.state,t[34]=D,t[35]=E,t[36]=O):O=t[36];let k=O,A;t[37]===k?A=t[38]:(A=()=>k,t[37]=k,t[38]=A);let j;t[39]===b.methods?j=t[40]:(j=()=>b.methods,t[39]=b.methods,t[40]=j);let M;t[41]===n?M=t[42]:(M=()=>n.delete(),t[41]=n,t[42]=M);let N,P;t[43]!==g||t[44]!==n?(N=e=>(g(`message.reload`),n.reload(e)),P=()=>(g(`message.speak`),n.speak()),t[43]=g,t[44]=n,t[45]=N,t[46]=P):(N=t[45],P=t[46]);let F,I;t[47]===n?(F=t[48],I=t[49]):(F=()=>n.stopSpeaking(),I=e=>n.submitFeedback(e),t[47]=n,t[48]=F,t[49]=I);let L;t[50]!==g||t[51]!==n?(L=e=>(g(`message.branchSwitched`),n.switchToBranch(e)),t[50]=g,t[51]=n,t[52]=L):L=t[52];let R;t[53]===n?R=t[54]:(R=()=>n.unstable_getCopyText(),t[53]=n,t[54]=R);let z;t[55]===S?z=t[56]:(z=e=>`index`in e?S.get({index:e.index}):S.get({key:`toolCallId-${e.toolCallId}`}),t[55]=S,t[56]=z);let B;t[57]===T?B=t[58]:(B=e=>`id`in e?T.get({key:e.id}):T.get(e),t[57]=T,t[58]=B);let V;t[59]===g?V=t[60]:(V=e=>{e&&g(`message.copied`),l(e)},t[59]=g,t[60]=V);let H;t[61]===n?H=t[62]:(H=()=>n,t[61]=n,t[62]=H);let U;return t[63]!==A||t[64]!==j||t[65]!==M||t[66]!==N||t[67]!==P||t[68]!==F||t[69]!==I||t[70]!==L||t[71]!==R||t[72]!==z||t[73]!==B||t[74]!==V||t[75]!==H?(U={getState:A,composer:j,delete:M,reload:N,speak:P,stopSpeaking:F,submitFeedback:I,switchToBranch:L,getCopyText:R,part:z,attachment:B,setIsCopied:V,setIsHovering:d,__internal_getRuntime:H},t[63]=A,t[64]=j,t[65]=M,t[66]=N,t[67]=P,t[68]=F,t[69]=I,t[70]=L,t[71]=R,t[72]=z,t[73]=B,t[74]=V,t[75]=H,t[76]=U):U=t[76],U}),cE=e=>e.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
124
124
 
125
- `),uE=Object.freeze({type:`complete`}),dE=Object.freeze({type:`running`}),fE=Object.freeze({cancelled:Object.freeze({type:`incomplete`,reason:`cancelled`}),length:Object.freeze({type:`incomplete`,reason:`length`}),"content-filter":Object.freeze({type:`incomplete`,reason:`content-filter`}),other:Object.freeze({type:`incomplete`,reason:`other`}),error:Object.freeze({type:`incomplete`,reason:`error`})}),pE=e=>{let t=e.status;if(!t||typeof t!=`object`)return;let{type:n}=t;if(n===`running`)return dE;if(n===`complete`)return uE;if(n!==`incomplete`)return;let{reason:r}=t;return fE[r===`cancelled`||r===`length`||r===`content-filter`||r===`other`||r===`error`?r:`other`]},mE=e=>e.interrupt!=null||e.approval!=null&&e.approval.approved===void 0&&e.approval.resolution===void 0,hE=(e,t,n)=>{if(e.role!==`assistant`)return uE;if(n.type===`tool-call`)return n.result===void 0||n.isPreliminary||mE(n)?e.status:uE;if(e.status.type===`running`){let e=pE(n);if(e)return e}let r=t===Math.max(0,e.content.length-1);return e.status.type===`requires-action`?uE:r?e.status:uE},gE=mC(e=>{let t=$(7),{type:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[],t[0]=r):r=t[0];let i;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(i={},t[1]=i):i=t[1];let a;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=[],t[2]=a):a=t[2];let o;t[3]===n?o=t[4]:(o={isEditing:!1,isEmpty:!0,text:``,attachmentAccept:`*`,attachments:r,role:`user`,runConfig:i,canCancel:!1,canSend:!1,type:n,dictation:void 0,quote:void 0,queue:a,submission:void 0,inTransit:void 0},t[3]=n,t[4]=o);let s=o,c;return t[5]===s?c=t[6]:(c={getState:()=>s,setText:_E,setRole:vE,setRunConfig:yE,addAttachment:bE,clearAttachments:xE,attachment:SE,reset:CE,send:wE,cancel:TE,startDictation:EE,stopDictation:DE,beginEdit:OE,setQuote:kE,queueItem:AE},t[5]=s,t[6]=c),c});function _E(){throw Error(`Not supported`)}function vE(){throw Error(`Not supported`)}function yE(){throw Error(`Not supported`)}function bE(){throw Error(`Not supported`)}function xE(){throw Error(`Not supported`)}function SE(){throw Error(`Not supported`)}function CE(){throw Error(`Not supported`)}function wE(){throw Error(`Not supported`)}function TE(){throw Error(`Not supported`)}function EE(){throw Error(`Not supported`)}function DE(){throw Error(`Not supported`)}function OE(){throw Error(`Not supported`)}function kE(){throw Error(`Not supported`)}function AE(){throw Error(`Not supported`)}var jE=mC(e=>{let t=$(8),{part:n,isMessageRunning:r}=e,i;t[0]!==r||t[1]!==n?(i=r?pE(n)??uE:uE,t[0]=r,t[1]=n,t[2]=i):i=t[2];let a;t[3]!==n||t[4]!==i?(a={...n,status:i},t[3]=n,t[4]=i,t[5]=a):a=t[5];let o=a,s;return t[6]===o?s=t[7]:(s={getState:()=>o,addToolResult:PE,resumeToolCall:FE,respondToToolApproval:IE,unstable_recordInteraction:LE},t[6]=o,t[7]=s),s}),ME=mC(({attachment:e})=>({getState:()=>e,remove:()=>{throw Error(`Not supported`)}})),NE=mC(e=>{let t=$(38),{message:n,index:r,isLast:i,branchNumber:a,branchCount:o,submission:s}=e,c=i===void 0||i,l=a===void 0?1:a,u=o===void 0?1:o,[d,f]=tS(!1),[p,m]=tS(!1),h=n.role===`assistant`&&n.status.type===`running`,g;if(t[0]!==h||t[1]!==n.content){let e;t[3]===h?e=t[4]:(e=(e,t)=>hC(`toolCallId`in e&&e.toolCallId!=null?`toolCallId-${e.toolCallId}`:`index-${t}`,jE({part:e,isMessageRunning:h}),[e,h]),t[3]=h,t[4]=e),g=n.content.map(e),t[0]=h,t[1]=n.content,t[2]=g}else g=t[2];let _=gT(g),v;t[5]!==n.attachments||t[6]!==s?.attachments?(v=s?.attachments??n.attachments??[],t[5]=n.attachments,t[6]=s?.attachments,t[7]=v):v=t[7];let y;t[8]===v?y=t[9]:(y=v.map(RE),t[8]=v,t[9]=y);let b=gT(y),x;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(x=gE({type:`edit`}),t[10]=x):x=t[10];let S=gw(x),C=S.state,w;t[11]!==u||t[12]!==l||t[13]!==C||t[14]!==r||t[15]!==d||t[16]!==p||t[17]!==c||t[18]!==n||t[19]!==_.state||t[20]!==s?(w={...n,parts:_.state,composer:C,parentId:null,index:r,isLast:c,branchNumber:l,branchCount:u,speech:void 0,isCopied:d,isHovering:p,submission:s},t[11]=u,t[12]=l,t[13]=C,t[14]=r,t[15]=d,t[16]=p,t[17]=c,t[18]=n,t[19]=_.state,t[20]=s,t[21]=w):w=t[21];let T=w,E;t[22]===T?E=t[23]:(E=()=>T,t[22]=T,t[23]=E);let D;t[24]===S.methods?D=t[25]:(D=()=>S.methods,t[24]=S.methods,t[25]=D);let O;t[26]===_?O=t[27]:(O=e=>`index`in e?_.get({index:e.index}):_.get({key:`toolCallId-${e.toolCallId}`}),t[26]=_,t[27]=O);let k;t[28]===b?k=t[29]:(k=e=>`id`in e?b.get({key:e.id}):b.get(e),t[28]=b,t[29]=k);let A;t[30]===n?A=t[31]:(A=()=>lE(n),t[30]=n,t[31]=A);let j;return t[32]!==D||t[33]!==O||t[34]!==k||t[35]!==A||t[36]!==E?(j={getState:E,composer:D,part:O,attachment:k,delete:zE,reload:BE,speak:VE,stopSpeaking:HE,submitFeedback:UE,switchToBranch:WE,getCopyText:A,setIsCopied:f,setIsHovering:m},t[32]=D,t[33]=O,t[34]=k,t[35]=A,t[36]=E,t[37]=j):j=t[37],j});function PE(){throw Error(`Not supported`)}function FE(){throw Error(`Not supported`)}function IE(){throw Error(`Not supported`)}async function LE(){}function RE(e){return hC(e.id,ME({attachment:e}),[e])}function zE(){throw Error(`Not supported in ThreadMessageProvider`)}function BE(){throw Error(`Not supported in ThreadMessageProvider`)}function VE(){throw Error(`Not supported in ThreadMessageProvider`)}function HE(){throw Error(`Not supported in ThreadMessageProvider`)}function UE(){throw Error(`Not supported in ThreadMessageProvider`)}function WE(){throw Error(`Not supported in ThreadMessageProvider`)}var GE=((e,t=21)=>(n=t)=>{let r=``,i=n|0;for(;i-->0;)r+=e[Math.random()*e.length|0];return r})(`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`,7);function KE(e){let t=e.match(/^data:([^;,]*)(?:;[^;,]+)*;base64,(.*)$/i);return t?{mimeType:t[1].toLowerCase()||`text/plain`,data:t[2]}:null}function qE(e){return/^data:([^;,]+)(?:[;,])/i.exec(e)?.[1]?.toLowerCase()}var JE={entries:32,payloadLength:16384,logLength:65536},YE=64,XE=e=>{let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},ZE=(e,t,n)=>{if(e===null)return!0;switch(typeof e){case`string`:case`boolean`:return!0;case`number`:return Number.isFinite(e);case`object`:break;default:return!1}if(n>YE||t.has(e))return!1;t.add(e);let r=Array.isArray(e)?e.every(e=>ZE(e,t,n+1)):XE(e)&&Object.values(e).every(e=>ZE(e,t,n+1));return t.delete(e),r},QE=e=>typeof e==`object`&&!!e&&!Array.isArray(e),$E=e=>e===`action`||e===`human-response`;function eD(e,t=Date.now()){let{type:n,payload:r}=e;if(!$E(n))throw Error(`Unknown tool interaction type: ${String(n)}`);if(!ZE(r,new Set,0))throw Error(`A tool interaction payload must be plain JSON.`);if(n===`action`&&!QE(r))throw Error(`An action interaction payload must be a JSON object.`);let i=JSON.stringify(r);if(i.length>JE.payloadLength)throw Error(`A tool interaction payload is limited to ${JE.payloadLength} characters of JSON.`);return{type:n,occurredAt:t,payload:JSON.parse(i)}}function tD(e,t){let n=[...e?.entries??[],t],r=e?.omitted??0;for(;n.length>1&&(n.length>JE.entries||JSON.stringify(n).length>JE.logLength);)n.shift(),r+=1;return r>0?{entries:n,omitted:r}:{entries:n}}var nD=e=>{if(!QE(e))return;let{type:t,occurredAt:n,payload:r}=e;if($E(t)&&!(typeof n!=`number`||!Number.isFinite(n))&&ZE(r,new Set,0))return t===`action`?QE(r)?{type:t,occurredAt:n,payload:r}:void 0:{type:t,occurredAt:n,payload:r}};function rD(e){if(!QE(e))return;let{entries:t,omitted:n}=e,r=Array.isArray(t)?t.flatMap(e=>{let t=nD(e);return t?[t]:[]}):[],i=typeof n==`number`&&Number.isInteger(n)&&n>0?n:0;for(;r.length>1&&(r.length>JE.entries||JSON.stringify(r).length>JE.logLength);)r.shift(),i+=1;if(r.length!==0||i!==0)return i>0?{entries:r,omitted:i}:{entries:r}}async function*iD(){let e=this.getReader(),t=!0;try{for(;;){let n;try{n=await e.read()}catch(e){throw t=!1,e}if(n.done){t=!1;break}let{value:r}=n;yield r}}finally{try{t&&await e.cancel()}finally{e.releaseLock()}}}function aD(e){return e[Symbol.asyncIterator]??=iD,e}var oD=/[0-9a-fA-F]/;function sD(e){let t=[`ROOT`],n=-1,r=null,i=0,a=[],o;function s(){o!==void 0&&(a.push(JSON.parse(`"${o}"`)),o=void 0)}function c(e,i,a){switch(e){case`"`:n=i,t.pop(),t.push(a),t.push(`INSIDE_STRING`),s();break;case`f`:case`t`:case`n`:n=i,r=i,t.pop(),t.push(a),t.push(`INSIDE_LITERAL`);break;case`-`:t.pop(),t.push(a),t.push(`INSIDE_NUMBER`),s();break;case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:case`8`:case`9`:n=i,t.pop(),t.push(a),t.push(`INSIDE_NUMBER`),s();break;case`{`:n=i,t.pop(),t.push(a),t.push(`INSIDE_OBJECT_START`),s();break;case`[`:n=i,t.pop(),t.push(a),t.push(`INSIDE_ARRAY_START`),s()}}function l(e,r){switch(e){case`,`:t.pop(),t.push(`INSIDE_OBJECT_AFTER_COMMA`);break;case`}`:n=r,t.pop(),o=a.pop()}}function u(e,r){switch(e){case`,`:t.pop(),t.push(`INSIDE_ARRAY_AFTER_COMMA`),o=(Number(o)+1).toString();break;case`]`:n=r,t.pop(),o=a.pop()}}for(let s=0;s<e.length;s++){let d=e[s];switch(t[t.length-1]){case`ROOT`:c(d,s,`FINISH`);break;case`INSIDE_OBJECT_START`:switch(d){case`"`:t.pop(),t.push(`INSIDE_OBJECT_KEY`),o=``;break;case`}`:n=s,t.pop(),o=a.pop()}break;case`INSIDE_OBJECT_AFTER_COMMA`:d===`"`&&(t.pop(),t.push(`INSIDE_OBJECT_KEY`),o=``);break;case`INSIDE_OBJECT_KEY`:switch(d){case`"`:t.pop(),t.push(`INSIDE_OBJECT_AFTER_KEY`);break;case`\\`:t.push(`INSIDE_STRING_ESCAPE`),o+=d;break;default:o+=d}break;case`INSIDE_OBJECT_AFTER_KEY`:d===`:`&&(t.pop(),t.push(`INSIDE_OBJECT_BEFORE_VALUE`));break;case`INSIDE_OBJECT_BEFORE_VALUE`:c(d,s,`INSIDE_OBJECT_AFTER_VALUE`);break;case`INSIDE_OBJECT_AFTER_VALUE`:l(d,s);break;case`INSIDE_STRING`:switch(d){case`"`:t.pop(),n=s,o=a.pop();break;case`\\`:t.push(`INSIDE_STRING_ESCAPE`);break;default:n=s}break;case`INSIDE_ARRAY_START`:switch(d){case`]`:n=s,t.pop(),o=a.pop();break;default:o=`0`,c(d,s,`INSIDE_ARRAY_AFTER_VALUE`)}break;case`INSIDE_ARRAY_AFTER_VALUE`:switch(d){case`,`:t.pop(),t.push(`INSIDE_ARRAY_AFTER_COMMA`),o=(Number(o)+1).toString();break;case`]`:n=s,t.pop(),o=a.pop();break;default:n=s}break;case`INSIDE_ARRAY_AFTER_COMMA`:c(d,s,`INSIDE_ARRAY_AFTER_VALUE`);break;case`INSIDE_STRING_ESCAPE`:{t.pop();let e=t[t.length-1];d===`u`?(t.push(`INSIDE_STRING_UNICODE_ESCAPE`),i=0):e===`INSIDE_STRING`&&(n=s),e===`INSIDE_OBJECT_KEY`&&(o+=d);break}case`INSIDE_STRING_UNICODE_ESCAPE`:{let e=t[t.length-2];if(!oD.test(d)){t.pop(),s--;break}i++,i===4&&(t.pop(),e===`INSIDE_STRING`&&(n=s)),e===`INSIDE_OBJECT_KEY`&&(o+=d);break}case`INSIDE_NUMBER`:switch(d){case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:case`8`:case`9`:n=s;break;case`e`:case`E`:case`-`:case`+`:case`.`:break;case`,`:t.pop(),o=a.pop(),t[t.length-1]===`INSIDE_ARRAY_AFTER_VALUE`&&u(d,s),t[t.length-1]===`INSIDE_OBJECT_AFTER_VALUE`&&l(d,s);break;case`}`:t.pop(),o=a.pop(),t[t.length-1]===`INSIDE_OBJECT_AFTER_VALUE`&&l(d,s);break;case`]`:t.pop(),o=a.pop(),t[t.length-1]===`INSIDE_ARRAY_AFTER_VALUE`&&u(d,s);break;default:t.pop(),o=a.pop()}break;case`INSIDE_LITERAL`:{let i=e.substring(r,s+1);!`false`.startsWith(i)&&!`true`.startsWith(i)&&!`null`.startsWith(i)?(t.pop(),t[t.length-1]===`INSIDE_OBJECT_AFTER_VALUE`?l(d,s):t[t.length-1]===`INSIDE_ARRAY_AFTER_VALUE`&&u(d,s)):n=s;break}}}let d=e.slice(0,n+1);for(let n=t.length-1;n>=0;n--)switch(t[n]){case`INSIDE_STRING`:d+=`"`;break;case`INSIDE_OBJECT_KEY`:case`INSIDE_OBJECT_AFTER_KEY`:case`INSIDE_OBJECT_AFTER_COMMA`:case`INSIDE_OBJECT_START`:case`INSIDE_OBJECT_BEFORE_VALUE`:case`INSIDE_OBJECT_AFTER_VALUE`:d+=`}`;break;case`INSIDE_ARRAY_START`:case`INSIDE_ARRAY_AFTER_COMMA`:case`INSIDE_ARRAY_AFTER_VALUE`:d+=`]`;break;case`INSIDE_LITERAL`:{let t=e.substring(r,e.length);`true`.startsWith(t)?d+=`true`.slice(t.length):`false`.startsWith(t)?d+=`false`.slice(t.length):`null`.startsWith(t)&&(d+=`null`.slice(t.length))}}return[d,a]}var cD=l(o(((e,t)=>{var n=typeof Buffer<`u`,r=/"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/,i=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/;function a(e,t,a){a==null&&typeof t==`object`&&t&&(a=t,t=void 0),n&&Buffer.isBuffer(e)&&(e=e.toString()),e&&e.charCodeAt(0)===65279&&(e=e.slice(1));let s=JSON.parse(e,t);if(typeof s!=`object`||!s)return s;let c=a&&a.protoAction||`error`,l=a&&a.constructorAction||`error`;if(c===`ignore`&&l===`ignore`)return s;if(c!==`ignore`&&l!==`ignore`){if(r.test(e)===!1&&i.test(e)===!1)return s}else if(c!==`ignore`&&l===`ignore`){if(r.test(e)===!1)return s}else if(i.test(e)===!1)return s;return o(s,{protoAction:c,constructorAction:l,safe:a&&a.safe})}function o(e,{protoAction:t=`error`,constructorAction:n=`error`,safe:r}={}){let i=[e];for(;i.length;){let e=i;i=[];for(let a of e){if(t!==`ignore`&&Object.prototype.hasOwnProperty.call(a,`__proto__`)){if(r===!0)return null;if(t===`error`)throw SyntaxError(`Object contains forbidden prototype property`);delete a.__proto__}if(n!==`ignore`&&Object.prototype.hasOwnProperty.call(a,`constructor`)&&a.constructor!==null&&typeof a.constructor==`object`&&Object.prototype.hasOwnProperty.call(a.constructor,`prototype`)){if(r===!0)return null;if(n===`error`)throw SyntaxError(`Object contains forbidden prototype property`);delete a.constructor}for(let e in a){let t=a[e];t&&typeof t==`object`&&i.push(t)}}}return e}function s(e,t,n){let{stackTraceLimit:r}=Error;Error.stackTraceLimit=0;try{return a(e,t,n)}finally{Error.stackTraceLimit=r}}function c(e,t){let{stackTraceLimit:n}=Error;Error.stackTraceLimit=0;try{return a(e,t,{safe:!0})}catch{return}finally{Error.stackTraceLimit=n}}t.exports=s,t.exports.default=s,t.exports.parse=s,t.exports.safeParse=c,t.exports.scan=o}))(),1),lD=Symbol(`aui.parse-partial-json-object.meta`),uD=e=>{if(e.length===0)return{[lD]:{state:`partial`,partialPath:[]}};try{let t=cD.default.parse(e);if(typeof t!=`object`||!t)throw Error(`argsText is expected to be an object`);return t[lD]={state:`complete`,partialPath:[]},t}catch{try{let[t,n]=sD(e),r=cD.default.parse(t);if(typeof r!=`object`||!r)throw Error(`argsText is expected to be an object`);return r[lD]={state:`partial`,partialPath:n},r}catch{return}}},dD=((e,t=21)=>(n=t)=>{let r=``,i=n|0;for(;i-->0;)r+=e[Math.random()*e.length|0];return r})(`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`,7),fD=()=>{let e,t,n=new Promise((n,r)=>{e=n,t=r});if(!e||!t)throw Error(`Failed to create promise`);return{promise:n,resolve:e,reject:t}},pD=()=>{let e=[],t=!1,n=!1,r=!1,i,a,o=0,s,c,l=()=>(a=void 0,c??=Promise.all(e.splice(0).map(async e=>{try{await e.reader.cancel().catch(()=>void 0),await e.pipeTask}finally{e.reader.releaseLock()}})).then(()=>void 0),c),u=e=>{n||r||(r=!0,console.error(e),l(),i.error(e),s?.reject(e),s=void 0)},d=a=>{a.promise||=a.reader.read().then(({done:c,value:l})=>{a.promise=void 0,!(n||r)&&(c?(e.splice(e.indexOf(a),1),a.reader.releaseLock(),t&&e.length===0&&o===0&&i.close()):i.enqueue(l),s?.resolve(),s=void 0)}).catch(u)},f=new ReadableStream({start(e){i=e},pull(){return s=fD(),e.forEach(e=>{d(e)}),s.promise},async cancel(){n=!0;let e=l();s?.resolve(),s=void 0,await e}}),p=c=>{if(e.length>0&&(a=void 0),!a){let c=[];a=c,o++,Promise.resolve().then(()=>{if(o--,a===c&&(a=void 0),!(n||r)){for(let e of c)i.enqueue(e);t&&e.length===0&&o===0&&i.close(),s?.resolve(),s=void 0}}).catch(u)}a.push(c)};return{readable:f,isSealed(){return t},isCancelled(){return n},isErrored(){return r},seal(){t||n||r||(t=!0,e.length===0&&o===0&&i.close())},addStream:(i,o)=>{let s=o?.catch(()=>void 0);if(n||r){i.cancel().catch(()=>void 0);return}if(t)throw i.cancel().catch(()=>void 0),Error(`Cannot add streams after the run callback has settled.`);a=void 0;let c={reader:i.getReader(),pipeTask:s};e.push(c),d(c)},enqueue(e){if(!(n||r)){if(t)throw Error(`Cannot add streams after the run callback has settled.`);p(e)}}}},mD=(e,t)=>new ReadableStream({start(n){return e.start?.(t(n))},pull(n){return e.pull?.(t(n))},cancel(t){return e.cancel?.(t)}}),hD=(e,t)=>{let n;return[mD({start(e){n=e},cancel(e){return t?.(n,e)}},e),n]},gD=e=>e instanceof TypeError,_D=(e,t,n)=>{try{e.enqueue(t)}catch(e){if(!gD(e))throw e;n?.(e)}},vD=e=>{try{e.close()}catch(e){if(!gD(e))throw e}},yD=class{_controller;_strict;_isClosed=!1;_warnedDropped=!1;constructor(e,t={}){this._controller=e,this._strict=t.strict??!0}append(e){let t={type:`text-delta`,path:[],textDelta:e};if(this._isClosed){if(this._strict)throw TypeError(`Cannot append to a closed TextStreamController`);return _D(this._controller,t,this._warnDroppedAfterClose),this}return _D(this._controller,t),this}_warnDroppedAfterClose=e=>{this._warnedDropped||(this._warnedDropped=!0,console.error(`Dropped text delta for closed stream: ${String(e)}`))};close(){this._isClosed||(this._isClosed=!0,_D(this._controller,{type:`part-finish`,path:[]}),vD(this._controller))}},bD=(e,t={})=>mD(e,e=>new yD(e,t)),xD=(e={})=>hD(t=>new yD(t,e)),SD=Symbol.for(`aui.tool-response`),CD=`<no result>`,wD=class e{get[SD](){return!0}artifact;result;isError;isPreliminary;modelContent;messages;constructor(e){e.artifact!==void 0&&(this.artifact=e.artifact);let t=e.result;this.result=t===void 0?CD:t,this.isError=e.isError??!1,e.isPreliminary&&(this.isPreliminary=!0),e.modelContent!==void 0&&(this.modelContent=e.modelContent),e.messages!==void 0&&(this.messages=e.messages)}static[Symbol.hasInstance](e){return typeof e==`object`&&!!e&&SD in e}static toResponse(t){return t instanceof e?t:new e({result:t===void 0?CD:t})}},TD=class{_isClosed=!1;_mergeTask;_controller;constructor(e,t={}){this._controller=e;let n=bD({start:e=>{this._argsTextController=e}},t),r=!1;this._mergeTask=n.pipeTo(new WritableStream({write:e=>{switch(e.type){case`text-delta`:r=!0,_D(this._controller,e);break;case`part-finish`:r||_D(this._controller,{type:`text-delta`,textDelta:`{}`,path:[]}),_D(this._controller,{type:`tool-call-args-text-finish`,path:[]});break;default:throw Error(`Unexpected chunk type: ${e.type}`)}}}))}get argsText(){return this._argsTextController}_argsTextController;async setResponse(e){if(this._isClosed)return;let t=e.result;_D(this._controller,{type:`result`,path:[],...e.artifact===void 0?{}:{artifact:e.artifact},result:t===void 0?CD:t,isError:e.isError??!1,...e.isPreliminary?{isPreliminary:!0}:{},...e.modelContent===void 0?{}:{modelContent:e.modelContent},...e.messages===void 0?{}:{messages:e.messages}}),e.isPreliminary?this._argsTextController.close():await this.close()}async close(){this._isClosed||(this._isClosed=!0,this._argsTextController.close(),await this._mergeTask,_D(this._controller,{type:`part-finish`,path:[]}),vD(this._controller))}},ED=(e={})=>hD(t=>new TD(t,e)),DD=class{value=-1;up(){return++this.value}},OD=class extends TransformStream{constructor(e){super({transform(t,n){n.enqueue({...t,path:[e,...t.path]})}})}};TransformStream;var kD=class extends TransformStream{constructor(e){let t=new DD,n=new Map;super({transform(r,i){r.type===`part-start`&&r.path.length===0&&n.set(t.up(),e.up());let[a,...o]=r.path;if(a===void 0){i.enqueue(r);return}let s=n.get(a);if(s===void 0)throw Error(`Path not found`);i.enqueue({...r,path:[s,...o]})}})}},AD=class e{_state;_parentId;constructor(e,t={}){this._state=e||{strict:t.strict??!0,merger:pD(),contentCounter:new DD}}get __internal_isClosed(){return this._state.merger.isSealed()||this._state.merger.isCancelled()||this._state.merger.isErrored()}get __internal_isCancelled(){return this._state.merger.isCancelled()}__internal_getReadable(){return this._state.merger.readable}__internal_subscribeToClose(e){this._state.closeSubscriber=e}_addTransformedStream(e,t){if(e.locked)throw TypeError(`Cannot merge a stream that is already locked to a reader.`);let n=e.pipeTo(t.writable).catch(async e=>{throw await t.writable.abort(e).catch(()=>void 0),e});this._state.merger.addStream(t.readable,n)}_addPart(e,t){this._state.append&&(this._state.append.controller.close(),this._state.append=void 0),this.enqueue({type:`part-start`,part:e,path:[]}),this._addTransformedStream(t,new OD(this._state.contentCounter.value))}merge(e){this._addTransformedStream(e,new kD(this._state.contentCounter))}appendText(e){(this._state.append?.kind!==`text`||this._state.append.parentId!==this._parentId)&&(this._state.append={kind:`text`,parentId:this._parentId,controller:this.addTextPart()}),this._state.append.controller.append(e)}appendReasoning(e,t){(t!==void 0||this._state.append?.kind!==`reasoning`||this._state.append.parentId!==this._parentId)&&(this._state.append={kind:`reasoning`,parentId:this._parentId,controller:this.addReasoningPart(t)}),(t===void 0||e.length!==0)&&this._state.append.controller.append(e)}addTextPart(){let[e,t]=xD({strict:this._state.strict});return this._addPart(this._withParentIdOption({type:`text`}),e),t}addReasoningPart(e){let[t,n]=xD({strict:this._state.strict});return this._addPart(this._withParentIdOption({type:`reasoning`,...e}),t),n}addToolCallPart(e){let t=typeof e==`string`?{toolName:e}:e,n=t.toolName,r=t.toolCallId??dD(),[i,a]=ED({strict:this._state.strict});return this._addPart({type:`tool-call`,toolName:n,toolCallId:r,...this._parentId&&{parentId:this._parentId}},i),t.argsText!==void 0&&(a.argsText.append(t.argsText),a.argsText.close()),t.args!==void 0&&(a.argsText.append(JSON.stringify(t.args)),a.argsText.close()),t.response!==void 0&&a.setResponse(t.response),a}_finishedPartStream(){return new ReadableStream({start(e){e.enqueue({type:`part-finish`,path:[]}),e.close()}})}_withParentIdOption(e){return this._parentId?{...e,parentId:this._parentId}:e}appendSource(e){this._addPart(this._withParentIdOption(e),this._finishedPartStream())}appendFile(e){this._addPart(this._withParentIdOption(e),this._finishedPartStream())}appendData(e){this._addPart(this._withParentIdOption(e),this._finishedPartStream())}enqueue(e){this._state.merger.enqueue(e),e.type===`part-start`&&e.path.length===0&&this._state.contentCounter.up()}withParentId(t){let n=new e(this._state);return n._parentId=t,n}close(){this._state.append?.controller?.close(),this._state.merger.seal(),this._state.closeSubscriber?.()}};function jD(e,t={}){let n=new AD(void 0,t);return(async()=>{try{await e(n)}catch(e){n.__internal_isClosed?n.__internal_isCancelled||console.error(e):n.enqueue({type:`error`,path:[],error:String(e)})}finally{n.__internal_isClosed||n.close()}})(),n.__internal_getReadable()}function MD(e={}){let{resolve:t,promise:n}=fD(),r;return[jD(e=>(r=e,r.__internal_subscribeToClose(t),n),e),r]}var ND=class extends TransformStream{constructor(e,t,n){let[r,i]=MD({strict:e.strict}),a=new AbortController,o;super({start(t){o=r.pipeTo(new WritableStream({write(e){t.enqueue(e)},abort(e){t.error(e)},close(){t.terminate()}}),{signal:a.signal}).catch(e=>{t.error(e)});try{return e.start?.(i)}catch(e){throw a.abort(e),e}},transform(t){return e.transform?.(t,i)},async flush(){await e.flush?.(i),i.close(),await o}},t,n);let s=super.readable.getReader(),c=!1;Object.defineProperty(this,"readable",{value:new ReadableStream({start(e){s.closed.catch(t=>{a.abort(t),e.error(t),s.releaseLock()})},async pull(e){let t=await s.read();c||(t.done?(e.close(),s.releaseLock()):e.enqueue(t.value))},async cancel(e){c=!0;let t=s.cancel(e);a.abort(e);try{await t}finally{await o,s.releaseLock()}}},{highWaterMark:0}),writable:!1})}},PD=(e,t)=>{if(e.startsWith(`data-`))return{type:`data`,name:e.substring(5),data:t}},FD=(e,t,n)=>{let{role:r,id:i,createdAt:a,attachments:o,status:s,metadata:c}=e,l={id:i??t,createdAt:a??new Date},u=typeof e.content==`string`?[{type:`text`,text:e.content}]:e.content,d=({image:e,...t})=>typeof e==`string`?KE(e)?.mimeType.startsWith(`image/`)||/^(https:\/\/|blob:)/i.test(e)?{...t,image:e}:(console.warn(`Invalid image data format detected`),null):null;if(r!==`user`&&o?.length)throw Error(`attachments are only supported for user messages`);if(r!==`assistant`&&s)throw Error(`status is only supported for assistant messages`);if(r!==`assistant`&&c?.steps)throw Error(`metadata.steps is only supported for assistant messages`);switch(r){case`assistant`:return{...l,role:r,content:u.map(e=>{let t=e.type;switch(t){case`text`:return e.text?.trim()?e:null;case`reasoning`:return!e.text?.trim()&&!e.unstable_summary?.trim()?null:e;case`file`:case`source`:return e;case`image`:return d(e);case`data`:return e;case`generative-ui`:return e;case`tool-call`:{let{parentId:t,messages:n,unstable_interactions:r,...i}=e,a=rD(r),o={...i,toolCallId:e.toolCallId||`tool-${GE()}`,...t!==void 0&&{parentId:t},...n!==void 0&&{messages:n},...a!==void 0&&{unstable_interactions:a}};return e.args?{...o,args:e.args,argsText:e.argsText??JSON.stringify(e.args)}:{...o,args:uD(e.argsText??``)??{},argsText:e.argsText??``}}case`audio`:throw Error(`Unsupported assistant message part type: ${t}`);default:{let n=t,r=PD(n,e.data);if(r)return r;throw Error(`Unsupported assistant message part type: ${n}`)}}}).filter(e=>!!e),status:s??n,metadata:{unstable_state:c?.unstable_state??null,unstable_annotations:c?.unstable_annotations??[],unstable_data:c?.unstable_data??[],custom:c?.custom??{},steps:c?.steps??[],...c?.timing&&{timing:c.timing},...c?.submittedFeedback&&{submittedFeedback:c.submittedFeedback},...c?.isOptimistic&&{isOptimistic:!0},...c?.modality&&{modality:c.modality}}};case`user`:return{...l,role:r,content:u.map(e=>{let t=e.type;switch(t){case`text`:case`image`:case`audio`:case`file`:case`data`:return e;case`reasoning`:case`source`:case`generative-ui`:case`tool-call`:throw Error(`Unsupported user message part type: ${t}`);default:{let n=t,r=PD(n,e.data);if(r)return r;throw Error(`Unsupported user message part type: ${n}`)}}}),attachments:(o??[]).map(e=>({...e,content:e.content.map(e=>PD(e.type,e.data)??e)})),metadata:{custom:c?.custom??{},...c?.isOptimistic&&{isOptimistic:!0},...c?.modality&&{modality:c.modality}}};case`system`:if(u.length!==1||u[0].type!==`text`)throw Error(`System messages must have exactly one text message part.`);return{...l,role:r,content:u,metadata:{custom:c?.custom??{}}};default:throw Error(`Unknown message role: ${r}`)}},ID=e=>FD({role:e.role,content:e.role===`system`||e.text?[{type:`text`,text:e.text}]:[],attachments:[],metadata:{custom:{...e.quote?{quote:e.quote}:{}}}},e.id,{type:`complete`,reason:`unknown`}),LD=e=>{let t=iS(()=>({}),[]),n=t.state,r=[];e.suggestions.forEach(e=>{let t=n?.suggestions[r.length];r.push(t&&Nw(t,e)?t:e)});let i=n&&Nw(r,n.suggestions)?n:{suggestions:r};return t.state=i,i},RD=mC(e=>({getState:()=>e})),zD=e=>{let t=$(9),n=LD(e),r;t[0]===n.suggestions?r=t[1]:(r=n.suggestions.map(VD),t[0]=n.suggestions,t[1]=r);let i=gT(r),a;t[2]===n?a=t[3]:(a=()=>n,t[2]=n,t[3]=a);let o;t[4]===i?o=t[5]:(o=e=>{let{index:t}=e;return i.get({index:t})},t[4]=i,t[5]=o);let s;return t[6]!==a||t[7]!==o?(s={getState:a,suggestion:o},t[6]=a,t[7]=o,t[8]=s):s=t[8],s},BD=mC(e=>{let t=$(4),n;t[0]===e?n=t[1]:(n=e.map(HD),t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r={suggestions:n},t[2]=n,t[3]=r),zD(r)});function VD(e,t){return hC(t,RD(e),[e])}function HD(e){return{title:e.title??e.prompt,label:e.label??``,prompt:e.prompt}}var UD=e=>`reason`in e?e.reason:void 0,WD=e=>`error`in e?e.error:void 0,GD=32,KD=new WeakMap,qD=e=>KD.get(e)??e.id,JD=(e,t,n)=>`status`in e&&e.status?hE(e,t,n):uE,YD=()=>{let e=[],t=new Map;return n=>{let r=[],i=new Map,a=!0,o=(e,n,s,c)=>{if(!(s>GD))for(let[l,u]of e.entries())for(let[e,d]of u.content.entries()){if(d.type!==`tool-call`||d.messages===void 0)continue;let f=d.messages,p=JD(u,e,d),m=UD(p),h=WD(p),g=`${c}${l}.${e}`,_=t.get(g),v=_?.part===d&&_.statusType===p.type&&_.statusReason===m&&Object.is(_.statusError,h)&&_.messages===f&&_.task.messageId===u.id&&_.task.parentTaskId===n&&_.task.depth===s?_.task:{id:d.toolCallId,toolName:d.toolName,args:d.args,result:d.result,...d.isError===void 0?void 0:{isError:d.isError},status:p,timing:d.timing,messageId:u.id,parentTaskId:n,depth:s,messages:f};v!==_?.task&&(a=!1,KD.set(v,g)),r.push(v),i.set(g,{task:v,part:d,statusType:p.type,statusReason:m,statusError:h,messages:f}),o(f,v.id,s+1,`${g}.`)}};o(n,null,0,``);let s=a&&r.length===e.length&&r.every((t,n)=>t===e[n])?e:r;return e=s,t=i,s}},XD=mC(({task:e})=>({getState:()=>e})),ZD=mC(e=>{let t=$(8),{runtime:n,id:r,threadIdRef:i,threadId:a,isLast:o}=e,s;t[0]!==r||t[1]!==n?(s=n.getMessageById(r),t[0]=r,t[1]=n,t[2]=s):s=t[2];let c=s,l;return t[3]!==o||t[4]!==c||t[5]!==a||t[6]!==i?(l=cE({runtime:c,threadIdRef:i,threadId:a,isLast:o}),t[3]=o,t[4]=c,t[5]=a,t[6]=i,t[7]=l):l=t[7],_C(l)}),QD=mC(e=>{let t=$(111),{runtime:n}=e,r=YT(n),i=Aw(),a,o;t[0]!==i||t[1]!==n?(a=()=>{let e=[];for(let t of[`runStart`,`runEnd`,`initialize`,`modelContextUpdate`]){let r=n.unstable_on(t,()=>{let e=n.getState()?.threadId||`unknown`;i(`thread.${t}`,{threadId:e})});e.push(r)}return e.push(n.unstable_on(`toolApprovalAnswered`,e=>{let t=n.getState()?.threadId||`unknown`;i(`thread.toolApprovalAnswered`,{threadId:t,...e})})),()=>ST(e)},o=[n,i],t[0]=i,t[1]=n,t[2]=a,t[3]=o):(a=t[2],o=t[3]),oS(a,o);let s;t[4]===n?s=t[5]:(s=iE(()=>n.getState().threadId),t[4]=n,t[5]=s);let c=s,l;t[6]!==i||t[7]!==n?(l=e=>{i(e,{threadId:n.getState().threadId})},t[6]=i,t[7]=n,t[8]=l):l=t[8];let u=l,d;t[9]===n?d=t[10]:(d=e=>n.getState().suggestions.some(t=>t.prompt===e),t[9]=n,t[10]=d);let f=d,p;t[11]!==f||t[12]!==n.composer||t[13]!==c?(p=nE({runtime:n.composer,threadIdRef:c,isSuggestion:f}),t[11]=f,t[12]=n.composer,t[13]=c,t[14]=p):p=t[14];let m=gw(p),h;t[15]===r.suggestions?h=t[16]:(h=BD(r.suggestions),t[15]=r.suggestions,t[16]=h);let g=gw(h),_;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(_=YD(),t[17]=_):_=t[17];let v=_,y;t[18]===r.messages?y=t[19]:(y=v(r.messages),t[18]=r.messages,t[19]=y);let b=y,x;t[20]===b?x=t[21]:(x=b.map($D),t[20]=b,t[21]=x);let S=gT(x),C=m.state.submission,w=m.state.inTransit,T;t[22]===w?T=t[23]:(T=w??[],t[22]=w,t[23]=T);let E;t[24]===C?E=t[25]:(E=C?[C]:[],t[24]=C,t[25]=E);let D;t[26]!==T||t[27]!==E?(D=[...T,...E],t[26]=T,t[27]=E,t[28]=D):D=t[28];let O=D,k;t[29]===O?k=t[30]:(k=O.map(ID),t[29]=O,t[30]=k);let A=k,j=r.messages.length-1,M;if(t[31]!==j||t[32]!==O||t[33]!==A||t[34]!==n||t[35]!==r.messages||t[36]!==r.threadId||t[37]!==c){let e;t[39]!==j||t[40]!==O.length||t[41]!==n||t[42]!==r.threadId||t[43]!==c?(e=(e,t)=>{let i=t===j&&O.length>0?!1:void 0;return hC(e.id,ZD({runtime:n,id:e.id,threadIdRef:c,threadId:r.threadId,isLast:i}),[n,e.id,c,r.threadId,i])},t[39]=j,t[40]=O.length,t[41]=n,t[42]=r.threadId,t[43]=c,t[44]=e):e=t[44];let i=r.messages.map(e),a;t[45]!==O||t[46]!==A||t[47]!==r.messages.length?(a=O.map((e,t)=>hC(e.id,NE({message:A[t],submission:e,index:r.messages.length+t,isLast:t===O.length-1}),[A[t],e,r.messages.length,t,O.length])),t[45]=O,t[46]=A,t[47]=r.messages.length,t[48]=a):a=t[48],M=[...i,...a],t[31]=j,t[32]=O,t[33]=A,t[34]=n,t[35]=r.messages,t[36]=r.threadId,t[37]=c,t[38]=M}else M=t[38];let N=gT(M),P=N.state.length===0&&!r.isLoading,F;t[49]!==m.state||t[50]!==N.state||t[51]!==r.capabilities||t[52]!==r.extras||t[53]!==r.isDisabled||t[54]!==r.isLoading||t[55]!==r.isRunning||t[56]!==r.speech||t[57]!==r.state||t[58]!==r.suggestions||t[59]!==r.voice||t[60]!==P||t[61]!==b?(F={isEmpty:P,isDisabled:r.isDisabled,isLoading:r.isLoading,isRunning:r.isRunning,capabilities:r.capabilities,state:r.state,suggestions:r.suggestions,extras:r.extras,speech:r.speech,voice:r.voice,composer:m.state,messages:N.state,tasks:b},t[49]=m.state,t[50]=N.state,t[51]=r.capabilities,t[52]=r.extras,t[53]=r.isDisabled,t[54]=r.isLoading,t[55]=r.isRunning,t[56]=r.speech,t[57]=r.state,t[58]=r.suggestions,t[59]=r.voice,t[60]=P,t[61]=b,t[62]=F):F=t[62];let I=F,L;t[63]===I?L=t[64]:(L=()=>I,t[63]=I,t[64]=L);let R;t[65]===m.methods?R=t[66]:(R=()=>m.methods,t[65]=m.methods,t[66]=R);let z;t[67]===g?z=t[68]:(z=()=>g.methods,t[67]=g,t[68]=z);let B;t[69]!==S||t[70]!==b?(B=e=>{if(`id`in e){let t=b.find(t=>t.id===e.id);return S.get({key:t?qD(t):e.id})}return S.get(e)},t[69]=S,t[70]=b,t[71]=B):B=t[71];let V;t[72]!==i||t[73]!==f||t[74]!==n?(V=e=>{let t=typeof e==`string`?{content:[{type:`text`,text:e}]}:e;if((t.role??`user`)===`user`){let e=t.content.map(eO).join(``);i(`composer.send`,{threadId:n.getState().threadId,chars:e.length,attachments:t.attachments?.length??0,...f(e)?{suggestion:!0}:void 0})}n.append(e)},t[72]=i,t[73]=f,t[74]=n,t[75]=V):V=t[75];let H;t[76]!==u||t[77]!==n||t[78]!==r.isRunning?(H=()=>{r.isRunning&&u(`thread.cancelRun`),n.cancelRun()},t[76]=u,t[77]=n,t[78]=r.isRunning,t[79]=H):H=t[79];let U;t[80]!==u||t[81]!==n?(U=()=>{n.connectVoice(),u(`thread.voiceStarted`)},t[80]=u,t[81]=n,t[82]=U):U=t[82];let W;t[83]===N?W=t[84]:(W=e=>`id`in e?N.get({key:e.id}):N.get(e),t[83]=N,t[84]=W);let ee;t[85]===n?ee=t[86]:(ee=()=>n,t[85]=n,t[86]=ee);let te;return t[87]!==n.deleteMessage||t[88]!==n.disconnectVoice||t[89]!==n.export||t[90]!==n.getModelContext||t[91]!==n.getVoiceVolume||t[92]!==n.import||t[93]!==n.importExternalState||t[94]!==n.muteVoice||t[95]!==n.reset||t[96]!==n.resumeRun||t[97]!==n.startRun||t[98]!==n.stopSpeaking||t[99]!==n.subscribeVoiceVolume||t[100]!==n.unmuteVoice||t[101]!==L||t[102]!==R||t[103]!==z||t[104]!==B||t[105]!==V||t[106]!==H||t[107]!==U||t[108]!==W||t[109]!==ee?(te={getState:L,composer:R,suggestions:z,task:B,append:V,deleteMessage:n.deleteMessage,startRun:n.startRun,resumeRun:n.resumeRun,importExternalState:n.importExternalState,cancelRun:H,getModelContext:n.getModelContext,export:n.export,import:n.import,reset:n.reset,stopSpeaking:n.stopSpeaking,connectVoice:U,disconnectVoice:n.disconnectVoice,getVoiceVolume:n.getVoiceVolume,subscribeVoiceVolume:n.subscribeVoiceVolume,muteVoice:n.muteVoice,unmuteVoice:n.unmuteVoice,message:W,__internal_getRuntime:ee},t[87]=n.deleteMessage,t[88]=n.disconnectVoice,t[89]=n.export,t[90]=n.getModelContext,t[91]=n.getVoiceVolume,t[92]=n.import,t[93]=n.importExternalState,t[94]=n.muteVoice,t[95]=n.reset,t[96]=n.resumeRun,t[97]=n.startRun,t[98]=n.stopSpeaking,t[99]=n.subscribeVoiceVolume,t[100]=n.unmuteVoice,t[101]=L,t[102]=R,t[103]=z,t[104]=B,t[105]=V,t[106]=H,t[107]=U,t[108]=W,t[109]=ee,t[110]=te):te=t[110],te});function $D(e){return hC(qD(e),XD({task:e}),[e])}function eO(e){return e.type===`text`?e.text:``}var tO=e=>{let t=$(4),n=Aw(),r=rS(e),i,a;t[0]!==n||t[1]!==e?(i=()=>{let t=r.current;t!==e&&(r.current=e,n(`threads.selectionChanged`,{threadId:e,previousThreadId:t}))},a=[e,n],t[0]=n,t[1]=e,t[2]=i,t[3]=a):(i=t[2],a=t[3]),oS(i,a)},nO=(e,t,n)=>{let r=$(8),i=n===void 0?t:n,a=Aw(),o=t&&i,s;r[0]!==o||r[1]!==e?(s={isMain:o,threadId:e},r[0]=o,r[1]=e,r[2]=s):s=r[2];let c=rS(s),l,u;r[3]!==a||r[4]!==t||r[5]!==e?(l=()=>{let n=c.current;(n.isMain!==t||n.threadId!==e)&&(c.current={isMain:t,threadId:e},a(t?`threadListItem.switchedTo`:`threadListItem.switchedAway`,{threadId:e}))},u=[t,e,a],r[3]=a,r[4]=t,r[5]=e,r[6]=l,r[7]=u):(l=r[6],u=r[7]),oS(l,u)},rO=(e,t)=>QT(`thread list ${e}`,t),iO=mC(e=>{let t=$(27),{runtime:n,mainThreadIsRunning:r}=e,i=r!==void 0&&r,a=YT(n),o;bb0:{let e=a.isRunning||a.isMain&&i;if(e===a.isRunning){o=a;break bb0}let n;t[0]!==e||t[1]!==a?(n={...a,isRunning:e},t[0]=e,t[1]=a,t[2]=n):n=t[2],o=n}let s=o;nO(a.id,a.isMain);let c;t[3]===s?c=t[4]:(c=()=>s,t[3]=s,t[4]=c);let l,u,d,f,p,m,h;t[5]===n?(l=t[6],u=t[7],d=t[8],f=t[9],p=t[10],m=t[11],h=t[12]):(u=e=>rO(`switch`,()=>n.switchTo(e)),d=e=>rO(`rename`,()=>n.rename(e)),f=e=>rO(`update custom metadata`,()=>n.updateCustom(e)),p=()=>rO(`archive`,()=>n.archive()),m=()=>rO(`unarchive`,()=>n.unarchive()),h=()=>rO(`delete`,()=>n.delete()),l=e=>rO(`generate title`,()=>n.generateTitle(e)),t[5]=n,t[6]=l,t[7]=u,t[8]=d,t[9]=f,t[10]=p,t[11]=m,t[12]=h);let g;t[13]===n?g=t[14]:(g=()=>n,t[13]=n,t[14]=g);let _;return t[15]!==n.detach||t[16]!==n.initialize||t[17]!==l||t[18]!==g||t[19]!==c||t[20]!==u||t[21]!==d||t[22]!==f||t[23]!==p||t[24]!==m||t[25]!==h?(_={getState:c,switchTo:u,rename:d,updateCustom:f,archive:p,unarchive:m,delete:h,generateTitle:l,initialize:n.initialize,detach:n.detach,__internal_getRuntime:g},t[15]=n.detach,t[16]=n.initialize,t[17]=l,t[18]=g,t[19]=c,t[20]=u,t[21]=d,t[22]=f,t[23]=p,t[24]=m,t[25]=h,t[26]=_):_=t[26],_}),aO=mC(e=>{let t=$(6),{runtime:n,id:r,mainThreadIsRunning:i}=e,a;t[0]!==r||t[1]!==n?(a=n.getItemById(r),t[0]=r,t[1]=n,t[2]=a):a=t[2];let o=a,s;return t[3]!==i||t[4]!==o?(s=iO({runtime:o,mainThreadIsRunning:i}),t[3]=i,t[4]=o,t[5]=s):s=t[5],_C(s)}),oO=mC(e=>{let t=$(48),{runtime:n,__internal_assistantRuntime:r}=e,i=YT(n);tO(i.mainThreadId);let a=Aw(),o,s;t[0]!==a||t[1]!==n?(o=()=>n.unstable_subscribeThreadEvents(e=>{let{threadId:t,type:r}=e;t!==n.getState().mainThreadId&&a(`thread.${r}`,{threadId:t})}),s=[n,a],t[0]=a,t[1]=n,t[2]=o,t[3]=s):(o=t[2],s=t[3]),oS(o,s);let c;t[4]===n.main?c=t[5]:(c=QD({runtime:n.main}),t[4]=n.main,t[5]=c);let l=gw(c),u;t[6]!==l.state||t[7]!==n||t[8]!==i.threadItems?(u=Object.keys(i.threadItems).map(e=>hC(e,aO({runtime:n,id:e,mainThreadIsRunning:l.state.isRunning}),[n,e,l.state.isRunning])),t[6]=l.state,t[7]=n,t[8]=i.threadItems,t[9]=u):u=t[9];let d=gT(u),f=i.newThreadId??null,p;t[10]!==l.state||t[11]!==i.archivedThreadIds||t[12]!==i.hasMore||t[13]!==i.isLoading||t[14]!==i.isLoadingMore||t[15]!==i.loadError||t[16]!==i.mainThreadId||t[17]!==i.threadIds||t[18]!==f||t[19]!==d.state?(p={mainThreadId:i.mainThreadId,newThreadId:f,isLoading:i.isLoading,loadError:i.loadError,isLoadingMore:i.isLoadingMore,hasMore:i.hasMore,threadIds:i.threadIds,archivedThreadIds:i.archivedThreadIds,threadItems:d.state,main:l.state},t[10]=l.state,t[11]=i.archivedThreadIds,t[12]=i.hasMore,t[13]=i.isLoading,t[14]=i.isLoadingMore,t[15]=i.loadError,t[16]=i.mainThreadId,t[17]=i.threadIds,t[18]=f,t[19]=d.state,t[20]=p):p=t[20];let m=p,h;t[21]===m?h=t[22]:(h=()=>m,t[21]=m,t[22]=h);let g;t[23]===l.methods?g=t[24]:(g=()=>l.methods,t[23]=l.methods,t[24]=g);let _;t[25]!==m||t[26]!==d?(_=e=>{if(e===`main`)return d.get({key:m.mainThreadId});if(`id`in e)return d.get({key:e.id});let{index:t,archived:n}=e,r=n!==void 0&&n?m.archivedThreadIds[t]:m.threadIds[t];return d.get({key:r})},t[25]=m,t[26]=d,t[27]=_):_=t[27];let v,y,b,x,S,C;t[28]===n?(v=t[29],y=t[30],b=t[31],x=t[32],S=t[33],C=t[34]):(v=(e,t)=>rO(`switch`,()=>n.switchToThread(e,t)),y=()=>rO(`create`,()=>n.switchToNewThread()),b=()=>n.getLoadThreadsPromise(),x=()=>n.reload(),S=()=>n.reloadMainThread(),C=()=>n.loadMore(),t[28]=n,t[29]=v,t[30]=y,t[31]=b,t[32]=x,t[33]=S,t[34]=C);let w;t[35]===r?w=t[36]:(w=()=>r,t[35]=r,t[36]=w);let T;return t[37]!==v||t[38]!==y||t[39]!==b||t[40]!==x||t[41]!==S||t[42]!==C||t[43]!==w||t[44]!==h||t[45]!==g||t[46]!==_?(T={getState:h,thread:g,item:_,switchToThread:v,switchToNewThread:y,getLoadThreadsPromise:b,reload:x,reloadMainThread:S,loadMore:C,__internal_getAssistantRuntime:w},t[37]=v,t[38]=y,t[39]=b,t[40]=x,t[41]=S,t[42]=C,t[43]=w,t[44]=h,t[45]=g,t[46]=_,t[47]=T):T=t[47],T}),sO=(e,t)=>{e.thread??=mT({source:`threads`,query:{type:`main`},get:e=>e.threads.thread(`main`)}),e.threadListItem??=mT({source:`threads`,query:{type:`main`},get:e=>e.threads.item(`main`)}),e.composer??=mT({source:`thread`,query:{},get:e=>e.threads.thread(`main`).composer()}),!e.modelContext&&t.modelContext.source===null&&(e.modelContext=VT()),!e.suggestions&&t.suggestions.source===null&&(e.suggestions=mT({source:`thread`,query:{},get:e=>e.thread.suggestions()}))},cO=e=>{let t=$(7),n=Ow(),r;t[0]!==n||t[1]!==e?(r=()=>e.registerModelContextProvider(n.current.modelContext()),t[0]=n,t[1]=e,t[2]=r):r=t[2];let i;t[3]===e?i=t[4]:(i=[e],t[3]=e,t[4]=i),kw(`modelContext`,r,i);let a;return t[5]===e?a=t[6]:(a=oO({runtime:e.threads,__internal_assistantRuntime:e}),t[5]=e,t[6]=a),_C(a)},lO=mC(cO);rw(cO,(e,t)=>{sO(e,t),!e.tools&&t.tools.source===null&&(e.tools=KT({})),!e.dataRenderers&&t.dataRenderers.source===null&&(e.dataRenderers=TC())});var uO=OC({}),dO=({effects:e})=>{"use no memo";return sS(e),null},fO=mS(function(e,t){"use no memo";let{config:n,children:r}=e,i=`extends`in e,a=`value`in e,o=ew();if(Uw){if(i&&a)throw Error("AuiProvider: pass either `extends` or `value`, not both.");if(i&&e.extends===void 0)throw Error("AuiProvider: `extends` must be a client or null, not undefined.");if(i&&!n)throw Error("AuiProvider: `extends` requires a `config`.");if(a&&n)throw Error("AuiProvider: pass either `value` or `config`, not both.");if(!a&&!n)throw Error("AuiProvider: a `config` is required.");if(!i&&!a&&o!==qC)throw Error(`A parent AuiProvider exists — pass extends={aui} to inherit it or extends={null} to isolate.`)}let s=i?e.extends??qC:a?e.value??qC:o,c=Vw(),{client:l,effects:u}=cT(s,n??uO,c);return pS(t,()=>l,[l]),(0,q.jsx)(jw.Provider,{value:c,children:(0,q.jsxs)(YC.Provider,{value:l,children:[(0,q.jsx)(dO,{effects:QC(s)}),u&&(0,q.jsx)(dO,{effects:u}),r]})})}),pO=e=>e._core?.RenderComponent,mO=({runtime:e,aui:t,config:n,children:r})=>{"use no memo";let i=pO(e),a=OC({...n,threads:lO(e)});return(0,q.jsxs)(fO,{extends:t,config:a,children:[i&&(0,q.jsx)(i,{}),r]})},hO=hS(e=>{let t=$(5),{runtime:n,aui:r,config:i,children:a}=e,o=r===void 0?null:r,s;return t[0]!==o||t[1]!==a||t[2]!==i||t[3]!==n?(s=(0,q.jsx)(mO,{runtime:n,aui:o,config:i,children:a}),t[0]=o,t[1]=a,t[2]=i,t[3]=n,t[4]=s):s=t[4],s}),gO=_S(null),_O=(e,t)=>Sx(gO,e,t),vO=()=>yS(gO),yO={},bO=e=>{let t=Hw(e??yO);return e==null?null:t},xO=e=>{let t=$(6),{adapters:n,children:r}=e,i=yS(gO),a;t[0]!==n||t[1]!==i?(a={...i,...n},t[0]=n,t[1]=i,t[2]=a):a=t[2];let o=a,s;return t[3]!==r||t[4]!==o?(s=(0,q.jsx)(gO.Provider,{value:o,children:r}),t[3]=r,t[4]=o,t[5]=s):s=t[5],s};function SO(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function CO(e,t=0){return t>100?!1:e===null||typeof e==`string`||typeof e==`boolean`?!0:typeof e==`number`?!Number.isNaN(e)&&Number.isFinite(e):Array.isArray(e)?e.every(e=>CO(e,t+1)):SO(e)?Object.entries(e).every(([e,n])=>typeof e==`string`&&CO(n,t+1)):!1}var wO=e=>{if(e instanceof Date&&!Number.isNaN(e.getTime()))return e;if(typeof e!=`string`&&typeof e!=`number`)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t},TO=e=>e===`system`||e===`user`||e===`assistant`,EO={running:()=>!0,"requires-action":e=>typeof e.reason==`string`,complete:e=>typeof e.reason==`string`,incomplete:e=>(e.reason===void 0||typeof e.reason==`string`)&&(e.error===void 0||CO(e.error))},DO=e=>SO(e)&&typeof e.type==`string`&&Object.hasOwn(EO,e.type)&&EO[e.type](e)===!0,OO=e=>{if(SO(e)){if(e.messageId!==void 0&&typeof e.messageId!=`string`){let{messageId:t,...n}=e;return OO(n)}if(e.usage!==void 0&&!SO(e.usage)){let{usage:t,...n}=e;return n}return e}},kO=e=>Array.isArray(e)?e.map(OO).filter(e=>e!==void 0):[],AO=(e,t)=>{let n={text:e=>typeof e.text==`string`,reasoning:e=>typeof e.text==`string`||typeof e.unstable_summary==`string`,image:e=>typeof e.image==`string`,file:e=>typeof e.data==`string`&&typeof e.mimeType==`string`,audio:e=>SO(e.audio)&&typeof e.audio.data==`string`&&typeof e.audio.format==`string`,data:e=>typeof e.name==`string`,source:e=>typeof e.id==`string`&&(e.sourceType===`url`?typeof e.url==`string`:e.sourceType===`document`&&typeof e.title==`string`&&typeof e.mediaType==`string`),"generative-ui":e=>SO(e.spec),"tool-call":e=>typeof e.toolCallId==`string`&&typeof e.toolName==`string`&&SO(e.args)&&typeof e.argsText==`string`,...e};return e=>SO(e)&&typeof e.type==`string`&&(Object.hasOwn(n,e.type)?n[e.type](e):t(e.type))};AO({},()=>!0);var jO=AO({reasoning:e=>(e.text===void 0||typeof e.text==`string`)&&(e.unstable_summary===void 0||typeof e.unstable_summary==`string`)&&(typeof e.text==`string`||typeof e.unstable_summary==`string`),"tool-call":e=>typeof e.toolCallId==`string`&&typeof e.toolName==`string`&&(e.args===void 0||SO(e.args))&&(e.argsText===void 0||typeof e.argsText==`string`)&&(e.args!==void 0||e.argsText!==void 0)},e=>e.startsWith(`data-`)),MO={user:{text:!0,image:!0,file:!0,data:!0,audio:!0},assistant:{text:!0,reasoning:!0,"tool-call":!0,source:!0,file:!0,image:!0,data:!0,"generative-ui":!0}},NO=(e,t)=>jO(t)&&(e===`system`?t.type===`text`:Object.hasOwn(MO.assistant,t.type)||Object.hasOwn(MO.user,t.type)?Object.hasOwn(MO[e],t.type):!0),PO=(e,t)=>!SO(e)||typeof e.id!=`string`||typeof e.type!=`string`||typeof e.name!=`string`||!SO(e.status)||e.status.type!==`complete`||!Array.isArray(e.content)?null:{...e,content:e.content.filter(t)},FO={toResponse(e,t){return new Response(FO.toByteStream(e,t),{headers:t.headers??{}})},fromResponse(e,t){return FO.fromByteStream(e.body,t)},toByteStream(e,t){return e.pipeThrough(t)},fromByteStream(e,t){return e.pipeThrough(t)}},IO=new Set([`__proto__`,`constructor`,`prototype`]);function LO(e){if(IO.has(e))throw Error(`Unsafe gorp path segment: ${e}`)}var RO=class{_state;_strict;_logged=new Set;_warnedClamp=!1;constructor(e=null,t={}){this._state=e,this._strict=t.strict??!0}get state(){return this._state}logOnce(e,t){this._logged.has(e)||this._logged.size>=20||(this._logged.add(e),t())}append(e){this._state=e.reduce((e,t)=>{if(this._strict)return this.apply(e,t);try{return this.apply(e,t)}catch(n){return this.logOnce(`skip:${String(n)}`,()=>console.error(`Skipped unappliable gorp operation: ${String(n)}`,t)),e}},this._state)}apply(e,t){let n=t.type;switch(n){case`set`:return this.updatePath(e,t.path,()=>t.value);case`append-text`:return this.updatePath(e,t.path,e=>{if(typeof e!=`string`)throw Error(`Expected string at path [${t.path.join(`, `)}]`);return e+t.value});default:throw Error(`Invalid operation type: ${n}`)}}updatePath(e,t,n){if(t.length===0)return n(e);let r=[],i=e;for(let e=0;e<t.length;e++){if(i??={},typeof i!=`object`)throw Error(`Invalid path: [${t.slice(e).join(`, `)}]`);let n=t[e];if(LO(n),Array.isArray(i)){let a=Number(n);if(!Number.isInteger(a)||String(a)!==String(n))throw Error(`Expected array index at [${t.slice(e).join(`, `)}]`);if(a<0)throw Error(`Insert array index out of bounds`);if(a>i.length){if(this._strict)throw Error(`Insert array index out of bounds`);this._warnedClamp||(this._warnedClamp=!0,console.warn(`Clamped out-of-bounds gorp array index ${a} to ${i.length}`)),a=i.length}r.push({kind:`array`,state:i,key:a}),i=Object.hasOwn(i,a)?i[a]:void 0}else{let e=i;r.push({kind:`object`,state:e,key:n}),i=Object.hasOwn(e,n)?e[n]:void 0}}let a=n(i);for(let e=r.length-1;e>=0;e--){let t=r[e];if(t.kind===`array`){let e=[...t.state];e[t.key]=a,a=e}else{let e={...t.state};e[t.key]=a,a=e}}return a}},zO=class{_streamStartTime;_firstTokenTime;_totalChunks=0;_toolCallIds=new Set;constructor(){this._streamStartTime=Date.now()}recordChunk(){this._totalChunks++}recordFirstToken(){this._firstTokenTime===void 0&&(this._firstTokenTime=Date.now())}recordToolCallStart(e){this._toolCallIds.add(e)}getTiming(e,t){let n=Date.now()-this._streamStartTime,r=e&&e>0?e:t?Math.ceil(t.length/4):void 0,i=r&&n>0?r/n*1e3:void 0;return{streamStartTime:this._streamStartTime,...this._firstTokenTime===void 0?void 0:{firstTokenTime:this._firstTokenTime-this._streamStartTime},totalStreamTime:n,...r===void 0?void 0:{tokenCount:r},...i===void 0?void 0:{tokensPerSecond:i},totalChunks:this._totalChunks,toolCallCount:this._toolCallIds.size}}},BO=(e,t)=>({...e,parts:t,get content(){return this.parts}}),VO=(e,t)=>BO(e,[...e.parts,t]),HO=({unstable_state:e=null}={})=>({role:`assistant`,status:{type:`running`},parts:[],get content(){return this.parts},metadata:{unstable_state:e,unstable_data:[],unstable_annotations:[],steps:[],custom:{}}}),UO=16,WO=(e,t,n,r)=>{let i=t.path.length===1?e.parts[t.path[0]]:void 0;if(i===void 0)return n(`no-part:${t.type}`,`Dropped ${t.type} chunk: no part at path [${t.path.join(`, `)}]`),e;let a=t.path[0],o=r(i);return o===i?e:BO(e,[...e.parts.slice(0,a),o,...e.parts.slice(a+1)])},GO=(e,t,n)=>{let r=t.part;if(r.type===`text`||r.type===`reasoning`)return VO(e,{type:r.type,text:``,status:{type:`running`},...r.type===`reasoning`&&r.unstable_summary!==void 0?{unstable_summary:r.unstable_summary}:void 0,...r.parentId&&{parentId:r.parentId}});if(r.type===`tool-call`)return VO(e,{type:`tool-call`,state:`partial-call`,status:{type:`running`,isArgsComplete:!1},toolCallId:r.toolCallId,toolName:r.toolName,argsText:``,args:{},timing:{startedAt:Date.now()},...r.parentId&&{parentId:r.parentId}});if(r.type===`source`)return VO(e,{type:`source`,sourceType:r.sourceType,id:r.id,url:r.url,...r.title?{title:r.title}:void 0,...r.parentId&&{parentId:r.parentId}});if(r.type===`file`)return VO(e,{type:`file`,mimeType:r.mimeType,data:r.data,...r.parentId&&{parentId:r.parentId}});if(r.type===`data`)return VO(e,{type:`data`,name:r.name,data:r.data,...r.parentId&&{parentId:r.parentId}});{let t=String(r.type);return n(`unsupported-part-start:${t}`,`Unsupported part-start type ${t}: inserting an empty reasoning part to preserve part indices`),VO(e,{type:`reasoning`,text:``,status:{type:`running`}})}},KO=(e,t,n)=>WO(e,t,n,e=>e.type===`tool-call`?e.state===`partial-call`?{...e,state:`call`,status:e.status.type===`running`?{type:`running`,isArgsComplete:!0}:e.status}:e:(n(`wrong-part:tool-call-args-text-finish`,`Dropped tool-call-args-text-finish chunk: part is not a tool-call`),e)),qO=(e,t,n)=>WO(e,t,n,e=>e.type===`tool-call`&&e.isPreliminary?e:{...e,status:{type:`complete`,reason:`unknown`}}),JO=(e,t,n)=>WO(e,t,n,e=>{if(e.type===`text`||e.type===`reasoning`)return{...e,text:e.text+t.textDelta};if(e.type===`tool-call`){let n=e.argsText+t.textDelta,r=uD(n)??e.args;return{...e,argsText:n,args:r}}return n(`wrong-part:text-delta`,`Dropped text-delta chunk: part is neither text nor tool-call`),e}),YO=(e,t,n)=>WO(e,t,n,e=>{if(e.type===`tool-call`){let n=t.isPreliminary===!0,r=e.status.type===`running`?e.status:{type:`running`,isArgsComplete:e.state!==`partial-call`};if(n)return e.state===`result`?e:{...e,state:e.state===`partial-call`?`partial-call`:`call`,...t.artifact===void 0?{}:{artifact:t.artifact},result:t.result,isError:t.isError??!1,isPreliminary:!0,...t.modelContent===void 0?{}:{modelContent:t.modelContent},...t.messages===void 0?{}:{messages:t.messages},status:r};let{isPreliminary:i,...a}=e;return{...a,state:`result`,...e.timing===void 0?{}:{timing:{...e.timing,completedAt:e.timing.completedAt??Date.now()}},...t.artifact===void 0?{}:{artifact:t.artifact},result:t.result,isError:t.isError??!1,...t.modelContent===void 0?{}:{modelContent:t.modelContent},...t.messages===void 0?{}:{messages:t.messages},status:{type:`complete`,reason:`stop`}}}return n(`wrong-part:result`,`Dropped result chunk: part is not a tool-call`),e}),XO=(e,t)=>{if(e.status?.type===`incomplete`&&e.status?.reason===`error`)return e;let n=ZO(t);return{...e,status:n}},ZO=e=>e.finishReason===`tool-calls`?{type:`requires-action`,reason:`tool-calls`}:e.finishReason===`stop`||e.finishReason===`unknown`?{type:`complete`,reason:e.finishReason}:{type:`incomplete`,reason:e.finishReason},QO=(e,t)=>({...e,metadata:{...e.metadata,unstable_annotations:[...e.metadata.unstable_annotations,...t.annotations]}}),$O=(e,t)=>({...e,metadata:{...e.metadata,unstable_data:[...e.metadata.unstable_data,...t.data]}}),ek=(e,t)=>({...e,metadata:{...e.metadata,steps:[...e.metadata.steps,{state:`started`,messageId:t.messageId}]}}),tk=(e,t)=>{let n=e.metadata.steps.slice(),r=n.length-1;return n.length>0&&n[r]?.state===`started`?n[r]={...n[r],state:`finished`,finishReason:t.finishReason,usage:t.usage,isContinued:t.isContinued}:n.push({state:`finished`,messageId:dD(),finishReason:t.finishReason,usage:t.usage,isContinued:t.isContinued}),{...e,metadata:{...e.metadata,steps:n}}},nk=(e,t)=>{let n=t.severity===`critical`||t.severity===`warning`||t.severity===`info`?t.severity:void 0;return{...e,status:{type:`incomplete`,reason:`error`,error:{code:t.code??`unknown`,message:t.error??`unknown error`,...n!==void 0&&{severity:n}}}}},rk=(e,t,n)=>(n.append(t.operations),{...e,metadata:{...e.metadata,unstable_state:n.state}}),ik=e=>{let t=0;for(let n of e.metadata.steps)n.state===`finished`&&n.usage&&(t+=n.usage.outputTokens);return t},ak=(e,t,n=0)=>{let r=n>0?n:ik(t);if(r>0)return e.getTiming(r);let i=``;for(let e of t.parts)(e.type===`text`||e.type===`reasoning`)&&(i+=e.text);return e.getTiming(void 0,i||void 0)},ok=e=>{let t=!1;return()=>{t||(t=!0,queueMicrotask(()=>{t=!1,e()}))}},sk=class extends TransformStream{constructor({initialMessage:e,throttle:t,onError:n,strict:r=!0}={}){let i=e??HO(),a,o,s=new zO,c=new Set,l=(e,t)=>{c.has(e)||c.size>=UO||(c.add(e),console.warn(t))},u,d=t?ok(()=>{u?.enqueue(i)}):()=>{u?.enqueue(i)};super({start(e){u=e},transform(e){s.recordChunk();let t=e.type;switch(t){case`part-start`:i=GO(i,e,l),e.part.type===`tool-call`&&s.recordToolCallStart(e.part.toolCallId);break;case`tool-call-args-text-finish`:i=KO(i,e,l);break;case`part-finish`:i=qO(i,e,l);break;case`text-delta`:{let t=JO(i,e,l);t!==i&&s.recordFirstToken(),i=t;break}case`result`:i=YO(i,e,l);break;case`message-finish`:o=e.usage?.outputTokens,i=XO(i,e);break;case`annotations`:i=QO(i,e);break;case`data`:i=$O(i,e);break;case`step-start`:i=ek(i,e);break;case`step-finish`:i=tk(i,e);break;case`error`:i=nk(i,e),n?.(e.error);break;case`update-state`:a??=new RO(i.metadata.unstable_state,{strict:r}),i=rk(i,e,a);break;default:throw Error(`Unsupported chunk type: ${t}`)}i.status.type!==`running`&&(i={...i,metadata:{...i.metadata,timing:ak(s,i,o)}}),d()},flush(e){if(i.status?.type===`running`){let t=i.parts?.some(e=>e.type===`tool-call`&&(e.state===`call`||e.state===`partial-call`)&&(e.result===void 0||e.isPreliminary))??!1;i=XO(i,{type:`message-finish`,path:[],finishReason:t?`tool-calls`:`unknown`,usage:{inputTokens:0,outputTokens:0}}),i={...i,metadata:{...i.metadata,timing:ak(s,i,o)}},e.enqueue(i)}}})}},ck=class e{readable;constructor(e){this.readable=e}static fromAssistantStream(t){return new e(t.pipeThrough(new sk))}async unstable_result(){let e;for await(let t of this)e=t;return e||{role:`assistant`,status:{type:`complete`,reason:`unknown`},parts:[],content:[],metadata:{unstable_state:null,unstable_data:[],unstable_annotations:[],steps:[],custom:{}}}}[Symbol.asyncIterator](){return aD(this.readable)[Symbol.asyncIterator]()}tee(){let[t,n]=this.readable.tee();return[new e(t),new e(n)]}},lk=class extends TransformStream{constructor(e){super();let t=e(super.readable);Object.defineProperty(this,"readable",{value:t,writable:!1})}},uk=class extends lk{constructor(){super(e=>{let t=new ND({transform(e,t){t.appendText(e)}});return e.pipeThrough(new TextDecoderStream).pipeThrough(t)})}},dk=100,fk=(e,t,n)=>{if(e===t)return!0;if(n>dk||e==null||t==null)return!1;if(Array.isArray(e))return!Array.isArray(t)||e.length!==t.length?!1:e.every((e,r)=>fk(e,t[r],n+1));if(Array.isArray(t)||!SO(e)||!SO(t))return!1;let r=Object.keys(e),i=Object.keys(t);return r.length===i.length&&r.every(r=>Object.hasOwn(t,r)&&fk(e[r],t[r],n+1))},pk=(e,t)=>!CO(e)||!CO(t)?!1:fk(e,t,0);function mk(e){let t=e.metadata;if(!t||typeof t!=`object`)return;let n=t.custom;if(!n||typeof n!=`object`)return;let r=n.interactables;return Array.isArray(r)?r:void 0}function hk(e){return`update_${e.replace(/[^a-zA-Z0-9_-]/g,`_`)}`}var gk=e=>{if(!SO(e))return;let t=e.id;return typeof t==`string`||typeof t==`number`?t:void 0};function _k(e,t,n=[]){if(!SO(e)||!SO(t))return t;let r={...e,...t},[i,...a]=n;return i!==void 0&&Object.hasOwn(t,i)&&(r[i]=_k(e[i],t[i],a)),r}function vk(e,t,n,r){let i=Array.isArray(t.set)?[...t.set]:[...e];if(t.clear===!0&&(i=[]),Array.isArray(t.remove)&&t.remove.length>0){let e=new Set(t.remove);i=i.filter(t=>{let n=gk(t);return n===void 0?!e.has(t):!e.has(n)})}let a=t.update;if(Array.isArray(a)&&a.length>0){let e=new Map;for(let t of a){let n=gk(t);n!==void 0&&!Number.isNaN(n)&&!e.has(n)&&e.set(n,t)}let t=r?.[0]===`update`?{patch:a[Number(r[1])],rest:r.slice(2)}:void 0;i=i.map(n=>{let r=gk(n);if(r===void 0||!SO(n))return n;let i=e.get(r);return i?t&&i===t.patch?_k(n,i,t.rest):{...n,...i}:n})}if(Array.isArray(t.add)&&t.add.length>0){let e=n?t.add.map(e=>{if(!SO(e)||e.id!==void 0)return e;let t=n();return t===void 0?e:{...e,id:t}}):t.add;i=[...i,...e]}return i}function yk(e,t,n){if(!SO(e)||!SO(t))return t;let r=SO(n?.arrayBaseline)?n.arrayBaseline:e,i=n?.partialPath,a=Object.entries(e);for(let[o,s]of Object.entries(t)){let t=r[o],c=i?.[0]===o?i.slice(1):void 0;if(Array.isArray(t)&&SO(s)){let e=n?.idFactory&&(n.idKeyedFields===void 0||n.idKeyedFields.has(o))?()=>n.idFactory?.(o):void 0;a.push([o,vk(t,s,e,c)])}else c?a.push([o,_k(e[o],s,c)]):a.push([o,s])}return Object.fromEntries(a)}function bk(e,t){if(!SO(e)||!SO(t))return;for(let n of Object.keys(e))if(!Object.hasOwn(t,n))return;let n=[];for(let[r,i]of Object.entries(t))(!Object.hasOwn(e,r)||!pk(e[r],i))&&n.push([r,i]);let r=n.length;if(r!==0&&r!==Object.keys(t).length)return Object.fromEntries(n)}var xk=e=>{if(!e||typeof e!=`object`)return;let t=e;return t.type===`tool-call`?t:void 0},Sk=(e,t)=>{if(!e.args||typeof e.args!=`object`)return!1;let n=SO(e.result)?e.result:void 0;if(n?.success===!1)return!1;if(typeof n?.id==`string`)return n.id===t;let r=e.args.id;return r===t||r===void 0},Ck=e=>{let t=SO(e)?e.addedItemIds:void 0;if(!SO(t))return;let n=new Map;for(let[e,r]of Object.entries(t)){if(!Array.isArray(r))continue;let t=r.filter(e=>typeof e==`string`);t.length>0&&n.set(e,t)}if(n.size!==0)return e=>n.get(e)?.shift()},wk=new WeakMap;function Tk(e,t,n){let r=wk.get(e);r||(r=new Map,wk.set(e,r));let i=r.get(n);i||(i=new Map,r.set(n,i));let a=i.get(t);if(a)return a;let o=hk(n),s=[],c=()=>s[s.length-1];for(let r of e){if(r.role===`user`){let e=mk(r)?.find(e=>e.id===t);if(!e)continue;if(e.partial){let t=c();t&&s.push({state:yk(t.state,e.state),origin:`user-edit`})}else s.push({state:e.state,origin:`user-edit`});continue}if(r.role===`assistant`)for(let e of r.content??[]){let r=xk(e);if(r){if(r.toolCallId===t&&r.toolName===n)r.args&&typeof r.args==`object`&&s.push({state:r.args,origin:`create`,toolCallId:t});else if(r.toolName===o&&Sk(r,t)){let e=c();if(e){let{id:t,...n}=r.args,i=Ck(r.result);s.push({state:i?yk(e.state,n,{idFactory:i}):yk(e.state,n),origin:`update`,toolCallId:r.toolCallId})}}}}}return i.set(t,s),s}function Ek(e,t,n){let r=Tk(e,t,n),i=r[r.length-1];return i?{state:i.state}:void 0}function Dk(e,t){if(!e)return;let{interactables:n,...r}=e,i={...r};if(Array.isArray(n)){let e=[];for(let r of n){let n=Ek(t,r.id,r.name);if(!n){e.push({id:r.id,name:r.name,state:r.state});continue}if(pk(r.state,n.state))continue;let i=bk(n.state,r.state);e.push(i?{id:r.id,name:r.name,state:i,partial:!0}:{id:r.id,name:r.name,state:r.state})}e.length&&(i.interactables=e)}return Object.keys(i).length?i:void 0}var Ok=Symbol(`innerMessage`),kk=e=>e.type===`tool-call`&&e.result===void 0,Ak=e=>e.type===`tool-call`&&mE(e),jk=Symbol(`autoStatus`),Mk=Object.freeze(Object.assign({type:`running`},{[jk]:!0})),Nk=Object.freeze(Object.assign({type:`complete`,reason:`unknown`},{[jk]:!0})),Pk=Object.freeze(Object.assign({type:`incomplete`,reason:`cancelled`},{[jk]:!0})),Fk=Object.freeze(Object.assign({type:`requires-action`,reason:`tool-calls`},{[jk]:!0})),Ik=Object.freeze(Object.assign({type:`requires-action`,reason:`interrupt`},{[jk]:!0})),Lk=(e,t,n,r,i,a,o)=>e&&i!=null?Object.assign({type:`incomplete`,reason:`error`,error:i},{[jk]:!0}):e&&t?Mk:n?Ik:o&&!a?Mk:r?Fk:a?Pk:Nk,Rk=e=>Lk(!1,!1,typeof e!=`string`&&e.some(Ak),typeof e!=`string`&&e.some(kk)),zk=e=>{let t=$(6),{runtime:n,children:r}=e,i=lT(),a;t[0]===n?a=t[1]:(a=OC({threadListItem:iO({runtime:n})}),t[0]=n,t[1]=a);let o=a,s;return t[2]!==i||t[3]!==r||t[4]!==o?(s=(0,q.jsx)(fO,{extends:i,config:o,children:r}),t[2]=i,t[3]=r,t[4]=o,t[5]=s):s=t[5],s},Bk=[`critical`,`warning`,`info`],Vk=[`inline`,`toast`,`silent`,`dev-only`],Hk=e=>{if(typeof e!=`object`||!e)return!1;let t=e;return!(typeof t.code!=`string`||typeof t.message!=`string`||`severity`in t&&t.severity!==void 0&&(typeof t.severity!=`string`||!Bk.includes(t.severity))||`display`in t&&t.display!==void 0&&(typeof t.display!=`string`||!Vk.includes(t.display)))},Uk=Symbol.for(`assistant-ui.message-not-sent`),Wk=class extends Error{[Uk]=!0;constructor(e=`The message was not sent.`){super(e),this.name=`MessageNotSentError`}},Gk=e=>typeof e==`object`&&!!e&&Uk in e,Kk=e=>{if(Hk(e))return e;if(e instanceof Error)return{code:`unknown`,message:e.message};if(typeof e==`string`)return{code:`unknown`,message:e};try{return{code:`unknown`,message:`[${typeof e}] ${String(e)}`}}catch{return{code:`unknown`,message:`[${typeof e}]`}}},qk=(e,t)=>{Promise.resolve(t).catch(t=>{Gk(t)||console.error(`[assistant-ui] ${e} failed`,t)})},Jk=class{get path(){return this._core.path}_core;constructor(e){this._core=e,this.__internal_bindMethods()}__internal_bindMethods(){this.getState=this.getState.bind(this),this.remove=this.remove.bind(this),this.subscribe=this.subscribe.bind(this)}getState(){return this._core.getState()}subscribe(e){return this._core.subscribe(e)}},Yk=class extends Jk{_composerApi;constructor(e,t){super(e),this._composerApi=t}remove(){let e=this._composerApi.getState();if(!e)throw Error(`Composer is not available`);return e.removeAttachment(this.getState().id)}},Xk=class extends Yk{get source(){return`thread-composer`}},Zk=class extends Yk{get source(){return`edit-composer`}},Qk=class extends Jk{get source(){return`message`}remove(){throw Error(`Message attachments cannot be removed`)}},$k=Object.freeze([]),eA=Object.freeze({}),tA=e=>Object.freeze({type:`thread`,isEditing:e?.isEditing??!1,canCancel:e?.canCancel??!1,canSend:e?.canSend??!1,isEmpty:e?.isEmpty??!0,attachments:e?.attachments??$k,text:e?.text??``,role:e?.role??`user`,runConfig:e?.runConfig??eA,attachmentAccept:e?.attachmentAccept??``,dictation:e?.dictation,quote:e?.quote,queue:e?.queue??$k,submission:e?.submission,inTransit:e?.inTransit??$k,value:e?.text??``}),nA=e=>Object.freeze({type:`edit`,isEditing:e?.isEditing??!1,canCancel:e?.canCancel??!1,canSend:e?.canSend??!1,isEmpty:e?.isEmpty??!0,text:e?.text??``,role:e?.role??`user`,attachments:e?.attachments??$k,runConfig:e?.runConfig??eA,attachmentAccept:e?.attachmentAccept??``,dictation:e?.dictation,quote:e?.quote,queue:e?.queue??$k,submission:e?.submission,inTransit:e?.inTransit??$k,parentId:e?.parentId??null,sourceId:e?.sourceId??null,value:e?.text??``}),rA=class{get path(){return this._core.path}_core;constructor(e){this._core=e}__internal_bindMethods(){this.setText=this.setText.bind(this),this.setRunConfig=this.setRunConfig.bind(this),this.getState=this.getState.bind(this),this.subscribe=this.subscribe.bind(this),this.addAttachment=this.addAttachment.bind(this),this.reset=this.reset.bind(this),this.clearAttachments=this.clearAttachments.bind(this),this.send=this.send.bind(this),this.cancel=this.cancel.bind(this),this.steerQueueItem=this.steerQueueItem.bind(this),this.moveQueueItem=this.moveQueueItem.bind(this),this.removeQueueItem=this.removeQueueItem.bind(this),this.setRole=this.setRole.bind(this),this.getAttachmentByIndex=this.getAttachmentByIndex.bind(this),this.startDictation=this.startDictation.bind(this),this.stopDictation=this.stopDictation.bind(this),this.setQuote=this.setQuote.bind(this),this.unstable_on=this.unstable_on.bind(this)}setText(e){let t=this._core.getState();if(!t)throw Error(`Composer is not available`);t.setText(e)}setRunConfig(e){let t=this._core.getState();if(!t)throw Error(`Composer is not available`);t.setRunConfig(e)}addAttachment(e){let t=this._core.getState();if(!t)throw Error(`Composer is not available`);return t.addAttachment(e)}reset(){let e=this._core.getState();if(!e)throw Error(`Composer is not available`);return e.reset()}clearAttachments(){let e=this._core.getState();if(!e)throw Error(`Composer is not available`);return e.clearAttachments()}send(e){let t=this._core.getState();if(!t)throw Error(`Composer is not available`);t.send(e)}cancel(){let e=this._core.getState();if(!e)throw Error(`Composer is not available`);e.cancel()}steerQueueItem(e){this.moveQueueItem(e,{lane:`steer`,insertAfter:null})}moveQueueItem(e,t){let n=this._core.getState();if(!n)throw Error(`Composer is not available`);n.moveQueueItem(e,t)}removeQueueItem(e){let t=this._core.getState();if(!t)throw Error(`Composer is not available`);t.removeQueueItem(e)}setRole(e){let t=this._core.getState();if(!t)throw Error(`Composer is not available`);t.setRole(e)}startDictation(){let e=this._core.getState();if(!e)throw Error(`Composer is not available`);e.startDictation()}stopDictation(){let e=this._core.getState();if(!e)throw Error(`Composer is not available`);e.stopDictation()}setQuote(e){let t=this._core.getState();if(!t)throw Error(`Composer is not available`);t.setQuote(e)}subscribe(e){return this._core.subscribe(e)}_eventSubscriptionSubjects=new Map;unstable_on(e,t){let n=this._eventSubscriptionSubjects.get(e);return n||(n=new jT({event:e,binding:this._core}),this._eventSubscriptionSubjects.set(e,n)),n.subscribe(t)}},iA=class extends rA{get path(){return this._core.path}get type(){return`thread`}_getState;constructor(e){let t=new kT({path:e.path,getState:()=>tA(e.getState()),subscribe:t=>e.subscribe(t)});super({path:e.path,getState:()=>e.getState(),subscribe:e=>t.subscribe(e)}),this._getState=t.getState.bind(t),this.__internal_bindMethods()}getState(){return this._getState()}getAttachmentByIndex(e){return new Xk(new OT({path:{...this.path,attachmentSource:`thread-composer`,attachmentSelector:{type:`index`,index:e},ref:`${this.path.ref}.attachments[${e}]`},getState:()=>{let t=this.getState().attachments[e];return t?{...t,source:`thread-composer`}:bT},subscribe:e=>this._core.subscribe(e)}),this._core)}},aA=class extends rA{get path(){return this._core.path}get type(){return`edit`}_getState;_beginEdit;constructor(e,t){let n=new kT({path:e.path,getState:()=>nA(e.getState()),subscribe:t=>e.subscribe(t)});super({path:e.path,getState:()=>e.getState(),subscribe:e=>n.subscribe(e)}),this._beginEdit=t,this._getState=n.getState.bind(n),this.__internal_bindMethods()}__internal_bindMethods(){super.__internal_bindMethods(),this.beginEdit=this.beginEdit.bind(this)}getState(){return this._getState()}beginEdit(){this._beginEdit()}getAttachmentByIndex(e){return new Zk(new OT({path:{...this.path,attachmentSource:`edit-composer`,attachmentSelector:{type:`index`,index:e},ref:`${this.path.ref}.attachments[${e}]`},getState:()=>{let t=this.getState().attachments[e];return t?{...t,source:`edit-composer`}:bT},subscribe:e=>this._core.subscribe(e)}),this._core)}},oA=e=>e.display===`text`||e.allowFreeform===!0,sA={"allow-once":!0,"allow-always":!0,"reject-once":!1,"reject-always":!1},cA=(e,t)=>{let n=t.text;if(n!==void 0&&!oA(e))throw Error(`Tool approval "${e.id}" does not accept a free-form answer; the request must declare display "text" or allowFreeform`);let r,i;if(`optionId`in t){let n=e.options?.find(e=>e.id===t.optionId);if(!n)throw Error(`Tool approval has no option with id "${t.optionId}"`);if(`approved`in t)r=t.approved;else{if(!Object.hasOwn(sA,n.kind))throw Error(`Tool approval option "${n.id}" has a custom kind "${n.kind}"; respond with an explicit approved value instead`);r=sA[n.kind]}i=n.id}else if(`approved`in t)r=t.approved;else{if(e.display!==`text`&&e.display!==`select`)throw Error(`Tool approval "${e.id}" is a decision, not a question; respond with an explicit approved value, optionally alongside the answer`);r=!0}return{approvalId:e.id,approved:r,...i!==void 0&&{optionId:i},...n!==void 0&&{text:n},...t.reason!=null&&{reason:t.reason}}},lA=class{get path(){return this.contentBinding.path}contentBinding;messageApi;threadApi;constructor(e,t,n){this.contentBinding=e,this.messageApi=t,this.threadApi=n,this.__internal_bindMethods()}__internal_bindMethods(){this.addToolResult=this.addToolResult.bind(this),this.resumeToolCall=this.resumeToolCall.bind(this),this.respondToToolApproval=this.respondToToolApproval.bind(this),this.unstable_recordInteraction=this.unstable_recordInteraction.bind(this),this.getState=this.getState.bind(this),this.subscribe=this.subscribe.bind(this)}getState(){return this.contentBinding.getState()}addToolResult(e){let t=this.contentBinding.getState();if(!t)throw Error(`Message part is not available`);if(t.type!==`tool-call`)throw Error(`Tried to add tool result to non-tool message part`);if(!this.messageApi)throw Error(`Message API is not available. This is likely a bug in assistant-ui.`);if(!this.threadApi)throw Error(`Thread API is not available`);let n=this.messageApi.getState();if(!n)throw Error(`Message is not available`);let r=t.toolName,i=t.toolCallId,a=wD.toResponse(e);this.threadApi.getState().addToolResult({messageId:n.id,toolName:r,toolCallId:i,result:a.result,isError:a.isError,...a.artifact!==void 0&&{artifact:a.artifact},...a.modelContent!==void 0&&{modelContent:a.modelContent}})}resumeToolCall(e){let t=this.contentBinding.getState();if(!t)throw Error(`Message part is not available`);if(t.type!==`tool-call`)throw Error(`Tried to resume tool call on non-tool message part`);if(!this.threadApi)throw Error(`Thread API is not available`);let n=t.toolCallId;this.threadApi.getState().resumeToolCall({toolCallId:n,payload:e}),this.unstable_recordInteraction({type:`human-response`,payload:e}).catch(()=>{})}respondToToolApproval(e){let t=this.contentBinding.getState();if(!t)throw Error(`Message part is not available`);if(t.type!==`tool-call`)throw Error(`Tried to respond to tool approval on non-tool message part`);if(!t.approval||t.approval.approved!==void 0||t.approval.resolution!==void 0)throw Error(`Tool call has no pending approval`);if(!this.threadApi)throw Error(`Thread API is not available`);return this.threadApi.getState().respondToToolApproval(cA(t.approval,e))}async unstable_recordInteraction(e){let t=this.contentBinding.getState();if(!t)throw Error(`Message part is not available`);if(t.type!==`tool-call`)throw Error(`Tried to record interaction on non-tool message part`);if(!this.messageApi)throw Error(`Message API is not available. This is likely a bug in assistant-ui.`);if(!this.threadApi)throw Error(`Thread API is not available`);let n=this.messageApi.getState();if(!n)throw Error(`Message is not available`);let r=this.threadApi.getState();if(!r.unstable_recordToolInteraction)throw Error(`Runtime does not support recording tool interactions.`);await r.unstable_recordToolInteraction({messageId:n.id,toolCallId:t.toolCallId,interaction:eD(e)})}subscribe(e){return this.contentBinding.subscribe(e)}},uA=(e,t)=>{let n=e.content[t];if(!n)return bT;let r=hE(e,t,n);return Object.freeze({...n,[Ok]:n[Ok],status:r})},dA=class{get path(){return this._core.path}_core;_threadBinding;constructor(e,t){this._core=e,this._threadBinding=t,this.composer=new aA(new AT({path:{...this.path,ref:`${this.path.ref}.composer`,composerSource:`edit`},getState:this._getEditComposerRuntimeCore,subscribe:e=>this._threadBinding.subscribe(e)}),()=>this._threadBinding.getState().beginEdit(this._core.getState().id)),this.__internal_bindMethods()}__internal_bindMethods(){this.reload=this.reload.bind(this),this.delete=this.delete.bind(this),this.getState=this.getState.bind(this),this.subscribe=this.subscribe.bind(this),this.getMessagePartByIndex=this.getMessagePartByIndex.bind(this),this.getMessagePartByToolCallId=this.getMessagePartByToolCallId.bind(this),this.getAttachmentByIndex=this.getAttachmentByIndex.bind(this),this.unstable_getCopyText=this.unstable_getCopyText.bind(this),this.speak=this.speak.bind(this),this.stopSpeaking=this.stopSpeaking.bind(this),this.submitFeedback=this.submitFeedback.bind(this),this.switchToBranch=this.switchToBranch.bind(this)}composer;_getEditComposerRuntimeCore=()=>this._threadBinding.getState().getEditComposer(this._core.getState().id);getState(){return this._core.getState()}delete(){let e=this._core.getState();return this._threadBinding.getState().deleteMessage(e.id)}reload(e={}){let t=this._getEditComposerRuntimeCore(),n=t??this._threadBinding.getState().composer,r=t??n,{runConfig:i=r.runConfig}=e,a=this._core.getState();if(a.role!==`assistant`)throw Error(`Can only reload assistant messages`);qk(`Message reload`,this._threadBinding.getState().startRun({parentId:a.parentId,sourceId:a.id,runConfig:i}))}speak(){let e=this._core.getState();return this._threadBinding.getState().speak(e.id)}stopSpeaking(){let e=this._core.getState();if(this._threadBinding.getState().speech?.messageId===e.id)this._threadBinding.getState().stopSpeaking();else throw Error(`Message is not being spoken`)}submitFeedback({type:e,comment:t}){let n=this._core.getState();this._threadBinding.getState().submitFeedback({messageId:n.id,type:e,...t===void 0?void 0:{comment:t}})}switchToBranch({position:e,branchId:t}){let n=this._core.getState();if(t&&e)throw Error(`May not specify both branchId and position`);if(!t&&!e)throw Error(`Must specify either branchId or position`);let r=this._threadBinding.getState().getBranches(n.id),i=t;if(e===`previous`?i=r[n.branchNumber-2]:e===`next`&&(i=r[n.branchNumber]),!i)throw Error(`Branch not found`);this._threadBinding.getState().switchToBranch(i)}unstable_getCopyText(){return lE(this.getState())}subscribe(e){return this._core.subscribe(e)}getMessagePartByIndex(e){if(e<0)throw Error(`Message part index must be >= 0`);return new lA(new OT({path:{...this.path,ref:`${this.path.ref}.content[${e}]`,messagePartSelector:{type:`index`,index:e}},getState:()=>uA(this.getState(),e),subscribe:e=>this._core.subscribe(e)}),this._core,this._threadBinding)}getMessagePartByToolCallId(e){return new lA(new OT({path:{...this.path,ref:`${this.path.ref}.content[toolCallId=${JSON.stringify(e)}]`,messagePartSelector:{type:`toolCallId`,toolCallId:e}},getState:()=>{let t=this._core.getState(),n=t.content.findIndex(t=>t.type===`tool-call`&&t.toolCallId===e);return n===-1?bT:uA(t,n)},subscribe:e=>this._core.subscribe(e)}),this._core,this._threadBinding)}getAttachmentByIndex(e){return new Qk(new OT({path:{...this.path,ref:`${this.path.ref}.attachments[${e}]`,attachmentSource:`message`,attachmentSelector:{type:`index`,index:e}},getState:()=>{let t=this.getState().attachments?.[e];return t?{...t,source:`message`}:bT},subscribe:e=>this._core.subscribe(e)}))}},fA=e=>({parentId:e.parentId??null,sourceId:e.sourceId??null,runConfig:e.runConfig??{},...e.stream?{stream:e.stream}:{}}),pA=e=>({parentId:e.parentId??null,sourceId:e.sourceId??null,runConfig:e.runConfig??{}}),mA=(e,t)=>typeof t==`string`?{createdAt:new Date,parentId:e.at(-1)?.id??null,sourceId:null,runConfig:{},role:`user`,content:[{type:`text`,text:t}],attachments:[],metadata:{custom:{}}}:{createdAt:t.createdAt??new Date,parentId:t.parentId===void 0?e.at(-1)?.id??null:t.parentId,sourceId:t.sourceId??null,role:t.role??`user`,content:t.content,attachments:t.attachments??[],metadata:t.metadata??{custom:{}},runConfig:t.runConfig??{},startRun:t.startRun},hA=e=>{if(e.isRunning!==void 0)return e.isRunning;let t=e.messages.at(-1);return t?.role===`assistant`&&t.status.type===`running`},gA=(e,t)=>Object.freeze({threadId:t.id,metadata:t,capabilities:e.capabilities,isDisabled:e.isDisabled,isLoading:e.isLoading,isRunning:hA(e),messages:e.messages,state:e.state,suggestions:e.suggestions,extras:e.extras,speech:e.speech,voice:e.voice}),_A=class{get path(){return this._threadBinding.path}get __internal_threadBinding(){return this._threadBinding}_threadBinding;_stateBinding;constructor(e,t){let n=new OT({path:e.path,getState:()=>gA(e.getState(),t.getState()),subscribe:n=>{let r=e.subscribe(n),i=t.subscribe(n);return()=>ST([r,i])}});this._stateBinding=n,this._threadBinding={path:e.path,getState:()=>e.getState(),getStateState:()=>n.getState(),outerSubscribe:t=>e.outerSubscribe(t),subscribe:t=>e.subscribe(t)},this.composer=new iA(new AT({path:{...this.path,ref:`${this.path.ref}.composer`,composerSource:`thread`},getState:()=>this._threadBinding.getState().composer,subscribe:e=>this._threadBinding.subscribe(e)})),this.__internal_bindMethods()}__internal_bindMethods(){this.append=this.append.bind(this),this.deleteMessage=this.deleteMessage.bind(this),this.resumeRun=this.resumeRun.bind(this),this.importExternalState=this.importExternalState.bind(this),this.exportExternalState=this.exportExternalState.bind(this),this.startRun=this.startRun.bind(this),this.cancelRun=this.cancelRun.bind(this),this.unstable_notifySessionReset=this.unstable_notifySessionReset.bind(this),this.stopSpeaking=this.stopSpeaking.bind(this),this.connectVoice=this.connectVoice.bind(this),this.disconnectVoice=this.disconnectVoice.bind(this),this.muteVoice=this.muteVoice.bind(this),this.unmuteVoice=this.unmuteVoice.bind(this),this.getVoiceVolume=this.getVoiceVolume.bind(this),this.subscribeVoiceVolume=this.subscribeVoiceVolume.bind(this),this.export=this.export.bind(this),this.import=this.import.bind(this),this.reset=this.reset.bind(this),this.getMessageByIndex=this.getMessageByIndex.bind(this),this.getMessageById=this.getMessageById.bind(this),this.subscribe=this.subscribe.bind(this),this.unstable_on=this.unstable_on.bind(this),this.getModelContext=this.getModelContext.bind(this),this.getState=this.getState.bind(this)}composer;getState(){return this._threadBinding.getStateState()}append(e){qk(`Message append`,this._threadBinding.getState().append(mA(this._threadBinding.getState().messages,e)))}deleteMessage(e){return this._threadBinding.getState().deleteMessage(e)}subscribe(e){return this._stateBinding.subscribe(e)}getModelContext(){return this._threadBinding.getState().getModelContext()}startRun(e){return this._threadBinding.getState().startRun(pA(e))}resumeRun(e){return this._threadBinding.getState().resumeRun(fA(e))}exportExternalState(){return this._threadBinding.getState().exportExternalState()}importExternalState(e){this._threadBinding.getState().importExternalState(e)}cancelRun(){this._threadBinding.getState().cancelRun()}unstable_notifySessionReset(){this._threadBinding.getState().unstable_notifySessionReset()}stopSpeaking(){return this._threadBinding.getState().stopSpeaking()}connectVoice(){this._threadBinding.getState().connectVoice()}disconnectVoice(){this._threadBinding.getState().disconnectVoice()}getVoiceVolume(){return this._threadBinding.getState().getVoiceVolume()}subscribeVoiceVolume(e){return this._threadBinding.getState().subscribeVoiceVolume(e)}muteVoice(){this._threadBinding.getState().muteVoice()}unmuteVoice(){this._threadBinding.getState().unmuteVoice()}export(){return this._threadBinding.getState().export()}import(e){this._threadBinding.getState().import(e)}reset(e){this._threadBinding.getState().reset(e)}getMessageByIndex(e){if(e<0)throw Error(`Message index must be >= 0`);return this._getMessageRuntime({...this.path,ref:`${this.path.ref}.messages[${e}]`,messageSelector:{type:`index`,index:e}},()=>{let t=this._threadBinding.getState().messages,n=t[e];if(n)return{message:n,parentId:t[e-1]?.id??null,index:e}})}getMessageById(e){return this._getMessageRuntime({...this.path,ref:`${this.path.ref}.messages[messageId=${JSON.stringify(e)}]`,messageSelector:{type:`messageId`,messageId:e}},()=>this._threadBinding.getState().getMessageById(e))}_getMessageRuntime(e,t){return new dA(new OT({path:e,getState:()=>{let{message:e,parentId:n,index:r}=t()??{},{messages:i,speech:a}=this._threadBinding.getState();if(!e||n===void 0||r===void 0)return bT;let o=this._threadBinding.getState().getBranches(e.id);return{...e,[Ok]:e[Ok],index:r,isLast:i.at(-1)?.id===e.id,parentId:n,branchNumber:o.indexOf(e.id)+1,branchCount:o.length,speech:a?.messageId===e.id?a:void 0}},subscribe:e=>this._threadBinding.subscribe(e)}),this._threadBinding)}_eventSubscriptionSubjects=new Map;unstable_on(e,t){let n=this._eventSubscriptionSubjects.get(e);return n||(n=new jT({event:e,binding:this._threadBinding,notifyOnRebind:e===`modelContextUpdate`}),this._eventSubscriptionSubjects.set(e,n)),n.subscribe(t)}},vA=(e,t)=>({attachments:[],attachmentAccept:`*`,async addAttachment(){throw e},async removeAttachment(){throw e},isEditing:t,canCancel:!1,canSend:!1,isEmpty:!0,text:``,setText(){throw e},role:`user`,setRole(){throw e},runConfig:{},setRunConfig(){throw e},async reset(){},async clearAttachments(){},send(){throw e},cancel(){},queue:[],moveQueueItem(){},removeQueueItem(){},dictation:void 0,startDictation(){throw e},stopDictation(){},quote:void 0,setQuote(){throw e},subscribe(){return()=>{}},unstable_on(){return()=>{}}}),yA=class extends TT{switchToBranch(){throw this.error}append(){throw this.error}deleteMessage(){throw this.error}startRun(){throw this.error}resumeRun(){throw this.error}cancelRun(){throw this.error}unstable_notifySessionReset(){throw this.error}addToolResult(){throw this.error}resumeToolCall(){throw this.error}respondToToolApproval(){throw this.error}async unstable_recordToolInteraction(e){throw this.error}speak(){throw this.error}stopSpeaking(){throw this.error}connectVoice(){throw this.error}disconnectVoice(){throw this.error}muteVoice(){throw this.error}unmuteVoice(){throw this.error}submitFeedback(){throw this.error}exportExternalState(){throw this.error}importExternalState(){throw this.error}beginEdit(){throw this.error}import(){throw this.error}reset(){throw this.error}getModelContext(){return{}}getEditComposer(){}getVoiceVolume=()=>0;subscribeVoiceVolume=()=>()=>{};speech=void 0;voice=void 0;capabilities={switchToBranch:!1,switchBranchDuringRun:!1,edit:!1,delete:!1,reload:!1,refetchThread:!1,cancel:!1,unstable_copy:!1,speech:!1,dictation:!1,voice:!1,attachments:!1,feedback:!1,queue:!1,answerToolCall:!1};isDisabled=!1;isSendDisabled=!1;state=null;suggestions=[];extras=void 0;unstable_on(){return()=>{}}},bA=new WeakMap,xA=e=>{let t=bA.get(e);return t||(t=new AbortController,bA.set(e,t)),t.signal},SA=new WeakMap,CA=e=>{let t=SA.get(e);return t||(t=new AbortController,SA.set(e,t)),t},wA=e=>CA(e).signal,TA=e=>{let t=bA.get(e);t?.signal.aborted||(bA.delete(e),t?.abort())},EA=e=>{if(e.voice)try{e.disconnectVoice()}catch(e){console.error(`[assistant-ui] Voice cleanup threw while discarding a thread runtime`,e)}},DA=e=>{EA(e),TA(e)},OA=e=>{let t=bA.get(e)??new AbortController;bA.set(e,t),t.abort(),CA(e).abort(),EA(e)},kA=class{get path(){return this._core.path}_core;_threadListBinding;constructor(e,t){this._core=e,this._threadListBinding=t,this.__internal_bindMethods()}__internal_bindMethods(){this.switchTo=this.switchTo.bind(this),this.rename=this.rename.bind(this),this.updateCustom=this.updateCustom.bind(this),this.archive=this.archive.bind(this),this.unarchive=this.unarchive.bind(this),this.delete=this.delete.bind(this),this.initialize=this.initialize.bind(this),this.generateTitle=this.generateTitle.bind(this),this.subscribe=this.subscribe.bind(this),this.unstable_on=this.unstable_on.bind(this),this.getState=this.getState.bind(this),this.detach=this.detach.bind(this)}getState(){return this._core.getState()}switchTo(e){let t=this._core.getState();return this._threadListBinding.switchToThread(t.id,e)}rename(e){let t=this._core.getState();return this._threadListBinding.rename(t.id,e)}updateCustom(e){let t=this._core.getState();if(!this._threadListBinding.updateCustom)throw Error(`Thread list runtime does not support updating custom metadata`);return this._threadListBinding.updateCustom(t.id,e)}archive(){let e=this._core.getState();return this._threadListBinding.archive(e.id)}unarchive(){let e=this._core.getState();return this._threadListBinding.unarchive(e.id)}delete(){let e=this._core.getState();return this._threadListBinding.delete(e.id)}initialize(){let e=this._core.getState();return this._threadListBinding.initialize(e.id)}generateTitle(e){let t=this._core.getState();return this._threadListBinding.generateTitle(t.id,e)}unstable_on(e,t){let n=this._core.getState().isMain,r=this._core.getState().id;return this.subscribe(()=>{let i=this._core.getState(),a=i.isMain,o=i.id;(n!==a||r!==o)&&(n=a,r=o,!(e===`switchedTo`&&!a)&&(e===`switchedAway`&&a||DC([t],{},`Thread list item "${e}"`)))})}subscribe(e){return this._core.subscribe(e)}detach(){let e=this._core.getState();this._threadListBinding.detach(e.id)}__internal_getRuntime(){return this}},AA=Promise.resolve(),jA=()=>{},MA=e=>({mainThreadId:e.mainThreadId,newThreadId:e.newThreadId,threadIds:e.threadIds,archivedThreadIds:e.archivedThreadIds,isLoading:e.isLoading,loadError:e.loadError,isLoadingMore:e.isLoadingMore??!1,hasMore:e.hasMore??!1,threadItems:e.threadItems}),NA=(e,t)=>{if(t===void 0)return bT;let n=e.getItemById(t);return n?{id:n.id,remoteId:n.remoteId,externalId:n.externalId,title:n.title,status:n.status,lastMessageAt:n.lastMessageAt,custom:n.custom,isMain:n.id===e.mainThreadId,isRunning:e.unstable_isThreadRunning?.(n.id)??!1}:bT},PA=class{_getState;_stateBinding;_core;_runtimeFactory;constructor(e,t=_A){this._core=e,this._runtimeFactory=t;let n=new kT({path:{},getState:()=>MA(e),subscribe:t=>e.subscribe(t)});this._getState=n.getState.bind(n),this._stateBinding=n,this._mainThreadListItemRuntime=new kA(new OT({path:{ref:`threadItems[main]`,threadSelector:{type:`main`}},getState:()=>NA(this._core,this._core.mainThreadId),subscribe:e=>this._core.subscribe(e)}),this._core),this.main=new t(new AT({path:{ref:`threads.main`,threadSelector:{type:`main`}},getState:()=>e.getMainThreadRuntimeCore(),subscribe:t=>e.subscribe(t)}),this._mainThreadListItemRuntime),this.__internal_bindMethods()}__internal_bindMethods(){this.switchToThread=this.switchToThread.bind(this),this.switchToNewThread=this.switchToNewThread.bind(this),this.unstable_subscribeThreadEvents=this.unstable_subscribeThreadEvents.bind(this),this.getLoadThreadsPromise=this.getLoadThreadsPromise.bind(this),this.reload=this.reload.bind(this),this.reloadMainThread=this.reloadMainThread.bind(this),this.loadMore=this.loadMore.bind(this),this.getState=this.getState.bind(this),this.subscribe=this.subscribe.bind(this),this.getById=this.getById.bind(this),this.getItemById=this.getItemById.bind(this),this.getItemByIndex=this.getItemByIndex.bind(this),this.getArchivedItemByIndex=this.getArchivedItemByIndex.bind(this)}switchToThread(e,t){return this._core.switchToThread(e,t)}switchToNewThread(){return this._core.switchToNewThread()}unstable_subscribeThreadEvents(e){return this._core.unstable_subscribeThreadEvents?.(e)??jA}getLoadThreadsPromise(){return this._core.getLoadThreadsPromise()}reload(){return this._core.reload?.()??AA}reloadMainThread(){return this._core.reloadMainThread?.()??AA}loadMore(){return this._core.loadMore?.()??AA}getState(){return this._getState()}subscribe(e){return this._stateBinding.subscribe(e)}_mainThreadListItemRuntime;main;get mainItem(){return this._mainThreadListItemRuntime}_createItemStateBinding(e){return new OT({path:{ref:`threadItems[threadId=${e}]`,threadSelector:{type:`threadId`,threadId:e}},getState:()=>NA(this._core,e),subscribe:e=>this._core.subscribe(e)})}getById(e){return new this._runtimeFactory(new AT({path:{ref:`threads[threadId=${JSON.stringify(e)}]`,threadSelector:{type:`threadId`,threadId:e}},getState:()=>this._core.getThreadRuntimeCore(e),subscribe:e=>this._core.subscribe(e)}),this._createItemStateBinding(e))}getItemByIndex(e){return new kA(new OT({path:{ref:`threadItems[${e}]`,threadSelector:{type:`index`,index:e}},getState:()=>NA(this._core,this._core.threadIds[e]),subscribe:e=>this._core.subscribe(e)}),this._core)}getArchivedItemByIndex(e){return new kA(new OT({path:{ref:`archivedThreadItems[${e}]`,threadSelector:{type:`archiveIndex`,index:e}},getState:()=>NA(this._core,this._core.archivedThreadIds[e]),subscribe:e=>this._core.subscribe(e)}),this._core)}getItemById(e){return new kA(this._createItemStateBinding(e),this._core)}},FA=class{threads;_thread;_core;constructor(e){this._core=e,this.threads=new PA(e.threads),this._thread=this.threads.main,this.__internal_bindMethods()}__internal_bindMethods(){this.registerModelContextProvider=this.registerModelContextProvider.bind(this)}get thread(){return this._thread}registerModelContextProvider(e){return this._core.registerModelContextProvider(e)}},IA=class{_contextProvider=new PT;registerModelContextProvider(e){return this._contextProvider.registerModelContextProvider(e)}getModelContextProvider(){return this._contextProvider}},LA={fromArray:e=>{let t=e.map(e=>FD(e,GE(),Rk(e.content)));return{messages:t.map((e,n)=>({parentId:n>0?t[n-1].id:null,message:e}))}},fromBranchableArray:(e,t)=>({...t?.headId===void 0?void 0:{headId:t.headId},messages:e.map(({message:e,parentId:t})=>{if(!e.id)throw Error(`ExportedMessageRepository.fromBranchableArray: Each message must have an 'id' field set.`);return{parentId:t,message:FD(e,e.id,Rk(e.content))}})})},RA=e=>{let t=e;for(;t.next;)t=t.next;return`current`in t?t:null},zA=(e,t)=>{let n=new Set(e.map(e=>e.message.id)),r=new Set,i=new Map,a=[];for(let o of e){let{parentId:e}=o;if(e!==null&&n.has(e)&&!r.has(e)&&!t(e)){let t=i.get(e);t?t.push(o):i.set(e,[o]);continue}for(let e=a.push(o)-1;e<a.length;e++){let{id:t}=a[e].message;if(r.has(t))continue;r.add(t);let n=i.get(t);n&&(i.delete(t),a.push(...n))}}for(let e of i.values())a.push(...e);return a},BA=e=>{let t=new Set(e.messages.map(e=>e.message.id)),n=new Map,r=[];for(let{message:i,parentId:a}of e.messages){if(a===null)continue;let e=n.get(a);e?e.push(i.id):n.set(a,[i.id]),t.has(a)||r.push(i.id)}let i=new Set;for(let e=0;e<r.length;e++){let t=r[e];if(!i.has(t)){i.add(t);for(let e of n.get(t)??[])r.push(e)}}let a=e.headId!=null&&!t.has(e.headId);if(i.size===0&&!a)return{repository:e,droppedIds:[]};let o=[],s=new Set,c=e.messages.filter(({message:e,parentId:t})=>i.has(e.id)?(o.push(e.id),!1):(t!==null&&s.add(t),!0)),{headId:l}=e;if(l!=null&&(a||i.has(l))){l=null;for(let{message:e}of c)s.has(e.id)||(l=e.id)}return{repository:{...e,messages:c,...l!==void 0&&{headId:l}},droppedIds:o}},VA=class{_value=null;func;constructor(e){this.func=e}get value(){return this._value===null&&(this._value=this.func()),this._value}dirty(){this._value=null}},HA=class{messages=new Map;head=null;root={children:[],next:null};updateLevels(e,t){let n=[{message:e,level:t}];for(;n.length>0;){let e=n.pop();e.message.level=e.level;for(let t of e.message.children){let r=this.messages.get(t);r&&n.push({message:r,level:e.level+1})}}}selectPathTo(e){for(let t=e;t;t=t.prev)(t.prev??this.root).next=t}performOp(e,t,n){let r=t.prev??this.root,i=e??this.root;if(n!==`relink`||r!==i){if(n===`relink`){for(let n=e;n;n=n.prev)if(n.current.id===t.current.id)throw Error(`MessageRepository(performOp/relink): A message with the same id already exists in the parent tree. This error occurs if the same message id is found multiple times. This is likely an internal bug in assistant-ui.`)}if(n!==`link`&&(r.children=r.children.filter(e=>e!==t.current.id),r.next===t)){let e=r.children.at(-1),t=e?this.messages.get(e):null;if(t===void 0)throw Error(`MessageRepository(performOp/cut): Fallback sibling message not found. This is likely an internal bug in assistant-ui.`);r.next=t}if(n!==`cut`){i.children=[...i.children,t.current.id],t.prev=e,RA(t)===this.head?this.selectPathTo(t):i.next===null&&(i.next=t,this.head===i&&(this.head=RA(t)));let n=e?e.level+1:0;this.updateLevels(t,n)}}}_messages=new VA(()=>{let e=Array((this.head?.level??-1)+1);for(let t=this.head;t;t=t.prev)e[t.level]=t.current;return e});get headId(){return this.head?.current.id??null}get canonicalHeadId(){let e=this.head;for(;e?.current.metadata?.isOptimistic;)e=e.prev;return e?.current.id??null}getMessages(e){if(e===void 0||e===this.head?.current.id)return this._messages.value;let t=this.messages.get(e);if(!t)throw Error(`MessageRepository(getMessages): Head message not found. This is likely an internal bug in assistant-ui.`);let n=Array(t.level+1);for(let e=t;e;e=e.prev)n[e.level]=e.current;return n}addOrUpdateMessage(e,t){let n=this.messages.get(t.id),r=e?this.messages.get(e):null;if(r===void 0)throw Error(`MessageRepository(addOrUpdateMessage): Parent message not found. This is likely an internal bug in assistant-ui.`);if(n){this.performOp(r,n,`relink`),n.current=t,this._messages.dirty();return}let i={prev:r,current:t,next:null,children:[],level:r?r.level+1:0};this.messages.set(t.id,i),this.performOp(r,i,`link`),this.head===r&&(this.head=i),this._messages.dirty()}getMessage(e){let t=this.messages.get(e);if(!t)throw Error(`MessageRepository(updateMessage): Message not found. This is likely an internal bug in assistant-ui.`);return{parentId:t.prev?.current.id??null,message:t.current,index:t.level}}deleteMessage(e,t){let n=this.messages.get(e);if(!n)throw Error(`MessageRepository(deleteMessage): Message not found. This is likely an internal bug in assistant-ui.`);let r=t===void 0?n.prev:t===null?null:this.messages.get(t);if(r===void 0)throw Error(`MessageRepository(deleteMessage): Replacement not found. This is likely an internal bug in assistant-ui.`);for(let e=r;e;e=e.prev)if(e===n)throw Error(`MessageRepository(deleteMessage): Replacement is the deleted message or one of its descendants. This is likely an internal bug in assistant-ui.`);for(let e of n.children){let t=this.messages.get(e);if(!t)throw Error(`MessageRepository(deleteMessage): Child message not found. This is likely an internal bug in assistant-ui.`);this.performOp(r,t,`relink`)}this.performOp(null,n,`cut`),this.messages.delete(e),this.head===n&&(this.head=RA(r??this.root)),this._messages.dirty()}hasChildren(e){return(this.messages.get(e)?.children.length??0)>0}getBranches(e){let t=this.messages.get(e);if(!t)throw Error(`MessageRepository(getBranches): Message not found. This is likely an internal bug in assistant-ui.`);let{children:n}=t.prev??this.root;return n}evictOffBranchOptimisticMessages(e,t){if(!e)return;let n=new Set;for(let e=t;e;e=e.prev)n.add(e.current.id);let r=[];for(let t=e;t&&!n.has(t.current.id);t=t.prev)t.current.metadata?.isOptimistic&&r.push(t.current.id);for(let e of r)this.messages.has(e)&&this.deleteMessage(e)}switchToBranch(e){let t=this.messages.get(e);if(!t)throw Error(`MessageRepository(switchToBranch): Branch not found. This is likely an internal bug in assistant-ui.`);let n=this.head;this.selectPathTo(t),this.head=RA(t),this.evictOffBranchOptimisticMessages(n,this.head),this._messages.dirty()}resetHead(e){if(e===null){this.clear();return}let t=this.messages.get(e);if(!t)throw Error(`MessageRepository(resetHead): Branch not found. This is likely an internal bug in assistant-ui.`);let n=this.head;if(t.children.length>0){let e=[...t.children];for(;e.length>0;){let t=e.pop(),n=this.messages.get(t);if(n){for(let t of n.children)e.push(t);this.messages.delete(t)}}t.children=[],t.next=null}this.head=t,this.selectPathTo(t),this.evictOffBranchOptimisticMessages(n,this.head),this._messages.dirty()}clear(){this.messages.clear(),this.head=null,this.root={children:[],next:null},this._messages.dirty()}export(){let e=[],t=[...this.root.children].reverse();for(;t.length>0;){let n=this.messages.get(t.pop());if(!n)continue;for(let e=n.children.length-1;e>=0;e--)t.push(n.children[e]);if(n.current.metadata?.isOptimistic)continue;let r=n.prev;for(;r&&r.current.metadata?.isOptimistic;)r=r.prev;e.push({message:n.current,parentId:r?.current.id??null})}return{headId:this.canonicalHeadId,messages:e}}import({headId:e,messages:t}){let n=zA(t,e=>this.messages.has(e));for(let{message:e,parentId:t}of n)this.addOrUpdateMessage(t,e);this.resetHead(e??n.at(-1)?.message.id??null)}},UA=Object.freeze([]);function WA(e,t){if(t===`*`)return!0;let n=t.split(`,`).map(e=>e.trim().toLowerCase()),r=e.name.toLowerCase(),i=e.type.split(`;`,1)[0].trim().toLowerCase();for(let e of n){if(e.startsWith(`.`)&&r.endsWith(e)||e.includes(`/`)&&e===i)return!0;if(e.endsWith(`/*`)){let t=e.split(`/`)[0];if(i.startsWith(`${t}/`))return!0}}return!1}function GA(e){let t=GE();return e.type===`image`?{id:t,type:`image`,name:e.filename??`image`,content:[e],status:{type:`complete`}}:e.type===`file`?{id:t,type:`document`,name:e.filename??`document`,contentType:e.mimeType,content:[e],status:{type:`complete`}}:e.type===`audio`?{id:t,type:`audio`,name:`audio.${e.audio.format}`,contentType:`audio/${e.audio.format}`,content:[e],status:{type:`complete`}}:{id:t,type:`data`,name:e.name,content:[e],status:{type:`complete`}}}function KA(e){let t=[];for(let n of e)n.type!==`text`&&t.push(GA(n));return t}var qA=e=>`content`in e&&!(`lastModified`in e),JA=e=>e.status.type===`complete`,YA=class{operations=new Set;uploading=new Map;start(){let e={cancelled:!1,attachmentIds:new Set};return this.operations.add(e),e}accept(e,t){if(e.cancelled)return!1;e.attachmentIds.add(t.id);let n=this.uploading.get(t.id);return n?.operation!==e&&(n||t.status.type===`running`)&&this.uploading.set(t.id,{operation:e,waiters:n?.waiters??new Set}),t.status.type!==`running`&&this.settle(t.id,e),!0}finish(e){this.operations.delete(e);for(let t of e.attachmentIds)this.settle(t,e)}isCancelled(e){return e.cancelled}cancel(e){for(let t of[...this.operations])t.attachmentIds.has(e)&&(t.cancelled=!0,this.operations.delete(t));this.settle(e)}cancelAll(){for(let e of this.operations)e.cancelled=!0;this.operations.clear();for(let e of[...this.uploading.keys()])this.settle(e)}whenSendable(e){let t=this.uploading.get(e);if(t)return new Promise(e=>t.waiters.add(e))}settle(e,t){let n=this.uploading.get(e);if(n&&!(t&&n.operation!==t)){this.uploading.delete(e);for(let e of n.waiters)e()}}},XA=async(e,t)=>{if(Symbol.asyncIterator in e){for await(let n of e)if(!t(n))break}else t(await e)},ZA=class{entries=new WeakMap;removed=new WeakSet;markRemoved(e){this.removed.add(e)}unmarkRemoved(e){this.removed.delete(e)}isRemoved(e){return this.removed.has(e)}async send(e,t,n){if(JA(e))return e;let r=this.entries.get(e)??{};if(r.result)return r.result;if(!t)throw Error(`Attachments are not supported`);this.entries.set(e,r);let i=await t.send(e,n?{signal:n}:void 0);return r.result=i,i}transfer(e,t){let n=this.entries.get(e);return n&&this.entries.set(t,n),t}},QA=class extends TT{isEditing=!0;enrichWithComposerMetadata(e,t){return t?{...e,metadata:{...e.metadata,custom:{...e.metadata?.custom,...t}}}:e}get attachmentAccept(){return this.getAttachmentAdapter()?.accept??`*`}_attachments=[];get attachments(){return this._attachments}setAttachments(e){this._attachments=e,this._notifySubscribers()}get isEmpty(){return!this.text.trim()&&!this.attachments.length}_text=``;get text(){return this._text}_role=`user`;get role(){return this._role}_runConfig={};get runConfig(){return this._runConfig}_quote=void 0;get quote(){return this._quote}setQuote(e){this._quote!==e&&(this._quote=e,this._notifySubscribers())}setText(e){this._text!==e&&(this._text=e,this._rebaseDictation(e),this._notifySubscribers())}_rebaseDictation(e){if(!this._dictation)return;this._dictationBaseText=e,this._currentInterimText=``;let{status:t,inputDisabled:n}=this._dictation;this._dictation=n?{status:t,inputDisabled:n}:{status:t}}setRole(e){this._role!==e&&(this._role=e,this._notifySubscribers())}setRunConfig(e){this._runConfig!==e&&(this._runConfig=e,this._notifySubscribers())}_submission;_submissionSend;_inTransit=[];_inTransitSubmissions=[];_sendGeneration=0;_attachmentAddOperations=new YA;_attachmentSends=new ZA;get submission(){return this._submission}get inTransit(){return this._inTransitSubmissions}get isSubmitting(){return this._submission!==void 0}get detachesDraftOnSend(){return!0}threadMessageIds(e){}settleInTransit(){if(this._inTransit.length===0)return;let e=new Set,t=this._inTransit.filter(({submission:t,known:n})=>{let r=this.threadMessageIds(t.role)?.find(t=>!n.has(t)&&!e.has(t));return r===void 0||(e.add(r),!1)});t.length!==this._inTransit.length&&(this._setInTransit(t.map(t=>({...t,known:new Set([...t.known,...e])}))),this._notifySubscribers())}_setInTransit(e){this._inTransit=e,this._inTransitSubmissions=e.map(e=>e.submission)}_leaveTransit(e){let t=this._inTransit.filter(t=>t.submission!==e);return t.length!==this._inTransit.length&&(this._setInTransit(t),!0)}_cancelAttachmentAdd(e){this._attachmentAddOperations.cancel(e)}_cancelAllAttachmentAdds(){this._attachmentAddOperations.cancelAll()}_emptyTextAndAttachments(){this._attachments=[],this._text=``,this._rebaseDictation(``),this._notifySubscribers()}async _onClearAttachments(){let e=this.getAttachmentAdapter();if(e){let t=this._attachments.filter(e=>!JA(e));await Promise.all(t.map(async t=>e.remove(t)))}}async reset(){this._cancelAllAttachmentAdds(),this._sendGeneration++;let e=this._discardSubmission();if(this._attachments.length===0&&this._text===``&&this._role===`user`&&Object.keys(this._runConfig).length===0&&this._quote===void 0){await e;return}this._role=`user`,this._runConfig={},this._quote=void 0;let t=this._onClearAttachments();this._emptyTextAndAttachments(),await Promise.all([t,e])}async clearAttachments(){if(this._cancelAllAttachmentAdds(),this.isSubmitting)for(let e of this._attachments)this._attachmentSends.markRemoved(e);let e=this._onClearAttachments();this.setAttachments([]),await e}async send(e){if(!this.canSend||this.isSubmitting)return;if(this._dictationSession){let e=this._activeDictationSessionId;try{this._dictationSession.cancel()}catch(e){console.error(`[assistant-ui] Dictation session cancel threw`,e)}finally{this._cleanupDictation({sessionId:e})}}let t=this.attachments.filter(e=>!this._attachmentSends.isRemoved(e));if(!this.text.trim()&&t.length===0)return;let n={id:GE(),role:this.role,text:this.text,quote:this._quote,attachments:t},r={options:e,runConfig:this.runConfig},i=t.filter(JA),a=i.length===t.length;if(a||(this._submission=n,this._submissionSend={...r,controller:new AbortController}),this.detachesDraftOnSend){let e=new Set(t);this._attachments=this._attachments.filter(t=>!e.has(t)),this._text=``,this._rebaseDictation(``),this._quote=void 0}let o=++this._sendGeneration;if(this._notifySubscribers(),a){this._dispatch(o,n,i,r,!1);return}await this._prepareSubmission(o)}async _prepareSubmission(e){let t=this.getAttachmentAdapter(),n=(this._submission?.attachments??[]).flatMap(e=>{let t=this._attachmentAddOperations.whenSendable(e.id);return t?[t]:[]});if(n.length>0){if(await Promise.all(n),e!==this._sendGeneration)return;this._refreshSubmissionAttachments()}let r=this._submission,i=this._submissionSend;if(!r||!i)return;let a=r.attachments.filter(e=>!this._attachmentSends.isRemoved(e));for(let e of a)this._cancelAttachmentAdd(e.id);let o=await Promise.allSettled(a.map(e=>this._attachmentSends.send(e,t,i.controller.signal)));if(e!==this._sendGeneration)return;let s=o.find(e=>e.status===`rejected`);if(s){this._returnSubmissionToDraft(a,o,s.reason);return}let c=o.flatMap((e,t)=>this._attachmentSends.isRemoved(a[t])||e.status===`rejected`?[]:[e.value]);this._dispatch(e,r,c,i,!0)}_dispatch(e,t,n,r,i){let a={createdAt:new Date,role:t.role,content:t.text?[{type:`text`,text:t.text}]:[],attachments:n,runConfig:r.runConfig,metadata:{custom:{...t.quote?{quote:t.quote}:{}}}},o={...t,attachments:n},s=this.queue.length;if(i){if(this._submission=void 0,this._submissionSend=void 0,!this.detachesDraftOnSend){let e=new Map(n.map(e=>[e.id,e]));this._attachments=this._attachments.map(t=>e.get(t.id)??t)}let e=this.threadMessageIds(t.role);e&&this._setInTransit([...this._inTransit,{submission:o,known:new Set(e)}])}let c;try{c=this.handleSend(a,r.options)}catch(t){console.error(`[assistant-ui] Failed to send the message`,t),this._leaveTransit(o),e===this._sendGeneration?this._returnToDraft(o):this._notifySubscribers();return}c&&c.catch(t=>{let n=this._leaveTransit(o);e===this._sendGeneration&&Gk(t)?this._returnToDraft(o):n&&this._notifySubscribers()}),this._notifyEventSubscribers(`send`,{chars:t.text.length,attachments:n.length}),i&&(this.queue.length>s&&this._leaveTransit(o),this._notifySubscribers(),this.settleInTransit())}_refreshSubmissionAttachments(){let e=this._submission;if(!e)return;let t=e.attachments.filter(e=>!this._attachmentSends.isRemoved(e));t.length!==e.attachments.length&&(this._submission={...e,attachments:t})}_returnSubmissionToDraft(e,t,n){let r=this._submission;if(!r)return;let i=new Map;t.forEach((t,n)=>{t.status===`rejected`&&i.set(e[n].id,t.reason)});let a=r.attachments.map(e=>{if(!i.has(e.id)||JA(e))return e;let t=i.get(e.id);return this._attachmentSends.transfer(e,{...e,status:{type:`incomplete`,reason:`error`,message:t instanceof Error?t.message:String(t)}})});this._endSubmission(),this._returnToDraft({...r,attachments:a}),console.error(`[assistant-ui] Failed to send attachments`,n)}_endSubmission(){this._sendGeneration++,this._submission=void 0,this._submissionSend=void 0}__internal_dispose(){this._cancelAllAttachmentAdds(),this._submission&&(this._submissionSend?.controller.abort(),this._endSubmission(),this._notifySubscribers())}cancelSubmission(){let e=this._submission;e&&(this._submissionSend?.controller.abort(),this._endSubmission(),this._returnToDraft(e))}_returnToDraft(e){if(this.detachesDraftOnSend){let t=e.attachments.filter(e=>!this._attachmentSends.isRemoved(e));this._attachments=[...t,...this._attachments];let n=[e.text,this._text].filter(Boolean).join(`
126
- `);this._text=n,this._rebaseDictation(n),this._quote=this._quote??e.quote}else{let t=new Map(e.attachments.map(e=>[e.id,e]));this._attachments=this._attachments.map(e=>t.get(e.id)??e)}this._notifySubscribers()}async _discardSubmission(){let e=this._submission;if(!e)return;this._submissionSend?.controller.abort(),this._endSubmission(),this._notifySubscribers();let t=this.getAttachmentAdapter();if(!t)return;let n=new Set(this._attachments.map(e=>e.id));await Promise.all(e.attachments.filter(e=>!JA(e)&&!n.has(e.id)).map(async e=>t.remove(e)))}restoreDraft(e){return this._text.trim()||this._quote!==void 0||this._attachments.length>0?!1:(this._text=e.text,this._rebaseDictation(e.text),this._quote=e.quote,this._attachments=e.attachments??[],this._notifySubscribers(),!0)}retractDraft(e){let t=e.attachments===void 0?this._attachments.length===0:this._attachments===e.attachments;this._text!==e.text||this._quote!==e.quote||!t||(this._text=``,this._rebaseDictation(``),this._quote=void 0,this._attachments=[],this._notifySubscribers())}cancel(){this.isSubmitting&&!this.detachesDraftOnSend&&(this._submissionSend?.controller.abort(),this._endSubmission(),this._notifySubscribers()),this.handleCancel()}get queue(){return UA}moveQueueItem(e,t){}removeQueueItem(e){}async addAttachment(e){if(qA(e)){let t=this.getAttachmentAdapter();if(t&&!WA({name:e.name,type:e.contentType??``},t.accept)){let n=`File type ${e.contentType||`unknown`} is not accepted. Accepted types: ${t.accept}`,r=Error(n);throw this._safeEmitAttachmentAddError(`not-accepted`,n,void 0,r,e.contentType),r}let n={id:e.id??GE(),type:e.type??`document`,name:e.name,contentType:e.contentType,content:e.content,status:{type:`complete`}};this._attachments=[...this._attachments,n],this._notifySubscribers(),this._notifyEventSubscribers(`attachmentAdd`,{...n.contentType?{contentType:n.contentType}:void 0});return}let t=this.getAttachmentAdapter();if(!t){let t=`Attachments are not supported`,n=Error(t);throw this._safeEmitAttachmentAddError(`no-adapter`,t,void 0,n,e.type),n}if(!WA({name:e.name,type:e.type},t.accept)){let n=`File type ${e.type||`unknown`} is not accepted. Accepted types: ${t.accept}`,r=Error(n);throw this._safeEmitAttachmentAddError(`not-accepted`,n,void 0,r,e.type),r}let n=this._attachmentAddOperations.start(),r=e=>{if(!this._attachmentAddOperations.accept(n,e))return!1;let t=this._submission,r=t?.attachments.some(t=>t.id===e.id)??!1;t&&r&&(this._submission={...t,attachments:t.attachments.map(t=>t.id===e.id?this._attachmentSends.transfer(t,e):t)});let i=this._attachments.findIndex(t=>t.id===e.id);return i===-1?r||(this._attachments=[...this._attachments,e]):this._attachments=[...this._attachments.slice(0,i),e,...this._attachments.slice(i+1)],this._notifySubscribers(),!0},i;try{await XA(t.add({file:e}),e=>(i=e,r(e)))}catch(t){if(this._attachmentAddOperations.isCancelled(n))return;throw i&&r({...i,status:{type:`incomplete`,reason:`error`,message:t instanceof Error?t.message:String(t)}}),this._safeEmitAttachmentAddError(`adapter-error`,t instanceof Error?t.message:String(t),i?.id,t instanceof Error?t:void 0,i?.contentType||e.type),t}finally{this._attachmentAddOperations.finish(n)}this._attachmentAddOperations.isCancelled(n)||(i?.status.type===`incomplete`&&i.status.reason===`error`?this._safeEmitAttachmentAddError(`adapter-error`,i.status.message??`Attachment upload did not complete successfully.`,i.id,void 0,i.contentType||e.type):this._notifyEventSubscribers(`attachmentAdd`,{...i?.contentType?{contentType:i.contentType}:e.type?{contentType:e.type}:void 0}))}_safeEmitAttachmentAddError(e,t,n,r,i){try{this._notifyEventSubscribers(`attachmentAddError`,{reason:e,message:t,...n!==void 0&&{attachmentId:n},...r!==void 0&&{error:r},...i?{contentType:i}:void 0})}catch(e){console.error(`[assistant-ui] attachmentAddError subscriber threw:`,e)}}async removeAttachment(e){let t=this._attachments.findIndex(t=>t.id===e);if(t===-1){await this._removeSubmittedAttachment(e);return}let n=this._attachments[t];if(this._cancelAttachmentAdd(e),this._attachmentSends.markRemoved(n),!JA(n)){let t=this.getAttachmentAdapter();if(!t)throw Error(`Attachments are not supported`);try{await t.remove(n)}catch(t){let n=t instanceof Error?t.message:String(t);throw this._attachments=this._attachments.map(t=>t.id===e&&!JA(t)?this._attachmentSends.transfer(t,{...t,status:{type:`incomplete`,reason:`error`,message:n}}):t),this._notifySubscribers(),t}}this._attachments=this._attachments.filter(t=>t.id!==e),this._notifySubscribers()}async _removeSubmittedAttachment(e){let t=this._submission?.attachments.find(t=>t.id===e);if(!t)throw Error(`Attachment not found`);if(this._cancelAttachmentAdd(e),this._attachmentSends.markRemoved(t),!JA(t)){let n=this.getAttachmentAdapter();if(!n)throw Error(`Attachments are not supported`);try{await n.remove(t)}catch(t){throw this._failSubmittedRemoval(e,t),t}}let n=this._submission;n&&(this._submission={...n,attachments:n.attachments.filter(t=>t.id!==e)},this._notifySubscribers())}_failSubmittedRemoval(e,t){let n=this._submission;if(!n)return;let r=t instanceof Error?t.message:String(t);this._submission={...n,attachments:n.attachments.map(t=>{if(t.id!==e||JA(t))return t;let n=this._attachmentSends.transfer(t,{...t,status:{type:`incomplete`,reason:`error`,message:r}});return this._attachmentSends.markRemoved(n),n})},this._notifySubscribers()}_dictation;_dictationSession;_dictationUnsubscribes=[];_dictationBaseText=``;_currentInterimText=``;_dictationSessionIdCounter=0;_activeDictationSessionId;_isCleaningDictation=!1;get dictation(){return this._dictation}_isActiveSession(e,t){return this._activeDictationSessionId===e&&this._dictationSession===t}startDictation(){let e=this.getDictationAdapter();if(!e)throw Error(`Dictation adapter not configured`);let t=this._dictationSession!==void 0;if(this._dictationSession){let e=this._dictationSession;this._cleanupDictation({notify:!1}),this._stopDictationSession(e)}let n=e.disableInputDuringDictation??!1;this._dictationBaseText=this._text,this._currentInterimText=``;let r;try{r=e.listen()}catch(e){if(t)try{this._notifySubscribers()}catch(e){console.error(`[assistant-ui] Dictation replacement rollback notification threw`,e)}throw e}this._dictationSession=r;let i=++this._dictationSessionIdCounter;this._activeDictationSessionId=i,this._dictation={status:r.status,inputDisabled:n};try{this._notifySubscribers()}catch(e){console.error(`[assistant-ui] Dictation start notification threw`,e)}if(!this._isActiveSession(i,r))return;let a=[],o=()=>{for(let e of a.splice(0))try{e()}catch(e){console.error(`[assistant-ui] Dictation cleanup threw`,e)}},s=e=>(a.push(e),this._isActiveSession(i,r)?!0:(o(),!1));try{if(!s(r.onSpeech(e=>{if(!this._isActiveSession(i,r))return;let t=e.isFinal!==!1,n=this._dictationBaseText&&!this._dictationBaseText.endsWith(` `)&&e.transcript?` `:``;if(t){if(this._dictationBaseText=this._dictationBaseText+n+e.transcript,this._currentInterimText=``,this._text=this._dictationBaseText,this._dictation){let{transcript:e,...t}=this._dictation;this._dictation=t}this._notifySubscribers()}else this._currentInterimText=n+e.transcript,this._text=this._dictationBaseText+this._currentInterimText,this._dictation&&={...this._dictation,transcript:e.transcript},this._notifySubscribers()}))||!s(r.onSpeechStart(()=>{this._isActiveSession(i,r)&&(this._dictation={status:{type:`running`},inputDisabled:n,...this._dictation?.transcript&&{transcript:this._dictation.transcript}},this._notifySubscribers())}))||!s(r.onSpeechEnd(()=>{this._cleanupDictation({sessionId:i})})))return;let e=setInterval(()=>{this._isActiveSession(i,r)&&r.status.type===`ended`&&this._cleanupDictation({sessionId:i})},100);if(!s(()=>clearInterval(e)))return;this._dictationUnsubscribes.push(...a.splice(0))}catch(e){if(o(),this._isActiveSession(i,r))try{r.cancel()}catch(e){console.error(`[assistant-ui] Dictation session cancel threw`,e)}finally{this._cleanupDictation({sessionId:i})}throw e}}stopDictation(){if(!this._dictationSession)return;let e=this._dictationSession,t=this._activeDictationSessionId;this._stopDictationSession(e,()=>this._cleanupDictation({sessionId:t}))}_stopDictationSession(e,t=()=>{}){let n;try{n=e.stop()}catch(e){console.error(`[assistant-ui] Dictation session stop threw`,e),t();return}n.then(t,e=>{console.error(`[assistant-ui] Dictation session stop rejected`,e),t()})}_cleanupDictation(e){if(e?.sessionId!==void 0&&e.sessionId!==this._activeDictationSessionId||this._isCleaningDictation)return;this._isCleaningDictation=!0;let t=e=>{try{e()}catch(e){console.error(`[assistant-ui] Dictation cleanup threw`,e)}};try{let n=this._dictationUnsubscribes;this._dictationUnsubscribes=[],this._dictationSession=void 0,this._activeDictationSessionId=void 0,this._dictation=void 0,this._dictationBaseText=``,this._currentInterimText=``;for(let e of n)t(e);e?.notify!==!1&&t(()=>this._notifySubscribers())}finally{this._isCleaningDictation=!1}}_eventSubscribers=new Map;_notifyEventSubscribers(e,t){let n=this._eventSubscribers.get(e);n&&DC(n,t,`Composer runtime "${e}"`)}unstable_on(e,t){let n=t,r=this._eventSubscribers.get(e);return r||(r=new Set,this._eventSubscribers.set(e,r)),r.add(n),()=>{this._eventSubscribers.get(e)?.delete(n)}}},$A=e=>e.capabilities?.cancel?hA(e):!1,ej=class extends QA{get canCancel(){return this.isSubmitting||$A(this.runtime)}get canSend(){if(this.isEmpty||this.runtime.isSendDisabled||this.isSubmitting)return!1;let e=this.runtime.voice;return!e||e.canSendText&&this.role===`user`&&this.attachments.length===0}cancel(){if(!this.isSubmitting){super.cancel();return}this.cancelSubmission(),$A(this.runtime)&&super.cancel()}threadMessageIds(e){return this.runtime.messages.filter(t=>t.role===e).map(e=>e.id)}_queueCache;get queue(){let e=this.runtime.getSteerQueueItems?.()??UA,t=this.runtime.getQueueItems?.()??UA,n=this._queueCache;if(n&&n.steer===e&&n.queue===t)return n.flat;let r=e.length===0?t:t.length===0?e:[...e,...t];return this._queueCache={steer:e,queue:t,flat:r},r}moveQueueItem(e,t){this.runtime.moveQueueItem?.(e,t)}removeQueueItem(e){this.runtime.removeQueueItem?.(e)}getAttachmentAdapter(){return this.runtime.adapters?.attachments}getDictationAdapter(){return this.runtime.adapters?.dictation}runtime;constructor(e){super(),this.runtime=e,this.connect()}connect(){let e=!1,t=this.runtime.isSendDisabled,n=this.runtime.voice?.canSendText,r=this.queue;return this.runtime.subscribe(()=>{this.settleInTransit();let i=!1,a=this.canCancel;e!==a&&(e=a,i=!0),t!==this.runtime.isSendDisabled&&(t=this.runtime.isSendDisabled,i=!0);let o=this.runtime.voice?.canSendText;n!==o&&(n=o,i=!0),r!==this.queue&&(r=this.queue,i=!0),i&&this._notifySubscribers()})}async handleSend(e,t){return this.runtime.append({...e,parentId:this.runtime.messages.at(-1)?.id??null,sourceId:null,startRun:t?.startRun,steer:t?.steer})}async handleCancel(){this.runtime.cancelRun()}},tj=class extends QA{get canCancel(){return!0}get detachesDraftOnSend(){return!1}get canSend(){return!this.isEmpty&&!this.runtime.voice&&!this.isSubmitting}getAttachmentAdapter(){return this.runtime.adapters?.attachments}getDictationAdapter(){return this.runtime.adapters?.dictation}_nonTextPassthrough;_parentId;_sourceId;runtime;endEditCallback;_ended=!1;constructor(e,t,{parentId:n,message:r}){super(),this.runtime=e;let i=e.voice!==void 0,a=e.subscribe(()=>{let t=e.voice!==void 0;t!==i&&(i=t,this._notifySubscribers())});this.endEditCallback=()=>{a(),t()},this._parentId=n,this._sourceId=r.id,this.setText(lE(r)),this.setRole(r.role);let o;r.role===`user`?(o=[...r.attachments??[],...KA(r.content)],this._nonTextPassthrough=[]):(o=r.attachments??[],this._nonTextPassthrough=r.content.filter(e=>e.type!==`text`)),this.setAttachments(o),this.setRunConfig({...e.composer.runConfig})}get parentId(){return this._parentId}get sourceId(){return this._sourceId}async handleSend(e,t){let n=this._nonTextPassthrough.length>0?[...e.content,...this._nonTextPassthrough]:e.content,r=this.runtime.append({...e,content:n,parentId:this._parentId,sourceId:this._sourceId,startRun:t?.startRun});return this.handleCancel(),r}handleCancel(){this._ended||(this._ended=!0,this.reset().catch(e=>{console.error(`[assistant-ui] Failed to clear cancelled edit`,e)}),this.endEditCallback(),this._notifySubscribers())}},nj=class extends TT{_isInitialized=!1;repository=new HA;_voiceMessages=[];_voiceGeneration=0;_cachedMergedMessages=null;_cachedVoiceGeneration=-1;_cachedMergedBase=null;_markVoiceMessagesDirty(){this._voiceGeneration++,this._cachedMergedMessages=null}_getBaseMessages(){return this.repository.getMessages()}_commitVoiceMessage(e){}_onMessageMetadataChanged(e,t){}_dropVoiceMessage(e,t){let n=this._voiceMessages.findIndex(t=>t.id===e);n!==-1&&(this._voiceMessages.splice(n,1),this._markVoiceMessagesDirty(),t&&this._notifySubscribers())}get messages(){if(this._voiceMessages.length===0)return this._getBaseMessages();let e=this._getBaseMessages();if(this._cachedVoiceGeneration!==this._voiceGeneration||this._cachedMergedBase!==e){let t=new Set(e.map(e=>e.id));this._cachedMergedMessages=[...e,...this._voiceMessages.filter(e=>!t.has(e.id))],this._cachedVoiceGeneration=this._voiceGeneration,this._cachedMergedBase=e}return this._cachedMergedMessages}get state(){let e;for(let t of this.messages)t.role===`assistant`&&(e=t);return e?.metadata.unstable_state??null}composer=new ej(this);_contextProvider;constructor(e){super(),this._contextProvider=e,wA(this).addEventListener(`abort`,()=>{this.composer.__internal_dispose();for(let e of this._editComposers.values())e.__internal_dispose()})}getModelContext(){return this._contextProvider.getModelContext()}enrichAppendMetadata(e,t=e.parentId){if(e.role!==`user`)return e;let n=this.messages,r=t===null?-1:n.findIndex(e=>e.id===t),i=Dk(this.getModelContext().unstable_composerMetadata,n.slice(0,r+1));return i?{...e,metadata:{...e.metadata,custom:{...e.metadata?.custom,...i}}}:e}_editComposers=new Map;getEditComposer(e){return this._editComposers.get(e)}_isVoiceMessage(e){return e!==null&&this._voiceMessages.some(t=>t.id===e)}_resolveAppendParent(e){return this._isVoiceMessage(e)?this._getBaseMessages().at(-1)?.id??null:e}beginEdit(e){if(this.voice)throw Error(`Cannot edit a message while a voice session is connected`);if(this._isVoiceMessage(e))throw Error(`Voice transcript messages cannot be edited`);if(this._editComposers.has(e))throw Error(`Edit already in progress`);this._editComposers.set(e,new tj(this,()=>this._editComposers.delete(e),this.repository.getMessage(e))),this._notifySubscribers()}getMessageById(e){try{return this.repository.getMessage(e)}catch{let t=this.repository.getMessages(),n=this._voiceMessages.findIndex(t=>t.id===e);return n===-1?void 0:{parentId:n>0?this._voiceMessages[n-1].id:t.at(-1)?.id??null,message:this._voiceMessages[n],index:t.length+n}}}getBranches(e){return this._voiceMessages.some(t=>t.id===e)?[]:this.repository.getBranches(e)}switchToBranch(e){this.repository.switchToBranch(e),this._notifySubscribers()}_notifyEventSubscribers(e,t){let n=this._eventSubscribers.get(e);n&&DC(n,t,`Thread runtime "${e}"`)}_notifyToolApprovalAnswered(e,t,n,r){this._notifyEventSubscribers(`toolApprovalAnswered`,{messageId:e,toolCallId:t,toolName:n,approved:r})}submitFeedback({messageId:e,type:t,comment:n}){let r=this.adapters?.feedback,i=this.getMessageById(e);if(!i)throw Error(`Message not found: ${e}`);let{message:a,parentId:o}=i,s=n?.trim(),c={type:t,...s?{comment:s}:void 0};if(r?.submit({message:a,...c}),a.role===`assistant`){let t={...a,metadata:{...a.metadata,submittedFeedback:c}},n=this._voiceMessages.findIndex(t=>t.id===e);n===-1?(this.repository.addOrUpdateMessage(o,t),this._onMessageMetadataChanged(a,t)):(this._voiceMessages[n]=t,this._currentAssistantMsg===a&&(this._currentAssistantMsg=t),this._markVoiceMessagesDirty())}this._notifySubscribers()}_stopSpeaking;speech;speak(e){let t=this.adapters?.speech;if(!t)throw Error(`Speech adapter not configured`);let n=this.getMessageById(e);if(!n)throw Error(`Message not found: ${e}`);let{message:r}=n,i=this._stopSpeaking,a;try{i?.(),a=t.speak(lE(r))}catch(e){if(i&&!this._stopSpeaking)try{this._notifySubscribers()}catch(e){console.error(`[assistant-ui] Speech rollback notification threw`,e)}throw e}let o,s=()=>{this._stopSpeaking=void 0,this.speech=void 0;let e=o;o=void 0,e?.()},c=()=>{if(this._stopSpeaking===c)try{s()}finally{a.cancel()}},l=()=>{this._stopSpeaking===c&&(a.status.type===`ended`?xT([s,()=>this._notifySubscribers()]):(this.speech={messageId:e,status:a.status},this._notifySubscribers()))};this._stopSpeaking=c;try{if(o=a.subscribe(l),this._stopSpeaking!==c){o();return}l()}catch(e){if(this._stopSpeaking===c)try{xT([c,()=>this._notifySubscribers()])}catch(e){console.error(`[assistant-ui] Speech rollback cleanup threw`,e)}throw e}}stopSpeaking(){if(!this._stopSpeaking)throw Error(`No message is being spoken`);xT([this._stopSpeaking,()=>this._notifySubscribers()])}_voiceSession;_voiceUnsubs=[];voice;_voiceVolume=0;_voiceVolumeSubscribers=new Set;getVoiceVolume=()=>this._voiceVolume;subscribeVoiceVolume=e=>(this._voiceVolumeSubscribers.add(e),()=>this._voiceVolumeSubscribers.delete(e));_onVoiceConnected(){}_onVoiceDisconnected(){}_toVoiceSessionState(e,t,n){return{status:t,isMuted:e.isMuted,mode:n,canSendText:t.type===`running`&&e.sendText!==void 0}}_isRunActive(){if(this.isRunning)return!0;let e=this._getBaseMessages().at(-1);return e?.role===`assistant`&&(e.status.type===`running`||e.status.type===`requires-action`)}_getVoiceCommitBarrier(){if(!this.isLoading)return;let e=xA(this);return(async()=>{for(;this.isLoading&&!e.aborted;)await new Promise(t=>{let n=()=>{r(),e.removeEventListener(`abort`,n),t()},r=this.subscribe(n);e.addEventListener(`abort`,n)})})()}connectVoice(){let e=this.adapters?.voice;if(!e)throw Error(`Voice adapter not configured`);if(this._isRunActive())throw Error(`Cannot start a voice session while a run is in progress or paused on a pending tool action`);let t=this._voiceSession!==void 0;try{this._disconnectVoice(!1)}catch(e){console.error(`[assistant-ui] Voice cleanup threw before reconnect`,e)}let n;try{n=e.connect({})}catch(e){throw t&&this._voiceSession===void 0&&this._onVoiceDisconnected(),e}this._voiceSession=n;let r=[];this._voiceUnsubs=r;let i=()=>{if(this._voiceSession===n&&this._voiceUnsubs===r)return!1;try{xT(r.splice(0))}catch(e){console.error(`[assistant-ui] Detached voice setup cleanup threw`,e)}return!0};try{let e=`listening`;if(this.voice=this._toVoiceSessionState(n,n.status,e),this._voiceVolume=0,this._notifySubscribers(),i()||(r.push(n.onStatusChange(t=>{this._voiceSession===n&&(t.type===`ended`?(this._finishVoiceAssistantMessage(),this._voiceSession=void 0,this.voice=void 0,this._onVoiceDisconnected()):this.voice=this._toVoiceSessionState(n,t,e),this._notifySubscribers())})),i())||(r.push(n.onModeChange(t=>{this._voiceSession===n&&(e=t,this.voice&&(this.voice={...this.voice,mode:t},this._notifySubscribers()))})),i())||(r.push(n.onVolumeChange(e=>{this._voiceSession===n&&(this._voiceVolume=e,DC(this._voiceVolumeSubscribers,void 0,`Voice volume`))})),i()))return;r.push(n.onTranscript(e=>{this._voiceSession===n&&this._handleVoiceTranscript(e)})),i()||this._onVoiceConnected()}catch(e){if(this._voiceSession===n&&this._voiceUnsubs===r){try{this._disconnectVoice(!1)}catch(e){console.error(`[assistant-ui] Voice rollback cleanup threw`,e)}t&&this._voiceSession===void 0&&this._onVoiceDisconnected()}else i();throw e}}_currentAssistantMsg=null;_observeVoiceCommit(e){Promise.resolve(e).catch(e=>{console.error(`[assistant-ui] Voice message commit failed`,e)})}_handleVoiceTranscript(e){if(this.ensureInitialized(),e.role===`user`)this._finishVoiceAssistantMessage(),this._currentAssistantMsg=null,e.isFinal&&this._observeVoiceCommit(this._commitVoiceUserMessage({id:GE(),role:`user`,content:[{type:`text`,text:e.text}],metadata:{modality:`voice`,custom:{}},createdAt:new Date,attachments:[]}));else{let t=e.isFinal?{type:`complete`,reason:`stop`}:{type:`running`};if(!this._currentAssistantMsg)this._currentAssistantMsg={id:GE(),role:`assistant`,content:[{type:`text`,text:e.text}],metadata:{unstable_state:this.state,unstable_annotations:[],unstable_data:[],steps:[],modality:`voice`,custom:{}},status:t,createdAt:new Date},this._voiceMessages.push(this._currentAssistantMsg);else{let n=this._voiceMessages.indexOf(this._currentAssistantMsg);if(n===-1)return;let r={...this._currentAssistantMsg,content:[{type:`text`,text:e.text}],status:t};this._voiceMessages[n]=r,this._currentAssistantMsg=r}e.isFinal&&(this._observeVoiceCommit(this._commitVoiceMessage(this._currentAssistantMsg)),this._currentAssistantMsg=null),this._markVoiceMessagesDirty(),this._notifySubscribers()}}_commitVoiceUserMessage(e){this._voiceMessages.push(e);let t=this._commitVoiceMessage(e);return this._markVoiceMessagesDirty(),this._notifySubscribers(),t}async _appendToVoiceSession(e){let t=this._voiceSession;if(!this.voice?.canSendText||!t?.sendText)throw Error(`Cannot send a text message while a voice session is connected`);let n=e.content.filter(e=>e.type===`text`);if(e.role!==`user`||e.sourceId!=null||e.parentId!==this._resolveAppendParent(this.messages.at(-1)?.id??null)||e.attachments?.length||n.length!==e.content.length||!n.some(e=>e.text.trim()))throw Error(`Only a plain text user message can be sent while a voice session is connected`);let r=this.enrichAppendMetadata(e);this.ensureInitialized();let i=xA(this);try{await t.sendText(lE(e))}catch(e){if(i.aborted)return;let t=new Wk;throw t.cause=e,t}if(!i.aborted){if(this._voiceSession!==t)throw new Wk(`The voice session ended before the typed message was recorded`);this._finishVoiceAssistantMessage(!1),this._currentAssistantMsg=null,await this._commitVoiceUserMessage({id:GE(),role:`user`,content:n,metadata:{custom:{...r.metadata?.custom}},createdAt:e.createdAt,attachments:[]})}}_finishVoiceAssistantMessage(e=!0){let t=this._voiceMessages.at(-1);if(t?.role===`assistant`&&t.status.type===`running`){let n=this._voiceMessages.length-1;this._voiceMessages[n]={...t,status:{type:`complete`,reason:`stop`}},this._observeVoiceCommit(this._commitVoiceMessage(this._voiceMessages[n])),this._currentAssistantMsg=null,this._markVoiceMessagesDirty(),e&&this._notifySubscribers()}}disconnectVoice(){this._disconnectVoice(!0)}_disconnectVoice(e){this._finishVoiceAssistantMessage(!1),this._currentAssistantMsg=null;let t=this._voiceUnsubs.splice(0);this._voiceUnsubs=[];let n=this._voiceSession;this._voiceSession=void 0,this.voice=void 0,this._voiceVolume=0;let r=this.speech&&this._isVoiceMessage(this.speech.messageId)?this._stopSpeaking:void 0;this._voiceMessages=[],this._markVoiceMessagesDirty();try{xT([...t,...r?[r]:[],...n?[()=>n.disconnect()]:[],()=>DC(this._voiceVolumeSubscribers,void 0,`Voice volume`),()=>this._notifySubscribers()])}finally{e&&n&&this._voiceSession===void 0&&this._onVoiceDisconnected()}}muteVoice(){if(!this._voiceSession)throw Error(`No active voice session`);this._voiceSession.mute(),this.voice={...this.voice,isMuted:!0},this._notifySubscribers()}unmuteVoice(){if(!this._voiceSession)throw Error(`No active voice session`);this._voiceSession.unmute(),this.voice={...this.voice,isMuted:!1},this._notifySubscribers()}ensureInitialized(){this._isInitialized||(this._isInitialized=!0,this._notifyEventSubscribers(`initialize`,{}))}export(){return this.repository.export()}import(e){this.ensureInitialized(),this.repository.clear(),this.repository.import(e),this._notifySubscribers()}reset(e){this.import(LA.fromArray(e??[]))}_eventSubscribers=new Map;unstable_on(e,t){let n=t;if(e===`modelContextUpdate`)return this._contextProvider.subscribe?.(()=>DC([n],{},`Thread runtime "${e}"`))??(()=>{});let r=this._eventSubscribers.get(e);return r||(r=new Set,this._eventSubscribers.set(e,r)),r.add(n),e===`initialize`&&this._isInitialized&&queueMicrotask(()=>{r.has(n)&&DC([n],{},`Thread runtime "${e}"`)}),()=>{this._eventSubscribers.get(e)?.delete(n)}}},rj=_S(!1),ij=e=>Sx(rj,!0,e),aj=e=>e.status?.type!==`running`,oj=async(e,t)=>{let n=ck.fromAssistantStream(e);for await(let e of n){let n=e.parts.filter(e=>e.type===`text`)[0]?.text;n?.trim()&&await t(n)}},sj=(e,t)=>{let n=()=>void t.generateTitle({automatic:!0}).catch(e=>{ZT(e)||console.error(`[assistant-ui] Thread title generation failed`,e)}),r=()=>e.getState().messages.some(aj);if(r())return n(),()=>{};let i=e.subscribe(()=>{r()&&(i(),n())});return i},cj=({threadId:e,generation:t,runtimeHook:n,publish:r,itemRuntime:i})=>{let a=ij(n),o=a?.thread?.__internal_threadBinding,s=aS(()=>{o&&r(e,o.getState(),t)},[e,t,o,r]),c=rS(!1);c.current||s(),oS(()=>{if(o)return c.current=!0,s(),o.outerSubscribe(s)},[o,s]);let l=rS(void 0),u=rS(!1),d=rS(i.getState().status===`new`),f=rS(void 0),p=rS(!1),m=cS(()=>{if(u.current||i.getState().status!==`new`&&!d.current)return;u.current=!0,d.current=!1;let e=i.initialize();l.current=e,e.then(()=>{p.current&&(f.current?.(),f.current=sj(a.thread,i))},()=>{l.current===e&&(l.current=void 0,u.current=!1)})}),h=cS(()=>(m(),l.current));return oS(()=>{if(!o)return;let e=o.getState(),t=e.__internal_setGetInitializePromise;typeof t==`function`&&t.call(e,h)},[o]),oS(()=>{if(!a?.threads?.main)return;u.current=!1,p.current=!0;let e=a.threads.main.unstable_on(`initialize`,m);return()=>{p.current=!1,e(),f.current?.(),f.current=void 0}},[a]),a},lj=mC(({threadId:e,generation:t,parentList:n,runtimeHook:r,parentClient:i,adapters:a,publish:o,destroySignal:s})=>{let c=iS(()=>new kA(new OT({path:{ref:`threadItems[threadId=${e}]`,threadSelector:{type:`threadId`,threadId:e}},getState:()=>{let t=n.getItemById(e);return t?{id:t.id,remoteId:t.remoteId,externalId:t.externalId,title:t.title,lastMessageAt:t.lastMessageAt,custom:t.custom,status:t.status,isMain:t.id===n.mainThreadId,isRunning:n.unstable_isThreadRunning?.(t.id)??!1}:bT},subscribe:e=>n.subscribe(e)}),n),[n,e]),{client:l}=cT(i,{threadListItem:iO({runtime:c})});return Mw(s,function(){return tw(l,function(){return _O(a,function(){return cj({threadId:e,generation:t,runtimeHook:r,publish:o,itemRuntime:c})})})})}),uj=[`runStart`,`runEnd`,`initialize`,`modelContextUpdate`],dj=e=>{let t=$(3),{detectorRef:n}=e,r,i;return t[0]===n?(r=t[1],i=t[2]):(r=()=>{n.current=!0},i=[n],t[0]=n,t[1]=r,t[2]=i),sS(r,i),null},fj=class extends TT{runtimeHook;adapterStore=new ET({defaultAdapters:null,threadAdapters:new Map});hostStore=new ET({threads:[],hookEpoch:0});pendingThreadAdapters=new Map;instances=new Map;nextGeneration=0;parent;constructor(e,t){super(),this.parent=t,this.runtimeHook=e}_whenRuntimeAttached(e){return new Promise((t,n)=>{let r=()=>{let r=this.instances.get(e);if(!r)i(),n(Error(`Thread was deleted before runtime was started`));else if(!r.runtime||r.publishedGeneration!==r.generation)return;else i(),t(r.runtime)},i=this.subscribe(r);r()})}startThreadRuntime(e){if(!this.instances.has(e)){let t=this.nextGeneration++;this.instances.set(e,{generation:t,isRunning:!1,destroy:new AbortController}),this._syncHostThreads()}return this._whenRuntimeAttached(e)}__internal_restartThreadRuntime(e){let t=this.instances.get(e);if(!t)return this.startThreadRuntime(e);try{t.unsubscribeRunning?.()}finally{t.unsubscribeRunning=void 0,t.runtime&&DA(t.runtime),t.destroy.abort(),t.destroy=new AbortController,t.generation=this.nextGeneration++,this._syncHostThreads(),this._notifySubscribers()}return this._whenRuntimeAttached(e)}getThreadRuntimeCore(e){let t=this.instances.get(e);if(t)return t.runtime}__internal_isThreadRunning(e){return this.instances.get(e)?.isRunning??!1}runningSubscribers=new Set;__internal_subscribeRunningChanged(e){return this.runningSubscribers.add(e),()=>this.runningSubscribers.delete(e)}threadEventSubscribers=new Set;__internal_subscribeThreadEvents(e){return this.threadEventSubscribers.add(e),()=>this.threadEventSubscribers.delete(e)}_publish=(e,t,n)=>{this._publishThreadRuntime(e,t,n)};_publishThreadRuntime(e,t,n){let r=this.instances.get(e);if(!r||r.generation!==n)return;let i=r.runtime,a=r.publishedGeneration;r.runtime=t,r.publishedGeneration=n;try{i!==t&&this._trackRunning(e,r)}finally{try{this._notifySubscribers(),i!==void 0&&i!==t&&xT(this.replacedSubscribers)}finally{a===n&&i!==void 0&&i!==t&&OA(i)}}}replacedSubscribers=new Set;__internal_subscribeRuntimeReplaced(e){return this.replacedSubscribers.add(e),()=>this.replacedSubscribers.delete(e)}_trackRunning(e,t){let n=t.unsubscribeRunning;t.unsubscribeRunning=void 0;try{n?.()}finally{let n=t.runtime;if(!n)this._setRunning(t,!1);else{let r=hA(n);t.isRunning!==r&&(t.isRunning=r,queueMicrotask(()=>xT(this.runningSubscribers)));let i=[n.subscribe(()=>{this._setRunning(t,hA(n))}),...uj.map(t=>n.unstable_on(t,()=>{DC(this.threadEventSubscribers,{threadId:e,type:t},`Thread event "${t}"`)}))];t.unsubscribeRunning=()=>ST(i)}}}_setRunning(e,t){e.isRunning!==t&&(e.isRunning=t,xT(this.runningSubscribers))}stopThreadRuntime(e){let t=this.instances.get(e);try{t?.unsubscribeRunning?.()}finally{t?.runtime&&OA(t.runtime),t?.destroy.abort(),this.instances.delete(e),this.pendingThreadAdapters.delete(e),this._syncHostThreads(),this._notifySubscribers()}}setRuntimeHook(e){if(this.runtimeHook===e)return;this.runtimeHook=e;let t=this.hostStore.getState();this.hostStore.setState({...t,hookEpoch:t.hookEpoch+1})}__internal_setDefaultAdapters(e){let t=this.adapterStore.getState();t.defaultAdapters!==e&&this.adapterStore.setState({...t,defaultAdapters:e})}__internal_setThreadAdapters(e,t){let n=this.adapterStore.getState(),r=new Map(n.threadAdapters);t===null?r.delete(e):r.set(e,t),this.adapterStore.setState({...n,threadAdapters:r})}__internal_dispose(){for(let e of[...this.instances.keys()])try{this.stopThreadRuntime(e)}catch(e){console.error(`[assistant-ui] Thread runtime cleanup threw while stopping a thread`,e)}}_syncHostThreads(){let e=this.hostStore.getState();this.hostStore.setState({...e,threads:Array.from(this.instances.entries()).map(([e,{generation:t,destroy:n}])=>({id:e,generation:t,destroySignal:n.signal}))})}_threadElements(e,{threads:t,hookEpoch:n},r){let i=this.runtimeHook;return t.map(({id:t,generation:a,destroySignal:o})=>{let s=this.pendingThreadAdapters.has(t)?this.pendingThreadAdapters.get(t):r.threadAdapters.get(t)??r.defaultAdapters;return hC(`${t}:${a}:${n}`,lj({threadId:t,generation:a,parentList:this.parent,runtimeHook:i,parentClient:e,adapters:s,publish:this._publish,destroySignal:o}))})}__internal_useHost(e){let t=YT(this.hostStore),n=YT(this.adapterStore);return SC(this._threadElements(e,t,n))}__internal_RenderThreadRuntimes=({provider:e})=>(YT(this.hostStore),Array.from(this.instances.entries()).map(([t,{generation:n}])=>(0,q.jsx)(this._OuterActiveThreadProvider,{threadId:t,provider:e},`${t}:${n}`)));__internal_Host=({parentClient:e})=>{let t=YT(this.hostStore),n=YT(this.adapterStore),r=this._threadElements(e,t,n),{effects:i}=wC(function(){return SC(r)});return sS(i),null};_OuterActiveThreadProvider=hS(({threadId:e,provider:t})=>{let n=iS(()=>new PA(this.parent).getItemById(e),[e]),r=rS(!1);return oS(()=>{},[t]),(0,q.jsx)(zk,{runtime:n,children:(0,q.jsx)(t,{children:(0,q.jsx)(this._AdapterSink,{threadId:e,detectorRef:r})})})});_AdapterSink=({threadId:e,detectorRef:t})=>{let n=vO();return this.pendingThreadAdapters.set(e,n),sS(()=>(this.__internal_setThreadAdapters(e,n),()=>{this.pendingThreadAdapters.get(e)===n&&this.pendingThreadAdapters.delete(e),this.__internal_setThreadAdapters(e,null)}),[e,n]),(0,q.jsx)(dj,{detectorRef:t})}};function pj(e,t,n,...r){if(!n)return;let i=n=>{try{console.error(`[${e}] ${t} callback threw an error`,n)}catch{}};try{let e=n(...r);if(e!==null&&(typeof e==`object`||typeof e==`function`)&&`then`in e&&typeof e.then==`function`)return Promise.resolve(e).then(()=>void 0,e=>i(e))}catch(e){i(e)}}var mj=(e,t,n)=>n.reduce((e,n)=>n?.(e,t)??e,e),hj=class extends TT{_pendingTransforms=[];_completedOptimistics=[];_nextTransformOrder=0;_epoch=0;_baseValue;_cachedValue;constructor(e){super(),this._baseValue=e,this._cachedValue=e}_updateState(){let e=[...this._pendingTransforms.map(e=>({order:e.order,apply:t=>mj(t,e.task,[e.loading,e.optimistic])})),...this._completedOptimistics.map(({order:e,optimistic:t})=>({order:e,apply:t}))].sort((e,t)=>e.order-t.order);this._cachedValue=e.reduce((e,t)=>t.apply(e),this._baseValue),this._notifySubscribers()}get baseValue(){return this._baseValue}get value(){return this._cachedValue}update(e){this._baseValue=e,this._updateState()}reset(e){this._epoch++,this._pendingTransforms.length=0,this._completedOptimistics.length=0,this._baseValue=e,this._cachedValue=e,this._notifySubscribers()}async optimisticUpdate(e){let t=this._epoch,n=this._nextTransformOrder++,r=e.execute(),i={...e,order:n,task:r};try{this._pendingTransforms.push(i),this._updateState();let n=await r;if(t!==this._epoch)return n;this._baseValue=mj(this._baseValue,n,[e.optimistic,e.then]);for(let t of this._completedOptimistics)(e.then||t.order>i.order)&&(this._baseValue=t.optimistic(this._baseValue));return e.optimistic&&(this._completedOptimistics.push({order:i.order,optimistic:e.optimistic}),this._completedOptimistics.sort((e,t)=>e.order-t.order)),n}finally{let e=this._pendingTransforms.indexOf(i);e>-1&&this._pendingTransforms.splice(e,1),this._pendingTransforms.length===0&&(this._completedOptimistics.length=0),this._updateState()}}},gj=Error("This is the empty thread, a placeholder for the main thread. You cannot perform any actions on this thread instance. This error is probably because you tried to call a thread method in your render function. Call the method inside a `useEffect` hook instead."),_j=new class extends yA{get error(){return gj}messages=[];composer=vA(gj,!0);isLoading=!0;getMessageById(){}getBranches(){return[]}export(){return{messages:[]}}subscribe(){return()=>{}}waitForUpdate(){return Promise.reject(gj)}};function vj(e){return e}var yj=`__LOCALID_`,bj=e=>e||void 0,xj=(e,t)=>{let n=[...t.threadIds],r=[...t.archivedThreadIds],i=tx(t.threadIdMap),a=tx(t.threadData),o=new Set([...n,...r]);for(let t of e){switch(t.status){case`regular`:case`archived`:break;default:{let e=t.status;throw Error(`Unsupported state: ${e}`)}}let e=i[t.remoteId],s=e===void 0?void 0:a[e],c=s?.id??t.remoteId,l=e??vj(c),u=s!==void 0&&s.status!==`new`?s.initializeTask:void 0;o.has(c)?s!==void 0&&s.status!==t.status&&(t.status===`regular`?(r=r.filter(e=>e!==c),n.push(c)):(n=n.filter(e=>e!==c),r.push(c))):(o.add(c),t.status===`regular`?n.push(c):r.push(c)),i[c]=l,i[t.remoteId]=l,a[l]={...s?.localOrigin===!0?{localOrigin:!0}:{},id:c,remoteId:t.remoteId,externalId:t.externalId,status:t.status,title:t.title,lastMessageAt:t.lastMessageAt,custom:t.custom,initializeTask:u??Promise.resolve({remoteId:t.remoteId,externalId:t.externalId})}}return{threadIds:n,archivedThreadIds:r,threadIdMap:i,threadData:a}},Sj=()=>({isLoading:!0,loadError:void 0,isLoadingMore:!1,cursor:void 0,newThreadId:void 0,threadIds:[],archivedThreadIds:[],threadIdMap:tx(),threadData:tx()}),Cj=e=>{let t;do t=`${yj}${GE()}`;while(e.threadIdMap[t]);let n=vj(t);return{id:t,state:{...e,newThreadId:t,threadIdMap:tx(e.threadIdMap,{[t]:n}),threadData:tx(e.threadData,{[n]:{status:`new`,id:t,remoteId:void 0,externalId:void 0,title:void 0,custom:void 0,localOrigin:!0}})}}},wj=(e,t,n)=>{let r=new Set(e.threadIds),i=new Set(e.archivedThreadIds),a=[],o=[],s=(e,t)=>e.has(t.id)||t.remoteId!==void 0&&e.has(t.remoteId);for(let t of Object.values(e.threadData)){let e=n.get(t.id);(e===void 0||e===`new`)&&(e!==void 0||t.localOrigin===!0)&&(t.status===`regular`&&!s(r,t)?(a.push(t),r.add(t.id)):t.status===`archived`&&!s(i,t)&&(o.push(t),i.add(t.id)))}if(a.length===0&&o.length===0)return e;let c=(e,t)=>{let n=e.indexOf(t.id);if(n!==-1)return n;let r=t.remoteId===void 0?-1:e.indexOf(t.remoteId);return r===-1?2**53-1:r};return a.sort((e,n)=>c(t.threadIds,e)-c(t.threadIds,n)),o.sort((e,n)=>c(t.archivedThreadIds,e)-c(t.archivedThreadIds,n)),{...e,threadIds:[...a.map(e=>e.id),...e.threadIds],archivedThreadIds:[...o.map(e=>e.id),...e.archivedThreadIds]}},Tj=e=>new Map(Object.values(e.threadData).map(e=>[e.id,e.status])),Ej=(e,t)=>{let n=Object.hasOwn(e.threadIdMap,t)?e.threadIdMap[t]:void 0;if(n!==void 0)return Object.hasOwn(e.threadData,n)?e.threadData[n]:void 0},Dj=(e,t,n,r,i)=>{let a=vj(t),o=Object.hasOwn(e.threadData,a)?e.threadData[a]:void 0;if(!o)return{state:e,removedMappingId:void 0,survivorMappingId:a};let s=Object.hasOwn(e.threadIdMap,n)?e.threadIdMap[n]:void 0,c=s!==void 0&&s!==a&&Object.hasOwn(e.threadData,s)?e.threadData[s]:void 0,l=s!==void 0&&c!==void 0?{mappingId:s,data:c}:void 0,u=i!==void 0&&Object.hasOwn(e.threadIdMap,i)?e.threadIdMap[i]:void 0,d=l!==void 0&&u===l.mappingId?l.mappingId:a,f=l===void 0?void 0:d===a?l.mappingId:a,p=r??l?.data.externalId,m=tx(e.threadData);f!==void 0&&delete m[f];let h={...o,id:d,initializeTask:Promise.resolve({remoteId:n,externalId:p}),remoteId:n,externalId:p};m[d]={...l?.data,...h,title:o.title??l?.data.title,lastMessageAt:(`lastMessageAt`in o?o.lastMessageAt:void 0)??(l&&`lastMessageAt`in l.data?l.data.lastMessageAt:void 0),custom:o.custom??l?.data.custom};let g=tx(e.threadIdMap);if(f!==void 0)for(let[e,t]of Object.entries(g))t===f&&(g[e]=d);g[t]=d,g[n]=d;let _=e=>l===void 0?e:e.filter(e=>e!==l.data.id).map(e=>e===o.id?d:e);return{state:{...e,threadIds:_(e.threadIds),archivedThreadIds:_(e.archivedThreadIds),threadIdMap:g,threadData:m},removedMappingId:f,survivorMappingId:d}},Oj=(e,t,n,r)=>{let i=Ej(e,t);if(!i)return e;let{id:a,status:o}=i;if(o===n)return e;let s;if(n!==`deleted`){if(i.status===`new`){if(r===void 0)return e;s={...i,initializeTask:r,status:n}}else s={...i,status:n}}let c={...e};switch(o){case`new`:c.newThreadId=void 0;break;case`regular`:c.threadIds=c.threadIds.filter(e=>e!==a);break;case`archived`:c.archivedThreadIds=c.archivedThreadIds.filter(e=>e!==a);break;default:throw Error(`Unsupported state: ${o}`)}switch(n){case`regular`:c.threadIds=[a,...c.threadIds];break;case`archived`:c.archivedThreadIds=[a,...c.archivedThreadIds];break;case`deleted`:{let n=e.threadIdMap[t],r=tx(c.threadData);delete r[n],c.threadData=r;let i=tx(c.threadIdMap);for(let[e,t]of Object.entries(i))t===n&&delete i[e];c.threadIdMap=i;break}default:throw Error(`Unsupported state: ${n}`)}return s!==void 0&&(c.threadData={...c.threadData,[a]:s}),c},kj=(e,t,n)=>Oj(e,t,n,void 0),Aj=(e,t,n)=>Oj(e,t,`regular`,n),jj=class extends Error{[XT]=!0;constructor(){super(`Thread list adapter changed while an operation was pending.`),this.name=`ThreadListAdapterChangedError`}};function Mj(e,t){let n=e.get(t);return n===void 0&&(n={generations:new Set,pendingClaim:null,inFlightClaims:new Set,manualTitle:void 0,latestExplicit:null,nextOrder:0},e.set(t,n)),n}function Nj(e,t,n){n.generations.size===0&&n.pendingClaim===null&&n.inFlightClaims.size===0&&n.manualTitle===void 0&&e.get(t)===n&&e.delete(t)}function Pj(e,t){return!t.superseded&&(e.latestExplicit?.order??0)<=t.order}function Fj(e,t){return(e.latestExplicit?.order??0)<t.order}function Ij(e,t,n){let r=Mj(e,t),i,a=new Promise(e=>{i=e}),o={title:n,order:++r.nextOrder,settled:a,settle:i};r.pendingClaim=o,r.inFlightClaims.add(o);for(let e of r.generations)e.order<o.order&&(e.claim=o);return o}function Lj(e,t,n,r){n.settle(r);let i=e.get(t);i!==void 0&&(i.inFlightClaims.delete(n),i.pendingClaim===n&&(i.pendingClaim=null,r&&(i.manualTitle=n.title)),Nj(e,t,i))}function Rj(e,t,n){let r=n.manualTitle;if(r!==void 0)return n.manualTitle=void 0,Nj(e,t,n),r}function zj(e,t){e.delete(t)}function Bj(e,t,n){let r=Mj(e,t);if(n&&r.pendingClaim===null&&Rj(e,t,r)!==void 0)return null;let i,a=new Promise(e=>{i=e}),o={automatic:n,order:++r.nextOrder,claim:n?r.pendingClaim:null,beforeGenerationClaims:n?[]:[...r.inFlightClaims],superseded:!1,persisted:a,settlePersisted:i};if(!n){r.pendingClaim=null,r.manualTitle=void 0,r.latestExplicit=o;for(let e of r.generations)e.automatic&&(e.superseded=!0)}return r.generations.add(o),o}async function Vj({states:e,threadId:t,automatic:n,generate:r,rename:i,applyTitle:a}){let o=Mj(e,t),s=Bj(e,t,n);if(s===null)return;let c,l=s.order,u=async e=>{let t=await e.settled;if(s.claim===e)return t||(s.claim=null,o.pendingClaim===e&&(o.pendingClaim=null)),t},d=()=>n&&Rj(e,t,o)!==void 0,f=async()=>{if(c!==void 0)for(;;){let e=s.claim;if(e!==null&&e.order>l&&Fj(o,e)){await u(e)===!0&&(c=e.title,l=e.order,await i(e.title));continue}let t=o.latestExplicit;if(t===null||t.order<=l)return;let n=await t.persisted;if(o.latestExplicit===t){if(l=t.order,n===void 0||n===c)return;c=n,await i(n)}}},p=async()=>{if(s.beforeGenerationClaims.length>0&&await Promise.all(s.beforeGenerationClaims.map(e=>e.settled)),s.claim!==null){let e=await u(s.claim);if(e===!0){s.superseded=!0;return}if(e===!1&&d())return}if(!Pj(o,s))return;let e=!1,t;for(await r(async n=>{e=!0,t=n,n!==void 0&&(c=n);let r=s.claim;if(r!==null){if(await u(r)!==!1)return;if(d()){s.superseded=!0;return}}Pj(o,s)&&await a(t)});;){let n=s.claim;if(n===null)return;let r=await u(n);if(r!==void 0){if(r===!1){if(d())return;e&&Pj(o,s)&&await a(t);return}if(!Fj(o,n))return;if(await i(n.title),c=n.title,l=n.order,s.claim===n){if(!Pj(o,s))return;await a(n.title),s.superseded=!0;return}}}};try{await p(),await f()}finally{s.settlePersisted(c),o.generations.delete(s),Nj(e,t,o)}}var Hj=(e,t)=>Error(`Thread "${e}" not found while ${t}.`),Uj=(e,t,n)=>Error(`Thread "${e}" has status "${t}", so it cannot ${n}.`),Wj=Sj(),Gj=class extends TT{_options;_hookManager;_runtimeAdapters;_loadThreadsPromise;_loadMorePromise;_loadGeneration=0;_adapterGeneration=0;_replaceListOnNextLoad=!1;_staleThreadIdsOnReplace;_switchGeneration=0;_switchTask;_titleStates=new Map;_mainThreadId;_state=new hj(Wj);_useAdaptersProvider=({children:e})=>{let t=this._options.adapter.unstable_useAdapters;return t===void 0?e:(0,q.jsx)(this._SynthesizedAdapters,{useAdapters:t,children:e})};_SynthesizedAdapters=({useAdapters:e,children:t})=>{let n=bO(e());return n==null?t:(0,q.jsx)(xO,{adapters:n,children:t})};resolveProvider(e){return e.unstable_Provider===void 0?e.unstable_useAdapters===void 0?gS:this._useAdaptersProvider:e.unstable_Provider}get threadItems(){return this._state.value.threadData}getLoadThreadsPromise(){if(!this._loadThreadsPromise){let e=this._loadGeneration,t=!1,n=Tj(this._state.baseValue);this._loadThreadsPromise=this._state.optimisticUpdate({execute:()=>this._options.adapter.list(),loading:t=>e===this._loadGeneration?{...t,isLoading:!0,loadError:void 0}:t,then:(r,i)=>{if(e!==this._loadGeneration)return r;if(this._replaceListOnNextLoad)return this._replaceListOnNextLoad=!1,t=!0,this._replaceWithThreads({...r,loadError:void 0},i.threads,bj(i.nextCursor));let a=xj(i.threads,{threadIds:[],archivedThreadIds:[],threadIdMap:{...r.threadIdMap},threadData:{...r.threadData}});return wj({...r,isLoading:!1,loadError:void 0,cursor:bj(i.nextCursor),threadIds:a.threadIds,archivedThreadIds:a.archivedThreadIds,threadIdMap:a.threadIdMap,threadData:a.threadData},r,n)}}).catch(n=>{if(e===this._loadGeneration){if(console.error(`[assistant-ui] thread list load failed:`,n),this._loadThreadsPromise=void 0,!this._replaceListOnNextLoad){this._state.update({...this._state.baseValue,isLoading:!1,loadError:n});return}this._replaceListOnNextLoad=!1,t=!0,this._state.update(this._replaceWithThreads({...this._state.baseValue,loadError:n},[],void 0))}}).then(()=>{if(!t)return;let e=this._options.threadId;e!==void 0&&this.getItemById(e)?.id!==this._mainThreadId&&this._switchToThreadFromProp(e).catch(()=>{})})}return this._loadThreadsPromise}loadMore(){if(this._loadMorePromise)return this._loadMorePromise;let e=this._state.value;if(e.cursor===void 0||e.isLoading)return Promise.resolve();let t=this._loadGeneration,n=this._options.adapter,r=e.cursor,i=this._state.optimisticUpdate({execute:()=>n.list({after:r}),loading:e=>t===this._loadGeneration?{...e,isLoadingMore:!0}:e,then:(e,r)=>{if(t!==this._loadGeneration||n!==this._options.adapter)return e;let i=xj(r.threads,{threadIds:[...e.threadIds],archivedThreadIds:[...e.archivedThreadIds],threadIdMap:{...e.threadIdMap},threadData:{...e.threadData}});return{...e,isLoadingMore:!1,cursor:bj(r.nextCursor),threadIds:i.threadIds,archivedThreadIds:i.archivedThreadIds,threadIdMap:i.threadIdMap,threadData:i.threadData}}}).catch(e=>{t===this._loadGeneration&&console.error(`[assistant-ui] thread list loadMore failed:`,e)}).then(()=>{this._loadMorePromise===i&&(this._loadMorePromise=void 0)});return this._loadMorePromise=i,i}constructor(e,t){super(),this._state.subscribe(()=>{this._notifySubscribers(),this._notifyThreadIdChange()}),this._runtimeAdapters={modelContext:t},this._hookManager=new fj(e.runtimeHook,this),this._hookManager.__internal_setDefaultAdapters(this._runtimeAdapters),this._hookManager.__internal_subscribeRunningChanged(()=>this._notifySubscribers()),this._hookManager.__internal_subscribeRuntimeReplaced(()=>{queueMicrotask(()=>this._notifySubscribers())}),this.providerStore=new ET(this.resolveProvider(e.adapter)),this.__internal_setOptions(e),this.switchToNewThread()}_initialThreadLoaded=!1;providerStore;__internal_setOptions(e){if(this._options===e)return;let t=this._options!==void 0&&this._options.adapter!==e.adapter,n=this._initialThreadLoaded&&this._options!==void 0&&this._options.threadId!==e.threadId;this._options=e,this.providerStore.setState(this.resolveProvider(e.adapter)),this._hookManager.setRuntimeHook(e.runtimeHook),t&&(this._loadGeneration++,this._adapterGeneration++,this._switchGeneration++,this._switchTask=void 0,this._loadThreadsPromise=void 0,this._loadMorePromise=void 0,this._replaceListOnNextLoad=!0,this._staleThreadIdsOnReplace=new Set(Object.values(this._state.baseValue.threadData).filter(e=>e.status!==`new`).map(e=>e.id)),this._state.update({...this._state.baseValue,cursor:void 0,loadError:void 0}),this._titleStates.clear()),n&&this._switchToThreadFromProp(e.threadId).catch(()=>{})}_requireAdapterGeneration(e){if(e!==this._adapterGeneration)throw new jj}_requireAdapterSettled(){if(this._replaceListOnNextLoad)throw new jj}_replaceWithThreads(e,t,n){let r=[];if(e.newThreadId){let t=Object.hasOwn(e.threadIdMap,e.newThreadId)?e.threadIdMap[e.newThreadId]:void 0,n=t&&Object.hasOwn(e.threadData,t)?e.threadData[t]:void 0;n?.status===`new`&&r.push(n)}let i=this._staleThreadIdsOnReplace;if(i)for(let t of Object.values(e.threadData))i.has(t.id)||(t.status===`new`||t.remoteId!==void 0)&&r.push(t);this._staleThreadIdsOnReplace=void 0;let a={threadIds:[],archivedThreadIds:[],threadIdMap:tx(),threadData:tx()};for(let e of r){let t=vj(e.id);Object.hasOwn(a.threadData,t)||(a.threadIdMap[e.id]=t,e.remoteId!==void 0&&(a.threadIdMap[e.remoteId]=t),a.threadData[t]=e)}let{threadIds:o,archivedThreadIds:s,threadIdMap:c,threadData:l}=xj(t,a);for(let e of r){if(e.remoteId===void 0)continue;let t=vj(e.id),n=Object.hasOwn(l,t)?l[t]:void 0;n!==void 0&&(n.status===`regular`&&!o.includes(n.id)?o.push(n.id):n.status===`archived`&&!s.includes(n.id)&&s.push(n.id))}let u={...e,isLoading:!1,cursor:n,threadIds:o,archivedThreadIds:s,threadIdMap:c,threadData:l,newThreadId:e.newThreadId!==void 0&&!Object.hasOwn(c,e.newThreadId)?void 0:e.newThreadId};if(Ej(u,this._mainThreadId)===void 0){let e=u.newThreadId;if(e!==void 0)this._mainThreadId=e;else{let e=Cj(u);this._mainThreadId=e.id,u=e.state}this._options.threadId===void 0?this._notifyThreadIdChange():this._lastNotifiedThreadId=void 0}let d=new Set(Object.values(u.threadData).map(e=>e.id));for(let t of Object.values(e.threadData))if(!d.has(t.id))try{this._hookManager.stopThreadRuntime(t.id)}catch(e){console.error(`[assistant-ui] Thread runtime cleanup threw while stopping a thread`,e)}return this._hookManager.startThreadRuntime(this._mainThreadId).then(()=>this._notifySubscribers(),()=>void 0),u}__internal_load(){if(this.getLoadThreadsPromise(),this._initialThreadLoaded)return;this._initialThreadLoaded=!0;let e=this._options.threadId??this._options.initialThreadId;e!==void 0&&(this._options.threadId===void 0?this.switchToThread(e):this._switchToThreadFromProp(e)).catch(()=>{})}async reloadMainThread(){let e=this._mainThreadId;if(e===void 0||this.getItemById(e)?.status===`new`)return;let t=this._hookManager.getThreadRuntimeCore(e);try{t?.unstable_refetchThread?await t.unstable_refetchThread():await this._hookManager.__internal_restartThreadRuntime(e)}catch(t){if(e!==this._mainThreadId)return;throw t}e===this._mainThreadId&&this._notifySubscribers()}reload(){return this._loadGeneration++,this._loadThreadsPromise=void 0,this._loadMorePromise=void 0,this._state.update({...this._state.baseValue,cursor:void 0}),this.getLoadThreadsPromise()}get isLoading(){return this._state.value.isLoading}get loadError(){return this._state.value.loadError}get isLoadingMore(){return this._state.value.isLoadingMore}get hasMore(){return this._state.value.cursor!==void 0}get threadIds(){return this._state.value.threadIds}get archivedThreadIds(){return this._state.value.archivedThreadIds}get newThreadId(){return this._state.value.newThreadId}get mainThreadId(){return this._mainThreadId}get _mainThreadRemoteId(){if(this._mainThreadId!==void 0)return Ej(this._state.value,this._mainThreadId)?.remoteId}_lastNotifiedThreadId=void 0;_notifyThreadIdChange(e=!0){let t=this._mainThreadRemoteId;this._lastNotifiedThreadId!==t&&(this._lastNotifiedThreadId=t,e&&pj(`assistant-ui`,`onThreadIdChange`,this._options.onThreadIdChange,t))}getMainThreadRuntimeCore(){return this._hookManager.getThreadRuntimeCore(this._mainThreadId)||_j}getThreadRuntimeCore(e){let t=this.getItemById(e);if(!t)throw Hj(e,`getting its runtime`);let n=this._hookManager.getThreadRuntimeCore(t.id);if(!n)throw Error(`Runtime for thread "${e}" not found while getting its runtime.`);return n}unstable_isThreadRunning(e){let t=this.getItemById(e);return t?this._hookManager.__internal_isThreadRunning(t.id):!1}unstable_subscribeThreadEvents(e){return this._hookManager.__internal_subscribeThreadEvents(e)}getItemById(e){return Ej(this._state.value,e)}switchToThread(e,t){return this._startSwitchToThread(e,t,!0)}_startSwitchToThread(e,t,n){let r=++this._switchGeneration,i=this._switchToThread(e,t,r,n);return this._switchTask=i,i}async _switchToThread(e,t,n,r){if(this._replaceListOnNextLoad&&e!==this._state.value.newThreadId)throw new jj;let i=this.getItemById(e);if(!i){let t=await this._options.adapter.fetch(e);if(n!==this._switchGeneration)return;let r=this._state.value,a=vj(t.remoteId),o={...r.threadData,[a]:{id:a,initializeTask:Promise.resolve({remoteId:t.remoteId,externalId:t.externalId}),remoteId:t.remoteId,externalId:t.externalId,status:t.status,title:t.title,lastMessageAt:t.lastMessageAt,custom:t.custom}},s={...r.threadIdMap,[t.remoteId]:a},c=t.remoteId,l=t.status===`regular`?r.threadIds.includes(c):r.archivedThreadIds.includes(c),u=r.threadIds.filter(e=>e!==c),d=r.archivedThreadIds.filter(e=>e!==c),f=t.status===`regular`?l?r.threadIds:[...u,c]:u,p=t.status===`archived`?l?r.archivedThreadIds:[...d,c]:d;this._state.update({...r,threadIds:f,archivedThreadIds:p,threadIdMap:s,threadData:o}),i=this.getItemById(e)}if(!i)throw Hj(e,`switching to it`);if(this._mainThreadId===i.id)return;let a=this._hookManager.startThreadRuntime(i.id);if(this.mainThreadId===void 0?a.then(()=>this._notifySubscribers(),()=>void 0):await a,n!==this._switchGeneration)return;let o=this.getItemById(i.id);o?.id===i.id&&(o.status===`archived`&&t?.unarchive!==!1&&(await o.initializeTask,n!==this._switchGeneration||(o=this.getItemById(i.id),o?.id!==i.id)||o.status===`archived`&&(await this.unarchive(o.id),n!==this._switchGeneration||(o=this.getItemById(i.id),o?.id!==i.id)))||(this._mainThreadId=o.id,this._notifySubscribers(),this._notifyThreadIdChange(r)))}switchToNewThread(){return this._startSwitchToNewThread(!0)}_switchToThreadFromProp(e){return e===void 0?rO(`create`,()=>this._startSwitchToNewThread(!1)):rO(`switch`,()=>this._startSwitchToThread(e,void 0,!1))}_startSwitchToNewThread(e){let t=++this._switchGeneration,n=this._switchToNewThread(t,e);return this._switchTask=n,n}async _switchToNewThread(e,t){for(;this._state.baseValue.newThreadId!==void 0&&this._state.value.newThreadId===void 0;)if(await this._state.waitForUpdate(),e!==this._switchGeneration)return;let n=this._state.baseValue,r=this._state.value.newThreadId;if(r===void 0){let e=Cj(n);r=e.id,this._state.update(e.state)}return this._switchToThread(r,void 0,e,t)}initialize=async e=>{let t=this._options.adapter,n=this._adapterGeneration;if(this._state.value.newThreadId!==e){this._requireAdapterSettled();let t=this.getItemById(e);if(!t)throw Hj(e,`initializing it`);if(t.status===`new`)throw Uj(e,t.status,`be initialized here`);let{remoteId:r,externalId:i}=await t.initializeTask;return this._requireAdapterGeneration(n),{remoteId:r,externalId:i}}this._requireAdapterGeneration(n);let r=t.initialize(e),i,{remoteId:a,externalId:o}=await this._state.optimisticUpdate({execute:()=>r,optimistic:t=>Aj(t,e,r),then:(t,{remoteId:r,externalId:a})=>{if(n!==this._adapterGeneration)return t;let o=Dj(t,e,r,a,e);return i=o.removedMappingId,i===this._mainThreadId&&(this._mainThreadId=o.survivorMappingId),o.state}});return this._requireAdapterGeneration(n),i!==void 0&&this._hookManager.stopThreadRuntime(i),{remoteId:a,externalId:o}};generateTitle=async(e,t)=>{this._requireAdapterSettled();let n=this._options.adapter,r=this._adapterGeneration,i=this.getItemById(e);if(!i)throw Hj(e,`generating its title`);if(i.status===`new`)throw Uj(e,i.status,`generate a title`);let{remoteId:a}=await i.initializeTask;this._requireAdapterGeneration(r);let o=this._hookManager.getThreadRuntimeCore(i.id);if(!o)return;let s=o.messages.filter(aj);await Vj({states:this._titleStates,threadId:i.id,automatic:t?.automatic===!0,generate:async e=>{let t=await n.generateTitle(a,s);this._requireAdapterGeneration(r),await oj(t,e)},rename:async e=>{this._requireAdapterGeneration(r),await n.rename(a,e)},applyTitle:async e=>{await this._state.optimisticUpdate({execute:async()=>{},optimistic:t=>{if(r!==this._adapterGeneration)return t;let n=Ej(t,i.id);return n?{...t,threadData:{...t.threadData,[n.id]:{...n,title:e}}}:t}})}})};async rename(e,t){this._requireAdapterSettled();let n=this._options.adapter,r=this._adapterGeneration,i=this.getItemById(e);if(!i)throw Hj(e,`renaming it`);if(i.status===`new`)throw Uj(e,i.status,`be renamed`);let a=Ij(this._titleStates,i.id,t);try{let o=await this._state.optimisticUpdate({execute:async()=>{let{remoteId:e}=await i.initializeTask;return this._requireAdapterGeneration(r),n.rename(e,t)},optimistic:n=>{let r=Ej(n,e);return r?{...n,threadData:{...n.threadData,[r.id]:{...r,title:t}}}:n}});return Lj(this._titleStates,i.id,a,!0),o}catch(e){throw Lj(this._titleStates,i.id,a,!1),e}}async updateCustom(e,t){this._requireAdapterSettled();let n=this._options.adapter,r=this._adapterGeneration,i=this.getItemById(e);if(!i)throw Hj(e,`updating its custom metadata`);if(i.status===`new`)throw Uj(e,i.status,`update custom metadata`);if(!n.updateCustom)throw Error(`Remote thread list adapter does not support updating custom metadata`);return this._state.optimisticUpdate({execute:async()=>{let{remoteId:e}=await i.initializeTask;if(this._requireAdapterGeneration(r),!n.updateCustom)throw Error(`Remote thread list adapter does not support updating custom metadata`);return n.updateCustom(e,t)},optimistic:n=>{let r=Ej(n,e);return r?{...n,threadData:{...n.threadData,[r.id]:{...r,custom:t}}}:n}})}async _ensureThreadIsNotMain(e){if(e===this.newThreadId)throw Error(`Cannot ensure new thread is not main`);let t;for(;e===this._mainThreadId;){if(e===this.newThreadId)throw Error(`Cannot ensure new thread is not main`);let n=this._switchTask,r=!n||n===t;r&&(n=this.switchToNewThread()),t=n;try{await n}catch(e){if(r&&this._switchTask===n)throw e}}}async archive(e){this._requireAdapterSettled();let t=this._options.adapter,n=this._adapterGeneration,r=this.getItemById(e);if(!r)throw Hj(e,`archiving it`);if(r.status!==`regular`)throw Uj(e,r.status,`be archived`);return await this._ensureThreadIsNotMain(r.id),this._requireAdapterGeneration(n),this._state.optimisticUpdate({execute:async()=>{let{remoteId:e}=await r.initializeTask;return this._requireAdapterGeneration(n),t.archive(e)},optimistic:e=>kj(e,r.id,`archived`)})}async unarchive(e){this._requireAdapterSettled();let t=this._options.adapter,n=this._adapterGeneration,r=this.getItemById(e);if(!r)throw Hj(e,`unarchiving it`);if(r.status!==`archived`)throw Uj(e,r.status,`be unarchived`);return this._state.optimisticUpdate({execute:async()=>{try{let{remoteId:e}=await r.initializeTask;return this._requireAdapterGeneration(n),await t.unarchive(e)}catch(e){throw n===this._adapterGeneration&&await this._ensureThreadIsNotMain(r.id),e}},optimistic:e=>kj(e,r.id,`regular`)})}async delete(e){this._requireAdapterSettled();let t=this._options.adapter,n=this._adapterGeneration,r=this.getItemById(e);if(!r)throw Hj(e,`deleting it`);if(r.status!==`regular`&&r.status!==`archived`)throw Uj(e,r.status,`be deleted`);await this._ensureThreadIsNotMain(r.id),this._requireAdapterGeneration(n);let i=await this._state.optimisticUpdate({execute:async()=>{let{remoteId:e}=await r.initializeTask;return this._requireAdapterGeneration(n),await t.delete(e)},optimistic:e=>kj(e,r.id,`deleted`)});return this._hookManager.stopThreadRuntime(r.id),zj(this._titleStates,r.id),i}__internal_dispose(){this._hookManager.__internal_dispose()}async detach(e){let t=this._adapterGeneration,n=this.getItemById(e);if(!n)throw Hj(e,`detaching it`);if(n.status!==`regular`&&n.status!==`archived`)throw Uj(e,n.status,`be detached`);await this._ensureThreadIsNotMain(n.id),this._requireAdapterGeneration(t),this._hookManager.stopThreadRuntime(n.id)}boundIdsStore=new ET([]);__internal_RenderComponent=()=>{let e=fS();oS(()=>(this.boundIdsStore.setState([...this.boundIdsStore.getState(),e]),()=>{this.boundIdsStore.setState(this.boundIdsStore.getState().filter(t=>t!==e))}),[e]);let t=YT(this.boundIdsStore),n=YT(this.providerStore),r=lT();return(t.length===0||t[0]===e)&&(0,q.jsxs)(xO,{adapters:this._runtimeAdapters,children:[(0,q.jsx)(this._hookManager.__internal_RenderThreadRuntimes,{provider:n}),(0,q.jsx)(this._hookManager.__internal_Host,{parentClient:r})]})}},Kj=class extends IA{threads;constructor(e){super(),this.threads=new Gj(e,this._contextProvider)}get RenderComponent(){return this.threads.__internal_RenderComponent}},qj=e=>{let[t]=tS(()=>new Kj(e)),[n]=tS(()=>({generation:0}));dS(()=>{let e=++n.generation;return()=>queueMicrotask(()=>{n.generation===e&&t.threads.__internal_dispose()})},[t,n]),oS(()=>{t.threads.__internal_setOptions(e),t.threads.__internal_load()},[t,e]),oS(()=>{if(typeof window>`u`||typeof document>`u`)return;let e=()=>{t.threads.loadError!==void 0&&t.threads.reload()},n=()=>{document.visibilityState===`visible`&&e()};return window.addEventListener(`online`,e),document.addEventListener(`visibilitychange`,n),()=>{window.removeEventListener(`online`,e),document.removeEventListener(`visibilitychange`,n)}},[t]);let[r]=tS(()=>new FA(t));return r},Jj=e=>{let[t]=tS(()=>new ET(e.runtimeHook));sS(()=>{t.setState(e.runtimeHook)},[t,e.runtimeHook]);let n=rS(e.initialThreadId),[r]=tS(()=>function(){return YT({subscribe:t.subscribe,getState:t.getState,getServerSnapshot:t.getState})()}),i=cS(t=>e.onThreadIdChange?.(t)),a=iS(()=>({adapter:e.adapter,allowNesting:e.allowNesting,threadId:e.threadId,initialThreadId:n.current,runtimeHook:r,onThreadIdChange:i}),[e.adapter,e.allowNesting,e.threadId,r]);if(lT().threadListItem.source!==null){if(!a.allowNesting)throw Error(`useRemoteThreadListRuntime cannot be nested inside another RemoteThreadListRuntime. Set allowNesting: true to allow nesting (the inner runtime will become a no-op).`);return e.runtimeHook()}return qj(a)},Yj=e=>{let t=e.type;switch(t){case`text`:return{type:`text`,text:e.text,...e.providerMetadata===void 0?void 0:{providerMetadata:e.providerMetadata},...e.parentId===void 0?void 0:{parentId:e.parentId}};case`image`:return{type:`image`,image:e.image,...e.filename==null?void 0:{filename:e.filename},...e.providerMetadata===void 0?void 0:{providerMetadata:e.providerMetadata}};case`file`:return{type:`file`,data:e.data,mimeType:e.mimeType,...e.filename==null?void 0:{filename:e.filename},...e.sourceType==null?void 0:{sourceType:e.sourceType},...e.providerMetadata==null?void 0:{providerMetadata:e.providerMetadata},...e.parentId===void 0?void 0:{parentId:e.parentId}};case`audio`:return{type:`audio`,audio:{data:e.audio.data,format:e.audio.format}};case`data`:return CO(e.data)||console.warn(`attachment data is not JSON! ${JSON.stringify(e)}`),{type:`data`,name:e.name,data:e.data};default:throw Error(`Attachment part type not supported by aui/v0: ${t}`)}},Xj=e=>{if(e.role===`user`&&e.attachments.length!==0)return e.attachments.map(({id:e,type:t,name:n,contentType:r,status:i,content:a})=>({id:e,type:t,name:n,status:i,...r==null?void 0:{contentType:r},content:a.map(Yj)}))},Zj=e=>{if(e!==void 0)try{let t=JSON.stringify(e);return t===void 0?void 0:JSON.parse(t)}catch{return}},Qj=(e,t=0)=>{if(t>100||e===void 0||typeof e==`function`)return!1;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||!e||typeof e.toJSON==`function`)return!0;if((e instanceof Map||e instanceof Set)&&e.size>0)return!1;if(Array.isArray(e)){if(Reflect.ownKeys(e).length!==e.length+1)return!1;for(let n=0;n<e.length;n++)if(!Object.hasOwn(e,n)||!Qj(e[n],t+1))return!1;return!0}return Reflect.ownKeys(e).every(n=>typeof n==`string`&&Object.getOwnPropertyDescriptor(e,n)?.enumerable===!0&&Qj(e[n],t+1))},$j=e=>{try{return!Qj(e)}catch{return!0}};function eM(e){let t=e.status?.type===`running`?{type:`incomplete`,reason:`cancelled`}:e.status,n=Xj(e);return{role:e.role,content:e.content.map(e=>{let t=e.type;switch(t){case`text`:return{type:`text`,text:e.text,...e.providerMetadata===void 0?void 0:{providerMetadata:e.providerMetadata},...e.parentId===void 0?void 0:{parentId:e.parentId}};case`reasoning`:return{type:`reasoning`,text:e.text,...e.unstable_summary===void 0?void 0:{unstable_summary:e.unstable_summary},...e.providerMetadata===void 0?void 0:{providerMetadata:e.providerMetadata},...e.parentId===void 0?void 0:{parentId:e.parentId}};case`source`:return e.sourceType===`url`?{type:`source`,sourceType:`url`,id:e.id,url:e.url,...e.title==null?void 0:{title:e.title},...e.providerMetadata==null?void 0:{providerMetadata:e.providerMetadata},...e.parentId===void 0?void 0:{parentId:e.parentId}}:{type:`source`,sourceType:`document`,id:e.id,title:e.title,mediaType:e.mediaType,...e.filename==null?void 0:{filename:e.filename},...e.providerMetadata==null?void 0:{providerMetadata:e.providerMetadata},...e.parentId===void 0?void 0:{parentId:e.parentId}};case`tool-call`:{let t=Zj(e.result);e.result!==void 0&&(t===void 0||$j(e.result))&&console.warn(t===void 0?`tool-call result for ${e.toolCallId} cannot be serialized as JSON; omitted`:`tool-call result for ${e.toolCallId} loses data in JSON; persisted as its JSON form`);let n=Zj(e.artifact);e.artifact!==void 0&&n===void 0&&console.warn(`tool-call artifact is not JSON for ${e.toolCallId}`);let r=rD(e.unstable_interactions);return{type:`tool-call`,toolCallId:e.toolCallId,toolName:e.toolName,...JSON.stringify(e.args)===e.argsText?{args:e.args}:{argsText:e.argsText},...t===void 0?void 0:{result:t},...n===void 0?void 0:{artifact:n},...e.modelContent===void 0?void 0:{modelContent:e.modelContent},...e.providerMetadata===void 0?void 0:{providerMetadata:e.providerMetadata},...e.isPreliminary?{isPreliminary:!0}:void 0,...e.isError?{isError:!0}:void 0,...e.interrupt===void 0?void 0:{interrupt:{type:e.interrupt.type,payload:e.interrupt.payload}},...e.timing===void 0?void 0:{timing:e.timing},...e.mcp===void 0?void 0:{mcp:e.mcp},...e.approval?{approval:e.approval}:void 0,...e.parentId===void 0?void 0:{parentId:e.parentId},...e.messages===void 0?void 0:{messages:e.messages.map(aM)},...r===void 0?void 0:{unstable_interactions:r}}}case`image`:return{type:`image`,image:e.image,...e.filename==null?void 0:{filename:e.filename},...e.providerMetadata==null?void 0:{providerMetadata:e.providerMetadata}};case`file`:return{type:`file`,data:e.data,mimeType:e.mimeType,...e.filename==null?void 0:{filename:e.filename},...e.sourceType?{sourceType:e.sourceType}:void 0,...e.providerMetadata==null?void 0:{providerMetadata:e.providerMetadata},...e.parentId===void 0?void 0:{parentId:e.parentId}};case`data`:return CO(e.data)||console.warn(`data part is not JSON! ${JSON.stringify(e)}`),{type:`data`,name:e.name,data:e.data};case`audio`:return{type:`audio`,audio:{data:e.audio.data,format:e.audio.format}};case`generative-ui`:return{type:`generative-ui`,spec:e.spec,...e.id===void 0?void 0:{id:e.id},...e.parentId===void 0?void 0:{parentId:e.parentId}};default:throw Error(`Message part type not supported by aui/v0: ${t}`)}}),metadata:e.metadata,...t?{status:t}:void 0,...n?{attachments:n}:void 0}}var tM=(e,t,n)=>t.flatMap(t=>{if(!NO(e,t))return[];if(t.type!==`tool-call`||t.messages===void 0)return[t];let{messages:r,...i}=t;return!Array.isArray(r)||n>=100?[i]:[{...i,messages:r.flatMap(e=>{let t=rM(e,n+1);return t?[t]:[]})}]}),nM=e=>e.flatMap(e=>{let t=PO(e,e=>NO(`user`,e));return t?[t]:[]}),rM=(e,t)=>{if(!SO(e)||!TO(e.role)||!Array.isArray(e.content))return null;let{role:n}=e,r=tM(n,e.content,t);if(n===`system`&&r.length!==1)return null;let{attachments:i,createdAt:a,status:o,metadata:s,...c}=e,l=wO(a),u=SO(s)?n===`assistant`?{...s,steps:kO(s.steps)}:{...s,steps:void 0}:s;return{...c,...l?{createdAt:a}:void 0,...n===`assistant`&&DO(o)?{status:o}:void 0,...s===void 0?void 0:{metadata:u},content:r,...n===`user`&&Array.isArray(i)?{attachments:nM(i)}:void 0}};function iM(e){try{let t=rM(e.content,0);if(!t)throw Error(`stored row is not an aui/v0 message`);return{parentId:e.parent_id,message:oM({...t,id:e.id,createdAt:e.created_at},e.id)}}catch(t){return console.warn(`aui/v0: dropping unreadable message ${e.id}`,t),null}}var aM=e=>({...eM(e),id:e.id,createdAt:e.createdAt.toISOString()}),oM=(e,t)=>FD({...e,content:e.content.map((n,r)=>n.type!==`tool-call`||n.messages===void 0?n:{...n,messages:n.messages.map((i,a)=>oM({...i,createdAt:i.createdAt===void 0?e.createdAt:new Date(i.createdAt)},i.id??`${t}-${n.toolCallId}-${r}-${a}`))})},t,{type:`complete`,reason:`unknown`}),sM=class extends Error{constructor(e){super(e),this.name=`CloudResponseError`}},cM=(e,t)=>new sM(`Invalid Assistant Cloud response for "${e}": expected ${t}`),lM=(e,t)=>{if(typeof e!=`object`||!e||Array.isArray(e))throw cM(t,`an object`);return e},uM=(e,t)=>{if(!Array.isArray(e))throw cM(t,`an array`);return e},dM=(e,t)=>{if(typeof e!=`string`)throw cM(t,`a string`);return e},fM=(e,t)=>{if(typeof e!=`number`||!Number.isFinite(e))throw cM(t,`a number`);return e},pM=(e,t)=>e===null?null:fM(e,t),mM=(e,t,n)=>{let r=dM(e,t);if(!n.includes(r))throw cM(t,`one of ${n.map(e=>`"${e}"`).join(`, `)}`);return r},hM=(e,t)=>e===null?null:dM(e,t),gM=(e,t)=>{if(typeof e!=`boolean`)throw cM(t,`a boolean`);return e},_M=(e,t)=>{if(!Number.isInteger(e))throw cM(t,`an integer`);return e},vM=(e,t)=>{if(typeof e!=`string`)throw cM(t,`a canonical ISO timestamp`);let n=new Date(e);if(Number.isNaN(n.getTime())||n.toISOString()!==e)throw cM(t,`a canonical ISO timestamp`);return n},yM=(e,t)=>lM(e,t),bM=3e4,xM=async(e,t)=>{let n=new AbortController,r=!1,i=setTimeout(()=>{r=!0,n.abort()},bM);try{return await t(n.signal)}catch(t){throw r?Error(`Assistant Cloud ${e} timed out after ${bM}ms`,{cause:t}):t}finally{clearTimeout(i)}},SM=e=>{try{let t=e.split(`.`)[1];if(!t)throw Error(`Invalid JWT format`);let n=t.replace(/-/g,`+`).replace(/_/g,`/`);for(;n.length%4!=0;)n+=`=`;let r=atob(n),i=JSON.parse(r).exp;if(!i||typeof i!=`number`)throw Error(`JWT does not contain a valid "exp" field`);return i*1e3}catch(e){throw Error(`Unable to determine the token expiry: ${e}`)}},CM=(e,t)=>{let n=dM(e,t);if(n.length===0)throw new sM(`Invalid Assistant Cloud response for "${t}": expected a non-empty string`);return n},wM=(e,t)=>{let n=lM(e,t);return{token:CM(n.token,`${t}.token`),expires_at:CM(n.expires_at,`${t}.expires_at`)}},TM=async(e,t)=>{let n;try{n=await e.json()}catch{throw new sM(`Invalid Assistant Cloud response for "${t}": expected valid JSON`)}let r=lM(n,t);return{data:r,accessToken:CM(r.access_token,`${t}.access_token`)}},EM=class{strategy=`jwt`;cachedToken=null;tokenExpiry=null;tokenRequest=null;#e;constructor(e){this.#e=e}async getAuthHeaders(){let e=Date.now();if(this.cachedToken&&this.tokenExpiry&&this.tokenExpiry-e>3e4)return{Authorization:`Bearer ${this.cachedToken}`};this.tokenRequest||=this.fetchAuthHeaders();let t=this.tokenRequest;try{return await t}finally{this.tokenRequest===t&&(this.tokenRequest=null)}}async fetchAuthHeaders(){let e=await this.#e();if(!e)return!1;let t=SM(e);return this.cachedToken=e,this.tokenExpiry=t,{Authorization:`Bearer ${e}`}}readAuthHeaders(e){let t=e.get(`Authorization`);if(!t)return;let[n,r]=t.split(` `);if(n!==`Bearer`||!r)throw Error(`Invalid auth header received`);let i=SM(r);this.cachedToken=r,this.tokenExpiry=i}},DM=class{strategy=`api-key`;#e;#t;#n;constructor(e,t,n){this.#e=e,this.#t=t,this.#n=n}async getAuthHeaders(){return{Authorization:`Bearer ${this.#e}`,"Aui-User-Id":this.#t,"Aui-Workspace-Id":this.#n}}readAuthHeaders(){}},OM=`aui:refresh_token`,kM=e=>`${OM}:${e}`,AM=e=>{try{e.removeItem(OM)}catch{}},jM=()=>{if(!(`localStorage`in globalThis))return null;try{return globalThis.localStorage}catch{return null}},MM=e=>{let t=jM();if(t)try{let n=kM(e),r=t.getItem(n);if(r)return AM(t),JSON.parse(r);let i=t.getItem(OM);if(!i)return;let a;try{a=JSON.parse(i)}catch{AM(t);return}return t.setItem(n,i),AM(t),a}catch{return}},NM=e=>!e||!e.endsWith(`/`)?e:e.slice(0,-1),PM=(e,t)=>{let n=jM();if(n)try{n.setItem(kM(e),JSON.stringify(t))}catch{}},FM=e=>{let t=jM();if(t)try{t.removeItem(kM(e))}catch{}},IM=new WeakMap,LM=()=>`navigator`in globalThis?globalThis.navigator?.locks??null:null,RM=e=>`assistant-cloud:anonymous-auth:${e}`,zM=(e,t)=>{let n=jM();if(!n)return t();let r=IM.get(n);r||(r=new Map,IM.set(n,r));let i=r.get(e);if(i)return i;let a=LM(),o=(a?a.request(RM(e),t):t()).finally(()=>{r.get(e)===o&&r.delete(e)});return r.set(e,o),o},BM=class{strategy=`anon`;baseUrl;jwtStrategy;constructor(e){this.baseUrl=e;let t=async()=>{let e=Date.now(),t=MM(this.baseUrl);if(t){if(new Date(t.expires_at).getTime()-e>3e4){let e=await xM(`refresh token request`,async e=>{let n=await fetch(`${this.baseUrl}/v1/auth/tokens/refresh`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({refresh_token:t.token}),signal:e});if(n.ok){let{data:e,accessToken:t}=await TM(n,`refresh auth token response`);return e.refresh_token!=null&&PM(this.baseUrl,wM(e.refresh_token,`refresh auth token response.refresh_token`)),t}if(n.status===429||n.status>=500)throw Error(`Assistant Cloud token refresh failed with status ${n.status}`);return null});if(e!==null)return e}else FM(this.baseUrl)}return xM(`anonymous token request`,async e=>{let t=await fetch(`${this.baseUrl}/v1/auth/tokens/anonymous`,{method:`POST`,signal:e});if(!t.ok)return null;let{data:n,accessToken:r}=await TM(t,`anonymous auth token response`);return PM(this.baseUrl,wM(n.refresh_token,`anonymous auth token response.refresh_token`)),r})};this.jwtStrategy=new EM(()=>zM(this.baseUrl,t))}async getAuthHeaders(){return this.jwtStrategy.getAuthHeaders()}readAuthHeaders(e){this.jwtStrategy.readAuthHeaders(e)}},VM=`0.2.4`,HM=class extends Error{status;code;details;constructor(e,t,n,r){super(e),this.status=t,n!==void 0&&(this.code=n),r!==void 0&&(this.details=r),this.name=`CloudAPIError`}},UM=/^[\x21-\x7e]+$/,WM=class{_auth;_baseUrl;registerSdk;sdkHeader;constructor(e){let t=new Map;if(this.registerSdk=e=>{let n=e.name.trim(),r=e.version.trim();!UM.test(n)||!UM.test(r)||t.set(`${n}/${r}`,{name:n,version:r})},this.sdkHeader=()=>[`assistant-cloud/${VM}`,...Array.from(t.values(),({name:e,version:t})=>`${e}/${t}`)].join(` `),`authToken`in e)this._baseUrl=NM(e.baseUrl),this._auth=new EM(e.authToken);else if(`apiKey`in e)this._baseUrl=NM(e.baseUrl??`https://backend.assistant-api.com`),this._auth=new DM(e.apiKey,e.userId,e.workspaceId);else if(`anonymous`in e)this._baseUrl=NM(e.baseUrl),this._auth=new BM(this._baseUrl);else throw Error(`Invalid configuration: Must provide authToken, apiKey, or anonymous configuration`)}async initializeAuth(){return!!await this._auth.getAuthHeaders()}async makeRawRequest(e,t={}){let n=await this._auth.getAuthHeaders();if(!n)throw Error(`Authorization failed`);let r={...n,...t.headers,"Content-Type":`application/json`,"Aui-Sdk":this.sdkHeader()},i=new URLSearchParams;if(t.query)for(let[e,n]of Object.entries(t.query))n!==!1&&(n===!0?i.set(e,`true`):i.set(e,n.toString()));let a=new URL(`${this._baseUrl}/v1${e}`);a.search=i.toString();let o=await fetch(a,{method:t.method??`GET`,headers:r,body:t.body?JSON.stringify(t.body):null,...t.keepalive?{keepalive:!0}:{}});if(this._auth.readAuthHeaders(o.headers),!o.ok){let e=await o.text(),t,n,r;try{let i=JSON.parse(e);if(typeof i==`object`&&i&&!Array.isArray(i)){let e=i;typeof e.message==`string`&&e.message.length>0&&(t=e.message),typeof e.error==`string`&&(n=e.error,r={...e},delete r.error)}}catch{}throw new HM(t??`Request failed with status ${o.status}, ${e}`,o.status,n,r)}return o}async makeRequest(e,t={}){let n=await this.makeRawRequest(e,t);if(n.status===204||n.headers.get(`content-length`)===`0`)return;let r=await n.text();if(r.trim()!==``)return JSON.parse(r)}},GM=20,KM=50,qM=2e3,JM=[250,1e3],YM=new WeakMap,XM=e=>{YM.get(e)?.()},ZM=class{buffer=[];timer;flushing;retryTimer;resolveRetryDelay;bestEffortRequested=!1;generation=0;cloud;isEnabled;listening=!1;constructor(e,t){this.cloud=e,this.isEnabled=t,YM.set(this,()=>this.clearPending())}track(e){if(this.isEnabled()){if(this.listen(),this.buffer.push(QM(e)),this.buffer.length>=GM){this.flush(!0);return}this.scheduleFlush()}}listen(){this.listening||typeof window>`u`||typeof document>`u`||(this.listening=!0,window.addEventListener(`pagehide`,this.flushBestEffort),document.addEventListener(`visibilitychange`,this.onVisibilityChange))}unlisten(){this.listening&&(this.listening=!1,window.removeEventListener(`pagehide`,this.flushBestEffort),document.removeEventListener(`visibilitychange`,this.onVisibilityChange))}dispose(){this.unlisten(),this.clearFlushTimer(),this.flushBestEffort()}clearPending(){this.generation++,this.buffer=[],this.clearFlushTimer(),this.interruptRetryDelay(),this.unlisten()}onVisibilityChange=()=>{document.visibilityState===`hidden`&&this.flushBestEffort()};flushBestEffort=()=>(this.flushing&&(this.bestEffortRequested=!0,this.interruptRetryDelay()),this.flush(!1));flush=async e=>{if(!this.isEnabled()){this.clearPending();return}if(this.flushing)return this.flushing;this.clearFlushTimer();let t=this.flushPending(e);return this.flushing=t,t.then(()=>{this.flushing===t&&(this.flushing=void 0,this.bestEffortRequested=!1,this.buffer.length===0?(this.clearFlushTimer(),this.unlisten()):this.flush(!0))}),t};async flushPending(e){for(;this.buffer.length>0;){if(!this.isEnabled()){this.buffer=[];return}let t=this.buffer.splice(0,KM),n=this.generation;for(let r=0;;r++)try{if(await this.cloud.makeRequest(`/events`,{method:`POST`,body:{events:t},keepalive:!0}),n!==this.generation)return;break}catch{if(n!==this.generation)return;let t=e&&!this.bestEffortRequested?JM[r]:void 0;if(t===void 0)break;if(await this.waitForRetry(t),n!==this.generation)return;if(!this.isEnabled())return this.clearPending();if(this.bestEffortRequested)break}}}waitForRetry(e){return new Promise(t=>{let n=()=>{this.retryTimer=void 0,this.resolveRetryDelay=void 0,t()};this.resolveRetryDelay=n,this.retryTimer=setTimeout(n,e)})}interruptRetryDelay(){this.retryTimer!==void 0&&clearTimeout(this.retryTimer),this.resolveRetryDelay?.()}scheduleFlush(){this.timer===void 0&&(this.timer=setTimeout(()=>{this.timer=void 0,this.flush(!0)},qM))}clearFlushTimer(){this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0)}},QM=e=>{let t=tN(e.props);return{kind:e.kind,...$M(e.thread_id)?{thread_id:e.thread_id}:{},...$M(e.message_id)?{message_id:e.message_id}:{},...$M(e.run_id)?{run_id:e.run_id}:{},...eN(e.value)?{value:e.value}:{},...t?{props:t}:{}}},$M=e=>e&&e.length<=48?e:void 0,eN=e=>e!==void 0&&Number.isInteger(e)&&e>=0,tN=e=>{if(!e)return;let t=Object.entries(e);if(t.some(([,e])=>typeof e==`string`&&e.length>256||typeof e==`number`&&!Number.isFinite(e)||typeof e!=`string`&&typeof e!=`number`&&typeof e!=`boolean`))return;let n=Object.fromEntries(t);return new TextEncoder().encode(JSON.stringify(n)).byteLength<=1024?n:void 0},nN=[`numeric`,`categorical`,`boolean`],rN=class{cloud;constructor(e){this.cloud=e}async create(e){let t=lM(await this.cloud.makeRequest(`/scores`,{method:`POST`,body:e}),`score response`);return{score_id:dM(t.score_id,`score response.score_id`),name:dM(t.name,`score response.name`),data_type:mM(t.data_type,`score response.data_type`,nN),value:pM(t.value,`score response.value`),string_value:hM(t.string_value,`score response.string_value`)}}},iN=class{cloud;constructor(e){this.cloud=e}async create(){return{token:dM(lM(await this.cloud.makeRequest(`/auth/tokens`,{method:`POST`}),`auth token response`).token,`token`)}}},aN=[`positive`,`negative`],oN=(e,t)=>{let n=lM(e,t);return{id:dM(n.id,`${t}.id`),parent_id:hM(n.parent_id,`${t}.parent_id`),height:_M(n.height,`${t}.height`),created_at:vM(n.created_at,`${t}.created_at`),updated_at:vM(n.updated_at,`${t}.updated_at`),format:dM(n.format,`${t}.format`),content:yM(n.content,`${t}.content`),external_id:hM(n.external_id??null,`${t}.external_id`)}},sN=class{cloud;constructor(e){this.cloud=e}async list(e,t){return{messages:uM(lM(await this.cloud.makeRequest(`/threads/${encodeURIComponent(e)}/messages`,{query:t}),`thread message list response`).messages,`messages`).map((e,t)=>oN(e,`messages[${t}]`))}}async create(e,t){return{message_id:dM(lM(await this.cloud.makeRequest(`/threads/${encodeURIComponent(e)}/messages`,{method:`POST`,body:{parent_id:t.parent_id,format:t.format,content:t.content,...t.external_id===void 0?void 0:{external_id:t.external_id},...t.parent_external_id===void 0?void 0:{parent_external_id:t.parent_external_id}}}),`thread message create response`).message_id,`message_id`)}}async update(e,t,n){return this.cloud.makeRequest(`/threads/${encodeURIComponent(e)}/messages/${encodeURIComponent(t)}`,{method:`PUT`,body:n})}async feedback(e,t,n){let r=n.comment?.trim(),i=lM(await this.cloud.makeRequest(`/threads/${encodeURIComponent(e)}/messages/${encodeURIComponent(t)}/feedback`,{method:`POST`,body:{type:n.type,...r?{comment:r}:void 0}}),`thread message feedback response`);return{feedback_id:dM(i.feedback_id,`feedback_id`),type:mM(i.type,`type`,aN),...`comment`in i?{comment:hM(i.comment,`comment`)}:void 0}}},cN=(e,t)=>{let n=lM(e,t);return{title:hM(n.title,`${t}.title`)??``,last_message_at:vM(n.last_message_at,`${t}.last_message_at`),metadata:n.metadata,external_id:hM(n.external_id,`${t}.external_id`),id:dM(n.id,`${t}.id`),project_id:dM(n.project_id,`${t}.project_id`),created_at:vM(n.created_at,`${t}.created_at`),updated_at:vM(n.updated_at,`${t}.updated_at`),workspace_id:dM(n.workspace_id,`${t}.workspace_id`),is_archived:gM(n.is_archived,`${t}.is_archived`)}},lN=class{messages;cloud;constructor(e){this.cloud=e,this.messages=new sN(e)}async list(e){let t=e?.is_archived===void 0?e:{...e,is_archived:String(e.is_archived)};return{threads:uM(lM(await this.cloud.makeRequest(`/threads`,{query:t}),`thread list response`).threads,`threads`).map((e,t)=>cN(e,`threads[${t}]`))}}async get(e){return cN(lM(await this.cloud.makeRequest(`/threads/${encodeURIComponent(e)}`),`thread response`).thread,`thread`)}async create(e){return{thread_id:dM(lM(await this.cloud.makeRequest(`/threads`,{method:`POST`,body:e}),`thread create response`).thread_id,`thread_id`)}}async update(e,t){return this.cloud.makeRequest(`/threads/${encodeURIComponent(e)}`,{method:`PUT`,body:t})}async claim(e){return{moved:_M(lM(await this.cloud.makeRequest(`/threads/claim`,{method:`POST`,body:e}),`thread claim response`).moved,`moved`)}}async delete(e){return this.cloud.makeRequest(`/threads/${encodeURIComponent(e)}`,{method:`DELETE`})}},uN=class{cloud;constructor(e){this.cloud=e}async list(e,t){return{messages:uM(lM(await this.cloud.makeRequest(`/projects/threads/${encodeURIComponent(e)}/messages`,{query:t}),`project thread message list response`).messages,`messages`).map((e,t)=>oN(e,`messages[${t}]`))}}},dN=class{messages;cloud;constructor(e){this.cloud=e,this.messages=new uN(e)}async list(e){return{threads:uM(lM(await this.cloud.makeRequest(`/projects/threads`,{query:{...e,...e?.is_archived===void 0?{}:{is_archived:String(e.is_archived)}}}),`project thread list response`).threads,`threads`).map((e,t)=>cN(e,`threads[${t}]`))}}},fN=class{threads;constructor(e){this.threads=new dN(e)}},pN=class{cloud;constructor(e){this.cloud=e}__internal_getAssistantOptions(e){return{api:`${this.cloud._baseUrl}/v1/runs/stream`,protocol:`ui-message-stream`,headers:async()=>{let e=await this.cloud._auth.getAuthHeaders();if(!e)throw Error(`Authorization failed`);return{...e,Accept:`text/plain`,"Aui-Sdk":this.cloud.sdkHeader()}},body:async t=>{let n=t?.threadId;if(n===void 0)throw Error(`Assistant Cloud runs need a thread; the thread list adapter has not assigned a remote id to this thread yet.`);return{assistant_id:e,response_format:`vercel-ai-data-stream/v1`,thread_id:n}}}}async stream(e){let t=await this.cloud.makeRawRequest(`/runs/stream`,{method:`POST`,headers:{Accept:`text/plain`},body:e});if(!t.body)throw new sM(`Invalid Assistant Cloud response for "run stream": expected a response body`);let n=t.headers.get(`content-type`);if(n?.split(`;`,1)[0]?.trim().toLowerCase()!==`text/plain`)throw await t.body.cancel().catch(()=>void 0),new sM(`Invalid Assistant Cloud response for "run stream": expected a "text/plain" content type, received ${n?`"${n}"`:`no Content-Type header`}`);return FO.fromResponse(t,new uk)}async report(e){return{run_id:dM(lM(await this.cloud.makeRequest(`/runs`,{method:`POST`,body:e}),`run report response`).run_id,`run_id`)}}},mN=class{cloud;constructor(e){this.cloud=e}async pdfToImages(e){let t=lM(await this.cloud.makeRequest(`/files/pdf-to-images`,{method:`POST`,body:e}),`PDF conversion response`);return{success:gM(t.success,`PDF conversion response.success`),urls:uM(t.urls,`PDF conversion response.urls`).map((e,t)=>dM(e,`PDF conversion response.urls[${t}]`)),message:dM(t.message,`PDF conversion response.message`)}}async generatePresignedUploadUrl(e){let t=lM(await this.cloud.makeRequest(`/files/attachments/generate-presigned-upload-url`,{method:`POST`,body:e}),`presigned upload response`);return{success:gM(t.success,`presigned upload response.success`),signedUrl:dM(t.signedUrl,`presigned upload response.signedUrl`),expiresAt:dM(t.expiresAt,`presigned upload response.expiresAt`),publicUrl:dM(t.publicUrl,`presigned upload response.publicUrl`),...`key`in t?{key:dM(t.key,`presigned upload response.key`)}:{}}}async generatePresignedDownloadUrl(e){let t=lM(await this.cloud.makeRequest(`/files/attachments/generate-presigned-download-url`,{method:`POST`,body:e}),`presigned download response`);return{signedUrl:dM(t.signedUrl,`presigned download response.signedUrl`),expiresAt:dM(t.expiresAt,`presigned download response.expiresAt`),key:dM(t.key,`presigned download response.key`)}}},hN=class{threads;projects;auth;runs;files;events;scores;telemetry;registerSdk;constructor(e){let t=new WM(e);this.registerSdk=t.registerSdk;let n=e.telemetry,r=n===!1?{enabled:!1}:n===!0||n===void 0?{enabled:!0}:{...n,enabled:n.enabled!==!1};this.telemetry=new Proxy(r,{set:(e,t,n)=>{let r=Reflect.set(e,t,n);return(t===`enabled`||t===`events`)&&(e.enabled===!1||e.events===!1)&&XM(this.events),r}}),this.threads=new lN(t),this.projects=new fN(t),this.auth={tokens:new iN(t)},this.runs=new pN(t),this.files=new mN(t),this.events=new ZM(t,()=>this.telemetry.enabled!==!1&&this.telemetry.events!==!1),this.scores=new rN(t)}},gN=256;function _N(e,t,n){e.delete(t),e.set(t,n),e.size>gN&&e.delete(e.keys().next().value)}function vN(e,t){e.delete(t),e.add(t),e.size>gN&&e.delete(e.values().next().value)}var yN=(e,t)=>({thread_id:e,...t===void 0?void 0:{message_id:t}}),bN=class{runStartedAt=new Map;runEndedAt=new Map;shownErrors=new Set;shownSuggestions=new Set;getCloud;resolveIds;constructor(e,t=yN){this.getCloud=typeof e==`function`?e:()=>e,this.resolveIds=t}runStarted(e){this.runStartedAt.set(e,Date.now()),this.shownErrors.delete(e)}runEnded(e){this.runStartedAt.delete(e),_N(this.runEndedAt,e,Date.now())}runStopped(e){let t=this.runStartedAt.get(e);if(t===void 0)return;let n=Date.now();this.runStartedAt.delete(e),_N(this.runEndedAt,e,n),this.track(`run_stopped`,e,void 0,{value:Math.max(0,n-t)})}messageSent(e,t){let n=this.runEndedAt.get(e);this.track(`message_sent`,e,t.messageId,{props:{chars:t.chars,attachments:t.attachments},...n===void 0?void 0:{value:Math.max(0,Date.now()-n)}},{awaitThread:!0})}messageEdited(e,t){this.track(`message_edited`,e,t.messageId,{props:{chars:t.chars}})}messageRegenerated(e,t){this.track(`message_regenerated`,e,t)}errorShown(e,t){this.shownErrors.has(e)||(vN(this.shownErrors,e),this.track(`error_shown`,e,t.messageId,{props:{reason:t.reason}}))}suggestionsShown(e,t){this.shownSuggestions.has(e)||(vN(this.shownSuggestions,e),this.track(`suggestions_shown`,e,void 0,{value:t}))}suggestionClicked(e){this.track(`suggestion_clicked`,e)}attachmentAdded(e,t){this.track(`attachment_added`,e,t.messageId,{...t.contentType?{props:{type:t.contentType}}:void 0})}attachmentFailed(e,t){this.track(`attachment_failed`,e,t.messageId,{...t.contentType?{props:{type:t.contentType}}:void 0})}voiceStarted(e){this.track(`voice_started`,e)}speechStarted(e,t){this.track(`speech_started`,e,t)}branchSwitched(e,t){this.track(`branch_switched`,e,t)}messageCopied(e,t){this.track(`message_copied`,e,t)}toolApproved(e,t,n,r){this.track(`tool_approved`,e,t,{props:{toolCallId:n,toolName:r}})}toolRejected(e,t,n,r){this.track(`tool_rejected`,e,t,{props:{toolCallId:n,toolName:r}})}threadSwitched(e){this.track(`thread_switched`,e)}track(e,t,n,r={},i={awaitThread:!1}){Promise.resolve().then(()=>this.resolveIds(t,n,i)).then(t=>{t&&(e===`thread_switched`&&!t.thread_id||this.getCloud().events.track({kind:e,...r,...t}))}).catch(()=>{})}},xN=200,SN=class{idMapping=new Map;getCloud;constructor(e){this.getCloud=typeof e==`function`?e:()=>e}async append(e,t,n,r,i){let a=this.getCloud(),o=this.idMapping.get(t);if(o instanceof Promise){await o;return}let s=(async()=>{let t=n?this.idMapping.get(n):void 0,o=n?await t??n:null,{message_id:s}=await a.threads.messages.create(e,{parent_id:o,format:r,content:i});return s})();this.idMapping.set(t,s);try{let e=await s;this.idMapping.get(t)===s&&this.idMapping.set(t,e)}catch(e){throw this.idMapping.get(t)===s&&this.idMapping.delete(t),e}}async update(e,t,n,r){let i=this.getCloud(),a=await this.getRemoteId(t);if(!a){console.warn(`Skipping update for message ${t}: no remote id is mapped.`);return}await i.threads.messages.update(e,a,{content:r})}isPersisted(e){return this.idMapping.has(e)}async getRemoteId(e){let t=this.idMapping.get(e);if(t)return t}getResolvedRemoteId(e){let t=this.idMapping.get(e);return typeof t==`string`?t:void 0}record(e,t){this.idMapping.set(e,t)}async load(e,t){let n=this.idMapping,r=this.getCloud(),i=[],a=new Set,o;for(;;){let n=await r.threads.messages.list(e,{...t?{format:t}:void 0,limit:xN,...o?{after:o}:void 0}),s=n.messages.at(-1);if(!s)break;let c=n.messages.filter(e=>!a.has(e.id));if(c.length===0)break;for(let e of c)a.add(e.id);if(i.push(...c),n.messages.length<xN)break;o=s.id}if(this.idMapping===n)for(let e of i){let t=n.get(e.id);t===void 0?n.set(e.id,e.id):t instanceof Promise&&t.catch(()=>{let r=n.get(e.id);(r===void 0||r===t)&&n.set(e.id,e.id)})}return i}reset(){this.idMapping=new Map}},CN=5e4,wN=/^[A-Za-z0-9+/]+={0,2}$/;function TN(e,t=`completed`){if(e.isError)return{status:`error`};if(e.isAbort)return{status:`incomplete`,outcome:`aborted`};if(e.isDisconnect)return{status:`incomplete`,outcome:`disconnected`};switch(e.finishReason){case`length`:return{status:`incomplete`,outcome:`length`};case`content-filter`:case`content_filter`:return{status:`incomplete`,outcome:`content_filter`};case`cancelled`:return{status:`incomplete`,outcome:`aborted`};case`error`:return{status:`error`};default:return{status:e.finishReason===void 0?t:`completed`}}}var EN=64,DN=2048;function ON(e){if(e==null)return{};let t=typeof e==`object`?e:void 0,n=typeof e==`string`?e:typeof t?.message==`string`?t.message:void 0,r=typeof t?.code==`string`?t.code:typeof t?.name==`string`&&t.name!==`Error`?t.name:void 0;return{...n?{error:n.slice(0,DN)}:void 0,...r?{errorCode:r.slice(0,EN)}:void 0}}function kN(e){return e.length<=CN?e:e.slice(0,CN)}function AN(e){if(e!=null)try{return kN(JSON.stringify(e))}catch{return}}var jN=e=>(e.length*3/4/1024).toFixed(1),MN=e=>{if(typeof e!=`string`)return!1;let t=e.slice(0,200);return t.length>0&&t.length%4==0&&wN.test(t)};function NN(e){if(!e||typeof e!=`object`)return e;let t=e;if((t.type===`image`||t.type===`audio`)&&MN(t.data))return{...t,data:`[${String(t.type)}: ${jN(t.data)}KB]`};if(t.type===`resource`&&t.resource&&typeof t.resource==`object`){let e=t.resource;if(MN(e.blob))return{...t,resource:{...e,blob:`[resource: ${jN(e.blob)}KB]`}}}return e}function PN(e){if(e!=null){try{let t=typeof e==`string`?JSON.parse(e):e;if(Array.isArray(t))return kN(JSON.stringify(t.map(NN)));if(typeof t==`object`){let e=t.content;if(Array.isArray(e))return kN(JSON.stringify({...t,content:e.map(NN)}))}}catch{}return AN(e)}}function FN(e){let{toolName:t,toolCallId:n,args:r,argsText:i,result:a,toolSource:o}=e,s={tool_name:t,tool_call_id:n},c=i==null?AN(r):kN(i);c!==void 0&&(s.tool_args=c);let l=o===`mcp`?PN(a):AN(a);return l!==void 0&&(s.tool_result=l),o&&(s.tool_source=o),s}function IN(e){if(!e)return;if(typeof e.modelId==`string`)return e.modelId;let t=e.custom;if(typeof t?.modelId==`string`)return t.modelId;let n=e.steps;if(Array.isArray(n))for(let e of n){if(!e||typeof e!=`object`)continue;let t=e.response;if(!t||typeof t!=`object`)continue;let n=t.modelId;if(typeof n==`string`)return n}}function LN(e,t){if(!t)return;let n=WN(t);n&&(n.inputTokens!==void 0&&(e.input_tokens=n.inputTokens),n.outputTokens!==void 0&&(e.output_tokens=n.outputTokens),n.reasoningTokens!==void 0&&(e.reasoning_tokens=n.reasoningTokens),n.cachedInputTokens!==void 0&&(e.cached_input_tokens=n.cachedInputTokens))}function RN(e){let t={},n=e.usage?WN(e.usage):void 0;return n?.inputTokens!==void 0&&(t.input_tokens=n.inputTokens),n?.outputTokens!==void 0&&(t.output_tokens=n.outputTokens),n?.reasoningTokens!==void 0&&(t.reasoning_tokens=n.reasoningTokens),n?.cachedInputTokens!==void 0&&(t.cached_input_tokens=n.cachedInputTokens),e.toolCalls!==void 0&&(t.tool_calls=e.toolCalls),e.startMs!==void 0&&(t.start_ms=e.startMs),e.endMs!==void 0&&(t.end_ms=e.endMs),e.finishReason!==void 0&&(t.finish_reason=e.finishReason.slice(0,32)),e.input!==void 0&&(t.input=kN(e.input)),t}function zN(e){if(!e)return;let t=[],n=new Set;for(let r of e){let e=r.trim().slice(0,64).trim();if(!(!e||n.has(e))&&(n.add(e),t.push(e),t.length===20))break}return t.length>0?t:void 0}function BN(e){if(!(e===void 0||!Number.isFinite(e)))return Math.max(0,Math.round(e))}function VN(e){if(!(e===void 0||!Number.isFinite(e)||e<0))return e}function HN(e,t){if(!t)return;let n={},r=VN(t.input);r!==void 0&&(n.input=r);let i=VN(t.inputCachedTokens);i!==void 0&&(n.input_cached_tokens=i);let a=VN(t.output);a!==void 0&&(n.output=a);let o=VN(t.total);o!==void 0&&(n.total=o),Object.keys(n).length>0&&(e.cost_details=n)}function UN(e){let t={thread_id:e.threadId,status:e.status},n=e.traceId?.toLowerCase();n&&/^[0-9a-f]{32}$/.test(n)&&(t.trace_id=n);let r=e.rootSpanId?.toLowerCase();r&&/^[0-9a-f]{16}$/.test(r)&&(t.root_span_id=r),e.outcome!==void 0&&(t.outcome_type=e.outcome),e.errorCode!==void 0&&(t.error_code=e.errorCode),e.error!==void 0&&(t.error=e.error),e.messageId!==void 0&&(t.message_id=e.messageId),e.modelId!==void 0&&(t.model_id=e.modelId),e.provider!==void 0&&(t.provider=e.provider,t.provider_type=e.provider),LN(t,e.usage),e.steps===void 0?e.totalSteps!==void 0&&(t.total_steps=e.totalSteps):(t.steps=e.steps.map(RN),t.total_steps=e.steps.length),e.toolCalls!==void 0&&(t.tool_calls=e.toolCalls);let i=BN(e.durationMs);i!==void 0&&(t.duration_ms=i);let a=BN(e.firstTokenMs);a!==void 0&&(t.first_token_ms=a);let o=VN(e.costUsd);o!==void 0&&(t.cost_usd=o),HN(t,e.costDetails),e.outputText!==void 0&&(t.output_text=kN(e.outputText)),e.attributes!==void 0&&(t.attributes=e.attributes),e.metadata!==void 0&&(t.metadata=e.metadata),e.telemetry?.environment!==void 0&&(t.environment=e.telemetry.environment),e.telemetry?.release!==void 0&&(t.release=e.telemetry.release);let s=zN(e.telemetry?.tags);return s!==void 0&&(t.tags=s),t}function WN(e){let t=e.inputTokens??e.promptTokens,n=e.outputTokens??e.completionTokens,r=e.reasoningTokens??e.outputTokenDetails?.reasoningTokens,i=e.cachedInputTokens??e.inputTokenDetails?.cacheReadTokens;if(t!=null||n!=null||r!=null||i!=null)return{...t==null?void 0:{inputTokens:t},...n==null?void 0:{outputTokens:n},...r==null?void 0:{reasoningTokens:r},...i==null?void 0:{cachedInputTokens:i}}}var GN=class{reported=new Set;getCloud;constructor(e){this.getCloud=typeof e==`function`?e:()=>e}async report(e,t){let n;try{let r=this.getCloud();if(!r.telemetry.enabled||t!==void 0&&this.reported.has(t))return;let i=UN({...e,telemetry:r.telemetry}),{beforeReport:a}=r.telemetry,o=a?a(i):i;if(!o)return;t!==void 0&&(this.reported.add(t),n=t),await r.runs.report(o)}catch(e){n!==void 0&&KN(e)&&this.reported.delete(n);return}}},KN=e=>e instanceof HM&&e.status===429,qN=(e,t)=>({append:async(n,r)=>{let i=t.getId(r.message),a=t.encode(r);return e.append(n,i,r.parentId,t.format,a)},update:e.update?async(n,r,i)=>{let a=t.encode(r);return e.update(n,i,t.format,a)}:void 0,load:async n=>({messages:(await e.load(n,t.format)).filter(e=>e.format===t.format).map(e=>t.decode({id:e.id,parent_id:e.parent_id,format:e.format,content:e.content})).reverse()}),isPersisted:t=>e.isPersisted(t)});function JN(e){return typeof e==`object`&&!!e}function YN(e){return JN(e)&&typeof e.type==`string`}function XN(e){if(typeof e.toolCallId!=`string`)return;let t=e.type.startsWith(`tool-`);if(!t&&e.type!==`dynamic-tool`)return;let n=t?e.type.slice(5):typeof e.toolName==`string`?e.toolName:void 0;if(n)return FN({toolName:n,toolCallId:e.toolCallId,args:e.input??e.args,result:e.output??e.result,toolSource:t?`frontend`:`mcp`})}function ZN(e,t){let n=JN(t?.samplingCalls)?t.samplingCalls:void 0;if(n)for(let t of e){let e=n[t.tool_call_id];Array.isArray(e)&&e.length>0&&(t.sampling_calls=e)}}function QN(e){let t=e?.steps;return Array.isArray(t)?t.map(e=>JN(e)&&JN(e.usage)?e.usage:void 0):[]}function $N(e){let t={};for(let n of e)n.inputTokens!=null&&(t.inputTokens=(t.inputTokens??0)+n.inputTokens),n.outputTokens!=null&&(t.outputTokens=(t.outputTokens??0)+n.outputTokens),n.reasoningTokens!=null&&(t.reasoningTokens=(t.reasoningTokens??0)+n.reasoningTokens),n.cachedInputTokens!=null&&(t.cachedInputTokens=(t.cachedInputTokens??0)+n.cachedInputTokens);return t}function eP(e){let t=JN(e?.usage)?WN(e.usage):void 0;if(t)return t;let n=QN(e).flatMap(e=>{let t=e?WN(e):void 0;return t?[t]:[]});return n.length>0?$N(n):void 0}function tP(e){let t=[],n=[],r=[],i=[],a;for(let o of e){if(o.role!==`assistant`)continue;a=o;let e=JN(o.metadata)?o.metadata:void 0,s=QN(e),c=[],l,u=-1;for(let e of o.parts){if(!YN(e))continue;if(e.type===`step-start`){u+=1;let e=s[u];l=e?{usage:e}:{},r.push(l);continue}if(e.type===`text`&&typeof e.text==`string`&&e.text){t.push(e.text);continue}let i=XN(e);i&&(n.push(i),c.push(i),l&&(l.toolCalls=[...l.toolCalls??[],i],l.finishReason=`tool-calls`))}ZN(c,e);let d=eP(e);d&&i.push(d)}if(!a)return null;let o=JN(a.metadata)?a.metadata:void 0,s=i.length>0?$N(i):void 0,c=IN(o),l=t.length>0||n.length>0;return{...a.id===void 0?void 0:{assistantMessageId:a.id},status:l?`completed`:`incomplete`,...n.length>0?{toolCalls:n}:void 0,...r.length>0?{steps:r,totalSteps:r.length}:void 0,...t.length>0?{outputText:kN(t.join(``))}:void 0,...s?{usage:s}:void 0,...c?{modelId:c}:void 0,...o?{metadata:o}:void 0}}var nP=new WeakMap,rP=new WeakMap,iP=e=>{let t=rP.get(e);return t||(t={settled:new Set,reported:new Set},rP.set(e,t)),t},aP=e=>e.role===`assistant`&&(e.status.type===`complete`||e.status.type===`incomplete`),oP=(e,t)=>{let n=rD(t);if(!e)return n;if(!n)return e;let r=Math.max(e.omitted??0,n.omitted??0),i={entries:e.entries,...r?{omitted:r}:void 0};for(let e of n.entries)i.entries.some(t=>t.type===e.type&&t.occurredAt===e.occurredAt&&pk(t.payload,e.payload))||(i=tD(i,e));return i},sP=new Set([401,403,408,429]),cP=new Set([402,404]),lP=e=>e instanceof HM&&e.status>=400&&e.status<500&&!sP.has(e.status),uP=class{cloudRef;getAui;runReporter;copiedThreads=new Map;copyQueues=new Map;constructor(e,t){this.cloudRef=e,this.getAui=t,this.runReporter=new GN(()=>this.cloudRef.current)}get aui(){return this.getAui()}getCloud(){return this.cloudRef.current}ownsThread(e){let t=this.aui.threadListItem;if(!t.source)return!1;let{id:n,remoteId:r}=t.getState();return n===e||r===e}getPersistence(e=this.aui.threadListItem){let t=RC(e);return nP.has(t)||nP.set(t,new SN(()=>this.cloudRef.current)),nP.get(t)}get _persistence(){return this.getPersistence()}async resolveEngagementEventIds(e,t,n){let r=this.getThreadListItem(e);if(!r)return;let i=r.getState().remoteId;!i&&n?.awaitThread&&(i=await r.initialize().then(e=>e.remoteId).catch(()=>void 0));let a=t?this.getPersistence(r).getResolvedRemoteId(t):void 0;return{...i?{thread_id:i}:void 0,...a?{message_id:a}:void 0}}feedback={submit:({message:e,type:t,comment:n})=>{(async()=>{let r=this.tryGetKeyedThreadListItem(),i=r?.getState().remoteId;if(!r||!i){console.warn(`[assistant-ui] Skipping feedback for message ${e.id}: the thread has no remote id.`);return}let a=await this.getPersistence(r).getRemoteId(e.id);if(!a){console.warn(`[assistant-ui] Skipping feedback for message ${e.id}: no cloud message id is mapped.`);return}await this.cloudRef.current.threads.messages.feedback(i,a,{type:t,...n?{comment:n}:void 0})})().catch(e=>{console.error(`[assistant-ui] Cloud feedback submission failed:`,e)})}};tryGetKeyedThreadListItem(){let e=this.aui.threadListItem;if(!e.source)return;let t=e.getState().id;if(t!==void 0)return this.aui.threads.getState().threadItems.some(e=>e.id===t||e.remoteId===t)?this.aui.threads.item({id:t}):e}getThreadListItem(e){let t=this.aui.threadListItem;if(t.source){let n=t.getState();if(n.id===e||n.remoteId===e)return t}let n=this.aui.threads.getState().threadItems.find(t=>t.id===e||t.remoteId===e);return n?this.aui.threads.item({id:n.id}):void 0}withFormat(e){let t=this,n,r=()=>{let e=t.tryGetKeyedThreadListItem();return e&&(n=e),n},i=()=>n??r(),a=n=>qN(t.getPersistence(n),e);return{pin(){r()},async append(e){let t=i();if(!t)throw Error(`Cannot persist cloud history without a thread list item.`);let n=t.getState().remoteId??(await t.initialize()).remoteId;await a(t).append(n,e)},async update(e,t){let n=i(),r=n?.getState().remoteId;!r||!n||await a(n).update?.(r,e,t)},async delete(){throw Error(`Assistant Cloud does not support deleting thread messages yet.`)},reportTelemetry(n,r){let a=n.map(t=>e.encode(t));t._reportRunTelemetry(e.format,a,r,i(),pP(fP(n,e),r?.message?mP(r.message,`aui/v0`):void 0))},async load(){let e=r(),n=t.aui.threadListItem,i=n.source?n.getState().remoteId:void 0;return i?a(e??n).load(i):{messages:[]}}}}async append({parentId:e,message:t}){let{remoteId:n}=await this.aui.threadListItem.initialize(),r=this._persistence;await this._writeMessage(r,n,t,i=>r.append(n,t.id,e,`aui/v0`,i))}async update(e){let t=this._persistence;if(!t.isPersisted(e.message.id))return this.append(e);let{message:n}=e,r=this.aui.threadListItem.getState().remoteId;r&&await this._writeMessage(t,r,n,e=>t.update(r,n.id,`aui/v0`,e))}get unstable_copy(){let e=this.cloudRef.current?.telemetry;return e?.enabled===!1||e?.messages===!1?void 0:this.copy}copy=async(e,t)=>{let n=this.cloudRef.current;if(t.length===0)return;let r=this.tryGetKeyedThreadListItem();if(!r)throw Error(`Cannot copy cloud history without a thread list item.`);let i=(await r.initialize()).remoteId,a=this.getPersistence(r),o=(this.copyQueues.get(i)??Promise.resolve()).catch(()=>void 0).then(()=>this.copyBranch(n,i,a,e,t));this.copyQueues.set(i,o);try{await o}finally{this.copyQueues.get(i)===o&&this.copyQueues.delete(i)}};async copyBranch(e,t,n,r,i){let a=this.copiedThreads.get(t);a||(a=(async()=>{let r={stored:new Set,refused:new Set,closed:!1,interactions:new Map},i=new Set,a;for(;;){let o=await e.threads.messages.list(t,{limit:200,...a?{after:a}:void 0}),s=o.messages.filter(e=>!i.has(e.id));for(let e of s){if(i.add(e.id),!e.external_id||e.format!==`aui/v0`)continue;r.stored.add(e.external_id),n.record(e.external_id,e.id);let t=iM(e);for(let e of t?.message.content??[]){if(e.type!==`tool-call`)continue;let t=oP(r.interactions.get(e.toolCallId),e.unstable_interactions);t&&r.interactions.set(e.toolCallId,t)}}let c=o.messages.at(-1);if(s.length===0||o.messages.length<200||!c)break;a=c.id}return r})(),this.copiedThreads.set(t,a));let o;try{o=await a}catch(e){throw this.copiedThreads.get(t)===a&&this.copiedThreads.delete(t),e}if(o.closed)return;let s=r.filter(e=>e.id.length>0&&e.id.length<=255),c=new Set(i),l=0,u;for(let r=0;r<s.length;r++)if(c.has(s[r].id))for(;l<=r;l++){let i=s[l];if(l!==r&&(o.stored.has(i.id)||o.refused.has(i.id))){o.stored.has(i.id)&&(u=i.id);continue}let a=eM(i),c={...a,content:a.content.map(e=>{if(e.type!==`tool-call`)return e;let t=oP(o.interactions.get(e.toolCallId),e.unstable_interactions);return{...e,...t?{unstable_interactions:t}:void 0}})},d;try{({message_id:d}=await e.threads.messages.create(t,{parent_id:null,format:`aui/v0`,content:c,external_id:i.id,...u?{parent_external_id:u}:void 0}))}catch(e){if(!lP(e))throw e;if(cP.has(e.status)||o.stored.size===0&&o.refused.size>0){o.closed=!0,console.warn(`[assistant-ui] The cloud refused copies to thread ${t}; the dashboard shows the conversation as far as it was copied.`,e);return}o.refused.add(i.id),console.warn(`[assistant-ui] The cloud refused the copy of message ${i.id}; the dashboard shows the conversation without it.`,e);continue}o.stored.add(i.id),o.refused.delete(i.id),u=i.id,n.record(i.id,d);for(let e of c.content)e.type===`tool-call`&&e.unstable_interactions&&o.interactions.set(e.toolCallId,e.unstable_interactions)}}async _writeMessage(e,t,n,r){let i=eM(n),a=iP(e),o=aP(n)&&!a.settled.has(n.id);if(await r(i),!o||(a.settled.add(n.id),a.reported.has(n.id))||!this.cloudRef.current.telemetry.enabled)return;let s=bP(`aui/v0`,i);s&&(a.reported.add(n.id),this._sendReport(t,s,void 0,void 0,mP(n,`aui/v0`),e))}async delete(){throw Error(`Assistant Cloud does not support deleting thread messages yet.`)}async load(){let e=this.aui.threadListItem.getState().remoteId;if(!e)return{messages:[]};let t=this._persistence,n=(await t.load(e,`aui/v0`)).filter(e=>e.format===`aui/v0`).reverse(),r=[],i=new Set,{settled:a}=iP(t);for(let e of n){let t=iM(e);t&&(t.parentId&&!i.has(t.parentId)||(i.add(t.message.id),aP(t.message)&&a.add(t.message.id),r.push(t)))}return{messages:r}}_reportRunTelemetry(e,t,n,r,i){let a=r??this.aui.threadListItem,o=a.getState().remoteId;if(!o)return;let s=xP(e,t)??(i?.status===void 0?void 0:{status:`incomplete`});s&&this._sendReport(o,s,n?.durationMs,n?.stepTimestamps,i,this.getPersistence(a))}_sendReport(e,t,n,r,i,a=this._persistence){let o=dP(t.steps,r),s=i?.localMessageId?a.getResolvedRemoteId(i.localMessageId):void 0;this.runReporter.report({threadId:e,status:i?.status??t.status,outcome:i?.outcomeType,error:i?.error,errorCode:i?.errorCode,messageId:s,traceId:i?.traceId,modelId:t.modelId,provider:i?.provider,usage:t.usage,steps:o,totalSteps:t.totalSteps,toolCalls:t.toolCalls,durationMs:n,firstTokenMs:i?.firstTokenMs,outputText:t.outputText,metadata:t.metadata})}};function dP(e,t){if(!t)return e;if(!e)return t.map(({start_ms:e,end_ms:t})=>({startMs:e,endMs:t}));let n=Math.min(e.length,t.length);return e.map((e,r)=>({...e,...r<n?{startMs:t[r].start_ms,endMs:t[r].end_ms}:void 0}))}function fP(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n],i=mP(r.message,t.format,t.getId(r.message));if(i)return i}}function pP(e,t){if(!t)return e;let{localMessageId:n,...r}=t;return{...e,...r}}function mP(e,t,n){if(!hP(e)||e.role!==`assistant`)return;let r=hP(e.status)?e.status:void 0,i=hP(e.metadata)?e.metadata:void 0,a=hP(i?.custom)?i.custom:void 0,o=(hP(i?.timing)?i.timing:void 0)?.firstTokenTime,s=typeof o==`number`&&Number.isFinite(o)?Math.round(o):void 0,c=r?.type===`incomplete`?typeof r.reason==`string`?r.reason:void 0:typeof i?.finishReason==`string`?i.finishReason:void 0,l=r?.type===`incomplete`&&r.reason===`error`,u=TN({finishReason:c,isError:l}),d=u.outcome,f=u.status===`error`?`error`:r?.type===`incomplete`?`incomplete`:c===void 0?void 0:u.status,p=l?ON(r.error):{},m=n??(typeof e.id==`string`?e.id:void 0),h=t===`aui/v0`?a?.traceId:t===`ai-sdk/v6`?i?.traceId:void 0,g=typeof a?.provider==`string`?a.provider:typeof i?.provider==`string`?i.provider:void 0;return{...m?{localMessageId:m}:void 0,...f===void 0?void 0:{status:f},...d?{outcomeType:d}:void 0,...p,...s!=null&&s>=0?{firstTokenMs:s}:void 0,...typeof h==`string`?{traceId:h}:void 0,...g===void 0?void 0:{provider:g}}}function hP(e){return typeof e==`object`&&!!e}var gP=[`inputTokens`,`outputTokens`,`reasoningTokens`,`cachedInputTokens`,`promptTokens`,`completionTokens`],_P=e=>typeof e==`number`&&Number.isFinite(e)&&e>=0?e:void 0,vP=e=>{if(!hP(e)||Array.isArray(e))return;let t={};for(let n of gP){let r=_P(e[n]);r!==void 0&&(t[n]=r)}let n=hP(e.inputTokenDetails)&&!Array.isArray(e.inputTokenDetails)?_P(e.inputTokenDetails.cacheReadTokens):void 0;n!==void 0&&(t.inputTokenDetails={cacheReadTokens:n});let r=hP(e.outputTokenDetails)&&!Array.isArray(e.outputTokenDetails)?_P(e.outputTokenDetails.reasoningTokens):void 0;return r!==void 0&&(t.outputTokenDetails={reasoningTokens:r}),Object.keys(t).length>0?t:void 0},yP=e=>kO(e).map(e=>{let t=vP(e.usage);return t?{usage:t}:{}});function bP(e,t){switch(e){case`aui/v0`:return SP(t);case`ai-sdk/v6`:return tP([t]);default:return null}}function xP(e,t){if(e===`ai-sdk/v6`)return tP(t);for(let n=t.length-1;n>=0;n--){let r=bP(e,t[n]);if(r)return r}return null}function SP(e){let t=e;if(t.role!==`assistant`||t.status!==void 0&&!DO(t.status))return null;let n=hP(t.status)&&typeof t.status.type==`string`?t.status.type:void 0;if(n===`running`||n===`requires-action`)return null;let r=t.content?.filter(e=>e.type===`tool-call`&&e.toolName&&e.toolCallId).map(e=>FN({toolName:e.toolName,toolCallId:e.toolCallId,args:e.args,result:e.result,argsText:e.argsText})),i=t.content?.filter(e=>e.type===`text`&&e.text),a=i&&i.length>0?kN(i.map(e=>e.text).join(``)):void 0,o=yP(t.metadata?.steps),s,c,l,u;if(o&&o.length>0){let e=0,t=0,n=0,r=0,i=!1,a=!1,d=!1,f=!1;for(let s of o){if(!s.usage)continue;let o=WN(s.usage);o&&(o.inputTokens!=null&&(e+=o.inputTokens,i=!0),o.outputTokens!=null&&(t+=o.outputTokens,a=!0),o.reasoningTokens!=null&&(n+=o.reasoningTokens,d=!0),o.cachedInputTokens!=null&&(r+=o.cachedInputTokens,f=!0))}s=i?e:void 0,c=a?t:void 0,l=d?n:void 0,u=f?r:void 0}let d=n===`incomplete`?`incomplete`:`completed`,f=t.metadata?.custom,p=IN(t.metadata),m=o.length>0?o:void 0;return{status:d,...r&&r.length>0?{toolCalls:r}:void 0,...o?.length?{totalSteps:o.length}:void 0,...s!=null||c!=null||l!=null||u!=null?{usage:{...s==null?void 0:{inputTokens:s},...c==null?void 0:{outputTokens:c},...l==null?void 0:{reasoningTokens:l},...u==null?void 0:{cachedInputTokens:u}}}:void 0,...a==null?void 0:{outputText:a},...f?{metadata:f}:void 0,...m?{steps:m}:void 0,...p?{modelId:p}:void 0}}function CP(e){let t=lT(),n=rS(t);oS(()=>{n.current=t});let[r]=tS(()=>new uP(e,()=>n.current));return AP(r,t),r}var wP=new WeakMap,TP=(e,t)=>{let n;for(let r of e.mounted.keys()){if(t!==void 0&&r.ownsThread(t))return r;n??=r}return n??e.lastMounted},EP=e=>{let t={mounted:new Map,lastMounted:e,reporter:new bN(()=>TP(t).getCloud(),(e,n,r)=>TP(t,e).resolveEngagementEventIds(e,n,r)),host:void 0,dispose:void 0};return t},DP=(e,t)=>{let n=()=>{let{mainThreadId:n}=e.threads.getState(),{isEmpty:r,suggestions:i}=e.thread.getState();!r||i.length===0||t.suggestionsShown(n,i.length)},r=[e.on({scope:`*`,event:`threads.selectionChanged`},e=>{t.threadSwitched(e.threadId)}),e.on({scope:`*`,event:`composer.send`},e=>{e.messageId?t.messageEdited(e.threadId,{messageId:e.messageId,chars:e.chars}):t.messageSent(e.threadId,{chars:e.chars,attachments:e.attachments}),e.suggestion&&t.suggestionClicked(e.threadId)}),e.on({scope:`*`,event:`composer.attachmentAdd`},e=>{t.attachmentAdded(e.threadId,{messageId:e.messageId,contentType:e.contentType})}),e.on({scope:`*`,event:`composer.attachmentAddError`},e=>{t.attachmentFailed(e.threadId,{messageId:e.messageId,contentType:e.contentType})}),e.on({scope:`*`,event:`composer.cancel`},e=>{t.runStopped(e.threadId)}),e.on({scope:`*`,event:`thread.runStart`},e=>{t.runStarted(e.threadId)}),e.on({scope:`*`,event:`thread.runEnd`},e=>{t.runEnded(e.threadId)}),e.on({scope:`*`,event:`thread.cancelRun`},e=>{t.runStopped(e.threadId)}),e.on({scope:`*`,event:`thread.voiceStarted`},e=>{t.voiceStarted(e.threadId)}),e.on({scope:`*`,event:`message.reload`},e=>{t.messageRegenerated(e.threadId,e.messageId)}),e.on({scope:`*`,event:`message.branchSwitched`},e=>{t.branchSwitched(e.threadId,e.messageId)}),e.on({scope:`*`,event:`message.copied`},e=>{t.messageCopied(e.threadId,e.messageId)}),e.on({scope:`*`,event:`thread.toolApprovalAnswered`},e=>{e.approved?t.toolApproved(e.threadId,e.messageId,e.toolCallId,e.toolName):t.toolRejected(e.threadId,e.messageId,e.toolCallId,e.toolName)}),e.on({scope:`*`,event:`message.speak`},e=>{t.speechStarted(e.threadId,e.messageId)}),e.on({scope:`*`,event:`message.error`},e=>{t.errorShown(e.threadId,{messageId:e.messageId,reason:e.reason})}),e.subscribe(n)];return n(),()=>ST(r)},OP=(e,t)=>{e.host=t,e.dispose=DP(t,e.reporter)},kP=e=>{let t=e.dispose;e.host=void 0,e.dispose=void 0,t?.()},AP=(e,t)=>{let n=$(4),r,i;n[0]!==e||n[1]!==t?(r=()=>{let n=RC(t.threads),r=wP.get(n);r||(r=EP(e),wP.set(n,r));let i=r;return i.mounted.set(e,t),i.lastMounted=e,i.host===void 0&&OP(i,t),()=>{if(i.mounted.delete(e),i.host!==t)return;kP(i);let n=i.mounted.values().next();n.done||OP(i,n.value)}},i=[e,t],n[0]=e,n[1]=t,n[2]=r,n[3]=i):(r=n[2],i=n[3]),oS(r,i)};function jP(e,t){return t||qE(e)||`application/octet-stream`}var MP=`application/octet-stream`,NP=e=>e.startsWith(`image/`)?`image`:e.startsWith(`text/`)?`document`:`file`,PP=class{accept=`*`;getCloud;constructor(e){this.getCloud=typeof e==`function`?e:()=>e}uploadedUrls=new Map;activeUploads=new Map;async*add({file:e}){let t=GE(),n=NP(e.type),r=e.type||MP,i={id:t,type:n,name:e.name,contentType:r,file:e,status:{type:`running`,reason:`uploading`,progress:0}},a=new AbortController,o={cancelled:!1,controller:a};this.activeUploads.set(t,o);try{if(yield i,o.cancelled)return;let{signedUrl:n,publicUrl:s}=await this.getCloud().files.generatePresignedUploadUrl({filename:e.name});if(o.cancelled)return;let c=await fetch(n,{method:`PUT`,body:e,headers:{"Content-Type":r},mode:`cors`,signal:a.signal});if(o.cancelled)return;if(!c.ok)throw Error(`Failed to upload file: ${c.status} ${c.statusText}`);this.uploadedUrls.set(t,s),i={...i,status:{type:`requires-action`,reason:`composer-send`}},yield i}catch(e){if(o.cancelled)return;console.error(`[assistant-ui] Failed to upload attachment:`,e),i={...i,status:{type:`incomplete`,reason:`error`,message:e instanceof Error?e.message:String(e)}},yield i}finally{this.activeUploads.get(t)===o&&this.activeUploads.delete(t)}}async remove(e){let t=this.activeUploads.get(e.id);t&&(t.cancelled=!0,t.controller.abort(),this.activeUploads.delete(e.id)),this.uploadedUrls.delete(e.id)}async send(e){let t=this.uploadedUrls.get(e.id);if(!t)throw Error(`Attachment not uploaded`);this.uploadedUrls.delete(e.id);let n;return n=e.type===`image`?[{type:`image`,image:t,filename:e.name}]:[{type:`file`,data:t,mimeType:jP(t,e.contentType),filename:e.name}],{...e,status:{type:`complete`},content:n}}},FP=class{list(){return Promise.resolve({threads:[]})}rename(){return Promise.resolve()}updateCustom(){return Promise.resolve()}archive(){return Promise.resolve()}unarchive(){return Promise.resolve()}delete(){return Promise.resolve()}initialize(e){return Promise.resolve({remoteId:e,externalId:void 0})}generateTitle(){return Promise.resolve(new ReadableStream({start(e){e.close()}}))}fetch(e){return Promise.reject(Error(`Thread "${e}" not found in in-memory thread list.`))}},IP={name:`@assistant-ui/core`,version:`0.3.22`},LP=e=>SO(e)?e:void 0,RP=typeof process<`u`?{}.NEXT_PUBLIC_ASSISTANT_BASE_URL:void 0,zP=RP?new hN({baseUrl:RP,anonymous:!0}):void 0,BP=e=>{let t=CP(e),[n]=tS(()=>new PP(()=>e.current));return iS(()=>({history:t,attachments:n,feedback:t.feedback}),[t,n])},VP=20,HP=e=>{let t={activeCursor:e,archivedCursor:void 0,activeExhausted:!1,archivedExhausted:!1};if(!e||!e.startsWith(`{`))return t;try{let n=JSON.parse(e);return SO(n)?{activeCursor:typeof n.a==`string`?n.a:void 0,archivedCursor:typeof n.r==`string`?n.r:void 0,activeExhausted:n.ae===!0,archivedExhausted:n.re===!0}:t}catch{return t}},UP=e=>{let t=typeof e==`function`?e:()=>e,n=function(){return BP({get current(){return t().cloud??zP}})},r=t().cloud??zP;if(!r){let e=new FP;return e.initialize=async e=>({remoteId:e,externalId:(await t().create?.(e))?.externalId}),e}r.registerSdk?.(IP);let i=t().sdk;return i&&r.registerSdk?.(i),{list:async({after:e}={})=>{let{activeCursor:t,archivedCursor:n,activeExhausted:i,archivedExhausted:a}=HP(e),[{threads:o},{threads:s}]=await Promise.all([i?Promise.resolve({threads:[]}):r.threads.list({limit:VP,...t?{after:t}:{}}),a?Promise.resolve({threads:[]}):r.threads.list({is_archived:!0,limit:VP,...n?{after:n}:{}})]),c=!i&&o.length===VP?o.at(-1)?.id:void 0,l=!a&&s.length===VP?s.at(-1)?.id:void 0;return{threads:[...o,...s].map(e=>({status:e.is_archived?`archived`:`regular`,remoteId:e.id,title:e.title,lastMessageAt:e.last_message_at?new Date(e.last_message_at):void 0,externalId:e.external_id??void 0,custom:LP(e.metadata)})),nextCursor:c||l?JSON.stringify({a:c,r:l,...c===void 0?{ae:!0}:{},...l===void 0?{re:!0}:{}}):void 0}},initialize:async e=>{let n=await(t().create?.(e)??Promise.resolve()),i=n?n.externalId:void 0,{thread_id:a}=await r.threads.create({last_message_at:new Date,external_id:i,...i!==void 0&&t().upsert?{upsert:!0}:{}});return{externalId:i,remoteId:a}},rename:async(e,t)=>r.threads.update(e,{title:t}),updateCustom:async(e,t)=>r.threads.update(e,{metadata:t??null}),archive:async e=>r.threads.update(e,{is_archived:!0}),unarchive:async e=>r.threads.update(e,{is_archived:!1}),delete:async e=>(await t().delete?.(e),r.threads.delete(e)),generateTitle:async(e,t)=>{let n=t.map(e=>({...e,content:e.content.filter(e=>e.type===`text`||e.type===`tool-call`)}));return r.runs.stream({thread_id:e,assistant_id:`system/thread_title`,messages:n})},fetch:async e=>{let t=await r.threads.get(e);return{status:t.is_archived?`archived`:`regular`,remoteId:t.id,title:t.title,lastMessageAt:t.last_message_at?new Date(t.last_message_at):void 0,externalId:t.external_id??void 0,custom:LP(t.metadata)}},unstable_useAdapters:n}},WP=e=>{let t=rS(e);dS(()=>{t.current=e},[e]);let[n]=tS(()=>({get current(){return t.current.cloud??zP}})),[r]=tS(()=>function(){return BP(n)}),i=e.cloud??zP,a=()=>{let n=()=>e,a=UP(()=>({...n(),cloud:i}));return n=()=>t.current,a.unstable_useAdapters===void 0?a:{...a,unstable_useAdapters:r}},[o,s]=tS(()=>({cloud:i,adapter:a()}));if(o.cloud!==i){let e={cloud:i,adapter:a()};return s(e),e.adapter}return o.adapter},GP=async(e,t)=>{let{signal:n,onUpdate:r}=t;if(Symbol.asyncIterator in e)for await(let t of e){if(n.aborted)break;r(t)}else{let t=await e;if(n.aborted)return;r(t)}},KP=e=>{let t=[...e.content,...(e.attachments??[]).flatMap(e=>(e.content??[]).filter(e=>e.type!==`text`))],n=[];for(let e of t)e.type===`file`||e.type===`text`?n.push(e):e.type===`image`&&n.push({type:`file`,data:e.image,mimeType:`image/*`,...e.filename!==void 0&&{filename:e.filename}});return n},qP=e=>{let t={queue:UA,steer:UA},n=new Map,r=new Set,i=!1,a=!1,o=!1,s=!1,c=e=>e,l=0,u=0,d=!1,f=0,p=()=>{DC(r,void 0,`Message queue`)},m=e=>{t=e,D.items=e.queue,D.steerItems=e.steer,p()},h=(e,t)=>({id:e,prompt:lE(t),parts:KP(t)}),g=(e,r,i=0)=>{o=!0,n.set(r.id,r.message),m({...t,[e]:[...t[e].slice(0,i),r.item,...t[e].slice(i)]})},_=e=>{if(t.steer.some(t=>t.id===e))return`steer`;if(t.queue.some(t=>t.id===e))return`queue`},v=()=>{if(i||o||s)return;let r=t.steer.length>0?`steer`:`queue`,l=t[r][0];if(!l)return;let u=n.get(l.id);if(!u)return;i=!0,n.delete(l.id),a=!0,m({...t,[r]:t[r].slice(1)}),a=!1;let d={id:l.id,item:l,message:u},p=f;try{e.run(c(u),{steer:!1})}catch(e){throw f===p&&(i=!1,g(r,d)),e}},y=(t,n=`steer`,r=0)=>{o=!1,l+=Math.max(u,1),u=0;let a=(e=!1)=>{if(e)return;let a=l;l=Math.max(a-1,0),u=+(a>0),i=a>0,g(n,t,r)};d=!0;try{e.cancel()}catch(e){throw a(),e}finally{d=!1}i=!0;let s=f;try{e.run(c(t.message),{steer:!0})}catch(e){throw a(f!==s),e}},b=(e,r)=>{o=!1;let i=GE();n.set(i,r),m({...t,[e]:[...t[e],h(i,r)]}),v()},x=e=>{b(`queue`,e)},S=t=>{if(i&&!a&&e.cancel){let e=GE();y({id:e,item:h(e,t),message:t});return}b(`steer`,t)},C=(r,o)=>{let s=_(r);if(!s)throw Error(`Unknown queue item "${r}".`);let c=o.lane??s,l=t[s].findIndex(e=>e.id===r),u=t[s][l],d=(c===s?t[s]:t[c]).filter(e=>e.id!==r),f=e=>{if(e===r)throw Error(`Queue item "${r}" cannot anchor itself.`);let t=d.findIndex(t=>t.id===e);if(t===-1)throw Error(`Unknown anchor "${e}" in lane "${c}".`);return t},{insertAfter:p,insertBefore:h}=o,g;if(p===void 0&&h===void 0)g=c===s?t[s].findIndex(e=>e.id===r):d.length;else if(p!==void 0&&h!==void 0){let e=p===null?-1:f(p);if((h===null?d.length:f(h))!==e+1)throw Error(`insertAfter "${p}" and insertBefore "${h}" are not adjacent in lane "${c}".`);g=e+1}else g=p===void 0?h===null?d.length:f(h):p===null?0:f(p)+1;if(p===void 0&&h===void 0&&c===`steer`&&s!==`steer`&&i&&!a&&e.cancel){let e=n.get(r);n.delete(r),m({queue:t.queue.filter(e=>e.id!==r),steer:t.steer}),y({id:r,item:u,message:e},s,l);return}let b=[...d.slice(0,g),u,...d.slice(g)],x={...t,[c]:b};c!==s&&(x[s]=t[s].filter(e=>e.id!==r)),m(x),v()},w=(e,r)=>{let i=_(e);if(!i)throw Error(`Unknown queue item "${e}".`);n.set(e,r),m({...t,[i]:t[i].map(t=>t.id===e?h(e,r):t)})},T=e=>{n.delete(e)&&m({queue:t.queue.filter(t=>t.id!==e),steer:t.steer.filter(t=>t.id!==e)})},E=()=>{d||a||i&&u===0&&(o=!0,u=1)},D={items:t.queue,steerItems:t.steer,enqueue:x,steer:S,move:C,edit:w,remove:T,__internal_setDispatchTransform:e=>{c=e},__internal_notifyCancelled:E};return{adapter:D,hold:()=>{s=!0},release:()=>{s=!1,v()},notifyBusy:()=>{o=!1,l+=u,u=0,i=!0,f++},notifyIdle:()=>{if(l>0){l--;return}u>0&&u--,i=!1,v()},notifyCancelled:E,clear:()=>{n.clear(),m({queue:UA,steer:UA})},subscribe:e=>(r.add(e),()=>{r.delete(e)})}},JP=(e,t)=>e.status?.type!==`requires-action`||e.status.reason!==`tool-calls`||e.content.some(e=>e.type===`tool-call`&&e.result===void 0&&e.approval!==void 0&&e.approval.approved===void 0&&e.approval.resolution===void 0)?!1:t===void 0?e.content.every(e=>e.type!==`tool-call`||e.result!==void 0||e.approval!==void 0):e.content.every(e=>e.type!==`tool-call`||e.result!==void 0||e.approval!==void 0||!t.includes(e.toolName)),YP=class extends Error{name=`AbortError`;detach;constructor(e,t){super(t),this.detach=e}},XP=e=>e.role!==`assistant`||e.status.type!==`requires-action`||e.status.reason!==`interrupt`||e.content.some(e=>e.type===`tool-call`&&e.result===void 0&&e.interrupt!=null)?e:{...e,status:Lk(!1,!1,!1,e.content.some(e=>e.type===`tool-call`&&e.result===void 0))},ZP=e=>{let t=!1,n=e.content.map(e=>e.type!==`tool-call`||e.approval===void 0||e.approval.approved!==void 0||e.approval.resolution!==void 0?e:(t=!0,{...e,approval:{...e.approval,resolution:`cancelled`}})),r=e.status.type===`running`||e.status.type===`requires-action`;return!t&&!r?e:{...e,content:n,status:r?{type:`incomplete`,reason:`cancelled`}:e.status}},QP=e=>{let t=new Set(e.messages.map(e=>e.parentId));return{...e,messages:e.messages.map(e=>({...e,message:e.message.role===`assistant`&&t.has(e.message.id)?ZP(e.message):XP(e.message)}))}},$P=e=>{if(e.role!==`assistant`)return e;let t=!1,n=e.content.map(e=>{if(e.type!==`tool-call`)return e;let n=e.messages?.map($P),r=n?.some((t,n)=>t!==e.messages?.[n]);if(e.unstable_interactions===void 0&&r!==!0)return e;t=!0;let{unstable_interactions:i,...a}=e;return r?{...a,messages:n}:a});return t?{...e,content:n}:e},eF=class extends nj{capabilities={switchToBranch:!0,switchBranchDuringRun:!0,edit:!0,delete:!1,reload:!0,refetchThread:!1,cancel:!0,unstable_copy:!0,speech:!1,dictation:!1,voice:!1,attachments:!1,feedback:!1,queue:!1,answerToolCall:!0};abortController=null;_queue=null;_queueRunInFlight=null;_activeRun=null;_runGeneration=0;_messageReplacements=new WeakMap;_historyWrites=new Map;_chainHistoryWrite(e,t){let n=this._historyWrites.get(e),r;if(n)r=n.then(t,t);else try{r=Promise.resolve(t())}catch(e){r=Promise.reject(e)}let i=r.then(()=>{},()=>{});return this._historyWrites.set(e,i),i.then(()=>{this._historyWrites.get(e)===i&&this._historyWrites.delete(e)}),r}_persistMessageUpdate(e){let t=this._options.adapters.history;if(!t)return;let n;try{n=this.repository.getMessage(e)}catch{return}let{parentId:r,message:i}=n;i.role===`assistant`&&i.status.type!==`running`&&(this._unwrittenMessages.has(i.id)&&!t.update&&i.status.type===`requires-action`||this._persistSettled(r,i)?.catch(()=>{}))}_roundtripsInFlight=new Map;_followedDuringRun=new Set;_unwrittenMessages=new Set;_persistSettled(e,t){let n=this._options.adapters.history;if(!n)return;let r=this._unwrittenMessages.delete(t.id)?n.append.bind(n):n.update?.bind(n);if(!r)return;let i={parentId:e,message:t,runConfig:this._lastRunConfig};return this._chainHistoryWrite(t.id,()=>r(i))}_cancelPause(e){if(e===null)return;let t;try{t=this.repository.getMessage(e)}catch{return}if(t.message.role!==`assistant`)return;if(this._roundtripsInFlight.has(e)){this._followedDuringRun.add(e);let n=ZP(t.message),r=this._options.adapters.history;if(r&&!r.update&&this._roundtripsInFlight.get(e)?.resumedFromPause&&!this._unwrittenMessages.has(e)){let i={parentId:t.parentId,message:n,runConfig:this._lastRunConfig};return this._chainHistoryWrite(e,()=>r.append(i))}return this._persistSettled(t.parentId,n)}let n=ZP(t.message);if(n!==t.message)return this.repository.addOrUpdateMessage(t.parentId,n),this._persistSettled(t.parentId,n)}_resumeIfReady(e){let t=this.getMessageById(e);return t?.message.role!==`assistant`||this.repository.hasChildren(e)||this._followedDuringRun.has(e)||!JP(t.message,this._options.unstable_humanToolNames)?!1:(this._runLoop(t.parentId,t.message,this._lastRunConfig).catch(()=>{}),!0)}isDisabled=!1;isSendDisabled=!1;_isLoading=!1;get isLoading(){return this._isLoading}_suggestions=[];_suggestionsController=null;get suggestions(){return this._suggestions}get adapters(){return this._options.adapters}constructor(e,t){super(e),this.__internal_setOptions(t)}_options;_lastRunConfig={};_getThreadId;__internal_setGetThreadId(e){this._getThreadId=e}_getInitializePromise;__internal_setGetInitializePromise(e){this._getInitializePromise=e}get extras(){}__internal_setOptions(e){if(this._options===e)return;let t=this._options?.adapters.history;if(this._options=e,!e.adapters.voice&&this.voice)try{this.disconnectVoice()}catch(e){console.error(`[assistant-ui] Voice cleanup threw after the adapter changed`,e)}let n=!1;e.adapters.suggestion||(this._suggestionsController?.abort(),this._suggestionsController=null,this._suggestions.length>0&&(this._suggestions=[],n=!0));let r=e.adapters?.speech!==void 0;this.capabilities.speech!==r&&(this.capabilities.speech=r,n=!0);let i=e.adapters?.dictation!==void 0;this.capabilities.dictation!==i&&(this.capabilities.dictation=i,n=!0);let a=e.adapters?.voice!==void 0;this.capabilities.voice!==a&&(this.capabilities.voice=a,n=!0);let o=e.adapters?.attachments!==void 0;this.capabilities.attachments!==o&&(this.capabilities.attachments=o,n=!0);let s=e.adapters?.feedback!==void 0;this.capabilities.feedback!==s&&(this.capabilities.feedback=s,n=!0);let c=e.adapters?.history?.delete!==void 0;this.capabilities.delete!==c&&(this.capabilities.delete=c,n=!0);let l=e.unstable_enableMessageQueue===!0;l&&!this._queue?(this._queue=qP({run:e=>{let t={};this._queueRunInFlight=t;let n=this._runGeneration;this._runAppend({...e,parentId:this._resolveAppendParent(this.messages.at(-1)?.id??null)}).finally(()=>{this._queueRunInFlight===t&&(this._queueRunInFlight=null,this._runGeneration===n&&this._queue?.notifyIdle())}).catch(()=>{})}}),this.voice&&this._queue.hold(),this._queue.subscribe(()=>this._notifySubscribers())):!l&&this._queue&&(this._queue=null),this.capabilities.queue!==l&&(this.capabilities.queue=l,n=!0),n&&this._notifySubscribers(),this._loadRequested&&!this._loadPromise&&!t&&e.adapters.history&&this.messages.length===0&&this.__internal_load().catch(e=>{console.error(`[assistant-ui] local thread history load failed:`,e)})}_loadPromise;_loadRequested=!1;__internal_load(){if(this._loadRequested=!0,this._loadPromise)return this._loadPromise;if(!this.adapters.history)return Promise.resolve();let e=this.adapters.history.load();return this._isLoading=!0,this._loadPromise=e.then(e=>{if(!e)return;let{repository:t,droppedIds:n}=BA(e);n.length>0&&console.warn(`[assistant-ui] Skipped history messages with missing parents:`,n),e.headId!=null&&!e.messages.some(t=>t.message.id===e.headId)&&console.warn(`[assistant-ui] History head is not among the loaded messages:`,e.headId),this.repository.import(QP(t)),t.messages.length>0&&this.ensureInitialized(),this._notifySubscribers();let r=this.adapters.history?.resume?.bind(this.adapters.history);e.unstable_resume&&r&&this.startRun({parentId:this.repository.headId,sourceId:this.repository.headId,runConfig:this._lastRunConfig},r).catch(()=>{})}).finally(()=>{this._isLoading=!1,this._notifySubscribers()}),this._notifySubscribers(),this._loadPromise}_getHistoryLoadBarrier(){if(!(!this._isLoading||!this._loadPromise))return this._loadPromise.catch(()=>{})}async append(e){if(e={...e,parentId:this._resolveAppendParent(e.parentId)},this.voice)return this._appendToVoiceSession(e);if(this._isVoiceMessage(e.sourceId))throw Error(`Voice transcript messages cannot be edited`);let t=e.parentId===(this.messages.at(-1)?.id??null),n=e.startRun??e.role===`user`;if(this._queue&&n&&t){e.steer??this._queueRunInFlight!==null?this._queue.adapter.steer(e):this._queue.adapter.enqueue(e);return}return this._queue&&!t&&(this._options.unstable_queueClearOnRewind??!0)&&this._queue.clear(),this._runAppend(e)}_commitVoiceMessage(e){let t=xA(this),n=n=>{if(t.aborted){this._dropVoiceMessage(e.id,n);return}let r=this.repository.headId;this.repository.addOrUpdateMessage(r,e);let i=this._cancelPause(r);this.repository.resetHead(e.id);let a=this._options.adapters.history,o=a?this._chainHistoryWrite(e.id,()=>a.append({parentId:r,message:e})):void 0;return o?.catch(()=>{}),this._dropVoiceMessage(e.id,!1),n&&this._notifySubscribers(),i?Promise.all([i,o]).then(()=>{}):o},r=this._getVoiceCommitBarrier();return r?r.then(()=>n(!0)):n(!1)}_onVoiceConnected(){this._queue?.hold()}_onVoiceDisconnected(){this._queue?.release()}getQueueItems(){return this._queue?.adapter.items??UA}getSteerQueueItems(){return this._queue?.adapter.steerItems??UA}moveQueueItem(e,t){this._queue?.adapter.move(e,t)}removeQueueItem(e){this._queue?.adapter.remove(e)}_rollbackAppend(e){try{this.repository.deleteMessage(e)}catch{return}this._notifySubscribers()}_pendingAppends=0;_isRunActive(){return this._pendingAppends>0||super._isRunActive()}async _runAppend(e){this._pendingAppends+=1;try{await this._runAppendInner(e)}finally{--this._pendingAppends}}async _runAppendInner(e){let t=xA(this),n=this._getHistoryLoadBarrier();if(n){let r=e.parentId===(this.messages.at(-1)?.id??null);if(await n,t.aborted)return;r&&(e={...e,parentId:this._resolveAppendParent(this.messages.at(-1)?.id??null)})}let r=this.enrichAppendMetadata(e);this.ensureInitialized();let i=FD(r,GE(),{type:`complete`,reason:`unknown`});this.repository.addOrUpdateMessage(r.parentId,i),this._notifySubscribers();try{let e=this._getInitializePromise?.();e&&await e}catch(e){if(this._rollbackAppend(i.id),t.aborted)return;r.parentId!==null&&this._resumeIfReady(r.parentId);let n=new Wk;throw n.cause=e,n}if(t.aborted){this._rollbackAppend(i.id);return}let a=this._cancelPause(r.parentId),o=this._options.adapters.history,s=o?this._chainHistoryWrite(i.id,()=>o.append({parentId:r.parentId,message:i,...r.runConfig!==void 0&&{runConfig:r.runConfig}})):void 0,c=a?Promise.all([a,s]).then(()=>{}):s;if(c?.catch(()=>{}),r.startRun??r.role===`user`){let[e,t]=await Promise.allSettled([this.startRun({parentId:i.id,sourceId:r.sourceId,runConfig:r.runConfig??{}}),c]);if(e.status===`rejected`)throw e.reason;if(t.status===`rejected`)throw t.reason}else this.repository.switchToBranch(i.id),this._notifySubscribers(),await c}async deleteMessage(e){let t=this._options.adapters.history;if(!t?.delete)throw Error(`Runtime does not support deleting messages.`);let n=this.repository.getMessages(),r=n.findIndex(t=>t.id===e);if(r===-1)throw Error(`Message not found.`);let i=n[r],a=[{parentId:n[r-1]?.id??null,message:i}];await t.delete(a),this.repository.deleteMessage(e),this._notifySubscribers()}resumeRun({stream:e,...t}){if(!e)throw Error(`You must pass a stream parameter to resume runs.`);return this.startRun(t,e)}exportExternalState(){throw Error(`Runtime does not support exporting external states.`)}import(e){this._roundtripsInFlight.clear(),this._followedDuringRun.clear(),this._unwrittenMessages.clear(),super.import(QP(e))}importExternalState(){throw Error(`Runtime does not support importing external states.`)}unstable_notifySessionReset(){throw Error(`Runtime does not support resetting sessions.`)}async startRun({parentId:e,sourceId:t,runConfig:n},r){if(this.ensureInitialized(),this.voice)throw Error(`Cannot start a run while a voice session is connected`);if(this._isVoiceMessage(t))throw Error(`Voice transcript messages cannot be reloaded`);let i=this._cancelPause(e),a=GE(),o={id:a,role:`assistant`,status:{type:`running`},content:[],metadata:{unstable_state:this.state,unstable_annotations:[],unstable_data:[],steps:[],custom:{}},createdAt:new Date};this._unwrittenMessages.add(a);let s=this._runLoop(e,o,n,r);if(!i)return s;let[c,l]=await Promise.allSettled([s,i]);if(c.status===`rejected`)throw c.reason;if(l.status===`rejected`)throw l.reason}async _runLoop(e,t,n,r){if(this.voice)throw Error(`Cannot start a run while a voice session is connected`);this._notifyEventSubscribers(`runStart`,{});let i={cancelled:!1,resumedFromPause:t.status.type===`requires-action`};this._activeRun=i,this._runGeneration++;let a=!1;try{this._queue?.notifyBusy(),this._suggestions=[],this._suggestionsController?.abort(),this._suggestionsController=null,this._notifySubscribers();do{if(t=await this.performRoundtrip(e,t,n,i,r),r=void 0,this._activeRun!==i)break;let a=this._messageReplacements.get(t);for(;a;)t=a.message,a=this._messageReplacements.get(t);if(this.getMessageById(t.id)?.message!==t)break}while(JP(t,this._options.unstable_humanToolNames)&&!this.repository.hasChildren(t.id))}finally{this._notifyEventSubscribers(`runEnd`,{}),a=this._activeRun===i,a&&(this._activeRun=null),(a||i.cancelled)&&queueMicrotask(()=>this._queue?.notifyIdle())}if(a&&this.adapters.suggestion&&t.status?.type!==`requires-action`){this._suggestionsController=new AbortController;let e=this._suggestionsController.signal,t=this.adapters.suggestion;(async()=>{try{await GP(t.generate({messages:this.messages,signal:e}),{signal:e,onUpdate:e=>{this._suggestions=e,this._notifySubscribers()}})}catch{}})()}}async performRoundtrip(e,t,n,r,i){let a=(e?this.repository.getMessages(e):[]).map(e=>$P(e.role===`assistant`&&(e.status.type===`running`||this._roundtripsInFlight.has(e.id))?ZP(e):e));this.abortController?.abort();let o=new AbortController;this.abortController=o;let s=t.content,c=t.metadata?.unstable_annotations,l=t.metadata?.unstable_data,u=t.metadata?.steps,d=t.metadata?.custom,f=new Set,p=!0;try{this.repository.getMessage(t.id)}catch{p=!1}let m=()=>{if(!p)return this._activeRun===r;try{let e=t,n=this._messageReplacements.get(e);for(;n;)n.toolCallId!==void 0&&f.add(n.toolCallId),e=n.message,n=this._messageReplacements.get(e);return this.repository.getMessage(t.id).message===e&&(t=e,!0)}catch{return!1}},h=e=>{let n=new Map;for(let e of t.content)e.type===`tool-call`&&e.unstable_interactions!==void 0&&n.set(e.toolCallId,e.unstable_interactions);let r=e.map(e=>{if(e.type!==`tool-call`||e.unstable_interactions!==void 0)return e;let t=n.get(e.toolCallId);return t===void 0?e:{...e,unstable_interactions:t}});if(f.size===0)return r;let i=new Map;for(let e of t.content){if(e.type!==`tool-call`||!f.has(e.toolCallId))continue;let t=i.get(e.toolCallId)??[];t.push(e),i.set(e.toolCallId,t)}let a=new Map;return r.map(e=>{if(e.type!==`tool-call`)return e;let t=a.get(e.toolCallId)??0;if(a.set(e.toolCallId,t+1),e.result!==void 0&&e.isPreliminary!==!0)return e;let n=i.get(e.toolCallId)?.[t];if(!n||n.result===void 0||n.isPreliminary===!0)return e;let{isPreliminary:r,artifact:o,modelContent:s,...c}=e;return{...c,result:n.result,isError:n.isError,...n.artifact!==void 0&&{artifact:n.artifact},...n.modelContent!==void 0&&{modelContent:n.modelContent}}})},g=n=>{if(!m())return;let r=n.metadata?.steps,i=r?[...u??[],...r]:void 0,a=n.metadata?.unstable_annotations,o=n.metadata?.unstable_data,f=a?[...c??[],...a]:void 0,g=o?[...l??[],...o]:void 0,_=n.content?h([...s,...n.content]):void 0;t={...t,..._?{content:_}:void 0,status:n.status??t.status,...n.metadata?{metadata:{...t.metadata,...n.metadata.unstable_state===void 0?void 0:{unstable_state:n.metadata.unstable_state},...f?{unstable_annotations:f}:void 0,...g?{unstable_data:g}:void 0,...i?{steps:i}:void 0,...n.metadata?.timing?{timing:n.metadata.timing}:void 0,...n.metadata?.custom?{custom:{...d??{},...n.metadata.custom}}:void 0}}:void 0},this.repository.addOrUpdateMessage(e,t),p=!0,this._notifySubscribers()},_=this._options.maxSteps??2;this._roundtripsInFlight.set(t.id,{controller:o,resumedFromPause:r.resumedFromPause});try{if((t.metadata?.steps?.length??0)>=_)return g({status:{type:`incomplete`,reason:`tool-calls`}}),t;g({status:{type:`running`}}),this.repository.switchToBranch(t.id),this._notifySubscribers(),this._lastRunConfig=n??{};let{unstable_composerMetadata:s,...c}=this.getModelContext();i??=this.adapters.chatModel.run.bind(this.adapters.chatModel);let l=o.signal,u=()=>l.aborted&&(t.status.type===`running`||t.status.type===`requires-action`&&(this._activeRun!==r||JP(t,this._options.unstable_humanToolNames))),d=this._getThreadId?.(),f=i({messages:a,runConfig:this._lastRunConfig,abortSignal:l,context:c,unstable_assistantMessageId:t.id,unstable_threadId:d,unstable_parentId:e,unstable_getMessage(){return m(),$P(t)}});if(Symbol.asyncIterator in f)for await(let e of f){if(l.aborted){u()&&g({status:{type:`incomplete`,reason:`cancelled`}});break}g(e)}else g(await f);u()?g({status:{type:`incomplete`,reason:`cancelled`}}):t.status.type===`running`&&g({status:{type:`complete`,reason:`unknown`}})}catch(e){if(e instanceof YP)g({status:{type:`incomplete`,reason:`cancelled`}});else if(e instanceof Error&&e.name===`AbortError`)g({status:{type:`incomplete`,reason:`cancelled`}});else throw g({status:{type:`incomplete`,reason:`error`,error:Kk(e)}}),e}finally{this.abortController===o&&(this.abortController=null);let n=this._roundtripsInFlight.get(t.id)?.controller===o;n&&this._roundtripsInFlight.delete(t.id);let i=this._options.adapters.history,a=m(),s=!1,c,l=n&&this._followedDuringRun.delete(t.id);if(l){let e=this.getMessageById(t.id);if(e?.message.role===`assistant`){let n=ZP(e.message);n!==e.message&&(this.repository.addOrUpdateMessage(e.parentId,n),s=!0,a?t=n:c=this._persistSettled(e.parentId,n))}}if(n&&!a&&!c){let e=this.getMessageById(t.id);e?.message.role===`assistant`&&(e.message.status.type===`complete`||e.message.status.type===`incomplete`)&&this._unwrittenMessages.has(t.id)&&(c=this._persistSettled(e.parentId,e.message))}let u=t.status.type===`complete`||t.status.type===`incomplete`,d=t.status.type===`requires-action`&&!JP(t,this._options.unstable_humanToolNames);if(a&&(u||d&&i?.update)){if(u&&r.resumedFromPause&&!l&&!this._unwrittenMessages.has(t.id)&&i&&!i.update){let n={parentId:e,message:t,runConfig:this._lastRunConfig};c=this._chainHistoryWrite(t.id,()=>i.append(n))}else c=this._persistSettled(e,t)}s&&this._notifySubscribers(),c&&await c}return t}detach(){TA(this),this._queue=null;let e=new YP(!0);this.abortController?.abort(e),this.abortController=null,this._suggestionsController?.abort(),this._suggestionsController=null}cancelRun(){this._queue&&(this._options.unstable_queueClearOnCancel??!0?this._queue.clear():(this._queue.notifyCancelled(),this._activeRun&&(this._activeRun.cancelled=!0)));let e=new YP(!1);this.abortController?.abort(e),this.abortController=null,this._suggestionsController?.abort(),this._suggestionsController=null}_onMessageMetadataChanged(e,t){this._messageReplacements.set(e,{message:t}),this._persistMessageUpdate(t.id)}addToolResult({messageId:e,toolCallId:t,result:n,isError:r,artifact:i,modelContent:a}){if(this.voice)throw Error(`Cannot add a tool result while a voice session is connected`);let o=this.repository.getMessage(e),{parentId:s}=o,{message:c}=o;if(c.role!==`assistant`)throw Error(`Tried to add tool result to non-assistant message`);let l=!1,u=!1,d=c.content.map(e=>{if(e.type!==`tool-call`||e.toolCallId!==t)return e;u=!0,(e.result===void 0||e.isPreliminary===!0)&&(l=!0);let{isPreliminary:o,...s}=e;return{...s,result:n,isError:r,...i!==void 0&&{artifact:i},...a!==void 0&&{modelContent:a}}});if(!u)throw Error(`Tried to add tool result to non-existing tool call`);let f=c;c={...c,content:d},f.status.type===`running`&&this._messageReplacements.set(f,{message:c,toolCallId:t}),this.repository.addOrUpdateMessage(s,c),this._notifySubscribers(),l&&(this._resumeIfReady(e)||this._persistMessageUpdate(e))}resumeToolCall(e){throw Error(`Local runtime does not support resuming tool calls. For human-in-the-loop tools, list the tool in unstable_humanToolNames and complete the call with addToolResult.`)}async unstable_recordToolInteraction({messageId:e,toolCallId:t,interaction:n}){let r;try{r=this.repository.getMessage(e)}catch{throw Error(`Tried to record a tool interaction on a non-existing message`)}let{parentId:i,message:a}=r;if(a.role!==`assistant`)throw Error(`Tried to record a tool interaction on a non-assistant message`);let o=a.content.findIndex(e=>e.type===`tool-call`&&e.toolCallId===t);if(o===-1)throw Error(`Tried to record a tool interaction on a non-existing tool call`);let s=a.content[o];if(s.type!==`tool-call`)throw Error(`Tried to record a tool interaction on a non-existing tool call`);let c={...a,content:a.content.map((e,t)=>t===o?{...e,unstable_interactions:tD(s.unstable_interactions,n)}:e)};a.status.type===`running`&&this._messageReplacements.set(a,{message:c}),this.repository.addOrUpdateMessage(i,c),this._notifySubscribers(),this._persistMessageUpdate(c.id)}respondToToolApproval({approvalId:e,approved:t,optionId:n,text:r,reason:i}){if(this.voice)throw Error(`Cannot respond to a tool approval while a voice session is connected`);let a=this.repository.getMessages().findLast(t=>t.role===`assistant`&&t.content.some(t=>t.type===`tool-call`&&t.approval?.id===e));if(!a)throw Error(`Tried to respond to a non-existing tool approval`);if(this.abortController!==null)throw Error(`Tried to respond to a tool approval while a run is in progress`);if(a.status?.type!==`requires-action`)throw Error(`Tried to respond to a tool approval on a message whose status is not requires-action`);if(this.repository.hasChildren(a.id))throw Error(`Tried to respond to a tool approval on a message that later messages follow`);if(this._followedDuringRun.has(a.id))throw Error(`Tried to respond to a tool approval that was cancelled or expired`);let o=a.content.find(t=>t.type===`tool-call`&&t.approval?.id===e);if(o?.type!==`tool-call`||!o.approval)throw Error(`Tried to respond to a non-existing tool approval`);if(o.approval.resolution!==void 0)throw Error(`Tried to respond to a tool approval that was cancelled or expired`);if(o.approval.approved!==void 0)throw Error(`Tried to respond to an already decided tool approval`);let s=o.approval,c=a.content.map(e=>{if(e!==o)return e;let a={...s,approved:t,...n!=null&&{optionId:n},...r!=null&&{text:r},...i!=null&&{reason:i}};return t?{...e,approval:a}:{...e,approval:a,result:{error:i||`Tool approval denied`},isError:!0}});a={...a,content:c};let{parentId:l}=this.repository.getMessage(a.id);this.repository.addOrUpdateMessage(l,a),this._notifySubscribers(),this._notifyToolApprovalAnswered(a.id,o.toolCallId,o.toolName,t);let u=this.getMessageById(a.id);return this.repository.headId===a.id&&u?.message.role===`assistant`&&JP(u.message,this._options.unstable_humanToolNames)?this._runLoop(u.parentId,u.message,this._lastRunConfig).catch(()=>{}):this._persistMessageUpdate(a.id),Promise.resolve()}},tF=Object.freeze([]),nF=`__DEFAULT_ID__`,rF=Object.freeze({[nF]:{id:nF,remoteId:void 0,externalId:void 0,status:`regular`,title:void 0}}),iF=class extends TT{_mainThread;constructor(e){super(),this._mainThread=e()}get isLoading(){return!1}getMainThreadRuntimeCore(){return this._mainThread}get newThreadId(){}get threadIds(){return tF}get archivedThreadIds(){return tF}get mainThreadId(){return nF}get threadItems(){return rF}getThreadRuntimeCore(){throw Error(`Method not implemented.`)}getLoadThreadsPromise(){return Promise.resolve()}getItemById(e){if(e===this.mainThreadId)return{status:`regular`,id:this.mainThreadId,remoteId:this.mainThreadId,externalId:void 0,title:void 0,isMain:!0};throw Error(`Method not implemented`)}async switchToThread(){throw Error(`Method not implemented.`)}switchToNewThread(){throw Error(`Method not implemented.`)}rename(){throw Error(`Method not implemented.`)}archive(){throw Error(`Method not implemented.`)}detach(){throw Error(`Method not implemented.`)}unarchive(){throw Error(`Method not implemented.`)}delete(){throw Error(`Method not implemented.`)}initialize(e){return Promise.resolve({remoteId:e,externalId:void 0})}generateTitle(){throw Error(`Method not implemented.`)}},aF=class extends IA{threads;Provider=void 0;_options;constructor(e,t){super(),this._options=e,this.threads=new iF(()=>new eF(this._contextProvider,this._options)),t&&this.threads.getMainThreadRuntimeCore().import(LA.fromArray(t))}},oF=(e,t)=>{let n=$(39),r,i;n[0]===t?(r=n[1],i=n[2]):({initialMessages:r,...i}=t,n[0]=t,n[1]=r,n[2]=i);let a=vO()??{},o,s;n[3]===a?(o=n[4],s=n[5]):({modelContext:o,...s}=a,n[3]=a,n[4]=o,n[5]=s);let c;n[6]!==e||n[7]!==i.adapters||n[8]!==s?(c={...s,...i.adapters,chatModel:e},n[6]=e,n[7]=i.adapters,n[8]=s,n[9]=c):c=n[9];let l;n[10]!==i||n[11]!==c?(l={...i,adapters:c},n[10]=i,n[11]=c,n[12]=l):l=n[12];let u=l,d;n[13]!==r||n[14]!==u?(d=()=>new aF(u,r),n[13]=r,n[14]=u,n[15]=d):d=n[15];let[f]=tS(d),p=lT(),m=rS(void 0),h;n[16]!==p||n[17]!==f.threads?(h=()=>{f.threads.getMainThreadRuntimeCore().__internal_setGetThreadId(()=>p.threadListItem.__internal_getRuntime?.().getState().remoteId)},n[16]=p,n[17]=f.threads,n[18]=h):h=n[18];let g;n[19]!==p||n[20]!==f?(g=[p,f],n[19]=p,n[20]=f,n[21]=g):g=n[21],oS(h,g);let _;n[22]===f.threads?_=n[23]:(_=()=>()=>{f.threads.getMainThreadRuntimeCore().detach()},n[22]=f.threads,n[23]=_);let v;n[24]===f?v=n[25]:(v=[f],n[24]=f,n[25]=v),IT(_,v);let y;n[26]!==u||n[27]!==f.threads?(y=()=>{f.threads.getMainThreadRuntimeCore().__internal_setOptions(u)},n[26]=u,n[27]=f.threads,n[28]=y):y=n[28],oS(y);let b;n[29]===f.threads?b=n[30]:(b=()=>{let e=f.threads.getMainThreadRuntimeCore().__internal_load();m.current!==e&&(m.current=e,e.catch(cF))},n[29]=f.threads,n[30]=b);let x;n[31]===f?x=n[32]:(x=[f],n[31]=f,n[32]=x),oS(b,x);let S,C;n[33]!==o||n[34]!==f?(S=()=>{if(o)return f.registerModelContextProvider(o)},C=[o,f],n[33]=o,n[34]=f,n[35]=S,n[36]=C):(S=n[35],C=n[36]),oS(S,C);let w;n[37]===f?w=n[38]:(w=()=>new FA(f),n[37]=f,n[38]=w);let[T]=tS(w);return T},sF=(e,{cloud:t,...n}={})=>Jj({runtimeHook:function(){return oF(e,n)},adapter:WP({cloud:t}),allowNesting:!0});function cF(e){console.error(`[assistant-ui] local thread history load failed:`,e)}function lF(e,t){function n(n){let r=yS(e);if(!n?.optional&&!r)throw Error(`This component must be used within ${t}.`);return r}return n}function uF(e,t){function n(n){let r=e(n);return r?r[t]:null}function r(e){let t=!1,r;typeof e==`function`?r=e:e&&typeof e==`object`&&(t=!!e.optional,r=e.selector);let i=n({optional:t});return i?r?i(r):i():null}return{[t]:r,[`${t}Store`]:n}}var dF=_S(null),{useThreadViewport:fF,useThreadViewportStore:pF}=uF(lF(dF,`ThreadPrimitive.Viewport`),`useThreadViewport`),mF=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},hF=(e=>e?mF(e):mF),gF=e=>e;function _F(e,t=gF){let n=v.useSyncExternalStore(e.subscribe,v.useCallback(()=>t(e.getState()),[e,t]),v.useCallback(()=>t(e.getInitialState()),[e,t]));return v.useDebugValue(n),n}var vF=e=>{let t=hF(e),n=e=>_F(t,e);return Object.assign(n,t),n},yF=(e=>e?vF(e):vF),bF=e=>{let t=new Map,n=()=>{let n=0;for(let e of t.values())n+=e;e(n)};return{register:()=>{let e=Symbol();return t.set(e,0),{setHeight:r=>{t.get(e)!==r&&(t.set(e,r),n())},unregister:()=>{t.delete(e),n()}}}}},xF=(e={})=>{let t=new Set,n=bF(e=>{a.setState({height:{...a.getState().height,viewport:e}})}),r=bF(e=>{a.setState({height:{...a.getState().height,inset:e}})}),i=(e,t)=>(a.setState({element:{...a.getState().element,[e]:t}}),()=>{a.getState().element[e]===t&&a.setState({element:{...a.getState().element,[e]:null}})}),a=yF(()=>({isAtBottom:!0,scrollToBottom:({behavior:e=`auto`}={})=>{DC(t,()=>({behavior:e}),`Thread viewport`)},onScrollToBottom:e=>(t.add(e),()=>{t.delete(e)}),turnAnchor:e.turnAnchor??`bottom`,topAnchorMessageClamp:{tallerThan:e.topAnchorMessageClamp?.tallerThan??`10em`,visibleHeight:e.topAnchorMessageClamp?.visibleHeight??`6em`},height:{viewport:0,inset:0},element:{viewport:null,anchor:null,target:null},targetConfig:null,topAnchorTurn:null,registerViewport:n.register,registerContentInset:r.register,registerViewportElement:e=>i(`viewport`,e),registerAnchorElement:e=>i(`anchor`,e),registerAnchorTargetElement:(e,t)=>(a.setState({element:{...a.getState().element,target:e},targetConfig:e&&t?t:null}),()=>{a.getState().element.target===e&&a.setState({element:{...a.getState().element,target:null},targetConfig:null})}),setTopAnchorTurn:e=>{a.setState({topAnchorTurn:e})}}));return a},SF=e=>e,CF=e=>{let t=$(11),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n={optional:!0},t[0]=n):n=t[0];let r=pF(n),i;t[1]===e?i=t[2]:(i=()=>xF(e),t[1]=e,t[2]=i);let[a]=tS(i),o,s;t[3]!==r||t[4]!==a?(o=()=>r?.getState().onScrollToBottom(e=>{a.getState().scrollToBottom(e)}),s=[r,a],t[3]=r,t[4]=a,t[5]=o,t[6]=s):(o=t[5],s=t[6]),oS(o,s);let c,l;return t[7]!==r||t[8]!==a?(c=()=>{if(r)return a.subscribe(e=>{r.getState().isAtBottom!==e.isAtBottom&&SF(r).setState({isAtBottom:e.isAtBottom})})},l=[a,r],t[7]=r,t[8]=a,t[9]=c,t[10]=l):(c=t[9],l=t[10]),oS(c,l),a},wF=e=>{let t=$(7),{children:n,options:r}=e,i;t[0]===r?i=t[1]:(i=r===void 0?{}:r,t[0]=r,t[1]=i);let a=CF(i),o;t[2]===a?o=t[3]:(o=()=>({useThreadViewport:a}),t[2]=a,t[3]=o);let[s]=tS(o),c;return t[4]!==n||t[5]!==s?(c=(0,q.jsx)(dF.Provider,{value:s,children:n}),t[4]=n,t[5]=s,t[6]=c):c=t[6],c},TF=()=>{let e=$(3),t=lT(),n,r;return e[0]===t?(n=e[1],r=e[2]):(n=()=>{},r=[t],e[0]=t,e[1]=n,e[2]=r),oS(n,r),null},EF=hS(e=>{let t=$(8),{children:n,aui:r,config:i,runtime:a}=e,o=r??null,s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,q.jsx)(TF,{}),t[0]=s):s=t[0];let c;t[1]===n?c=t[2]:(c=(0,q.jsx)(wF,{children:n}),t[1]=n,t[2]=c);let l;return t[3]!==i||t[4]!==a||t[5]!==o||t[6]!==c?(l=(0,q.jsxs)(hO,{runtime:a,aui:o,config:i,children:[s,c]}),t[3]=i,t[4]=a,t[5]=o,t[6]=c,t[7]=l):l=t[7],l}),DF={surface:{kWkggS:`x1prclbq`,kaIpWk:`x1hviunn`,kGVxlE:`x1i5ehqx`,$$css:!0},contentWrapper:{kVAEAm:`x1n2onr6`,$$css:!0},closeButtonWrapper:{kVAEAm:`x10l6tqk`,krVfgx:`x1ey2m1c`,kY2c9j:`x1vjfegm`,kzqmXN:`x1i1rx1s x10okhzq`,kZKoxP:`xjm9jq1 x132qfvm`,kVQacm:`xb3r6kr x1dordxg`,kz4h6p:`x1hyvwdk x10wafsz`,kfzvcC:`x47corl xbt4iw`,kLKAdn:`xexx8yu x1kw28su`,$$css:!0}};function OF(e={}){let{onShow:t,onHide:n,xstyle:r,hasLightDismiss:i=!0,hasEscapeDismiss:a=!0,hasAutoFocus:o=!0,hasSurface:s=!0,hasCloseButton:c=!0,closeButtonLabel:l,dialogLabel:u,role:d=`dialog`,isModal:f=!0}=e,p=Gs(),m=l??p(`@astryx.popover.close`),h=(0,v.useRef)(null),g=(0,v.useRef)(!1),_=Ta({mode:`context`,lightDismiss:i,onShow:t,onHide:n}),{containerRef:y,focusFirst:b}=zl({isActive:_.isOpen,onEscape:a||i?_.hide:void 0});(0,v.useEffect)(()=>{_.isOpen&&o&&!g.current&&requestAnimationFrame(()=>{b()}),_.isOpen||(g.current=!1)},[_.isOpen,o,b]);let x=(0,v.useCallback)(e=>{h.current=e,_.ref(e)},[_]),S=(0,v.useCallback)(e=>{g.current=e?.skipAutoFocus??!1,_.show()},[_]),C=(0,v.useCallback)(()=>{_.isOpen?_.hide():S()},[_,S]),T={"aria-haspopup":d===`dialog`?`dialog`:`true`,"aria-expanded":_.isOpen,"aria-controls":_.id};ql(`usePopover`,'role="dialog" without a `dialogLabel` renders an unnamed dialog. Pass `dialogLabel`, or use `role: "none"` for listbox/menu popups whose content already carries its own role.',d===`dialog`&&!u);let E=(0,v.useCallback)((e,t)=>_.render((0,q.jsxs)(`div`,{ref:y,role:d===`dialog`?`dialog`:void 0,"aria-modal":d===`dialog`&&f?!0:void 0,"aria-label":d===`dialog`?u:void 0,...w(DF.contentWrapper,s&&DF.surface,r),children:[e,c&&(0,q.jsx)(`div`,{...w(DF.closeButtonWrapper,Bi.centerInline(`100%`)),children:(0,q.jsx)(ec,{variant:`secondary`,label:m,onClick:_.hide})})]}),{...t,xstyle:t?.xstyle}),[_,c,s,m,y,u,d,f,r]);return{triggerRef:x,contentRef:y,anchorId:_.anchorId,show:S,hide:_.hide,toggle:C,isOpen:_.isOpen,id:_.id,render:E,triggerProps:T}}var kF={dropdown:{kB7OPa:`x9f619`,k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,kOIVth:`x1lsbc85`,kskxy:`xuyqlj2`,kORKVm:`x1odjw0f`,"--_dropdown-menu-radius":`x1fcsqxe`,"--_dropdown-menu-padding":`xgory14`,kmVPX3:`x9epnlk`,kaIpWk:`x1n97fys`,kSiTet:`x1hc1fzr`,k1ekBW:`x19991ni`,kIyJzY:`xuedmi6`,kAMwcw:`xlr8y92`,$$css:!0},popover:{k7Eaqz:`xrzjruh`,$$css:!0},popoverCustomWidth:e=>[{k7Eaqz:(typeof e==`number`?`${e}px`:e)==null?typeof e==`number`?`${e}px`:e:`xkj4a21`,$$css:!0},{"--x-minWidth":(e=>typeof e==`number`?e+`px`:e??void 0)(typeof e==`number`?`${e}px`:e)}]},AF=`@astryx.dropdownMenu.label`;function jF({button:e,isMenuOpen:t,onOpenChange:n,menuWidth:r,onClick:i,hasChevron:a=!0,placement:o=`below`,alignment:s=`start`,className:c,style:l,xstyle:u,"data-testid":d,...f}){let p=Gs(),m=e??{label:p(AF)},h=(`items`in f?f.items:void 0)??[],g=f.children,{items:_,children:y,...b}=f,x=(0,v.useId)(),S=m.size??`md`,C=(0,v.useRef)(null),[T,E]=(0,v.useState)(!1),D=t!==void 0,k=D?t:T,A=(0,v.useRef)(0),j=(0,v.useCallback)(()=>{A.current=Date.now(),n?.(!1),D||E(!1),C.current?.focus()},[D,n]),M=(0,v.useRef)(!1),N=(0,v.useRef)(`keyboard`),P=OF({onHide:j,onShow:(0,v.useCallback)(()=>{n?.(!0),D||E(!0)},[D,n]),hasLightDismiss:!0,hasCloseButton:!1,hasAutoFocus:!1,role:`none`}),F=(0,v.useCallback)(()=>{P.hide()},[P]),{listRef:I,handleKeyDown:L,focusFirst:R,focusItem:z,ownsEvent:B,getItems:V}=Wl({itemSelector:$d,boundarySelector:ef,wrap:!1,onEscape:F}),H=Kl({getItemLabels:()=>V().map(e=>e.textContent),onMatch:z,getCurrentIndex:()=>V().findIndex(e=>e===document.activeElement||e.contains(document.activeElement))});(0,v.useEffect)(()=>{D&&(t&&!P.isOpen?(M.current=!0,P.show()):!t&&P.isOpen&&P.hide())},[t,D,P]),(0,v.useEffect)(()=>{!P.isOpen||!M.current||(M.current=!1,requestAnimationFrame(()=>{(N.current===`pointer`||!R())&&I.current?.focus(),N.current=`keyboard`}))},[P.isOpen,R,I]);let U=(0,v.useCallback)(e=>{if(B(e)){if(e.key===`Enter`||e.key===` `){e.preventDefault();let t=document.activeElement;t&&Qd.has(t.getAttribute(`role`)??``)&&t.click();return}if(e.key===`Tab`){F();return}if(H.onKeyDown(e)){e.preventDefault();return}L(e)}},[L,F,H,B]),W=(0,v.useCallback)((e=`keyboard`)=>{N.current=e,M.current=!0,P.show()},[P]),ee=(0,v.useCallback)(e=>{if(Date.now()-A.current<50)return;i?.();let r=e.detail===0?`keyboard`:`pointer`;D?(t||(N.current=r),n?.(!t)):P.isOpen?P.hide():W(r)},[i,D,n,t,P,W]),te=(0,v.useCallback)(e=>{P.isOpen||(e.key===`ArrowDown`||e.key===`Enter`||e.key===` `)&&(e.preventDefault(),W())},[P.isOpen,W]),ne=m.isIconOnly===!0,re=m.endContent??(a&&!ne?(0,q.jsx)(fa,{icon:`chevronDown`,size:`sm`,color:`inherit`}):void 0),ie=r?kF.popoverCustomWidth(r):kF.popover,ae=(0,v.useMemo)(()=>({closeMenu:F,menuSize:S}),[F,S]),oe=f.items===void 0?g:lf(h);return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(ec,{...m,ref:e=>{C.current=e,P.triggerRef(e);let t=m.ref;typeof t==`function`?t(e):t&&(t.current=e)},tooltip:k?void 0:m.tooltip,endContent:re,onClick:ee,onKeyDown:te,"aria-haspopup":`menu`,"aria-expanded":k,"aria-controls":x,"data-testid":d}),P.render((0,q.jsx)(`div`,{...b,ref:I,id:x,role:`menu`,tabIndex:-1,"aria-label":m.label,onKeyDown:U,...J(Y(`dropdown-menu`),w(kF.dropdown,u),c,l),children:(0,q.jsx)(Id,{value:ae,children:oe})}),{placement:o,alignment:s,offset:O[`--spacing-1`],xstyle:[ie,Ea[o]]})]})}jF.displayName=`DropdownMenu`;var MF={popoverSurface:{k7Eaqz:`xfb3i0g`,$$css:!0}};function NF(e){let t=window.getSelection();if(!t||t.rangeCount===0)return null;let n=t.getRangeAt(0);if(!n.collapsed||!e.contains(n.startContainer))return null;let r=n.startContainer;return r.nodeType===Node.TEXT_NODE?(r.textContent??``).slice(0,n.startOffset):null}function PF(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n];if(r===` `||r===`
125
+ `),lE=Object.freeze({type:`complete`}),uE=Object.freeze({type:`running`}),dE=Object.freeze({cancelled:Object.freeze({type:`incomplete`,reason:`cancelled`}),length:Object.freeze({type:`incomplete`,reason:`length`}),"content-filter":Object.freeze({type:`incomplete`,reason:`content-filter`}),other:Object.freeze({type:`incomplete`,reason:`other`}),error:Object.freeze({type:`incomplete`,reason:`error`})}),fE=e=>{let t=e.status;if(!t||typeof t!=`object`)return;let{type:n}=t;if(n===`running`)return uE;if(n===`complete`)return lE;if(n!==`incomplete`)return;let{reason:r}=t;return dE[r===`cancelled`||r===`length`||r===`content-filter`||r===`other`||r===`error`?r:`other`]},pE=e=>e.interrupt!=null||e.approval!=null&&e.approval.approved===void 0&&e.approval.resolution===void 0,mE=(e,t,n)=>{if(e.role!==`assistant`)return lE;if(n.type===`tool-call`)return n.result===void 0||n.isPreliminary||pE(n)?e.status:lE;if(e.status.type===`running`){let e=fE(n);if(e)return e}let r=t===Math.max(0,e.content.length-1);return e.status.type===`requires-action`?lE:r?e.status:lE},hE=pC(e=>{let t=$(7),{type:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[],t[0]=r):r=t[0];let i;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(i={},t[1]=i):i=t[1];let a;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=[],t[2]=a):a=t[2];let o;t[3]===n?o=t[4]:(o={isEditing:!1,isEmpty:!0,text:``,attachmentAccept:`*`,attachments:r,role:`user`,runConfig:i,canCancel:!1,canSend:!1,type:n,dictation:void 0,quote:void 0,queue:a,submission:void 0,inTransit:void 0},t[3]=n,t[4]=o);let s=o,c;return t[5]===s?c=t[6]:(c={getState:()=>s,setText:gE,setRole:_E,setRunConfig:vE,addAttachment:yE,clearAttachments:bE,attachment:xE,reset:SE,send:CE,cancel:wE,startDictation:TE,stopDictation:EE,beginEdit:DE,setQuote:OE,queueItem:kE},t[5]=s,t[6]=c),c});function gE(){throw Error(`Not supported`)}function _E(){throw Error(`Not supported`)}function vE(){throw Error(`Not supported`)}function yE(){throw Error(`Not supported`)}function bE(){throw Error(`Not supported`)}function xE(){throw Error(`Not supported`)}function SE(){throw Error(`Not supported`)}function CE(){throw Error(`Not supported`)}function wE(){throw Error(`Not supported`)}function TE(){throw Error(`Not supported`)}function EE(){throw Error(`Not supported`)}function DE(){throw Error(`Not supported`)}function OE(){throw Error(`Not supported`)}function kE(){throw Error(`Not supported`)}var AE=pC(e=>{let t=$(8),{part:n,isMessageRunning:r}=e,i;t[0]!==r||t[1]!==n?(i=r?fE(n)??lE:lE,t[0]=r,t[1]=n,t[2]=i):i=t[2];let a;t[3]!==n||t[4]!==i?(a={...n,status:i},t[3]=n,t[4]=i,t[5]=a):a=t[5];let o=a,s;return t[6]===o?s=t[7]:(s={getState:()=>o,addToolResult:NE,resumeToolCall:PE,respondToToolApproval:FE,unstable_recordInteraction:IE},t[6]=o,t[7]=s),s}),jE=pC(({attachment:e})=>({getState:()=>e,remove:()=>{throw Error(`Not supported`)}})),ME=pC(e=>{let t=$(38),{message:n,index:r,isLast:i,branchNumber:a,branchCount:o,submission:s}=e,c=i===void 0||i,l=a===void 0?1:a,u=o===void 0?1:o,[d,f]=eS(!1),[p,m]=eS(!1),h=n.role===`assistant`&&n.status.type===`running`,g;if(t[0]!==h||t[1]!==n.content){let e;t[3]===h?e=t[4]:(e=(e,t)=>mC(`toolCallId`in e&&e.toolCallId!=null?`toolCallId-${e.toolCallId}`:`index-${t}`,AE({part:e,isMessageRunning:h}),[e,h]),t[3]=h,t[4]=e),g=n.content.map(e),t[0]=h,t[1]=n.content,t[2]=g}else g=t[2];let _=hT(g),v;t[5]!==n.attachments||t[6]!==s?.attachments?(v=s?.attachments??n.attachments??[],t[5]=n.attachments,t[6]=s?.attachments,t[7]=v):v=t[7];let y;t[8]===v?y=t[9]:(y=v.map(LE),t[8]=v,t[9]=y);let b=hT(y),x;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(x=hE({type:`edit`}),t[10]=x):x=t[10];let S=hw(x),C=S.state,w;t[11]!==u||t[12]!==l||t[13]!==C||t[14]!==r||t[15]!==d||t[16]!==p||t[17]!==c||t[18]!==n||t[19]!==_.state||t[20]!==s?(w={...n,parts:_.state,composer:C,parentId:null,index:r,isLast:c,branchNumber:l,branchCount:u,speech:void 0,isCopied:d,isHovering:p,submission:s},t[11]=u,t[12]=l,t[13]=C,t[14]=r,t[15]=d,t[16]=p,t[17]=c,t[18]=n,t[19]=_.state,t[20]=s,t[21]=w):w=t[21];let T=w,E;t[22]===T?E=t[23]:(E=()=>T,t[22]=T,t[23]=E);let D;t[24]===S.methods?D=t[25]:(D=()=>S.methods,t[24]=S.methods,t[25]=D);let O;t[26]===_?O=t[27]:(O=e=>`index`in e?_.get({index:e.index}):_.get({key:`toolCallId-${e.toolCallId}`}),t[26]=_,t[27]=O);let k;t[28]===b?k=t[29]:(k=e=>`id`in e?b.get({key:e.id}):b.get(e),t[28]=b,t[29]=k);let A;t[30]===n?A=t[31]:(A=()=>cE(n),t[30]=n,t[31]=A);let j;return t[32]!==D||t[33]!==O||t[34]!==k||t[35]!==A||t[36]!==E?(j={getState:E,composer:D,part:O,attachment:k,delete:RE,reload:zE,speak:BE,stopSpeaking:VE,submitFeedback:HE,switchToBranch:UE,getCopyText:A,setIsCopied:f,setIsHovering:m},t[32]=D,t[33]=O,t[34]=k,t[35]=A,t[36]=E,t[37]=j):j=t[37],j});function NE(){throw Error(`Not supported`)}function PE(){throw Error(`Not supported`)}function FE(){throw Error(`Not supported`)}async function IE(){}function LE(e){return mC(e.id,jE({attachment:e}),[e])}function RE(){throw Error(`Not supported in ThreadMessageProvider`)}function zE(){throw Error(`Not supported in ThreadMessageProvider`)}function BE(){throw Error(`Not supported in ThreadMessageProvider`)}function VE(){throw Error(`Not supported in ThreadMessageProvider`)}function HE(){throw Error(`Not supported in ThreadMessageProvider`)}function UE(){throw Error(`Not supported in ThreadMessageProvider`)}var WE=((e,t=21)=>(n=t)=>{let r=``,i=n|0;for(;i-->0;)r+=e[Math.random()*e.length|0];return r})(`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`,7);function GE(e){let t=e.match(/^data:([^;,]*)(?:;[^;,]+)*;base64,(.*)$/i);return t?{mimeType:t[1].toLowerCase()||`text/plain`,data:t[2]}:null}function KE(e){return/^data:([^;,]+)(?:[;,])/i.exec(e)?.[1]?.toLowerCase()}var qE={entries:32,payloadLength:16384,logLength:65536},JE=64,YE=e=>{let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},XE=(e,t,n)=>{if(e===null)return!0;switch(typeof e){case`string`:case`boolean`:return!0;case`number`:return Number.isFinite(e);case`object`:break;default:return!1}if(n>JE||t.has(e))return!1;t.add(e);let r=Array.isArray(e)?e.every(e=>XE(e,t,n+1)):YE(e)&&Object.values(e).every(e=>XE(e,t,n+1));return t.delete(e),r},ZE=e=>typeof e==`object`&&!!e&&!Array.isArray(e),QE=e=>e===`action`||e===`human-response`;function $E(e,t=Date.now()){let{type:n,payload:r}=e;if(!QE(n))throw Error(`Unknown tool interaction type: ${String(n)}`);if(!XE(r,new Set,0))throw Error(`A tool interaction payload must be plain JSON.`);if(n===`action`&&!ZE(r))throw Error(`An action interaction payload must be a JSON object.`);let i=JSON.stringify(r);if(i.length>qE.payloadLength)throw Error(`A tool interaction payload is limited to ${qE.payloadLength} characters of JSON.`);return{type:n,occurredAt:t,payload:JSON.parse(i)}}function eD(e,t){let n=[...e?.entries??[],t],r=e?.omitted??0;for(;n.length>1&&(n.length>qE.entries||JSON.stringify(n).length>qE.logLength);)n.shift(),r+=1;return r>0?{entries:n,omitted:r}:{entries:n}}var tD=e=>{if(!ZE(e))return;let{type:t,occurredAt:n,payload:r}=e;if(QE(t)&&!(typeof n!=`number`||!Number.isFinite(n))&&XE(r,new Set,0))return t===`action`?ZE(r)?{type:t,occurredAt:n,payload:r}:void 0:{type:t,occurredAt:n,payload:r}};function nD(e){if(!ZE(e))return;let{entries:t,omitted:n}=e,r=Array.isArray(t)?t.flatMap(e=>{let t=tD(e);return t?[t]:[]}):[],i=typeof n==`number`&&Number.isInteger(n)&&n>0?n:0;for(;r.length>1&&(r.length>qE.entries||JSON.stringify(r).length>qE.logLength);)r.shift(),i+=1;if(r.length!==0||i!==0)return i>0?{entries:r,omitted:i}:{entries:r}}async function*rD(){let e=this.getReader(),t=!0;try{for(;;){let n;try{n=await e.read()}catch(e){throw t=!1,e}if(n.done){t=!1;break}let{value:r}=n;yield r}}finally{try{t&&await e.cancel()}finally{e.releaseLock()}}}function iD(e){return e[Symbol.asyncIterator]??=rD,e}var aD=/[0-9a-fA-F]/;function oD(e){let t=[`ROOT`],n=-1,r=null,i=0,a=[],o;function s(){o!==void 0&&(a.push(JSON.parse(`"${o}"`)),o=void 0)}function c(e,i,a){switch(e){case`"`:n=i,t.pop(),t.push(a),t.push(`INSIDE_STRING`),s();break;case`f`:case`t`:case`n`:n=i,r=i,t.pop(),t.push(a),t.push(`INSIDE_LITERAL`);break;case`-`:t.pop(),t.push(a),t.push(`INSIDE_NUMBER`),s();break;case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:case`8`:case`9`:n=i,t.pop(),t.push(a),t.push(`INSIDE_NUMBER`),s();break;case`{`:n=i,t.pop(),t.push(a),t.push(`INSIDE_OBJECT_START`),s();break;case`[`:n=i,t.pop(),t.push(a),t.push(`INSIDE_ARRAY_START`),s()}}function l(e,r){switch(e){case`,`:t.pop(),t.push(`INSIDE_OBJECT_AFTER_COMMA`);break;case`}`:n=r,t.pop(),o=a.pop()}}function u(e,r){switch(e){case`,`:t.pop(),t.push(`INSIDE_ARRAY_AFTER_COMMA`),o=(Number(o)+1).toString();break;case`]`:n=r,t.pop(),o=a.pop()}}for(let s=0;s<e.length;s++){let d=e[s];switch(t[t.length-1]){case`ROOT`:c(d,s,`FINISH`);break;case`INSIDE_OBJECT_START`:switch(d){case`"`:t.pop(),t.push(`INSIDE_OBJECT_KEY`),o=``;break;case`}`:n=s,t.pop(),o=a.pop()}break;case`INSIDE_OBJECT_AFTER_COMMA`:d===`"`&&(t.pop(),t.push(`INSIDE_OBJECT_KEY`),o=``);break;case`INSIDE_OBJECT_KEY`:switch(d){case`"`:t.pop(),t.push(`INSIDE_OBJECT_AFTER_KEY`);break;case`\\`:t.push(`INSIDE_STRING_ESCAPE`),o+=d;break;default:o+=d}break;case`INSIDE_OBJECT_AFTER_KEY`:d===`:`&&(t.pop(),t.push(`INSIDE_OBJECT_BEFORE_VALUE`));break;case`INSIDE_OBJECT_BEFORE_VALUE`:c(d,s,`INSIDE_OBJECT_AFTER_VALUE`);break;case`INSIDE_OBJECT_AFTER_VALUE`:l(d,s);break;case`INSIDE_STRING`:switch(d){case`"`:t.pop(),n=s,o=a.pop();break;case`\\`:t.push(`INSIDE_STRING_ESCAPE`);break;default:n=s}break;case`INSIDE_ARRAY_START`:switch(d){case`]`:n=s,t.pop(),o=a.pop();break;default:o=`0`,c(d,s,`INSIDE_ARRAY_AFTER_VALUE`)}break;case`INSIDE_ARRAY_AFTER_VALUE`:switch(d){case`,`:t.pop(),t.push(`INSIDE_ARRAY_AFTER_COMMA`),o=(Number(o)+1).toString();break;case`]`:n=s,t.pop(),o=a.pop();break;default:n=s}break;case`INSIDE_ARRAY_AFTER_COMMA`:c(d,s,`INSIDE_ARRAY_AFTER_VALUE`);break;case`INSIDE_STRING_ESCAPE`:{t.pop();let e=t[t.length-1];d===`u`?(t.push(`INSIDE_STRING_UNICODE_ESCAPE`),i=0):e===`INSIDE_STRING`&&(n=s),e===`INSIDE_OBJECT_KEY`&&(o+=d);break}case`INSIDE_STRING_UNICODE_ESCAPE`:{let e=t[t.length-2];if(!aD.test(d)){t.pop(),s--;break}i++,i===4&&(t.pop(),e===`INSIDE_STRING`&&(n=s)),e===`INSIDE_OBJECT_KEY`&&(o+=d);break}case`INSIDE_NUMBER`:switch(d){case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:case`8`:case`9`:n=s;break;case`e`:case`E`:case`-`:case`+`:case`.`:break;case`,`:t.pop(),o=a.pop(),t[t.length-1]===`INSIDE_ARRAY_AFTER_VALUE`&&u(d,s),t[t.length-1]===`INSIDE_OBJECT_AFTER_VALUE`&&l(d,s);break;case`}`:t.pop(),o=a.pop(),t[t.length-1]===`INSIDE_OBJECT_AFTER_VALUE`&&l(d,s);break;case`]`:t.pop(),o=a.pop(),t[t.length-1]===`INSIDE_ARRAY_AFTER_VALUE`&&u(d,s);break;default:t.pop(),o=a.pop()}break;case`INSIDE_LITERAL`:{let i=e.substring(r,s+1);!`false`.startsWith(i)&&!`true`.startsWith(i)&&!`null`.startsWith(i)?(t.pop(),t[t.length-1]===`INSIDE_OBJECT_AFTER_VALUE`?l(d,s):t[t.length-1]===`INSIDE_ARRAY_AFTER_VALUE`&&u(d,s)):n=s;break}}}let d=e.slice(0,n+1);for(let n=t.length-1;n>=0;n--)switch(t[n]){case`INSIDE_STRING`:d+=`"`;break;case`INSIDE_OBJECT_KEY`:case`INSIDE_OBJECT_AFTER_KEY`:case`INSIDE_OBJECT_AFTER_COMMA`:case`INSIDE_OBJECT_START`:case`INSIDE_OBJECT_BEFORE_VALUE`:case`INSIDE_OBJECT_AFTER_VALUE`:d+=`}`;break;case`INSIDE_ARRAY_START`:case`INSIDE_ARRAY_AFTER_COMMA`:case`INSIDE_ARRAY_AFTER_VALUE`:d+=`]`;break;case`INSIDE_LITERAL`:{let t=e.substring(r,e.length);`true`.startsWith(t)?d+=`true`.slice(t.length):`false`.startsWith(t)?d+=`false`.slice(t.length):`null`.startsWith(t)&&(d+=`null`.slice(t.length))}}return[d,a]}var sD=l(o(((e,t)=>{var n=typeof Buffer<`u`,r=/"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/,i=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/;function a(e,t,a){a==null&&typeof t==`object`&&t&&(a=t,t=void 0),n&&Buffer.isBuffer(e)&&(e=e.toString()),e&&e.charCodeAt(0)===65279&&(e=e.slice(1));let s=JSON.parse(e,t);if(typeof s!=`object`||!s)return s;let c=a&&a.protoAction||`error`,l=a&&a.constructorAction||`error`;if(c===`ignore`&&l===`ignore`)return s;if(c!==`ignore`&&l!==`ignore`){if(r.test(e)===!1&&i.test(e)===!1)return s}else if(c!==`ignore`&&l===`ignore`){if(r.test(e)===!1)return s}else if(i.test(e)===!1)return s;return o(s,{protoAction:c,constructorAction:l,safe:a&&a.safe})}function o(e,{protoAction:t=`error`,constructorAction:n=`error`,safe:r}={}){let i=[e];for(;i.length;){let e=i;i=[];for(let a of e){if(t!==`ignore`&&Object.prototype.hasOwnProperty.call(a,`__proto__`)){if(r===!0)return null;if(t===`error`)throw SyntaxError(`Object contains forbidden prototype property`);delete a.__proto__}if(n!==`ignore`&&Object.prototype.hasOwnProperty.call(a,`constructor`)&&a.constructor!==null&&typeof a.constructor==`object`&&Object.prototype.hasOwnProperty.call(a.constructor,`prototype`)){if(r===!0)return null;if(n===`error`)throw SyntaxError(`Object contains forbidden prototype property`);delete a.constructor}for(let e in a){let t=a[e];t&&typeof t==`object`&&i.push(t)}}}return e}function s(e,t,n){let{stackTraceLimit:r}=Error;Error.stackTraceLimit=0;try{return a(e,t,n)}finally{Error.stackTraceLimit=r}}function c(e,t){let{stackTraceLimit:n}=Error;Error.stackTraceLimit=0;try{return a(e,t,{safe:!0})}catch{return}finally{Error.stackTraceLimit=n}}t.exports=s,t.exports.default=s,t.exports.parse=s,t.exports.safeParse=c,t.exports.scan=o}))(),1),cD=Symbol(`aui.parse-partial-json-object.meta`),lD=e=>{if(e.length===0)return{[cD]:{state:`partial`,partialPath:[]}};try{let t=sD.default.parse(e);if(typeof t!=`object`||!t)throw Error(`argsText is expected to be an object`);return t[cD]={state:`complete`,partialPath:[]},t}catch{try{let[t,n]=oD(e),r=sD.default.parse(t);if(typeof r!=`object`||!r)throw Error(`argsText is expected to be an object`);return r[cD]={state:`partial`,partialPath:n},r}catch{return}}},uD=((e,t=21)=>(n=t)=>{let r=``,i=n|0;for(;i-->0;)r+=e[Math.random()*e.length|0];return r})(`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`,7),dD=()=>{let e,t,n=new Promise((n,r)=>{e=n,t=r});if(!e||!t)throw Error(`Failed to create promise`);return{promise:n,resolve:e,reject:t}},fD=()=>{let e=[],t=!1,n=!1,r=!1,i,a,o=0,s,c,l=()=>(a=void 0,c??=Promise.all(e.splice(0).map(async e=>{try{await e.reader.cancel().catch(()=>void 0),await e.pipeTask}finally{e.reader.releaseLock()}})).then(()=>void 0),c),u=e=>{n||r||(r=!0,console.error(e),l(),i.error(e),s?.reject(e),s=void 0)},d=a=>{a.promise||=a.reader.read().then(({done:c,value:l})=>{a.promise=void 0,!(n||r)&&(c?(e.splice(e.indexOf(a),1),a.reader.releaseLock(),t&&e.length===0&&o===0&&i.close()):i.enqueue(l),s?.resolve(),s=void 0)}).catch(u)},f=new ReadableStream({start(e){i=e},pull(){return s=dD(),e.forEach(e=>{d(e)}),s.promise},async cancel(){n=!0;let e=l();s?.resolve(),s=void 0,await e}}),p=c=>{if(e.length>0&&(a=void 0),!a){let c=[];a=c,o++,Promise.resolve().then(()=>{if(o--,a===c&&(a=void 0),!(n||r)){for(let e of c)i.enqueue(e);t&&e.length===0&&o===0&&i.close(),s?.resolve(),s=void 0}}).catch(u)}a.push(c)};return{readable:f,isSealed(){return t},isCancelled(){return n},isErrored(){return r},seal(){t||n||r||(t=!0,e.length===0&&o===0&&i.close())},addStream:(i,o)=>{let s=o?.catch(()=>void 0);if(n||r){i.cancel().catch(()=>void 0);return}if(t)throw i.cancel().catch(()=>void 0),Error(`Cannot add streams after the run callback has settled.`);a=void 0;let c={reader:i.getReader(),pipeTask:s};e.push(c),d(c)},enqueue(e){if(!(n||r)){if(t)throw Error(`Cannot add streams after the run callback has settled.`);p(e)}}}},pD=(e,t)=>new ReadableStream({start(n){return e.start?.(t(n))},pull(n){return e.pull?.(t(n))},cancel(t){return e.cancel?.(t)}}),mD=(e,t)=>{let n;return[pD({start(e){n=e},cancel(e){return t?.(n,e)}},e),n]},hD=e=>e instanceof TypeError,gD=(e,t,n)=>{try{e.enqueue(t)}catch(e){if(!hD(e))throw e;n?.(e)}},_D=e=>{try{e.close()}catch(e){if(!hD(e))throw e}},vD=class{_controller;_strict;_isClosed=!1;_warnedDropped=!1;constructor(e,t={}){this._controller=e,this._strict=t.strict??!0}append(e){let t={type:`text-delta`,path:[],textDelta:e};if(this._isClosed){if(this._strict)throw TypeError(`Cannot append to a closed TextStreamController`);return gD(this._controller,t,this._warnDroppedAfterClose),this}return gD(this._controller,t),this}_warnDroppedAfterClose=e=>{this._warnedDropped||(this._warnedDropped=!0,console.error(`Dropped text delta for closed stream: ${String(e)}`))};close(){this._isClosed||(this._isClosed=!0,gD(this._controller,{type:`part-finish`,path:[]}),_D(this._controller))}},yD=(e,t={})=>pD(e,e=>new vD(e,t)),bD=(e={})=>mD(t=>new vD(t,e)),xD=Symbol.for(`aui.tool-response`),SD=`<no result>`,CD=class e{get[xD](){return!0}artifact;result;isError;isPreliminary;modelContent;messages;constructor(e){e.artifact!==void 0&&(this.artifact=e.artifact);let t=e.result;this.result=t===void 0?SD:t,this.isError=e.isError??!1,e.isPreliminary&&(this.isPreliminary=!0),e.modelContent!==void 0&&(this.modelContent=e.modelContent),e.messages!==void 0&&(this.messages=e.messages)}static[Symbol.hasInstance](e){return typeof e==`object`&&!!e&&xD in e}static toResponse(t){return t instanceof e?t:new e({result:t===void 0?SD:t})}},wD=class{_isClosed=!1;_mergeTask;_controller;constructor(e,t={}){this._controller=e;let n=yD({start:e=>{this._argsTextController=e}},t),r=!1;this._mergeTask=n.pipeTo(new WritableStream({write:e=>{switch(e.type){case`text-delta`:r=!0,gD(this._controller,e);break;case`part-finish`:r||gD(this._controller,{type:`text-delta`,textDelta:`{}`,path:[]}),gD(this._controller,{type:`tool-call-args-text-finish`,path:[]});break;default:throw Error(`Unexpected chunk type: ${e.type}`)}}}))}get argsText(){return this._argsTextController}_argsTextController;async setResponse(e){if(this._isClosed)return;let t=e.result;gD(this._controller,{type:`result`,path:[],...e.artifact===void 0?{}:{artifact:e.artifact},result:t===void 0?SD:t,isError:e.isError??!1,...e.isPreliminary?{isPreliminary:!0}:{},...e.modelContent===void 0?{}:{modelContent:e.modelContent},...e.messages===void 0?{}:{messages:e.messages}}),e.isPreliminary?this._argsTextController.close():await this.close()}async close(){this._isClosed||(this._isClosed=!0,this._argsTextController.close(),await this._mergeTask,gD(this._controller,{type:`part-finish`,path:[]}),_D(this._controller))}},TD=(e={})=>mD(t=>new wD(t,e)),ED=class{value=-1;up(){return++this.value}},DD=class extends TransformStream{constructor(e){super({transform(t,n){n.enqueue({...t,path:[e,...t.path]})}})}};TransformStream;var OD=class extends TransformStream{constructor(e){let t=new ED,n=new Map;super({transform(r,i){r.type===`part-start`&&r.path.length===0&&n.set(t.up(),e.up());let[a,...o]=r.path;if(a===void 0){i.enqueue(r);return}let s=n.get(a);if(s===void 0)throw Error(`Path not found`);i.enqueue({...r,path:[s,...o]})}})}},kD=class e{_state;_parentId;constructor(e,t={}){this._state=e||{strict:t.strict??!0,merger:fD(),contentCounter:new ED}}get __internal_isClosed(){return this._state.merger.isSealed()||this._state.merger.isCancelled()||this._state.merger.isErrored()}get __internal_isCancelled(){return this._state.merger.isCancelled()}__internal_getReadable(){return this._state.merger.readable}__internal_subscribeToClose(e){this._state.closeSubscriber=e}_addTransformedStream(e,t){if(e.locked)throw TypeError(`Cannot merge a stream that is already locked to a reader.`);let n=e.pipeTo(t.writable).catch(async e=>{throw await t.writable.abort(e).catch(()=>void 0),e});this._state.merger.addStream(t.readable,n)}_addPart(e,t){this._state.append&&(this._state.append.controller.close(),this._state.append=void 0),this.enqueue({type:`part-start`,part:e,path:[]}),this._addTransformedStream(t,new DD(this._state.contentCounter.value))}merge(e){this._addTransformedStream(e,new OD(this._state.contentCounter))}appendText(e){(this._state.append?.kind!==`text`||this._state.append.parentId!==this._parentId)&&(this._state.append={kind:`text`,parentId:this._parentId,controller:this.addTextPart()}),this._state.append.controller.append(e)}appendReasoning(e,t){(t!==void 0||this._state.append?.kind!==`reasoning`||this._state.append.parentId!==this._parentId)&&(this._state.append={kind:`reasoning`,parentId:this._parentId,controller:this.addReasoningPart(t)}),(t===void 0||e.length!==0)&&this._state.append.controller.append(e)}addTextPart(){let[e,t]=bD({strict:this._state.strict});return this._addPart(this._withParentIdOption({type:`text`}),e),t}addReasoningPart(e){let[t,n]=bD({strict:this._state.strict});return this._addPart(this._withParentIdOption({type:`reasoning`,...e}),t),n}addToolCallPart(e){let t=typeof e==`string`?{toolName:e}:e,n=t.toolName,r=t.toolCallId??uD(),[i,a]=TD({strict:this._state.strict});return this._addPart({type:`tool-call`,toolName:n,toolCallId:r,...this._parentId&&{parentId:this._parentId}},i),t.argsText!==void 0&&(a.argsText.append(t.argsText),a.argsText.close()),t.args!==void 0&&(a.argsText.append(JSON.stringify(t.args)),a.argsText.close()),t.response!==void 0&&a.setResponse(t.response),a}_finishedPartStream(){return new ReadableStream({start(e){e.enqueue({type:`part-finish`,path:[]}),e.close()}})}_withParentIdOption(e){return this._parentId?{...e,parentId:this._parentId}:e}appendSource(e){this._addPart(this._withParentIdOption(e),this._finishedPartStream())}appendFile(e){this._addPart(this._withParentIdOption(e),this._finishedPartStream())}appendData(e){this._addPart(this._withParentIdOption(e),this._finishedPartStream())}enqueue(e){this._state.merger.enqueue(e),e.type===`part-start`&&e.path.length===0&&this._state.contentCounter.up()}withParentId(t){let n=new e(this._state);return n._parentId=t,n}close(){this._state.append?.controller?.close(),this._state.merger.seal(),this._state.closeSubscriber?.()}};function AD(e,t={}){let n=new kD(void 0,t);return(async()=>{try{await e(n)}catch(e){n.__internal_isClosed?n.__internal_isCancelled||console.error(e):n.enqueue({type:`error`,path:[],error:String(e)})}finally{n.__internal_isClosed||n.close()}})(),n.__internal_getReadable()}function jD(e={}){let{resolve:t,promise:n}=dD(),r;return[AD(e=>(r=e,r.__internal_subscribeToClose(t),n),e),r]}var MD=class extends TransformStream{constructor(e,t,n){let[r,i]=jD({strict:e.strict}),a=new AbortController,o;super({start(t){o=r.pipeTo(new WritableStream({write(e){t.enqueue(e)},abort(e){t.error(e)},close(){t.terminate()}}),{signal:a.signal}).catch(e=>{t.error(e)});try{return e.start?.(i)}catch(e){throw a.abort(e),e}},transform(t){return e.transform?.(t,i)},async flush(){await e.flush?.(i),i.close(),await o}},t,n);let s=super.readable.getReader(),c=!1;Object.defineProperty(this,"readable",{value:new ReadableStream({start(e){s.closed.catch(t=>{a.abort(t),e.error(t),s.releaseLock()})},async pull(e){let t=await s.read();c||(t.done?(e.close(),s.releaseLock()):e.enqueue(t.value))},async cancel(e){c=!0;let t=s.cancel(e);a.abort(e);try{await t}finally{await o,s.releaseLock()}}},{highWaterMark:0}),writable:!1})}},ND=(e,t)=>{if(e.startsWith(`data-`))return{type:`data`,name:e.substring(5),data:t}},PD=(e,t,n)=>{let{role:r,id:i,createdAt:a,attachments:o,status:s,metadata:c}=e,l={id:i??t,createdAt:a??new Date},u=typeof e.content==`string`?[{type:`text`,text:e.content}]:e.content,d=({image:e,...t})=>typeof e==`string`?GE(e)?.mimeType.startsWith(`image/`)||/^(https:\/\/|blob:)/i.test(e)?{...t,image:e}:(console.warn(`Invalid image data format detected`),null):null;if(r!==`user`&&o?.length)throw Error(`attachments are only supported for user messages`);if(r!==`assistant`&&s)throw Error(`status is only supported for assistant messages`);if(r!==`assistant`&&c?.steps)throw Error(`metadata.steps is only supported for assistant messages`);switch(r){case`assistant`:return{...l,role:r,content:u.map(e=>{let t=e.type;switch(t){case`text`:return e.text?.trim()?e:null;case`reasoning`:return!e.text?.trim()&&!e.unstable_summary?.trim()?null:e;case`file`:case`source`:return e;case`image`:return d(e);case`data`:return e;case`generative-ui`:return e;case`tool-call`:{let{parentId:t,messages:n,unstable_interactions:r,...i}=e,a=nD(r),o={...i,toolCallId:e.toolCallId||`tool-${WE()}`,...t!==void 0&&{parentId:t},...n!==void 0&&{messages:n},...a!==void 0&&{unstable_interactions:a}};return e.args?{...o,args:e.args,argsText:e.argsText??JSON.stringify(e.args)}:{...o,args:lD(e.argsText??``)??{},argsText:e.argsText??``}}case`audio`:throw Error(`Unsupported assistant message part type: ${t}`);default:{let n=t,r=ND(n,e.data);if(r)return r;throw Error(`Unsupported assistant message part type: ${n}`)}}}).filter(e=>!!e),status:s??n,metadata:{unstable_state:c?.unstable_state??null,unstable_annotations:c?.unstable_annotations??[],unstable_data:c?.unstable_data??[],custom:c?.custom??{},steps:c?.steps??[],...c?.timing&&{timing:c.timing},...c?.submittedFeedback&&{submittedFeedback:c.submittedFeedback},...c?.isOptimistic&&{isOptimistic:!0},...c?.modality&&{modality:c.modality}}};case`user`:return{...l,role:r,content:u.map(e=>{let t=e.type;switch(t){case`text`:case`image`:case`audio`:case`file`:case`data`:return e;case`reasoning`:case`source`:case`generative-ui`:case`tool-call`:throw Error(`Unsupported user message part type: ${t}`);default:{let n=t,r=ND(n,e.data);if(r)return r;throw Error(`Unsupported user message part type: ${n}`)}}}),attachments:(o??[]).map(e=>({...e,content:e.content.map(e=>ND(e.type,e.data)??e)})),metadata:{custom:c?.custom??{},...c?.isOptimistic&&{isOptimistic:!0},...c?.modality&&{modality:c.modality}}};case`system`:if(u.length!==1||u[0].type!==`text`)throw Error(`System messages must have exactly one text message part.`);return{...l,role:r,content:u,metadata:{custom:c?.custom??{}}};default:throw Error(`Unknown message role: ${r}`)}},FD=e=>PD({role:e.role,content:e.role===`system`||e.text?[{type:`text`,text:e.text}]:[],attachments:[],metadata:{custom:{...e.quote?{quote:e.quote}:{}}}},e.id,{type:`complete`,reason:`unknown`}),ID=e=>{let t=rS(()=>({}),[]),n=t.state,r=[];e.suggestions.forEach(e=>{let t=n?.suggestions[r.length];r.push(t&&Mw(t,e)?t:e)});let i=n&&Mw(r,n.suggestions)?n:{suggestions:r};return t.state=i,i},LD=pC(e=>({getState:()=>e})),RD=e=>{let t=$(9),n=ID(e),r;t[0]===n.suggestions?r=t[1]:(r=n.suggestions.map(BD),t[0]=n.suggestions,t[1]=r);let i=hT(r),a;t[2]===n?a=t[3]:(a=()=>n,t[2]=n,t[3]=a);let o;t[4]===i?o=t[5]:(o=e=>{let{index:t}=e;return i.get({index:t})},t[4]=i,t[5]=o);let s;return t[6]!==a||t[7]!==o?(s={getState:a,suggestion:o},t[6]=a,t[7]=o,t[8]=s):s=t[8],s},zD=pC(e=>{let t=$(4),n;t[0]===e?n=t[1]:(n=e.map(VD),t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r={suggestions:n},t[2]=n,t[3]=r),RD(r)});function BD(e,t){return mC(t,LD(e),[e])}function VD(e){return{title:e.title??e.prompt,label:e.label??``,prompt:e.prompt}}var HD=e=>`reason`in e?e.reason:void 0,UD=e=>`error`in e?e.error:void 0,WD=32,GD=new WeakMap,KD=e=>GD.get(e)??e.id,qD=(e,t,n)=>`status`in e&&e.status?mE(e,t,n):lE,JD=()=>{let e=[],t=new Map;return n=>{let r=[],i=new Map,a=!0,o=(e,n,s,c)=>{if(!(s>WD))for(let[l,u]of e.entries())for(let[e,d]of u.content.entries()){if(d.type!==`tool-call`||d.messages===void 0)continue;let f=d.messages,p=qD(u,e,d),m=HD(p),h=UD(p),g=`${c}${l}.${e}`,_=t.get(g),v=_?.part===d&&_.statusType===p.type&&_.statusReason===m&&Object.is(_.statusError,h)&&_.messages===f&&_.task.messageId===u.id&&_.task.parentTaskId===n&&_.task.depth===s?_.task:{id:d.toolCallId,toolName:d.toolName,args:d.args,result:d.result,...d.isError===void 0?void 0:{isError:d.isError},status:p,timing:d.timing,messageId:u.id,parentTaskId:n,depth:s,messages:f};v!==_?.task&&(a=!1,GD.set(v,g)),r.push(v),i.set(g,{task:v,part:d,statusType:p.type,statusReason:m,statusError:h,messages:f}),o(f,v.id,s+1,`${g}.`)}};o(n,null,0,``);let s=a&&r.length===e.length&&r.every((t,n)=>t===e[n])?e:r;return e=s,t=i,s}},YD=pC(({task:e})=>({getState:()=>e})),XD=pC(e=>{let t=$(8),{runtime:n,id:r,threadIdRef:i,threadId:a,isLast:o}=e,s;t[0]!==r||t[1]!==n?(s=n.getMessageById(r),t[0]=r,t[1]=n,t[2]=s):s=t[2];let c=s,l;return t[3]!==o||t[4]!==c||t[5]!==a||t[6]!==i?(l=sE({runtime:c,threadIdRef:i,threadId:a,isLast:o}),t[3]=o,t[4]=c,t[5]=a,t[6]=i,t[7]=l):l=t[7],gC(l)}),ZD=pC(e=>{let t=$(111),{runtime:n}=e,r=JT(n),i=kw(),a,o;t[0]!==i||t[1]!==n?(a=()=>{let e=[];for(let t of[`runStart`,`runEnd`,`initialize`,`modelContextUpdate`]){let r=n.unstable_on(t,()=>{let e=n.getState()?.threadId||`unknown`;i(`thread.${t}`,{threadId:e})});e.push(r)}return e.push(n.unstable_on(`toolApprovalAnswered`,e=>{let t=n.getState()?.threadId||`unknown`;i(`thread.toolApprovalAnswered`,{threadId:t,...e})})),()=>xT(e)},o=[n,i],t[0]=i,t[1]=n,t[2]=a,t[3]=o):(a=t[2],o=t[3]),aS(a,o);let s;t[4]===n?s=t[5]:(s=rE(()=>n.getState().threadId),t[4]=n,t[5]=s);let c=s,l;t[6]!==i||t[7]!==n?(l=e=>{i(e,{threadId:n.getState().threadId})},t[6]=i,t[7]=n,t[8]=l):l=t[8];let u=l,d;t[9]===n?d=t[10]:(d=e=>n.getState().suggestions.some(t=>t.prompt===e),t[9]=n,t[10]=d);let f=d,p;t[11]!==f||t[12]!==n.composer||t[13]!==c?(p=tE({runtime:n.composer,threadIdRef:c,isSuggestion:f}),t[11]=f,t[12]=n.composer,t[13]=c,t[14]=p):p=t[14];let m=hw(p),h;t[15]===r.suggestions?h=t[16]:(h=zD(r.suggestions),t[15]=r.suggestions,t[16]=h);let g=hw(h),_;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(_=JD(),t[17]=_):_=t[17];let v=_,y;t[18]===r.messages?y=t[19]:(y=v(r.messages),t[18]=r.messages,t[19]=y);let b=y,x;t[20]===b?x=t[21]:(x=b.map(QD),t[20]=b,t[21]=x);let S=hT(x),C=m.state.submission,w=m.state.inTransit,T;t[22]===w?T=t[23]:(T=w??[],t[22]=w,t[23]=T);let E;t[24]===C?E=t[25]:(E=C?[C]:[],t[24]=C,t[25]=E);let D;t[26]!==T||t[27]!==E?(D=[...T,...E],t[26]=T,t[27]=E,t[28]=D):D=t[28];let O=D,k;t[29]===O?k=t[30]:(k=O.map(FD),t[29]=O,t[30]=k);let A=k,j=r.messages.length-1,M;if(t[31]!==j||t[32]!==O||t[33]!==A||t[34]!==n||t[35]!==r.messages||t[36]!==r.threadId||t[37]!==c){let e;t[39]!==j||t[40]!==O.length||t[41]!==n||t[42]!==r.threadId||t[43]!==c?(e=(e,t)=>{let i=t===j&&O.length>0?!1:void 0;return mC(e.id,XD({runtime:n,id:e.id,threadIdRef:c,threadId:r.threadId,isLast:i}),[n,e.id,c,r.threadId,i])},t[39]=j,t[40]=O.length,t[41]=n,t[42]=r.threadId,t[43]=c,t[44]=e):e=t[44];let i=r.messages.map(e),a;t[45]!==O||t[46]!==A||t[47]!==r.messages.length?(a=O.map((e,t)=>mC(e.id,ME({message:A[t],submission:e,index:r.messages.length+t,isLast:t===O.length-1}),[A[t],e,r.messages.length,t,O.length])),t[45]=O,t[46]=A,t[47]=r.messages.length,t[48]=a):a=t[48],M=[...i,...a],t[31]=j,t[32]=O,t[33]=A,t[34]=n,t[35]=r.messages,t[36]=r.threadId,t[37]=c,t[38]=M}else M=t[38];let N=hT(M),P=N.state.length===0&&!r.isLoading,F;t[49]!==m.state||t[50]!==N.state||t[51]!==r.capabilities||t[52]!==r.extras||t[53]!==r.isDisabled||t[54]!==r.isLoading||t[55]!==r.isRunning||t[56]!==r.speech||t[57]!==r.state||t[58]!==r.suggestions||t[59]!==r.voice||t[60]!==P||t[61]!==b?(F={isEmpty:P,isDisabled:r.isDisabled,isLoading:r.isLoading,isRunning:r.isRunning,capabilities:r.capabilities,state:r.state,suggestions:r.suggestions,extras:r.extras,speech:r.speech,voice:r.voice,composer:m.state,messages:N.state,tasks:b},t[49]=m.state,t[50]=N.state,t[51]=r.capabilities,t[52]=r.extras,t[53]=r.isDisabled,t[54]=r.isLoading,t[55]=r.isRunning,t[56]=r.speech,t[57]=r.state,t[58]=r.suggestions,t[59]=r.voice,t[60]=P,t[61]=b,t[62]=F):F=t[62];let I=F,L;t[63]===I?L=t[64]:(L=()=>I,t[63]=I,t[64]=L);let R;t[65]===m.methods?R=t[66]:(R=()=>m.methods,t[65]=m.methods,t[66]=R);let z;t[67]===g?z=t[68]:(z=()=>g.methods,t[67]=g,t[68]=z);let B;t[69]!==S||t[70]!==b?(B=e=>{if(`id`in e){let t=b.find(t=>t.id===e.id);return S.get({key:t?KD(t):e.id})}return S.get(e)},t[69]=S,t[70]=b,t[71]=B):B=t[71];let V;t[72]!==i||t[73]!==f||t[74]!==n?(V=e=>{let t=typeof e==`string`?{content:[{type:`text`,text:e}]}:e;if((t.role??`user`)===`user`){let e=t.content.map($D).join(``);i(`composer.send`,{threadId:n.getState().threadId,chars:e.length,attachments:t.attachments?.length??0,...f(e)?{suggestion:!0}:void 0})}n.append(e)},t[72]=i,t[73]=f,t[74]=n,t[75]=V):V=t[75];let H;t[76]!==u||t[77]!==n||t[78]!==r.isRunning?(H=()=>{r.isRunning&&u(`thread.cancelRun`),n.cancelRun()},t[76]=u,t[77]=n,t[78]=r.isRunning,t[79]=H):H=t[79];let U;t[80]!==u||t[81]!==n?(U=()=>{n.connectVoice(),u(`thread.voiceStarted`)},t[80]=u,t[81]=n,t[82]=U):U=t[82];let W;t[83]===N?W=t[84]:(W=e=>`id`in e?N.get({key:e.id}):N.get(e),t[83]=N,t[84]=W);let ee;t[85]===n?ee=t[86]:(ee=()=>n,t[85]=n,t[86]=ee);let te;return t[87]!==n.deleteMessage||t[88]!==n.disconnectVoice||t[89]!==n.export||t[90]!==n.getModelContext||t[91]!==n.getVoiceVolume||t[92]!==n.import||t[93]!==n.importExternalState||t[94]!==n.muteVoice||t[95]!==n.reset||t[96]!==n.resumeRun||t[97]!==n.startRun||t[98]!==n.stopSpeaking||t[99]!==n.subscribeVoiceVolume||t[100]!==n.unmuteVoice||t[101]!==L||t[102]!==R||t[103]!==z||t[104]!==B||t[105]!==V||t[106]!==H||t[107]!==U||t[108]!==W||t[109]!==ee?(te={getState:L,composer:R,suggestions:z,task:B,append:V,deleteMessage:n.deleteMessage,startRun:n.startRun,resumeRun:n.resumeRun,importExternalState:n.importExternalState,cancelRun:H,getModelContext:n.getModelContext,export:n.export,import:n.import,reset:n.reset,stopSpeaking:n.stopSpeaking,connectVoice:U,disconnectVoice:n.disconnectVoice,getVoiceVolume:n.getVoiceVolume,subscribeVoiceVolume:n.subscribeVoiceVolume,muteVoice:n.muteVoice,unmuteVoice:n.unmuteVoice,message:W,__internal_getRuntime:ee},t[87]=n.deleteMessage,t[88]=n.disconnectVoice,t[89]=n.export,t[90]=n.getModelContext,t[91]=n.getVoiceVolume,t[92]=n.import,t[93]=n.importExternalState,t[94]=n.muteVoice,t[95]=n.reset,t[96]=n.resumeRun,t[97]=n.startRun,t[98]=n.stopSpeaking,t[99]=n.subscribeVoiceVolume,t[100]=n.unmuteVoice,t[101]=L,t[102]=R,t[103]=z,t[104]=B,t[105]=V,t[106]=H,t[107]=U,t[108]=W,t[109]=ee,t[110]=te):te=t[110],te});function QD(e){return mC(KD(e),YD({task:e}),[e])}function $D(e){return e.type===`text`?e.text:``}var eO=e=>{let t=$(4),n=kw(),r=nS(e),i,a;t[0]!==n||t[1]!==e?(i=()=>{let t=r.current;t!==e&&(r.current=e,n(`threads.selectionChanged`,{threadId:e,previousThreadId:t}))},a=[e,n],t[0]=n,t[1]=e,t[2]=i,t[3]=a):(i=t[2],a=t[3]),aS(i,a)},tO=(e,t,n)=>{let r=$(8),i=n===void 0?t:n,a=kw(),o=t&&i,s;r[0]!==o||r[1]!==e?(s={isMain:o,threadId:e},r[0]=o,r[1]=e,r[2]=s):s=r[2];let c=nS(s),l,u;r[3]!==a||r[4]!==t||r[5]!==e?(l=()=>{let n=c.current;(n.isMain!==t||n.threadId!==e)&&(c.current={isMain:t,threadId:e},a(t?`threadListItem.switchedTo`:`threadListItem.switchedAway`,{threadId:e}))},u=[t,e,a],r[3]=a,r[4]=t,r[5]=e,r[6]=l,r[7]=u):(l=r[6],u=r[7]),aS(l,u)},nO=(e,t)=>ZT(`thread list ${e}`,t),rO=pC(e=>{let t=$(27),{runtime:n,mainThreadIsRunning:r}=e,i=r!==void 0&&r,a=JT(n),o;bb0:{let e=a.isRunning||a.isMain&&i;if(e===a.isRunning){o=a;break bb0}let n;t[0]!==e||t[1]!==a?(n={...a,isRunning:e},t[0]=e,t[1]=a,t[2]=n):n=t[2],o=n}let s=o;tO(a.id,a.isMain);let c;t[3]===s?c=t[4]:(c=()=>s,t[3]=s,t[4]=c);let l,u,d,f,p,m,h;t[5]===n?(l=t[6],u=t[7],d=t[8],f=t[9],p=t[10],m=t[11],h=t[12]):(u=e=>nO(`switch`,()=>n.switchTo(e)),d=e=>nO(`rename`,()=>n.rename(e)),f=e=>nO(`update custom metadata`,()=>n.updateCustom(e)),p=()=>nO(`archive`,()=>n.archive()),m=()=>nO(`unarchive`,()=>n.unarchive()),h=()=>nO(`delete`,()=>n.delete()),l=e=>nO(`generate title`,()=>n.generateTitle(e)),t[5]=n,t[6]=l,t[7]=u,t[8]=d,t[9]=f,t[10]=p,t[11]=m,t[12]=h);let g;t[13]===n?g=t[14]:(g=()=>n,t[13]=n,t[14]=g);let _;return t[15]!==n.detach||t[16]!==n.initialize||t[17]!==l||t[18]!==g||t[19]!==c||t[20]!==u||t[21]!==d||t[22]!==f||t[23]!==p||t[24]!==m||t[25]!==h?(_={getState:c,switchTo:u,rename:d,updateCustom:f,archive:p,unarchive:m,delete:h,generateTitle:l,initialize:n.initialize,detach:n.detach,__internal_getRuntime:g},t[15]=n.detach,t[16]=n.initialize,t[17]=l,t[18]=g,t[19]=c,t[20]=u,t[21]=d,t[22]=f,t[23]=p,t[24]=m,t[25]=h,t[26]=_):_=t[26],_}),iO=pC(e=>{let t=$(6),{runtime:n,id:r,mainThreadIsRunning:i}=e,a;t[0]!==r||t[1]!==n?(a=n.getItemById(r),t[0]=r,t[1]=n,t[2]=a):a=t[2];let o=a,s;return t[3]!==i||t[4]!==o?(s=rO({runtime:o,mainThreadIsRunning:i}),t[3]=i,t[4]=o,t[5]=s):s=t[5],gC(s)}),aO=pC(e=>{let t=$(48),{runtime:n,__internal_assistantRuntime:r}=e,i=JT(n);eO(i.mainThreadId);let a=kw(),o,s;t[0]!==a||t[1]!==n?(o=()=>n.unstable_subscribeThreadEvents(e=>{let{threadId:t,type:r}=e;t!==n.getState().mainThreadId&&a(`thread.${r}`,{threadId:t})}),s=[n,a],t[0]=a,t[1]=n,t[2]=o,t[3]=s):(o=t[2],s=t[3]),aS(o,s);let c;t[4]===n.main?c=t[5]:(c=ZD({runtime:n.main}),t[4]=n.main,t[5]=c);let l=hw(c),u;t[6]!==l.state||t[7]!==n||t[8]!==i.threadItems?(u=Object.keys(i.threadItems).map(e=>mC(e,iO({runtime:n,id:e,mainThreadIsRunning:l.state.isRunning}),[n,e,l.state.isRunning])),t[6]=l.state,t[7]=n,t[8]=i.threadItems,t[9]=u):u=t[9];let d=hT(u),f=i.newThreadId??null,p;t[10]!==l.state||t[11]!==i.archivedThreadIds||t[12]!==i.hasMore||t[13]!==i.isLoading||t[14]!==i.isLoadingMore||t[15]!==i.loadError||t[16]!==i.mainThreadId||t[17]!==i.threadIds||t[18]!==f||t[19]!==d.state?(p={mainThreadId:i.mainThreadId,newThreadId:f,isLoading:i.isLoading,loadError:i.loadError,isLoadingMore:i.isLoadingMore,hasMore:i.hasMore,threadIds:i.threadIds,archivedThreadIds:i.archivedThreadIds,threadItems:d.state,main:l.state},t[10]=l.state,t[11]=i.archivedThreadIds,t[12]=i.hasMore,t[13]=i.isLoading,t[14]=i.isLoadingMore,t[15]=i.loadError,t[16]=i.mainThreadId,t[17]=i.threadIds,t[18]=f,t[19]=d.state,t[20]=p):p=t[20];let m=p,h;t[21]===m?h=t[22]:(h=()=>m,t[21]=m,t[22]=h);let g;t[23]===l.methods?g=t[24]:(g=()=>l.methods,t[23]=l.methods,t[24]=g);let _;t[25]!==m||t[26]!==d?(_=e=>{if(e===`main`)return d.get({key:m.mainThreadId});if(`id`in e)return d.get({key:e.id});let{index:t,archived:n}=e,r=n!==void 0&&n?m.archivedThreadIds[t]:m.threadIds[t];return d.get({key:r})},t[25]=m,t[26]=d,t[27]=_):_=t[27];let v,y,b,x,S,C;t[28]===n?(v=t[29],y=t[30],b=t[31],x=t[32],S=t[33],C=t[34]):(v=(e,t)=>nO(`switch`,()=>n.switchToThread(e,t)),y=()=>nO(`create`,()=>n.switchToNewThread()),b=()=>n.getLoadThreadsPromise(),x=()=>n.reload(),S=()=>n.reloadMainThread(),C=()=>n.loadMore(),t[28]=n,t[29]=v,t[30]=y,t[31]=b,t[32]=x,t[33]=S,t[34]=C);let w;t[35]===r?w=t[36]:(w=()=>r,t[35]=r,t[36]=w);let T;return t[37]!==v||t[38]!==y||t[39]!==b||t[40]!==x||t[41]!==S||t[42]!==C||t[43]!==w||t[44]!==h||t[45]!==g||t[46]!==_?(T={getState:h,thread:g,item:_,switchToThread:v,switchToNewThread:y,getLoadThreadsPromise:b,reload:x,reloadMainThread:S,loadMore:C,__internal_getAssistantRuntime:w},t[37]=v,t[38]=y,t[39]=b,t[40]=x,t[41]=S,t[42]=C,t[43]=w,t[44]=h,t[45]=g,t[46]=_,t[47]=T):T=t[47],T}),oO=(e,t)=>{e.thread??=pT({source:`threads`,query:{type:`main`},get:e=>e.threads.thread(`main`)}),e.threadListItem??=pT({source:`threads`,query:{type:`main`},get:e=>e.threads.item(`main`)}),e.composer??=pT({source:`thread`,query:{},get:e=>e.threads.thread(`main`).composer()}),!e.modelContext&&t.modelContext.source===null&&(e.modelContext=BT()),!e.suggestions&&t.suggestions.source===null&&(e.suggestions=pT({source:`thread`,query:{},get:e=>e.thread.suggestions()}))},sO=e=>{let t=$(7),n=Dw(),r;t[0]!==n||t[1]!==e?(r=()=>e.registerModelContextProvider(n.current.modelContext()),t[0]=n,t[1]=e,t[2]=r):r=t[2];let i;t[3]===e?i=t[4]:(i=[e],t[3]=e,t[4]=i),Ow(`modelContext`,r,i);let a;return t[5]===e?a=t[6]:(a=aO({runtime:e.threads,__internal_assistantRuntime:e}),t[5]=e,t[6]=a),gC(a)},cO=pC(sO);nw(sO,(e,t)=>{oO(e,t),!e.tools&&t.tools.source===null&&(e.tools=GT({})),!e.dataRenderers&&t.dataRenderers.source===null&&(e.dataRenderers=wC())});var lO=DC({}),uO=({effects:e})=>{"use no memo";return oS(e),null},dO=pS(function(e,t){"use no memo";let{config:n,children:r}=e,i=`extends`in e,a=`value`in e,o=$C();if(Hw){if(i&&a)throw Error("AuiProvider: pass either `extends` or `value`, not both.");if(i&&e.extends===void 0)throw Error("AuiProvider: `extends` must be a client or null, not undefined.");if(i&&!n)throw Error("AuiProvider: `extends` requires a `config`.");if(a&&n)throw Error("AuiProvider: pass either `value` or `config`, not both.");if(!a&&!n)throw Error("AuiProvider: a `config` is required.");if(!i&&!a&&o!==KC)throw Error(`A parent AuiProvider exists — pass extends={aui} to inherit it or extends={null} to isolate.`)}let s=i?e.extends??KC:a?e.value??KC:o,c=Bw(),{client:l,effects:u}=sT(s,n??lO,c);return fS(t,()=>l,[l]),(0,q.jsx)(Aw.Provider,{value:c,children:(0,q.jsxs)(JC.Provider,{value:l,children:[(0,q.jsx)(uO,{effects:ZC(s)}),u&&(0,q.jsx)(uO,{effects:u}),r]})})}),fO=e=>e._core?.RenderComponent,pO=({runtime:e,aui:t,config:n,children:r})=>{"use no memo";let i=fO(e),a=DC({...n,threads:cO(e)});return(0,q.jsxs)(dO,{extends:t,config:a,children:[i&&(0,q.jsx)(i,{}),r]})},mO=mS(e=>{let t=$(5),{runtime:n,aui:r,config:i,children:a}=e,o=r===void 0?null:r,s;return t[0]!==o||t[1]!==a||t[2]!==i||t[3]!==n?(s=(0,q.jsx)(pO,{runtime:n,aui:o,config:i,children:a}),t[0]=o,t[1]=a,t[2]=i,t[3]=n,t[4]=s):s=t[4],s}),hO=gS(null),gO=(e,t)=>xx(hO,e,t),_O=()=>vS(hO),vO={},yO=e=>{let t=Vw(e??vO);return e==null?null:t},bO=e=>{let t=$(6),{adapters:n,children:r}=e,i=vS(hO),a;t[0]!==n||t[1]!==i?(a={...i,...n},t[0]=n,t[1]=i,t[2]=a):a=t[2];let o=a,s;return t[3]!==r||t[4]!==o?(s=(0,q.jsx)(hO.Provider,{value:o,children:r}),t[3]=r,t[4]=o,t[5]=s):s=t[5],s};function xO(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function SO(e,t=0){return t>100?!1:e===null||typeof e==`string`||typeof e==`boolean`?!0:typeof e==`number`?!Number.isNaN(e)&&Number.isFinite(e):Array.isArray(e)?e.every(e=>SO(e,t+1)):xO(e)?Object.entries(e).every(([e,n])=>typeof e==`string`&&SO(n,t+1)):!1}var CO=e=>{if(e instanceof Date&&!Number.isNaN(e.getTime()))return e;if(typeof e!=`string`&&typeof e!=`number`)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t},wO=e=>e===`system`||e===`user`||e===`assistant`,TO={running:()=>!0,"requires-action":e=>typeof e.reason==`string`,complete:e=>typeof e.reason==`string`,incomplete:e=>(e.reason===void 0||typeof e.reason==`string`)&&(e.error===void 0||SO(e.error))},EO=e=>xO(e)&&typeof e.type==`string`&&Object.hasOwn(TO,e.type)&&TO[e.type](e)===!0,DO=e=>{if(xO(e)){if(e.messageId!==void 0&&typeof e.messageId!=`string`){let{messageId:t,...n}=e;return DO(n)}if(e.usage!==void 0&&!xO(e.usage)){let{usage:t,...n}=e;return n}return e}},OO=e=>Array.isArray(e)?e.map(DO).filter(e=>e!==void 0):[],kO=(e,t)=>{let n={text:e=>typeof e.text==`string`,reasoning:e=>typeof e.text==`string`||typeof e.unstable_summary==`string`,image:e=>typeof e.image==`string`,file:e=>typeof e.data==`string`&&typeof e.mimeType==`string`,audio:e=>xO(e.audio)&&typeof e.audio.data==`string`&&typeof e.audio.format==`string`,data:e=>typeof e.name==`string`,source:e=>typeof e.id==`string`&&(e.sourceType===`url`?typeof e.url==`string`:e.sourceType===`document`&&typeof e.title==`string`&&typeof e.mediaType==`string`),"generative-ui":e=>xO(e.spec),"tool-call":e=>typeof e.toolCallId==`string`&&typeof e.toolName==`string`&&xO(e.args)&&typeof e.argsText==`string`,...e};return e=>xO(e)&&typeof e.type==`string`&&(Object.hasOwn(n,e.type)?n[e.type](e):t(e.type))};kO({},()=>!0);var AO=kO({reasoning:e=>(e.text===void 0||typeof e.text==`string`)&&(e.unstable_summary===void 0||typeof e.unstable_summary==`string`)&&(typeof e.text==`string`||typeof e.unstable_summary==`string`),"tool-call":e=>typeof e.toolCallId==`string`&&typeof e.toolName==`string`&&(e.args===void 0||xO(e.args))&&(e.argsText===void 0||typeof e.argsText==`string`)&&(e.args!==void 0||e.argsText!==void 0)},e=>e.startsWith(`data-`)),jO={user:{text:!0,image:!0,file:!0,data:!0,audio:!0},assistant:{text:!0,reasoning:!0,"tool-call":!0,source:!0,file:!0,image:!0,data:!0,"generative-ui":!0}},MO=(e,t)=>AO(t)&&(e===`system`?t.type===`text`:Object.hasOwn(jO.assistant,t.type)||Object.hasOwn(jO.user,t.type)?Object.hasOwn(jO[e],t.type):!0),NO=(e,t)=>!xO(e)||typeof e.id!=`string`||typeof e.type!=`string`||typeof e.name!=`string`||!xO(e.status)||e.status.type!==`complete`||!Array.isArray(e.content)?null:{...e,content:e.content.filter(t)},PO={toResponse(e,t){return new Response(PO.toByteStream(e,t),{headers:t.headers??{}})},fromResponse(e,t){return PO.fromByteStream(e.body,t)},toByteStream(e,t){return e.pipeThrough(t)},fromByteStream(e,t){return e.pipeThrough(t)}},FO=new Set([`__proto__`,`constructor`,`prototype`]);function IO(e){if(FO.has(e))throw Error(`Unsafe gorp path segment: ${e}`)}var LO=class{_state;_strict;_logged=new Set;_warnedClamp=!1;constructor(e=null,t={}){this._state=e,this._strict=t.strict??!0}get state(){return this._state}logOnce(e,t){this._logged.has(e)||this._logged.size>=20||(this._logged.add(e),t())}append(e){this._state=e.reduce((e,t)=>{if(this._strict)return this.apply(e,t);try{return this.apply(e,t)}catch(n){return this.logOnce(`skip:${String(n)}`,()=>console.error(`Skipped unappliable gorp operation: ${String(n)}`,t)),e}},this._state)}apply(e,t){let n=t.type;switch(n){case`set`:return this.updatePath(e,t.path,()=>t.value);case`append-text`:return this.updatePath(e,t.path,e=>{if(typeof e!=`string`)throw Error(`Expected string at path [${t.path.join(`, `)}]`);return e+t.value});default:throw Error(`Invalid operation type: ${n}`)}}updatePath(e,t,n){if(t.length===0)return n(e);let r=[],i=e;for(let e=0;e<t.length;e++){if(i??={},typeof i!=`object`)throw Error(`Invalid path: [${t.slice(e).join(`, `)}]`);let n=t[e];if(IO(n),Array.isArray(i)){let a=Number(n);if(!Number.isInteger(a)||String(a)!==String(n))throw Error(`Expected array index at [${t.slice(e).join(`, `)}]`);if(a<0)throw Error(`Insert array index out of bounds`);if(a>i.length){if(this._strict)throw Error(`Insert array index out of bounds`);this._warnedClamp||(this._warnedClamp=!0,console.warn(`Clamped out-of-bounds gorp array index ${a} to ${i.length}`)),a=i.length}r.push({kind:`array`,state:i,key:a}),i=Object.hasOwn(i,a)?i[a]:void 0}else{let e=i;r.push({kind:`object`,state:e,key:n}),i=Object.hasOwn(e,n)?e[n]:void 0}}let a=n(i);for(let e=r.length-1;e>=0;e--){let t=r[e];if(t.kind===`array`){let e=[...t.state];e[t.key]=a,a=e}else{let e={...t.state};e[t.key]=a,a=e}}return a}},RO=class{_streamStartTime;_firstTokenTime;_totalChunks=0;_toolCallIds=new Set;constructor(){this._streamStartTime=Date.now()}recordChunk(){this._totalChunks++}recordFirstToken(){this._firstTokenTime===void 0&&(this._firstTokenTime=Date.now())}recordToolCallStart(e){this._toolCallIds.add(e)}getTiming(e,t){let n=Date.now()-this._streamStartTime,r=e&&e>0?e:t?Math.ceil(t.length/4):void 0,i=r&&n>0?r/n*1e3:void 0;return{streamStartTime:this._streamStartTime,...this._firstTokenTime===void 0?void 0:{firstTokenTime:this._firstTokenTime-this._streamStartTime},totalStreamTime:n,...r===void 0?void 0:{tokenCount:r},...i===void 0?void 0:{tokensPerSecond:i},totalChunks:this._totalChunks,toolCallCount:this._toolCallIds.size}}},zO=(e,t)=>({...e,parts:t,get content(){return this.parts}}),BO=(e,t)=>zO(e,[...e.parts,t]),VO=({unstable_state:e=null}={})=>({role:`assistant`,status:{type:`running`},parts:[],get content(){return this.parts},metadata:{unstable_state:e,unstable_data:[],unstable_annotations:[],steps:[],custom:{}}}),HO=16,UO=(e,t,n,r)=>{let i=t.path.length===1?e.parts[t.path[0]]:void 0;if(i===void 0)return n(`no-part:${t.type}`,`Dropped ${t.type} chunk: no part at path [${t.path.join(`, `)}]`),e;let a=t.path[0],o=r(i);return o===i?e:zO(e,[...e.parts.slice(0,a),o,...e.parts.slice(a+1)])},WO=(e,t,n)=>{let r=t.part;if(r.type===`text`||r.type===`reasoning`)return BO(e,{type:r.type,text:``,status:{type:`running`},...r.type===`reasoning`&&r.unstable_summary!==void 0?{unstable_summary:r.unstable_summary}:void 0,...r.parentId&&{parentId:r.parentId}});if(r.type===`tool-call`)return BO(e,{type:`tool-call`,state:`partial-call`,status:{type:`running`,isArgsComplete:!1},toolCallId:r.toolCallId,toolName:r.toolName,argsText:``,args:{},timing:{startedAt:Date.now()},...r.parentId&&{parentId:r.parentId}});if(r.type===`source`)return BO(e,{type:`source`,sourceType:r.sourceType,id:r.id,url:r.url,...r.title?{title:r.title}:void 0,...r.parentId&&{parentId:r.parentId}});if(r.type===`file`)return BO(e,{type:`file`,mimeType:r.mimeType,data:r.data,...r.parentId&&{parentId:r.parentId}});if(r.type===`data`)return BO(e,{type:`data`,name:r.name,data:r.data,...r.parentId&&{parentId:r.parentId}});{let t=String(r.type);return n(`unsupported-part-start:${t}`,`Unsupported part-start type ${t}: inserting an empty reasoning part to preserve part indices`),BO(e,{type:`reasoning`,text:``,status:{type:`running`}})}},GO=(e,t,n)=>UO(e,t,n,e=>e.type===`tool-call`?e.state===`partial-call`?{...e,state:`call`,status:e.status.type===`running`?{type:`running`,isArgsComplete:!0}:e.status}:e:(n(`wrong-part:tool-call-args-text-finish`,`Dropped tool-call-args-text-finish chunk: part is not a tool-call`),e)),KO=(e,t,n)=>UO(e,t,n,e=>e.type===`tool-call`&&e.isPreliminary?e:{...e,status:{type:`complete`,reason:`unknown`}}),qO=(e,t,n)=>UO(e,t,n,e=>{if(e.type===`text`||e.type===`reasoning`)return{...e,text:e.text+t.textDelta};if(e.type===`tool-call`){let n=e.argsText+t.textDelta,r=lD(n)??e.args;return{...e,argsText:n,args:r}}return n(`wrong-part:text-delta`,`Dropped text-delta chunk: part is neither text nor tool-call`),e}),JO=(e,t,n)=>UO(e,t,n,e=>{if(e.type===`tool-call`){let n=t.isPreliminary===!0,r=e.status.type===`running`?e.status:{type:`running`,isArgsComplete:e.state!==`partial-call`};if(n)return e.state===`result`?e:{...e,state:e.state===`partial-call`?`partial-call`:`call`,...t.artifact===void 0?{}:{artifact:t.artifact},result:t.result,isError:t.isError??!1,isPreliminary:!0,...t.modelContent===void 0?{}:{modelContent:t.modelContent},...t.messages===void 0?{}:{messages:t.messages},status:r};let{isPreliminary:i,...a}=e;return{...a,state:`result`,...e.timing===void 0?{}:{timing:{...e.timing,completedAt:e.timing.completedAt??Date.now()}},...t.artifact===void 0?{}:{artifact:t.artifact},result:t.result,isError:t.isError??!1,...t.modelContent===void 0?{}:{modelContent:t.modelContent},...t.messages===void 0?{}:{messages:t.messages},status:{type:`complete`,reason:`stop`}}}return n(`wrong-part:result`,`Dropped result chunk: part is not a tool-call`),e}),YO=(e,t)=>{if(e.status?.type===`incomplete`&&e.status?.reason===`error`)return e;let n=XO(t);return{...e,status:n}},XO=e=>e.finishReason===`tool-calls`?{type:`requires-action`,reason:`tool-calls`}:e.finishReason===`stop`||e.finishReason===`unknown`?{type:`complete`,reason:e.finishReason}:{type:`incomplete`,reason:e.finishReason},ZO=(e,t)=>({...e,metadata:{...e.metadata,unstable_annotations:[...e.metadata.unstable_annotations,...t.annotations]}}),QO=(e,t)=>({...e,metadata:{...e.metadata,unstable_data:[...e.metadata.unstable_data,...t.data]}}),$O=(e,t)=>({...e,metadata:{...e.metadata,steps:[...e.metadata.steps,{state:`started`,messageId:t.messageId}]}}),ek=(e,t)=>{let n=e.metadata.steps.slice(),r=n.length-1;return n.length>0&&n[r]?.state===`started`?n[r]={...n[r],state:`finished`,finishReason:t.finishReason,usage:t.usage,isContinued:t.isContinued}:n.push({state:`finished`,messageId:uD(),finishReason:t.finishReason,usage:t.usage,isContinued:t.isContinued}),{...e,metadata:{...e.metadata,steps:n}}},tk=(e,t)=>{let n=t.severity===`critical`||t.severity===`warning`||t.severity===`info`?t.severity:void 0;return{...e,status:{type:`incomplete`,reason:`error`,error:{code:t.code??`unknown`,message:t.error??`unknown error`,...n!==void 0&&{severity:n}}}}},nk=(e,t,n)=>(n.append(t.operations),{...e,metadata:{...e.metadata,unstable_state:n.state}}),rk=e=>{let t=0;for(let n of e.metadata.steps)n.state===`finished`&&n.usage&&(t+=n.usage.outputTokens);return t},ik=(e,t,n=0)=>{let r=n>0?n:rk(t);if(r>0)return e.getTiming(r);let i=``;for(let e of t.parts)(e.type===`text`||e.type===`reasoning`)&&(i+=e.text);return e.getTiming(void 0,i||void 0)},ak=e=>{let t=!1;return()=>{t||(t=!0,queueMicrotask(()=>{t=!1,e()}))}},ok=class extends TransformStream{constructor({initialMessage:e,throttle:t,onError:n,strict:r=!0}={}){let i=e??VO(),a,o,s=new RO,c=new Set,l=(e,t)=>{c.has(e)||c.size>=HO||(c.add(e),console.warn(t))},u,d=t?ak(()=>{u?.enqueue(i)}):()=>{u?.enqueue(i)};super({start(e){u=e},transform(e){s.recordChunk();let t=e.type;switch(t){case`part-start`:i=WO(i,e,l),e.part.type===`tool-call`&&s.recordToolCallStart(e.part.toolCallId);break;case`tool-call-args-text-finish`:i=GO(i,e,l);break;case`part-finish`:i=KO(i,e,l);break;case`text-delta`:{let t=qO(i,e,l);t!==i&&s.recordFirstToken(),i=t;break}case`result`:i=JO(i,e,l);break;case`message-finish`:o=e.usage?.outputTokens,i=YO(i,e);break;case`annotations`:i=ZO(i,e);break;case`data`:i=QO(i,e);break;case`step-start`:i=$O(i,e);break;case`step-finish`:i=ek(i,e);break;case`error`:i=tk(i,e),n?.(e.error);break;case`update-state`:a??=new LO(i.metadata.unstable_state,{strict:r}),i=nk(i,e,a);break;default:throw Error(`Unsupported chunk type: ${t}`)}i.status.type!==`running`&&(i={...i,metadata:{...i.metadata,timing:ik(s,i,o)}}),d()},flush(e){if(i.status?.type===`running`){let t=i.parts?.some(e=>e.type===`tool-call`&&(e.state===`call`||e.state===`partial-call`)&&(e.result===void 0||e.isPreliminary))??!1;i=YO(i,{type:`message-finish`,path:[],finishReason:t?`tool-calls`:`unknown`,usage:{inputTokens:0,outputTokens:0}}),i={...i,metadata:{...i.metadata,timing:ik(s,i,o)}},e.enqueue(i)}}})}},sk=class e{readable;constructor(e){this.readable=e}static fromAssistantStream(t){return new e(t.pipeThrough(new ok))}async unstable_result(){let e;for await(let t of this)e=t;return e||{role:`assistant`,status:{type:`complete`,reason:`unknown`},parts:[],content:[],metadata:{unstable_state:null,unstable_data:[],unstable_annotations:[],steps:[],custom:{}}}}[Symbol.asyncIterator](){return iD(this.readable)[Symbol.asyncIterator]()}tee(){let[t,n]=this.readable.tee();return[new e(t),new e(n)]}},ck=class extends TransformStream{constructor(e){super();let t=e(super.readable);Object.defineProperty(this,"readable",{value:t,writable:!1})}},lk=class extends ck{constructor(){super(e=>{let t=new MD({transform(e,t){t.appendText(e)}});return e.pipeThrough(new TextDecoderStream).pipeThrough(t)})}},uk=100,dk=(e,t,n)=>{if(e===t)return!0;if(n>uk||e==null||t==null)return!1;if(Array.isArray(e))return!Array.isArray(t)||e.length!==t.length?!1:e.every((e,r)=>dk(e,t[r],n+1));if(Array.isArray(t)||!xO(e)||!xO(t))return!1;let r=Object.keys(e),i=Object.keys(t);return r.length===i.length&&r.every(r=>Object.hasOwn(t,r)&&dk(e[r],t[r],n+1))},fk=(e,t)=>!SO(e)||!SO(t)?!1:dk(e,t,0);function pk(e){let t=e.metadata;if(!t||typeof t!=`object`)return;let n=t.custom;if(!n||typeof n!=`object`)return;let r=n.interactables;return Array.isArray(r)?r:void 0}function mk(e){return`update_${e.replace(/[^a-zA-Z0-9_-]/g,`_`)}`}var hk=e=>{if(!xO(e))return;let t=e.id;return typeof t==`string`||typeof t==`number`?t:void 0};function gk(e,t,n=[]){if(!xO(e)||!xO(t))return t;let r={...e,...t},[i,...a]=n;return i!==void 0&&Object.hasOwn(t,i)&&(r[i]=gk(e[i],t[i],a)),r}function _k(e,t,n,r){let i=Array.isArray(t.set)?[...t.set]:[...e];if(t.clear===!0&&(i=[]),Array.isArray(t.remove)&&t.remove.length>0){let e=new Set(t.remove);i=i.filter(t=>{let n=hk(t);return n===void 0?!e.has(t):!e.has(n)})}let a=t.update;if(Array.isArray(a)&&a.length>0){let e=new Map;for(let t of a){let n=hk(t);n!==void 0&&!Number.isNaN(n)&&!e.has(n)&&e.set(n,t)}let t=r?.[0]===`update`?{patch:a[Number(r[1])],rest:r.slice(2)}:void 0;i=i.map(n=>{let r=hk(n);if(r===void 0||!xO(n))return n;let i=e.get(r);return i?t&&i===t.patch?gk(n,i,t.rest):{...n,...i}:n})}if(Array.isArray(t.add)&&t.add.length>0){let e=n?t.add.map(e=>{if(!xO(e)||e.id!==void 0)return e;let t=n();return t===void 0?e:{...e,id:t}}):t.add;i=[...i,...e]}return i}function vk(e,t,n){if(!xO(e)||!xO(t))return t;let r=xO(n?.arrayBaseline)?n.arrayBaseline:e,i=n?.partialPath,a=Object.entries(e);for(let[o,s]of Object.entries(t)){let t=r[o],c=i?.[0]===o?i.slice(1):void 0;if(Array.isArray(t)&&xO(s)){let e=n?.idFactory&&(n.idKeyedFields===void 0||n.idKeyedFields.has(o))?()=>n.idFactory?.(o):void 0;a.push([o,_k(t,s,e,c)])}else c?a.push([o,gk(e[o],s,c)]):a.push([o,s])}return Object.fromEntries(a)}function yk(e,t){if(!xO(e)||!xO(t))return;for(let n of Object.keys(e))if(!Object.hasOwn(t,n))return;let n=[];for(let[r,i]of Object.entries(t))(!Object.hasOwn(e,r)||!fk(e[r],i))&&n.push([r,i]);let r=n.length;if(r!==0&&r!==Object.keys(t).length)return Object.fromEntries(n)}var bk=e=>{if(!e||typeof e!=`object`)return;let t=e;return t.type===`tool-call`?t:void 0},xk=(e,t)=>{if(!e.args||typeof e.args!=`object`)return!1;let n=xO(e.result)?e.result:void 0;if(n?.success===!1)return!1;if(typeof n?.id==`string`)return n.id===t;let r=e.args.id;return r===t||r===void 0},Sk=e=>{let t=xO(e)?e.addedItemIds:void 0;if(!xO(t))return;let n=new Map;for(let[e,r]of Object.entries(t)){if(!Array.isArray(r))continue;let t=r.filter(e=>typeof e==`string`);t.length>0&&n.set(e,t)}if(n.size!==0)return e=>n.get(e)?.shift()},Ck=new WeakMap;function wk(e,t,n){let r=Ck.get(e);r||(r=new Map,Ck.set(e,r));let i=r.get(n);i||(i=new Map,r.set(n,i));let a=i.get(t);if(a)return a;let o=mk(n),s=[],c=()=>s[s.length-1];for(let r of e){if(r.role===`user`){let e=pk(r)?.find(e=>e.id===t);if(!e)continue;if(e.partial){let t=c();t&&s.push({state:vk(t.state,e.state),origin:`user-edit`})}else s.push({state:e.state,origin:`user-edit`});continue}if(r.role===`assistant`)for(let e of r.content??[]){let r=bk(e);if(r){if(r.toolCallId===t&&r.toolName===n)r.args&&typeof r.args==`object`&&s.push({state:r.args,origin:`create`,toolCallId:t});else if(r.toolName===o&&xk(r,t)){let e=c();if(e){let{id:t,...n}=r.args,i=Sk(r.result);s.push({state:i?vk(e.state,n,{idFactory:i}):vk(e.state,n),origin:`update`,toolCallId:r.toolCallId})}}}}}return i.set(t,s),s}function Tk(e,t,n){let r=wk(e,t,n),i=r[r.length-1];return i?{state:i.state}:void 0}function Ek(e,t){if(!e)return;let{interactables:n,...r}=e,i={...r};if(Array.isArray(n)){let e=[];for(let r of n){let n=Tk(t,r.id,r.name);if(!n){e.push({id:r.id,name:r.name,state:r.state});continue}if(fk(r.state,n.state))continue;let i=yk(n.state,r.state);e.push(i?{id:r.id,name:r.name,state:i,partial:!0}:{id:r.id,name:r.name,state:r.state})}e.length&&(i.interactables=e)}return Object.keys(i).length?i:void 0}var Dk=Symbol(`innerMessage`),Ok=e=>e.type===`tool-call`&&e.result===void 0,kk=e=>e.type===`tool-call`&&pE(e),Ak=Symbol(`autoStatus`),jk=Object.freeze(Object.assign({type:`running`},{[Ak]:!0})),Mk=Object.freeze(Object.assign({type:`complete`,reason:`unknown`},{[Ak]:!0})),Nk=Object.freeze(Object.assign({type:`incomplete`,reason:`cancelled`},{[Ak]:!0})),Pk=Object.freeze(Object.assign({type:`requires-action`,reason:`tool-calls`},{[Ak]:!0})),Fk=Object.freeze(Object.assign({type:`requires-action`,reason:`interrupt`},{[Ak]:!0})),Ik=(e,t,n,r,i,a,o)=>e&&i!=null?Object.assign({type:`incomplete`,reason:`error`,error:i},{[Ak]:!0}):e&&t?jk:n?Fk:o&&!a?jk:r?Pk:a?Nk:Mk,Lk=e=>Ik(!1,!1,typeof e!=`string`&&e.some(kk),typeof e!=`string`&&e.some(Ok)),Rk=e=>{let t=$(6),{runtime:n,children:r}=e,i=cT(),a;t[0]===n?a=t[1]:(a=DC({threadListItem:rO({runtime:n})}),t[0]=n,t[1]=a);let o=a,s;return t[2]!==i||t[3]!==r||t[4]!==o?(s=(0,q.jsx)(dO,{extends:i,config:o,children:r}),t[2]=i,t[3]=r,t[4]=o,t[5]=s):s=t[5],s},zk=[`critical`,`warning`,`info`],Bk=[`inline`,`toast`,`silent`,`dev-only`],Vk=e=>{if(typeof e!=`object`||!e)return!1;let t=e;return!(typeof t.code!=`string`||typeof t.message!=`string`||`severity`in t&&t.severity!==void 0&&(typeof t.severity!=`string`||!zk.includes(t.severity))||`display`in t&&t.display!==void 0&&(typeof t.display!=`string`||!Bk.includes(t.display)))},Hk=Symbol.for(`assistant-ui.message-not-sent`),Uk=class extends Error{[Hk]=!0;constructor(e=`The message was not sent.`){super(e),this.name=`MessageNotSentError`}},Wk=e=>typeof e==`object`&&!!e&&Hk in e,Gk=e=>{if(Vk(e))return e;if(e instanceof Error)return{code:`unknown`,message:e.message};if(typeof e==`string`)return{code:`unknown`,message:e};try{return{code:`unknown`,message:`[${typeof e}] ${String(e)}`}}catch{return{code:`unknown`,message:`[${typeof e}]`}}},Kk=(e,t)=>{Promise.resolve(t).catch(t=>{Wk(t)||console.error(`[assistant-ui] ${e} failed`,t)})},qk=class{get path(){return this._core.path}_core;constructor(e){this._core=e,this.__internal_bindMethods()}__internal_bindMethods(){this.getState=this.getState.bind(this),this.remove=this.remove.bind(this),this.subscribe=this.subscribe.bind(this)}getState(){return this._core.getState()}subscribe(e){return this._core.subscribe(e)}},Jk=class extends qk{_composerApi;constructor(e,t){super(e),this._composerApi=t}remove(){let e=this._composerApi.getState();if(!e)throw Error(`Composer is not available`);return e.removeAttachment(this.getState().id)}},Yk=class extends Jk{get source(){return`thread-composer`}},Xk=class extends Jk{get source(){return`edit-composer`}},Zk=class extends qk{get source(){return`message`}remove(){throw Error(`Message attachments cannot be removed`)}},Qk=Object.freeze([]),$k=Object.freeze({}),eA=e=>Object.freeze({type:`thread`,isEditing:e?.isEditing??!1,canCancel:e?.canCancel??!1,canSend:e?.canSend??!1,isEmpty:e?.isEmpty??!0,attachments:e?.attachments??Qk,text:e?.text??``,role:e?.role??`user`,runConfig:e?.runConfig??$k,attachmentAccept:e?.attachmentAccept??``,dictation:e?.dictation,quote:e?.quote,queue:e?.queue??Qk,submission:e?.submission,inTransit:e?.inTransit??Qk,value:e?.text??``}),tA=e=>Object.freeze({type:`edit`,isEditing:e?.isEditing??!1,canCancel:e?.canCancel??!1,canSend:e?.canSend??!1,isEmpty:e?.isEmpty??!0,text:e?.text??``,role:e?.role??`user`,attachments:e?.attachments??Qk,runConfig:e?.runConfig??$k,attachmentAccept:e?.attachmentAccept??``,dictation:e?.dictation,quote:e?.quote,queue:e?.queue??Qk,submission:e?.submission,inTransit:e?.inTransit??Qk,parentId:e?.parentId??null,sourceId:e?.sourceId??null,value:e?.text??``}),nA=class{get path(){return this._core.path}_core;constructor(e){this._core=e}__internal_bindMethods(){this.setText=this.setText.bind(this),this.setRunConfig=this.setRunConfig.bind(this),this.getState=this.getState.bind(this),this.subscribe=this.subscribe.bind(this),this.addAttachment=this.addAttachment.bind(this),this.reset=this.reset.bind(this),this.clearAttachments=this.clearAttachments.bind(this),this.send=this.send.bind(this),this.cancel=this.cancel.bind(this),this.steerQueueItem=this.steerQueueItem.bind(this),this.moveQueueItem=this.moveQueueItem.bind(this),this.removeQueueItem=this.removeQueueItem.bind(this),this.setRole=this.setRole.bind(this),this.getAttachmentByIndex=this.getAttachmentByIndex.bind(this),this.startDictation=this.startDictation.bind(this),this.stopDictation=this.stopDictation.bind(this),this.setQuote=this.setQuote.bind(this),this.unstable_on=this.unstable_on.bind(this)}setText(e){let t=this._core.getState();if(!t)throw Error(`Composer is not available`);t.setText(e)}setRunConfig(e){let t=this._core.getState();if(!t)throw Error(`Composer is not available`);t.setRunConfig(e)}addAttachment(e){let t=this._core.getState();if(!t)throw Error(`Composer is not available`);return t.addAttachment(e)}reset(){let e=this._core.getState();if(!e)throw Error(`Composer is not available`);return e.reset()}clearAttachments(){let e=this._core.getState();if(!e)throw Error(`Composer is not available`);return e.clearAttachments()}send(e){let t=this._core.getState();if(!t)throw Error(`Composer is not available`);t.send(e)}cancel(){let e=this._core.getState();if(!e)throw Error(`Composer is not available`);e.cancel()}steerQueueItem(e){this.moveQueueItem(e,{lane:`steer`,insertAfter:null})}moveQueueItem(e,t){let n=this._core.getState();if(!n)throw Error(`Composer is not available`);n.moveQueueItem(e,t)}removeQueueItem(e){let t=this._core.getState();if(!t)throw Error(`Composer is not available`);t.removeQueueItem(e)}setRole(e){let t=this._core.getState();if(!t)throw Error(`Composer is not available`);t.setRole(e)}startDictation(){let e=this._core.getState();if(!e)throw Error(`Composer is not available`);e.startDictation()}stopDictation(){let e=this._core.getState();if(!e)throw Error(`Composer is not available`);e.stopDictation()}setQuote(e){let t=this._core.getState();if(!t)throw Error(`Composer is not available`);t.setQuote(e)}subscribe(e){return this._core.subscribe(e)}_eventSubscriptionSubjects=new Map;unstable_on(e,t){let n=this._eventSubscriptionSubjects.get(e);return n||(n=new AT({event:e,binding:this._core}),this._eventSubscriptionSubjects.set(e,n)),n.subscribe(t)}},rA=class extends nA{get path(){return this._core.path}get type(){return`thread`}_getState;constructor(e){let t=new OT({path:e.path,getState:()=>eA(e.getState()),subscribe:t=>e.subscribe(t)});super({path:e.path,getState:()=>e.getState(),subscribe:e=>t.subscribe(e)}),this._getState=t.getState.bind(t),this.__internal_bindMethods()}getState(){return this._getState()}getAttachmentByIndex(e){return new Yk(new DT({path:{...this.path,attachmentSource:`thread-composer`,attachmentSelector:{type:`index`,index:e},ref:`${this.path.ref}.attachments[${e}]`},getState:()=>{let t=this.getState().attachments[e];return t?{...t,source:`thread-composer`}:yT},subscribe:e=>this._core.subscribe(e)}),this._core)}},iA=class extends nA{get path(){return this._core.path}get type(){return`edit`}_getState;_beginEdit;constructor(e,t){let n=new OT({path:e.path,getState:()=>tA(e.getState()),subscribe:t=>e.subscribe(t)});super({path:e.path,getState:()=>e.getState(),subscribe:e=>n.subscribe(e)}),this._beginEdit=t,this._getState=n.getState.bind(n),this.__internal_bindMethods()}__internal_bindMethods(){super.__internal_bindMethods(),this.beginEdit=this.beginEdit.bind(this)}getState(){return this._getState()}beginEdit(){this._beginEdit()}getAttachmentByIndex(e){return new Xk(new DT({path:{...this.path,attachmentSource:`edit-composer`,attachmentSelector:{type:`index`,index:e},ref:`${this.path.ref}.attachments[${e}]`},getState:()=>{let t=this.getState().attachments[e];return t?{...t,source:`edit-composer`}:yT},subscribe:e=>this._core.subscribe(e)}),this._core)}},aA=e=>e.display===`text`||e.allowFreeform===!0,oA={"allow-once":!0,"allow-always":!0,"reject-once":!1,"reject-always":!1},sA=(e,t)=>{let n=t.text;if(n!==void 0&&!aA(e))throw Error(`Tool approval "${e.id}" does not accept a free-form answer; the request must declare display "text" or allowFreeform`);let r,i;if(`optionId`in t){let n=e.options?.find(e=>e.id===t.optionId);if(!n)throw Error(`Tool approval has no option with id "${t.optionId}"`);if(`approved`in t)r=t.approved;else{if(!Object.hasOwn(oA,n.kind))throw Error(`Tool approval option "${n.id}" has a custom kind "${n.kind}"; respond with an explicit approved value instead`);r=oA[n.kind]}i=n.id}else if(`approved`in t)r=t.approved;else{if(e.display!==`text`&&e.display!==`select`)throw Error(`Tool approval "${e.id}" is a decision, not a question; respond with an explicit approved value, optionally alongside the answer`);r=!0}return{approvalId:e.id,approved:r,...i!==void 0&&{optionId:i},...n!==void 0&&{text:n},...t.reason!=null&&{reason:t.reason}}},cA=class{get path(){return this.contentBinding.path}contentBinding;messageApi;threadApi;constructor(e,t,n){this.contentBinding=e,this.messageApi=t,this.threadApi=n,this.__internal_bindMethods()}__internal_bindMethods(){this.addToolResult=this.addToolResult.bind(this),this.resumeToolCall=this.resumeToolCall.bind(this),this.respondToToolApproval=this.respondToToolApproval.bind(this),this.unstable_recordInteraction=this.unstable_recordInteraction.bind(this),this.getState=this.getState.bind(this),this.subscribe=this.subscribe.bind(this)}getState(){return this.contentBinding.getState()}addToolResult(e){let t=this.contentBinding.getState();if(!t)throw Error(`Message part is not available`);if(t.type!==`tool-call`)throw Error(`Tried to add tool result to non-tool message part`);if(!this.messageApi)throw Error(`Message API is not available. This is likely a bug in assistant-ui.`);if(!this.threadApi)throw Error(`Thread API is not available`);let n=this.messageApi.getState();if(!n)throw Error(`Message is not available`);let r=t.toolName,i=t.toolCallId,a=CD.toResponse(e);this.threadApi.getState().addToolResult({messageId:n.id,toolName:r,toolCallId:i,result:a.result,isError:a.isError,...a.artifact!==void 0&&{artifact:a.artifact},...a.modelContent!==void 0&&{modelContent:a.modelContent}})}resumeToolCall(e){let t=this.contentBinding.getState();if(!t)throw Error(`Message part is not available`);if(t.type!==`tool-call`)throw Error(`Tried to resume tool call on non-tool message part`);if(!this.threadApi)throw Error(`Thread API is not available`);let n=t.toolCallId;this.threadApi.getState().resumeToolCall({toolCallId:n,payload:e}),this.unstable_recordInteraction({type:`human-response`,payload:e}).catch(()=>{})}respondToToolApproval(e){let t=this.contentBinding.getState();if(!t)throw Error(`Message part is not available`);if(t.type!==`tool-call`)throw Error(`Tried to respond to tool approval on non-tool message part`);if(!t.approval||t.approval.approved!==void 0||t.approval.resolution!==void 0)throw Error(`Tool call has no pending approval`);if(!this.threadApi)throw Error(`Thread API is not available`);return this.threadApi.getState().respondToToolApproval(sA(t.approval,e))}async unstable_recordInteraction(e){let t=this.contentBinding.getState();if(!t)throw Error(`Message part is not available`);if(t.type!==`tool-call`)throw Error(`Tried to record interaction on non-tool message part`);if(!this.messageApi)throw Error(`Message API is not available. This is likely a bug in assistant-ui.`);if(!this.threadApi)throw Error(`Thread API is not available`);let n=this.messageApi.getState();if(!n)throw Error(`Message is not available`);let r=this.threadApi.getState();if(!r.unstable_recordToolInteraction)throw Error(`Runtime does not support recording tool interactions.`);await r.unstable_recordToolInteraction({messageId:n.id,toolCallId:t.toolCallId,interaction:$E(e)})}subscribe(e){return this.contentBinding.subscribe(e)}},lA=(e,t)=>{let n=e.content[t];if(!n)return yT;let r=mE(e,t,n);return Object.freeze({...n,[Dk]:n[Dk],status:r})},uA=class{get path(){return this._core.path}_core;_threadBinding;constructor(e,t){this._core=e,this._threadBinding=t,this.composer=new iA(new kT({path:{...this.path,ref:`${this.path.ref}.composer`,composerSource:`edit`},getState:this._getEditComposerRuntimeCore,subscribe:e=>this._threadBinding.subscribe(e)}),()=>this._threadBinding.getState().beginEdit(this._core.getState().id)),this.__internal_bindMethods()}__internal_bindMethods(){this.reload=this.reload.bind(this),this.delete=this.delete.bind(this),this.getState=this.getState.bind(this),this.subscribe=this.subscribe.bind(this),this.getMessagePartByIndex=this.getMessagePartByIndex.bind(this),this.getMessagePartByToolCallId=this.getMessagePartByToolCallId.bind(this),this.getAttachmentByIndex=this.getAttachmentByIndex.bind(this),this.unstable_getCopyText=this.unstable_getCopyText.bind(this),this.speak=this.speak.bind(this),this.stopSpeaking=this.stopSpeaking.bind(this),this.submitFeedback=this.submitFeedback.bind(this),this.switchToBranch=this.switchToBranch.bind(this)}composer;_getEditComposerRuntimeCore=()=>this._threadBinding.getState().getEditComposer(this._core.getState().id);getState(){return this._core.getState()}delete(){let e=this._core.getState();return this._threadBinding.getState().deleteMessage(e.id)}reload(e={}){let t=this._getEditComposerRuntimeCore(),n=t??this._threadBinding.getState().composer,r=t??n,{runConfig:i=r.runConfig}=e,a=this._core.getState();if(a.role!==`assistant`)throw Error(`Can only reload assistant messages`);Kk(`Message reload`,this._threadBinding.getState().startRun({parentId:a.parentId,sourceId:a.id,runConfig:i}))}speak(){let e=this._core.getState();return this._threadBinding.getState().speak(e.id)}stopSpeaking(){let e=this._core.getState();if(this._threadBinding.getState().speech?.messageId===e.id)this._threadBinding.getState().stopSpeaking();else throw Error(`Message is not being spoken`)}submitFeedback({type:e,comment:t}){let n=this._core.getState();this._threadBinding.getState().submitFeedback({messageId:n.id,type:e,...t===void 0?void 0:{comment:t}})}switchToBranch({position:e,branchId:t}){let n=this._core.getState();if(t&&e)throw Error(`May not specify both branchId and position`);if(!t&&!e)throw Error(`Must specify either branchId or position`);let r=this._threadBinding.getState().getBranches(n.id),i=t;if(e===`previous`?i=r[n.branchNumber-2]:e===`next`&&(i=r[n.branchNumber]),!i)throw Error(`Branch not found`);this._threadBinding.getState().switchToBranch(i)}unstable_getCopyText(){return cE(this.getState())}subscribe(e){return this._core.subscribe(e)}getMessagePartByIndex(e){if(e<0)throw Error(`Message part index must be >= 0`);return new cA(new DT({path:{...this.path,ref:`${this.path.ref}.content[${e}]`,messagePartSelector:{type:`index`,index:e}},getState:()=>lA(this.getState(),e),subscribe:e=>this._core.subscribe(e)}),this._core,this._threadBinding)}getMessagePartByToolCallId(e){return new cA(new DT({path:{...this.path,ref:`${this.path.ref}.content[toolCallId=${JSON.stringify(e)}]`,messagePartSelector:{type:`toolCallId`,toolCallId:e}},getState:()=>{let t=this._core.getState(),n=t.content.findIndex(t=>t.type===`tool-call`&&t.toolCallId===e);return n===-1?yT:lA(t,n)},subscribe:e=>this._core.subscribe(e)}),this._core,this._threadBinding)}getAttachmentByIndex(e){return new Zk(new DT({path:{...this.path,ref:`${this.path.ref}.attachments[${e}]`,attachmentSource:`message`,attachmentSelector:{type:`index`,index:e}},getState:()=>{let t=this.getState().attachments?.[e];return t?{...t,source:`message`}:yT},subscribe:e=>this._core.subscribe(e)}))}},dA=e=>({parentId:e.parentId??null,sourceId:e.sourceId??null,runConfig:e.runConfig??{},...e.stream?{stream:e.stream}:{}}),fA=e=>({parentId:e.parentId??null,sourceId:e.sourceId??null,runConfig:e.runConfig??{}}),pA=(e,t)=>typeof t==`string`?{createdAt:new Date,parentId:e.at(-1)?.id??null,sourceId:null,runConfig:{},role:`user`,content:[{type:`text`,text:t}],attachments:[],metadata:{custom:{}}}:{createdAt:t.createdAt??new Date,parentId:t.parentId===void 0?e.at(-1)?.id??null:t.parentId,sourceId:t.sourceId??null,role:t.role??`user`,content:t.content,attachments:t.attachments??[],metadata:t.metadata??{custom:{}},runConfig:t.runConfig??{},startRun:t.startRun},mA=e=>{if(e.isRunning!==void 0)return e.isRunning;let t=e.messages.at(-1);return t?.role===`assistant`&&t.status.type===`running`},hA=(e,t)=>Object.freeze({threadId:t.id,metadata:t,capabilities:e.capabilities,isDisabled:e.isDisabled,isLoading:e.isLoading,isRunning:mA(e),messages:e.messages,state:e.state,suggestions:e.suggestions,extras:e.extras,speech:e.speech,voice:e.voice}),gA=class{get path(){return this._threadBinding.path}get __internal_threadBinding(){return this._threadBinding}_threadBinding;_stateBinding;constructor(e,t){let n=new DT({path:e.path,getState:()=>hA(e.getState(),t.getState()),subscribe:n=>{let r=e.subscribe(n),i=t.subscribe(n);return()=>xT([r,i])}});this._stateBinding=n,this._threadBinding={path:e.path,getState:()=>e.getState(),getStateState:()=>n.getState(),outerSubscribe:t=>e.outerSubscribe(t),subscribe:t=>e.subscribe(t)},this.composer=new rA(new kT({path:{...this.path,ref:`${this.path.ref}.composer`,composerSource:`thread`},getState:()=>this._threadBinding.getState().composer,subscribe:e=>this._threadBinding.subscribe(e)})),this.__internal_bindMethods()}__internal_bindMethods(){this.append=this.append.bind(this),this.deleteMessage=this.deleteMessage.bind(this),this.resumeRun=this.resumeRun.bind(this),this.importExternalState=this.importExternalState.bind(this),this.exportExternalState=this.exportExternalState.bind(this),this.startRun=this.startRun.bind(this),this.cancelRun=this.cancelRun.bind(this),this.unstable_notifySessionReset=this.unstable_notifySessionReset.bind(this),this.stopSpeaking=this.stopSpeaking.bind(this),this.connectVoice=this.connectVoice.bind(this),this.disconnectVoice=this.disconnectVoice.bind(this),this.muteVoice=this.muteVoice.bind(this),this.unmuteVoice=this.unmuteVoice.bind(this),this.getVoiceVolume=this.getVoiceVolume.bind(this),this.subscribeVoiceVolume=this.subscribeVoiceVolume.bind(this),this.export=this.export.bind(this),this.import=this.import.bind(this),this.reset=this.reset.bind(this),this.getMessageByIndex=this.getMessageByIndex.bind(this),this.getMessageById=this.getMessageById.bind(this),this.subscribe=this.subscribe.bind(this),this.unstable_on=this.unstable_on.bind(this),this.getModelContext=this.getModelContext.bind(this),this.getState=this.getState.bind(this)}composer;getState(){return this._threadBinding.getStateState()}append(e){Kk(`Message append`,this._threadBinding.getState().append(pA(this._threadBinding.getState().messages,e)))}deleteMessage(e){return this._threadBinding.getState().deleteMessage(e)}subscribe(e){return this._stateBinding.subscribe(e)}getModelContext(){return this._threadBinding.getState().getModelContext()}startRun(e){return this._threadBinding.getState().startRun(fA(e))}resumeRun(e){return this._threadBinding.getState().resumeRun(dA(e))}exportExternalState(){return this._threadBinding.getState().exportExternalState()}importExternalState(e){this._threadBinding.getState().importExternalState(e)}cancelRun(){this._threadBinding.getState().cancelRun()}unstable_notifySessionReset(){this._threadBinding.getState().unstable_notifySessionReset()}stopSpeaking(){return this._threadBinding.getState().stopSpeaking()}connectVoice(){this._threadBinding.getState().connectVoice()}disconnectVoice(){this._threadBinding.getState().disconnectVoice()}getVoiceVolume(){return this._threadBinding.getState().getVoiceVolume()}subscribeVoiceVolume(e){return this._threadBinding.getState().subscribeVoiceVolume(e)}muteVoice(){this._threadBinding.getState().muteVoice()}unmuteVoice(){this._threadBinding.getState().unmuteVoice()}export(){return this._threadBinding.getState().export()}import(e){this._threadBinding.getState().import(e)}reset(e){this._threadBinding.getState().reset(e)}getMessageByIndex(e){if(e<0)throw Error(`Message index must be >= 0`);return this._getMessageRuntime({...this.path,ref:`${this.path.ref}.messages[${e}]`,messageSelector:{type:`index`,index:e}},()=>{let t=this._threadBinding.getState().messages,n=t[e];if(n)return{message:n,parentId:t[e-1]?.id??null,index:e}})}getMessageById(e){return this._getMessageRuntime({...this.path,ref:`${this.path.ref}.messages[messageId=${JSON.stringify(e)}]`,messageSelector:{type:`messageId`,messageId:e}},()=>this._threadBinding.getState().getMessageById(e))}_getMessageRuntime(e,t){return new uA(new DT({path:e,getState:()=>{let{message:e,parentId:n,index:r}=t()??{},{messages:i,speech:a}=this._threadBinding.getState();if(!e||n===void 0||r===void 0)return yT;let o=this._threadBinding.getState().getBranches(e.id);return{...e,[Dk]:e[Dk],index:r,isLast:i.at(-1)?.id===e.id,parentId:n,branchNumber:o.indexOf(e.id)+1,branchCount:o.length,speech:a?.messageId===e.id?a:void 0}},subscribe:e=>this._threadBinding.subscribe(e)}),this._threadBinding)}_eventSubscriptionSubjects=new Map;unstable_on(e,t){let n=this._eventSubscriptionSubjects.get(e);return n||(n=new AT({event:e,binding:this._threadBinding,notifyOnRebind:e===`modelContextUpdate`}),this._eventSubscriptionSubjects.set(e,n)),n.subscribe(t)}},_A=(e,t)=>({attachments:[],attachmentAccept:`*`,async addAttachment(){throw e},async removeAttachment(){throw e},isEditing:t,canCancel:!1,canSend:!1,isEmpty:!0,text:``,setText(){throw e},role:`user`,setRole(){throw e},runConfig:{},setRunConfig(){throw e},async reset(){},async clearAttachments(){},send(){throw e},cancel(){},queue:[],moveQueueItem(){},removeQueueItem(){},dictation:void 0,startDictation(){throw e},stopDictation(){},quote:void 0,setQuote(){throw e},subscribe(){return()=>{}},unstable_on(){return()=>{}}}),vA=class extends wT{switchToBranch(){throw this.error}append(){throw this.error}deleteMessage(){throw this.error}startRun(){throw this.error}resumeRun(){throw this.error}cancelRun(){throw this.error}unstable_notifySessionReset(){throw this.error}addToolResult(){throw this.error}resumeToolCall(){throw this.error}respondToToolApproval(){throw this.error}async unstable_recordToolInteraction(e){throw this.error}speak(){throw this.error}stopSpeaking(){throw this.error}connectVoice(){throw this.error}disconnectVoice(){throw this.error}muteVoice(){throw this.error}unmuteVoice(){throw this.error}submitFeedback(){throw this.error}exportExternalState(){throw this.error}importExternalState(){throw this.error}beginEdit(){throw this.error}import(){throw this.error}reset(){throw this.error}getModelContext(){return{}}getEditComposer(){}getVoiceVolume=()=>0;subscribeVoiceVolume=()=>()=>{};speech=void 0;voice=void 0;capabilities={switchToBranch:!1,switchBranchDuringRun:!1,edit:!1,delete:!1,reload:!1,refetchThread:!1,cancel:!1,unstable_copy:!1,speech:!1,dictation:!1,voice:!1,attachments:!1,feedback:!1,queue:!1,answerToolCall:!1};isDisabled=!1;isSendDisabled=!1;state=null;suggestions=[];extras=void 0;unstable_on(){return()=>{}}},yA=new WeakMap,bA=e=>{let t=yA.get(e);return t||(t=new AbortController,yA.set(e,t)),t.signal},xA=new WeakMap,SA=e=>{let t=xA.get(e);return t||(t=new AbortController,xA.set(e,t)),t},CA=e=>SA(e).signal,wA=e=>{let t=yA.get(e);t?.signal.aborted||(yA.delete(e),t?.abort())},TA=e=>{if(e.voice)try{e.disconnectVoice()}catch(e){console.error(`[assistant-ui] Voice cleanup threw while discarding a thread runtime`,e)}},EA=e=>{TA(e),wA(e)},DA=e=>{let t=yA.get(e)??new AbortController;yA.set(e,t),t.abort(),SA(e).abort(),TA(e)},OA=class{get path(){return this._core.path}_core;_threadListBinding;constructor(e,t){this._core=e,this._threadListBinding=t,this.__internal_bindMethods()}__internal_bindMethods(){this.switchTo=this.switchTo.bind(this),this.rename=this.rename.bind(this),this.updateCustom=this.updateCustom.bind(this),this.archive=this.archive.bind(this),this.unarchive=this.unarchive.bind(this),this.delete=this.delete.bind(this),this.initialize=this.initialize.bind(this),this.generateTitle=this.generateTitle.bind(this),this.subscribe=this.subscribe.bind(this),this.unstable_on=this.unstable_on.bind(this),this.getState=this.getState.bind(this),this.detach=this.detach.bind(this)}getState(){return this._core.getState()}switchTo(e){let t=this._core.getState();return this._threadListBinding.switchToThread(t.id,e)}rename(e){let t=this._core.getState();return this._threadListBinding.rename(t.id,e)}updateCustom(e){let t=this._core.getState();if(!this._threadListBinding.updateCustom)throw Error(`Thread list runtime does not support updating custom metadata`);return this._threadListBinding.updateCustom(t.id,e)}archive(){let e=this._core.getState();return this._threadListBinding.archive(e.id)}unarchive(){let e=this._core.getState();return this._threadListBinding.unarchive(e.id)}delete(){let e=this._core.getState();return this._threadListBinding.delete(e.id)}initialize(){let e=this._core.getState();return this._threadListBinding.initialize(e.id)}generateTitle(e){let t=this._core.getState();return this._threadListBinding.generateTitle(t.id,e)}unstable_on(e,t){let n=this._core.getState().isMain,r=this._core.getState().id;return this.subscribe(()=>{let i=this._core.getState(),a=i.isMain,o=i.id;(n!==a||r!==o)&&(n=a,r=o,!(e===`switchedTo`&&!a)&&(e===`switchedAway`&&a||EC([t],{},`Thread list item "${e}"`)))})}subscribe(e){return this._core.subscribe(e)}detach(){let e=this._core.getState();this._threadListBinding.detach(e.id)}__internal_getRuntime(){return this}},kA=Promise.resolve(),AA=()=>{},jA=e=>({mainThreadId:e.mainThreadId,newThreadId:e.newThreadId,threadIds:e.threadIds,archivedThreadIds:e.archivedThreadIds,isLoading:e.isLoading,loadError:e.loadError,isLoadingMore:e.isLoadingMore??!1,hasMore:e.hasMore??!1,threadItems:e.threadItems}),MA=(e,t)=>{if(t===void 0)return yT;let n=e.getItemById(t);return n?{id:n.id,remoteId:n.remoteId,externalId:n.externalId,title:n.title,status:n.status,lastMessageAt:n.lastMessageAt,custom:n.custom,isMain:n.id===e.mainThreadId,isRunning:e.unstable_isThreadRunning?.(n.id)??!1}:yT},NA=class{_getState;_stateBinding;_core;_runtimeFactory;constructor(e,t=gA){this._core=e,this._runtimeFactory=t;let n=new OT({path:{},getState:()=>jA(e),subscribe:t=>e.subscribe(t)});this._getState=n.getState.bind(n),this._stateBinding=n,this._mainThreadListItemRuntime=new OA(new DT({path:{ref:`threadItems[main]`,threadSelector:{type:`main`}},getState:()=>MA(this._core,this._core.mainThreadId),subscribe:e=>this._core.subscribe(e)}),this._core),this.main=new t(new kT({path:{ref:`threads.main`,threadSelector:{type:`main`}},getState:()=>e.getMainThreadRuntimeCore(),subscribe:t=>e.subscribe(t)}),this._mainThreadListItemRuntime),this.__internal_bindMethods()}__internal_bindMethods(){this.switchToThread=this.switchToThread.bind(this),this.switchToNewThread=this.switchToNewThread.bind(this),this.unstable_subscribeThreadEvents=this.unstable_subscribeThreadEvents.bind(this),this.getLoadThreadsPromise=this.getLoadThreadsPromise.bind(this),this.reload=this.reload.bind(this),this.reloadMainThread=this.reloadMainThread.bind(this),this.loadMore=this.loadMore.bind(this),this.getState=this.getState.bind(this),this.subscribe=this.subscribe.bind(this),this.getById=this.getById.bind(this),this.getItemById=this.getItemById.bind(this),this.getItemByIndex=this.getItemByIndex.bind(this),this.getArchivedItemByIndex=this.getArchivedItemByIndex.bind(this)}switchToThread(e,t){return this._core.switchToThread(e,t)}switchToNewThread(){return this._core.switchToNewThread()}unstable_subscribeThreadEvents(e){return this._core.unstable_subscribeThreadEvents?.(e)??AA}getLoadThreadsPromise(){return this._core.getLoadThreadsPromise()}reload(){return this._core.reload?.()??kA}reloadMainThread(){return this._core.reloadMainThread?.()??kA}loadMore(){return this._core.loadMore?.()??kA}getState(){return this._getState()}subscribe(e){return this._stateBinding.subscribe(e)}_mainThreadListItemRuntime;main;get mainItem(){return this._mainThreadListItemRuntime}_createItemStateBinding(e){return new DT({path:{ref:`threadItems[threadId=${e}]`,threadSelector:{type:`threadId`,threadId:e}},getState:()=>MA(this._core,e),subscribe:e=>this._core.subscribe(e)})}getById(e){return new this._runtimeFactory(new kT({path:{ref:`threads[threadId=${JSON.stringify(e)}]`,threadSelector:{type:`threadId`,threadId:e}},getState:()=>this._core.getThreadRuntimeCore(e),subscribe:e=>this._core.subscribe(e)}),this._createItemStateBinding(e))}getItemByIndex(e){return new OA(new DT({path:{ref:`threadItems[${e}]`,threadSelector:{type:`index`,index:e}},getState:()=>MA(this._core,this._core.threadIds[e]),subscribe:e=>this._core.subscribe(e)}),this._core)}getArchivedItemByIndex(e){return new OA(new DT({path:{ref:`archivedThreadItems[${e}]`,threadSelector:{type:`archiveIndex`,index:e}},getState:()=>MA(this._core,this._core.archivedThreadIds[e]),subscribe:e=>this._core.subscribe(e)}),this._core)}getItemById(e){return new OA(this._createItemStateBinding(e),this._core)}},PA=class{threads;_thread;_core;constructor(e){this._core=e,this.threads=new NA(e.threads),this._thread=this.threads.main,this.__internal_bindMethods()}__internal_bindMethods(){this.registerModelContextProvider=this.registerModelContextProvider.bind(this)}get thread(){return this._thread}registerModelContextProvider(e){return this._core.registerModelContextProvider(e)}},FA=class{_contextProvider=new NT;registerModelContextProvider(e){return this._contextProvider.registerModelContextProvider(e)}getModelContextProvider(){return this._contextProvider}},IA={fromArray:e=>{let t=e.map(e=>PD(e,WE(),Lk(e.content)));return{messages:t.map((e,n)=>({parentId:n>0?t[n-1].id:null,message:e}))}},fromBranchableArray:(e,t)=>({...t?.headId===void 0?void 0:{headId:t.headId},messages:e.map(({message:e,parentId:t})=>{if(!e.id)throw Error(`ExportedMessageRepository.fromBranchableArray: Each message must have an 'id' field set.`);return{parentId:t,message:PD(e,e.id,Lk(e.content))}})})},LA=e=>{let t=e;for(;t.next;)t=t.next;return`current`in t?t:null},RA=(e,t)=>{let n=new Set(e.map(e=>e.message.id)),r=new Set,i=new Map,a=[];for(let o of e){let{parentId:e}=o;if(e!==null&&n.has(e)&&!r.has(e)&&!t(e)){let t=i.get(e);t?t.push(o):i.set(e,[o]);continue}for(let e=a.push(o)-1;e<a.length;e++){let{id:t}=a[e].message;if(r.has(t))continue;r.add(t);let n=i.get(t);n&&(i.delete(t),a.push(...n))}}for(let e of i.values())a.push(...e);return a},zA=e=>{let t=new Set(e.messages.map(e=>e.message.id)),n=new Map,r=[];for(let{message:i,parentId:a}of e.messages){if(a===null)continue;let e=n.get(a);e?e.push(i.id):n.set(a,[i.id]),t.has(a)||r.push(i.id)}let i=new Set;for(let e=0;e<r.length;e++){let t=r[e];if(!i.has(t)){i.add(t);for(let e of n.get(t)??[])r.push(e)}}let a=e.headId!=null&&!t.has(e.headId);if(i.size===0&&!a)return{repository:e,droppedIds:[]};let o=[],s=new Set,c=e.messages.filter(({message:e,parentId:t})=>i.has(e.id)?(o.push(e.id),!1):(t!==null&&s.add(t),!0)),{headId:l}=e;if(l!=null&&(a||i.has(l))){l=null;for(let{message:e}of c)s.has(e.id)||(l=e.id)}return{repository:{...e,messages:c,...l!==void 0&&{headId:l}},droppedIds:o}},BA=class{_value=null;func;constructor(e){this.func=e}get value(){return this._value===null&&(this._value=this.func()),this._value}dirty(){this._value=null}},VA=class{messages=new Map;head=null;root={children:[],next:null};updateLevels(e,t){let n=[{message:e,level:t}];for(;n.length>0;){let e=n.pop();e.message.level=e.level;for(let t of e.message.children){let r=this.messages.get(t);r&&n.push({message:r,level:e.level+1})}}}selectPathTo(e){for(let t=e;t;t=t.prev)(t.prev??this.root).next=t}performOp(e,t,n){let r=t.prev??this.root,i=e??this.root;if(n!==`relink`||r!==i){if(n===`relink`){for(let n=e;n;n=n.prev)if(n.current.id===t.current.id)throw Error(`MessageRepository(performOp/relink): A message with the same id already exists in the parent tree. This error occurs if the same message id is found multiple times. This is likely an internal bug in assistant-ui.`)}if(n!==`link`&&(r.children=r.children.filter(e=>e!==t.current.id),r.next===t)){let e=r.children.at(-1),t=e?this.messages.get(e):null;if(t===void 0)throw Error(`MessageRepository(performOp/cut): Fallback sibling message not found. This is likely an internal bug in assistant-ui.`);r.next=t}if(n!==`cut`){i.children=[...i.children,t.current.id],t.prev=e,LA(t)===this.head?this.selectPathTo(t):i.next===null&&(i.next=t,this.head===i&&(this.head=LA(t)));let n=e?e.level+1:0;this.updateLevels(t,n)}}}_messages=new BA(()=>{let e=Array((this.head?.level??-1)+1);for(let t=this.head;t;t=t.prev)e[t.level]=t.current;return e});get headId(){return this.head?.current.id??null}get canonicalHeadId(){let e=this.head;for(;e?.current.metadata?.isOptimistic;)e=e.prev;return e?.current.id??null}getMessages(e){if(e===void 0||e===this.head?.current.id)return this._messages.value;let t=this.messages.get(e);if(!t)throw Error(`MessageRepository(getMessages): Head message not found. This is likely an internal bug in assistant-ui.`);let n=Array(t.level+1);for(let e=t;e;e=e.prev)n[e.level]=e.current;return n}addOrUpdateMessage(e,t){let n=this.messages.get(t.id),r=e?this.messages.get(e):null;if(r===void 0)throw Error(`MessageRepository(addOrUpdateMessage): Parent message not found. This is likely an internal bug in assistant-ui.`);if(n){this.performOp(r,n,`relink`),n.current=t,this._messages.dirty();return}let i={prev:r,current:t,next:null,children:[],level:r?r.level+1:0};this.messages.set(t.id,i),this.performOp(r,i,`link`),this.head===r&&(this.head=i),this._messages.dirty()}getMessage(e){let t=this.messages.get(e);if(!t)throw Error(`MessageRepository(updateMessage): Message not found. This is likely an internal bug in assistant-ui.`);return{parentId:t.prev?.current.id??null,message:t.current,index:t.level}}deleteMessage(e,t){let n=this.messages.get(e);if(!n)throw Error(`MessageRepository(deleteMessage): Message not found. This is likely an internal bug in assistant-ui.`);let r=t===void 0?n.prev:t===null?null:this.messages.get(t);if(r===void 0)throw Error(`MessageRepository(deleteMessage): Replacement not found. This is likely an internal bug in assistant-ui.`);for(let e=r;e;e=e.prev)if(e===n)throw Error(`MessageRepository(deleteMessage): Replacement is the deleted message or one of its descendants. This is likely an internal bug in assistant-ui.`);for(let e of n.children){let t=this.messages.get(e);if(!t)throw Error(`MessageRepository(deleteMessage): Child message not found. This is likely an internal bug in assistant-ui.`);this.performOp(r,t,`relink`)}this.performOp(null,n,`cut`),this.messages.delete(e),this.head===n&&(this.head=LA(r??this.root)),this._messages.dirty()}hasChildren(e){return(this.messages.get(e)?.children.length??0)>0}getBranches(e){let t=this.messages.get(e);if(!t)throw Error(`MessageRepository(getBranches): Message not found. This is likely an internal bug in assistant-ui.`);let{children:n}=t.prev??this.root;return n}evictOffBranchOptimisticMessages(e,t){if(!e)return;let n=new Set;for(let e=t;e;e=e.prev)n.add(e.current.id);let r=[];for(let t=e;t&&!n.has(t.current.id);t=t.prev)t.current.metadata?.isOptimistic&&r.push(t.current.id);for(let e of r)this.messages.has(e)&&this.deleteMessage(e)}switchToBranch(e){let t=this.messages.get(e);if(!t)throw Error(`MessageRepository(switchToBranch): Branch not found. This is likely an internal bug in assistant-ui.`);let n=this.head;this.selectPathTo(t),this.head=LA(t),this.evictOffBranchOptimisticMessages(n,this.head),this._messages.dirty()}resetHead(e){if(e===null){this.clear();return}let t=this.messages.get(e);if(!t)throw Error(`MessageRepository(resetHead): Branch not found. This is likely an internal bug in assistant-ui.`);let n=this.head;if(t.children.length>0){let e=[...t.children];for(;e.length>0;){let t=e.pop(),n=this.messages.get(t);if(n){for(let t of n.children)e.push(t);this.messages.delete(t)}}t.children=[],t.next=null}this.head=t,this.selectPathTo(t),this.evictOffBranchOptimisticMessages(n,this.head),this._messages.dirty()}clear(){this.messages.clear(),this.head=null,this.root={children:[],next:null},this._messages.dirty()}export(){let e=[],t=[...this.root.children].reverse();for(;t.length>0;){let n=this.messages.get(t.pop());if(!n)continue;for(let e=n.children.length-1;e>=0;e--)t.push(n.children[e]);if(n.current.metadata?.isOptimistic)continue;let r=n.prev;for(;r&&r.current.metadata?.isOptimistic;)r=r.prev;e.push({message:n.current,parentId:r?.current.id??null})}return{headId:this.canonicalHeadId,messages:e}}import({headId:e,messages:t}){let n=RA(t,e=>this.messages.has(e));for(let{message:e,parentId:t}of n)this.addOrUpdateMessage(t,e);this.resetHead(e??n.at(-1)?.message.id??null)}},HA=Object.freeze([]);function UA(e,t){if(t===`*`)return!0;let n=t.split(`,`).map(e=>e.trim().toLowerCase()),r=e.name.toLowerCase(),i=e.type.split(`;`,1)[0].trim().toLowerCase();for(let e of n){if(e.startsWith(`.`)&&r.endsWith(e)||e.includes(`/`)&&e===i)return!0;if(e.endsWith(`/*`)){let t=e.split(`/`)[0];if(i.startsWith(`${t}/`))return!0}}return!1}function WA(e){let t=WE();return e.type===`image`?{id:t,type:`image`,name:e.filename??`image`,content:[e],status:{type:`complete`}}:e.type===`file`?{id:t,type:`document`,name:e.filename??`document`,contentType:e.mimeType,content:[e],status:{type:`complete`}}:e.type===`audio`?{id:t,type:`audio`,name:`audio.${e.audio.format}`,contentType:`audio/${e.audio.format}`,content:[e],status:{type:`complete`}}:{id:t,type:`data`,name:e.name,content:[e],status:{type:`complete`}}}function GA(e){let t=[];for(let n of e)n.type!==`text`&&t.push(WA(n));return t}var KA=e=>`content`in e&&!(`lastModified`in e),qA=e=>e.status.type===`complete`,JA=class{operations=new Set;uploading=new Map;start(){let e={cancelled:!1,attachmentIds:new Set};return this.operations.add(e),e}accept(e,t){if(e.cancelled)return!1;e.attachmentIds.add(t.id);let n=this.uploading.get(t.id);return n?.operation!==e&&(n||t.status.type===`running`)&&this.uploading.set(t.id,{operation:e,waiters:n?.waiters??new Set}),t.status.type!==`running`&&this.settle(t.id,e),!0}finish(e){this.operations.delete(e);for(let t of e.attachmentIds)this.settle(t,e)}isCancelled(e){return e.cancelled}cancel(e){for(let t of[...this.operations])t.attachmentIds.has(e)&&(t.cancelled=!0,this.operations.delete(t));this.settle(e)}cancelAll(){for(let e of this.operations)e.cancelled=!0;this.operations.clear();for(let e of[...this.uploading.keys()])this.settle(e)}whenSendable(e){let t=this.uploading.get(e);if(t)return new Promise(e=>t.waiters.add(e))}settle(e,t){let n=this.uploading.get(e);if(n&&!(t&&n.operation!==t)){this.uploading.delete(e);for(let e of n.waiters)e()}}},YA=async(e,t)=>{if(Symbol.asyncIterator in e){for await(let n of e)if(!t(n))break}else t(await e)},XA=class{entries=new WeakMap;removed=new WeakSet;markRemoved(e){this.removed.add(e)}unmarkRemoved(e){this.removed.delete(e)}isRemoved(e){return this.removed.has(e)}async send(e,t,n){if(qA(e))return e;let r=this.entries.get(e)??{};if(r.result)return r.result;if(!t)throw Error(`Attachments are not supported`);this.entries.set(e,r);let i=await t.send(e,n?{signal:n}:void 0);return r.result=i,i}transfer(e,t){let n=this.entries.get(e);return n&&this.entries.set(t,n),t}},ZA=class extends wT{isEditing=!0;enrichWithComposerMetadata(e,t){return t?{...e,metadata:{...e.metadata,custom:{...e.metadata?.custom,...t}}}:e}get attachmentAccept(){return this.getAttachmentAdapter()?.accept??`*`}_attachments=[];get attachments(){return this._attachments}setAttachments(e){this._attachments=e,this._notifySubscribers()}get isEmpty(){return!this.text.trim()&&!this.attachments.length}_text=``;get text(){return this._text}_role=`user`;get role(){return this._role}_runConfig={};get runConfig(){return this._runConfig}_quote=void 0;get quote(){return this._quote}setQuote(e){this._quote!==e&&(this._quote=e,this._notifySubscribers())}setText(e){this._text!==e&&(this._text=e,this._rebaseDictation(e),this._notifySubscribers())}_rebaseDictation(e){if(!this._dictation)return;this._dictationBaseText=e,this._currentInterimText=``;let{status:t,inputDisabled:n}=this._dictation;this._dictation=n?{status:t,inputDisabled:n}:{status:t}}setRole(e){this._role!==e&&(this._role=e,this._notifySubscribers())}setRunConfig(e){this._runConfig!==e&&(this._runConfig=e,this._notifySubscribers())}_submission;_submissionSend;_inTransit=[];_inTransitSubmissions=[];_sendGeneration=0;_attachmentAddOperations=new JA;_attachmentSends=new XA;get submission(){return this._submission}get inTransit(){return this._inTransitSubmissions}get isSubmitting(){return this._submission!==void 0}get detachesDraftOnSend(){return!0}threadMessageIds(e){}settleInTransit(){if(this._inTransit.length===0)return;let e=new Set,t=this._inTransit.filter(({submission:t,known:n})=>{let r=this.threadMessageIds(t.role)?.find(t=>!n.has(t)&&!e.has(t));return r===void 0||(e.add(r),!1)});t.length!==this._inTransit.length&&(this._setInTransit(t.map(t=>({...t,known:new Set([...t.known,...e])}))),this._notifySubscribers())}_setInTransit(e){this._inTransit=e,this._inTransitSubmissions=e.map(e=>e.submission)}_leaveTransit(e){let t=this._inTransit.filter(t=>t.submission!==e);return t.length!==this._inTransit.length&&(this._setInTransit(t),!0)}_cancelAttachmentAdd(e){this._attachmentAddOperations.cancel(e)}_cancelAllAttachmentAdds(){this._attachmentAddOperations.cancelAll()}_emptyTextAndAttachments(){this._attachments=[],this._text=``,this._rebaseDictation(``),this._notifySubscribers()}async _onClearAttachments(){let e=this.getAttachmentAdapter();if(e){let t=this._attachments.filter(e=>!qA(e));await Promise.all(t.map(async t=>e.remove(t)))}}async reset(){this._cancelAllAttachmentAdds(),this._sendGeneration++;let e=this._discardSubmission();if(this._attachments.length===0&&this._text===``&&this._role===`user`&&Object.keys(this._runConfig).length===0&&this._quote===void 0){await e;return}this._role=`user`,this._runConfig={},this._quote=void 0;let t=this._onClearAttachments();this._emptyTextAndAttachments(),await Promise.all([t,e])}async clearAttachments(){if(this._cancelAllAttachmentAdds(),this.isSubmitting)for(let e of this._attachments)this._attachmentSends.markRemoved(e);let e=this._onClearAttachments();this.setAttachments([]),await e}async send(e){if(!this.canSend||this.isSubmitting)return;if(this._dictationSession){let e=this._activeDictationSessionId;try{this._dictationSession.cancel()}catch(e){console.error(`[assistant-ui] Dictation session cancel threw`,e)}finally{this._cleanupDictation({sessionId:e})}}let t=this.attachments.filter(e=>!this._attachmentSends.isRemoved(e));if(!this.text.trim()&&t.length===0)return;let n={id:WE(),role:this.role,text:this.text,quote:this._quote,attachments:t},r={options:e,runConfig:this.runConfig},i=t.filter(qA),a=i.length===t.length;if(a||(this._submission=n,this._submissionSend={...r,controller:new AbortController}),this.detachesDraftOnSend){let e=new Set(t);this._attachments=this._attachments.filter(t=>!e.has(t)),this._text=``,this._rebaseDictation(``),this._quote=void 0}let o=++this._sendGeneration;if(this._notifySubscribers(),a){this._dispatch(o,n,i,r,!1);return}await this._prepareSubmission(o)}async _prepareSubmission(e){let t=this.getAttachmentAdapter(),n=(this._submission?.attachments??[]).flatMap(e=>{let t=this._attachmentAddOperations.whenSendable(e.id);return t?[t]:[]});if(n.length>0){if(await Promise.all(n),e!==this._sendGeneration)return;this._refreshSubmissionAttachments()}let r=this._submission,i=this._submissionSend;if(!r||!i)return;let a=r.attachments.filter(e=>!this._attachmentSends.isRemoved(e));for(let e of a)this._cancelAttachmentAdd(e.id);let o=await Promise.allSettled(a.map(e=>this._attachmentSends.send(e,t,i.controller.signal)));if(e!==this._sendGeneration)return;let s=o.find(e=>e.status===`rejected`);if(s){this._returnSubmissionToDraft(a,o,s.reason);return}let c=o.flatMap((e,t)=>this._attachmentSends.isRemoved(a[t])||e.status===`rejected`?[]:[e.value]);this._dispatch(e,r,c,i,!0)}_dispatch(e,t,n,r,i){let a={createdAt:new Date,role:t.role,content:t.text?[{type:`text`,text:t.text}]:[],attachments:n,runConfig:r.runConfig,metadata:{custom:{...t.quote?{quote:t.quote}:{}}}},o={...t,attachments:n},s=this.queue.length;if(i){if(this._submission=void 0,this._submissionSend=void 0,!this.detachesDraftOnSend){let e=new Map(n.map(e=>[e.id,e]));this._attachments=this._attachments.map(t=>e.get(t.id)??t)}let e=this.threadMessageIds(t.role);e&&this._setInTransit([...this._inTransit,{submission:o,known:new Set(e)}])}let c;try{c=this.handleSend(a,r.options)}catch(t){console.error(`[assistant-ui] Failed to send the message`,t),this._leaveTransit(o),e===this._sendGeneration?this._returnToDraft(o):this._notifySubscribers();return}c&&c.catch(t=>{let n=this._leaveTransit(o);e===this._sendGeneration&&Wk(t)?this._returnToDraft(o):n&&this._notifySubscribers()}),this._notifyEventSubscribers(`send`,{chars:t.text.length,attachments:n.length}),i&&(this.queue.length>s&&this._leaveTransit(o),this._notifySubscribers(),this.settleInTransit())}_refreshSubmissionAttachments(){let e=this._submission;if(!e)return;let t=e.attachments.filter(e=>!this._attachmentSends.isRemoved(e));t.length!==e.attachments.length&&(this._submission={...e,attachments:t})}_returnSubmissionToDraft(e,t,n){let r=this._submission;if(!r)return;let i=new Map;t.forEach((t,n)=>{t.status===`rejected`&&i.set(e[n].id,t.reason)});let a=r.attachments.map(e=>{if(!i.has(e.id)||qA(e))return e;let t=i.get(e.id);return this._attachmentSends.transfer(e,{...e,status:{type:`incomplete`,reason:`error`,message:t instanceof Error?t.message:String(t)}})});this._endSubmission(),this._returnToDraft({...r,attachments:a}),console.error(`[assistant-ui] Failed to send attachments`,n)}_endSubmission(){this._sendGeneration++,this._submission=void 0,this._submissionSend=void 0}__internal_dispose(){this._cancelAllAttachmentAdds(),this._submission&&(this._submissionSend?.controller.abort(),this._endSubmission(),this._notifySubscribers())}cancelSubmission(){let e=this._submission;e&&(this._submissionSend?.controller.abort(),this._endSubmission(),this._returnToDraft(e))}_returnToDraft(e){if(this.detachesDraftOnSend){let t=e.attachments.filter(e=>!this._attachmentSends.isRemoved(e));this._attachments=[...t,...this._attachments];let n=[e.text,this._text].filter(Boolean).join(`
126
+ `);this._text=n,this._rebaseDictation(n),this._quote=this._quote??e.quote}else{let t=new Map(e.attachments.map(e=>[e.id,e]));this._attachments=this._attachments.map(e=>t.get(e.id)??e)}this._notifySubscribers()}async _discardSubmission(){let e=this._submission;if(!e)return;this._submissionSend?.controller.abort(),this._endSubmission(),this._notifySubscribers();let t=this.getAttachmentAdapter();if(!t)return;let n=new Set(this._attachments.map(e=>e.id));await Promise.all(e.attachments.filter(e=>!qA(e)&&!n.has(e.id)).map(async e=>t.remove(e)))}restoreDraft(e){return this._text.trim()||this._quote!==void 0||this._attachments.length>0?!1:(this._text=e.text,this._rebaseDictation(e.text),this._quote=e.quote,this._attachments=e.attachments??[],this._notifySubscribers(),!0)}retractDraft(e){let t=e.attachments===void 0?this._attachments.length===0:this._attachments===e.attachments;this._text!==e.text||this._quote!==e.quote||!t||(this._text=``,this._rebaseDictation(``),this._quote=void 0,this._attachments=[],this._notifySubscribers())}cancel(){this.isSubmitting&&!this.detachesDraftOnSend&&(this._submissionSend?.controller.abort(),this._endSubmission(),this._notifySubscribers()),this.handleCancel()}get queue(){return HA}moveQueueItem(e,t){}removeQueueItem(e){}async addAttachment(e){if(KA(e)){let t=this.getAttachmentAdapter();if(t&&!UA({name:e.name,type:e.contentType??``},t.accept)){let n=`File type ${e.contentType||`unknown`} is not accepted. Accepted types: ${t.accept}`,r=Error(n);throw this._safeEmitAttachmentAddError(`not-accepted`,n,void 0,r,e.contentType),r}let n={id:e.id??WE(),type:e.type??`document`,name:e.name,contentType:e.contentType,content:e.content,status:{type:`complete`}};this._attachments=[...this._attachments,n],this._notifySubscribers(),this._notifyEventSubscribers(`attachmentAdd`,{...n.contentType?{contentType:n.contentType}:void 0});return}let t=this.getAttachmentAdapter();if(!t){let t=`Attachments are not supported`,n=Error(t);throw this._safeEmitAttachmentAddError(`no-adapter`,t,void 0,n,e.type),n}if(!UA({name:e.name,type:e.type},t.accept)){let n=`File type ${e.type||`unknown`} is not accepted. Accepted types: ${t.accept}`,r=Error(n);throw this._safeEmitAttachmentAddError(`not-accepted`,n,void 0,r,e.type),r}let n=this._attachmentAddOperations.start(),r=e=>{if(!this._attachmentAddOperations.accept(n,e))return!1;let t=this._submission,r=t?.attachments.some(t=>t.id===e.id)??!1;t&&r&&(this._submission={...t,attachments:t.attachments.map(t=>t.id===e.id?this._attachmentSends.transfer(t,e):t)});let i=this._attachments.findIndex(t=>t.id===e.id);return i===-1?r||(this._attachments=[...this._attachments,e]):this._attachments=[...this._attachments.slice(0,i),e,...this._attachments.slice(i+1)],this._notifySubscribers(),!0},i;try{await YA(t.add({file:e}),e=>(i=e,r(e)))}catch(t){if(this._attachmentAddOperations.isCancelled(n))return;throw i&&r({...i,status:{type:`incomplete`,reason:`error`,message:t instanceof Error?t.message:String(t)}}),this._safeEmitAttachmentAddError(`adapter-error`,t instanceof Error?t.message:String(t),i?.id,t instanceof Error?t:void 0,i?.contentType||e.type),t}finally{this._attachmentAddOperations.finish(n)}this._attachmentAddOperations.isCancelled(n)||(i?.status.type===`incomplete`&&i.status.reason===`error`?this._safeEmitAttachmentAddError(`adapter-error`,i.status.message??`Attachment upload did not complete successfully.`,i.id,void 0,i.contentType||e.type):this._notifyEventSubscribers(`attachmentAdd`,{...i?.contentType?{contentType:i.contentType}:e.type?{contentType:e.type}:void 0}))}_safeEmitAttachmentAddError(e,t,n,r,i){try{this._notifyEventSubscribers(`attachmentAddError`,{reason:e,message:t,...n!==void 0&&{attachmentId:n},...r!==void 0&&{error:r},...i?{contentType:i}:void 0})}catch(e){console.error(`[assistant-ui] attachmentAddError subscriber threw:`,e)}}async removeAttachment(e){let t=this._attachments.findIndex(t=>t.id===e);if(t===-1){await this._removeSubmittedAttachment(e);return}let n=this._attachments[t];if(this._cancelAttachmentAdd(e),this._attachmentSends.markRemoved(n),!qA(n)){let t=this.getAttachmentAdapter();if(!t)throw Error(`Attachments are not supported`);try{await t.remove(n)}catch(t){let n=t instanceof Error?t.message:String(t);throw this._attachments=this._attachments.map(t=>t.id===e&&!qA(t)?this._attachmentSends.transfer(t,{...t,status:{type:`incomplete`,reason:`error`,message:n}}):t),this._notifySubscribers(),t}}this._attachments=this._attachments.filter(t=>t.id!==e),this._notifySubscribers()}async _removeSubmittedAttachment(e){let t=this._submission?.attachments.find(t=>t.id===e);if(!t)throw Error(`Attachment not found`);if(this._cancelAttachmentAdd(e),this._attachmentSends.markRemoved(t),!qA(t)){let n=this.getAttachmentAdapter();if(!n)throw Error(`Attachments are not supported`);try{await n.remove(t)}catch(t){throw this._failSubmittedRemoval(e,t),t}}let n=this._submission;n&&(this._submission={...n,attachments:n.attachments.filter(t=>t.id!==e)},this._notifySubscribers())}_failSubmittedRemoval(e,t){let n=this._submission;if(!n)return;let r=t instanceof Error?t.message:String(t);this._submission={...n,attachments:n.attachments.map(t=>{if(t.id!==e||qA(t))return t;let n=this._attachmentSends.transfer(t,{...t,status:{type:`incomplete`,reason:`error`,message:r}});return this._attachmentSends.markRemoved(n),n})},this._notifySubscribers()}_dictation;_dictationSession;_dictationUnsubscribes=[];_dictationBaseText=``;_currentInterimText=``;_dictationSessionIdCounter=0;_activeDictationSessionId;_isCleaningDictation=!1;get dictation(){return this._dictation}_isActiveSession(e,t){return this._activeDictationSessionId===e&&this._dictationSession===t}startDictation(){let e=this.getDictationAdapter();if(!e)throw Error(`Dictation adapter not configured`);let t=this._dictationSession!==void 0;if(this._dictationSession){let e=this._dictationSession;this._cleanupDictation({notify:!1}),this._stopDictationSession(e)}let n=e.disableInputDuringDictation??!1;this._dictationBaseText=this._text,this._currentInterimText=``;let r;try{r=e.listen()}catch(e){if(t)try{this._notifySubscribers()}catch(e){console.error(`[assistant-ui] Dictation replacement rollback notification threw`,e)}throw e}this._dictationSession=r;let i=++this._dictationSessionIdCounter;this._activeDictationSessionId=i,this._dictation={status:r.status,inputDisabled:n};try{this._notifySubscribers()}catch(e){console.error(`[assistant-ui] Dictation start notification threw`,e)}if(!this._isActiveSession(i,r))return;let a=[],o=()=>{for(let e of a.splice(0))try{e()}catch(e){console.error(`[assistant-ui] Dictation cleanup threw`,e)}},s=e=>(a.push(e),this._isActiveSession(i,r)?!0:(o(),!1));try{if(!s(r.onSpeech(e=>{if(!this._isActiveSession(i,r))return;let t=e.isFinal!==!1,n=this._dictationBaseText&&!this._dictationBaseText.endsWith(` `)&&e.transcript?` `:``;if(t){if(this._dictationBaseText=this._dictationBaseText+n+e.transcript,this._currentInterimText=``,this._text=this._dictationBaseText,this._dictation){let{transcript:e,...t}=this._dictation;this._dictation=t}this._notifySubscribers()}else this._currentInterimText=n+e.transcript,this._text=this._dictationBaseText+this._currentInterimText,this._dictation&&={...this._dictation,transcript:e.transcript},this._notifySubscribers()}))||!s(r.onSpeechStart(()=>{this._isActiveSession(i,r)&&(this._dictation={status:{type:`running`},inputDisabled:n,...this._dictation?.transcript&&{transcript:this._dictation.transcript}},this._notifySubscribers())}))||!s(r.onSpeechEnd(()=>{this._cleanupDictation({sessionId:i})})))return;let e=setInterval(()=>{this._isActiveSession(i,r)&&r.status.type===`ended`&&this._cleanupDictation({sessionId:i})},100);if(!s(()=>clearInterval(e)))return;this._dictationUnsubscribes.push(...a.splice(0))}catch(e){if(o(),this._isActiveSession(i,r))try{r.cancel()}catch(e){console.error(`[assistant-ui] Dictation session cancel threw`,e)}finally{this._cleanupDictation({sessionId:i})}throw e}}stopDictation(){if(!this._dictationSession)return;let e=this._dictationSession,t=this._activeDictationSessionId;this._stopDictationSession(e,()=>this._cleanupDictation({sessionId:t}))}_stopDictationSession(e,t=()=>{}){let n;try{n=e.stop()}catch(e){console.error(`[assistant-ui] Dictation session stop threw`,e),t();return}n.then(t,e=>{console.error(`[assistant-ui] Dictation session stop rejected`,e),t()})}_cleanupDictation(e){if(e?.sessionId!==void 0&&e.sessionId!==this._activeDictationSessionId||this._isCleaningDictation)return;this._isCleaningDictation=!0;let t=e=>{try{e()}catch(e){console.error(`[assistant-ui] Dictation cleanup threw`,e)}};try{let n=this._dictationUnsubscribes;this._dictationUnsubscribes=[],this._dictationSession=void 0,this._activeDictationSessionId=void 0,this._dictation=void 0,this._dictationBaseText=``,this._currentInterimText=``;for(let e of n)t(e);e?.notify!==!1&&t(()=>this._notifySubscribers())}finally{this._isCleaningDictation=!1}}_eventSubscribers=new Map;_notifyEventSubscribers(e,t){let n=this._eventSubscribers.get(e);n&&EC(n,t,`Composer runtime "${e}"`)}unstable_on(e,t){let n=t,r=this._eventSubscribers.get(e);return r||(r=new Set,this._eventSubscribers.set(e,r)),r.add(n),()=>{this._eventSubscribers.get(e)?.delete(n)}}},QA=e=>e.capabilities?.cancel?mA(e):!1,$A=class extends ZA{get canCancel(){return this.isSubmitting||QA(this.runtime)}get canSend(){if(this.isEmpty||this.runtime.isSendDisabled||this.isSubmitting)return!1;let e=this.runtime.voice;return!e||e.canSendText&&this.role===`user`&&this.attachments.length===0}cancel(){if(!this.isSubmitting){super.cancel();return}this.cancelSubmission(),QA(this.runtime)&&super.cancel()}threadMessageIds(e){return this.runtime.messages.filter(t=>t.role===e).map(e=>e.id)}_queueCache;get queue(){let e=this.runtime.getSteerQueueItems?.()??HA,t=this.runtime.getQueueItems?.()??HA,n=this._queueCache;if(n&&n.steer===e&&n.queue===t)return n.flat;let r=e.length===0?t:t.length===0?e:[...e,...t];return this._queueCache={steer:e,queue:t,flat:r},r}moveQueueItem(e,t){this.runtime.moveQueueItem?.(e,t)}removeQueueItem(e){this.runtime.removeQueueItem?.(e)}getAttachmentAdapter(){return this.runtime.adapters?.attachments}getDictationAdapter(){return this.runtime.adapters?.dictation}runtime;constructor(e){super(),this.runtime=e,this.connect()}connect(){let e=!1,t=this.runtime.isSendDisabled,n=this.runtime.voice?.canSendText,r=this.queue;return this.runtime.subscribe(()=>{this.settleInTransit();let i=!1,a=this.canCancel;e!==a&&(e=a,i=!0),t!==this.runtime.isSendDisabled&&(t=this.runtime.isSendDisabled,i=!0);let o=this.runtime.voice?.canSendText;n!==o&&(n=o,i=!0),r!==this.queue&&(r=this.queue,i=!0),i&&this._notifySubscribers()})}async handleSend(e,t){return this.runtime.append({...e,parentId:this.runtime.messages.at(-1)?.id??null,sourceId:null,startRun:t?.startRun,steer:t?.steer})}async handleCancel(){this.runtime.cancelRun()}},ej=class extends ZA{get canCancel(){return!0}get detachesDraftOnSend(){return!1}get canSend(){return!this.isEmpty&&!this.runtime.voice&&!this.isSubmitting}getAttachmentAdapter(){return this.runtime.adapters?.attachments}getDictationAdapter(){return this.runtime.adapters?.dictation}_nonTextPassthrough;_parentId;_sourceId;runtime;endEditCallback;_ended=!1;constructor(e,t,{parentId:n,message:r}){super(),this.runtime=e;let i=e.voice!==void 0,a=e.subscribe(()=>{let t=e.voice!==void 0;t!==i&&(i=t,this._notifySubscribers())});this.endEditCallback=()=>{a(),t()},this._parentId=n,this._sourceId=r.id,this.setText(cE(r)),this.setRole(r.role);let o;r.role===`user`?(o=[...r.attachments??[],...GA(r.content)],this._nonTextPassthrough=[]):(o=r.attachments??[],this._nonTextPassthrough=r.content.filter(e=>e.type!==`text`)),this.setAttachments(o),this.setRunConfig({...e.composer.runConfig})}get parentId(){return this._parentId}get sourceId(){return this._sourceId}async handleSend(e,t){let n=this._nonTextPassthrough.length>0?[...e.content,...this._nonTextPassthrough]:e.content,r=this.runtime.append({...e,content:n,parentId:this._parentId,sourceId:this._sourceId,startRun:t?.startRun});return this.handleCancel(),r}handleCancel(){this._ended||(this._ended=!0,this.reset().catch(e=>{console.error(`[assistant-ui] Failed to clear cancelled edit`,e)}),this.endEditCallback(),this._notifySubscribers())}},tj=class extends wT{_isInitialized=!1;repository=new VA;_voiceMessages=[];_voiceGeneration=0;_cachedMergedMessages=null;_cachedVoiceGeneration=-1;_cachedMergedBase=null;_markVoiceMessagesDirty(){this._voiceGeneration++,this._cachedMergedMessages=null}_getBaseMessages(){return this.repository.getMessages()}_commitVoiceMessage(e){}_onMessageMetadataChanged(e,t){}_dropVoiceMessage(e,t){let n=this._voiceMessages.findIndex(t=>t.id===e);n!==-1&&(this._voiceMessages.splice(n,1),this._markVoiceMessagesDirty(),t&&this._notifySubscribers())}get messages(){if(this._voiceMessages.length===0)return this._getBaseMessages();let e=this._getBaseMessages();if(this._cachedVoiceGeneration!==this._voiceGeneration||this._cachedMergedBase!==e){let t=new Set(e.map(e=>e.id));this._cachedMergedMessages=[...e,...this._voiceMessages.filter(e=>!t.has(e.id))],this._cachedVoiceGeneration=this._voiceGeneration,this._cachedMergedBase=e}return this._cachedMergedMessages}get state(){let e;for(let t of this.messages)t.role===`assistant`&&(e=t);return e?.metadata.unstable_state??null}composer=new $A(this);_contextProvider;constructor(e){super(),this._contextProvider=e,CA(this).addEventListener(`abort`,()=>{this.composer.__internal_dispose();for(let e of this._editComposers.values())e.__internal_dispose()})}getModelContext(){return this._contextProvider.getModelContext()}enrichAppendMetadata(e,t=e.parentId){if(e.role!==`user`)return e;let n=this.messages,r=t===null?-1:n.findIndex(e=>e.id===t),i=Ek(this.getModelContext().unstable_composerMetadata,n.slice(0,r+1));return i?{...e,metadata:{...e.metadata,custom:{...e.metadata?.custom,...i}}}:e}_editComposers=new Map;getEditComposer(e){return this._editComposers.get(e)}_isVoiceMessage(e){return e!==null&&this._voiceMessages.some(t=>t.id===e)}_resolveAppendParent(e){return this._isVoiceMessage(e)?this._getBaseMessages().at(-1)?.id??null:e}beginEdit(e){if(this.voice)throw Error(`Cannot edit a message while a voice session is connected`);if(this._isVoiceMessage(e))throw Error(`Voice transcript messages cannot be edited`);if(this._editComposers.has(e))throw Error(`Edit already in progress`);this._editComposers.set(e,new ej(this,()=>this._editComposers.delete(e),this.repository.getMessage(e))),this._notifySubscribers()}getMessageById(e){try{return this.repository.getMessage(e)}catch{let t=this.repository.getMessages(),n=this._voiceMessages.findIndex(t=>t.id===e);return n===-1?void 0:{parentId:n>0?this._voiceMessages[n-1].id:t.at(-1)?.id??null,message:this._voiceMessages[n],index:t.length+n}}}getBranches(e){return this._voiceMessages.some(t=>t.id===e)?[]:this.repository.getBranches(e)}switchToBranch(e){this.repository.switchToBranch(e),this._notifySubscribers()}_notifyEventSubscribers(e,t){let n=this._eventSubscribers.get(e);n&&EC(n,t,`Thread runtime "${e}"`)}_notifyToolApprovalAnswered(e,t,n,r){this._notifyEventSubscribers(`toolApprovalAnswered`,{messageId:e,toolCallId:t,toolName:n,approved:r})}submitFeedback({messageId:e,type:t,comment:n}){let r=this.adapters?.feedback,i=this.getMessageById(e);if(!i)throw Error(`Message not found: ${e}`);let{message:a,parentId:o}=i,s=n?.trim(),c={type:t,...s?{comment:s}:void 0};if(r?.submit({message:a,...c}),a.role===`assistant`){let t={...a,metadata:{...a.metadata,submittedFeedback:c}},n=this._voiceMessages.findIndex(t=>t.id===e);n===-1?(this.repository.addOrUpdateMessage(o,t),this._onMessageMetadataChanged(a,t)):(this._voiceMessages[n]=t,this._currentAssistantMsg===a&&(this._currentAssistantMsg=t),this._markVoiceMessagesDirty())}this._notifySubscribers()}_stopSpeaking;speech;speak(e){let t=this.adapters?.speech;if(!t)throw Error(`Speech adapter not configured`);let n=this.getMessageById(e);if(!n)throw Error(`Message not found: ${e}`);let{message:r}=n,i=this._stopSpeaking,a;try{i?.(),a=t.speak(cE(r))}catch(e){if(i&&!this._stopSpeaking)try{this._notifySubscribers()}catch(e){console.error(`[assistant-ui] Speech rollback notification threw`,e)}throw e}let o,s=()=>{this._stopSpeaking=void 0,this.speech=void 0;let e=o;o=void 0,e?.()},c=()=>{if(this._stopSpeaking===c)try{s()}finally{a.cancel()}},l=()=>{this._stopSpeaking===c&&(a.status.type===`ended`?bT([s,()=>this._notifySubscribers()]):(this.speech={messageId:e,status:a.status},this._notifySubscribers()))};this._stopSpeaking=c;try{if(o=a.subscribe(l),this._stopSpeaking!==c){o();return}l()}catch(e){if(this._stopSpeaking===c)try{bT([c,()=>this._notifySubscribers()])}catch(e){console.error(`[assistant-ui] Speech rollback cleanup threw`,e)}throw e}}stopSpeaking(){if(!this._stopSpeaking)throw Error(`No message is being spoken`);bT([this._stopSpeaking,()=>this._notifySubscribers()])}_voiceSession;_voiceUnsubs=[];voice;_voiceVolume=0;_voiceVolumeSubscribers=new Set;getVoiceVolume=()=>this._voiceVolume;subscribeVoiceVolume=e=>(this._voiceVolumeSubscribers.add(e),()=>this._voiceVolumeSubscribers.delete(e));_onVoiceConnected(){}_onVoiceDisconnected(){}_toVoiceSessionState(e,t,n){return{status:t,isMuted:e.isMuted,mode:n,canSendText:t.type===`running`&&e.sendText!==void 0}}_isRunActive(){if(this.isRunning)return!0;let e=this._getBaseMessages().at(-1);return e?.role===`assistant`&&(e.status.type===`running`||e.status.type===`requires-action`)}_getVoiceCommitBarrier(){if(!this.isLoading)return;let e=bA(this);return(async()=>{for(;this.isLoading&&!e.aborted;)await new Promise(t=>{let n=()=>{r(),e.removeEventListener(`abort`,n),t()},r=this.subscribe(n);e.addEventListener(`abort`,n)})})()}connectVoice(){let e=this.adapters?.voice;if(!e)throw Error(`Voice adapter not configured`);if(this._isRunActive())throw Error(`Cannot start a voice session while a run is in progress or paused on a pending tool action`);let t=this._voiceSession!==void 0;try{this._disconnectVoice(!1)}catch(e){console.error(`[assistant-ui] Voice cleanup threw before reconnect`,e)}let n;try{n=e.connect({})}catch(e){throw t&&this._voiceSession===void 0&&this._onVoiceDisconnected(),e}this._voiceSession=n;let r=[];this._voiceUnsubs=r;let i=()=>{if(this._voiceSession===n&&this._voiceUnsubs===r)return!1;try{bT(r.splice(0))}catch(e){console.error(`[assistant-ui] Detached voice setup cleanup threw`,e)}return!0};try{let e=`listening`;if(this.voice=this._toVoiceSessionState(n,n.status,e),this._voiceVolume=0,this._notifySubscribers(),i()||(r.push(n.onStatusChange(t=>{this._voiceSession===n&&(t.type===`ended`?(this._finishVoiceAssistantMessage(),this._voiceSession=void 0,this.voice=void 0,this._onVoiceDisconnected()):this.voice=this._toVoiceSessionState(n,t,e),this._notifySubscribers())})),i())||(r.push(n.onModeChange(t=>{this._voiceSession===n&&(e=t,this.voice&&(this.voice={...this.voice,mode:t},this._notifySubscribers()))})),i())||(r.push(n.onVolumeChange(e=>{this._voiceSession===n&&(this._voiceVolume=e,EC(this._voiceVolumeSubscribers,void 0,`Voice volume`))})),i()))return;r.push(n.onTranscript(e=>{this._voiceSession===n&&this._handleVoiceTranscript(e)})),i()||this._onVoiceConnected()}catch(e){if(this._voiceSession===n&&this._voiceUnsubs===r){try{this._disconnectVoice(!1)}catch(e){console.error(`[assistant-ui] Voice rollback cleanup threw`,e)}t&&this._voiceSession===void 0&&this._onVoiceDisconnected()}else i();throw e}}_currentAssistantMsg=null;_observeVoiceCommit(e){Promise.resolve(e).catch(e=>{console.error(`[assistant-ui] Voice message commit failed`,e)})}_handleVoiceTranscript(e){if(this.ensureInitialized(),e.role===`user`)this._finishVoiceAssistantMessage(),this._currentAssistantMsg=null,e.isFinal&&this._observeVoiceCommit(this._commitVoiceUserMessage({id:WE(),role:`user`,content:[{type:`text`,text:e.text}],metadata:{modality:`voice`,custom:{}},createdAt:new Date,attachments:[]}));else{let t=e.isFinal?{type:`complete`,reason:`stop`}:{type:`running`};if(!this._currentAssistantMsg)this._currentAssistantMsg={id:WE(),role:`assistant`,content:[{type:`text`,text:e.text}],metadata:{unstable_state:this.state,unstable_annotations:[],unstable_data:[],steps:[],modality:`voice`,custom:{}},status:t,createdAt:new Date},this._voiceMessages.push(this._currentAssistantMsg);else{let n=this._voiceMessages.indexOf(this._currentAssistantMsg);if(n===-1)return;let r={...this._currentAssistantMsg,content:[{type:`text`,text:e.text}],status:t};this._voiceMessages[n]=r,this._currentAssistantMsg=r}e.isFinal&&(this._observeVoiceCommit(this._commitVoiceMessage(this._currentAssistantMsg)),this._currentAssistantMsg=null),this._markVoiceMessagesDirty(),this._notifySubscribers()}}_commitVoiceUserMessage(e){this._voiceMessages.push(e);let t=this._commitVoiceMessage(e);return this._markVoiceMessagesDirty(),this._notifySubscribers(),t}async _appendToVoiceSession(e){let t=this._voiceSession;if(!this.voice?.canSendText||!t?.sendText)throw Error(`Cannot send a text message while a voice session is connected`);let n=e.content.filter(e=>e.type===`text`);if(e.role!==`user`||e.sourceId!=null||e.parentId!==this._resolveAppendParent(this.messages.at(-1)?.id??null)||e.attachments?.length||n.length!==e.content.length||!n.some(e=>e.text.trim()))throw Error(`Only a plain text user message can be sent while a voice session is connected`);let r=this.enrichAppendMetadata(e);this.ensureInitialized();let i=bA(this);try{await t.sendText(cE(e))}catch(e){if(i.aborted)return;let t=new Uk;throw t.cause=e,t}if(!i.aborted){if(this._voiceSession!==t)throw new Uk(`The voice session ended before the typed message was recorded`);this._finishVoiceAssistantMessage(!1),this._currentAssistantMsg=null,await this._commitVoiceUserMessage({id:WE(),role:`user`,content:n,metadata:{custom:{...r.metadata?.custom}},createdAt:e.createdAt,attachments:[]})}}_finishVoiceAssistantMessage(e=!0){let t=this._voiceMessages.at(-1);if(t?.role===`assistant`&&t.status.type===`running`){let n=this._voiceMessages.length-1;this._voiceMessages[n]={...t,status:{type:`complete`,reason:`stop`}},this._observeVoiceCommit(this._commitVoiceMessage(this._voiceMessages[n])),this._currentAssistantMsg=null,this._markVoiceMessagesDirty(),e&&this._notifySubscribers()}}disconnectVoice(){this._disconnectVoice(!0)}_disconnectVoice(e){this._finishVoiceAssistantMessage(!1),this._currentAssistantMsg=null;let t=this._voiceUnsubs.splice(0);this._voiceUnsubs=[];let n=this._voiceSession;this._voiceSession=void 0,this.voice=void 0,this._voiceVolume=0;let r=this.speech&&this._isVoiceMessage(this.speech.messageId)?this._stopSpeaking:void 0;this._voiceMessages=[],this._markVoiceMessagesDirty();try{bT([...t,...r?[r]:[],...n?[()=>n.disconnect()]:[],()=>EC(this._voiceVolumeSubscribers,void 0,`Voice volume`),()=>this._notifySubscribers()])}finally{e&&n&&this._voiceSession===void 0&&this._onVoiceDisconnected()}}muteVoice(){if(!this._voiceSession)throw Error(`No active voice session`);this._voiceSession.mute(),this.voice={...this.voice,isMuted:!0},this._notifySubscribers()}unmuteVoice(){if(!this._voiceSession)throw Error(`No active voice session`);this._voiceSession.unmute(),this.voice={...this.voice,isMuted:!1},this._notifySubscribers()}ensureInitialized(){this._isInitialized||(this._isInitialized=!0,this._notifyEventSubscribers(`initialize`,{}))}export(){return this.repository.export()}import(e){this.ensureInitialized(),this.repository.clear(),this.repository.import(e),this._notifySubscribers()}reset(e){this.import(IA.fromArray(e??[]))}_eventSubscribers=new Map;unstable_on(e,t){let n=t;if(e===`modelContextUpdate`)return this._contextProvider.subscribe?.(()=>EC([n],{},`Thread runtime "${e}"`))??(()=>{});let r=this._eventSubscribers.get(e);return r||(r=new Set,this._eventSubscribers.set(e,r)),r.add(n),e===`initialize`&&this._isInitialized&&queueMicrotask(()=>{r.has(n)&&EC([n],{},`Thread runtime "${e}"`)}),()=>{this._eventSubscribers.get(e)?.delete(n)}}},nj=gS(!1),rj=e=>xx(nj,!0,e),ij=e=>e.status?.type!==`running`,aj=async(e,t)=>{let n=sk.fromAssistantStream(e);for await(let e of n){let n=e.parts.filter(e=>e.type===`text`)[0]?.text;n?.trim()&&await t(n)}},oj=(e,t)=>{let n=()=>void t.generateTitle({automatic:!0}).catch(e=>{XT(e)||console.error(`[assistant-ui] Thread title generation failed`,e)}),r=()=>e.getState().messages.some(ij);if(r())return n(),()=>{};let i=e.subscribe(()=>{r()&&(i(),n())});return i},sj=({threadId:e,generation:t,runtimeHook:n,publish:r,itemRuntime:i})=>{let a=rj(n),o=a?.thread?.__internal_threadBinding,s=iS(()=>{o&&r(e,o.getState(),t)},[e,t,o,r]),c=nS(!1);c.current||s(),aS(()=>{if(o)return c.current=!0,s(),o.outerSubscribe(s)},[o,s]);let l=nS(void 0),u=nS(!1),d=nS(i.getState().status===`new`),f=nS(void 0),p=nS(!1),m=sS(()=>{if(u.current||i.getState().status!==`new`&&!d.current)return;u.current=!0,d.current=!1;let e=i.initialize();l.current=e,e.then(()=>{p.current&&(f.current?.(),f.current=oj(a.thread,i))},()=>{l.current===e&&(l.current=void 0,u.current=!1)})}),h=sS(()=>(m(),l.current));return aS(()=>{if(!o)return;let e=o.getState(),t=e.__internal_setGetInitializePromise;typeof t==`function`&&t.call(e,h)},[o]),aS(()=>{if(!a?.threads?.main)return;u.current=!1,p.current=!0;let e=a.threads.main.unstable_on(`initialize`,m);return()=>{p.current=!1,e(),f.current?.(),f.current=void 0}},[a]),a},cj=pC(({threadId:e,generation:t,parentList:n,runtimeHook:r,parentClient:i,adapters:a,publish:o,destroySignal:s})=>{let c=rS(()=>new OA(new DT({path:{ref:`threadItems[threadId=${e}]`,threadSelector:{type:`threadId`,threadId:e}},getState:()=>{let t=n.getItemById(e);return t?{id:t.id,remoteId:t.remoteId,externalId:t.externalId,title:t.title,lastMessageAt:t.lastMessageAt,custom:t.custom,status:t.status,isMain:t.id===n.mainThreadId,isRunning:n.unstable_isThreadRunning?.(t.id)??!1}:yT},subscribe:e=>n.subscribe(e)}),n),[n,e]),{client:l}=sT(i,{threadListItem:rO({runtime:c})});return jw(s,function(){return ew(l,function(){return gO(a,function(){return sj({threadId:e,generation:t,runtimeHook:r,publish:o,itemRuntime:c})})})})}),lj=[`runStart`,`runEnd`,`initialize`,`modelContextUpdate`],uj=e=>{let t=$(3),{detectorRef:n}=e,r,i;return t[0]===n?(r=t[1],i=t[2]):(r=()=>{n.current=!0},i=[n],t[0]=n,t[1]=r,t[2]=i),oS(r,i),null},dj=class extends wT{runtimeHook;adapterStore=new TT({defaultAdapters:null,threadAdapters:new Map});hostStore=new TT({threads:[],hookEpoch:0});pendingThreadAdapters=new Map;instances=new Map;nextGeneration=0;parent;constructor(e,t){super(),this.parent=t,this.runtimeHook=e}_whenRuntimeAttached(e){return new Promise((t,n)=>{let r=()=>{let r=this.instances.get(e);if(!r)i(),n(Error(`Thread was deleted before runtime was started`));else if(!r.runtime||r.publishedGeneration!==r.generation)return;else i(),t(r.runtime)},i=this.subscribe(r);r()})}startThreadRuntime(e){if(!this.instances.has(e)){let t=this.nextGeneration++;this.instances.set(e,{generation:t,isRunning:!1,destroy:new AbortController}),this._syncHostThreads()}return this._whenRuntimeAttached(e)}__internal_restartThreadRuntime(e){let t=this.instances.get(e);if(!t)return this.startThreadRuntime(e);try{t.unsubscribeRunning?.()}finally{t.unsubscribeRunning=void 0,t.runtime&&EA(t.runtime),t.destroy.abort(),t.destroy=new AbortController,t.generation=this.nextGeneration++,this._syncHostThreads(),this._notifySubscribers()}return this._whenRuntimeAttached(e)}getThreadRuntimeCore(e){let t=this.instances.get(e);if(t)return t.runtime}__internal_isThreadRunning(e){return this.instances.get(e)?.isRunning??!1}runningSubscribers=new Set;__internal_subscribeRunningChanged(e){return this.runningSubscribers.add(e),()=>this.runningSubscribers.delete(e)}threadEventSubscribers=new Set;__internal_subscribeThreadEvents(e){return this.threadEventSubscribers.add(e),()=>this.threadEventSubscribers.delete(e)}_publish=(e,t,n)=>{this._publishThreadRuntime(e,t,n)};_publishThreadRuntime(e,t,n){let r=this.instances.get(e);if(!r||r.generation!==n)return;let i=r.runtime,a=r.publishedGeneration;r.runtime=t,r.publishedGeneration=n;try{i!==t&&this._trackRunning(e,r)}finally{try{this._notifySubscribers(),i!==void 0&&i!==t&&bT(this.replacedSubscribers)}finally{a===n&&i!==void 0&&i!==t&&DA(i)}}}replacedSubscribers=new Set;__internal_subscribeRuntimeReplaced(e){return this.replacedSubscribers.add(e),()=>this.replacedSubscribers.delete(e)}_trackRunning(e,t){let n=t.unsubscribeRunning;t.unsubscribeRunning=void 0;try{n?.()}finally{let n=t.runtime;if(!n)this._setRunning(t,!1);else{let r=mA(n);t.isRunning!==r&&(t.isRunning=r,queueMicrotask(()=>bT(this.runningSubscribers)));let i=[n.subscribe(()=>{this._setRunning(t,mA(n))}),...lj.map(t=>n.unstable_on(t,()=>{EC(this.threadEventSubscribers,{threadId:e,type:t},`Thread event "${t}"`)}))];t.unsubscribeRunning=()=>xT(i)}}}_setRunning(e,t){e.isRunning!==t&&(e.isRunning=t,bT(this.runningSubscribers))}stopThreadRuntime(e){let t=this.instances.get(e);try{t?.unsubscribeRunning?.()}finally{t?.runtime&&DA(t.runtime),t?.destroy.abort(),this.instances.delete(e),this.pendingThreadAdapters.delete(e),this._syncHostThreads(),this._notifySubscribers()}}setRuntimeHook(e){if(this.runtimeHook===e)return;this.runtimeHook=e;let t=this.hostStore.getState();this.hostStore.setState({...t,hookEpoch:t.hookEpoch+1})}__internal_setDefaultAdapters(e){let t=this.adapterStore.getState();t.defaultAdapters!==e&&this.adapterStore.setState({...t,defaultAdapters:e})}__internal_setThreadAdapters(e,t){let n=this.adapterStore.getState(),r=new Map(n.threadAdapters);t===null?r.delete(e):r.set(e,t),this.adapterStore.setState({...n,threadAdapters:r})}__internal_dispose(){for(let e of[...this.instances.keys()])try{this.stopThreadRuntime(e)}catch(e){console.error(`[assistant-ui] Thread runtime cleanup threw while stopping a thread`,e)}}_syncHostThreads(){let e=this.hostStore.getState();this.hostStore.setState({...e,threads:Array.from(this.instances.entries()).map(([e,{generation:t,destroy:n}])=>({id:e,generation:t,destroySignal:n.signal}))})}_threadElements(e,{threads:t,hookEpoch:n},r){let i=this.runtimeHook;return t.map(({id:t,generation:a,destroySignal:o})=>{let s=this.pendingThreadAdapters.has(t)?this.pendingThreadAdapters.get(t):r.threadAdapters.get(t)??r.defaultAdapters;return mC(`${t}:${a}:${n}`,cj({threadId:t,generation:a,parentList:this.parent,runtimeHook:i,parentClient:e,adapters:s,publish:this._publish,destroySignal:o}))})}__internal_useHost(e){let t=JT(this.hostStore),n=JT(this.adapterStore);return xC(this._threadElements(e,t,n))}__internal_RenderThreadRuntimes=({provider:e})=>(JT(this.hostStore),Array.from(this.instances.entries()).map(([t,{generation:n}])=>(0,q.jsx)(this._OuterActiveThreadProvider,{threadId:t,provider:e},`${t}:${n}`)));__internal_Host=({parentClient:e})=>{let t=JT(this.hostStore),n=JT(this.adapterStore),r=this._threadElements(e,t,n),{effects:i}=CC(function(){return xC(r)});return oS(i),null};_OuterActiveThreadProvider=mS(({threadId:e,provider:t})=>{let n=rS(()=>new NA(this.parent).getItemById(e),[e]),r=nS(!1);return aS(()=>{},[t]),(0,q.jsx)(Rk,{runtime:n,children:(0,q.jsx)(t,{children:(0,q.jsx)(this._AdapterSink,{threadId:e,detectorRef:r})})})});_AdapterSink=({threadId:e,detectorRef:t})=>{let n=_O();return this.pendingThreadAdapters.set(e,n),oS(()=>(this.__internal_setThreadAdapters(e,n),()=>{this.pendingThreadAdapters.get(e)===n&&this.pendingThreadAdapters.delete(e),this.__internal_setThreadAdapters(e,null)}),[e,n]),(0,q.jsx)(uj,{detectorRef:t})}};function fj(e,t,n,...r){if(!n)return;let i=n=>{try{console.error(`[${e}] ${t} callback threw an error`,n)}catch{}};try{let e=n(...r);if(e!==null&&(typeof e==`object`||typeof e==`function`)&&`then`in e&&typeof e.then==`function`)return Promise.resolve(e).then(()=>void 0,e=>i(e))}catch(e){i(e)}}var pj=(e,t,n)=>n.reduce((e,n)=>n?.(e,t)??e,e),mj=class extends wT{_pendingTransforms=[];_completedOptimistics=[];_nextTransformOrder=0;_epoch=0;_baseValue;_cachedValue;constructor(e){super(),this._baseValue=e,this._cachedValue=e}_updateState(){let e=[...this._pendingTransforms.map(e=>({order:e.order,apply:t=>pj(t,e.task,[e.loading,e.optimistic])})),...this._completedOptimistics.map(({order:e,optimistic:t})=>({order:e,apply:t}))].sort((e,t)=>e.order-t.order);this._cachedValue=e.reduce((e,t)=>t.apply(e),this._baseValue),this._notifySubscribers()}get baseValue(){return this._baseValue}get value(){return this._cachedValue}update(e){this._baseValue=e,this._updateState()}reset(e){this._epoch++,this._pendingTransforms.length=0,this._completedOptimistics.length=0,this._baseValue=e,this._cachedValue=e,this._notifySubscribers()}async optimisticUpdate(e){let t=this._epoch,n=this._nextTransformOrder++,r=e.execute(),i={...e,order:n,task:r};try{this._pendingTransforms.push(i),this._updateState();let n=await r;if(t!==this._epoch)return n;this._baseValue=pj(this._baseValue,n,[e.optimistic,e.then]);for(let t of this._completedOptimistics)(e.then||t.order>i.order)&&(this._baseValue=t.optimistic(this._baseValue));return e.optimistic&&(this._completedOptimistics.push({order:i.order,optimistic:e.optimistic}),this._completedOptimistics.sort((e,t)=>e.order-t.order)),n}finally{let e=this._pendingTransforms.indexOf(i);e>-1&&this._pendingTransforms.splice(e,1),this._pendingTransforms.length===0&&(this._completedOptimistics.length=0),this._updateState()}}},hj=Error("This is the empty thread, a placeholder for the main thread. You cannot perform any actions on this thread instance. This error is probably because you tried to call a thread method in your render function. Call the method inside a `useEffect` hook instead."),gj=new class extends vA{get error(){return hj}messages=[];composer=_A(hj,!0);isLoading=!0;getMessageById(){}getBranches(){return[]}export(){return{messages:[]}}subscribe(){return()=>{}}waitForUpdate(){return Promise.reject(hj)}};function _j(e){return e}var vj=`__LOCALID_`,yj=e=>e||void 0,bj=(e,t)=>{let n=[...t.threadIds],r=[...t.archivedThreadIds],i=ex(t.threadIdMap),a=ex(t.threadData),o=new Set([...n,...r]);for(let t of e){switch(t.status){case`regular`:case`archived`:break;default:{let e=t.status;throw Error(`Unsupported state: ${e}`)}}let e=i[t.remoteId],s=e===void 0?void 0:a[e],c=s?.id??t.remoteId,l=e??_j(c),u=s!==void 0&&s.status!==`new`?s.initializeTask:void 0;o.has(c)?s!==void 0&&s.status!==t.status&&(t.status===`regular`?(r=r.filter(e=>e!==c),n.push(c)):(n=n.filter(e=>e!==c),r.push(c))):(o.add(c),t.status===`regular`?n.push(c):r.push(c)),i[c]=l,i[t.remoteId]=l,a[l]={...s?.localOrigin===!0?{localOrigin:!0}:{},id:c,remoteId:t.remoteId,externalId:t.externalId,status:t.status,title:t.title,lastMessageAt:t.lastMessageAt,custom:t.custom,initializeTask:u??Promise.resolve({remoteId:t.remoteId,externalId:t.externalId})}}return{threadIds:n,archivedThreadIds:r,threadIdMap:i,threadData:a}},xj=()=>({isLoading:!0,loadError:void 0,isLoadingMore:!1,cursor:void 0,newThreadId:void 0,threadIds:[],archivedThreadIds:[],threadIdMap:ex(),threadData:ex()}),Sj=e=>{let t;do t=`${vj}${WE()}`;while(e.threadIdMap[t]);let n=_j(t);return{id:t,state:{...e,newThreadId:t,threadIdMap:ex(e.threadIdMap,{[t]:n}),threadData:ex(e.threadData,{[n]:{status:`new`,id:t,remoteId:void 0,externalId:void 0,title:void 0,custom:void 0,localOrigin:!0}})}}},Cj=(e,t,n)=>{let r=new Set(e.threadIds),i=new Set(e.archivedThreadIds),a=[],o=[],s=(e,t)=>e.has(t.id)||t.remoteId!==void 0&&e.has(t.remoteId);for(let t of Object.values(e.threadData)){let e=n.get(t.id);(e===void 0||e===`new`)&&(e!==void 0||t.localOrigin===!0)&&(t.status===`regular`&&!s(r,t)?(a.push(t),r.add(t.id)):t.status===`archived`&&!s(i,t)&&(o.push(t),i.add(t.id)))}if(a.length===0&&o.length===0)return e;let c=(e,t)=>{let n=e.indexOf(t.id);if(n!==-1)return n;let r=t.remoteId===void 0?-1:e.indexOf(t.remoteId);return r===-1?2**53-1:r};return a.sort((e,n)=>c(t.threadIds,e)-c(t.threadIds,n)),o.sort((e,n)=>c(t.archivedThreadIds,e)-c(t.archivedThreadIds,n)),{...e,threadIds:[...a.map(e=>e.id),...e.threadIds],archivedThreadIds:[...o.map(e=>e.id),...e.archivedThreadIds]}},wj=e=>new Map(Object.values(e.threadData).map(e=>[e.id,e.status])),Tj=(e,t)=>{let n=Object.hasOwn(e.threadIdMap,t)?e.threadIdMap[t]:void 0;if(n!==void 0)return Object.hasOwn(e.threadData,n)?e.threadData[n]:void 0},Ej=(e,t,n,r,i)=>{let a=_j(t),o=Object.hasOwn(e.threadData,a)?e.threadData[a]:void 0;if(!o)return{state:e,removedMappingId:void 0,survivorMappingId:a};let s=Object.hasOwn(e.threadIdMap,n)?e.threadIdMap[n]:void 0,c=s!==void 0&&s!==a&&Object.hasOwn(e.threadData,s)?e.threadData[s]:void 0,l=s!==void 0&&c!==void 0?{mappingId:s,data:c}:void 0,u=i!==void 0&&Object.hasOwn(e.threadIdMap,i)?e.threadIdMap[i]:void 0,d=l!==void 0&&u===l.mappingId?l.mappingId:a,f=l===void 0?void 0:d===a?l.mappingId:a,p=r??l?.data.externalId,m=ex(e.threadData);f!==void 0&&delete m[f];let h={...o,id:d,initializeTask:Promise.resolve({remoteId:n,externalId:p}),remoteId:n,externalId:p};m[d]={...l?.data,...h,title:o.title??l?.data.title,lastMessageAt:(`lastMessageAt`in o?o.lastMessageAt:void 0)??(l&&`lastMessageAt`in l.data?l.data.lastMessageAt:void 0),custom:o.custom??l?.data.custom};let g=ex(e.threadIdMap);if(f!==void 0)for(let[e,t]of Object.entries(g))t===f&&(g[e]=d);g[t]=d,g[n]=d;let _=e=>l===void 0?e:e.filter(e=>e!==l.data.id).map(e=>e===o.id?d:e);return{state:{...e,threadIds:_(e.threadIds),archivedThreadIds:_(e.archivedThreadIds),threadIdMap:g,threadData:m},removedMappingId:f,survivorMappingId:d}},Dj=(e,t,n,r)=>{let i=Tj(e,t);if(!i)return e;let{id:a,status:o}=i;if(o===n)return e;let s;if(n!==`deleted`){if(i.status===`new`){if(r===void 0)return e;s={...i,initializeTask:r,status:n}}else s={...i,status:n}}let c={...e};switch(o){case`new`:c.newThreadId=void 0;break;case`regular`:c.threadIds=c.threadIds.filter(e=>e!==a);break;case`archived`:c.archivedThreadIds=c.archivedThreadIds.filter(e=>e!==a);break;default:throw Error(`Unsupported state: ${o}`)}switch(n){case`regular`:c.threadIds=[a,...c.threadIds];break;case`archived`:c.archivedThreadIds=[a,...c.archivedThreadIds];break;case`deleted`:{let n=e.threadIdMap[t],r=ex(c.threadData);delete r[n],c.threadData=r;let i=ex(c.threadIdMap);for(let[e,t]of Object.entries(i))t===n&&delete i[e];c.threadIdMap=i;break}default:throw Error(`Unsupported state: ${n}`)}return s!==void 0&&(c.threadData={...c.threadData,[a]:s}),c},Oj=(e,t,n)=>Dj(e,t,n,void 0),kj=(e,t,n)=>Dj(e,t,`regular`,n),Aj=class extends Error{[YT]=!0;constructor(){super(`Thread list adapter changed while an operation was pending.`),this.name=`ThreadListAdapterChangedError`}};function jj(e,t){let n=e.get(t);return n===void 0&&(n={generations:new Set,pendingClaim:null,inFlightClaims:new Set,manualTitle:void 0,latestExplicit:null,nextOrder:0},e.set(t,n)),n}function Mj(e,t,n){n.generations.size===0&&n.pendingClaim===null&&n.inFlightClaims.size===0&&n.manualTitle===void 0&&e.get(t)===n&&e.delete(t)}function Nj(e,t){return!t.superseded&&(e.latestExplicit?.order??0)<=t.order}function Pj(e,t){return(e.latestExplicit?.order??0)<t.order}function Fj(e,t,n){let r=jj(e,t),i,a=new Promise(e=>{i=e}),o={title:n,order:++r.nextOrder,settled:a,settle:i};r.pendingClaim=o,r.inFlightClaims.add(o);for(let e of r.generations)e.order<o.order&&(e.claim=o);return o}function Ij(e,t,n,r){n.settle(r);let i=e.get(t);i!==void 0&&(i.inFlightClaims.delete(n),i.pendingClaim===n&&(i.pendingClaim=null,r&&(i.manualTitle=n.title)),Mj(e,t,i))}function Lj(e,t,n){let r=n.manualTitle;if(r!==void 0)return n.manualTitle=void 0,Mj(e,t,n),r}function Rj(e,t){e.delete(t)}function zj(e,t,n){let r=jj(e,t);if(n&&r.pendingClaim===null&&Lj(e,t,r)!==void 0)return null;let i,a=new Promise(e=>{i=e}),o={automatic:n,order:++r.nextOrder,claim:n?r.pendingClaim:null,beforeGenerationClaims:n?[]:[...r.inFlightClaims],superseded:!1,persisted:a,settlePersisted:i};if(!n){r.pendingClaim=null,r.manualTitle=void 0,r.latestExplicit=o;for(let e of r.generations)e.automatic&&(e.superseded=!0)}return r.generations.add(o),o}async function Bj({states:e,threadId:t,automatic:n,generate:r,rename:i,applyTitle:a}){let o=jj(e,t),s=zj(e,t,n);if(s===null)return;let c,l=s.order,u=async e=>{let t=await e.settled;if(s.claim===e)return t||(s.claim=null,o.pendingClaim===e&&(o.pendingClaim=null)),t},d=()=>n&&Lj(e,t,o)!==void 0,f=async()=>{if(c!==void 0)for(;;){let e=s.claim;if(e!==null&&e.order>l&&Pj(o,e)){await u(e)===!0&&(c=e.title,l=e.order,await i(e.title));continue}let t=o.latestExplicit;if(t===null||t.order<=l)return;let n=await t.persisted;if(o.latestExplicit===t){if(l=t.order,n===void 0||n===c)return;c=n,await i(n)}}},p=async()=>{if(s.beforeGenerationClaims.length>0&&await Promise.all(s.beforeGenerationClaims.map(e=>e.settled)),s.claim!==null){let e=await u(s.claim);if(e===!0){s.superseded=!0;return}if(e===!1&&d())return}if(!Nj(o,s))return;let e=!1,t;for(await r(async n=>{e=!0,t=n,n!==void 0&&(c=n);let r=s.claim;if(r!==null){if(await u(r)!==!1)return;if(d()){s.superseded=!0;return}}Nj(o,s)&&await a(t)});;){let n=s.claim;if(n===null)return;let r=await u(n);if(r!==void 0){if(r===!1){if(d())return;e&&Nj(o,s)&&await a(t);return}if(!Pj(o,n))return;if(await i(n.title),c=n.title,l=n.order,s.claim===n){if(!Nj(o,s))return;await a(n.title),s.superseded=!0;return}}}};try{await p(),await f()}finally{s.settlePersisted(c),o.generations.delete(s),Mj(e,t,o)}}var Vj=(e,t)=>Error(`Thread "${e}" not found while ${t}.`),Hj=(e,t,n)=>Error(`Thread "${e}" has status "${t}", so it cannot ${n}.`),Uj=xj(),Wj=class extends wT{_options;_hookManager;_runtimeAdapters;_loadThreadsPromise;_loadMorePromise;_loadGeneration=0;_adapterGeneration=0;_replaceListOnNextLoad=!1;_staleThreadIdsOnReplace;_switchGeneration=0;_switchTask;_titleStates=new Map;_mainThreadId;_state=new mj(Uj);_useAdaptersProvider=({children:e})=>{let t=this._options.adapter.unstable_useAdapters;return t===void 0?e:(0,q.jsx)(this._SynthesizedAdapters,{useAdapters:t,children:e})};_SynthesizedAdapters=({useAdapters:e,children:t})=>{let n=yO(e());return n==null?t:(0,q.jsx)(bO,{adapters:n,children:t})};resolveProvider(e){return e.unstable_Provider===void 0?e.unstable_useAdapters===void 0?hS:this._useAdaptersProvider:e.unstable_Provider}get threadItems(){return this._state.value.threadData}getLoadThreadsPromise(){if(!this._loadThreadsPromise){let e=this._loadGeneration,t=!1,n=wj(this._state.baseValue);this._loadThreadsPromise=this._state.optimisticUpdate({execute:()=>this._options.adapter.list(),loading:t=>e===this._loadGeneration?{...t,isLoading:!0,loadError:void 0}:t,then:(r,i)=>{if(e!==this._loadGeneration)return r;if(this._replaceListOnNextLoad)return this._replaceListOnNextLoad=!1,t=!0,this._replaceWithThreads({...r,loadError:void 0},i.threads,yj(i.nextCursor));let a=bj(i.threads,{threadIds:[],archivedThreadIds:[],threadIdMap:{...r.threadIdMap},threadData:{...r.threadData}});return Cj({...r,isLoading:!1,loadError:void 0,cursor:yj(i.nextCursor),threadIds:a.threadIds,archivedThreadIds:a.archivedThreadIds,threadIdMap:a.threadIdMap,threadData:a.threadData},r,n)}}).catch(n=>{if(e===this._loadGeneration){if(console.error(`[assistant-ui] thread list load failed:`,n),this._loadThreadsPromise=void 0,!this._replaceListOnNextLoad){this._state.update({...this._state.baseValue,isLoading:!1,loadError:n});return}this._replaceListOnNextLoad=!1,t=!0,this._state.update(this._replaceWithThreads({...this._state.baseValue,loadError:n},[],void 0))}}).then(()=>{if(!t)return;let e=this._options.threadId;e!==void 0&&this.getItemById(e)?.id!==this._mainThreadId&&this._switchToThreadFromProp(e).catch(()=>{})})}return this._loadThreadsPromise}loadMore(){if(this._loadMorePromise)return this._loadMorePromise;let e=this._state.value;if(e.cursor===void 0||e.isLoading)return Promise.resolve();let t=this._loadGeneration,n=this._options.adapter,r=e.cursor,i=this._state.optimisticUpdate({execute:()=>n.list({after:r}),loading:e=>t===this._loadGeneration?{...e,isLoadingMore:!0}:e,then:(e,r)=>{if(t!==this._loadGeneration||n!==this._options.adapter)return e;let i=bj(r.threads,{threadIds:[...e.threadIds],archivedThreadIds:[...e.archivedThreadIds],threadIdMap:{...e.threadIdMap},threadData:{...e.threadData}});return{...e,isLoadingMore:!1,cursor:yj(r.nextCursor),threadIds:i.threadIds,archivedThreadIds:i.archivedThreadIds,threadIdMap:i.threadIdMap,threadData:i.threadData}}}).catch(e=>{t===this._loadGeneration&&console.error(`[assistant-ui] thread list loadMore failed:`,e)}).then(()=>{this._loadMorePromise===i&&(this._loadMorePromise=void 0)});return this._loadMorePromise=i,i}constructor(e,t){super(),this._state.subscribe(()=>{this._notifySubscribers(),this._notifyThreadIdChange()}),this._runtimeAdapters={modelContext:t},this._hookManager=new dj(e.runtimeHook,this),this._hookManager.__internal_setDefaultAdapters(this._runtimeAdapters),this._hookManager.__internal_subscribeRunningChanged(()=>this._notifySubscribers()),this._hookManager.__internal_subscribeRuntimeReplaced(()=>{queueMicrotask(()=>this._notifySubscribers())}),this.providerStore=new TT(this.resolveProvider(e.adapter)),this.__internal_setOptions(e),this.switchToNewThread()}_initialThreadLoaded=!1;providerStore;__internal_setOptions(e){if(this._options===e)return;let t=this._options!==void 0&&this._options.adapter!==e.adapter,n=this._initialThreadLoaded&&this._options!==void 0&&this._options.threadId!==e.threadId;this._options=e,this.providerStore.setState(this.resolveProvider(e.adapter)),this._hookManager.setRuntimeHook(e.runtimeHook),t&&(this._loadGeneration++,this._adapterGeneration++,this._switchGeneration++,this._switchTask=void 0,this._loadThreadsPromise=void 0,this._loadMorePromise=void 0,this._replaceListOnNextLoad=!0,this._staleThreadIdsOnReplace=new Set(Object.values(this._state.baseValue.threadData).filter(e=>e.status!==`new`).map(e=>e.id)),this._state.update({...this._state.baseValue,cursor:void 0,loadError:void 0}),this._titleStates.clear()),n&&this._switchToThreadFromProp(e.threadId).catch(()=>{})}_requireAdapterGeneration(e){if(e!==this._adapterGeneration)throw new Aj}_requireAdapterSettled(){if(this._replaceListOnNextLoad)throw new Aj}_replaceWithThreads(e,t,n){let r=[];if(e.newThreadId){let t=Object.hasOwn(e.threadIdMap,e.newThreadId)?e.threadIdMap[e.newThreadId]:void 0,n=t&&Object.hasOwn(e.threadData,t)?e.threadData[t]:void 0;n?.status===`new`&&r.push(n)}let i=this._staleThreadIdsOnReplace;if(i)for(let t of Object.values(e.threadData))i.has(t.id)||(t.status===`new`||t.remoteId!==void 0)&&r.push(t);this._staleThreadIdsOnReplace=void 0;let a={threadIds:[],archivedThreadIds:[],threadIdMap:ex(),threadData:ex()};for(let e of r){let t=_j(e.id);Object.hasOwn(a.threadData,t)||(a.threadIdMap[e.id]=t,e.remoteId!==void 0&&(a.threadIdMap[e.remoteId]=t),a.threadData[t]=e)}let{threadIds:o,archivedThreadIds:s,threadIdMap:c,threadData:l}=bj(t,a);for(let e of r){if(e.remoteId===void 0)continue;let t=_j(e.id),n=Object.hasOwn(l,t)?l[t]:void 0;n!==void 0&&(n.status===`regular`&&!o.includes(n.id)?o.push(n.id):n.status===`archived`&&!s.includes(n.id)&&s.push(n.id))}let u={...e,isLoading:!1,cursor:n,threadIds:o,archivedThreadIds:s,threadIdMap:c,threadData:l,newThreadId:e.newThreadId!==void 0&&!Object.hasOwn(c,e.newThreadId)?void 0:e.newThreadId};if(Tj(u,this._mainThreadId)===void 0){let e=u.newThreadId;if(e!==void 0)this._mainThreadId=e;else{let e=Sj(u);this._mainThreadId=e.id,u=e.state}this._options.threadId===void 0?this._notifyThreadIdChange():this._lastNotifiedThreadId=void 0}let d=new Set(Object.values(u.threadData).map(e=>e.id));for(let t of Object.values(e.threadData))if(!d.has(t.id))try{this._hookManager.stopThreadRuntime(t.id)}catch(e){console.error(`[assistant-ui] Thread runtime cleanup threw while stopping a thread`,e)}return this._hookManager.startThreadRuntime(this._mainThreadId).then(()=>this._notifySubscribers(),()=>void 0),u}__internal_load(){if(this.getLoadThreadsPromise(),this._initialThreadLoaded)return;this._initialThreadLoaded=!0;let e=this._options.threadId??this._options.initialThreadId;e!==void 0&&(this._options.threadId===void 0?this.switchToThread(e):this._switchToThreadFromProp(e)).catch(()=>{})}async reloadMainThread(){let e=this._mainThreadId;if(e===void 0||this.getItemById(e)?.status===`new`)return;let t=this._hookManager.getThreadRuntimeCore(e);try{t?.unstable_refetchThread?await t.unstable_refetchThread():await this._hookManager.__internal_restartThreadRuntime(e)}catch(t){if(e!==this._mainThreadId)return;throw t}e===this._mainThreadId&&this._notifySubscribers()}reload(){return this._loadGeneration++,this._loadThreadsPromise=void 0,this._loadMorePromise=void 0,this._state.update({...this._state.baseValue,cursor:void 0}),this.getLoadThreadsPromise()}get isLoading(){return this._state.value.isLoading}get loadError(){return this._state.value.loadError}get isLoadingMore(){return this._state.value.isLoadingMore}get hasMore(){return this._state.value.cursor!==void 0}get threadIds(){return this._state.value.threadIds}get archivedThreadIds(){return this._state.value.archivedThreadIds}get newThreadId(){return this._state.value.newThreadId}get mainThreadId(){return this._mainThreadId}get _mainThreadRemoteId(){if(this._mainThreadId!==void 0)return Tj(this._state.value,this._mainThreadId)?.remoteId}_lastNotifiedThreadId=void 0;_notifyThreadIdChange(e=!0){let t=this._mainThreadRemoteId;this._lastNotifiedThreadId!==t&&(this._lastNotifiedThreadId=t,e&&fj(`assistant-ui`,`onThreadIdChange`,this._options.onThreadIdChange,t))}getMainThreadRuntimeCore(){return this._hookManager.getThreadRuntimeCore(this._mainThreadId)||gj}getThreadRuntimeCore(e){let t=this.getItemById(e);if(!t)throw Vj(e,`getting its runtime`);let n=this._hookManager.getThreadRuntimeCore(t.id);if(!n)throw Error(`Runtime for thread "${e}" not found while getting its runtime.`);return n}unstable_isThreadRunning(e){let t=this.getItemById(e);return t?this._hookManager.__internal_isThreadRunning(t.id):!1}unstable_subscribeThreadEvents(e){return this._hookManager.__internal_subscribeThreadEvents(e)}getItemById(e){return Tj(this._state.value,e)}switchToThread(e,t){return this._startSwitchToThread(e,t,!0)}_startSwitchToThread(e,t,n){let r=++this._switchGeneration,i=this._switchToThread(e,t,r,n);return this._switchTask=i,i}async _switchToThread(e,t,n,r){if(this._replaceListOnNextLoad&&e!==this._state.value.newThreadId)throw new Aj;let i=this.getItemById(e);if(!i){let t=await this._options.adapter.fetch(e);if(n!==this._switchGeneration)return;let r=this._state.value,a=_j(t.remoteId),o={...r.threadData,[a]:{id:a,initializeTask:Promise.resolve({remoteId:t.remoteId,externalId:t.externalId}),remoteId:t.remoteId,externalId:t.externalId,status:t.status,title:t.title,lastMessageAt:t.lastMessageAt,custom:t.custom}},s={...r.threadIdMap,[t.remoteId]:a},c=t.remoteId,l=t.status===`regular`?r.threadIds.includes(c):r.archivedThreadIds.includes(c),u=r.threadIds.filter(e=>e!==c),d=r.archivedThreadIds.filter(e=>e!==c),f=t.status===`regular`?l?r.threadIds:[...u,c]:u,p=t.status===`archived`?l?r.archivedThreadIds:[...d,c]:d;this._state.update({...r,threadIds:f,archivedThreadIds:p,threadIdMap:s,threadData:o}),i=this.getItemById(e)}if(!i)throw Vj(e,`switching to it`);if(this._mainThreadId===i.id)return;let a=this._hookManager.startThreadRuntime(i.id);if(this.mainThreadId===void 0?a.then(()=>this._notifySubscribers(),()=>void 0):await a,n!==this._switchGeneration)return;let o=this.getItemById(i.id);o?.id===i.id&&(o.status===`archived`&&t?.unarchive!==!1&&(await o.initializeTask,n!==this._switchGeneration||(o=this.getItemById(i.id),o?.id!==i.id)||o.status===`archived`&&(await this.unarchive(o.id),n!==this._switchGeneration||(o=this.getItemById(i.id),o?.id!==i.id)))||(this._mainThreadId=o.id,this._notifySubscribers(),this._notifyThreadIdChange(r)))}switchToNewThread(){return this._startSwitchToNewThread(!0)}_switchToThreadFromProp(e){return e===void 0?nO(`create`,()=>this._startSwitchToNewThread(!1)):nO(`switch`,()=>this._startSwitchToThread(e,void 0,!1))}_startSwitchToNewThread(e){let t=++this._switchGeneration,n=this._switchToNewThread(t,e);return this._switchTask=n,n}async _switchToNewThread(e,t){for(;this._state.baseValue.newThreadId!==void 0&&this._state.value.newThreadId===void 0;)if(await this._state.waitForUpdate(),e!==this._switchGeneration)return;let n=this._state.baseValue,r=this._state.value.newThreadId;if(r===void 0){let e=Sj(n);r=e.id,this._state.update(e.state)}return this._switchToThread(r,void 0,e,t)}initialize=async e=>{let t=this._options.adapter,n=this._adapterGeneration;if(this._state.value.newThreadId!==e){this._requireAdapterSettled();let t=this.getItemById(e);if(!t)throw Vj(e,`initializing it`);if(t.status===`new`)throw Hj(e,t.status,`be initialized here`);let{remoteId:r,externalId:i}=await t.initializeTask;return this._requireAdapterGeneration(n),{remoteId:r,externalId:i}}this._requireAdapterGeneration(n);let r=t.initialize(e),i,{remoteId:a,externalId:o}=await this._state.optimisticUpdate({execute:()=>r,optimistic:t=>kj(t,e,r),then:(t,{remoteId:r,externalId:a})=>{if(n!==this._adapterGeneration)return t;let o=Ej(t,e,r,a,e);return i=o.removedMappingId,i===this._mainThreadId&&(this._mainThreadId=o.survivorMappingId),o.state}});return this._requireAdapterGeneration(n),i!==void 0&&this._hookManager.stopThreadRuntime(i),{remoteId:a,externalId:o}};generateTitle=async(e,t)=>{this._requireAdapterSettled();let n=this._options.adapter,r=this._adapterGeneration,i=this.getItemById(e);if(!i)throw Vj(e,`generating its title`);if(i.status===`new`)throw Hj(e,i.status,`generate a title`);let{remoteId:a}=await i.initializeTask;this._requireAdapterGeneration(r);let o=this._hookManager.getThreadRuntimeCore(i.id);if(!o)return;let s=o.messages.filter(ij);await Bj({states:this._titleStates,threadId:i.id,automatic:t?.automatic===!0,generate:async e=>{let t=await n.generateTitle(a,s);this._requireAdapterGeneration(r),await aj(t,e)},rename:async e=>{this._requireAdapterGeneration(r),await n.rename(a,e)},applyTitle:async e=>{await this._state.optimisticUpdate({execute:async()=>{},optimistic:t=>{if(r!==this._adapterGeneration)return t;let n=Tj(t,i.id);return n?{...t,threadData:{...t.threadData,[n.id]:{...n,title:e}}}:t}})}})};async rename(e,t){this._requireAdapterSettled();let n=this._options.adapter,r=this._adapterGeneration,i=this.getItemById(e);if(!i)throw Vj(e,`renaming it`);if(i.status===`new`)throw Hj(e,i.status,`be renamed`);let a=Fj(this._titleStates,i.id,t);try{let o=await this._state.optimisticUpdate({execute:async()=>{let{remoteId:e}=await i.initializeTask;return this._requireAdapterGeneration(r),n.rename(e,t)},optimistic:n=>{let r=Tj(n,e);return r?{...n,threadData:{...n.threadData,[r.id]:{...r,title:t}}}:n}});return Ij(this._titleStates,i.id,a,!0),o}catch(e){throw Ij(this._titleStates,i.id,a,!1),e}}async updateCustom(e,t){this._requireAdapterSettled();let n=this._options.adapter,r=this._adapterGeneration,i=this.getItemById(e);if(!i)throw Vj(e,`updating its custom metadata`);if(i.status===`new`)throw Hj(e,i.status,`update custom metadata`);if(!n.updateCustom)throw Error(`Remote thread list adapter does not support updating custom metadata`);return this._state.optimisticUpdate({execute:async()=>{let{remoteId:e}=await i.initializeTask;if(this._requireAdapterGeneration(r),!n.updateCustom)throw Error(`Remote thread list adapter does not support updating custom metadata`);return n.updateCustom(e,t)},optimistic:n=>{let r=Tj(n,e);return r?{...n,threadData:{...n.threadData,[r.id]:{...r,custom:t}}}:n}})}async _ensureThreadIsNotMain(e){if(e===this.newThreadId)throw Error(`Cannot ensure new thread is not main`);let t;for(;e===this._mainThreadId;){if(e===this.newThreadId)throw Error(`Cannot ensure new thread is not main`);let n=this._switchTask,r=!n||n===t;r&&(n=this.switchToNewThread()),t=n;try{await n}catch(e){if(r&&this._switchTask===n)throw e}}}async archive(e){this._requireAdapterSettled();let t=this._options.adapter,n=this._adapterGeneration,r=this.getItemById(e);if(!r)throw Vj(e,`archiving it`);if(r.status!==`regular`)throw Hj(e,r.status,`be archived`);return await this._ensureThreadIsNotMain(r.id),this._requireAdapterGeneration(n),this._state.optimisticUpdate({execute:async()=>{let{remoteId:e}=await r.initializeTask;return this._requireAdapterGeneration(n),t.archive(e)},optimistic:e=>Oj(e,r.id,`archived`)})}async unarchive(e){this._requireAdapterSettled();let t=this._options.adapter,n=this._adapterGeneration,r=this.getItemById(e);if(!r)throw Vj(e,`unarchiving it`);if(r.status!==`archived`)throw Hj(e,r.status,`be unarchived`);return this._state.optimisticUpdate({execute:async()=>{try{let{remoteId:e}=await r.initializeTask;return this._requireAdapterGeneration(n),await t.unarchive(e)}catch(e){throw n===this._adapterGeneration&&await this._ensureThreadIsNotMain(r.id),e}},optimistic:e=>Oj(e,r.id,`regular`)})}async delete(e){this._requireAdapterSettled();let t=this._options.adapter,n=this._adapterGeneration,r=this.getItemById(e);if(!r)throw Vj(e,`deleting it`);if(r.status!==`regular`&&r.status!==`archived`)throw Hj(e,r.status,`be deleted`);await this._ensureThreadIsNotMain(r.id),this._requireAdapterGeneration(n);let i=await this._state.optimisticUpdate({execute:async()=>{let{remoteId:e}=await r.initializeTask;return this._requireAdapterGeneration(n),await t.delete(e)},optimistic:e=>Oj(e,r.id,`deleted`)});return this._hookManager.stopThreadRuntime(r.id),Rj(this._titleStates,r.id),i}__internal_dispose(){this._hookManager.__internal_dispose()}async detach(e){let t=this._adapterGeneration,n=this.getItemById(e);if(!n)throw Vj(e,`detaching it`);if(n.status!==`regular`&&n.status!==`archived`)throw Hj(e,n.status,`be detached`);await this._ensureThreadIsNotMain(n.id),this._requireAdapterGeneration(t),this._hookManager.stopThreadRuntime(n.id)}boundIdsStore=new TT([]);__internal_RenderComponent=()=>{let e=dS();aS(()=>(this.boundIdsStore.setState([...this.boundIdsStore.getState(),e]),()=>{this.boundIdsStore.setState(this.boundIdsStore.getState().filter(t=>t!==e))}),[e]);let t=JT(this.boundIdsStore),n=JT(this.providerStore),r=cT();return(t.length===0||t[0]===e)&&(0,q.jsxs)(bO,{adapters:this._runtimeAdapters,children:[(0,q.jsx)(this._hookManager.__internal_RenderThreadRuntimes,{provider:n}),(0,q.jsx)(this._hookManager.__internal_Host,{parentClient:r})]})}},Gj=class extends FA{threads;constructor(e){super(),this.threads=new Wj(e,this._contextProvider)}get RenderComponent(){return this.threads.__internal_RenderComponent}},Kj=e=>{let[t]=eS(()=>new Gj(e)),[n]=eS(()=>({generation:0}));uS(()=>{let e=++n.generation;return()=>queueMicrotask(()=>{n.generation===e&&t.threads.__internal_dispose()})},[t,n]),aS(()=>{t.threads.__internal_setOptions(e),t.threads.__internal_load()},[t,e]),aS(()=>{if(typeof window>`u`||typeof document>`u`)return;let e=()=>{t.threads.loadError!==void 0&&t.threads.reload()},n=()=>{document.visibilityState===`visible`&&e()};return window.addEventListener(`online`,e),document.addEventListener(`visibilitychange`,n),()=>{window.removeEventListener(`online`,e),document.removeEventListener(`visibilitychange`,n)}},[t]);let[r]=eS(()=>new PA(t));return r},qj=e=>{let[t]=eS(()=>new TT(e.runtimeHook));oS(()=>{t.setState(e.runtimeHook)},[t,e.runtimeHook]);let n=nS(e.initialThreadId),[r]=eS(()=>function(){return JT({subscribe:t.subscribe,getState:t.getState,getServerSnapshot:t.getState})()}),i=sS(t=>e.onThreadIdChange?.(t)),a=rS(()=>({adapter:e.adapter,allowNesting:e.allowNesting,threadId:e.threadId,initialThreadId:n.current,runtimeHook:r,onThreadIdChange:i}),[e.adapter,e.allowNesting,e.threadId,r]);if(cT().threadListItem.source!==null){if(!a.allowNesting)throw Error(`useRemoteThreadListRuntime cannot be nested inside another RemoteThreadListRuntime. Set allowNesting: true to allow nesting (the inner runtime will become a no-op).`);return e.runtimeHook()}return Kj(a)},Jj=e=>{let t=e.type;switch(t){case`text`:return{type:`text`,text:e.text,...e.providerMetadata===void 0?void 0:{providerMetadata:e.providerMetadata},...e.parentId===void 0?void 0:{parentId:e.parentId}};case`image`:return{type:`image`,image:e.image,...e.filename==null?void 0:{filename:e.filename},...e.providerMetadata===void 0?void 0:{providerMetadata:e.providerMetadata}};case`file`:return{type:`file`,data:e.data,mimeType:e.mimeType,...e.filename==null?void 0:{filename:e.filename},...e.sourceType==null?void 0:{sourceType:e.sourceType},...e.providerMetadata==null?void 0:{providerMetadata:e.providerMetadata},...e.parentId===void 0?void 0:{parentId:e.parentId}};case`audio`:return{type:`audio`,audio:{data:e.audio.data,format:e.audio.format}};case`data`:return SO(e.data)||console.warn(`attachment data is not JSON! ${JSON.stringify(e)}`),{type:`data`,name:e.name,data:e.data};default:throw Error(`Attachment part type not supported by aui/v0: ${t}`)}},Yj=e=>{if(e.role===`user`&&e.attachments.length!==0)return e.attachments.map(({id:e,type:t,name:n,contentType:r,status:i,content:a})=>({id:e,type:t,name:n,status:i,...r==null?void 0:{contentType:r},content:a.map(Jj)}))},Xj=e=>{if(e!==void 0)try{let t=JSON.stringify(e);return t===void 0?void 0:JSON.parse(t)}catch{return}},Zj=(e,t=0)=>{if(t>100||e===void 0||typeof e==`function`)return!1;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||!e||typeof e.toJSON==`function`)return!0;if((e instanceof Map||e instanceof Set)&&e.size>0)return!1;if(Array.isArray(e)){if(Reflect.ownKeys(e).length!==e.length+1)return!1;for(let n=0;n<e.length;n++)if(!Object.hasOwn(e,n)||!Zj(e[n],t+1))return!1;return!0}return Reflect.ownKeys(e).every(n=>typeof n==`string`&&Object.getOwnPropertyDescriptor(e,n)?.enumerable===!0&&Zj(e[n],t+1))},Qj=e=>{try{return!Zj(e)}catch{return!0}};function $j(e){let t=e.status?.type===`running`?{type:`incomplete`,reason:`cancelled`}:e.status,n=Yj(e);return{role:e.role,content:e.content.map(e=>{let t=e.type;switch(t){case`text`:return{type:`text`,text:e.text,...e.providerMetadata===void 0?void 0:{providerMetadata:e.providerMetadata},...e.parentId===void 0?void 0:{parentId:e.parentId}};case`reasoning`:return{type:`reasoning`,text:e.text,...e.unstable_summary===void 0?void 0:{unstable_summary:e.unstable_summary},...e.providerMetadata===void 0?void 0:{providerMetadata:e.providerMetadata},...e.parentId===void 0?void 0:{parentId:e.parentId}};case`source`:return e.sourceType===`url`?{type:`source`,sourceType:`url`,id:e.id,url:e.url,...e.title==null?void 0:{title:e.title},...e.providerMetadata==null?void 0:{providerMetadata:e.providerMetadata},...e.parentId===void 0?void 0:{parentId:e.parentId}}:{type:`source`,sourceType:`document`,id:e.id,title:e.title,mediaType:e.mediaType,...e.filename==null?void 0:{filename:e.filename},...e.providerMetadata==null?void 0:{providerMetadata:e.providerMetadata},...e.parentId===void 0?void 0:{parentId:e.parentId}};case`tool-call`:{let t=Xj(e.result);e.result!==void 0&&(t===void 0||Qj(e.result))&&console.warn(t===void 0?`tool-call result for ${e.toolCallId} cannot be serialized as JSON; omitted`:`tool-call result for ${e.toolCallId} loses data in JSON; persisted as its JSON form`);let n=Xj(e.artifact);e.artifact!==void 0&&n===void 0&&console.warn(`tool-call artifact is not JSON for ${e.toolCallId}`);let r=nD(e.unstable_interactions);return{type:`tool-call`,toolCallId:e.toolCallId,toolName:e.toolName,...JSON.stringify(e.args)===e.argsText?{args:e.args}:{argsText:e.argsText},...t===void 0?void 0:{result:t},...n===void 0?void 0:{artifact:n},...e.modelContent===void 0?void 0:{modelContent:e.modelContent},...e.providerMetadata===void 0?void 0:{providerMetadata:e.providerMetadata},...e.isPreliminary?{isPreliminary:!0}:void 0,...e.isError?{isError:!0}:void 0,...e.interrupt===void 0?void 0:{interrupt:{type:e.interrupt.type,payload:e.interrupt.payload}},...e.timing===void 0?void 0:{timing:e.timing},...e.mcp===void 0?void 0:{mcp:e.mcp},...e.approval?{approval:e.approval}:void 0,...e.parentId===void 0?void 0:{parentId:e.parentId},...e.messages===void 0?void 0:{messages:e.messages.map(iM)},...r===void 0?void 0:{unstable_interactions:r}}}case`image`:return{type:`image`,image:e.image,...e.filename==null?void 0:{filename:e.filename},...e.providerMetadata==null?void 0:{providerMetadata:e.providerMetadata}};case`file`:return{type:`file`,data:e.data,mimeType:e.mimeType,...e.filename==null?void 0:{filename:e.filename},...e.sourceType?{sourceType:e.sourceType}:void 0,...e.providerMetadata==null?void 0:{providerMetadata:e.providerMetadata},...e.parentId===void 0?void 0:{parentId:e.parentId}};case`data`:return SO(e.data)||console.warn(`data part is not JSON! ${JSON.stringify(e)}`),{type:`data`,name:e.name,data:e.data};case`audio`:return{type:`audio`,audio:{data:e.audio.data,format:e.audio.format}};case`generative-ui`:return{type:`generative-ui`,spec:e.spec,...e.id===void 0?void 0:{id:e.id},...e.parentId===void 0?void 0:{parentId:e.parentId}};default:throw Error(`Message part type not supported by aui/v0: ${t}`)}}),metadata:e.metadata,...t?{status:t}:void 0,...n?{attachments:n}:void 0}}var eM=(e,t,n)=>t.flatMap(t=>{if(!MO(e,t))return[];if(t.type!==`tool-call`||t.messages===void 0)return[t];let{messages:r,...i}=t;return!Array.isArray(r)||n>=100?[i]:[{...i,messages:r.flatMap(e=>{let t=nM(e,n+1);return t?[t]:[]})}]}),tM=e=>e.flatMap(e=>{let t=NO(e,e=>MO(`user`,e));return t?[t]:[]}),nM=(e,t)=>{if(!xO(e)||!wO(e.role)||!Array.isArray(e.content))return null;let{role:n}=e,r=eM(n,e.content,t);if(n===`system`&&r.length!==1)return null;let{attachments:i,createdAt:a,status:o,metadata:s,...c}=e,l=CO(a),u=xO(s)?n===`assistant`?{...s,steps:OO(s.steps)}:{...s,steps:void 0}:s;return{...c,...l?{createdAt:a}:void 0,...n===`assistant`&&EO(o)?{status:o}:void 0,...s===void 0?void 0:{metadata:u},content:r,...n===`user`&&Array.isArray(i)?{attachments:tM(i)}:void 0}};function rM(e){try{let t=nM(e.content,0);if(!t)throw Error(`stored row is not an aui/v0 message`);return{parentId:e.parent_id,message:aM({...t,id:e.id,createdAt:e.created_at},e.id)}}catch(t){return console.warn(`aui/v0: dropping unreadable message ${e.id}`,t),null}}var iM=e=>({...$j(e),id:e.id,createdAt:e.createdAt.toISOString()}),aM=(e,t)=>PD({...e,content:e.content.map((n,r)=>n.type!==`tool-call`||n.messages===void 0?n:{...n,messages:n.messages.map((i,a)=>aM({...i,createdAt:i.createdAt===void 0?e.createdAt:new Date(i.createdAt)},i.id??`${t}-${n.toolCallId}-${r}-${a}`))})},t,{type:`complete`,reason:`unknown`}),oM=class extends Error{constructor(e){super(e),this.name=`CloudResponseError`}},sM=(e,t)=>new oM(`Invalid Assistant Cloud response for "${e}": expected ${t}`),cM=(e,t)=>{if(typeof e!=`object`||!e||Array.isArray(e))throw sM(t,`an object`);return e},lM=(e,t)=>{if(!Array.isArray(e))throw sM(t,`an array`);return e},uM=(e,t)=>{if(typeof e!=`string`)throw sM(t,`a string`);return e},dM=(e,t)=>{if(typeof e!=`number`||!Number.isFinite(e))throw sM(t,`a number`);return e},fM=(e,t)=>e===null?null:dM(e,t),pM=(e,t,n)=>{let r=uM(e,t);if(!n.includes(r))throw sM(t,`one of ${n.map(e=>`"${e}"`).join(`, `)}`);return r},mM=(e,t)=>e===null?null:uM(e,t),hM=(e,t)=>{if(typeof e!=`boolean`)throw sM(t,`a boolean`);return e},gM=(e,t)=>{if(!Number.isInteger(e))throw sM(t,`an integer`);return e},_M=(e,t)=>{if(typeof e!=`string`)throw sM(t,`a canonical ISO timestamp`);let n=new Date(e);if(Number.isNaN(n.getTime())||n.toISOString()!==e)throw sM(t,`a canonical ISO timestamp`);return n},vM=(e,t)=>cM(e,t),yM=3e4,bM=async(e,t)=>{let n=new AbortController,r=!1,i=setTimeout(()=>{r=!0,n.abort()},yM);try{return await t(n.signal)}catch(t){throw r?Error(`Assistant Cloud ${e} timed out after ${yM}ms`,{cause:t}):t}finally{clearTimeout(i)}},xM=e=>{try{let t=e.split(`.`)[1];if(!t)throw Error(`Invalid JWT format`);let n=t.replace(/-/g,`+`).replace(/_/g,`/`);for(;n.length%4!=0;)n+=`=`;let r=atob(n),i=JSON.parse(r).exp;if(!i||typeof i!=`number`)throw Error(`JWT does not contain a valid "exp" field`);return i*1e3}catch(e){throw Error(`Unable to determine the token expiry: ${e}`)}},SM=(e,t)=>{let n=uM(e,t);if(n.length===0)throw new oM(`Invalid Assistant Cloud response for "${t}": expected a non-empty string`);return n},CM=(e,t)=>{let n=cM(e,t);return{token:SM(n.token,`${t}.token`),expires_at:SM(n.expires_at,`${t}.expires_at`)}},wM=async(e,t)=>{let n;try{n=await e.json()}catch{throw new oM(`Invalid Assistant Cloud response for "${t}": expected valid JSON`)}let r=cM(n,t);return{data:r,accessToken:SM(r.access_token,`${t}.access_token`)}},TM=class{strategy=`jwt`;cachedToken=null;tokenExpiry=null;tokenRequest=null;#e;constructor(e){this.#e=e}async getAuthHeaders(){let e=Date.now();if(this.cachedToken&&this.tokenExpiry&&this.tokenExpiry-e>3e4)return{Authorization:`Bearer ${this.cachedToken}`};this.tokenRequest||=this.fetchAuthHeaders();let t=this.tokenRequest;try{return await t}finally{this.tokenRequest===t&&(this.tokenRequest=null)}}async fetchAuthHeaders(){let e=await this.#e();if(!e)return!1;let t=xM(e);return this.cachedToken=e,this.tokenExpiry=t,{Authorization:`Bearer ${e}`}}readAuthHeaders(e){let t=e.get(`Authorization`);if(!t)return;let[n,r]=t.split(` `);if(n!==`Bearer`||!r)throw Error(`Invalid auth header received`);let i=xM(r);this.cachedToken=r,this.tokenExpiry=i}},EM=class{strategy=`api-key`;#e;#t;#n;constructor(e,t,n){this.#e=e,this.#t=t,this.#n=n}async getAuthHeaders(){return{Authorization:`Bearer ${this.#e}`,"Aui-User-Id":this.#t,"Aui-Workspace-Id":this.#n}}readAuthHeaders(){}},DM=`aui:refresh_token`,OM=e=>`${DM}:${e}`,kM=e=>{try{e.removeItem(DM)}catch{}},AM=()=>{if(!(`localStorage`in globalThis))return null;try{return globalThis.localStorage}catch{return null}},jM=e=>{let t=AM();if(t)try{let n=OM(e),r=t.getItem(n);if(r)return kM(t),JSON.parse(r);let i=t.getItem(DM);if(!i)return;let a;try{a=JSON.parse(i)}catch{kM(t);return}return t.setItem(n,i),kM(t),a}catch{return}},MM=e=>!e||!e.endsWith(`/`)?e:e.slice(0,-1),NM=(e,t)=>{let n=AM();if(n)try{n.setItem(OM(e),JSON.stringify(t))}catch{}},PM=e=>{let t=AM();if(t)try{t.removeItem(OM(e))}catch{}},FM=new WeakMap,IM=()=>`navigator`in globalThis?globalThis.navigator?.locks??null:null,LM=e=>`assistant-cloud:anonymous-auth:${e}`,RM=(e,t)=>{let n=AM();if(!n)return t();let r=FM.get(n);r||(r=new Map,FM.set(n,r));let i=r.get(e);if(i)return i;let a=IM(),o=(a?a.request(LM(e),t):t()).finally(()=>{r.get(e)===o&&r.delete(e)});return r.set(e,o),o},zM=class{strategy=`anon`;baseUrl;jwtStrategy;constructor(e){this.baseUrl=e;let t=async()=>{let e=Date.now(),t=jM(this.baseUrl);if(t){if(new Date(t.expires_at).getTime()-e>3e4){let e=await bM(`refresh token request`,async e=>{let n=await fetch(`${this.baseUrl}/v1/auth/tokens/refresh`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({refresh_token:t.token}),signal:e});if(n.ok){let{data:e,accessToken:t}=await wM(n,`refresh auth token response`);return e.refresh_token!=null&&NM(this.baseUrl,CM(e.refresh_token,`refresh auth token response.refresh_token`)),t}if(n.status===429||n.status>=500)throw Error(`Assistant Cloud token refresh failed with status ${n.status}`);return null});if(e!==null)return e}else PM(this.baseUrl)}return bM(`anonymous token request`,async e=>{let t=await fetch(`${this.baseUrl}/v1/auth/tokens/anonymous`,{method:`POST`,signal:e});if(!t.ok)return null;let{data:n,accessToken:r}=await wM(t,`anonymous auth token response`);return NM(this.baseUrl,CM(n.refresh_token,`anonymous auth token response.refresh_token`)),r})};this.jwtStrategy=new TM(()=>RM(this.baseUrl,t))}async getAuthHeaders(){return this.jwtStrategy.getAuthHeaders()}readAuthHeaders(e){this.jwtStrategy.readAuthHeaders(e)}},BM=`0.2.4`,VM=class extends Error{status;code;details;constructor(e,t,n,r){super(e),this.status=t,n!==void 0&&(this.code=n),r!==void 0&&(this.details=r),this.name=`CloudAPIError`}},HM=/^[\x21-\x7e]+$/,UM=class{_auth;_baseUrl;registerSdk;sdkHeader;constructor(e){let t=new Map;if(this.registerSdk=e=>{let n=e.name.trim(),r=e.version.trim();!HM.test(n)||!HM.test(r)||t.set(`${n}/${r}`,{name:n,version:r})},this.sdkHeader=()=>[`assistant-cloud/${BM}`,...Array.from(t.values(),({name:e,version:t})=>`${e}/${t}`)].join(` `),`authToken`in e)this._baseUrl=MM(e.baseUrl),this._auth=new TM(e.authToken);else if(`apiKey`in e)this._baseUrl=MM(e.baseUrl??`https://backend.assistant-api.com`),this._auth=new EM(e.apiKey,e.userId,e.workspaceId);else if(`anonymous`in e)this._baseUrl=MM(e.baseUrl),this._auth=new zM(this._baseUrl);else throw Error(`Invalid configuration: Must provide authToken, apiKey, or anonymous configuration`)}async initializeAuth(){return!!await this._auth.getAuthHeaders()}async makeRawRequest(e,t={}){let n=await this._auth.getAuthHeaders();if(!n)throw Error(`Authorization failed`);let r={...n,...t.headers,"Content-Type":`application/json`,"Aui-Sdk":this.sdkHeader()},i=new URLSearchParams;if(t.query)for(let[e,n]of Object.entries(t.query))n!==!1&&(n===!0?i.set(e,`true`):i.set(e,n.toString()));let a=new URL(`${this._baseUrl}/v1${e}`);a.search=i.toString();let o=await fetch(a,{method:t.method??`GET`,headers:r,body:t.body?JSON.stringify(t.body):null,...t.keepalive?{keepalive:!0}:{}});if(this._auth.readAuthHeaders(o.headers),!o.ok){let e=await o.text(),t,n,r;try{let i=JSON.parse(e);if(typeof i==`object`&&i&&!Array.isArray(i)){let e=i;typeof e.message==`string`&&e.message.length>0&&(t=e.message),typeof e.error==`string`&&(n=e.error,r={...e},delete r.error)}}catch{}throw new VM(t??`Request failed with status ${o.status}, ${e}`,o.status,n,r)}return o}async makeRequest(e,t={}){let n=await this.makeRawRequest(e,t);if(n.status===204||n.headers.get(`content-length`)===`0`)return;let r=await n.text();if(r.trim()!==``)return JSON.parse(r)}},WM=20,GM=50,KM=2e3,qM=[250,1e3],JM=new WeakMap,YM=e=>{JM.get(e)?.()},XM=class{buffer=[];timer;flushing;retryTimer;resolveRetryDelay;bestEffortRequested=!1;generation=0;cloud;isEnabled;listening=!1;constructor(e,t){this.cloud=e,this.isEnabled=t,JM.set(this,()=>this.clearPending())}track(e){if(this.isEnabled()){if(this.listen(),this.buffer.push(ZM(e)),this.buffer.length>=WM){this.flush(!0);return}this.scheduleFlush()}}listen(){this.listening||typeof window>`u`||typeof document>`u`||(this.listening=!0,window.addEventListener(`pagehide`,this.flushBestEffort),document.addEventListener(`visibilitychange`,this.onVisibilityChange))}unlisten(){this.listening&&(this.listening=!1,window.removeEventListener(`pagehide`,this.flushBestEffort),document.removeEventListener(`visibilitychange`,this.onVisibilityChange))}dispose(){this.unlisten(),this.clearFlushTimer(),this.flushBestEffort()}clearPending(){this.generation++,this.buffer=[],this.clearFlushTimer(),this.interruptRetryDelay(),this.unlisten()}onVisibilityChange=()=>{document.visibilityState===`hidden`&&this.flushBestEffort()};flushBestEffort=()=>(this.flushing&&(this.bestEffortRequested=!0,this.interruptRetryDelay()),this.flush(!1));flush=async e=>{if(!this.isEnabled()){this.clearPending();return}if(this.flushing)return this.flushing;this.clearFlushTimer();let t=this.flushPending(e);return this.flushing=t,t.then(()=>{this.flushing===t&&(this.flushing=void 0,this.bestEffortRequested=!1,this.buffer.length===0?(this.clearFlushTimer(),this.unlisten()):this.flush(!0))}),t};async flushPending(e){for(;this.buffer.length>0;){if(!this.isEnabled()){this.buffer=[];return}let t=this.buffer.splice(0,GM),n=this.generation;for(let r=0;;r++)try{if(await this.cloud.makeRequest(`/events`,{method:`POST`,body:{events:t},keepalive:!0}),n!==this.generation)return;break}catch{if(n!==this.generation)return;let t=e&&!this.bestEffortRequested?qM[r]:void 0;if(t===void 0)break;if(await this.waitForRetry(t),n!==this.generation)return;if(!this.isEnabled())return this.clearPending();if(this.bestEffortRequested)break}}}waitForRetry(e){return new Promise(t=>{let n=()=>{this.retryTimer=void 0,this.resolveRetryDelay=void 0,t()};this.resolveRetryDelay=n,this.retryTimer=setTimeout(n,e)})}interruptRetryDelay(){this.retryTimer!==void 0&&clearTimeout(this.retryTimer),this.resolveRetryDelay?.()}scheduleFlush(){this.timer===void 0&&(this.timer=setTimeout(()=>{this.timer=void 0,this.flush(!0)},KM))}clearFlushTimer(){this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0)}},ZM=e=>{let t=eN(e.props);return{kind:e.kind,...QM(e.thread_id)?{thread_id:e.thread_id}:{},...QM(e.message_id)?{message_id:e.message_id}:{},...QM(e.run_id)?{run_id:e.run_id}:{},...$M(e.value)?{value:e.value}:{},...t?{props:t}:{}}},QM=e=>e&&e.length<=48?e:void 0,$M=e=>e!==void 0&&Number.isInteger(e)&&e>=0,eN=e=>{if(!e)return;let t=Object.entries(e);if(t.some(([,e])=>typeof e==`string`&&e.length>256||typeof e==`number`&&!Number.isFinite(e)||typeof e!=`string`&&typeof e!=`number`&&typeof e!=`boolean`))return;let n=Object.fromEntries(t);return new TextEncoder().encode(JSON.stringify(n)).byteLength<=1024?n:void 0},tN=[`numeric`,`categorical`,`boolean`],nN=class{cloud;constructor(e){this.cloud=e}async create(e){let t=cM(await this.cloud.makeRequest(`/scores`,{method:`POST`,body:e}),`score response`);return{score_id:uM(t.score_id,`score response.score_id`),name:uM(t.name,`score response.name`),data_type:pM(t.data_type,`score response.data_type`,tN),value:fM(t.value,`score response.value`),string_value:mM(t.string_value,`score response.string_value`)}}},rN=class{cloud;constructor(e){this.cloud=e}async create(){return{token:uM(cM(await this.cloud.makeRequest(`/auth/tokens`,{method:`POST`}),`auth token response`).token,`token`)}}},iN=[`positive`,`negative`],aN=(e,t)=>{let n=cM(e,t);return{id:uM(n.id,`${t}.id`),parent_id:mM(n.parent_id,`${t}.parent_id`),height:gM(n.height,`${t}.height`),created_at:_M(n.created_at,`${t}.created_at`),updated_at:_M(n.updated_at,`${t}.updated_at`),format:uM(n.format,`${t}.format`),content:vM(n.content,`${t}.content`),external_id:mM(n.external_id??null,`${t}.external_id`)}},oN=class{cloud;constructor(e){this.cloud=e}async list(e,t){return{messages:lM(cM(await this.cloud.makeRequest(`/threads/${encodeURIComponent(e)}/messages`,{query:t}),`thread message list response`).messages,`messages`).map((e,t)=>aN(e,`messages[${t}]`))}}async create(e,t){return{message_id:uM(cM(await this.cloud.makeRequest(`/threads/${encodeURIComponent(e)}/messages`,{method:`POST`,body:{parent_id:t.parent_id,format:t.format,content:t.content,...t.external_id===void 0?void 0:{external_id:t.external_id},...t.parent_external_id===void 0?void 0:{parent_external_id:t.parent_external_id}}}),`thread message create response`).message_id,`message_id`)}}async update(e,t,n){return this.cloud.makeRequest(`/threads/${encodeURIComponent(e)}/messages/${encodeURIComponent(t)}`,{method:`PUT`,body:n})}async feedback(e,t,n){let r=n.comment?.trim(),i=cM(await this.cloud.makeRequest(`/threads/${encodeURIComponent(e)}/messages/${encodeURIComponent(t)}/feedback`,{method:`POST`,body:{type:n.type,...r?{comment:r}:void 0}}),`thread message feedback response`);return{feedback_id:uM(i.feedback_id,`feedback_id`),type:pM(i.type,`type`,iN),...`comment`in i?{comment:mM(i.comment,`comment`)}:void 0}}},sN=(e,t)=>{let n=cM(e,t);return{title:mM(n.title,`${t}.title`)??``,last_message_at:_M(n.last_message_at,`${t}.last_message_at`),metadata:n.metadata,external_id:mM(n.external_id,`${t}.external_id`),id:uM(n.id,`${t}.id`),project_id:uM(n.project_id,`${t}.project_id`),created_at:_M(n.created_at,`${t}.created_at`),updated_at:_M(n.updated_at,`${t}.updated_at`),workspace_id:uM(n.workspace_id,`${t}.workspace_id`),is_archived:hM(n.is_archived,`${t}.is_archived`)}},cN=class{messages;cloud;constructor(e){this.cloud=e,this.messages=new oN(e)}async list(e){let t=e?.is_archived===void 0?e:{...e,is_archived:String(e.is_archived)};return{threads:lM(cM(await this.cloud.makeRequest(`/threads`,{query:t}),`thread list response`).threads,`threads`).map((e,t)=>sN(e,`threads[${t}]`))}}async get(e){return sN(cM(await this.cloud.makeRequest(`/threads/${encodeURIComponent(e)}`),`thread response`).thread,`thread`)}async create(e){return{thread_id:uM(cM(await this.cloud.makeRequest(`/threads`,{method:`POST`,body:e}),`thread create response`).thread_id,`thread_id`)}}async update(e,t){return this.cloud.makeRequest(`/threads/${encodeURIComponent(e)}`,{method:`PUT`,body:t})}async claim(e){return{moved:gM(cM(await this.cloud.makeRequest(`/threads/claim`,{method:`POST`,body:e}),`thread claim response`).moved,`moved`)}}async delete(e){return this.cloud.makeRequest(`/threads/${encodeURIComponent(e)}`,{method:`DELETE`})}},lN=class{cloud;constructor(e){this.cloud=e}async list(e,t){return{messages:lM(cM(await this.cloud.makeRequest(`/projects/threads/${encodeURIComponent(e)}/messages`,{query:t}),`project thread message list response`).messages,`messages`).map((e,t)=>aN(e,`messages[${t}]`))}}},uN=class{messages;cloud;constructor(e){this.cloud=e,this.messages=new lN(e)}async list(e){return{threads:lM(cM(await this.cloud.makeRequest(`/projects/threads`,{query:{...e,...e?.is_archived===void 0?{}:{is_archived:String(e.is_archived)}}}),`project thread list response`).threads,`threads`).map((e,t)=>sN(e,`threads[${t}]`))}}},dN=class{threads;constructor(e){this.threads=new uN(e)}},fN=class{cloud;constructor(e){this.cloud=e}__internal_getAssistantOptions(e){return{api:`${this.cloud._baseUrl}/v1/runs/stream`,protocol:`ui-message-stream`,headers:async()=>{let e=await this.cloud._auth.getAuthHeaders();if(!e)throw Error(`Authorization failed`);return{...e,Accept:`text/plain`,"Aui-Sdk":this.cloud.sdkHeader()}},body:async t=>{let n=t?.threadId;if(n===void 0)throw Error(`Assistant Cloud runs need a thread; the thread list adapter has not assigned a remote id to this thread yet.`);return{assistant_id:e,response_format:`vercel-ai-data-stream/v1`,thread_id:n}}}}async stream(e){let t=await this.cloud.makeRawRequest(`/runs/stream`,{method:`POST`,headers:{Accept:`text/plain`},body:e});if(!t.body)throw new oM(`Invalid Assistant Cloud response for "run stream": expected a response body`);let n=t.headers.get(`content-type`);if(n?.split(`;`,1)[0]?.trim().toLowerCase()!==`text/plain`)throw await t.body.cancel().catch(()=>void 0),new oM(`Invalid Assistant Cloud response for "run stream": expected a "text/plain" content type, received ${n?`"${n}"`:`no Content-Type header`}`);return PO.fromResponse(t,new lk)}async report(e){return{run_id:uM(cM(await this.cloud.makeRequest(`/runs`,{method:`POST`,body:e}),`run report response`).run_id,`run_id`)}}},pN=class{cloud;constructor(e){this.cloud=e}async pdfToImages(e){let t=cM(await this.cloud.makeRequest(`/files/pdf-to-images`,{method:`POST`,body:e}),`PDF conversion response`);return{success:hM(t.success,`PDF conversion response.success`),urls:lM(t.urls,`PDF conversion response.urls`).map((e,t)=>uM(e,`PDF conversion response.urls[${t}]`)),message:uM(t.message,`PDF conversion response.message`)}}async generatePresignedUploadUrl(e){let t=cM(await this.cloud.makeRequest(`/files/attachments/generate-presigned-upload-url`,{method:`POST`,body:e}),`presigned upload response`);return{success:hM(t.success,`presigned upload response.success`),signedUrl:uM(t.signedUrl,`presigned upload response.signedUrl`),expiresAt:uM(t.expiresAt,`presigned upload response.expiresAt`),publicUrl:uM(t.publicUrl,`presigned upload response.publicUrl`),...`key`in t?{key:uM(t.key,`presigned upload response.key`)}:{}}}async generatePresignedDownloadUrl(e){let t=cM(await this.cloud.makeRequest(`/files/attachments/generate-presigned-download-url`,{method:`POST`,body:e}),`presigned download response`);return{signedUrl:uM(t.signedUrl,`presigned download response.signedUrl`),expiresAt:uM(t.expiresAt,`presigned download response.expiresAt`),key:uM(t.key,`presigned download response.key`)}}},mN=class{threads;projects;auth;runs;files;events;scores;telemetry;registerSdk;constructor(e){let t=new UM(e);this.registerSdk=t.registerSdk;let n=e.telemetry,r=n===!1?{enabled:!1}:n===!0||n===void 0?{enabled:!0}:{...n,enabled:n.enabled!==!1};this.telemetry=new Proxy(r,{set:(e,t,n)=>{let r=Reflect.set(e,t,n);return(t===`enabled`||t===`events`)&&(e.enabled===!1||e.events===!1)&&YM(this.events),r}}),this.threads=new cN(t),this.projects=new dN(t),this.auth={tokens:new rN(t)},this.runs=new fN(t),this.files=new pN(t),this.events=new XM(t,()=>this.telemetry.enabled!==!1&&this.telemetry.events!==!1),this.scores=new nN(t)}},hN=256;function gN(e,t,n){e.delete(t),e.set(t,n),e.size>hN&&e.delete(e.keys().next().value)}function _N(e,t){e.delete(t),e.add(t),e.size>hN&&e.delete(e.values().next().value)}var vN=(e,t)=>({thread_id:e,...t===void 0?void 0:{message_id:t}}),yN=class{runStartedAt=new Map;runEndedAt=new Map;shownErrors=new Set;shownSuggestions=new Set;getCloud;resolveIds;constructor(e,t=vN){this.getCloud=typeof e==`function`?e:()=>e,this.resolveIds=t}runStarted(e){this.runStartedAt.set(e,Date.now()),this.shownErrors.delete(e)}runEnded(e){this.runStartedAt.delete(e),gN(this.runEndedAt,e,Date.now())}runStopped(e){let t=this.runStartedAt.get(e);if(t===void 0)return;let n=Date.now();this.runStartedAt.delete(e),gN(this.runEndedAt,e,n),this.track(`run_stopped`,e,void 0,{value:Math.max(0,n-t)})}messageSent(e,t){let n=this.runEndedAt.get(e);this.track(`message_sent`,e,t.messageId,{props:{chars:t.chars,attachments:t.attachments},...n===void 0?void 0:{value:Math.max(0,Date.now()-n)}},{awaitThread:!0})}messageEdited(e,t){this.track(`message_edited`,e,t.messageId,{props:{chars:t.chars}})}messageRegenerated(e,t){this.track(`message_regenerated`,e,t)}errorShown(e,t){this.shownErrors.has(e)||(_N(this.shownErrors,e),this.track(`error_shown`,e,t.messageId,{props:{reason:t.reason}}))}suggestionsShown(e,t){this.shownSuggestions.has(e)||(_N(this.shownSuggestions,e),this.track(`suggestions_shown`,e,void 0,{value:t}))}suggestionClicked(e){this.track(`suggestion_clicked`,e)}attachmentAdded(e,t){this.track(`attachment_added`,e,t.messageId,{...t.contentType?{props:{type:t.contentType}}:void 0})}attachmentFailed(e,t){this.track(`attachment_failed`,e,t.messageId,{...t.contentType?{props:{type:t.contentType}}:void 0})}voiceStarted(e){this.track(`voice_started`,e)}speechStarted(e,t){this.track(`speech_started`,e,t)}branchSwitched(e,t){this.track(`branch_switched`,e,t)}messageCopied(e,t){this.track(`message_copied`,e,t)}toolApproved(e,t,n,r){this.track(`tool_approved`,e,t,{props:{toolCallId:n,toolName:r}})}toolRejected(e,t,n,r){this.track(`tool_rejected`,e,t,{props:{toolCallId:n,toolName:r}})}threadSwitched(e){this.track(`thread_switched`,e)}track(e,t,n,r={},i={awaitThread:!1}){Promise.resolve().then(()=>this.resolveIds(t,n,i)).then(t=>{t&&(e===`thread_switched`&&!t.thread_id||this.getCloud().events.track({kind:e,...r,...t}))}).catch(()=>{})}},bN=200,xN=class{idMapping=new Map;getCloud;constructor(e){this.getCloud=typeof e==`function`?e:()=>e}async append(e,t,n,r,i){let a=this.getCloud(),o=this.idMapping.get(t);if(o instanceof Promise){await o;return}let s=(async()=>{let t=n?this.idMapping.get(n):void 0,o=n?await t??n:null,{message_id:s}=await a.threads.messages.create(e,{parent_id:o,format:r,content:i});return s})();this.idMapping.set(t,s);try{let e=await s;this.idMapping.get(t)===s&&this.idMapping.set(t,e)}catch(e){throw this.idMapping.get(t)===s&&this.idMapping.delete(t),e}}async update(e,t,n,r){let i=this.getCloud(),a=await this.getRemoteId(t);if(!a){console.warn(`Skipping update for message ${t}: no remote id is mapped.`);return}await i.threads.messages.update(e,a,{content:r})}isPersisted(e){return this.idMapping.has(e)}async getRemoteId(e){let t=this.idMapping.get(e);if(t)return t}getResolvedRemoteId(e){let t=this.idMapping.get(e);return typeof t==`string`?t:void 0}record(e,t){this.idMapping.set(e,t)}async load(e,t){let n=this.idMapping,r=this.getCloud(),i=[],a=new Set,o;for(;;){let n=await r.threads.messages.list(e,{...t?{format:t}:void 0,limit:bN,...o?{after:o}:void 0}),s=n.messages.at(-1);if(!s)break;let c=n.messages.filter(e=>!a.has(e.id));if(c.length===0)break;for(let e of c)a.add(e.id);if(i.push(...c),n.messages.length<bN)break;o=s.id}if(this.idMapping===n)for(let e of i){let t=n.get(e.id);t===void 0?n.set(e.id,e.id):t instanceof Promise&&t.catch(()=>{let r=n.get(e.id);(r===void 0||r===t)&&n.set(e.id,e.id)})}return i}reset(){this.idMapping=new Map}},SN=5e4,CN=/^[A-Za-z0-9+/]+={0,2}$/;function wN(e,t=`completed`){if(e.isError)return{status:`error`};if(e.isAbort)return{status:`incomplete`,outcome:`aborted`};if(e.isDisconnect)return{status:`incomplete`,outcome:`disconnected`};switch(e.finishReason){case`length`:return{status:`incomplete`,outcome:`length`};case`content-filter`:case`content_filter`:return{status:`incomplete`,outcome:`content_filter`};case`cancelled`:return{status:`incomplete`,outcome:`aborted`};case`error`:return{status:`error`};default:return{status:e.finishReason===void 0?t:`completed`}}}var TN=64,EN=2048;function DN(e){if(e==null)return{};let t=typeof e==`object`?e:void 0,n=typeof e==`string`?e:typeof t?.message==`string`?t.message:void 0,r=typeof t?.code==`string`?t.code:typeof t?.name==`string`&&t.name!==`Error`?t.name:void 0;return{...n?{error:n.slice(0,EN)}:void 0,...r?{errorCode:r.slice(0,TN)}:void 0}}function ON(e){return e.length<=SN?e:e.slice(0,SN)}function kN(e){if(e!=null)try{return ON(JSON.stringify(e))}catch{return}}var AN=e=>(e.length*3/4/1024).toFixed(1),jN=e=>{if(typeof e!=`string`)return!1;let t=e.slice(0,200);return t.length>0&&t.length%4==0&&CN.test(t)};function MN(e){if(!e||typeof e!=`object`)return e;let t=e;if((t.type===`image`||t.type===`audio`)&&jN(t.data))return{...t,data:`[${String(t.type)}: ${AN(t.data)}KB]`};if(t.type===`resource`&&t.resource&&typeof t.resource==`object`){let e=t.resource;if(jN(e.blob))return{...t,resource:{...e,blob:`[resource: ${AN(e.blob)}KB]`}}}return e}function NN(e){if(e!=null){try{let t=typeof e==`string`?JSON.parse(e):e;if(Array.isArray(t))return ON(JSON.stringify(t.map(MN)));if(typeof t==`object`){let e=t.content;if(Array.isArray(e))return ON(JSON.stringify({...t,content:e.map(MN)}))}}catch{}return kN(e)}}function PN(e){let{toolName:t,toolCallId:n,args:r,argsText:i,result:a,toolSource:o}=e,s={tool_name:t,tool_call_id:n},c=i==null?kN(r):ON(i);c!==void 0&&(s.tool_args=c);let l=o===`mcp`?NN(a):kN(a);return l!==void 0&&(s.tool_result=l),o&&(s.tool_source=o),s}function FN(e){if(!e)return;if(typeof e.modelId==`string`)return e.modelId;let t=e.custom;if(typeof t?.modelId==`string`)return t.modelId;let n=e.steps;if(Array.isArray(n))for(let e of n){if(!e||typeof e!=`object`)continue;let t=e.response;if(!t||typeof t!=`object`)continue;let n=t.modelId;if(typeof n==`string`)return n}}function IN(e,t){if(!t)return;let n=UN(t);n&&(n.inputTokens!==void 0&&(e.input_tokens=n.inputTokens),n.outputTokens!==void 0&&(e.output_tokens=n.outputTokens),n.reasoningTokens!==void 0&&(e.reasoning_tokens=n.reasoningTokens),n.cachedInputTokens!==void 0&&(e.cached_input_tokens=n.cachedInputTokens))}function LN(e){let t={},n=e.usage?UN(e.usage):void 0;return n?.inputTokens!==void 0&&(t.input_tokens=n.inputTokens),n?.outputTokens!==void 0&&(t.output_tokens=n.outputTokens),n?.reasoningTokens!==void 0&&(t.reasoning_tokens=n.reasoningTokens),n?.cachedInputTokens!==void 0&&(t.cached_input_tokens=n.cachedInputTokens),e.toolCalls!==void 0&&(t.tool_calls=e.toolCalls),e.startMs!==void 0&&(t.start_ms=e.startMs),e.endMs!==void 0&&(t.end_ms=e.endMs),e.finishReason!==void 0&&(t.finish_reason=e.finishReason.slice(0,32)),e.input!==void 0&&(t.input=ON(e.input)),t}function RN(e){if(!e)return;let t=[],n=new Set;for(let r of e){let e=r.trim().slice(0,64).trim();if(!(!e||n.has(e))&&(n.add(e),t.push(e),t.length===20))break}return t.length>0?t:void 0}function zN(e){if(!(e===void 0||!Number.isFinite(e)))return Math.max(0,Math.round(e))}function BN(e){if(!(e===void 0||!Number.isFinite(e)||e<0))return e}function VN(e,t){if(!t)return;let n={},r=BN(t.input);r!==void 0&&(n.input=r);let i=BN(t.inputCachedTokens);i!==void 0&&(n.input_cached_tokens=i);let a=BN(t.output);a!==void 0&&(n.output=a);let o=BN(t.total);o!==void 0&&(n.total=o),Object.keys(n).length>0&&(e.cost_details=n)}function HN(e){let t={thread_id:e.threadId,status:e.status},n=e.traceId?.toLowerCase();n&&/^[0-9a-f]{32}$/.test(n)&&(t.trace_id=n);let r=e.rootSpanId?.toLowerCase();r&&/^[0-9a-f]{16}$/.test(r)&&(t.root_span_id=r),e.outcome!==void 0&&(t.outcome_type=e.outcome),e.errorCode!==void 0&&(t.error_code=e.errorCode),e.error!==void 0&&(t.error=e.error),e.messageId!==void 0&&(t.message_id=e.messageId),e.modelId!==void 0&&(t.model_id=e.modelId),e.provider!==void 0&&(t.provider=e.provider,t.provider_type=e.provider),IN(t,e.usage),e.steps===void 0?e.totalSteps!==void 0&&(t.total_steps=e.totalSteps):(t.steps=e.steps.map(LN),t.total_steps=e.steps.length),e.toolCalls!==void 0&&(t.tool_calls=e.toolCalls);let i=zN(e.durationMs);i!==void 0&&(t.duration_ms=i);let a=zN(e.firstTokenMs);a!==void 0&&(t.first_token_ms=a);let o=BN(e.costUsd);o!==void 0&&(t.cost_usd=o),VN(t,e.costDetails),e.outputText!==void 0&&(t.output_text=ON(e.outputText)),e.attributes!==void 0&&(t.attributes=e.attributes),e.metadata!==void 0&&(t.metadata=e.metadata),e.telemetry?.environment!==void 0&&(t.environment=e.telemetry.environment),e.telemetry?.release!==void 0&&(t.release=e.telemetry.release);let s=RN(e.telemetry?.tags);return s!==void 0&&(t.tags=s),t}function UN(e){let t=e.inputTokens??e.promptTokens,n=e.outputTokens??e.completionTokens,r=e.reasoningTokens??e.outputTokenDetails?.reasoningTokens,i=e.cachedInputTokens??e.inputTokenDetails?.cacheReadTokens;if(t!=null||n!=null||r!=null||i!=null)return{...t==null?void 0:{inputTokens:t},...n==null?void 0:{outputTokens:n},...r==null?void 0:{reasoningTokens:r},...i==null?void 0:{cachedInputTokens:i}}}var WN=class{reported=new Set;getCloud;constructor(e){this.getCloud=typeof e==`function`?e:()=>e}async report(e,t){let n;try{let r=this.getCloud();if(!r.telemetry.enabled||t!==void 0&&this.reported.has(t))return;let i=HN({...e,telemetry:r.telemetry}),{beforeReport:a}=r.telemetry,o=a?a(i):i;if(!o)return;t!==void 0&&(this.reported.add(t),n=t),await r.runs.report(o)}catch(e){n!==void 0&&GN(e)&&this.reported.delete(n);return}}},GN=e=>e instanceof VM&&e.status===429,KN=(e,t)=>({append:async(n,r)=>{let i=t.getId(r.message),a=t.encode(r);return e.append(n,i,r.parentId,t.format,a)},update:e.update?async(n,r,i)=>{let a=t.encode(r);return e.update(n,i,t.format,a)}:void 0,load:async n=>({messages:(await e.load(n,t.format)).filter(e=>e.format===t.format).map(e=>t.decode({id:e.id,parent_id:e.parent_id,format:e.format,content:e.content})).reverse()}),isPersisted:t=>e.isPersisted(t)});function qN(e){return typeof e==`object`&&!!e}function JN(e){return qN(e)&&typeof e.type==`string`}function YN(e){if(typeof e.toolCallId!=`string`)return;let t=e.type.startsWith(`tool-`);if(!t&&e.type!==`dynamic-tool`)return;let n=t?e.type.slice(5):typeof e.toolName==`string`?e.toolName:void 0;if(n)return PN({toolName:n,toolCallId:e.toolCallId,args:e.input??e.args,result:e.output??e.result,toolSource:t?`frontend`:`mcp`})}function XN(e,t){let n=qN(t?.samplingCalls)?t.samplingCalls:void 0;if(n)for(let t of e){let e=n[t.tool_call_id];Array.isArray(e)&&e.length>0&&(t.sampling_calls=e)}}function ZN(e){let t=e?.steps;return Array.isArray(t)?t.map(e=>qN(e)&&qN(e.usage)?e.usage:void 0):[]}function QN(e){let t={};for(let n of e)n.inputTokens!=null&&(t.inputTokens=(t.inputTokens??0)+n.inputTokens),n.outputTokens!=null&&(t.outputTokens=(t.outputTokens??0)+n.outputTokens),n.reasoningTokens!=null&&(t.reasoningTokens=(t.reasoningTokens??0)+n.reasoningTokens),n.cachedInputTokens!=null&&(t.cachedInputTokens=(t.cachedInputTokens??0)+n.cachedInputTokens);return t}function $N(e){let t=qN(e?.usage)?UN(e.usage):void 0;if(t)return t;let n=ZN(e).flatMap(e=>{let t=e?UN(e):void 0;return t?[t]:[]});return n.length>0?QN(n):void 0}function eP(e){let t=[],n=[],r=[],i=[],a;for(let o of e){if(o.role!==`assistant`)continue;a=o;let e=qN(o.metadata)?o.metadata:void 0,s=ZN(e),c=[],l,u=-1;for(let e of o.parts){if(!JN(e))continue;if(e.type===`step-start`){u+=1;let e=s[u];l=e?{usage:e}:{},r.push(l);continue}if(e.type===`text`&&typeof e.text==`string`&&e.text){t.push(e.text);continue}let i=YN(e);i&&(n.push(i),c.push(i),l&&(l.toolCalls=[...l.toolCalls??[],i],l.finishReason=`tool-calls`))}XN(c,e);let d=$N(e);d&&i.push(d)}if(!a)return null;let o=qN(a.metadata)?a.metadata:void 0,s=i.length>0?QN(i):void 0,c=FN(o),l=t.length>0||n.length>0;return{...a.id===void 0?void 0:{assistantMessageId:a.id},status:l?`completed`:`incomplete`,...n.length>0?{toolCalls:n}:void 0,...r.length>0?{steps:r,totalSteps:r.length}:void 0,...t.length>0?{outputText:ON(t.join(``))}:void 0,...s?{usage:s}:void 0,...c?{modelId:c}:void 0,...o?{metadata:o}:void 0}}var tP=new WeakMap,nP=new WeakMap,rP=e=>{let t=nP.get(e);return t||(t={settled:new Set,reported:new Set},nP.set(e,t)),t},iP=e=>e.role===`assistant`&&(e.status.type===`complete`||e.status.type===`incomplete`),aP=(e,t)=>{let n=nD(t);if(!e)return n;if(!n)return e;let r=Math.max(e.omitted??0,n.omitted??0),i={entries:e.entries,...r?{omitted:r}:void 0};for(let e of n.entries)i.entries.some(t=>t.type===e.type&&t.occurredAt===e.occurredAt&&fk(t.payload,e.payload))||(i=eD(i,e));return i},oP=new Set([401,403,408,429]),sP=new Set([402,404]),cP=e=>e instanceof VM&&e.status>=400&&e.status<500&&!oP.has(e.status),lP=class{cloudRef;getAui;runReporter;copiedThreads=new Map;copyQueues=new Map;constructor(e,t){this.cloudRef=e,this.getAui=t,this.runReporter=new WN(()=>this.cloudRef.current)}get aui(){return this.getAui()}getCloud(){return this.cloudRef.current}ownsThread(e){let t=this.aui.threadListItem;if(!t.source)return!1;let{id:n,remoteId:r}=t.getState();return n===e||r===e}getPersistence(e=this.aui.threadListItem){let t=LC(e);return tP.has(t)||tP.set(t,new xN(()=>this.cloudRef.current)),tP.get(t)}get _persistence(){return this.getPersistence()}async resolveEngagementEventIds(e,t,n){let r=this.getThreadListItem(e);if(!r)return;let i=r.getState().remoteId;!i&&n?.awaitThread&&(i=await r.initialize().then(e=>e.remoteId).catch(()=>void 0));let a=t?this.getPersistence(r).getResolvedRemoteId(t):void 0;return{...i?{thread_id:i}:void 0,...a?{message_id:a}:void 0}}feedback={submit:({message:e,type:t,comment:n})=>{(async()=>{let r=this.tryGetKeyedThreadListItem(),i=r?.getState().remoteId;if(!r||!i){console.warn(`[assistant-ui] Skipping feedback for message ${e.id}: the thread has no remote id.`);return}let a=await this.getPersistence(r).getRemoteId(e.id);if(!a){console.warn(`[assistant-ui] Skipping feedback for message ${e.id}: no cloud message id is mapped.`);return}await this.cloudRef.current.threads.messages.feedback(i,a,{type:t,...n?{comment:n}:void 0})})().catch(e=>{console.error(`[assistant-ui] Cloud feedback submission failed:`,e)})}};tryGetKeyedThreadListItem(){let e=this.aui.threadListItem;if(!e.source)return;let t=e.getState().id;if(t!==void 0)return this.aui.threads.getState().threadItems.some(e=>e.id===t||e.remoteId===t)?this.aui.threads.item({id:t}):e}getThreadListItem(e){let t=this.aui.threadListItem;if(t.source){let n=t.getState();if(n.id===e||n.remoteId===e)return t}let n=this.aui.threads.getState().threadItems.find(t=>t.id===e||t.remoteId===e);return n?this.aui.threads.item({id:n.id}):void 0}withFormat(e){let t=this,n,r=()=>{let e=t.tryGetKeyedThreadListItem();return e&&(n=e),n},i=()=>n??r(),a=n=>KN(t.getPersistence(n),e);return{pin(){r()},async append(e){let t=i();if(!t)throw Error(`Cannot persist cloud history without a thread list item.`);let n=t.getState().remoteId??(await t.initialize()).remoteId;await a(t).append(n,e)},async update(e,t){let n=i(),r=n?.getState().remoteId;!r||!n||await a(n).update?.(r,e,t)},async delete(){throw Error(`Assistant Cloud does not support deleting thread messages yet.`)},reportTelemetry(n,r){let a=n.map(t=>e.encode(t));t._reportRunTelemetry(e.format,a,r,i(),fP(dP(n,e),r?.message?pP(r.message,`aui/v0`):void 0))},async load(){let e=r(),n=t.aui.threadListItem,i=n.source?n.getState().remoteId:void 0;return i?a(e??n).load(i):{messages:[]}}}}async append({parentId:e,message:t}){let{remoteId:n}=await this.aui.threadListItem.initialize(),r=this._persistence;await this._writeMessage(r,n,t,i=>r.append(n,t.id,e,`aui/v0`,i))}async update(e){let t=this._persistence;if(!t.isPersisted(e.message.id))return this.append(e);let{message:n}=e,r=this.aui.threadListItem.getState().remoteId;r&&await this._writeMessage(t,r,n,e=>t.update(r,n.id,`aui/v0`,e))}get unstable_copy(){let e=this.cloudRef.current?.telemetry;return e?.enabled===!1||e?.messages===!1?void 0:this.copy}copy=async(e,t)=>{let n=this.cloudRef.current;if(t.length===0)return;let r=this.tryGetKeyedThreadListItem();if(!r)throw Error(`Cannot copy cloud history without a thread list item.`);let i=(await r.initialize()).remoteId,a=this.getPersistence(r),o=(this.copyQueues.get(i)??Promise.resolve()).catch(()=>void 0).then(()=>this.copyBranch(n,i,a,e,t));this.copyQueues.set(i,o);try{await o}finally{this.copyQueues.get(i)===o&&this.copyQueues.delete(i)}};async copyBranch(e,t,n,r,i){let a=this.copiedThreads.get(t);a||(a=(async()=>{let r={stored:new Set,refused:new Set,closed:!1,interactions:new Map},i=new Set,a;for(;;){let o=await e.threads.messages.list(t,{limit:200,...a?{after:a}:void 0}),s=o.messages.filter(e=>!i.has(e.id));for(let e of s){if(i.add(e.id),!e.external_id||e.format!==`aui/v0`)continue;r.stored.add(e.external_id),n.record(e.external_id,e.id);let t=rM(e);for(let e of t?.message.content??[]){if(e.type!==`tool-call`)continue;let t=aP(r.interactions.get(e.toolCallId),e.unstable_interactions);t&&r.interactions.set(e.toolCallId,t)}}let c=o.messages.at(-1);if(s.length===0||o.messages.length<200||!c)break;a=c.id}return r})(),this.copiedThreads.set(t,a));let o;try{o=await a}catch(e){throw this.copiedThreads.get(t)===a&&this.copiedThreads.delete(t),e}if(o.closed)return;let s=r.filter(e=>e.id.length>0&&e.id.length<=255),c=new Set(i),l=0,u;for(let r=0;r<s.length;r++)if(c.has(s[r].id))for(;l<=r;l++){let i=s[l];if(l!==r&&(o.stored.has(i.id)||o.refused.has(i.id))){o.stored.has(i.id)&&(u=i.id);continue}let a=$j(i),c={...a,content:a.content.map(e=>{if(e.type!==`tool-call`)return e;let t=aP(o.interactions.get(e.toolCallId),e.unstable_interactions);return{...e,...t?{unstable_interactions:t}:void 0}})},d;try{({message_id:d}=await e.threads.messages.create(t,{parent_id:null,format:`aui/v0`,content:c,external_id:i.id,...u?{parent_external_id:u}:void 0}))}catch(e){if(!cP(e))throw e;if(sP.has(e.status)||o.stored.size===0&&o.refused.size>0){o.closed=!0,console.warn(`[assistant-ui] The cloud refused copies to thread ${t}; the dashboard shows the conversation as far as it was copied.`,e);return}o.refused.add(i.id),console.warn(`[assistant-ui] The cloud refused the copy of message ${i.id}; the dashboard shows the conversation without it.`,e);continue}o.stored.add(i.id),o.refused.delete(i.id),u=i.id,n.record(i.id,d);for(let e of c.content)e.type===`tool-call`&&e.unstable_interactions&&o.interactions.set(e.toolCallId,e.unstable_interactions)}}async _writeMessage(e,t,n,r){let i=$j(n),a=rP(e),o=iP(n)&&!a.settled.has(n.id);if(await r(i),!o||(a.settled.add(n.id),a.reported.has(n.id))||!this.cloudRef.current.telemetry.enabled)return;let s=yP(`aui/v0`,i);s&&(a.reported.add(n.id),this._sendReport(t,s,void 0,void 0,pP(n,`aui/v0`),e))}async delete(){throw Error(`Assistant Cloud does not support deleting thread messages yet.`)}async load(){let e=this.aui.threadListItem.getState().remoteId;if(!e)return{messages:[]};let t=this._persistence,n=(await t.load(e,`aui/v0`)).filter(e=>e.format===`aui/v0`).reverse(),r=[],i=new Set,{settled:a}=rP(t);for(let e of n){let t=rM(e);t&&(t.parentId&&!i.has(t.parentId)||(i.add(t.message.id),iP(t.message)&&a.add(t.message.id),r.push(t)))}return{messages:r}}_reportRunTelemetry(e,t,n,r,i){let a=r??this.aui.threadListItem,o=a.getState().remoteId;if(!o)return;let s=bP(e,t)??(i?.status===void 0?void 0:{status:`incomplete`});s&&this._sendReport(o,s,n?.durationMs,n?.stepTimestamps,i,this.getPersistence(a))}_sendReport(e,t,n,r,i,a=this._persistence){let o=uP(t.steps,r),s=i?.localMessageId?a.getResolvedRemoteId(i.localMessageId):void 0;this.runReporter.report({threadId:e,status:i?.status??t.status,outcome:i?.outcomeType,error:i?.error,errorCode:i?.errorCode,messageId:s,traceId:i?.traceId,modelId:t.modelId,provider:i?.provider,usage:t.usage,steps:o,totalSteps:t.totalSteps,toolCalls:t.toolCalls,durationMs:n,firstTokenMs:i?.firstTokenMs,outputText:t.outputText,metadata:t.metadata})}};function uP(e,t){if(!t)return e;if(!e)return t.map(({start_ms:e,end_ms:t})=>({startMs:e,endMs:t}));let n=Math.min(e.length,t.length);return e.map((e,r)=>({...e,...r<n?{startMs:t[r].start_ms,endMs:t[r].end_ms}:void 0}))}function dP(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n],i=pP(r.message,t.format,t.getId(r.message));if(i)return i}}function fP(e,t){if(!t)return e;let{localMessageId:n,...r}=t;return{...e,...r}}function pP(e,t,n){if(!mP(e)||e.role!==`assistant`)return;let r=mP(e.status)?e.status:void 0,i=mP(e.metadata)?e.metadata:void 0,a=mP(i?.custom)?i.custom:void 0,o=(mP(i?.timing)?i.timing:void 0)?.firstTokenTime,s=typeof o==`number`&&Number.isFinite(o)?Math.round(o):void 0,c=r?.type===`incomplete`?typeof r.reason==`string`?r.reason:void 0:typeof i?.finishReason==`string`?i.finishReason:void 0,l=r?.type===`incomplete`&&r.reason===`error`,u=wN({finishReason:c,isError:l}),d=u.outcome,f=u.status===`error`?`error`:r?.type===`incomplete`?`incomplete`:c===void 0?void 0:u.status,p=l?DN(r.error):{},m=n??(typeof e.id==`string`?e.id:void 0),h=t===`aui/v0`?a?.traceId:t===`ai-sdk/v6`?i?.traceId:void 0,g=typeof a?.provider==`string`?a.provider:typeof i?.provider==`string`?i.provider:void 0;return{...m?{localMessageId:m}:void 0,...f===void 0?void 0:{status:f},...d?{outcomeType:d}:void 0,...p,...s!=null&&s>=0?{firstTokenMs:s}:void 0,...typeof h==`string`?{traceId:h}:void 0,...g===void 0?void 0:{provider:g}}}function mP(e){return typeof e==`object`&&!!e}var hP=[`inputTokens`,`outputTokens`,`reasoningTokens`,`cachedInputTokens`,`promptTokens`,`completionTokens`],gP=e=>typeof e==`number`&&Number.isFinite(e)&&e>=0?e:void 0,_P=e=>{if(!mP(e)||Array.isArray(e))return;let t={};for(let n of hP){let r=gP(e[n]);r!==void 0&&(t[n]=r)}let n=mP(e.inputTokenDetails)&&!Array.isArray(e.inputTokenDetails)?gP(e.inputTokenDetails.cacheReadTokens):void 0;n!==void 0&&(t.inputTokenDetails={cacheReadTokens:n});let r=mP(e.outputTokenDetails)&&!Array.isArray(e.outputTokenDetails)?gP(e.outputTokenDetails.reasoningTokens):void 0;return r!==void 0&&(t.outputTokenDetails={reasoningTokens:r}),Object.keys(t).length>0?t:void 0},vP=e=>OO(e).map(e=>{let t=_P(e.usage);return t?{usage:t}:{}});function yP(e,t){switch(e){case`aui/v0`:return xP(t);case`ai-sdk/v6`:return eP([t]);default:return null}}function bP(e,t){if(e===`ai-sdk/v6`)return eP(t);for(let n=t.length-1;n>=0;n--){let r=yP(e,t[n]);if(r)return r}return null}function xP(e){let t=e;if(t.role!==`assistant`||t.status!==void 0&&!EO(t.status))return null;let n=mP(t.status)&&typeof t.status.type==`string`?t.status.type:void 0;if(n===`running`||n===`requires-action`)return null;let r=t.content?.filter(e=>e.type===`tool-call`&&e.toolName&&e.toolCallId).map(e=>PN({toolName:e.toolName,toolCallId:e.toolCallId,args:e.args,result:e.result,argsText:e.argsText})),i=t.content?.filter(e=>e.type===`text`&&e.text),a=i&&i.length>0?ON(i.map(e=>e.text).join(``)):void 0,o=vP(t.metadata?.steps),s,c,l,u;if(o&&o.length>0){let e=0,t=0,n=0,r=0,i=!1,a=!1,d=!1,f=!1;for(let s of o){if(!s.usage)continue;let o=UN(s.usage);o&&(o.inputTokens!=null&&(e+=o.inputTokens,i=!0),o.outputTokens!=null&&(t+=o.outputTokens,a=!0),o.reasoningTokens!=null&&(n+=o.reasoningTokens,d=!0),o.cachedInputTokens!=null&&(r+=o.cachedInputTokens,f=!0))}s=i?e:void 0,c=a?t:void 0,l=d?n:void 0,u=f?r:void 0}let d=n===`incomplete`?`incomplete`:`completed`,f=t.metadata?.custom,p=FN(t.metadata),m=o.length>0?o:void 0;return{status:d,...r&&r.length>0?{toolCalls:r}:void 0,...o?.length?{totalSteps:o.length}:void 0,...s!=null||c!=null||l!=null||u!=null?{usage:{...s==null?void 0:{inputTokens:s},...c==null?void 0:{outputTokens:c},...l==null?void 0:{reasoningTokens:l},...u==null?void 0:{cachedInputTokens:u}}}:void 0,...a==null?void 0:{outputText:a},...f?{metadata:f}:void 0,...m?{steps:m}:void 0,...p?{modelId:p}:void 0}}function SP(e){let t=cT(),n=nS(t);aS(()=>{n.current=t});let[r]=eS(()=>new lP(e,()=>n.current));return kP(r,t),r}var CP=new WeakMap,wP=(e,t)=>{let n;for(let r of e.mounted.keys()){if(t!==void 0&&r.ownsThread(t))return r;n??=r}return n??e.lastMounted},TP=e=>{let t={mounted:new Map,lastMounted:e,reporter:new yN(()=>wP(t).getCloud(),(e,n,r)=>wP(t,e).resolveEngagementEventIds(e,n,r)),host:void 0,dispose:void 0};return t},EP=(e,t)=>{let n=()=>{let{mainThreadId:n}=e.threads.getState(),{isEmpty:r,suggestions:i}=e.thread.getState();!r||i.length===0||t.suggestionsShown(n,i.length)},r=[e.on({scope:`*`,event:`threads.selectionChanged`},e=>{t.threadSwitched(e.threadId)}),e.on({scope:`*`,event:`composer.send`},e=>{e.messageId?t.messageEdited(e.threadId,{messageId:e.messageId,chars:e.chars}):t.messageSent(e.threadId,{chars:e.chars,attachments:e.attachments}),e.suggestion&&t.suggestionClicked(e.threadId)}),e.on({scope:`*`,event:`composer.attachmentAdd`},e=>{t.attachmentAdded(e.threadId,{messageId:e.messageId,contentType:e.contentType})}),e.on({scope:`*`,event:`composer.attachmentAddError`},e=>{t.attachmentFailed(e.threadId,{messageId:e.messageId,contentType:e.contentType})}),e.on({scope:`*`,event:`composer.cancel`},e=>{t.runStopped(e.threadId)}),e.on({scope:`*`,event:`thread.runStart`},e=>{t.runStarted(e.threadId)}),e.on({scope:`*`,event:`thread.runEnd`},e=>{t.runEnded(e.threadId)}),e.on({scope:`*`,event:`thread.cancelRun`},e=>{t.runStopped(e.threadId)}),e.on({scope:`*`,event:`thread.voiceStarted`},e=>{t.voiceStarted(e.threadId)}),e.on({scope:`*`,event:`message.reload`},e=>{t.messageRegenerated(e.threadId,e.messageId)}),e.on({scope:`*`,event:`message.branchSwitched`},e=>{t.branchSwitched(e.threadId,e.messageId)}),e.on({scope:`*`,event:`message.copied`},e=>{t.messageCopied(e.threadId,e.messageId)}),e.on({scope:`*`,event:`thread.toolApprovalAnswered`},e=>{e.approved?t.toolApproved(e.threadId,e.messageId,e.toolCallId,e.toolName):t.toolRejected(e.threadId,e.messageId,e.toolCallId,e.toolName)}),e.on({scope:`*`,event:`message.speak`},e=>{t.speechStarted(e.threadId,e.messageId)}),e.on({scope:`*`,event:`message.error`},e=>{t.errorShown(e.threadId,{messageId:e.messageId,reason:e.reason})}),e.subscribe(n)];return n(),()=>xT(r)},DP=(e,t)=>{e.host=t,e.dispose=EP(t,e.reporter)},OP=e=>{let t=e.dispose;e.host=void 0,e.dispose=void 0,t?.()},kP=(e,t)=>{let n=$(4),r,i;n[0]!==e||n[1]!==t?(r=()=>{let n=LC(t.threads),r=CP.get(n);r||(r=TP(e),CP.set(n,r));let i=r;return i.mounted.set(e,t),i.lastMounted=e,i.host===void 0&&DP(i,t),()=>{if(i.mounted.delete(e),i.host!==t)return;OP(i);let n=i.mounted.values().next();n.done||DP(i,n.value)}},i=[e,t],n[0]=e,n[1]=t,n[2]=r,n[3]=i):(r=n[2],i=n[3]),aS(r,i)};function AP(e,t){return t||KE(e)||`application/octet-stream`}var jP=`application/octet-stream`,MP=e=>e.startsWith(`image/`)?`image`:e.startsWith(`text/`)?`document`:`file`,NP=class{accept=`*`;getCloud;constructor(e){this.getCloud=typeof e==`function`?e:()=>e}uploadedUrls=new Map;activeUploads=new Map;async*add({file:e}){let t=WE(),n=MP(e.type),r=e.type||jP,i={id:t,type:n,name:e.name,contentType:r,file:e,status:{type:`running`,reason:`uploading`,progress:0}},a=new AbortController,o={cancelled:!1,controller:a};this.activeUploads.set(t,o);try{if(yield i,o.cancelled)return;let{signedUrl:n,publicUrl:s}=await this.getCloud().files.generatePresignedUploadUrl({filename:e.name});if(o.cancelled)return;let c=await fetch(n,{method:`PUT`,body:e,headers:{"Content-Type":r},mode:`cors`,signal:a.signal});if(o.cancelled)return;if(!c.ok)throw Error(`Failed to upload file: ${c.status} ${c.statusText}`);this.uploadedUrls.set(t,s),i={...i,status:{type:`requires-action`,reason:`composer-send`}},yield i}catch(e){if(o.cancelled)return;console.error(`[assistant-ui] Failed to upload attachment:`,e),i={...i,status:{type:`incomplete`,reason:`error`,message:e instanceof Error?e.message:String(e)}},yield i}finally{this.activeUploads.get(t)===o&&this.activeUploads.delete(t)}}async remove(e){let t=this.activeUploads.get(e.id);t&&(t.cancelled=!0,t.controller.abort(),this.activeUploads.delete(e.id)),this.uploadedUrls.delete(e.id)}async send(e){let t=this.uploadedUrls.get(e.id);if(!t)throw Error(`Attachment not uploaded`);this.uploadedUrls.delete(e.id);let n;return n=e.type===`image`?[{type:`image`,image:t,filename:e.name}]:[{type:`file`,data:t,mimeType:AP(t,e.contentType),filename:e.name}],{...e,status:{type:`complete`},content:n}}},PP=class{list(){return Promise.resolve({threads:[]})}rename(){return Promise.resolve()}updateCustom(){return Promise.resolve()}archive(){return Promise.resolve()}unarchive(){return Promise.resolve()}delete(){return Promise.resolve()}initialize(e){return Promise.resolve({remoteId:e,externalId:void 0})}generateTitle(){return Promise.resolve(new ReadableStream({start(e){e.close()}}))}fetch(e){return Promise.reject(Error(`Thread "${e}" not found in in-memory thread list.`))}},FP={name:`@assistant-ui/core`,version:`0.3.22`},IP=e=>xO(e)?e:void 0,LP=typeof process<`u`?{}.NEXT_PUBLIC_ASSISTANT_BASE_URL:void 0,RP=LP?new mN({baseUrl:LP,anonymous:!0}):void 0,zP=e=>{let t=SP(e),[n]=eS(()=>new NP(()=>e.current));return rS(()=>({history:t,attachments:n,feedback:t.feedback}),[t,n])},BP=20,VP=e=>{let t={activeCursor:e,archivedCursor:void 0,activeExhausted:!1,archivedExhausted:!1};if(!e||!e.startsWith(`{`))return t;try{let n=JSON.parse(e);return xO(n)?{activeCursor:typeof n.a==`string`?n.a:void 0,archivedCursor:typeof n.r==`string`?n.r:void 0,activeExhausted:n.ae===!0,archivedExhausted:n.re===!0}:t}catch{return t}},HP=e=>{let t=typeof e==`function`?e:()=>e,n=function(){return zP({get current(){return t().cloud??RP}})},r=t().cloud??RP;if(!r){let e=new PP;return e.initialize=async e=>({remoteId:e,externalId:(await t().create?.(e))?.externalId}),e}r.registerSdk?.(FP);let i=t().sdk;return i&&r.registerSdk?.(i),{list:async({after:e}={})=>{let{activeCursor:t,archivedCursor:n,activeExhausted:i,archivedExhausted:a}=VP(e),[{threads:o},{threads:s}]=await Promise.all([i?Promise.resolve({threads:[]}):r.threads.list({limit:BP,...t?{after:t}:{}}),a?Promise.resolve({threads:[]}):r.threads.list({is_archived:!0,limit:BP,...n?{after:n}:{}})]),c=!i&&o.length===BP?o.at(-1)?.id:void 0,l=!a&&s.length===BP?s.at(-1)?.id:void 0;return{threads:[...o,...s].map(e=>({status:e.is_archived?`archived`:`regular`,remoteId:e.id,title:e.title,lastMessageAt:e.last_message_at?new Date(e.last_message_at):void 0,externalId:e.external_id??void 0,custom:IP(e.metadata)})),nextCursor:c||l?JSON.stringify({a:c,r:l,...c===void 0?{ae:!0}:{},...l===void 0?{re:!0}:{}}):void 0}},initialize:async e=>{let n=await(t().create?.(e)??Promise.resolve()),i=n?n.externalId:void 0,{thread_id:a}=await r.threads.create({last_message_at:new Date,external_id:i,...i!==void 0&&t().upsert?{upsert:!0}:{}});return{externalId:i,remoteId:a}},rename:async(e,t)=>r.threads.update(e,{title:t}),updateCustom:async(e,t)=>r.threads.update(e,{metadata:t??null}),archive:async e=>r.threads.update(e,{is_archived:!0}),unarchive:async e=>r.threads.update(e,{is_archived:!1}),delete:async e=>(await t().delete?.(e),r.threads.delete(e)),generateTitle:async(e,t)=>{let n=t.map(e=>({...e,content:e.content.filter(e=>e.type===`text`||e.type===`tool-call`)}));return r.runs.stream({thread_id:e,assistant_id:`system/thread_title`,messages:n})},fetch:async e=>{let t=await r.threads.get(e);return{status:t.is_archived?`archived`:`regular`,remoteId:t.id,title:t.title,lastMessageAt:t.last_message_at?new Date(t.last_message_at):void 0,externalId:t.external_id??void 0,custom:IP(t.metadata)}},unstable_useAdapters:n}},UP=e=>{let t=nS(e);uS(()=>{t.current=e},[e]);let[n]=eS(()=>({get current(){return t.current.cloud??RP}})),[r]=eS(()=>function(){return zP(n)}),i=e.cloud??RP,a=()=>{let n=()=>e,a=HP(()=>({...n(),cloud:i}));return n=()=>t.current,a.unstable_useAdapters===void 0?a:{...a,unstable_useAdapters:r}},[o,s]=eS(()=>({cloud:i,adapter:a()}));if(o.cloud!==i){let e={cloud:i,adapter:a()};return s(e),e.adapter}return o.adapter},WP=async(e,t)=>{let{signal:n,onUpdate:r}=t;if(Symbol.asyncIterator in e)for await(let t of e){if(n.aborted)break;r(t)}else{let t=await e;if(n.aborted)return;r(t)}},GP=e=>{let t=[...e.content,...(e.attachments??[]).flatMap(e=>(e.content??[]).filter(e=>e.type!==`text`))],n=[];for(let e of t)e.type===`file`||e.type===`text`?n.push(e):e.type===`image`&&n.push({type:`file`,data:e.image,mimeType:`image/*`,...e.filename!==void 0&&{filename:e.filename}});return n},KP=e=>{let t={queue:HA,steer:HA},n=new Map,r=new Set,i=!1,a=!1,o=!1,s=!1,c=e=>e,l=0,u=0,d=!1,f=0,p=()=>{EC(r,void 0,`Message queue`)},m=e=>{t=e,D.items=e.queue,D.steerItems=e.steer,p()},h=(e,t)=>({id:e,prompt:cE(t),parts:GP(t)}),g=(e,r,i=0)=>{o=!0,n.set(r.id,r.message),m({...t,[e]:[...t[e].slice(0,i),r.item,...t[e].slice(i)]})},_=e=>{if(t.steer.some(t=>t.id===e))return`steer`;if(t.queue.some(t=>t.id===e))return`queue`},v=()=>{if(i||o||s)return;let r=t.steer.length>0?`steer`:`queue`,l=t[r][0];if(!l)return;let u=n.get(l.id);if(!u)return;i=!0,n.delete(l.id),a=!0,m({...t,[r]:t[r].slice(1)}),a=!1;let d={id:l.id,item:l,message:u},p=f;try{e.run(c(u),{steer:!1})}catch(e){throw f===p&&(i=!1,g(r,d)),e}},y=(t,n=`steer`,r=0)=>{o=!1,l+=Math.max(u,1),u=0;let a=(e=!1)=>{if(e)return;let a=l;l=Math.max(a-1,0),u=+(a>0),i=a>0,g(n,t,r)};d=!0;try{e.cancel()}catch(e){throw a(),e}finally{d=!1}i=!0;let s=f;try{e.run(c(t.message),{steer:!0})}catch(e){throw a(f!==s),e}},b=(e,r)=>{o=!1;let i=WE();n.set(i,r),m({...t,[e]:[...t[e],h(i,r)]}),v()},x=e=>{b(`queue`,e)},S=t=>{if(i&&!a&&e.cancel){let e=WE();y({id:e,item:h(e,t),message:t});return}b(`steer`,t)},C=(r,o)=>{let s=_(r);if(!s)throw Error(`Unknown queue item "${r}".`);let c=o.lane??s,l=t[s].findIndex(e=>e.id===r),u=t[s][l],d=(c===s?t[s]:t[c]).filter(e=>e.id!==r),f=e=>{if(e===r)throw Error(`Queue item "${r}" cannot anchor itself.`);let t=d.findIndex(t=>t.id===e);if(t===-1)throw Error(`Unknown anchor "${e}" in lane "${c}".`);return t},{insertAfter:p,insertBefore:h}=o,g;if(p===void 0&&h===void 0)g=c===s?t[s].findIndex(e=>e.id===r):d.length;else if(p!==void 0&&h!==void 0){let e=p===null?-1:f(p);if((h===null?d.length:f(h))!==e+1)throw Error(`insertAfter "${p}" and insertBefore "${h}" are not adjacent in lane "${c}".`);g=e+1}else g=p===void 0?h===null?d.length:f(h):p===null?0:f(p)+1;if(p===void 0&&h===void 0&&c===`steer`&&s!==`steer`&&i&&!a&&e.cancel){let e=n.get(r);n.delete(r),m({queue:t.queue.filter(e=>e.id!==r),steer:t.steer}),y({id:r,item:u,message:e},s,l);return}let b=[...d.slice(0,g),u,...d.slice(g)],x={...t,[c]:b};c!==s&&(x[s]=t[s].filter(e=>e.id!==r)),m(x),v()},w=(e,r)=>{let i=_(e);if(!i)throw Error(`Unknown queue item "${e}".`);n.set(e,r),m({...t,[i]:t[i].map(t=>t.id===e?h(e,r):t)})},T=e=>{n.delete(e)&&m({queue:t.queue.filter(t=>t.id!==e),steer:t.steer.filter(t=>t.id!==e)})},E=()=>{d||a||i&&u===0&&(o=!0,u=1)},D={items:t.queue,steerItems:t.steer,enqueue:x,steer:S,move:C,edit:w,remove:T,__internal_setDispatchTransform:e=>{c=e},__internal_notifyCancelled:E};return{adapter:D,hold:()=>{s=!0},release:()=>{s=!1,v()},notifyBusy:()=>{o=!1,l+=u,u=0,i=!0,f++},notifyIdle:()=>{if(l>0){l--;return}u>0&&u--,i=!1,v()},notifyCancelled:E,clear:()=>{n.clear(),m({queue:HA,steer:HA})},subscribe:e=>(r.add(e),()=>{r.delete(e)})}},qP=(e,t)=>e.status?.type!==`requires-action`||e.status.reason!==`tool-calls`||e.content.some(e=>e.type===`tool-call`&&e.result===void 0&&e.approval!==void 0&&e.approval.approved===void 0&&e.approval.resolution===void 0)?!1:t===void 0?e.content.every(e=>e.type!==`tool-call`||e.result!==void 0||e.approval!==void 0):e.content.every(e=>e.type!==`tool-call`||e.result!==void 0||e.approval!==void 0||!t.includes(e.toolName)),JP=class extends Error{name=`AbortError`;detach;constructor(e,t){super(t),this.detach=e}},YP=e=>e.role!==`assistant`||e.status.type!==`requires-action`||e.status.reason!==`interrupt`||e.content.some(e=>e.type===`tool-call`&&e.result===void 0&&e.interrupt!=null)?e:{...e,status:Ik(!1,!1,!1,e.content.some(e=>e.type===`tool-call`&&e.result===void 0))},XP=e=>{let t=!1,n=e.content.map(e=>e.type!==`tool-call`||e.approval===void 0||e.approval.approved!==void 0||e.approval.resolution!==void 0?e:(t=!0,{...e,approval:{...e.approval,resolution:`cancelled`}})),r=e.status.type===`running`||e.status.type===`requires-action`;return!t&&!r?e:{...e,content:n,status:r?{type:`incomplete`,reason:`cancelled`}:e.status}},ZP=e=>{let t=new Set(e.messages.map(e=>e.parentId));return{...e,messages:e.messages.map(e=>({...e,message:e.message.role===`assistant`&&t.has(e.message.id)?XP(e.message):YP(e.message)}))}},QP=e=>{if(e.role!==`assistant`)return e;let t=!1,n=e.content.map(e=>{if(e.type!==`tool-call`)return e;let n=e.messages?.map(QP),r=n?.some((t,n)=>t!==e.messages?.[n]);if(e.unstable_interactions===void 0&&r!==!0)return e;t=!0;let{unstable_interactions:i,...a}=e;return r?{...a,messages:n}:a});return t?{...e,content:n}:e},$P=class extends tj{capabilities={switchToBranch:!0,switchBranchDuringRun:!0,edit:!0,delete:!1,reload:!0,refetchThread:!1,cancel:!0,unstable_copy:!0,speech:!1,dictation:!1,voice:!1,attachments:!1,feedback:!1,queue:!1,answerToolCall:!0};abortController=null;_queue=null;_queueRunInFlight=null;_activeRun=null;_runGeneration=0;_messageReplacements=new WeakMap;_historyWrites=new Map;_chainHistoryWrite(e,t){let n=this._historyWrites.get(e),r;if(n)r=n.then(t,t);else try{r=Promise.resolve(t())}catch(e){r=Promise.reject(e)}let i=r.then(()=>{},()=>{});return this._historyWrites.set(e,i),i.then(()=>{this._historyWrites.get(e)===i&&this._historyWrites.delete(e)}),r}_persistMessageUpdate(e){let t=this._options.adapters.history;if(!t)return;let n;try{n=this.repository.getMessage(e)}catch{return}let{parentId:r,message:i}=n;i.role===`assistant`&&i.status.type!==`running`&&(this._unwrittenMessages.has(i.id)&&!t.update&&i.status.type===`requires-action`||this._persistSettled(r,i)?.catch(()=>{}))}_roundtripsInFlight=new Map;_followedDuringRun=new Set;_unwrittenMessages=new Set;_persistSettled(e,t){let n=this._options.adapters.history;if(!n)return;let r=this._unwrittenMessages.delete(t.id)?n.append.bind(n):n.update?.bind(n);if(!r)return;let i={parentId:e,message:t,runConfig:this._lastRunConfig};return this._chainHistoryWrite(t.id,()=>r(i))}_cancelPause(e){if(e===null)return;let t;try{t=this.repository.getMessage(e)}catch{return}if(t.message.role!==`assistant`)return;if(this._roundtripsInFlight.has(e)){this._followedDuringRun.add(e);let n=XP(t.message),r=this._options.adapters.history;if(r&&!r.update&&this._roundtripsInFlight.get(e)?.resumedFromPause&&!this._unwrittenMessages.has(e)){let i={parentId:t.parentId,message:n,runConfig:this._lastRunConfig};return this._chainHistoryWrite(e,()=>r.append(i))}return this._persistSettled(t.parentId,n)}let n=XP(t.message);if(n!==t.message)return this.repository.addOrUpdateMessage(t.parentId,n),this._persistSettled(t.parentId,n)}_resumeIfReady(e){let t=this.getMessageById(e);return t?.message.role!==`assistant`||this.repository.hasChildren(e)||this._followedDuringRun.has(e)||!qP(t.message,this._options.unstable_humanToolNames)?!1:(this._runLoop(t.parentId,t.message,this._lastRunConfig).catch(()=>{}),!0)}isDisabled=!1;isSendDisabled=!1;_isLoading=!1;get isLoading(){return this._isLoading}_suggestions=[];_suggestionsController=null;get suggestions(){return this._suggestions}get adapters(){return this._options.adapters}constructor(e,t){super(e),this.__internal_setOptions(t)}_options;_lastRunConfig={};_getThreadId;__internal_setGetThreadId(e){this._getThreadId=e}_getInitializePromise;__internal_setGetInitializePromise(e){this._getInitializePromise=e}get extras(){}__internal_setOptions(e){if(this._options===e)return;let t=this._options?.adapters.history;if(this._options=e,!e.adapters.voice&&this.voice)try{this.disconnectVoice()}catch(e){console.error(`[assistant-ui] Voice cleanup threw after the adapter changed`,e)}let n=!1;e.adapters.suggestion||(this._suggestionsController?.abort(),this._suggestionsController=null,this._suggestions.length>0&&(this._suggestions=[],n=!0));let r=e.adapters?.speech!==void 0;this.capabilities.speech!==r&&(this.capabilities.speech=r,n=!0);let i=e.adapters?.dictation!==void 0;this.capabilities.dictation!==i&&(this.capabilities.dictation=i,n=!0);let a=e.adapters?.voice!==void 0;this.capabilities.voice!==a&&(this.capabilities.voice=a,n=!0);let o=e.adapters?.attachments!==void 0;this.capabilities.attachments!==o&&(this.capabilities.attachments=o,n=!0);let s=e.adapters?.feedback!==void 0;this.capabilities.feedback!==s&&(this.capabilities.feedback=s,n=!0);let c=e.adapters?.history?.delete!==void 0;this.capabilities.delete!==c&&(this.capabilities.delete=c,n=!0);let l=e.unstable_enableMessageQueue===!0;l&&!this._queue?(this._queue=KP({run:e=>{let t={};this._queueRunInFlight=t;let n=this._runGeneration;this._runAppend({...e,parentId:this._resolveAppendParent(this.messages.at(-1)?.id??null)}).finally(()=>{this._queueRunInFlight===t&&(this._queueRunInFlight=null,this._runGeneration===n&&this._queue?.notifyIdle())}).catch(()=>{})}}),this.voice&&this._queue.hold(),this._queue.subscribe(()=>this._notifySubscribers())):!l&&this._queue&&(this._queue=null),this.capabilities.queue!==l&&(this.capabilities.queue=l,n=!0),n&&this._notifySubscribers(),this._loadRequested&&!this._loadPromise&&!t&&e.adapters.history&&this.messages.length===0&&this.__internal_load().catch(e=>{console.error(`[assistant-ui] local thread history load failed:`,e)})}_loadPromise;_loadRequested=!1;__internal_load(){if(this._loadRequested=!0,this._loadPromise)return this._loadPromise;if(!this.adapters.history)return Promise.resolve();let e=this.adapters.history.load();return this._isLoading=!0,this._loadPromise=e.then(e=>{if(!e)return;let{repository:t,droppedIds:n}=zA(e);n.length>0&&console.warn(`[assistant-ui] Skipped history messages with missing parents:`,n),e.headId!=null&&!e.messages.some(t=>t.message.id===e.headId)&&console.warn(`[assistant-ui] History head is not among the loaded messages:`,e.headId),this.repository.import(ZP(t)),t.messages.length>0&&this.ensureInitialized(),this._notifySubscribers();let r=this.adapters.history?.resume?.bind(this.adapters.history);e.unstable_resume&&r&&this.startRun({parentId:this.repository.headId,sourceId:this.repository.headId,runConfig:this._lastRunConfig},r).catch(()=>{})}).finally(()=>{this._isLoading=!1,this._notifySubscribers()}),this._notifySubscribers(),this._loadPromise}_getHistoryLoadBarrier(){if(!(!this._isLoading||!this._loadPromise))return this._loadPromise.catch(()=>{})}async append(e){if(e={...e,parentId:this._resolveAppendParent(e.parentId)},this.voice)return this._appendToVoiceSession(e);if(this._isVoiceMessage(e.sourceId))throw Error(`Voice transcript messages cannot be edited`);let t=e.parentId===(this.messages.at(-1)?.id??null),n=e.startRun??e.role===`user`;if(this._queue&&n&&t){e.steer??this._queueRunInFlight!==null?this._queue.adapter.steer(e):this._queue.adapter.enqueue(e);return}return this._queue&&!t&&(this._options.unstable_queueClearOnRewind??!0)&&this._queue.clear(),this._runAppend(e)}_commitVoiceMessage(e){let t=bA(this),n=n=>{if(t.aborted){this._dropVoiceMessage(e.id,n);return}let r=this.repository.headId;this.repository.addOrUpdateMessage(r,e);let i=this._cancelPause(r);this.repository.resetHead(e.id);let a=this._options.adapters.history,o=a?this._chainHistoryWrite(e.id,()=>a.append({parentId:r,message:e})):void 0;return o?.catch(()=>{}),this._dropVoiceMessage(e.id,!1),n&&this._notifySubscribers(),i?Promise.all([i,o]).then(()=>{}):o},r=this._getVoiceCommitBarrier();return r?r.then(()=>n(!0)):n(!1)}_onVoiceConnected(){this._queue?.hold()}_onVoiceDisconnected(){this._queue?.release()}getQueueItems(){return this._queue?.adapter.items??HA}getSteerQueueItems(){return this._queue?.adapter.steerItems??HA}moveQueueItem(e,t){this._queue?.adapter.move(e,t)}removeQueueItem(e){this._queue?.adapter.remove(e)}_rollbackAppend(e){try{this.repository.deleteMessage(e)}catch{return}this._notifySubscribers()}_pendingAppends=0;_isRunActive(){return this._pendingAppends>0||super._isRunActive()}async _runAppend(e){this._pendingAppends+=1;try{await this._runAppendInner(e)}finally{--this._pendingAppends}}async _runAppendInner(e){let t=bA(this),n=this._getHistoryLoadBarrier();if(n){let r=e.parentId===(this.messages.at(-1)?.id??null);if(await n,t.aborted)return;r&&(e={...e,parentId:this._resolveAppendParent(this.messages.at(-1)?.id??null)})}let r=this.enrichAppendMetadata(e);this.ensureInitialized();let i=PD(r,WE(),{type:`complete`,reason:`unknown`});this.repository.addOrUpdateMessage(r.parentId,i),this._notifySubscribers();try{let e=this._getInitializePromise?.();e&&await e}catch(e){if(this._rollbackAppend(i.id),t.aborted)return;r.parentId!==null&&this._resumeIfReady(r.parentId);let n=new Uk;throw n.cause=e,n}if(t.aborted){this._rollbackAppend(i.id);return}let a=this._cancelPause(r.parentId),o=this._options.adapters.history,s=o?this._chainHistoryWrite(i.id,()=>o.append({parentId:r.parentId,message:i,...r.runConfig!==void 0&&{runConfig:r.runConfig}})):void 0,c=a?Promise.all([a,s]).then(()=>{}):s;if(c?.catch(()=>{}),r.startRun??r.role===`user`){let[e,t]=await Promise.allSettled([this.startRun({parentId:i.id,sourceId:r.sourceId,runConfig:r.runConfig??{}}),c]);if(e.status===`rejected`)throw e.reason;if(t.status===`rejected`)throw t.reason}else this.repository.switchToBranch(i.id),this._notifySubscribers(),await c}async deleteMessage(e){let t=this._options.adapters.history;if(!t?.delete)throw Error(`Runtime does not support deleting messages.`);let n=this.repository.getMessages(),r=n.findIndex(t=>t.id===e);if(r===-1)throw Error(`Message not found.`);let i=n[r],a=[{parentId:n[r-1]?.id??null,message:i}];await t.delete(a),this.repository.deleteMessage(e),this._notifySubscribers()}resumeRun({stream:e,...t}){if(!e)throw Error(`You must pass a stream parameter to resume runs.`);return this.startRun(t,e)}exportExternalState(){throw Error(`Runtime does not support exporting external states.`)}import(e){this._roundtripsInFlight.clear(),this._followedDuringRun.clear(),this._unwrittenMessages.clear(),super.import(ZP(e))}importExternalState(){throw Error(`Runtime does not support importing external states.`)}unstable_notifySessionReset(){throw Error(`Runtime does not support resetting sessions.`)}async startRun({parentId:e,sourceId:t,runConfig:n},r){if(this.ensureInitialized(),this.voice)throw Error(`Cannot start a run while a voice session is connected`);if(this._isVoiceMessage(t))throw Error(`Voice transcript messages cannot be reloaded`);let i=this._cancelPause(e),a=WE(),o={id:a,role:`assistant`,status:{type:`running`},content:[],metadata:{unstable_state:this.state,unstable_annotations:[],unstable_data:[],steps:[],custom:{}},createdAt:new Date};this._unwrittenMessages.add(a);let s=this._runLoop(e,o,n,r);if(!i)return s;let[c,l]=await Promise.allSettled([s,i]);if(c.status===`rejected`)throw c.reason;if(l.status===`rejected`)throw l.reason}async _runLoop(e,t,n,r){if(this.voice)throw Error(`Cannot start a run while a voice session is connected`);this._notifyEventSubscribers(`runStart`,{});let i={cancelled:!1,resumedFromPause:t.status.type===`requires-action`};this._activeRun=i,this._runGeneration++;let a=!1;try{this._queue?.notifyBusy(),this._suggestions=[],this._suggestionsController?.abort(),this._suggestionsController=null,this._notifySubscribers();do{if(t=await this.performRoundtrip(e,t,n,i,r),r=void 0,this._activeRun!==i)break;let a=this._messageReplacements.get(t);for(;a;)t=a.message,a=this._messageReplacements.get(t);if(this.getMessageById(t.id)?.message!==t)break}while(qP(t,this._options.unstable_humanToolNames)&&!this.repository.hasChildren(t.id))}finally{this._notifyEventSubscribers(`runEnd`,{}),a=this._activeRun===i,a&&(this._activeRun=null),(a||i.cancelled)&&queueMicrotask(()=>this._queue?.notifyIdle())}if(a&&this.adapters.suggestion&&t.status?.type!==`requires-action`){this._suggestionsController=new AbortController;let e=this._suggestionsController.signal,t=this.adapters.suggestion;(async()=>{try{await WP(t.generate({messages:this.messages,signal:e}),{signal:e,onUpdate:e=>{this._suggestions=e,this._notifySubscribers()}})}catch{}})()}}async performRoundtrip(e,t,n,r,i){let a=(e?this.repository.getMessages(e):[]).map(e=>QP(e.role===`assistant`&&(e.status.type===`running`||this._roundtripsInFlight.has(e.id))?XP(e):e));this.abortController?.abort();let o=new AbortController;this.abortController=o;let s=t.content,c=t.metadata?.unstable_annotations,l=t.metadata?.unstable_data,u=t.metadata?.steps,d=t.metadata?.custom,f=new Set,p=!0;try{this.repository.getMessage(t.id)}catch{p=!1}let m=()=>{if(!p)return this._activeRun===r;try{let e=t,n=this._messageReplacements.get(e);for(;n;)n.toolCallId!==void 0&&f.add(n.toolCallId),e=n.message,n=this._messageReplacements.get(e);return this.repository.getMessage(t.id).message===e&&(t=e,!0)}catch{return!1}},h=e=>{let n=new Map;for(let e of t.content)e.type===`tool-call`&&e.unstable_interactions!==void 0&&n.set(e.toolCallId,e.unstable_interactions);let r=e.map(e=>{if(e.type!==`tool-call`||e.unstable_interactions!==void 0)return e;let t=n.get(e.toolCallId);return t===void 0?e:{...e,unstable_interactions:t}});if(f.size===0)return r;let i=new Map;for(let e of t.content){if(e.type!==`tool-call`||!f.has(e.toolCallId))continue;let t=i.get(e.toolCallId)??[];t.push(e),i.set(e.toolCallId,t)}let a=new Map;return r.map(e=>{if(e.type!==`tool-call`)return e;let t=a.get(e.toolCallId)??0;if(a.set(e.toolCallId,t+1),e.result!==void 0&&e.isPreliminary!==!0)return e;let n=i.get(e.toolCallId)?.[t];if(!n||n.result===void 0||n.isPreliminary===!0)return e;let{isPreliminary:r,artifact:o,modelContent:s,...c}=e;return{...c,result:n.result,isError:n.isError,...n.artifact!==void 0&&{artifact:n.artifact},...n.modelContent!==void 0&&{modelContent:n.modelContent}}})},g=n=>{if(!m())return;let r=n.metadata?.steps,i=r?[...u??[],...r]:void 0,a=n.metadata?.unstable_annotations,o=n.metadata?.unstable_data,f=a?[...c??[],...a]:void 0,g=o?[...l??[],...o]:void 0,_=n.content?h([...s,...n.content]):void 0;t={...t,..._?{content:_}:void 0,status:n.status??t.status,...n.metadata?{metadata:{...t.metadata,...n.metadata.unstable_state===void 0?void 0:{unstable_state:n.metadata.unstable_state},...f?{unstable_annotations:f}:void 0,...g?{unstable_data:g}:void 0,...i?{steps:i}:void 0,...n.metadata?.timing?{timing:n.metadata.timing}:void 0,...n.metadata?.custom?{custom:{...d??{},...n.metadata.custom}}:void 0}}:void 0},this.repository.addOrUpdateMessage(e,t),p=!0,this._notifySubscribers()},_=this._options.maxSteps??2;this._roundtripsInFlight.set(t.id,{controller:o,resumedFromPause:r.resumedFromPause});try{if((t.metadata?.steps?.length??0)>=_)return g({status:{type:`incomplete`,reason:`tool-calls`}}),t;g({status:{type:`running`}}),this.repository.switchToBranch(t.id),this._notifySubscribers(),this._lastRunConfig=n??{};let{unstable_composerMetadata:s,...c}=this.getModelContext();i??=this.adapters.chatModel.run.bind(this.adapters.chatModel);let l=o.signal,u=()=>l.aborted&&(t.status.type===`running`||t.status.type===`requires-action`&&(this._activeRun!==r||qP(t,this._options.unstable_humanToolNames))),d=this._getThreadId?.(),f=i({messages:a,runConfig:this._lastRunConfig,abortSignal:l,context:c,unstable_assistantMessageId:t.id,unstable_threadId:d,unstable_parentId:e,unstable_getMessage(){return m(),QP(t)}});if(Symbol.asyncIterator in f)for await(let e of f){if(l.aborted){u()&&g({status:{type:`incomplete`,reason:`cancelled`}});break}g(e)}else g(await f);u()?g({status:{type:`incomplete`,reason:`cancelled`}}):t.status.type===`running`&&g({status:{type:`complete`,reason:`unknown`}})}catch(e){if(e instanceof JP)g({status:{type:`incomplete`,reason:`cancelled`}});else if(e instanceof Error&&e.name===`AbortError`)g({status:{type:`incomplete`,reason:`cancelled`}});else throw g({status:{type:`incomplete`,reason:`error`,error:Gk(e)}}),e}finally{this.abortController===o&&(this.abortController=null);let n=this._roundtripsInFlight.get(t.id)?.controller===o;n&&this._roundtripsInFlight.delete(t.id);let i=this._options.adapters.history,a=m(),s=!1,c,l=n&&this._followedDuringRun.delete(t.id);if(l){let e=this.getMessageById(t.id);if(e?.message.role===`assistant`){let n=XP(e.message);n!==e.message&&(this.repository.addOrUpdateMessage(e.parentId,n),s=!0,a?t=n:c=this._persistSettled(e.parentId,n))}}if(n&&!a&&!c){let e=this.getMessageById(t.id);e?.message.role===`assistant`&&(e.message.status.type===`complete`||e.message.status.type===`incomplete`)&&this._unwrittenMessages.has(t.id)&&(c=this._persistSettled(e.parentId,e.message))}let u=t.status.type===`complete`||t.status.type===`incomplete`,d=t.status.type===`requires-action`&&!qP(t,this._options.unstable_humanToolNames);if(a&&(u||d&&i?.update)){if(u&&r.resumedFromPause&&!l&&!this._unwrittenMessages.has(t.id)&&i&&!i.update){let n={parentId:e,message:t,runConfig:this._lastRunConfig};c=this._chainHistoryWrite(t.id,()=>i.append(n))}else c=this._persistSettled(e,t)}s&&this._notifySubscribers(),c&&await c}return t}detach(){wA(this),this._queue=null;let e=new JP(!0);this.abortController?.abort(e),this.abortController=null,this._suggestionsController?.abort(),this._suggestionsController=null}cancelRun(){this._queue&&(this._options.unstable_queueClearOnCancel??!0?this._queue.clear():(this._queue.notifyCancelled(),this._activeRun&&(this._activeRun.cancelled=!0)));let e=new JP(!1);this.abortController?.abort(e),this.abortController=null,this._suggestionsController?.abort(),this._suggestionsController=null}_onMessageMetadataChanged(e,t){this._messageReplacements.set(e,{message:t}),this._persistMessageUpdate(t.id)}addToolResult({messageId:e,toolCallId:t,result:n,isError:r,artifact:i,modelContent:a}){if(this.voice)throw Error(`Cannot add a tool result while a voice session is connected`);let o=this.repository.getMessage(e),{parentId:s}=o,{message:c}=o;if(c.role!==`assistant`)throw Error(`Tried to add tool result to non-assistant message`);let l=!1,u=!1,d=c.content.map(e=>{if(e.type!==`tool-call`||e.toolCallId!==t)return e;u=!0,(e.result===void 0||e.isPreliminary===!0)&&(l=!0);let{isPreliminary:o,...s}=e;return{...s,result:n,isError:r,...i!==void 0&&{artifact:i},...a!==void 0&&{modelContent:a}}});if(!u)throw Error(`Tried to add tool result to non-existing tool call`);let f=c;c={...c,content:d},f.status.type===`running`&&this._messageReplacements.set(f,{message:c,toolCallId:t}),this.repository.addOrUpdateMessage(s,c),this._notifySubscribers(),l&&(this._resumeIfReady(e)||this._persistMessageUpdate(e))}resumeToolCall(e){throw Error(`Local runtime does not support resuming tool calls. For human-in-the-loop tools, list the tool in unstable_humanToolNames and complete the call with addToolResult.`)}async unstable_recordToolInteraction({messageId:e,toolCallId:t,interaction:n}){let r;try{r=this.repository.getMessage(e)}catch{throw Error(`Tried to record a tool interaction on a non-existing message`)}let{parentId:i,message:a}=r;if(a.role!==`assistant`)throw Error(`Tried to record a tool interaction on a non-assistant message`);let o=a.content.findIndex(e=>e.type===`tool-call`&&e.toolCallId===t);if(o===-1)throw Error(`Tried to record a tool interaction on a non-existing tool call`);let s=a.content[o];if(s.type!==`tool-call`)throw Error(`Tried to record a tool interaction on a non-existing tool call`);let c={...a,content:a.content.map((e,t)=>t===o?{...e,unstable_interactions:eD(s.unstable_interactions,n)}:e)};a.status.type===`running`&&this._messageReplacements.set(a,{message:c}),this.repository.addOrUpdateMessage(i,c),this._notifySubscribers(),this._persistMessageUpdate(c.id)}respondToToolApproval({approvalId:e,approved:t,optionId:n,text:r,reason:i}){if(this.voice)throw Error(`Cannot respond to a tool approval while a voice session is connected`);let a=this.repository.getMessages().findLast(t=>t.role===`assistant`&&t.content.some(t=>t.type===`tool-call`&&t.approval?.id===e));if(!a)throw Error(`Tried to respond to a non-existing tool approval`);if(this.abortController!==null)throw Error(`Tried to respond to a tool approval while a run is in progress`);if(a.status?.type!==`requires-action`)throw Error(`Tried to respond to a tool approval on a message whose status is not requires-action`);if(this.repository.hasChildren(a.id))throw Error(`Tried to respond to a tool approval on a message that later messages follow`);if(this._followedDuringRun.has(a.id))throw Error(`Tried to respond to a tool approval that was cancelled or expired`);let o=a.content.find(t=>t.type===`tool-call`&&t.approval?.id===e);if(o?.type!==`tool-call`||!o.approval)throw Error(`Tried to respond to a non-existing tool approval`);if(o.approval.resolution!==void 0)throw Error(`Tried to respond to a tool approval that was cancelled or expired`);if(o.approval.approved!==void 0)throw Error(`Tried to respond to an already decided tool approval`);let s=o.approval,c=a.content.map(e=>{if(e!==o)return e;let a={...s,approved:t,...n!=null&&{optionId:n},...r!=null&&{text:r},...i!=null&&{reason:i}};return t?{...e,approval:a}:{...e,approval:a,result:{error:i||`Tool approval denied`},isError:!0}});a={...a,content:c};let{parentId:l}=this.repository.getMessage(a.id);this.repository.addOrUpdateMessage(l,a),this._notifySubscribers(),this._notifyToolApprovalAnswered(a.id,o.toolCallId,o.toolName,t);let u=this.getMessageById(a.id);return this.repository.headId===a.id&&u?.message.role===`assistant`&&qP(u.message,this._options.unstable_humanToolNames)?this._runLoop(u.parentId,u.message,this._lastRunConfig).catch(()=>{}):this._persistMessageUpdate(a.id),Promise.resolve()}},eF=Object.freeze([]),tF=`__DEFAULT_ID__`,nF=Object.freeze({[tF]:{id:tF,remoteId:void 0,externalId:void 0,status:`regular`,title:void 0}}),rF=class extends wT{_mainThread;constructor(e){super(),this._mainThread=e()}get isLoading(){return!1}getMainThreadRuntimeCore(){return this._mainThread}get newThreadId(){}get threadIds(){return eF}get archivedThreadIds(){return eF}get mainThreadId(){return tF}get threadItems(){return nF}getThreadRuntimeCore(){throw Error(`Method not implemented.`)}getLoadThreadsPromise(){return Promise.resolve()}getItemById(e){if(e===this.mainThreadId)return{status:`regular`,id:this.mainThreadId,remoteId:this.mainThreadId,externalId:void 0,title:void 0,isMain:!0};throw Error(`Method not implemented`)}async switchToThread(){throw Error(`Method not implemented.`)}switchToNewThread(){throw Error(`Method not implemented.`)}rename(){throw Error(`Method not implemented.`)}archive(){throw Error(`Method not implemented.`)}detach(){throw Error(`Method not implemented.`)}unarchive(){throw Error(`Method not implemented.`)}delete(){throw Error(`Method not implemented.`)}initialize(e){return Promise.resolve({remoteId:e,externalId:void 0})}generateTitle(){throw Error(`Method not implemented.`)}},iF=class extends FA{threads;Provider=void 0;_options;constructor(e,t){super(),this._options=e,this.threads=new rF(()=>new $P(this._contextProvider,this._options)),t&&this.threads.getMainThreadRuntimeCore().import(IA.fromArray(t))}},aF=(e,t)=>{let n=$(39),r,i;n[0]===t?(r=n[1],i=n[2]):({initialMessages:r,...i}=t,n[0]=t,n[1]=r,n[2]=i);let a=_O()??{},o,s;n[3]===a?(o=n[4],s=n[5]):({modelContext:o,...s}=a,n[3]=a,n[4]=o,n[5]=s);let c;n[6]!==e||n[7]!==i.adapters||n[8]!==s?(c={...s,...i.adapters,chatModel:e},n[6]=e,n[7]=i.adapters,n[8]=s,n[9]=c):c=n[9];let l;n[10]!==i||n[11]!==c?(l={...i,adapters:c},n[10]=i,n[11]=c,n[12]=l):l=n[12];let u=l,d;n[13]!==r||n[14]!==u?(d=()=>new iF(u,r),n[13]=r,n[14]=u,n[15]=d):d=n[15];let[f]=eS(d),p=cT(),m=nS(void 0),h;n[16]!==p||n[17]!==f.threads?(h=()=>{f.threads.getMainThreadRuntimeCore().__internal_setGetThreadId(()=>p.threadListItem.__internal_getRuntime?.().getState().remoteId)},n[16]=p,n[17]=f.threads,n[18]=h):h=n[18];let g;n[19]!==p||n[20]!==f?(g=[p,f],n[19]=p,n[20]=f,n[21]=g):g=n[21],aS(h,g);let _;n[22]===f.threads?_=n[23]:(_=()=>()=>{f.threads.getMainThreadRuntimeCore().detach()},n[22]=f.threads,n[23]=_);let v;n[24]===f?v=n[25]:(v=[f],n[24]=f,n[25]=v),FT(_,v);let y;n[26]!==u||n[27]!==f.threads?(y=()=>{f.threads.getMainThreadRuntimeCore().__internal_setOptions(u)},n[26]=u,n[27]=f.threads,n[28]=y):y=n[28],aS(y);let b;n[29]===f.threads?b=n[30]:(b=()=>{let e=f.threads.getMainThreadRuntimeCore().__internal_load();m.current!==e&&(m.current=e,e.catch(sF))},n[29]=f.threads,n[30]=b);let x;n[31]===f?x=n[32]:(x=[f],n[31]=f,n[32]=x),aS(b,x);let S,C;n[33]!==o||n[34]!==f?(S=()=>{if(o)return f.registerModelContextProvider(o)},C=[o,f],n[33]=o,n[34]=f,n[35]=S,n[36]=C):(S=n[35],C=n[36]),aS(S,C);let w;n[37]===f?w=n[38]:(w=()=>new PA(f),n[37]=f,n[38]=w);let[T]=eS(w);return T},oF=(e,{cloud:t,...n}={})=>qj({runtimeHook:function(){return aF(e,n)},adapter:UP({cloud:t}),allowNesting:!0});function sF(e){console.error(`[assistant-ui] local thread history load failed:`,e)}function cF(e,t){function n(n){let r=vS(e);if(!n?.optional&&!r)throw Error(`This component must be used within ${t}.`);return r}return n}function lF(e,t){function n(n){let r=e(n);return r?r[t]:null}function r(e){let t=!1,r;typeof e==`function`?r=e:e&&typeof e==`object`&&(t=!!e.optional,r=e.selector);let i=n({optional:t});return i?r?i(r):i():null}return{[t]:r,[`${t}Store`]:n}}var uF=gS(null),{useThreadViewport:dF,useThreadViewportStore:fF}=lF(cF(uF,`ThreadPrimitive.Viewport`),`useThreadViewport`),pF=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},mF=(e=>e?pF(e):pF),hF=e=>e;function gF(e,t=hF){let n=v.useSyncExternalStore(e.subscribe,v.useCallback(()=>t(e.getState()),[e,t]),v.useCallback(()=>t(e.getInitialState()),[e,t]));return v.useDebugValue(n),n}var _F=e=>{let t=mF(e),n=e=>gF(t,e);return Object.assign(n,t),n},vF=(e=>e?_F(e):_F),yF=e=>{let t=new Map,n=()=>{let n=0;for(let e of t.values())n+=e;e(n)};return{register:()=>{let e=Symbol();return t.set(e,0),{setHeight:r=>{t.get(e)!==r&&(t.set(e,r),n())},unregister:()=>{t.delete(e),n()}}}}},bF=(e={})=>{let t=new Set,n=yF(e=>{a.setState({height:{...a.getState().height,viewport:e}})}),r=yF(e=>{a.setState({height:{...a.getState().height,inset:e}})}),i=(e,t)=>(a.setState({element:{...a.getState().element,[e]:t}}),()=>{a.getState().element[e]===t&&a.setState({element:{...a.getState().element,[e]:null}})}),a=vF(()=>({isAtBottom:!0,scrollToBottom:({behavior:e=`auto`}={})=>{EC(t,()=>({behavior:e}),`Thread viewport`)},onScrollToBottom:e=>(t.add(e),()=>{t.delete(e)}),turnAnchor:e.turnAnchor??`bottom`,topAnchorMessageClamp:{tallerThan:e.topAnchorMessageClamp?.tallerThan??`10em`,visibleHeight:e.topAnchorMessageClamp?.visibleHeight??`6em`},height:{viewport:0,inset:0},element:{viewport:null,anchor:null,target:null},targetConfig:null,topAnchorTurn:null,registerViewport:n.register,registerContentInset:r.register,registerViewportElement:e=>i(`viewport`,e),registerAnchorElement:e=>i(`anchor`,e),registerAnchorTargetElement:(e,t)=>(a.setState({element:{...a.getState().element,target:e},targetConfig:e&&t?t:null}),()=>{a.getState().element.target===e&&a.setState({element:{...a.getState().element,target:null},targetConfig:null})}),setTopAnchorTurn:e=>{a.setState({topAnchorTurn:e})}}));return a},xF=e=>e,SF=e=>{let t=$(11),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n={optional:!0},t[0]=n):n=t[0];let r=fF(n),i;t[1]===e?i=t[2]:(i=()=>bF(e),t[1]=e,t[2]=i);let[a]=eS(i),o,s;t[3]!==r||t[4]!==a?(o=()=>r?.getState().onScrollToBottom(e=>{a.getState().scrollToBottom(e)}),s=[r,a],t[3]=r,t[4]=a,t[5]=o,t[6]=s):(o=t[5],s=t[6]),aS(o,s);let c,l;return t[7]!==r||t[8]!==a?(c=()=>{if(r)return a.subscribe(e=>{r.getState().isAtBottom!==e.isAtBottom&&xF(r).setState({isAtBottom:e.isAtBottom})})},l=[a,r],t[7]=r,t[8]=a,t[9]=c,t[10]=l):(c=t[9],l=t[10]),aS(c,l),a},CF=e=>{let t=$(7),{children:n,options:r}=e,i;t[0]===r?i=t[1]:(i=r===void 0?{}:r,t[0]=r,t[1]=i);let a=SF(i),o;t[2]===a?o=t[3]:(o=()=>({useThreadViewport:a}),t[2]=a,t[3]=o);let[s]=eS(o),c;return t[4]!==n||t[5]!==s?(c=(0,q.jsx)(uF.Provider,{value:s,children:n}),t[4]=n,t[5]=s,t[6]=c):c=t[6],c},wF=()=>{let e=$(3),t=cT(),n,r;return e[0]===t?(n=e[1],r=e[2]):(n=()=>{},r=[t],e[0]=t,e[1]=n,e[2]=r),aS(n,r),null},TF=mS(e=>{let t=$(8),{children:n,aui:r,config:i,runtime:a}=e,o=r??null,s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,q.jsx)(wF,{}),t[0]=s):s=t[0];let c;t[1]===n?c=t[2]:(c=(0,q.jsx)(CF,{children:n}),t[1]=n,t[2]=c);let l;return t[3]!==i||t[4]!==a||t[5]!==o||t[6]!==c?(l=(0,q.jsxs)(mO,{runtime:a,aui:o,config:i,children:[s,c]}),t[3]=i,t[4]=a,t[5]=o,t[6]=c,t[7]=l):l=t[7],l}),EF={surface:{kWkggS:`x1prclbq`,kaIpWk:`x1hviunn`,kGVxlE:`x1i5ehqx`,$$css:!0},contentWrapper:{kVAEAm:`x1n2onr6`,$$css:!0},closeButtonWrapper:{kVAEAm:`x10l6tqk`,krVfgx:`x1ey2m1c`,kY2c9j:`x1vjfegm`,kzqmXN:`x1i1rx1s x10okhzq`,kZKoxP:`xjm9jq1 x132qfvm`,kVQacm:`xb3r6kr x1dordxg`,kz4h6p:`x1hyvwdk x10wafsz`,kfzvcC:`x47corl xbt4iw`,kLKAdn:`xexx8yu x1kw28su`,$$css:!0}};function DF(e={}){let{onShow:t,onHide:n,xstyle:r,hasLightDismiss:i=!0,hasEscapeDismiss:a=!0,hasAutoFocus:o=!0,hasSurface:s=!0,hasCloseButton:c=!0,closeButtonLabel:l,dialogLabel:u,role:d=`dialog`,isModal:f=!0}=e,p=Gs(),m=l??p(`@astryx.popover.close`),h=(0,v.useRef)(null),g=(0,v.useRef)(!1),_=Ta({mode:`context`,lightDismiss:i,onShow:t,onHide:n}),{containerRef:y,focusFirst:b}=zl({isActive:_.isOpen,onEscape:a||i?_.hide:void 0});(0,v.useEffect)(()=>{_.isOpen&&o&&!g.current&&requestAnimationFrame(()=>{b()}),_.isOpen||(g.current=!1)},[_.isOpen,o,b]);let x=(0,v.useCallback)(e=>{h.current=e,_.ref(e)},[_]),S=(0,v.useCallback)(e=>{g.current=e?.skipAutoFocus??!1,_.show()},[_]),C=(0,v.useCallback)(()=>{_.isOpen?_.hide():S()},[_,S]),T={"aria-haspopup":d===`dialog`?`dialog`:`true`,"aria-expanded":_.isOpen,"aria-controls":_.id};ql(`usePopover`,'role="dialog" without a `dialogLabel` renders an unnamed dialog. Pass `dialogLabel`, or use `role: "none"` for listbox/menu popups whose content already carries its own role.',d===`dialog`&&!u);let E=(0,v.useCallback)((e,t)=>_.render((0,q.jsxs)(`div`,{ref:y,role:d===`dialog`?`dialog`:void 0,"aria-modal":d===`dialog`&&f?!0:void 0,"aria-label":d===`dialog`?u:void 0,...w(EF.contentWrapper,s&&EF.surface,r),children:[e,c&&(0,q.jsx)(`div`,{...w(EF.closeButtonWrapper,Bi.centerInline(`100%`)),children:(0,q.jsx)(ec,{variant:`secondary`,label:m,onClick:_.hide})})]}),{...t,xstyle:t?.xstyle}),[_,c,s,m,y,u,d,f,r]);return{triggerRef:x,contentRef:y,anchorId:_.anchorId,show:S,hide:_.hide,toggle:C,isOpen:_.isOpen,id:_.id,render:E,triggerProps:T}}var OF={dropdown:{kB7OPa:`x9f619`,k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,kOIVth:`x1lsbc85`,kskxy:`xuyqlj2`,kORKVm:`x1odjw0f`,"--_dropdown-menu-radius":`x1fcsqxe`,"--_dropdown-menu-padding":`xgory14`,kmVPX3:`x9epnlk`,kaIpWk:`x1n97fys`,kSiTet:`x1hc1fzr`,k1ekBW:`x19991ni`,kIyJzY:`xuedmi6`,kAMwcw:`xlr8y92`,$$css:!0},popover:{k7Eaqz:`xrzjruh`,$$css:!0},popoverCustomWidth:e=>[{k7Eaqz:(typeof e==`number`?`${e}px`:e)==null?typeof e==`number`?`${e}px`:e:`xkj4a21`,$$css:!0},{"--x-minWidth":(e=>typeof e==`number`?e+`px`:e??void 0)(typeof e==`number`?`${e}px`:e)}]},kF=`@astryx.dropdownMenu.label`;function AF({button:e,isMenuOpen:t,onOpenChange:n,menuWidth:r,onClick:i,hasChevron:a=!0,placement:o=`below`,alignment:s=`start`,className:c,style:l,xstyle:u,"data-testid":d,...f}){let p=Gs(),m=e??{label:p(kF)},h=(`items`in f?f.items:void 0)??[],g=f.children,{items:_,children:y,...b}=f,x=(0,v.useId)(),S=m.size??`md`,C=(0,v.useRef)(null),[T,E]=(0,v.useState)(!1),D=t!==void 0,k=D?t:T,A=(0,v.useRef)(0),j=(0,v.useCallback)(()=>{A.current=Date.now(),n?.(!1),D||E(!1),C.current?.focus()},[D,n]),M=(0,v.useRef)(!1),N=(0,v.useRef)(`keyboard`),P=DF({onHide:j,onShow:(0,v.useCallback)(()=>{n?.(!0),D||E(!0)},[D,n]),hasLightDismiss:!0,hasCloseButton:!1,hasAutoFocus:!1,role:`none`}),F=(0,v.useCallback)(()=>{P.hide()},[P]),{listRef:I,handleKeyDown:L,focusFirst:R,focusItem:z,ownsEvent:B,getItems:V}=Wl({itemSelector:$d,boundarySelector:ef,wrap:!1,onEscape:F}),H=Kl({getItemLabels:()=>V().map(e=>e.textContent),onMatch:z,getCurrentIndex:()=>V().findIndex(e=>e===document.activeElement||e.contains(document.activeElement))});(0,v.useEffect)(()=>{D&&(t&&!P.isOpen?(M.current=!0,P.show()):!t&&P.isOpen&&P.hide())},[t,D,P]),(0,v.useEffect)(()=>{!P.isOpen||!M.current||(M.current=!1,requestAnimationFrame(()=>{(N.current===`pointer`||!R())&&I.current?.focus(),N.current=`keyboard`}))},[P.isOpen,R,I]);let U=(0,v.useCallback)(e=>{if(B(e)){if(e.key===`Enter`||e.key===` `){e.preventDefault();let t=document.activeElement;t&&Qd.has(t.getAttribute(`role`)??``)&&t.click();return}if(e.key===`Tab`){F();return}if(H.onKeyDown(e)){e.preventDefault();return}L(e)}},[L,F,H,B]),W=(0,v.useCallback)((e=`keyboard`)=>{N.current=e,M.current=!0,P.show()},[P]),ee=(0,v.useCallback)(e=>{if(Date.now()-A.current<50)return;i?.();let r=e.detail===0?`keyboard`:`pointer`;D?(t||(N.current=r),n?.(!t)):P.isOpen?P.hide():W(r)},[i,D,n,t,P,W]),te=(0,v.useCallback)(e=>{P.isOpen||(e.key===`ArrowDown`||e.key===`Enter`||e.key===` `)&&(e.preventDefault(),W())},[P.isOpen,W]),ne=m.isIconOnly===!0,re=m.endContent??(a&&!ne?(0,q.jsx)(fa,{icon:`chevronDown`,size:`sm`,color:`inherit`}):void 0),ie=r?OF.popoverCustomWidth(r):OF.popover,ae=(0,v.useMemo)(()=>({closeMenu:F,menuSize:S}),[F,S]),oe=f.items===void 0?g:lf(h);return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(ec,{...m,ref:e=>{C.current=e,P.triggerRef(e);let t=m.ref;typeof t==`function`?t(e):t&&(t.current=e)},tooltip:k?void 0:m.tooltip,endContent:re,onClick:ee,onKeyDown:te,"aria-haspopup":`menu`,"aria-expanded":k,"aria-controls":x,"data-testid":d}),P.render((0,q.jsx)(`div`,{...b,ref:I,id:x,role:`menu`,tabIndex:-1,"aria-label":m.label,onKeyDown:U,...J(Y(`dropdown-menu`),w(OF.dropdown,u),c,l),children:(0,q.jsx)(Id,{value:ae,children:oe})}),{placement:o,alignment:s,offset:O[`--spacing-1`],xstyle:[ie,Ea[o]]})]})}AF.displayName=`DropdownMenu`;var jF={popoverSurface:{k7Eaqz:`xfb3i0g`,$$css:!0}};function MF(e){let t=window.getSelection();if(!t||t.rangeCount===0)return null;let n=t.getRangeAt(0);if(!n.collapsed||!e.contains(n.startContainer))return null;let r=n.startContainer;return r.nodeType===Node.TEXT_NODE?(r.textContent??``).slice(0,n.startOffset):null}function NF(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n];if(r===` `||r===`
127
127
  `)return null;for(let i of t)if(r===i.character){let t=n>0?e[n-1]:null;if(t===null||t===` `||t===`
128
- `)return{trigger:i,query:e.slice(n+1),triggerStart:n}}}return null}function FF(e,t){let n=window.getSelection();if(!n||n.rangeCount===0)return;let r=n.getRangeAt(0),i=r.startContainer;if(i.nodeType!==Node.TEXT_NODE)return;let a=i.textContent??``,o=r.startOffset;i.textContent=a.slice(0,t)+a.slice(o);let s=document.createRange();s.setStart(i,t),s.collapse(!0),n.removeAllRanges(),n.addRange(s)}function IF(e){let t=Gs(),{triggers:n,editableRef:r,onInsertToken:i,onInsertText:a,onEmitChange:o,debounceMs:s=150}=e,c=(0,v.useId)(),[l,u]=(0,v.useState)({isActive:!1,activeTrigger:null,query:``,items:[],highlightedIndex:0,isLoading:!1}),d=(0,v.useRef)(-1),f=(0,v.useRef)(null),p=(0,v.useRef)(null),m=(0,v.useCallback)(()=>{p.current&&=(p.current.remove(),null)},[]),h=OF({onHide:(0,v.useCallback)(()=>{m(),u(e=>({...e,isActive:!1,activeTrigger:null,query:``,items:[],highlightedIndex:0,isLoading:!1}))},[m]),hasLightDismiss:!0,hasCloseButton:!1,hasAutoFocus:!1,role:`none`});(0,v.useEffect)(()=>()=>{f.current&&clearTimeout(f.current),m()},[m]);let g=(0,v.useCallback)(()=>{f.current&&=(clearTimeout(f.current),null);let e=l.activeTrigger;e?.searchSource&&e.searchSource.cancel?.(),m(),h.hide(),d.current=-1},[h,l.activeTrigger,m]),_=(0,v.useCallback)(()=>{let e=r.current;if(!e)return;let t=window.getSelection();if(!t||t.rangeCount===0){h.triggerRef(e);return}m();let n=t.getRangeAt(0).cloneRange();n.collapse(!0);let i=typeof n.getBoundingClientRect==`function`?n.getBoundingClientRect():null;if(!i||i.width===0&&i.height===0&&i.top===0&&i.left===0){h.triggerRef(e);return}let a=document.createElement(`span`);a.setAttribute(`aria-hidden`,`true`),a.setAttribute(`data-astryx-trigger-anchor`,``),a.style.position=`fixed`,a.style.left=`${i.left}px`,a.style.top=`${i.top}px`,a.style.width=`${Math.max(i.width,1)}px`,a.style.height=`${i.height}px`,a.style.pointerEvents=`none`,a.style.opacity=`0`,document.body.appendChild(a),p.current=a,h.triggerRef(a)},[r,h,m]),y=(0,v.useCallback)((e,t)=>{f.current&&=(clearTimeout(f.current),null);let n=()=>{if(e.searchSource){e.searchSource.cancel?.(),u(e=>({...e,isLoading:!0}));let n=e.searchSource.search(t);Promise.resolve(n).then(e=>{u(t=>({...t,items:e,highlightedIndex:e.length>0?0:-1,isLoading:!1}))},()=>{u(e=>({...e,items:[],highlightedIndex:-1,isLoading:!1}))})}};e.searchSource&&(e.searchSource.search(``)instanceof Promise&&s>0?(u(e=>({...e,isLoading:!0})),f.current=setTimeout(n,s)):n())},[s]),b=(0,v.useCallback)(e=>{let t=l.activeTrigger;if(!t)return;let n=r.current;if(!n)return;m(),FF(n,d.current);let s=t.onSelect(e);typeof s==`string`?a(s):i(s),o(),g()},[l.activeTrigger,r,m,a,i,o,g]),x=(0,v.useCallback)(()=>{if(!n||n.length===0)return;let e=r.current;if(!e)return;let t=NF(e);if(t===null){l.isActive&&g();return}let i=PF(t,n);if(!i){l.isActive&&g();return}let{trigger:a,query:o,triggerStart:s}=i;!l.isActive||l.activeTrigger!==a?(d.current=s,u(e=>({...e,isActive:!0,activeTrigger:a,query:o,highlightedIndex:0})),_(),y(a,o),h.show()):l.query!==o&&(u(e=>({...e,query:o})),y(a,o))},[n,r,l.isActive,l.activeTrigger,l.query,g,_,y,h]),S=(0,v.useCallback)(e=>{if(!l.isActive||!h.isOpen)return!1;switch(e.key){case`ArrowDown`:return e.preventDefault(),u(e=>({...e,highlightedIndex:e.highlightedIndex<e.items.length-1?e.highlightedIndex+1:0})),!0;case`ArrowUp`:return e.preventDefault(),u(e=>({...e,highlightedIndex:e.highlightedIndex>0?e.highlightedIndex-1:e.items.length-1})),!0;case`Enter`:case`Tab`:return l.highlightedIndex>=0&&l.highlightedIndex<l.items.length&&(e.preventDefault(),b(l.items[l.highlightedIndex]),!0);case`Escape`:return e.preventDefault(),g(),!0;default:return!1}},[l.isActive,l.highlightedIndex,l.items,h.isOpen,b,g]),C=(0,v.useCallback)(e=>`${c}-option-${e}`,[c]);(0,v.useEffect)(()=>{!h.isOpen||l.highlightedIndex<0||document.getElementById(C(l.highlightedIndex))?.scrollIntoView({block:`nearest`})},[l.highlightedIndex,h.isOpen,C]);let w=(n?.length??0)>0?l.isActive&&h.isOpen?{role:`combobox`,"aria-expanded":!0,"aria-controls":c,"aria-activedescendant":l.highlightedIndex>=0?C(l.highlightedIndex):void 0,"aria-haspopup":`listbox`}:{role:`combobox`,"aria-expanded":!1,"aria-haspopup":`listbox`}:{role:`textbox`};return{state:l,handleInput:x,handleKeyDown:S,renderMenu:(0,v.useCallback)(()=>{let e=l.activeTrigger,n=e?.emptySearchResultsText??`No results`,r=e?.loadingText??`Searching…`,i;if(l.isLoading)i=(0,q.jsx)(`div`,{role:`status`,className:`x1b2ylru x2b8uid x141an7d xv1l7n4`,children:r});else if(l.items.length===0&&l.isActive)i=(0,q.jsx)(`div`,{className:`x1b2ylru x2b8uid x141an7d xv1l7n4`,children:n});else{let t=Mi(l.items),n=0;i=t.map(t=>{let r=t.items.map(t=>{let r=n++;return(0,q.jsx)(`div`,{id:C(r),role:`option`,"aria-selected":r===l.highlightedIndex,tabIndex:-1,onMouseDown:e=>{e.preventDefault(),b(t)},onMouseEnter:()=>u(e=>({...e,highlightedIndex:r})),...{0:{className:`x9f619 x78zum5 x6s0dn4 xh8yej3 xlsj2fj xh6dtrn x1ypdohk x1a2a7pz xjbqb8w x1yc453h x9ynric xjm74w1 xw6l6zx x1tgivj0`},1:{className:`x9f619 x78zum5 x6s0dn4 xh8yej3 xlsj2fj xh6dtrn x1ypdohk x1a2a7pz x1yc453h x9ynric xjm74w1 xw6l6zx x1tgivj0 x1lmrjuc`}}[(r===l.highlightedIndex)<<0],children:e?.renderItem?e.renderItem(t):(0,q.jsx)(`span`,{className:`x98rzlu xeuugli xb3r6kr xlyipyv xuxw1ft`,children:t.label})},t.id)});return t.heading?(0,q.jsxs)(`div`,{role:`group`,"aria-label":t.heading,children:[(0,q.jsx)(`div`,{"aria-hidden":`true`,className:`xf314gf x1xye8es xy143xn x141an7d x1ltkj2j xv1l7n4 x87ps6o`,children:t.heading}),r]},`group-${t.heading}`):r})}return h.render((0,q.jsx)(`div`,{id:c,role:`listbox`,"aria-label":e?.menuLabel??t(`@astryx.chatTriggerMenu.suggestions`),...J(Y(`trigger-menu`),{className:`x9f619 x1xiyphd x1odjw0f x9epnlk xfb3i0g`}),children:i}),{placement:`above`,alignment:`start`,offset:O[`--spacing-1`],xstyle:MF.popoverSurface})},[h,c,l,b,C,t]),reset:g,ariaProps:w}}function LF(e){let t=window.getSelection();if(!t)return null;if(t.rangeCount>0){let n=t.getRangeAt(0);if(e.contains(n.startContainer))return t}let n=document.createRange();return n.selectNodeContents(e),n.collapse(!1),t.removeAllRanges(),t.addRange(n),t}function RF(e,t){let n=LF(e);if(!n||n.rangeCount===0)return!1;let r=n.getRangeAt(0);r.deleteContents();let i=document.createTextNode(t);return r.insertNode(i),r.setStartAfter(i),r.collapse(!0),n.removeAllRanges(),n.addRange(r),!0}function zF(e){return`render`in e&&typeof e.render==`function`}function BF(e){let t=e;for(;t;){if(t instanceof HTMLElement&&t.hasAttribute(`data-astryx-token`))return t;t=t.parentNode}return null}function VF({editableRef:e,onEmitChange:t}){let[n,r]=(0,v.useState)([]),i=(0,v.useCallback)(t=>{let n=e.current;if(!n)return;let i=LF(n);if(!i||i.rangeCount===0)return;let a=i.getRangeAt(0),o=document.createElement(`span`),s=`token-${Date.now()}-${Math.random().toString(36).slice(2,6)}`;o.setAttribute(`data-astryx-token`,``),o.setAttribute(`data-astryx-token-value`,t.value),o.setAttribute(`data-astryx-token-id`,s),o.contentEditable=`false`,o.style.display=`inline-flex`,o.style.verticalAlign=`baseline`,a.deleteContents(),a.insertNode(o);let c=document.createTextNode(`\xA0`);o.after(c);let l=document.createRange();return l.setStartAfter(c),l.collapse(!0),i.removeAllRanges(),i.addRange(l),r(e=>[...e,{id:s,span:o,token:t}]),s},[e]),a=(0,v.useCallback)(e=>{if(e.key!==`Backspace`)return!1;let n=window.getSelection();if(!n||!n.isCollapsed||n.rangeCount===0)return!1;let{startContainer:r,startOffset:i}=n.getRangeAt(0);if(r.nodeType===Node.TEXT_NODE&&i===0&&r.previousSibling instanceof HTMLElement&&r.previousSibling.hasAttribute(`data-astryx-token`))return!1;if(r.nodeType===Node.TEXT_NODE&&r.textContent===`\xA0`&&i<=1&&r.previousSibling instanceof HTMLElement&&r.previousSibling.hasAttribute(`data-astryx-token`)){e.preventDefault();let n=r.previousSibling,i=r.parentNode;return i&&(i.removeChild(r),i.removeChild(n)),t(),!0}return!1},[t]),o=(0,v.useCallback)(n=>{let r=e.current;if(!r)return!1;let i=LF(r);if(!i||i.rangeCount===0)return!1;let a=BF(i.getRangeAt(0).startContainer);if(a){n.preventDefault();let e=n.clipboardData.getData(`text/plain`),o=a.nextSibling,s=document.createRange();return o&&o.nodeType===Node.TEXT_NODE?s.setStartAfter(o):s.setStartAfter(a),s.collapse(!0),i.removeAllRanges(),i.addRange(s),RF(r,e),t(),!0}return!1},[e,t]);return{tokenPortals:n,expandToken:(0,v.useCallback)(i=>{if(!e.current)return;let a=n.find(e=>e.id===i);if(!a)return;let{span:o}=a,s=o.getAttribute(`data-astryx-token-value`)??``,c=document.createTextNode(s),l=o.nextSibling;l?.nodeType===Node.TEXT_NODE&&l.textContent===`\xA0`&&l.remove(),o.replaceWith(c);let u=window.getSelection();if(u){let e=document.createRange();e.setStartAfter(c),e.collapse(!0),u.removeAllRanges(),u.addRange(e)}r(e=>e.filter(e=>e.id!==i)),t()},[e,n,t]),insertToken:i,handleKeyDown:a,handlePaste:o,cleanupPortals:(0,v.useCallback)(()=>{r(t=>t.filter(t=>e.current?.contains(t.span)))},[e])}}var HF={base:{k1xSpc:`x3nfvp2`,kGNEyG:`x6s0dn4`,kjj79g:`xl56j7k`,kOIVth:`xzye2dw`,kZKoxP:`x1grt7ep`,k8WAf4:`xt970qd`,kg3NbH:`xf314gf`,kaIpWk:`xjspbzw`,kMv6JI:`xjb2p0i`,kGuDYH:`x141an7d`,kLWn49:`x1ltkj2j`,k63SB2:`x1e4wzip`,khDVqt:`xuxw1ft`,$$css:!0}},UF={neutral:{kWkggS:`x17x4s8c`,kMwMTN:`x1tgivj0`,$$css:!0},info:{kWkggS:`x1ewilqj`,kMwMTN:`x17wrial`,$$css:!0},success:{kWkggS:`xdsz4j9`,kMwMTN:`xri61p4`,$$css:!0},warning:{kWkggS:`x1q8g9m5`,kMwMTN:`xrebv38`,$$css:!0},error:{kWkggS:`x1pjz0fi`,kMwMTN:`x1m024r3`,$$css:!0},blue:{kWkggS:`x1o0wnni`,kMwMTN:`x1vvqiwl`,$$css:!0},cyan:{kWkggS:`x1rgj867`,kMwMTN:`x1txnczv`,$$css:!0},green:{kWkggS:`x1sqjeoo`,kMwMTN:`xltfdvo`,$$css:!0},orange:{kWkggS:`x1e9xt6e`,kMwMTN:`xm47u9q`,$$css:!0},pink:{kWkggS:`xnpoty2`,kMwMTN:`xiuofww`,$$css:!0},purple:{kWkggS:`x16i6n6f`,kMwMTN:`x1m9wyeb`,$$css:!0},red:{kWkggS:`x1cibrc5`,kMwMTN:`x1joocv1`,$$css:!0},teal:{kWkggS:`x1jtji5o`,kMwMTN:`x9x0lbs`,$$css:!0},yellow:{kWkggS:`x1bo7t0x`,kMwMTN:`xdhq94a`,$$css:!0}};function WF({variant:e=`neutral`,label:t,icon:n,xstyle:r,className:i,style:a,ref:o,...s}){return(0,q.jsxs)(`span`,{ref:o,...J(Y(`badge`,{variant:e}),w(HF.base,UF[e],r),i,a),...s,children:[n,t]})}WF.displayName=`Badge`;var GF={container:{kWkggS:`x10xzikg`,"--_hovercard-radius":`xqwz7mz`,kaIpWk:`x7a53xk`,kGVxlE:`x14hfi27`,$$css:!0}};function KF(e){return e.hasAttribute(`tabindex`)?e.tabIndex>=0:[`A`,`BUTTON`,`INPUT`,`SELECT`,`TEXTAREA`].includes(e.tagName)?!e.disabled:!!e.isContentEditable}function qF(e={}){let{placement:t=`above`,alignment:n=`center`,delay:r=300,hideDelay:i=200,focusTrigger:a=`auto`,isEnabled:o=!0,label:s,isOpen:c,isDefaultOpen:l=!1,onShow:u,onHide:d}=e,f=Ta({mode:`context`,onShow:u,onHide:d}),p=GF.container,m=(0,v.useRef)(null),h=(0,v.useRef)(null),g=(0,v.useRef)(null),_=(0,v.useRef)(!1),y=(0,v.useRef)(!1),b=(0,v.useCallback)(()=>{m.current&&=(clearTimeout(m.current),null),h.current&&=(clearTimeout(h.current),null)},[]),x=(0,v.useCallback)(()=>{!o||c===!1||(b(),m.current=setTimeout(()=>{f.show()},r))},[o,c,b,f,r]),S=(0,v.useCallback)(()=>{c!==!0&&(b(),h.current=setTimeout(()=>{_.current||f.hide()},i))},[c,b,f,i]),C=(0,v.useCallback)(()=>{x()},[x]),w=(0,v.useCallback)(()=>{S()},[S]),T=(0,v.useCallback)(()=>{if(o){if(y.current){y.current=!1;return}b(),f.show()}},[o,b,f]),E=(0,v.useCallback)(e=>{let t=e.relatedTarget;document.getElementById(f.id)?.contains(t)||S()},[f.id,S]),D=(0,v.useCallback)(e=>{e.key===`Escape`&&(e.stopPropagation(),b(),f.hide())},[b,f]),k=(0,v.useCallback)(e=>{g.current&&(g.current.removeEventListener(`mouseenter`,C),g.current.removeEventListener(`mouseleave`,w),g.current.removeEventListener(`focusin`,T),g.current.removeEventListener(`focusout`,E),g.current.removeEventListener(`keydown`,D)),e&&(e.addEventListener(`mouseenter`,C),e.addEventListener(`mouseleave`,w),(a===`always`||a===`auto`&&KF(e))&&(e.addEventListener(`focusin`,T),e.addEventListener(`focusout`,E)),e.addEventListener(`keydown`,D)),g.current=e},[a,C,w,T,E,D]),A=(0,v.useCallback)(e=>{f.ref(e),k(e)},[f,k]);(0,v.useEffect)(()=>()=>{b()},[b]),(0,v.useEffect)(()=>{l&&f.show()},[]),(0,v.useEffect)(()=>{c!==void 0&&(c?(b(),f.show()):(b(),f.hide()))},[c,b,f]);let j=(0,v.useCallback)((e,r)=>{let i=r?.placement??t,a=Y(`hovercard`).className,o={placement:i,alignment:r?.alignment??n,offset:O[`--spacing-1`],role:s?`dialog`:`group`,"aria-label":s||void 0,xstyle:[p,Ea[i],r?.xstyle],className:r?.className?`${a} ${r.className}`:a,style:r?.style,as:`span`};return f.render((0,q.jsx)(`span`,{className:`x1lliihq x1vlblms xvmdzux x126nfab x1t818jl`,onMouseEnter:()=>{_.current=!0,b()},onMouseLeave:()=>{_.current=!1,S()},onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),y.current=!0,b(),f.hide(),g.current?.focus())},onBlur:e=>{let t=e.relatedTarget;e.currentTarget.contains(t)||g.current?.contains(t)||S()},children:e}),o)},[f,t,n,s,b,S,p]);return{ref:A,positionRef:f.ref,interactionRef:k,anchorId:f.anchorId,describedBy:f.id,renderHoverCard:j,show:f.show,hide:f.hide}}function JF(e){return typeof e==`string`||typeof e==`number`}function YF(...e){let t=e.filter(Boolean);return t.length>0?t.join(` `):void 0}function XF({children:e,content:t,placement:n=`above`,alignment:r=`center`,delay:i=300,hideDelay:a=200,focusTrigger:o=`auto`,isEnabled:s=!0,label:c,onOpenChange:l,hasHoverIndication:u=`auto`,isOpen:d,isDefaultOpen:f,xstyle:p,className:m,style:h}){let g=(0,v.useRef)(null),_=JF(e),b=u===!0||u===`auto`&&_,x=qF({placement:n,alignment:r,delay:i,hideDelay:a,focusTrigger:o,isEnabled:s,label:c,isOpen:d,isDefaultOpen:f,onShow:(0,v.useCallback)(()=>{l?.(!0)},[l]),onHide:(0,v.useCallback)(()=>{l?.(!1)},[l])});y(()=>{if(_)return;let e=g.current;if(!e)return;let t=e.firstElementChild;if(!t)return;x.ref(t);let n=t.getAttribute(`aria-describedby`);return t.setAttribute(`aria-describedby`,YF(n,x.describedBy)??``),()=>{x.ref(null),n?t.setAttribute(`aria-describedby`,n):t.removeAttribute(`aria-describedby`)}},[_,x.ref,x.describedBy]);let S=x.renderHoverCard(t,{xstyle:p,className:m,style:h});return _?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{ref:x.ref,tabIndex:0,"aria-describedby":x.describedBy,...{0:{className:`xt0psk2`},1:{className:`xt0psk2 xujl8zx xev0dqp xycaml9 x11b3rvo`}}[!!b<<0],children:e}),S]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{ref:g,className:`xjp7ctv`,children:e}),S]})}XF.displayName=`HoverCard`;function ZF(e){let t=e.split(`
129
- `).length,n=e.length;return t>1?`${t} lines, ${n} chars`:`${n} chars`}function QF({text:e,onExpand:t}){let n=Gs(),r=ZF(e),i=(0,q.jsxs)(`div`,{className:`x78zum5 xdt5ytf x1txdalj x17fpy1y`,children:[(0,q.jsx)(`div`,{className:`x9m5x89 x141an7d x1ltkj2j x1tgivj0 x126k92a x13faqbe x1xiyphd x1odjw0f`,children:e}),(0,q.jsxs)(`div`,{className:`x78zum5 x6s0dn4 x1qughib x1txdalj`,children:[(0,q.jsx)(`span`,{className:`x141an7d xv1l7n4`,children:r}),t&&(0,q.jsx)(ec,{label:n(`@astryx.chat.pastedText.expand`),variant:`ghost`,size:`sm`,onClick:t})]})]});return(0,q.jsx)(XF,{content:i,placement:`above`,alignment:`start`,hasHoverIndication:!1,children:(0,q.jsx)(WF,{label:r,variant:`neutral`})})}QF.displayName=`ChatPastedTextToken`;function $F(e){let t=e.split(`
130
- `).length,n=e.length;return{value:e,label:t>1?`${t} lines, ${n} chars`:`${n} chars`,variant:`neutral`}}function eI({inputRef:e,threshold:t=200,toToken:n=$F}){return{onPaste:(0,v.useCallback)((r,i)=>{if(i.length<=t)return!1;let a=n(i);return e.current?.insertToken(a),!0},[e,t,n])}}var tI=(0,v.createContext)(null);tI.displayName=`ChatMessageContext`;function nI(){return(0,v.use)(tI)}var rI=(0,v.createContext)(null);rI.displayName=`ChatListContext`;function iI(){return(0,v.use)(rI)}var aI=(0,v.createContext)(null);aI.displayName=`ChatComposerContext`;function oI(){return(0,v.use)(aI)}var sI=(0,v.createContext)(null);sI.displayName=`ChatLayoutContext`;function cI(){return(0,v.use)(sI)}var lI=l(h(),1),uI=22,dI={root:{kVAEAm:`x1n2onr6`,k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,kAzted:`xe0957l`,$$css:!0},disabled:{kSiTet:`xbyyjgo`,kfzvcC:`x47corl`,$$css:!0}};function fI(e){let t=window.getSelection();if(!t)return;let n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}function pI(e){let t=``;for(let n of Array.from(e.childNodes))n.nodeType===Node.TEXT_NODE?t+=n.textContent??``:n instanceof HTMLElement&&(n.hasAttribute(`data-astryx-token`)?t+=n.getAttribute(`data-astryx-token-value`)??``:n.tagName===`BR`?t+=`
131
- `:t+=pI(n));return t}function mI(e){let t=Gs(),n=oI(),r=e.value!==void 0,{ref:i,handleRef:a,value:o=n?.value,onChange:s,placeholder:c,maxRows:l=8,triggers:u,debounceMs:d=150,hasHistory:f=!0,label:p,isDisabled:m=n?.isDisabled??!1,onPaste:h,pasteAsToken:g,onFiles:_,onSubmit:y=n?.onSubmit,onKeyDown:b,xstyle:x,className:S,style:C,...T}=e,E=p??t(`@astryx.chat.composerInput.label`),D=c??n?.placeholder??t(`@astryx.chat.composer.placeholder`),O=n?.onChange,k=(0,v.useCallback)(e=>{if(r){s?.(e);return}O?.(e),s!==O&&s?.(e)},[O,r,s]),A=(0,v.useRef)(null),j=(0,v.useRef)(null),[M,N]=(0,v.useState)(!0),P=(0,v.useRef)([]),F=(0,v.useRef)(-1),I=(0,v.useRef)(``),L=(0,v.useRef)(void 0),R=(0,v.useRef)(()=>void 0),z=(0,v.useRef)(()=>{}),B={insertToken:e=>R.current(e),expandToken:e=>W.expandToken(e),insertText:e=>z.current(e),focus:()=>A.current?.focus(),getValue:()=>pI(A.current??document.createElement(`div`))};j.current=B,(0,v.useImperativeHandle)(a,()=>B);let V=n?.inputControlRef;(0,v.useEffect)(()=>{if(V)return V.current={focus:()=>A.current?.focus()},()=>{V.current=null}},[V]),(0,v.useEffect)(()=>{if(o===void 0||!A.current)return;if(o===L.current){L.current=void 0;return}let e=A.current;if(pI(e)!==o){L.current=void 0;let t=document.activeElement===e;if(e.textContent=o,t){let t=window.getSelection();if(t){let n=document.createRange();n.selectNodeContents(e),n.collapse(!1),t.removeAllRanges(),t.addRange(n)}}N(o.length===0)}else L.current=void 0},[o]);let H=(0,v.useRef)(null),U=(0,v.useCallback)(()=>{if(!A.current)return;let e=pI(A.current),t=A.current.querySelector(`[data-astryx-token], [data-astryx-dictation-interim]`)!=null,n=e.trim().length===0&&!t,r=n?``:e;L.current=r,N(n),k?.(r),H.current?.()},[k]),W=VF({editableRef:A,onEmitChange:U});H.current=W.cleanupPortals;let ee=eI({inputRef:j}),te=g===!1?null:g??ee,ne=(0,v.useCallback)(e=>{let t=A.current;t&&RF(t,e)},[]);R.current=W.insertToken,z.current=ne;let re=IF({triggers:u,editableRef:A,onInsertToken:W.insertToken,onInsertText:ne,onEmitChange:U,debounceMs:d}),ie=(0,v.useCallback)(()=>{U(),re.handleInput()},[U,re]),ae=(0,v.useCallback)(e=>{if(!re.handleKeyDown(e)&&(b?.(e),!e.defaultPrevented)){if(e.key===`Backspace`){let t=window.getSelection();if(t&&t.isCollapsed&&t.rangeCount>0){let{startContainer:n,startOffset:r}=t.getRangeAt(0);if(!(n.nodeType===Node.TEXT_NODE&&r===0&&n.previousSibling instanceof HTMLElement&&n.previousSibling.hasAttribute(`data-astryx-token`))&&n.nodeType===Node.TEXT_NODE&&n.textContent===`\xA0`&&r<=1&&n.previousSibling instanceof HTMLElement&&n.previousSibling.hasAttribute(`data-astryx-token`)){e.preventDefault();let t=n.previousSibling,r=n.parentNode;r&&(r.removeChild(n),r.removeChild(t)),U();return}}}if(e.key===`Enter`&&!e.shiftKey){if(e.nativeEvent.isComposing||e.nativeEvent.keyCode===229||(e.preventDefault(),!A.current))return;let t=pI(A.current).trim();if(!t)return;f&&(P.current.push(t),F.current=-1,I.current=``),y?.(t),A.current.textContent=``,N(!0),k?.(``);return}if(f&&(e.key===`ArrowUp`||e.key===`ArrowDown`)){if(!A.current)return;let t=pI(A.current),n=P.current;if(n.length===0)return;if(e.key===`ArrowUp`){F.current===-1&&(I.current=t);let r=F.current===-1?n.length-1:Math.max(0,F.current-1);F.current=r,A.current.textContent=n[r],fI(A.current),U(),e.preventDefault()}else if(e.key===`ArrowDown`&&F.current!==-1){let t=F.current+1;t>=n.length?(F.current=-1,A.current.textContent=I.current,I.current&&fI(A.current)):(F.current=t,A.current.textContent=n[t],fI(A.current)),U(),e.preventDefault()}}}},[f,y,k,U,re,b]),oe=(0,v.useCallback)(e=>{let t=A.current;if(!t||(LF(t),W.handlePaste(e)))return;let n=Array.from(e.clipboardData.files);if(n.length>0){e.preventDefault(),_?.(n);return}e.preventDefault();let r=e.clipboardData.getData(`text/plain`);if(te?.onPaste(e,r)){U();return}if(h?.(e,r)){U();return}RF(t,r),U()},[_,h,U,W,te]),se=l*uI;return(0,q.jsxs)(`div`,{ref:i,...J(Y(`chat-composer-input`),w(dI.root,m&&dI.disabled,x),S,C),...T,children:[M&&(0,q.jsx)(`div`,{className:`x10l6tqk x13vifvy x1o0tod xtijo5x x47corl xv1l7n4 xjm74w1 x6pjikd x19v9tvf x9ynric x87ps6o x9epnlk`,"aria-hidden":`true`,children:D}),(0,q.jsx)(`div`,{ref:A,"aria-multiline":`true`,"aria-label":E,contentEditable:!m,suppressContentEditableWarning:!0,onInput:ie,onKeyDown:ae,onPaste:oe,...re.ariaProps,...J({className:`x1a2a7pz x126k92a x13faqbe x1odjw0f xjm74w1 x6pjikd x19v9tvf x9ynric x1tgivj0 xxugrtn x9epnlk`},{style:{maxHeight:`${se}px`}})}),re.renderMenu(),W.tokenPortals.filter(({span:e})=>e.isConnected).map(({id:e,span:t,token:n})=>(0,lI.createPortal)(zF(n)?(0,q.jsx)(`span`,{children:n.render()},e):n.value.length>(te===null?1/0:200)?(0,q.jsx)(QF,{text:n.value,onExpand:()=>W.expandToken(e)},e):(0,q.jsx)(WF,{label:n.label,variant:n.variant,icon:n.icon},e),t))]})}mI.displayName=`ChatComposerInput`;var hI={root:{kaIpWk:`xy0xnkn`,kmuXW:`x2lah0s`,$$css:!0}};function gI(e){let t=Gs(),n=oI(),{isStopShown:r=n?.isStopShown??!1,isDisabled:i=!(n?.canSend??!1),onSend:a,onStop:o=n?.onStop,sendIcon:s,stopIcon:c,size:l=`md`,xstyle:u,className:d,style:f,ref:p,...m}=e,h=a??(()=>n?.onSubmit(``)),g=ha(`stop`),_=ha(`arrowUp`);return(0,q.jsx)(ec,{ref:p,label:t(r?`@astryx.chatSendButton.stop`:`@astryx.chatSendButton.send`),variant:r?`secondary`:`primary`,size:l,icon:r?c??g:s??_,isIconOnly:!0,isDisabled:!r&&i,onClick:r?o:h,...m,...J(Y(`chat-send-button`),{className:d},f),xstyle:[hI.root,u]})}gI.displayName=`ChatSendButton`;var _I={body:{kVAEAm:`x1n2onr6`,kY2c9j:`xhtitgo`,k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,kmVPX3:`x18oj4ui`,kOIVth:`x1txdalj`,kaIpWk:`x1xunbrq`,kWkggS:`x1prclbq`,kkrTdU:`x1ed109x`,kmkexE:`xrg7dcy`,$$css:!0},compact:{"--_chat-composer-padding":`x18zce08`,kOIVth:`xzye2dw`,$$css:!0}},vI={low:{kGVxlE:`x1i5ehqx xhouywz`,knuKkz:`xyavpck`,$$css:!0},none:{kMzoRj:`x1litavf`,ksu8eU:`x1y0btm7`,kVAM5u:`xvy26l8 x6q1khz`,kmVPX3:`x1b50gpf`,kGVxlE:`x1gnnqk1 x12y27fx xuihb5h`,$$css:!0}};function yI(e){let t=Gs(),{ref:n,onSubmit:r,onStop:i,isStopShown:a=!1,value:o,onChange:s,placeholder:c,isDisabled:l=!1,density:u=`balanced`,elevation:d=`low`,drawer:f,headerActions:p,headerContext:m,input:h,footerActions:g,sendActions:_,sendButton:y,status:b,statusPosition:x=`bottom`,xstyle:S,className:C,style:T,...E}=e,D=c??t(`@astryx.chat.composer.placeholder`),[O,k]=(0,v.useState)(``),A=o!==void 0,j=A?o:O,M=(0,v.useCallback)(e=>{A||k(e),s?.(e)},[A,s]),N=(0,v.useCallback)(()=>{let e=j.trim();!e||l||(r(e),M(``))},[j,l,r,M]),P=j.trim().length>0&&!l,F=(0,v.useRef)(null),I=(0,v.useRef)(null),L=(0,v.useCallback)(e=>{if(!e.target.closest(`button, a, [role="button"], [contenteditable="true"], [data-astryx-token]`)){if(I.current){I.current.focus();return}(F.current?.querySelector(`[contenteditable="true"], textarea`))?.focus()}},[]),R=b?(0,q.jsxs)(`div`,{role:b.type===`error`?`alert`:`status`,...{0:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x1htvmrp xvpcij2 xckg3cf xkvxy4d x6k0y1c`},4:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x2gtn7z x9jihrk x1z0f2p2 xy7p8pm xzc3kxz`},2:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x1htvmrp xvpcij2 xckg3cf xkvxy4d x6k0y1c x1pritpl x1joocv1`},6:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x2gtn7z x9jihrk x1z0f2p2 xy7p8pm xzc3kxz x1pritpl x1joocv1`},1:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x1htvmrp xvpcij2 xckg3cf xkvxy4d x6k0y1c x24i8r5 xdhq94a`},5:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x2gtn7z x9jihrk x1z0f2p2 xy7p8pm xzc3kxz x24i8r5 xdhq94a`},3:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x1htvmrp xvpcij2 xckg3cf xkvxy4d x6k0y1c x24i8r5 xdhq94a`},7:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x2gtn7z x9jihrk x1z0f2p2 xy7p8pm xzc3kxz x24i8r5 xdhq94a`}}[(x===`top`)<<2|(b.type===`error`)<<1|(b.type===`warning`)<<0],children:[(0,q.jsx)(fa,{icon:b.type===`error`?`error`:`warning`,size:`md`,color:b.type===`error`?`error`:`warning`}),b.message]}):null,z=(0,v.useMemo)(()=>({value:j,onChange:M,onSubmit:N,placeholder:D,isDisabled:l,isStopShown:a,canSend:P,onStop:i,inputControlRef:I}),[j,M,N,D,l,a,P,i]);return(0,q.jsx)(aI,{value:z,children:(0,q.jsxs)(`div`,{ref:n,...J(Y(`chat-composer`,{density:u}),{0:{className:`x1n2onr6 x1ja2u2z xc8icb0 x78zum5 xdt5ytf xx161y6 xk0ittl xcw7vlg`},1:{className:`x1n2onr6 x1ja2u2z xc8icb0 x78zum5 xdt5ytf xx161y6 xk0ittl xcw7vlg x197sbye x47corl`}}[!!l<<0],C,T),...E,children:[x===`top`&&R,f,(0,q.jsxs)(`div`,{ref:F,onClick:L,...w(_I.body,vI[d],u===`compact`&&_I.compact,S),children:[(p||m)&&(0,q.jsxs)(`div`,{className:`x78zum5 x6s0dn4 x1qughib x1txdalj xe0p6wg`,children:[(0,q.jsx)(`div`,{className:`x78zum5 x6s0dn4 xzye2dw`,children:p}),(0,q.jsx)(`div`,{className:`x78zum5 x6s0dn4 x1txdalj xvc5jky x141an7d x1ltkj2j xv1l7n4`,children:m})]}),(0,q.jsx)(`div`,{className:`x78zum5 xdt5ytf`,children:h??(0,q.jsx)(mI,{})}),(0,q.jsxs)(`div`,{className:`x78zum5 x6s0dn4 x1qughib x1txdalj x21xpn4`,children:[(0,q.jsx)(`div`,{className:`x78zum5 x6s0dn4 xzye2dw`,children:g}),(0,q.jsxs)(`div`,{className:`x78zum5 x6s0dn4 xzye2dw`,children:[_,y??(0,q.jsx)(gI,{})]})]})]}),x===`bottom`&&R]})})}yI.displayName=`ChatComposer`;var bI={root:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,kUk6DE:`x98rzlu`,kAzted:`x2lwn1j`,$$css:!0},inner:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,kUk6DE:`x98rzlu`,kAzted:`x2lwn1j`,$$css:!0},gapCompact:{kOIVth:`x1txdalj`,k8WAf4:`xce4md1`,kg3NbH:`xrrkdod`,$$css:!0},gapBalanced:{kOIVth:`x18g69wz`,k8WAf4:`x1na6nto`,kg3NbH:`x1pzlopt`,$$css:!0},gapSpacious:{kOIVth:`x1qh66ti`,k8WAf4:`xq6koh6`,kg3NbH:`xm7rs69`,$$css:!0}},xI={0:{kOIVth:`xsn7fz1`,$$css:!0},1:{kOIVth:`xzye2dw`,$$css:!0},2:{kOIVth:`x1txdalj`,$$css:!0},3:{kOIVth:`xjcht0a`,$$css:!0},4:{kOIVth:`x18g69wz`,$$css:!0},5:{kOIVth:`x9mgr7n`,$$css:!0},6:{kOIVth:`x1qh66ti`,$$css:!0},8:{kOIVth:`x4t41sb`,$$css:!0},10:{kOIVth:`x3hoi3v`,$$css:!0},"0.5":{kOIVth:`x1lsbc85`,$$css:!0},"1.5":{kOIVth:`x1s4dlld`,$$css:!0}};function SI({children:e,emptyState:t,scrollToTopAction:n,density:r=`balanced`,gap:i,isStreaming:a=!1,xstyle:o,className:s,style:c,"data-testid":l,ref:u,...d}){let f=cI(),p=(0,v.useRef)(null),m=(0,v.useRef)(null),[h,g]=(0,v.useTransition)();(0,v.useEffect)(()=>{if(f?.contentRef&&m.current)return f.contentRef(m.current),()=>f.contentRef(null)},[f]);let _=e!=null&&e!==!1&&!(Array.isArray(e)&&e.length===0);(0,v.useEffect)(()=>{let e=f?.scrollContainerRef?.current;if(!n||!p.current)return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&g(async()=>{await n()})},{root:e??null,threshold:0});return t.observe(p.current),()=>t.disconnect()},[n,f]);let y=(0,v.useMemo)(()=>({density:r}),[r]),b=r===`compact`?bI.gapCompact:r===`spacious`?bI.gapSpacious:bI.gapBalanced,x=i==null?null:xI[i];return(0,q.jsx)(rI,{value:y,children:(0,q.jsx)(`div`,{...d,ref:u,role:`log`,"aria-live":`polite`,"aria-busy":a||void 0,tabIndex:0,"data-testid":l,...J(Y(`chat-message-list`,{density:r}),w(bI.root,o),s,c),children:(0,q.jsxs)(`div`,{ref:m,...w(bI.inner,b,x),children:[n&&(0,q.jsx)(`div`,{ref:p,"aria-hidden":!0}),h&&(0,q.jsx)(`div`,{className:`x78zum5 xl56j7k x8o8v82`,children:(0,q.jsx)(ro,{size:`md`})}),(0,q.jsx)(`div`,{className:`x98rzlu x2lwn1j`,"aria-hidden":!0}),_?e:t?(0,q.jsx)(`div`,{className:`x78zum5 x6s0dn4 xl56j7k x98rzlu x2lwn1j`,children:t}):null]})})})}SI.displayName=`ChatMessageList`;var CI={root:{k1xSpc:`x78zum5`,kGNEyG:`x1cy8zhl`,ks0D6T:`x193iq5w`,$$css:!0},rootGapCompact:{kOIVth:`x1s4dlld`,$$css:!0},rootGapBalanced:{kOIVth:`x1txdalj`,$$css:!0},rootGapSpacious:{kOIVth:`xjcht0a`,$$css:!0},rootAssistant:{kXwgrk:`x1q0g3np`,kjj79g:`x1nhvcw1`,$$css:!0},rootUser:{kXwgrk:`x15zctf7`,kjj79g:`x1nhvcw1`,$$css:!0},rootSystem:{kXwgrk:`x1q0g3np`,kjj79g:`xl56j7k`,$$css:!0},contentColumn:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,kUk6DE:`x98rzlu`,k7Eaqz:`xeuugli`,$$css:!0},contentColumnSystem:{ks0D6T:`xq8v1hd`,kGNEyG:`x6s0dn4`,$$css:!0},contentColumnAssistant:{kGNEyG:`x1cy8zhl`,$$css:!0},contentColumnUser:{kGNEyG:`xuk3077`,$$css:!0},childrenWrap:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,k7Eaqz:`xeuugli`,kzqmXN:`xh8yej3`,$$css:!0},childrenAssistant:{kGNEyG:`x1cy8zhl`,$$css:!0},childrenUser:{kGNEyG:`xuk3077`,$$css:!0},childrenSystem:{kGNEyG:`x6s0dn4`,$$css:!0},childrenGapCompact:{kOIVth:`x1lsbc85`,$$css:!0},childrenGapBalanced:{kOIVth:`xzye2dw`,$$css:!0},childrenGapSpacious:{kOIVth:`x1s4dlld`,$$css:!0}};function wI({sender:e,children:t,avatar:n,name:r,metadata:i,density:a,xstyle:o,className:s,style:c,"data-testid":l,ref:u,...d}){let f=Gs(),p=iI(),m=a??p?.density??`balanced`,h=(0,v.useMemo)(()=>({sender:e,density:m}),[e,m]),g=m===`compact`?CI.rootGapCompact:m===`spacious`?CI.rootGapSpacious:CI.rootGapBalanced,_=m===`compact`?CI.childrenGapCompact:m===`spacious`?CI.childrenGapSpacious:CI.childrenGapBalanced,y=e===`system`?CI.rootSystem:e===`user`?CI.rootUser:CI.rootAssistant,b=e===`system`?CI.contentColumnSystem:e===`user`?CI.contentColumnUser:CI.contentColumnAssistant,x=e===`system`?CI.childrenSystem:e===`user`?CI.childrenUser:CI.childrenAssistant,S=e===`system`,C=n!=null&&!S,T=r!=null&&!S,E=(0,v.useId)();return(0,q.jsx)(tI,{value:h,children:(0,q.jsxs)(`article`,{...d,ref:u,"data-testid":l,"aria-label":T?void 0:f(`@astryx.chatMessage.messageFrom`,{sender:e}),"aria-labelledby":T?E:void 0,...J(Y(`chat-message`,{sender:e,density:m}),w(CI.root,y,C&&g,o),s,c),children:[C&&(0,q.jsx)(`div`,{className:`x2lah0s x5du68j`,children:n}),(0,q.jsxs)(`div`,{...w(CI.contentColumn,b),children:[T&&(0,q.jsx)(`div`,{id:E,className:`x141an7d x2mo6ok xv1l7n4 x1ltkj2j x14cgwvg`,children:r}),(0,q.jsx)(`div`,{...w(CI.childrenWrap,x,_),children:t}),i!=null&&!S&&(0,q.jsx)(`div`,{children:i})]})]})})}wI.displayName=`ChatMessage`;var TI={content:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,ks0D6T:`xl6temz`,kaIpWk:`xashgol`,kMv6JI:`x9ynric`,kGuDYH:`xjm74w1`,kLWn49:`xw6l6zx`,kHjlTd:`x1mzt3pk`,kTgw9:`x13faqbe`,$$css:!0},radiusCompact:{kaIpWk:`x1hviunn`,$$css:!0},paddingCompact:{k8WAf4:`x8o8v82`,kg3NbH:`x1pzlopt`,$$css:!0},paddingBalanced:{k8WAf4:`x8o8v82`,kg3NbH:`x1pzlopt`,$$css:!0},paddingSpacious:{k8WAf4:`x1na6nto`,kg3NbH:`xzz68wx`,$$css:!0},paddingBlockNone:{k8WAf4:`xt970qd`,$$css:!0},metadataPaddingCompact:{kg3NbH:`x1pzlopt`,$$css:!0},metadataPaddingBalanced:{kg3NbH:`x1pzlopt`,$$css:!0},metadataPaddingSpacious:{kg3NbH:`xzz68wx`,$$css:!0},metadataReducedGap:{keoZOQ:`x1c40v9y`,$$css:!0},headerReducedGap:{k1K539:`xdrfirk`,$$css:!0},nameRow:{kZKoxP:`x1grt7ep`,k1xSpc:`x78zum5`,kGNEyG:`x6s0dn4`,$$css:!0},alignEnd:{k9WMMc:`xp4054r`,$$css:!0},assistant:{kWkggS:`x17x4s8c`,kMwMTN:`x1tgivj0`,$$css:!0},user:{kWkggS:`x17x4s8c`,kMwMTN:`x1tgivj0`,$$css:!0},ghost:{kWkggS:`xjbqb8w`,kMwMTN:`x1tgivj0`,$$css:!0},groupFirstAssistant:{kVL7Gh:`xrfs2vl`,$$css:!0},groupMiddleAssistant:{krdFHd:`x3qb8m`,kVL7Gh:`xrfs2vl`,$$css:!0},groupLastAssistant:{krdFHd:`x3qb8m`,$$css:!0},groupFirstUser:{kT0f0o:`x1whkvtz`,$$css:!0},groupMiddleUser:{kfmiAY:`x126per9`,kT0f0o:`x1whkvtz`,$$css:!0},groupLastUser:{kfmiAY:`x126per9`,$$css:!0}};function EI({children:e,variant:t=`filled`,name:n,metadata:r,group:i,xstyle:a,className:o,style:s,"data-testid":c,ref:l,...u}){let d=nI(),f=d?.sender??`assistant`,p=d?.density??`balanced`,m=p===`compact`?TI.paddingCompact:p===`spacious`?TI.paddingSpacious:TI.paddingBalanced,h=f===`user`,g=t===`ghost`?TI.ghost:h?TI.user:TI.assistant,_=i===`first`?h?TI.groupFirstUser:TI.groupFirstAssistant:i===`middle`?h?TI.groupMiddleUser:TI.groupMiddleAssistant:i===`last`?h?TI.groupLastUser:TI.groupLastAssistant:null,v=p===`compact`?TI.metadataPaddingCompact:p===`spacious`?TI.metadataPaddingSpacious:TI.metadataPaddingBalanced;return(0,q.jsxs)(q.Fragment,{children:[n&&(0,q.jsx)(`div`,{"data-chat-name":!0,...w(v,TI.nameRow,TI.headerReducedGap,h&&TI.alignEnd),children:n}),(0,q.jsx)(`div`,{...u,ref:l,"data-testid":c,...J(Y(`chat-message-bubble`,{sender:f,variant:t,density:p}),w(TI.content,p===`compact`&&TI.radiusCompact,g,m,t===`ghost`&&TI.paddingBlockNone,_,a),o,s),children:e}),r&&(0,q.jsx)(`div`,{...w(v,TI.metadataReducedGap,h&&TI.alignEnd),children:r})]})}EI.displayName=`ChatMessageBubble`;var DI=1e3/60;function OI({scrollRef:e,enabled:t=!0,lockThreshold:n=10,buttonThreshold:r=100,damping:i=.7,stiffness:a=.05,mass:o=1.25}){let[s,c]=(0,v.useState)(!1),[l,u]=(0,v.useState)(!0),d=(0,v.useRef)(!0),f=(0,v.useRef)(!0),p=(0,v.useRef)(0),m=(0,v.useRef)(!1),h=(0,v.useRef)(void 0),g=(0,v.useRef)(0),_=(0,v.useRef)(0),y=(0,v.useRef)(0),b=(0,v.useCallback)(()=>{let t=e.current;if(!t||!d.current){m.current=!1,h.current=void 0,p.current=0;return}if(t.scrollHeight<=t.clientHeight){m.current=!1,h.current=void 0,p.current=0;return}let n=t.scrollHeight-t.clientHeight,r=n-t.scrollTop;if(Math.abs(r)<.5&&Math.abs(p.current)<.1){t.scrollTop=n,m.current=!1,h.current=void 0,p.current=0;return}let s=performance.now(),c=h.current?(s-h.current)/DI:1;h.current=s,p.current=(i*p.current+a*r)/o,t.scrollTop+=p.current*c,requestAnimationFrame(b)},[e,i,a,o]),x=(0,v.useCallback)(()=>{let t=e.current;t&&(m.current=!1,p.current=0,h.current=void 0,t.scrollTop=t.scrollHeight-t.clientHeight,g.current=t.scrollTop)},[e]),S=Ye(`(prefers-reduced-motion: reduce)`),C=(0,v.useCallback)(()=>{if(d.current){if(S){x();return}m.current||(m.current=!0,h.current=void 0,requestAnimationFrame(b))}},[b,x,S]),w=(0,v.useCallback)(e=>{if(d.current=!0,u(!0),c(!1),f.current=!1,e?.behavior===`instant`){x();return}C()},[C,x]),T=(0,v.useCallback)(t=>{let n=e.current;if(!n)return;let r=n.getBoundingClientRect(),i=t.getBoundingClientRect().top-r.top+n.scrollTop;n.scrollTo({top:i,behavior:`instant`}),g.current=n.scrollTop},[e]),E=(0,v.useCallback)(()=>{let t=e.current;if(!t)return;let n=t.getElementsByClassName(`astryx-chat-message`),r=n[n.length-1];r instanceof HTMLElement&&T(r)},[e,T]),D=(0,v.useCallback)(()=>{d.current=!0,u(!0),c(!1),C()},[C]),O=(0,v.useCallback)(()=>{d.current=!1,m.current=!1,u(!1)},[]),k=(0,v.useCallback)(()=>{if(!t||!d.current)return;let n=e.current;if(f.current&&n&&n.scrollHeight>n.clientHeight){f.current=!1,x();return}C()},[t,C,x,e]);return(0,v.useEffect)(()=>{let i=e.current;if(!i||!t)return;g.current=i.scrollTop,_.current=i.scrollHeight,y.current=i.offsetHeight;let a=()=>{let{scrollTop:e,scrollHeight:t,offsetHeight:n}=i,a=t-e-n;c(a>r);let o=t!==_.current,s=n!==y.current;if(_.current=t,y.current=n,o||s){g.current=e;return}let l=e<g.current;g.current=e,l&&d.current&&(d.current=!1,m.current=!1,u(!1))},o=()=>{i.scrollHeight-i.scrollTop-i.offsetHeight<=n&&(d.current=!0,u(!0))},s=e=>{e.deltaY<0&&m.current&&(d.current=!1,m.current=!1,u(!1))},l=()=>{m.current&&(d.current=!1,m.current=!1,u(!1))};return i.addEventListener(`scroll`,a,{passive:!0}),i.addEventListener(`scrollend`,o),i.addEventListener(`wheel`,s,{passive:!0}),i.addEventListener(`touchmove`,l,{passive:!0}),requestAnimationFrame(()=>{i.scrollHeight>i.clientHeight&&(i.scrollTop=i.scrollHeight-i.clientHeight,g.current=i.scrollTop,f.current=!1)}),()=>{i.removeEventListener(`scroll`,a),i.removeEventListener(`scrollend`,o),i.removeEventListener(`wheel`,s),i.removeEventListener(`touchmove`,l)}},[e,t,n,r]),{isScrolledUp:s,isLocked:l,scrollToBottom:w,scrollToMessage:T,lock:D,unlock:O,scrollIfLocked:k,scrollToLastMessage:E}}function kI({isLocked:e,onResize:t}){let[n,r]=(0,v.useState)(!1),i=(0,v.useRef)(null),a=(0,v.useRef)(e);a.current=e;let o=(0,v.useRef)(t);o.current=t;let s=(0,v.useRef)(null),c=(0,v.useRef)(null),l=(0,v.useCallback)(e=>{Ii(e,()=>{o.current?.();let t=e.getElementsByClassName(`astryx-chat-message`),n=t.length>0?t[t.length-1]:null;n&&n!==i.current&&(i.current=n,a.current||r(!0))}),c.current=()=>Li(e)},[]),u=(0,v.useCallback)(()=>{c.current?.(),c.current=null},[]),d=(0,v.useCallback)(e=>{e!==s.current&&(u(),s.current=e,e&&l(e))},[l,u]);return(0,v.useEffect)(()=>()=>u(),[u]),{hasNewMessages:n,dismiss:(0,v.useCallback)(()=>{r(!1)},[]),contentRef:d}}var AI={root:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,keoZOQ:`xtbrsbv`,$$css:!0},chevronTransition:{kmkexE:`x1ob6yzd x9kvfbb`,$$css:!0},chevronExpanded:{k3aq6I:`x19jd1h0`,$$css:!0},statusIcon:{kVAEAm:`x1n2onr6`,k1xSpc:`x3nfvp2`,kGNEyG:`x6s0dn4`,kjj79g:`xl56j7k`,kmuXW:`x2lah0s`,kzqmXN:`x1kky2od`,kZKoxP:`xlup9mm`,kaIpWk:`xjspbzw`,$$css:!0},nodePill:{kmuXW:`x2lah0s`,$$css:!0},colorPending:{kMwMTN:`xnbbluu`,$$css:!0},colorRunning:{kMwMTN:`xqwr325`,$$css:!0},colorComplete:{kMwMTN:`xtjic6`,$$css:!0},colorError:{kMwMTN:`xjt36v0`,$$css:!0}},jI={pending:`clock`,running:null,complete:`check`,error:`close`},MI={pending:AI.colorPending,running:AI.colorRunning,complete:AI.colorComplete,error:AI.colorError};function NI(e){return wi(e.key,()=>[e.name,e.status??`complete`,e.target??``,e.node??``,e.duration??``,e.additions?.toString()??``,e.deletions?.toString()??``,e.errorMessage??``].join(``))}function PI({call:e}){let t=Gs(),n=e.status??`complete`,r=e.resultDetail!=null,[i,a]=(0,v.useState)(!1),o=(0,v.useId)(),s=r?()=>a(e=>!e):void 0,c=(0,q.jsxs)(`div`,{role:r?`button`:void 0,tabIndex:r?0:void 0,"aria-expanded":r?i:void 0,"aria-controls":r&&i?o:void 0,onClick:s,onKeyDown:r?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),s?.())}:void 0,...{0:{className:`x78zum5 x6s0dn4 x1s4dlld xjwf9q1 x13f7esw`},1:{className:`x78zum5 x6s0dn4 x1s4dlld xjwf9q1 x13f7esw x1ypdohk xh6dtrn x7a5moj xtedp8i xe9uy6x`}}[!!r<<0],children:[(0,q.jsxs)(`span`,{title:n===`error`?e.errorMessage:void 0,...w(AI.statusIcon,MI[n]),children:[n===`running`||n===`pending`?(0,q.jsx)(ro,{size:`sm`,shade:`subtle`}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`x10l6tqk x10a8y8t x1pjcqnp xtwfq29 x1xyvc85`}),(0,q.jsx)(`span`,{className:`x1n2onr6 x3nfvp2`,children:(0,q.jsx)(fa,{icon:jI[n]??`check`,size:`xsm`,color:`inherit`})})]}),n===`error`&&e.errorMessage!=null&&(0,q.jsx)(io,{children:t(`@astryx.chatToolCalls.error`,{message:e.errorMessage??``})})]}),(0,q.jsx)(`span`,{className:`x141an7d x1ltkj2j x9m5x89 x1e4wzip xv1l7n4 xuxw1ft xb3r6kr xlyipyv xs83m0k x13n9wmd`,children:e.name}),e.node!=null&&(0,q.jsx)(WF,{label:e.node,variant:`neutral`,xstyle:AI.nodePill}),e.target!=null&&(0,q.jsx)(`span`,{className:`x141an7d x1ltkj2j x9ynric xnbbluu xuxw1ft xb3r6kr xlyipyv x1g3ib7 xeuugli`,children:e.target}),(e.additions!=null||e.deletions!=null||e.stats!=null)&&(0,q.jsxs)(`span`,{className:`x78zum5 x6s0dn4 xzye2dw x141an7d x1ltkj2j x9ynric xnbbluu x2lah0s`,children:[e.additions!=null&&(0,q.jsxs)(`span`,{className:`xtjic6`,children:[`+`,e.additions]}),e.deletions!=null&&(0,q.jsxs)(`span`,{className:`xjt36v0`,children:[`-`,e.deletions]}),e.stats]}),e.duration!=null&&n===`complete`&&(0,q.jsx)(`span`,{className:`x141an7d x1ltkj2j x9ynric xnbbluu xuxw1ft x2lah0s`,children:e.duration}),r&&(0,q.jsx)(`span`,{className:`x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg xnbbluu xvc5jky`,children:(0,q.jsx)(fa,{icon:`chevronDown`,size:`xsm`,color:`inherit`,xstyle:[AI.chevronTransition,i&&AI.chevronExpanded]})})]});return r?(0,q.jsxs)(`div`,{children:[c,i&&(0,q.jsx)(`div`,{id:o,className:`x1f43n9v x1wesfrj`,children:e.resultDetail})]}):c}function FI(e){let t=Gs(),{calls:n,label:r,isExpanded:i,defaultIsExpanded:a,onExpandedChange:o,xstyle:s,className:c,style:l,ref:u,...d}=e,[f,p]=(0,v.useState)(a??!1),m=(0,v.useId)(),h=i!==void 0,g=h?i:f,_=(0,v.useCallback)(()=>{let e=!g;h||p(e),o?.(e)},[g,h,o]);if(n.length===0)return null;if(n.length===1)return(0,q.jsx)(`div`,{ref:u,...J(Y(`chat-tool-calls`),w(AI.root,s),c,l),...d,children:(0,q.jsx)(PI,{call:n[0]})});let y=n[n.length-1],b=y.status??`complete`;return(0,q.jsxs)(`div`,{ref:u,...J(Y(`chat-tool-calls`),w(AI.root,s),c,l),...d,children:[(0,q.jsxs)(`div`,{role:`button`,tabIndex:0,"aria-expanded":g,"aria-controls":m,onClick:_,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),_())},className:`x78zum5 x6s0dn4 x1s4dlld xjwf9q1 x13f7esw x1ypdohk`,children:[g?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`x3nfvp2 x6s0dn4 xl56j7k x2lah0s x1kky2od xlup9mm xv1l7n4`,children:(0,q.jsx)(fa,{icon:`wrench`,size:`sm`,color:`inherit`})}),(0,q.jsx)(`span`,{className:`x141an7d x1ltkj2j x9ynric x1e4wzip xv1l7n4`,children:t(`@astryx.chatToolCalls.groupLabel`,{count:n.length})})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{...w(AI.statusIcon,MI[b]),children:b===`running`||b===`pending`?(0,q.jsx)(ro,{size:`sm`,shade:`subtle`}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`x10l6tqk x10a8y8t x1pjcqnp xtwfq29 x1xyvc85`}),(0,q.jsx)(`span`,{className:`x1n2onr6 x3nfvp2`,children:(0,q.jsx)(fa,{icon:jI[b]??`check`,size:`xsm`,color:`inherit`})})]})}),(0,q.jsx)(`span`,{className:`x141an7d x1ltkj2j x9m5x89 x1e4wzip xv1l7n4 xuxw1ft xb3r6kr xlyipyv xs83m0k x13n9wmd`,children:y.name}),y.target!=null&&(0,q.jsx)(`span`,{className:`x141an7d x1ltkj2j x9ynric xnbbluu xuxw1ft xb3r6kr xlyipyv x1g3ib7 xeuugli`,children:y.target})]}),(0,q.jsx)(`span`,{className:`x3nfvp2 x6s0dn4 x1lsbc85 x141an7d x1ltkj2j x9ynric xnbbluu x2lah0s`,children:!g&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(fa,{icon:`wrench`,size:`xsm`,color:`inherit`}),n.length]})}),(0,q.jsx)(`span`,{className:`x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg xnbbluu`,children:(0,q.jsx)(fa,{icon:`chevronDown`,size:`xsm`,color:`inherit`,xstyle:[AI.chevronTransition,g&&AI.chevronExpanded]})})]}),(0,q.jsx)(`div`,{id:m,...{0:{className:`xrvj5dj xihq33y xb0j27v x9kvfbb`},1:{className:`xrvj5dj xb0j27v x9kvfbb x1tu4anv`}}[!!g<<0],children:(0,q.jsx)(`div`,{className:`xb3r6kr x2lwn1j x7a5moj xtedp8i`,children:(0,q.jsx)(`div`,{className:`x78zum5 xdt5ytf x7a5moj xtedp8i`,children:n.map(e=>(0,q.jsx)(PI,{call:e},NI(e)))})})})]})}FI.displayName=`ChatToolCalls`;var II={wrapper:{k1xSpc:`x78zum5`,kjj79g:`xl56j7k`,kGO01o:`xvmdzux`,$$css:!0},button:{"--radius-element":`xnpej1e`,khDVqt:`xuxw1ft`,kg3NbH:`xf314gf`,$$css:!0},buttonWithLabel:{kwRFfy:`x1t818jl`,$$css:!0}};function LI({ref:e,isVisible:t,label:n,onClick:r,xstyle:i,className:a,style:o,...s}){let c=Gs();return(0,q.jsx)(`div`,{ref:e,...J(Y(`chat-layout-scroll-button`),w(II.wrapper,i),a,o),...s,children:(0,q.jsx)(`div`,{...{0:{className:`xawy1a7 xb3r6kr xjspbzw x1prclbq x14hfi27 x10w6t97 x1apppo2 xlr8y92 x2rcmwa x12w9bfk xg01cxk x47corl x1x67gh`},2:{className:`xawy1a7 xb3r6kr xjspbzw x1prclbq x14hfi27 x10w6t97 x1apppo2 xlr8y92 x2rcmwa x12w9bfk x1hc1fzr x67bb7w x1x67gh`},1:{className:`xawy1a7 xb3r6kr xjspbzw x1prclbq x14hfi27 x10w6t97 x1apppo2 xlr8y92 x2rcmwa x12w9bfk xg01cxk x47corl x1ncir08`},3:{className:`xawy1a7 xb3r6kr xjspbzw x1prclbq x14hfi27 x10w6t97 x1apppo2 xlr8y92 x2rcmwa x12w9bfk x1hc1fzr x67bb7w x1ncir08`}}[!!t<<1|!!n<<0],children:(0,q.jsx)(ec,{label:n??c(`@astryx.chatLayoutScrollButton.scrollToBottom`),"aria-label":n??c(`@astryx.chatLayoutScrollButton.scrollToBottom`),icon:(0,q.jsx)(fa,{icon:`chevronDown`,size:`md`}),variant:`ghost`,size:`md`,isIconOnly:!n,onClick:r,xstyle:[II.button,n?II.buttonWithLabel:null],children:n??void 0})})})}LI.displayName=`ChatLayoutScrollButton`;var RI={root:{kVAEAm:`x1n2onr6`,k9g6sI:`x12h1iku`,kAzted:`x2lwn1j`,kUk6DE:`x98rzlu`,k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,$$css:!0},rootScrollable:{kORKVm:`x1odjw0f`,kXHlph:`x6ikm8r`,k5wCbM:`x1mqgsch`,$$css:!0},messageArea:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,kUOVxO:`xvueqy4`,kzQI83:`x1iyjqo2`,kmuXW:`x2lah0s`,kCS8Yb:`xdl72j9`,kGO01o:`xjpqqx5`,kzqmXN:`xh8yej3`,ks0D6T:`x193iq5w`,kg3NbH:`xnjsko4`,$$css:!0},blurLayer:{kVAEAm:`x10l6tqk`,krVfgx:`x1ey2m1c`,kLqNvP:`x1o0tod`,kt4wiu:`xtijo5x`,kfzvcC:`x47corl`,k6WDB:`xvn2z4z`,keRtuK:`x67t5t6`,kZKoxP:`xpyat2d`,kX1K2I:`xw26lqc`,kAExgp:`x1bv1mxo`,$$css:!0},dock:{kVAEAm:`x1n2onr6`,kY2c9j:`x1vjfegm`,kfzvcC:`x67bb7w`,kg3NbH:`xrrkdod`,kGO01o:`xvmdzux`,$$css:!0},dockInner:{kUOVxO:`xvueqy4`,kzqmXN:`xh8yej3`,ks0D6T:`x193iq5w`,$$css:!0},messageAreaCompact:{ks0D6T:`x193iq5w`,kg3NbH:`xnjsko4`,$$css:!0},messageAreaBalanced:{ks0D6T:`x193iq5w`,kg3NbH:`xnjsko4`,$$css:!0},messageAreaSpacious:{ks0D6T:`x1ap80js`,kg3NbH:`x1pzlopt`,$$css:!0},blurLayerCompact:{kZKoxP:`xwzfr38`,kX1K2I:`xkm2don`,kAExgp:`xiy8rlo`,$$css:!0},blurLayerBalanced:{kZKoxP:`xpyat2d`,kX1K2I:`xw26lqc`,kAExgp:`x1bv1mxo`,$$css:!0},blurLayerSpacious:{kZKoxP:`x1wkxgih`,kX1K2I:`xr5yg4x`,kAExgp:`xo9xo30`,$$css:!0},dockCompact:{kg3NbH:`xf314gf`,kGO01o:`x1wesfrj`,$$css:!0},dockBalanced:{kg3NbH:`xrrkdod`,kGO01o:`xvmdzux`,$$css:!0},dockSpacious:{kg3NbH:`x1pzlopt`,kGO01o:`xvmdzux`,$$css:!0},dockInnerCompact:{ks0D6T:`x193iq5w`,$$css:!0},dockInnerBalanced:{ks0D6T:`x193iq5w`,$$css:!0},dockInnerSpacious:{ks0D6T:`x1ap80js`,$$css:!0}};function zI(e){return!(e==null||e===!1||Array.isArray(e)&&e.length===0)}function BI({children:e,composer:t,density:n=`balanced`,emptyState:r,scrollButton:i,scrollRef:a,xstyle:o,className:s,style:c,"data-testid":l,ref:u,...d}){let f=Gs(),p=(0,v.useRef)(null),m=a??p,h=!a,g=OI({scrollRef:m}),_=kI({isLocked:g.isLocked,onResize:g.scrollIfLocked}),y=(0,q.jsx)(LI,{isVisible:g.isScrolledUp||_.hasNewMessages,label:_.hasNewMessages?f(`@astryx.chatLayout.newMessages`):void 0,onClick:()=>{_.dismiss(),g.scrollToBottom()}}),b=(0,v.useMemo)(()=>({scrollContainerRef:m,contentRef:_.contentRef}),[m,_.contentRef]),x=!zI(e),S={compact:{messageArea:RI.messageAreaCompact,blurLayer:RI.blurLayerCompact,dock:RI.dockCompact,dockInner:RI.dockInnerCompact},balanced:{messageArea:RI.messageAreaBalanced,blurLayer:RI.blurLayerBalanced,dock:RI.dockBalanced,dockInner:RI.dockInnerBalanced},spacious:{messageArea:RI.messageAreaSpacious,blurLayer:RI.blurLayerSpacious,dock:RI.dockSpacious,dockInner:RI.dockInnerSpacious}}[n];return(0,q.jsx)(sI,{value:b,children:(0,q.jsxs)(`div`,{...d,ref:Ei(u,p),"data-testid":l,...J(Y(`chat-layout`,{density:n}),w(RI.root,h&&RI.rootScrollable,o),s,c),children:[(0,q.jsx)(`div`,{...w(RI.messageArea,S.messageArea),children:x&&r?(0,q.jsx)(`div`,{className:`x78zum5 x6s0dn4 xl56j7k x98rzlu xz65tgg`,children:r}):e}),(0,q.jsxs)(`div`,{...{0:{className:`x1ey2m1c x1o0tod xtijo5x x1ja2u2z xc8icb0 x47corl x2lah0s xixxii4`},1:{className:`x1ey2m1c x1o0tod xtijo5x x1ja2u2z xc8icb0 x47corl x2lah0s x7wzq59`}}[!!h<<0],children:[i===void 0?y:i,(0,q.jsx)(`div`,{...w(RI.blurLayer,S.blurLayer)}),(0,q.jsx)(`div`,{...w(RI.dock,S.dock),children:(0,q.jsx)(`div`,{...w(RI.dockInner,S.dockInner),children:t})})]})]})})}BI.displayName=`ChatLayout`;var VI=`draft_mutation`;function HI(e,t){return e||t}function UI(e){return e.map((e,t)=>{let n={mutationId:e.id,summary:e.summary,affectedStageIds:e.affectedStageIds};return{type:`tool-call`,toolCallId:`mutation-${e.id}-${t}`,toolName:VI,args:n,argsText:JSON.stringify(n),result:{status:`applied`}}})}var WI=`Chat failed:`;function GI(e){return e.trim().length>0}function KI(e){return e===`user`||e===`system`||e===`assistant`?e:`assistant`}function qI(e){return typeof e==`string`?e?[{type:`text`,text:e}]:[]:e}function JI(e){if(!e||typeof e!=`object`)return null;let t=typeof e.mutationId==`string`?e.mutationId:``,n=typeof e.summary==`string`?e.summary:``,r=Array.isArray(e.affectedStageIds)?e.affectedStageIds.filter(e=>typeof e==`string`):[];return t?{mutationId:t,summary:n,affectedStageIds:r}:null}function YI(e){let t=[];for(let n of e){let e=KI(n.role),r=qI(n.content),i=r.filter(e=>e.type===`text`&&typeof e.text==`string`),a=i.find(e=>e.text.startsWith(WI));if(a){t.push({kind:`text`,role:e,text:a.text});continue}let o=i.map(e=>e.text).join(``);o&&t.push({kind:`text`,role:e,text:o});for(let e of r){if(e.type!==`tool-call`||e.toolName!==`draft_mutation`)continue;let n=JI(e.args);n&&t.push({kind:`draft_mutation`,toolCallId:typeof e.toolCallId==`string`&&e.toolCallId?e.toolCallId:`mutation-${n.mutationId}`,args:n})}}return t}function XI(e,t){if(t.length===0)return e?[{kind:`text`,text:e}]:[];let n=[...t].sort((e,t)=>e.textOffset-t.textOffset),r=[];for(let t of n){let n=Math.max(0,Math.min(t.textOffset,e.length)),i=r[r.length-1];i&&i.offset===n?i.calls.push({...t,textOffset:n}):r.push({offset:n,calls:[{...t,textOffset:n}]})}let i=[],a=0;for(let t of r)t.offset>a&&i.push({kind:`text`,text:e.slice(a,t.offset)}),i.push({kind:`tools`,calls:t.calls}),a=t.offset;return a<e.length?i.push({kind:`text`,text:e.slice(a)}):i.length===0&&e&&i.push({kind:`text`,text:e}),i}function ZI(e,t){if(t!==1)return e===0?`first`:e===t-1?`last`:`middle`}function QI(e){return typeof e.content==`string`||Array.isArray(e.content)?e.content:Array.isArray(e.parts)?e.parts:[]}function $I(e,t){return(0,q.jsx)(FI,{calls:t.map(e=>({key:e.id,name:e.name,status:e.status,target:e.target,errorMessage:e.errorMessage}))},e)}function eL({greeting:e,toolActivity:t=[],MutationCard:n,composerActions:r,onStop:i}){let a=lT(),o=fT(e=>e.thread.isRunning),s=fT(e=>e.thread.isEmpty),c=fT(e=>e.thread.messages),l=fT(e=>e.composer.text),u=YI(c.map(e=>({role:e.role,content:QI(e)}))),d=-1;for(let e=u.length-1;e>=0;--e){let t=u[e];if(t.kind===`text`&&t.role===`user`)break;if(t.kind===`text`&&t.role===`assistant`){d=e;break}}let f=d>=0,p=o&&!f&&t.length===0,m=(0,q.jsx)(yI,{value:l,onChange:e=>a.composer.setText(e),onSubmit:e=>{o||GI(e)&&(a.composer.setText(e),a.composer.send())},onStop:i,isStopShown:o,placeholder:`Describe a stage or workflow change…`,footerActions:r,density:`compact`});if(s)return(0,q.jsxs)(my,{height:`100%`,minHeight:0,gap:3,padding:3,children:[(0,q.jsx)(by,{size:`fill`,children:(0,q.jsx)(my,{height:`100%`,vAlign:`center`,hAlign:`center`,padding:3,children:(0,q.jsx)(eo,{type:`body`,justify:`center`,as:`p`,children:e})})}),m]});let h=[],g=[],_=[],v=()=>{if(g.length===0)return;let e=g;g=[],h.push((0,q.jsx)(wI,{sender:`user`,children:e.map((t,n)=>(0,q.jsx)(EI,{group:ZI(n,e.length),children:t},n))},`user-${h.length}`))},y=()=>{if(_.length===0)return;let e=_;_=[],h.push((0,q.jsx)(wI,{sender:`assistant`,children:e},`assistant-${h.length}`))};for(let e=0;e<u.length;e+=1){let r=u[e];if(r.kind===`text`&&r.role===`user`){y(),g.push(r.text);continue}if(r.kind===`text`&&r.role===`assistant`){if(v(),e===d&&t.length>0){let n=XI(r.text,t);for(let[t,r]of n.entries())if(r.kind===`text`){if(!r.text)continue;_.push((0,q.jsx)(EI,{variant:`ghost`,children:(0,q.jsx)(Dm,{isStreaming:!1,density:`compact`,contentWidth:`100%`,children:r.text})},`text-${_.length}`))}else y(),h.push($I(`tools-${e}-${t}`,r.calls))}else _.push((0,q.jsx)(EI,{variant:`ghost`,children:(0,q.jsx)(Dm,{isStreaming:!1,density:`compact`,contentWidth:`100%`,children:r.text})},`text-${_.length}`));continue}if(r.kind===`text`){v(),y(),h.push((0,q.jsx)(wI,{sender:`system`,children:(0,q.jsx)(eo,{type:`supporting`,children:r.text})},`system-${h.length}`));continue}r.kind===`draft_mutation`&&(v(),_.push((0,q.jsx)(n,{args:r.args},r.toolCallId)))}return v(),y(),!f&&t.length>0&&h.push($I(`tool-activity`,t)),p&&h.push((0,q.jsx)(wI,{sender:`assistant`,children:(0,q.jsx)(EI,{variant:`ghost`,children:(0,q.jsx)(eo,{type:`supporting`,children:`Working…`})})},`in-progress`)),(0,q.jsx)(BI,{composer:m,children:(0,q.jsx)(SI,{isStreaming:o,density:`compact`,gap:2,children:h})})}function tL({seedMessages:e,adapter:t,greeting:n,toolActivity:r,MutationCard:i,composerActions:a,onStop:o}){let s=sF(t,{initialMessages:e});return(0,q.jsx)(`div`,{className:`workshop-lab__aui-island`,children:(0,q.jsx)(EF,{runtime:s,children:(0,q.jsx)(`div`,{className:`workshop-lab__aui-thread-wrap`,children:(0,q.jsx)(eL,{greeting:n,toolActivity:r,MutationCard:i,composerActions:a,onStop:o})})})})}function nL(){return{pipeline:{id:`untitled`,stages:[]}}}function rL(e){return(e?.trim()??``)||`Untitled`}function iL(e){return e.id?`build:${e.id}`:`path:${encodeURIComponent(e.projectRoot??``)}/${encodeURIComponent(e.relativePath??``)}`}function aL(e){return e.relativePath?`${e.name} · ${e.relativePath}`:e.name}function oL(e,t){return typeof t==`string`&&t.length>0&&t===e}function sL(e){return{buildId:null,draft:nL(),rows:e.map(e=>({...e})),error:null}}function cL(e){let t=e.rows.map(e=>({...e}));return e.activeBuildId?!e.build||e.build.id!==e.activeBuildId?{buildId:null,draft:nL(),rows:t,error:e.error??`Build not found`}:{buildId:e.build.id,draft:e.build.draft,rows:hL(t,e.build),error:null}:{buildId:null,draft:nL(),rows:t,error:null}}function lL(e,t){return e?t.find(t=>t.id===e)?.name??`Untitled`:null}function uL(e,t){let n=e.rows.find(e=>e.id===t.buildId);return mL(e,{id:t.buildId,draft:t.draft,projectRoot:n?.projectRoot??null,relativePath:n?.relativePath??null})}function dL(e,t){let n=e.map(e=>({...e}));return!t?.id||n.some(e=>e.id===t.id)?n:[...n,{...t}]}function fL(e,t,n){return e.sessionId!==t.sessionId||e.buildId!==t.buildId?new Map:n}async function pL(e){if(e.row.id){let t=await e.loadBuild(e.row.id);if(!t.ok)return{selection:{...e.selection,error:t.error},changed:!1};let n=await e.updatePointer(e.sessionId,t.build.id);if(!n.ok)return{selection:{...e.selection,error:n.error},changed:!1};let r=mL(e.selection,t.build);return{selection:r,changed:r.buildId!==e.selection.buildId}}if(!e.row.projectRoot||!e.row.relativePath)return{selection:e.selection,changed:!1};let t=await e.focus(e.row);if(!t.ok)return{selection:{...e.selection,error:t.error},changed:!1};let n=await e.updatePointer(e.sessionId,t.build.id);if(!n.ok)return{selection:{...e.selection,error:n.error},changed:!1};let r=mL(e.selection,t.build);return{selection:r,changed:r.buildId!==e.selection.buildId}}function mL(e,t){return{buildId:t.id,draft:t.draft,rows:hL(e.rows,t),error:null}}function hL(e,t){let n={id:t.id,name:rL(t.draft.pipeline.id),projectRoot:t.projectRoot,relativePath:t.relativePath},r=t.projectRoot&&t.relativePath?`${t.projectRoot}\0${t.relativePath}`:null,i=!1,a=[];for(let o of e){let e=o.id!=null&&o.id===t.id,s=r!=null&&o.projectRoot===t.projectRoot&&o.relativePath===t.relativePath;if(e||s){i||=(a.push(n),!0);continue}a.push({...o})}return i||a.push(n),a}var gL=420,_L=280,vL=320,yL=32,bL={pipeline:{id:`untitled`,stages:[]}},xL=`What are we building? Tell me the workflow in your own words — I’ll ask where it changes the draft.`,SL={nodes:[],edges:[]},CL=(0,v.createContext)(null);function wL(){let e=(0,v.useContext)(CL);if(!e)throw Error(`WorkshopMutationContext missing`);return e}function TL(e){return e.split(/[-_]/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function EL(){return[]}function DL(e){return e.length===0?[]:e.map(e=>({role:e.role===`user`||e.role===`system`||e.role===`assistant`?e.role:`assistant`,content:e.text}))}function OL(e,t){return(e.stages??[]).find(e=>typeof e.body.id==`string`&&e.body.id===t||e.path.replace(/^\.\//,``).replace(/\.ya?ml$/,``)===t)?.body??null}function kL(e){if(!e||e.io==null)return`IO not set yet`;try{return JSON.stringify(e.io)}catch{return`IO present`}}function AL(e){if(!e)return`Verify not set yet`;if(e.verify!=null)try{return JSON.stringify(e.verify)}catch{return`Verify present`}return`Verify not set yet`}function jL(e){if(!e)return[];let t=[];if((e.ask_operator===!0||e.hitl===!0)&&t.push(`confirm`),Array.isArray(e.gates))for(let n of e.gates)typeof n==`string`&&t.push(n);return t}function ML(e,t){let n=new Map;for(let e of t.values())if(e.status===`pending`)for(let t of e.proposal.affectedStageIds)n.set(t,`pending`);return e.pipeline.stages.map((t,r)=>{let i=typeof t.id==`string`&&t.id?t.id:`stage-${r}`,a=OL(e,i),o=typeof a?.system_prompt==`string`?a.system_prompt:typeof a?.systemPrompt==`string`?a.systemPrompt:`Stage ${i}`;return{stageId:i,title:TL(i),promptSummary:o,ioSummary:kL(a),verifySummary:AL(a),hitlFlags:jL(a),mutationStatus:n.get(i)??`applied`}})}function NL(e){return{nodes:e.map((t,n)=>{let r=t.mutationStatus===`pending`;return{stage_id:t.stageId,status:r?`waiting_for_input`:`succeeded`,readiness:r?`waiting`:`succeeded`,layer:n,layer_order:0,attempt_count:+!r,gate_kinds:r?[`confirm`]:void 0,blocked_by:n>0?[e[n-1].stageId]:void 0}}),edges:e.slice(1).map((t,n)=>({from:e[n].stageId,to:t.stageId}))}}function PL(e){return e.map(e=>{let t=e.mutationStatus===`pending`;return{stage_id:e.stageId,status:t?`waiting_for_input`:`succeeded`,events:[],envelope:null,artifacts:[],attempt_count:+!t}})}function FL(e){return e.map(e=>{let t=e.mutationStatus===`pending`;return{stageId:e.stageId,title:e.title,kicker:t?`mutation · pending`:`stage · draft`,status:t?`waiting_for_input`:`succeeded`,attemptCount:t?void 0:1,readinessLine:t?`Awaiting Accept / Reject`:void 0,gateKinds:t?[`confirm`]:void 0,titleOnly:!0,isWaitingAttention:t,isSuperseded:!1}})}function IL(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(!(!n||n.role!==`user`))return n.content.filter(e=>e.type===`text`).map(e=>e.text).join(` `).trim()}return``}function LL(e){let t=[];for(let n of e)n.type===`message`&&n.role===`assistant`&&n.text?t.push(n.text):n.type===`error`&&n.message&&t.push(n.message);return t.join(`
128
+ `)return{trigger:i,query:e.slice(n+1),triggerStart:n}}}return null}function PF(e,t){let n=window.getSelection();if(!n||n.rangeCount===0)return;let r=n.getRangeAt(0),i=r.startContainer;if(i.nodeType!==Node.TEXT_NODE)return;let a=i.textContent??``,o=r.startOffset;i.textContent=a.slice(0,t)+a.slice(o);let s=document.createRange();s.setStart(i,t),s.collapse(!0),n.removeAllRanges(),n.addRange(s)}function FF(e){let t=Gs(),{triggers:n,editableRef:r,onInsertToken:i,onInsertText:a,onEmitChange:o,debounceMs:s=150}=e,c=(0,v.useId)(),[l,u]=(0,v.useState)({isActive:!1,activeTrigger:null,query:``,items:[],highlightedIndex:0,isLoading:!1}),d=(0,v.useRef)(-1),f=(0,v.useRef)(null),p=(0,v.useRef)(null),m=(0,v.useCallback)(()=>{p.current&&=(p.current.remove(),null)},[]),h=DF({onHide:(0,v.useCallback)(()=>{m(),u(e=>({...e,isActive:!1,activeTrigger:null,query:``,items:[],highlightedIndex:0,isLoading:!1}))},[m]),hasLightDismiss:!0,hasCloseButton:!1,hasAutoFocus:!1,role:`none`});(0,v.useEffect)(()=>()=>{f.current&&clearTimeout(f.current),m()},[m]);let g=(0,v.useCallback)(()=>{f.current&&=(clearTimeout(f.current),null);let e=l.activeTrigger;e?.searchSource&&e.searchSource.cancel?.(),m(),h.hide(),d.current=-1},[h,l.activeTrigger,m]),_=(0,v.useCallback)(()=>{let e=r.current;if(!e)return;let t=window.getSelection();if(!t||t.rangeCount===0){h.triggerRef(e);return}m();let n=t.getRangeAt(0).cloneRange();n.collapse(!0);let i=typeof n.getBoundingClientRect==`function`?n.getBoundingClientRect():null;if(!i||i.width===0&&i.height===0&&i.top===0&&i.left===0){h.triggerRef(e);return}let a=document.createElement(`span`);a.setAttribute(`aria-hidden`,`true`),a.setAttribute(`data-astryx-trigger-anchor`,``),a.style.position=`fixed`,a.style.left=`${i.left}px`,a.style.top=`${i.top}px`,a.style.width=`${Math.max(i.width,1)}px`,a.style.height=`${i.height}px`,a.style.pointerEvents=`none`,a.style.opacity=`0`,document.body.appendChild(a),p.current=a,h.triggerRef(a)},[r,h,m]),y=(0,v.useCallback)((e,t)=>{f.current&&=(clearTimeout(f.current),null);let n=()=>{if(e.searchSource){e.searchSource.cancel?.(),u(e=>({...e,isLoading:!0}));let n=e.searchSource.search(t);Promise.resolve(n).then(e=>{u(t=>({...t,items:e,highlightedIndex:e.length>0?0:-1,isLoading:!1}))},()=>{u(e=>({...e,items:[],highlightedIndex:-1,isLoading:!1}))})}};e.searchSource&&(e.searchSource.search(``)instanceof Promise&&s>0?(u(e=>({...e,isLoading:!0})),f.current=setTimeout(n,s)):n())},[s]),b=(0,v.useCallback)(e=>{let t=l.activeTrigger;if(!t)return;let n=r.current;if(!n)return;m(),PF(n,d.current);let s=t.onSelect(e);typeof s==`string`?a(s):i(s),o(),g()},[l.activeTrigger,r,m,a,i,o,g]),x=(0,v.useCallback)(()=>{if(!n||n.length===0)return;let e=r.current;if(!e)return;let t=MF(e);if(t===null){l.isActive&&g();return}let i=NF(t,n);if(!i){l.isActive&&g();return}let{trigger:a,query:o,triggerStart:s}=i;!l.isActive||l.activeTrigger!==a?(d.current=s,u(e=>({...e,isActive:!0,activeTrigger:a,query:o,highlightedIndex:0})),_(),y(a,o),h.show()):l.query!==o&&(u(e=>({...e,query:o})),y(a,o))},[n,r,l.isActive,l.activeTrigger,l.query,g,_,y,h]),S=(0,v.useCallback)(e=>{if(!l.isActive||!h.isOpen)return!1;switch(e.key){case`ArrowDown`:return e.preventDefault(),u(e=>({...e,highlightedIndex:e.highlightedIndex<e.items.length-1?e.highlightedIndex+1:0})),!0;case`ArrowUp`:return e.preventDefault(),u(e=>({...e,highlightedIndex:e.highlightedIndex>0?e.highlightedIndex-1:e.items.length-1})),!0;case`Enter`:case`Tab`:return l.highlightedIndex>=0&&l.highlightedIndex<l.items.length&&(e.preventDefault(),b(l.items[l.highlightedIndex]),!0);case`Escape`:return e.preventDefault(),g(),!0;default:return!1}},[l.isActive,l.highlightedIndex,l.items,h.isOpen,b,g]),C=(0,v.useCallback)(e=>`${c}-option-${e}`,[c]);(0,v.useEffect)(()=>{!h.isOpen||l.highlightedIndex<0||document.getElementById(C(l.highlightedIndex))?.scrollIntoView({block:`nearest`})},[l.highlightedIndex,h.isOpen,C]);let w=(n?.length??0)>0?l.isActive&&h.isOpen?{role:`combobox`,"aria-expanded":!0,"aria-controls":c,"aria-activedescendant":l.highlightedIndex>=0?C(l.highlightedIndex):void 0,"aria-haspopup":`listbox`}:{role:`combobox`,"aria-expanded":!1,"aria-haspopup":`listbox`}:{role:`textbox`};return{state:l,handleInput:x,handleKeyDown:S,renderMenu:(0,v.useCallback)(()=>{let e=l.activeTrigger,n=e?.emptySearchResultsText??`No results`,r=e?.loadingText??`Searching…`,i;if(l.isLoading)i=(0,q.jsx)(`div`,{role:`status`,className:`x1b2ylru x2b8uid x141an7d xv1l7n4`,children:r});else if(l.items.length===0&&l.isActive)i=(0,q.jsx)(`div`,{className:`x1b2ylru x2b8uid x141an7d xv1l7n4`,children:n});else{let t=Mi(l.items),n=0;i=t.map(t=>{let r=t.items.map(t=>{let r=n++;return(0,q.jsx)(`div`,{id:C(r),role:`option`,"aria-selected":r===l.highlightedIndex,tabIndex:-1,onMouseDown:e=>{e.preventDefault(),b(t)},onMouseEnter:()=>u(e=>({...e,highlightedIndex:r})),...{0:{className:`x9f619 x78zum5 x6s0dn4 xh8yej3 xlsj2fj xh6dtrn x1ypdohk x1a2a7pz xjbqb8w x1yc453h x9ynric xjm74w1 xw6l6zx x1tgivj0`},1:{className:`x9f619 x78zum5 x6s0dn4 xh8yej3 xlsj2fj xh6dtrn x1ypdohk x1a2a7pz x1yc453h x9ynric xjm74w1 xw6l6zx x1tgivj0 x1lmrjuc`}}[(r===l.highlightedIndex)<<0],children:e?.renderItem?e.renderItem(t):(0,q.jsx)(`span`,{className:`x98rzlu xeuugli xb3r6kr xlyipyv xuxw1ft`,children:t.label})},t.id)});return t.heading?(0,q.jsxs)(`div`,{role:`group`,"aria-label":t.heading,children:[(0,q.jsx)(`div`,{"aria-hidden":`true`,className:`xf314gf x1xye8es xy143xn x141an7d x1ltkj2j xv1l7n4 x87ps6o`,children:t.heading}),r]},`group-${t.heading}`):r})}return h.render((0,q.jsx)(`div`,{id:c,role:`listbox`,"aria-label":e?.menuLabel??t(`@astryx.chatTriggerMenu.suggestions`),...J(Y(`trigger-menu`),{className:`x9f619 x1xiyphd x1odjw0f x9epnlk xfb3i0g`}),children:i}),{placement:`above`,alignment:`start`,offset:O[`--spacing-1`],xstyle:jF.popoverSurface})},[h,c,l,b,C,t]),reset:g,ariaProps:w}}function IF(e){let t=window.getSelection();if(!t)return null;if(t.rangeCount>0){let n=t.getRangeAt(0);if(e.contains(n.startContainer))return t}let n=document.createRange();return n.selectNodeContents(e),n.collapse(!1),t.removeAllRanges(),t.addRange(n),t}function LF(e,t){let n=IF(e);if(!n||n.rangeCount===0)return!1;let r=n.getRangeAt(0);r.deleteContents();let i=document.createTextNode(t);return r.insertNode(i),r.setStartAfter(i),r.collapse(!0),n.removeAllRanges(),n.addRange(r),!0}function RF(e){return`render`in e&&typeof e.render==`function`}function zF(e){let t=e;for(;t;){if(t instanceof HTMLElement&&t.hasAttribute(`data-astryx-token`))return t;t=t.parentNode}return null}function BF({editableRef:e,onEmitChange:t}){let[n,r]=(0,v.useState)([]),i=(0,v.useCallback)(t=>{let n=e.current;if(!n)return;let i=IF(n);if(!i||i.rangeCount===0)return;let a=i.getRangeAt(0),o=document.createElement(`span`),s=`token-${Date.now()}-${Math.random().toString(36).slice(2,6)}`;o.setAttribute(`data-astryx-token`,``),o.setAttribute(`data-astryx-token-value`,t.value),o.setAttribute(`data-astryx-token-id`,s),o.contentEditable=`false`,o.style.display=`inline-flex`,o.style.verticalAlign=`baseline`,a.deleteContents(),a.insertNode(o);let c=document.createTextNode(`\xA0`);o.after(c);let l=document.createRange();return l.setStartAfter(c),l.collapse(!0),i.removeAllRanges(),i.addRange(l),r(e=>[...e,{id:s,span:o,token:t}]),s},[e]),a=(0,v.useCallback)(e=>{if(e.key!==`Backspace`)return!1;let n=window.getSelection();if(!n||!n.isCollapsed||n.rangeCount===0)return!1;let{startContainer:r,startOffset:i}=n.getRangeAt(0);if(r.nodeType===Node.TEXT_NODE&&i===0&&r.previousSibling instanceof HTMLElement&&r.previousSibling.hasAttribute(`data-astryx-token`))return!1;if(r.nodeType===Node.TEXT_NODE&&r.textContent===`\xA0`&&i<=1&&r.previousSibling instanceof HTMLElement&&r.previousSibling.hasAttribute(`data-astryx-token`)){e.preventDefault();let n=r.previousSibling,i=r.parentNode;return i&&(i.removeChild(r),i.removeChild(n)),t(),!0}return!1},[t]),o=(0,v.useCallback)(n=>{let r=e.current;if(!r)return!1;let i=IF(r);if(!i||i.rangeCount===0)return!1;let a=zF(i.getRangeAt(0).startContainer);if(a){n.preventDefault();let e=n.clipboardData.getData(`text/plain`),o=a.nextSibling,s=document.createRange();return o&&o.nodeType===Node.TEXT_NODE?s.setStartAfter(o):s.setStartAfter(a),s.collapse(!0),i.removeAllRanges(),i.addRange(s),LF(r,e),t(),!0}return!1},[e,t]);return{tokenPortals:n,expandToken:(0,v.useCallback)(i=>{if(!e.current)return;let a=n.find(e=>e.id===i);if(!a)return;let{span:o}=a,s=o.getAttribute(`data-astryx-token-value`)??``,c=document.createTextNode(s),l=o.nextSibling;l?.nodeType===Node.TEXT_NODE&&l.textContent===`\xA0`&&l.remove(),o.replaceWith(c);let u=window.getSelection();if(u){let e=document.createRange();e.setStartAfter(c),e.collapse(!0),u.removeAllRanges(),u.addRange(e)}r(e=>e.filter(e=>e.id!==i)),t()},[e,n,t]),insertToken:i,handleKeyDown:a,handlePaste:o,cleanupPortals:(0,v.useCallback)(()=>{r(t=>t.filter(t=>e.current?.contains(t.span)))},[e])}}var VF={base:{k1xSpc:`x3nfvp2`,kGNEyG:`x6s0dn4`,kjj79g:`xl56j7k`,kOIVth:`xzye2dw`,kZKoxP:`x1grt7ep`,k8WAf4:`xt970qd`,kg3NbH:`xf314gf`,kaIpWk:`xjspbzw`,kMv6JI:`xjb2p0i`,kGuDYH:`x141an7d`,kLWn49:`x1ltkj2j`,k63SB2:`x1e4wzip`,khDVqt:`xuxw1ft`,$$css:!0}},HF={neutral:{kWkggS:`x17x4s8c`,kMwMTN:`x1tgivj0`,$$css:!0},info:{kWkggS:`x1ewilqj`,kMwMTN:`x17wrial`,$$css:!0},success:{kWkggS:`xdsz4j9`,kMwMTN:`xri61p4`,$$css:!0},warning:{kWkggS:`x1q8g9m5`,kMwMTN:`xrebv38`,$$css:!0},error:{kWkggS:`x1pjz0fi`,kMwMTN:`x1m024r3`,$$css:!0},blue:{kWkggS:`x1o0wnni`,kMwMTN:`x1vvqiwl`,$$css:!0},cyan:{kWkggS:`x1rgj867`,kMwMTN:`x1txnczv`,$$css:!0},green:{kWkggS:`x1sqjeoo`,kMwMTN:`xltfdvo`,$$css:!0},orange:{kWkggS:`x1e9xt6e`,kMwMTN:`xm47u9q`,$$css:!0},pink:{kWkggS:`xnpoty2`,kMwMTN:`xiuofww`,$$css:!0},purple:{kWkggS:`x16i6n6f`,kMwMTN:`x1m9wyeb`,$$css:!0},red:{kWkggS:`x1cibrc5`,kMwMTN:`x1joocv1`,$$css:!0},teal:{kWkggS:`x1jtji5o`,kMwMTN:`x9x0lbs`,$$css:!0},yellow:{kWkggS:`x1bo7t0x`,kMwMTN:`xdhq94a`,$$css:!0}};function UF({variant:e=`neutral`,label:t,icon:n,xstyle:r,className:i,style:a,ref:o,...s}){return(0,q.jsxs)(`span`,{ref:o,...J(Y(`badge`,{variant:e}),w(VF.base,HF[e],r),i,a),...s,children:[n,t]})}UF.displayName=`Badge`;var WF={container:{kWkggS:`x10xzikg`,"--_hovercard-radius":`xqwz7mz`,kaIpWk:`x7a53xk`,kGVxlE:`x14hfi27`,$$css:!0}};function GF(e){return e.hasAttribute(`tabindex`)?e.tabIndex>=0:[`A`,`BUTTON`,`INPUT`,`SELECT`,`TEXTAREA`].includes(e.tagName)?!e.disabled:!!e.isContentEditable}function KF(e={}){let{placement:t=`above`,alignment:n=`center`,delay:r=300,hideDelay:i=200,focusTrigger:a=`auto`,isEnabled:o=!0,label:s,isOpen:c,isDefaultOpen:l=!1,onShow:u,onHide:d}=e,f=Ta({mode:`context`,onShow:u,onHide:d}),p=WF.container,m=(0,v.useRef)(null),h=(0,v.useRef)(null),g=(0,v.useRef)(null),_=(0,v.useRef)(!1),y=(0,v.useRef)(!1),b=(0,v.useCallback)(()=>{m.current&&=(clearTimeout(m.current),null),h.current&&=(clearTimeout(h.current),null)},[]),x=(0,v.useCallback)(()=>{!o||c===!1||(b(),m.current=setTimeout(()=>{f.show()},r))},[o,c,b,f,r]),S=(0,v.useCallback)(()=>{c!==!0&&(b(),h.current=setTimeout(()=>{_.current||f.hide()},i))},[c,b,f,i]),C=(0,v.useCallback)(()=>{x()},[x]),w=(0,v.useCallback)(()=>{S()},[S]),T=(0,v.useCallback)(()=>{if(o){if(y.current){y.current=!1;return}b(),f.show()}},[o,b,f]),E=(0,v.useCallback)(e=>{let t=e.relatedTarget;document.getElementById(f.id)?.contains(t)||S()},[f.id,S]),D=(0,v.useCallback)(e=>{e.key===`Escape`&&(e.stopPropagation(),b(),f.hide())},[b,f]),k=(0,v.useCallback)(e=>{g.current&&(g.current.removeEventListener(`mouseenter`,C),g.current.removeEventListener(`mouseleave`,w),g.current.removeEventListener(`focusin`,T),g.current.removeEventListener(`focusout`,E),g.current.removeEventListener(`keydown`,D)),e&&(e.addEventListener(`mouseenter`,C),e.addEventListener(`mouseleave`,w),(a===`always`||a===`auto`&&GF(e))&&(e.addEventListener(`focusin`,T),e.addEventListener(`focusout`,E)),e.addEventListener(`keydown`,D)),g.current=e},[a,C,w,T,E,D]),A=(0,v.useCallback)(e=>{f.ref(e),k(e)},[f,k]);(0,v.useEffect)(()=>()=>{b()},[b]),(0,v.useEffect)(()=>{l&&f.show()},[]),(0,v.useEffect)(()=>{c!==void 0&&(c?(b(),f.show()):(b(),f.hide()))},[c,b,f]);let j=(0,v.useCallback)((e,r)=>{let i=r?.placement??t,a=Y(`hovercard`).className,o={placement:i,alignment:r?.alignment??n,offset:O[`--spacing-1`],role:s?`dialog`:`group`,"aria-label":s||void 0,xstyle:[p,Ea[i],r?.xstyle],className:r?.className?`${a} ${r.className}`:a,style:r?.style,as:`span`};return f.render((0,q.jsx)(`span`,{className:`x1lliihq x1vlblms xvmdzux x126nfab x1t818jl`,onMouseEnter:()=>{_.current=!0,b()},onMouseLeave:()=>{_.current=!1,S()},onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),y.current=!0,b(),f.hide(),g.current?.focus())},onBlur:e=>{let t=e.relatedTarget;e.currentTarget.contains(t)||g.current?.contains(t)||S()},children:e}),o)},[f,t,n,s,b,S,p]);return{ref:A,positionRef:f.ref,interactionRef:k,anchorId:f.anchorId,describedBy:f.id,renderHoverCard:j,show:f.show,hide:f.hide}}function qF(e){return typeof e==`string`||typeof e==`number`}function JF(...e){let t=e.filter(Boolean);return t.length>0?t.join(` `):void 0}function YF({children:e,content:t,placement:n=`above`,alignment:r=`center`,delay:i=300,hideDelay:a=200,focusTrigger:o=`auto`,isEnabled:s=!0,label:c,onOpenChange:l,hasHoverIndication:u=`auto`,isOpen:d,isDefaultOpen:f,xstyle:p,className:m,style:h}){let g=(0,v.useRef)(null),_=qF(e),b=u===!0||u===`auto`&&_,x=KF({placement:n,alignment:r,delay:i,hideDelay:a,focusTrigger:o,isEnabled:s,label:c,isOpen:d,isDefaultOpen:f,onShow:(0,v.useCallback)(()=>{l?.(!0)},[l]),onHide:(0,v.useCallback)(()=>{l?.(!1)},[l])});y(()=>{if(_)return;let e=g.current;if(!e)return;let t=e.firstElementChild;if(!t)return;x.ref(t);let n=t.getAttribute(`aria-describedby`);return t.setAttribute(`aria-describedby`,JF(n,x.describedBy)??``),()=>{x.ref(null),n?t.setAttribute(`aria-describedby`,n):t.removeAttribute(`aria-describedby`)}},[_,x.ref,x.describedBy]);let S=x.renderHoverCard(t,{xstyle:p,className:m,style:h});return _?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{ref:x.ref,tabIndex:0,"aria-describedby":x.describedBy,...{0:{className:`xt0psk2`},1:{className:`xt0psk2 xujl8zx xev0dqp xycaml9 x11b3rvo`}}[!!b<<0],children:e}),S]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{ref:g,className:`xjp7ctv`,children:e}),S]})}YF.displayName=`HoverCard`;function XF(e){let t=e.split(`
129
+ `).length,n=e.length;return t>1?`${t} lines, ${n} chars`:`${n} chars`}function ZF({text:e,onExpand:t}){let n=Gs(),r=XF(e),i=(0,q.jsxs)(`div`,{className:`x78zum5 xdt5ytf x1txdalj x17fpy1y`,children:[(0,q.jsx)(`div`,{className:`x9m5x89 x141an7d x1ltkj2j x1tgivj0 x126k92a x13faqbe x1xiyphd x1odjw0f`,children:e}),(0,q.jsxs)(`div`,{className:`x78zum5 x6s0dn4 x1qughib x1txdalj`,children:[(0,q.jsx)(`span`,{className:`x141an7d xv1l7n4`,children:r}),t&&(0,q.jsx)(ec,{label:n(`@astryx.chat.pastedText.expand`),variant:`ghost`,size:`sm`,onClick:t})]})]});return(0,q.jsx)(YF,{content:i,placement:`above`,alignment:`start`,hasHoverIndication:!1,children:(0,q.jsx)(UF,{label:r,variant:`neutral`})})}ZF.displayName=`ChatPastedTextToken`;function QF(e){let t=e.split(`
130
+ `).length,n=e.length;return{value:e,label:t>1?`${t} lines, ${n} chars`:`${n} chars`,variant:`neutral`}}function $F({inputRef:e,threshold:t=200,toToken:n=QF}){return{onPaste:(0,v.useCallback)((r,i)=>{if(i.length<=t)return!1;let a=n(i);return e.current?.insertToken(a),!0},[e,t,n])}}var eI=(0,v.createContext)(null);eI.displayName=`ChatMessageContext`;function tI(){return(0,v.use)(eI)}var nI=(0,v.createContext)(null);nI.displayName=`ChatListContext`;function rI(){return(0,v.use)(nI)}var iI=(0,v.createContext)(null);iI.displayName=`ChatComposerContext`;function aI(){return(0,v.use)(iI)}var oI=(0,v.createContext)(null);oI.displayName=`ChatLayoutContext`;function sI(){return(0,v.use)(oI)}var cI=l(h(),1),lI=22,uI={root:{kVAEAm:`x1n2onr6`,k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,kAzted:`xe0957l`,$$css:!0},disabled:{kSiTet:`xbyyjgo`,kfzvcC:`x47corl`,$$css:!0}};function dI(e){let t=window.getSelection();if(!t)return;let n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}function fI(e){let t=``;for(let n of Array.from(e.childNodes))n.nodeType===Node.TEXT_NODE?t+=n.textContent??``:n instanceof HTMLElement&&(n.hasAttribute(`data-astryx-token`)?t+=n.getAttribute(`data-astryx-token-value`)??``:n.tagName===`BR`?t+=`
131
+ `:t+=fI(n));return t}function pI(e){let t=Gs(),n=aI(),r=e.value!==void 0,{ref:i,handleRef:a,value:o=n?.value,onChange:s,placeholder:c,maxRows:l=8,triggers:u,debounceMs:d=150,hasHistory:f=!0,label:p,isDisabled:m=n?.isDisabled??!1,onPaste:h,pasteAsToken:g,onFiles:_,onSubmit:y=n?.onSubmit,onKeyDown:b,xstyle:x,className:S,style:C,...T}=e,E=p??t(`@astryx.chat.composerInput.label`),D=c??n?.placeholder??t(`@astryx.chat.composer.placeholder`),O=n?.onChange,k=(0,v.useCallback)(e=>{if(r){s?.(e);return}O?.(e),s!==O&&s?.(e)},[O,r,s]),A=(0,v.useRef)(null),j=(0,v.useRef)(null),[M,N]=(0,v.useState)(!0),P=(0,v.useRef)([]),F=(0,v.useRef)(-1),I=(0,v.useRef)(``),L=(0,v.useRef)(void 0),R=(0,v.useRef)(()=>void 0),z=(0,v.useRef)(()=>{}),B={insertToken:e=>R.current(e),expandToken:e=>W.expandToken(e),insertText:e=>z.current(e),focus:()=>A.current?.focus(),getValue:()=>fI(A.current??document.createElement(`div`))};j.current=B,(0,v.useImperativeHandle)(a,()=>B);let V=n?.inputControlRef;(0,v.useEffect)(()=>{if(V)return V.current={focus:()=>A.current?.focus()},()=>{V.current=null}},[V]),(0,v.useEffect)(()=>{if(o===void 0||!A.current)return;if(o===L.current){L.current=void 0;return}let e=A.current;if(fI(e)!==o){L.current=void 0;let t=document.activeElement===e;if(e.textContent=o,t){let t=window.getSelection();if(t){let n=document.createRange();n.selectNodeContents(e),n.collapse(!1),t.removeAllRanges(),t.addRange(n)}}N(o.length===0)}else L.current=void 0},[o]);let H=(0,v.useRef)(null),U=(0,v.useCallback)(()=>{if(!A.current)return;let e=fI(A.current),t=A.current.querySelector(`[data-astryx-token], [data-astryx-dictation-interim]`)!=null,n=e.trim().length===0&&!t,r=n?``:e;L.current=r,N(n),k?.(r),H.current?.()},[k]),W=BF({editableRef:A,onEmitChange:U});H.current=W.cleanupPortals;let ee=$F({inputRef:j}),te=g===!1?null:g??ee,ne=(0,v.useCallback)(e=>{let t=A.current;t&&LF(t,e)},[]);R.current=W.insertToken,z.current=ne;let re=FF({triggers:u,editableRef:A,onInsertToken:W.insertToken,onInsertText:ne,onEmitChange:U,debounceMs:d}),ie=(0,v.useCallback)(()=>{U(),re.handleInput()},[U,re]),ae=(0,v.useCallback)(e=>{if(!re.handleKeyDown(e)&&(b?.(e),!e.defaultPrevented)){if(e.key===`Backspace`){let t=window.getSelection();if(t&&t.isCollapsed&&t.rangeCount>0){let{startContainer:n,startOffset:r}=t.getRangeAt(0);if(!(n.nodeType===Node.TEXT_NODE&&r===0&&n.previousSibling instanceof HTMLElement&&n.previousSibling.hasAttribute(`data-astryx-token`))&&n.nodeType===Node.TEXT_NODE&&n.textContent===`\xA0`&&r<=1&&n.previousSibling instanceof HTMLElement&&n.previousSibling.hasAttribute(`data-astryx-token`)){e.preventDefault();let t=n.previousSibling,r=n.parentNode;r&&(r.removeChild(n),r.removeChild(t)),U();return}}}if(e.key===`Enter`&&!e.shiftKey){if(e.nativeEvent.isComposing||e.nativeEvent.keyCode===229||(e.preventDefault(),!A.current))return;let t=fI(A.current).trim();if(!t)return;f&&(P.current.push(t),F.current=-1,I.current=``),y?.(t),A.current.textContent=``,N(!0),k?.(``);return}if(f&&(e.key===`ArrowUp`||e.key===`ArrowDown`)){if(!A.current)return;let t=fI(A.current),n=P.current;if(n.length===0)return;if(e.key===`ArrowUp`){F.current===-1&&(I.current=t);let r=F.current===-1?n.length-1:Math.max(0,F.current-1);F.current=r,A.current.textContent=n[r],dI(A.current),U(),e.preventDefault()}else if(e.key===`ArrowDown`&&F.current!==-1){let t=F.current+1;t>=n.length?(F.current=-1,A.current.textContent=I.current,I.current&&dI(A.current)):(F.current=t,A.current.textContent=n[t],dI(A.current)),U(),e.preventDefault()}}}},[f,y,k,U,re,b]),oe=(0,v.useCallback)(e=>{let t=A.current;if(!t||(IF(t),W.handlePaste(e)))return;let n=Array.from(e.clipboardData.files);if(n.length>0){e.preventDefault(),_?.(n);return}e.preventDefault();let r=e.clipboardData.getData(`text/plain`);if(te?.onPaste(e,r)){U();return}if(h?.(e,r)){U();return}LF(t,r),U()},[_,h,U,W,te]),se=l*lI;return(0,q.jsxs)(`div`,{ref:i,...J(Y(`chat-composer-input`),w(uI.root,m&&uI.disabled,x),S,C),...T,children:[M&&(0,q.jsx)(`div`,{className:`x10l6tqk x13vifvy x1o0tod xtijo5x x47corl xv1l7n4 xjm74w1 x6pjikd x19v9tvf x9ynric x87ps6o x9epnlk`,"aria-hidden":`true`,children:D}),(0,q.jsx)(`div`,{ref:A,"aria-multiline":`true`,"aria-label":E,contentEditable:!m,suppressContentEditableWarning:!0,onInput:ie,onKeyDown:ae,onPaste:oe,...re.ariaProps,...J({className:`x1a2a7pz x126k92a x13faqbe x1odjw0f xjm74w1 x6pjikd x19v9tvf x9ynric x1tgivj0 xxugrtn x9epnlk`},{style:{maxHeight:`${se}px`}})}),re.renderMenu(),W.tokenPortals.filter(({span:e})=>e.isConnected).map(({id:e,span:t,token:n})=>(0,cI.createPortal)(RF(n)?(0,q.jsx)(`span`,{children:n.render()},e):n.value.length>(te===null?1/0:200)?(0,q.jsx)(ZF,{text:n.value,onExpand:()=>W.expandToken(e)},e):(0,q.jsx)(UF,{label:n.label,variant:n.variant,icon:n.icon},e),t))]})}pI.displayName=`ChatComposerInput`;var mI={root:{kaIpWk:`xy0xnkn`,kmuXW:`x2lah0s`,$$css:!0}};function hI(e){let t=Gs(),n=aI(),{isStopShown:r=n?.isStopShown??!1,isDisabled:i=!(n?.canSend??!1),onSend:a,onStop:o=n?.onStop,sendIcon:s,stopIcon:c,size:l=`md`,xstyle:u,className:d,style:f,ref:p,...m}=e,h=a??(()=>n?.onSubmit(``)),g=ha(`stop`),_=ha(`arrowUp`);return(0,q.jsx)(ec,{ref:p,label:t(r?`@astryx.chatSendButton.stop`:`@astryx.chatSendButton.send`),variant:r?`secondary`:`primary`,size:l,icon:r?c??g:s??_,isIconOnly:!0,isDisabled:!r&&i,onClick:r?o:h,...m,...J(Y(`chat-send-button`),{className:d},f),xstyle:[mI.root,u]})}hI.displayName=`ChatSendButton`;var gI={body:{kVAEAm:`x1n2onr6`,kY2c9j:`xhtitgo`,k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,kmVPX3:`x18oj4ui`,kOIVth:`x1txdalj`,kaIpWk:`x1xunbrq`,kWkggS:`x1prclbq`,kkrTdU:`x1ed109x`,kmkexE:`xrg7dcy`,$$css:!0},compact:{"--_chat-composer-padding":`x18zce08`,kOIVth:`xzye2dw`,$$css:!0}},_I={low:{kGVxlE:`x1i5ehqx xhouywz`,knuKkz:`xyavpck`,$$css:!0},none:{kMzoRj:`x1litavf`,ksu8eU:`x1y0btm7`,kVAM5u:`xvy26l8 x6q1khz`,kmVPX3:`x1b50gpf`,kGVxlE:`x1gnnqk1 x12y27fx xuihb5h`,$$css:!0}};function vI(e){let t=Gs(),{ref:n,onSubmit:r,onStop:i,isStopShown:a=!1,value:o,onChange:s,placeholder:c,isDisabled:l=!1,density:u=`balanced`,elevation:d=`low`,drawer:f,headerActions:p,headerContext:m,input:h,footerActions:g,sendActions:_,sendButton:y,status:b,statusPosition:x=`bottom`,xstyle:S,className:C,style:T,...E}=e,D=c??t(`@astryx.chat.composer.placeholder`),[O,k]=(0,v.useState)(``),A=o!==void 0,j=A?o:O,M=(0,v.useCallback)(e=>{A||k(e),s?.(e)},[A,s]),N=(0,v.useCallback)(()=>{let e=j.trim();!e||l||(r(e),M(``))},[j,l,r,M]),P=j.trim().length>0&&!l,F=(0,v.useRef)(null),I=(0,v.useRef)(null),L=(0,v.useCallback)(e=>{if(!e.target.closest(`button, a, [role="button"], [contenteditable="true"], [data-astryx-token]`)){if(I.current){I.current.focus();return}(F.current?.querySelector(`[contenteditable="true"], textarea`))?.focus()}},[]),R=b?(0,q.jsxs)(`div`,{role:b.type===`error`?`alert`:`status`,...{0:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x1htvmrp xvpcij2 xckg3cf xkvxy4d x6k0y1c`},4:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x2gtn7z x9jihrk x1z0f2p2 xy7p8pm xzc3kxz`},2:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x1htvmrp xvpcij2 xckg3cf xkvxy4d x6k0y1c x1pritpl x1joocv1`},6:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x2gtn7z x9jihrk x1z0f2p2 xy7p8pm xzc3kxz x1pritpl x1joocv1`},1:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x1htvmrp xvpcij2 xckg3cf xkvxy4d x6k0y1c x24i8r5 xdhq94a`},5:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x2gtn7z x9jihrk x1z0f2p2 xy7p8pm xzc3kxz x24i8r5 xdhq94a`},3:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x1htvmrp xvpcij2 xckg3cf xkvxy4d x6k0y1c x24i8r5 xdhq94a`},7:{className:`x1n2onr6 x1ja2u2z x78zum5 x6s0dn4 x1txdalj x1pzlopt x141an7d x1ltkj2j x9ynric x2gtn7z x9jihrk x1z0f2p2 xy7p8pm xzc3kxz x24i8r5 xdhq94a`}}[(x===`top`)<<2|(b.type===`error`)<<1|(b.type===`warning`)<<0],children:[(0,q.jsx)(fa,{icon:b.type===`error`?`error`:`warning`,size:`md`,color:b.type===`error`?`error`:`warning`}),b.message]}):null,z=(0,v.useMemo)(()=>({value:j,onChange:M,onSubmit:N,placeholder:D,isDisabled:l,isStopShown:a,canSend:P,onStop:i,inputControlRef:I}),[j,M,N,D,l,a,P,i]);return(0,q.jsx)(iI,{value:z,children:(0,q.jsxs)(`div`,{ref:n,...J(Y(`chat-composer`,{density:u}),{0:{className:`x1n2onr6 x1ja2u2z xc8icb0 x78zum5 xdt5ytf xx161y6 xk0ittl xcw7vlg`},1:{className:`x1n2onr6 x1ja2u2z xc8icb0 x78zum5 xdt5ytf xx161y6 xk0ittl xcw7vlg x197sbye x47corl`}}[!!l<<0],C,T),...E,children:[x===`top`&&R,f,(0,q.jsxs)(`div`,{ref:F,onClick:L,...w(gI.body,_I[d],u===`compact`&&gI.compact,S),children:[(p||m)&&(0,q.jsxs)(`div`,{className:`x78zum5 x6s0dn4 x1qughib x1txdalj xe0p6wg`,children:[(0,q.jsx)(`div`,{className:`x78zum5 x6s0dn4 xzye2dw`,children:p}),(0,q.jsx)(`div`,{className:`x78zum5 x6s0dn4 x1txdalj xvc5jky x141an7d x1ltkj2j xv1l7n4`,children:m})]}),(0,q.jsx)(`div`,{className:`x78zum5 xdt5ytf`,children:h??(0,q.jsx)(pI,{})}),(0,q.jsxs)(`div`,{className:`x78zum5 x6s0dn4 x1qughib x1txdalj x21xpn4`,children:[(0,q.jsx)(`div`,{className:`x78zum5 x6s0dn4 xzye2dw`,children:g}),(0,q.jsxs)(`div`,{className:`x78zum5 x6s0dn4 xzye2dw`,children:[_,y??(0,q.jsx)(hI,{})]})]})]}),x===`bottom`&&R]})})}vI.displayName=`ChatComposer`;var yI={root:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,kUk6DE:`x98rzlu`,kAzted:`x2lwn1j`,$$css:!0},inner:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,kUk6DE:`x98rzlu`,kAzted:`x2lwn1j`,$$css:!0},gapCompact:{kOIVth:`x1txdalj`,k8WAf4:`xce4md1`,kg3NbH:`xrrkdod`,$$css:!0},gapBalanced:{kOIVth:`x18g69wz`,k8WAf4:`x1na6nto`,kg3NbH:`x1pzlopt`,$$css:!0},gapSpacious:{kOIVth:`x1qh66ti`,k8WAf4:`xq6koh6`,kg3NbH:`xm7rs69`,$$css:!0}},bI={0:{kOIVth:`xsn7fz1`,$$css:!0},1:{kOIVth:`xzye2dw`,$$css:!0},2:{kOIVth:`x1txdalj`,$$css:!0},3:{kOIVth:`xjcht0a`,$$css:!0},4:{kOIVth:`x18g69wz`,$$css:!0},5:{kOIVth:`x9mgr7n`,$$css:!0},6:{kOIVth:`x1qh66ti`,$$css:!0},8:{kOIVth:`x4t41sb`,$$css:!0},10:{kOIVth:`x3hoi3v`,$$css:!0},"0.5":{kOIVth:`x1lsbc85`,$$css:!0},"1.5":{kOIVth:`x1s4dlld`,$$css:!0}};function xI({children:e,emptyState:t,scrollToTopAction:n,density:r=`balanced`,gap:i,isStreaming:a=!1,xstyle:o,className:s,style:c,"data-testid":l,ref:u,...d}){let f=sI(),p=(0,v.useRef)(null),m=(0,v.useRef)(null),[h,g]=(0,v.useTransition)();(0,v.useEffect)(()=>{if(f?.contentRef&&m.current)return f.contentRef(m.current),()=>f.contentRef(null)},[f]);let _=e!=null&&e!==!1&&!(Array.isArray(e)&&e.length===0);(0,v.useEffect)(()=>{let e=f?.scrollContainerRef?.current;if(!n||!p.current)return;let t=new IntersectionObserver(e=>{e[0]?.isIntersecting&&g(async()=>{await n()})},{root:e??null,threshold:0});return t.observe(p.current),()=>t.disconnect()},[n,f]);let y=(0,v.useMemo)(()=>({density:r}),[r]),b=r===`compact`?yI.gapCompact:r===`spacious`?yI.gapSpacious:yI.gapBalanced,x=i==null?null:bI[i];return(0,q.jsx)(nI,{value:y,children:(0,q.jsx)(`div`,{...d,ref:u,role:`log`,"aria-live":`polite`,"aria-busy":a||void 0,tabIndex:0,"data-testid":l,...J(Y(`chat-message-list`,{density:r}),w(yI.root,o),s,c),children:(0,q.jsxs)(`div`,{ref:m,...w(yI.inner,b,x),children:[n&&(0,q.jsx)(`div`,{ref:p,"aria-hidden":!0}),h&&(0,q.jsx)(`div`,{className:`x78zum5 xl56j7k x8o8v82`,children:(0,q.jsx)(ro,{size:`md`})}),(0,q.jsx)(`div`,{className:`x98rzlu x2lwn1j`,"aria-hidden":!0}),_?e:t?(0,q.jsx)(`div`,{className:`x78zum5 x6s0dn4 xl56j7k x98rzlu x2lwn1j`,children:t}):null]})})})}xI.displayName=`ChatMessageList`;var SI={root:{k1xSpc:`x78zum5`,kGNEyG:`x1cy8zhl`,ks0D6T:`x193iq5w`,$$css:!0},rootGapCompact:{kOIVth:`x1s4dlld`,$$css:!0},rootGapBalanced:{kOIVth:`x1txdalj`,$$css:!0},rootGapSpacious:{kOIVth:`xjcht0a`,$$css:!0},rootAssistant:{kXwgrk:`x1q0g3np`,kjj79g:`x1nhvcw1`,$$css:!0},rootUser:{kXwgrk:`x15zctf7`,kjj79g:`x1nhvcw1`,$$css:!0},rootSystem:{kXwgrk:`x1q0g3np`,kjj79g:`xl56j7k`,$$css:!0},contentColumn:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,kUk6DE:`x98rzlu`,k7Eaqz:`xeuugli`,$$css:!0},contentColumnSystem:{ks0D6T:`xq8v1hd`,kGNEyG:`x6s0dn4`,$$css:!0},contentColumnAssistant:{kGNEyG:`x1cy8zhl`,$$css:!0},contentColumnUser:{kGNEyG:`xuk3077`,$$css:!0},childrenWrap:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,k7Eaqz:`xeuugli`,kzqmXN:`xh8yej3`,$$css:!0},childrenAssistant:{kGNEyG:`x1cy8zhl`,$$css:!0},childrenUser:{kGNEyG:`xuk3077`,$$css:!0},childrenSystem:{kGNEyG:`x6s0dn4`,$$css:!0},childrenGapCompact:{kOIVth:`x1lsbc85`,$$css:!0},childrenGapBalanced:{kOIVth:`xzye2dw`,$$css:!0},childrenGapSpacious:{kOIVth:`x1s4dlld`,$$css:!0}};function CI({sender:e,children:t,avatar:n,name:r,metadata:i,density:a,xstyle:o,className:s,style:c,"data-testid":l,ref:u,...d}){let f=Gs(),p=rI(),m=a??p?.density??`balanced`,h=(0,v.useMemo)(()=>({sender:e,density:m}),[e,m]),g=m===`compact`?SI.rootGapCompact:m===`spacious`?SI.rootGapSpacious:SI.rootGapBalanced,_=m===`compact`?SI.childrenGapCompact:m===`spacious`?SI.childrenGapSpacious:SI.childrenGapBalanced,y=e===`system`?SI.rootSystem:e===`user`?SI.rootUser:SI.rootAssistant,b=e===`system`?SI.contentColumnSystem:e===`user`?SI.contentColumnUser:SI.contentColumnAssistant,x=e===`system`?SI.childrenSystem:e===`user`?SI.childrenUser:SI.childrenAssistant,S=e===`system`,C=n!=null&&!S,T=r!=null&&!S,E=(0,v.useId)();return(0,q.jsx)(eI,{value:h,children:(0,q.jsxs)(`article`,{...d,ref:u,"data-testid":l,"aria-label":T?void 0:f(`@astryx.chatMessage.messageFrom`,{sender:e}),"aria-labelledby":T?E:void 0,...J(Y(`chat-message`,{sender:e,density:m}),w(SI.root,y,C&&g,o),s,c),children:[C&&(0,q.jsx)(`div`,{className:`x2lah0s x5du68j`,children:n}),(0,q.jsxs)(`div`,{...w(SI.contentColumn,b),children:[T&&(0,q.jsx)(`div`,{id:E,className:`x141an7d x2mo6ok xv1l7n4 x1ltkj2j x14cgwvg`,children:r}),(0,q.jsx)(`div`,{...w(SI.childrenWrap,x,_),children:t}),i!=null&&!S&&(0,q.jsx)(`div`,{children:i})]})]})})}CI.displayName=`ChatMessage`;var wI={content:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,ks0D6T:`xl6temz`,kaIpWk:`xashgol`,kMv6JI:`x9ynric`,kGuDYH:`xjm74w1`,kLWn49:`xw6l6zx`,kHjlTd:`x1mzt3pk`,kTgw9:`x13faqbe`,$$css:!0},radiusCompact:{kaIpWk:`x1hviunn`,$$css:!0},paddingCompact:{k8WAf4:`x8o8v82`,kg3NbH:`x1pzlopt`,$$css:!0},paddingBalanced:{k8WAf4:`x8o8v82`,kg3NbH:`x1pzlopt`,$$css:!0},paddingSpacious:{k8WAf4:`x1na6nto`,kg3NbH:`xzz68wx`,$$css:!0},paddingBlockNone:{k8WAf4:`xt970qd`,$$css:!0},metadataPaddingCompact:{kg3NbH:`x1pzlopt`,$$css:!0},metadataPaddingBalanced:{kg3NbH:`x1pzlopt`,$$css:!0},metadataPaddingSpacious:{kg3NbH:`xzz68wx`,$$css:!0},metadataReducedGap:{keoZOQ:`x1c40v9y`,$$css:!0},headerReducedGap:{k1K539:`xdrfirk`,$$css:!0},nameRow:{kZKoxP:`x1grt7ep`,k1xSpc:`x78zum5`,kGNEyG:`x6s0dn4`,$$css:!0},alignEnd:{k9WMMc:`xp4054r`,$$css:!0},assistant:{kWkggS:`x17x4s8c`,kMwMTN:`x1tgivj0`,$$css:!0},user:{kWkggS:`x17x4s8c`,kMwMTN:`x1tgivj0`,$$css:!0},ghost:{kWkggS:`xjbqb8w`,kMwMTN:`x1tgivj0`,$$css:!0},groupFirstAssistant:{kVL7Gh:`xrfs2vl`,$$css:!0},groupMiddleAssistant:{krdFHd:`x3qb8m`,kVL7Gh:`xrfs2vl`,$$css:!0},groupLastAssistant:{krdFHd:`x3qb8m`,$$css:!0},groupFirstUser:{kT0f0o:`x1whkvtz`,$$css:!0},groupMiddleUser:{kfmiAY:`x126per9`,kT0f0o:`x1whkvtz`,$$css:!0},groupLastUser:{kfmiAY:`x126per9`,$$css:!0}};function TI({children:e,variant:t=`filled`,name:n,metadata:r,group:i,xstyle:a,className:o,style:s,"data-testid":c,ref:l,...u}){let d=tI(),f=d?.sender??`assistant`,p=d?.density??`balanced`,m=p===`compact`?wI.paddingCompact:p===`spacious`?wI.paddingSpacious:wI.paddingBalanced,h=f===`user`,g=t===`ghost`?wI.ghost:h?wI.user:wI.assistant,_=i===`first`?h?wI.groupFirstUser:wI.groupFirstAssistant:i===`middle`?h?wI.groupMiddleUser:wI.groupMiddleAssistant:i===`last`?h?wI.groupLastUser:wI.groupLastAssistant:null,v=p===`compact`?wI.metadataPaddingCompact:p===`spacious`?wI.metadataPaddingSpacious:wI.metadataPaddingBalanced;return(0,q.jsxs)(q.Fragment,{children:[n&&(0,q.jsx)(`div`,{"data-chat-name":!0,...w(v,wI.nameRow,wI.headerReducedGap,h&&wI.alignEnd),children:n}),(0,q.jsx)(`div`,{...u,ref:l,"data-testid":c,...J(Y(`chat-message-bubble`,{sender:f,variant:t,density:p}),w(wI.content,p===`compact`&&wI.radiusCompact,g,m,t===`ghost`&&wI.paddingBlockNone,_,a),o,s),children:e}),r&&(0,q.jsx)(`div`,{...w(v,wI.metadataReducedGap,h&&wI.alignEnd),children:r})]})}TI.displayName=`ChatMessageBubble`;var EI=1e3/60;function DI({scrollRef:e,enabled:t=!0,lockThreshold:n=10,buttonThreshold:r=100,damping:i=.7,stiffness:a=.05,mass:o=1.25}){let[s,c]=(0,v.useState)(!1),[l,u]=(0,v.useState)(!0),d=(0,v.useRef)(!0),f=(0,v.useRef)(!0),p=(0,v.useRef)(0),m=(0,v.useRef)(!1),h=(0,v.useRef)(void 0),g=(0,v.useRef)(0),_=(0,v.useRef)(0),y=(0,v.useRef)(0),b=(0,v.useCallback)(()=>{let t=e.current;if(!t||!d.current){m.current=!1,h.current=void 0,p.current=0;return}if(t.scrollHeight<=t.clientHeight){m.current=!1,h.current=void 0,p.current=0;return}let n=t.scrollHeight-t.clientHeight,r=n-t.scrollTop;if(Math.abs(r)<.5&&Math.abs(p.current)<.1){t.scrollTop=n,m.current=!1,h.current=void 0,p.current=0;return}let s=performance.now(),c=h.current?(s-h.current)/EI:1;h.current=s,p.current=(i*p.current+a*r)/o,t.scrollTop+=p.current*c,requestAnimationFrame(b)},[e,i,a,o]),x=(0,v.useCallback)(()=>{let t=e.current;t&&(m.current=!1,p.current=0,h.current=void 0,t.scrollTop=t.scrollHeight-t.clientHeight,g.current=t.scrollTop)},[e]),S=Ye(`(prefers-reduced-motion: reduce)`),C=(0,v.useCallback)(()=>{if(d.current){if(S){x();return}m.current||(m.current=!0,h.current=void 0,requestAnimationFrame(b))}},[b,x,S]),w=(0,v.useCallback)(e=>{if(d.current=!0,u(!0),c(!1),f.current=!1,e?.behavior===`instant`){x();return}C()},[C,x]),T=(0,v.useCallback)(t=>{let n=e.current;if(!n)return;let r=n.getBoundingClientRect(),i=t.getBoundingClientRect().top-r.top+n.scrollTop;n.scrollTo({top:i,behavior:`instant`}),g.current=n.scrollTop},[e]),E=(0,v.useCallback)(()=>{let t=e.current;if(!t)return;let n=t.getElementsByClassName(`astryx-chat-message`),r=n[n.length-1];r instanceof HTMLElement&&T(r)},[e,T]),D=(0,v.useCallback)(()=>{d.current=!0,u(!0),c(!1),C()},[C]),O=(0,v.useCallback)(()=>{d.current=!1,m.current=!1,u(!1)},[]),k=(0,v.useCallback)(()=>{if(!t||!d.current)return;let n=e.current;if(f.current&&n&&n.scrollHeight>n.clientHeight){f.current=!1,x();return}C()},[t,C,x,e]);return(0,v.useEffect)(()=>{let i=e.current;if(!i||!t)return;g.current=i.scrollTop,_.current=i.scrollHeight,y.current=i.offsetHeight;let a=()=>{let{scrollTop:e,scrollHeight:t,offsetHeight:n}=i,a=t-e-n;c(a>r);let o=t!==_.current,s=n!==y.current;if(_.current=t,y.current=n,o||s){g.current=e;return}let l=e<g.current;g.current=e,l&&d.current&&(d.current=!1,m.current=!1,u(!1))},o=()=>{i.scrollHeight-i.scrollTop-i.offsetHeight<=n&&(d.current=!0,u(!0))},s=e=>{e.deltaY<0&&m.current&&(d.current=!1,m.current=!1,u(!1))},l=()=>{m.current&&(d.current=!1,m.current=!1,u(!1))};return i.addEventListener(`scroll`,a,{passive:!0}),i.addEventListener(`scrollend`,o),i.addEventListener(`wheel`,s,{passive:!0}),i.addEventListener(`touchmove`,l,{passive:!0}),requestAnimationFrame(()=>{i.scrollHeight>i.clientHeight&&(i.scrollTop=i.scrollHeight-i.clientHeight,g.current=i.scrollTop,f.current=!1)}),()=>{i.removeEventListener(`scroll`,a),i.removeEventListener(`scrollend`,o),i.removeEventListener(`wheel`,s),i.removeEventListener(`touchmove`,l)}},[e,t,n,r]),{isScrolledUp:s,isLocked:l,scrollToBottom:w,scrollToMessage:T,lock:D,unlock:O,scrollIfLocked:k,scrollToLastMessage:E}}function OI({isLocked:e,onResize:t}){let[n,r]=(0,v.useState)(!1),i=(0,v.useRef)(null),a=(0,v.useRef)(e);a.current=e;let o=(0,v.useRef)(t);o.current=t;let s=(0,v.useRef)(null),c=(0,v.useRef)(null),l=(0,v.useCallback)(e=>{Ii(e,()=>{o.current?.();let t=e.getElementsByClassName(`astryx-chat-message`),n=t.length>0?t[t.length-1]:null;n&&n!==i.current&&(i.current=n,a.current||r(!0))}),c.current=()=>Li(e)},[]),u=(0,v.useCallback)(()=>{c.current?.(),c.current=null},[]),d=(0,v.useCallback)(e=>{e!==s.current&&(u(),s.current=e,e&&l(e))},[l,u]);return(0,v.useEffect)(()=>()=>u(),[u]),{hasNewMessages:n,dismiss:(0,v.useCallback)(()=>{r(!1)},[]),contentRef:d}}var kI={root:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,keoZOQ:`xtbrsbv`,$$css:!0},chevronTransition:{kmkexE:`x1ob6yzd x9kvfbb`,$$css:!0},chevronExpanded:{k3aq6I:`x19jd1h0`,$$css:!0},statusIcon:{kVAEAm:`x1n2onr6`,k1xSpc:`x3nfvp2`,kGNEyG:`x6s0dn4`,kjj79g:`xl56j7k`,kmuXW:`x2lah0s`,kzqmXN:`x1kky2od`,kZKoxP:`xlup9mm`,kaIpWk:`xjspbzw`,$$css:!0},nodePill:{kmuXW:`x2lah0s`,$$css:!0},colorPending:{kMwMTN:`xnbbluu`,$$css:!0},colorRunning:{kMwMTN:`xqwr325`,$$css:!0},colorComplete:{kMwMTN:`xtjic6`,$$css:!0},colorError:{kMwMTN:`xjt36v0`,$$css:!0}},AI={pending:`clock`,running:null,complete:`check`,error:`close`},jI={pending:kI.colorPending,running:kI.colorRunning,complete:kI.colorComplete,error:kI.colorError};function MI(e){return wi(e.key,()=>[e.name,e.status??`complete`,e.target??``,e.node??``,e.duration??``,e.additions?.toString()??``,e.deletions?.toString()??``,e.errorMessage??``].join(``))}function NI({call:e}){let t=Gs(),n=e.status??`complete`,r=e.resultDetail!=null,[i,a]=(0,v.useState)(!1),o=(0,v.useId)(),s=r?()=>a(e=>!e):void 0,c=(0,q.jsxs)(`div`,{role:r?`button`:void 0,tabIndex:r?0:void 0,"aria-expanded":r?i:void 0,"aria-controls":r&&i?o:void 0,onClick:s,onKeyDown:r?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),s?.())}:void 0,...{0:{className:`x78zum5 x6s0dn4 x1s4dlld xjwf9q1 x13f7esw`},1:{className:`x78zum5 x6s0dn4 x1s4dlld xjwf9q1 x13f7esw x1ypdohk xh6dtrn x7a5moj xtedp8i xe9uy6x`}}[!!r<<0],children:[(0,q.jsxs)(`span`,{title:n===`error`?e.errorMessage:void 0,...w(kI.statusIcon,jI[n]),children:[n===`running`||n===`pending`?(0,q.jsx)(ro,{size:`sm`,shade:`subtle`}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`x10l6tqk x10a8y8t x1pjcqnp xtwfq29 x1xyvc85`}),(0,q.jsx)(`span`,{className:`x1n2onr6 x3nfvp2`,children:(0,q.jsx)(fa,{icon:AI[n]??`check`,size:`xsm`,color:`inherit`})})]}),n===`error`&&e.errorMessage!=null&&(0,q.jsx)(io,{children:t(`@astryx.chatToolCalls.error`,{message:e.errorMessage??``})})]}),(0,q.jsx)(`span`,{className:`x141an7d x1ltkj2j x9m5x89 x1e4wzip xv1l7n4 xuxw1ft xb3r6kr xlyipyv xs83m0k x13n9wmd`,children:e.name}),e.node!=null&&(0,q.jsx)(UF,{label:e.node,variant:`neutral`,xstyle:kI.nodePill}),e.target!=null&&(0,q.jsx)(`span`,{className:`x141an7d x1ltkj2j x9ynric xnbbluu xuxw1ft xb3r6kr xlyipyv x1g3ib7 xeuugli`,children:e.target}),(e.additions!=null||e.deletions!=null||e.stats!=null)&&(0,q.jsxs)(`span`,{className:`x78zum5 x6s0dn4 xzye2dw x141an7d x1ltkj2j x9ynric xnbbluu x2lah0s`,children:[e.additions!=null&&(0,q.jsxs)(`span`,{className:`xtjic6`,children:[`+`,e.additions]}),e.deletions!=null&&(0,q.jsxs)(`span`,{className:`xjt36v0`,children:[`-`,e.deletions]}),e.stats]}),e.duration!=null&&n===`complete`&&(0,q.jsx)(`span`,{className:`x141an7d x1ltkj2j x9ynric xnbbluu xuxw1ft x2lah0s`,children:e.duration}),r&&(0,q.jsx)(`span`,{className:`x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg xnbbluu xvc5jky`,children:(0,q.jsx)(fa,{icon:`chevronDown`,size:`xsm`,color:`inherit`,xstyle:[kI.chevronTransition,i&&kI.chevronExpanded]})})]});return r?(0,q.jsxs)(`div`,{children:[c,i&&(0,q.jsx)(`div`,{id:o,className:`x1f43n9v x1wesfrj`,children:e.resultDetail})]}):c}function PI(e){let t=Gs(),{calls:n,label:r,isExpanded:i,defaultIsExpanded:a,onExpandedChange:o,xstyle:s,className:c,style:l,ref:u,...d}=e,[f,p]=(0,v.useState)(a??!1),m=(0,v.useId)(),h=i!==void 0,g=h?i:f,_=(0,v.useCallback)(()=>{let e=!g;h||p(e),o?.(e)},[g,h,o]);if(n.length===0)return null;if(n.length===1)return(0,q.jsx)(`div`,{ref:u,...J(Y(`chat-tool-calls`),w(kI.root,s),c,l),...d,children:(0,q.jsx)(NI,{call:n[0]})});let y=n[n.length-1],b=y.status??`complete`;return(0,q.jsxs)(`div`,{ref:u,...J(Y(`chat-tool-calls`),w(kI.root,s),c,l),...d,children:[(0,q.jsxs)(`div`,{role:`button`,tabIndex:0,"aria-expanded":g,"aria-controls":m,onClick:_,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),_())},className:`x78zum5 x6s0dn4 x1s4dlld xjwf9q1 x13f7esw x1ypdohk`,children:[g?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`x3nfvp2 x6s0dn4 xl56j7k x2lah0s x1kky2od xlup9mm xv1l7n4`,children:(0,q.jsx)(fa,{icon:`wrench`,size:`sm`,color:`inherit`})}),(0,q.jsx)(`span`,{className:`x141an7d x1ltkj2j x9ynric x1e4wzip xv1l7n4`,children:t(`@astryx.chatToolCalls.groupLabel`,{count:n.length})})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{...w(kI.statusIcon,jI[b]),children:b===`running`||b===`pending`?(0,q.jsx)(ro,{size:`sm`,shade:`subtle`}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`x10l6tqk x10a8y8t x1pjcqnp xtwfq29 x1xyvc85`}),(0,q.jsx)(`span`,{className:`x1n2onr6 x3nfvp2`,children:(0,q.jsx)(fa,{icon:AI[b]??`check`,size:`xsm`,color:`inherit`})})]})}),(0,q.jsx)(`span`,{className:`x141an7d x1ltkj2j x9m5x89 x1e4wzip xv1l7n4 xuxw1ft xb3r6kr xlyipyv xs83m0k x13n9wmd`,children:y.name}),y.target!=null&&(0,q.jsx)(`span`,{className:`x141an7d x1ltkj2j x9ynric xnbbluu xuxw1ft xb3r6kr xlyipyv x1g3ib7 xeuugli`,children:y.target})]}),(0,q.jsx)(`span`,{className:`x3nfvp2 x6s0dn4 x1lsbc85 x141an7d x1ltkj2j x9ynric xnbbluu x2lah0s`,children:!g&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(fa,{icon:`wrench`,size:`xsm`,color:`inherit`}),n.length]})}),(0,q.jsx)(`span`,{className:`x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg xnbbluu`,children:(0,q.jsx)(fa,{icon:`chevronDown`,size:`xsm`,color:`inherit`,xstyle:[kI.chevronTransition,g&&kI.chevronExpanded]})})]}),(0,q.jsx)(`div`,{id:m,...{0:{className:`xrvj5dj xihq33y xb0j27v x9kvfbb`},1:{className:`xrvj5dj xb0j27v x9kvfbb x1tu4anv`}}[!!g<<0],children:(0,q.jsx)(`div`,{className:`xb3r6kr x2lwn1j x7a5moj xtedp8i`,children:(0,q.jsx)(`div`,{className:`x78zum5 xdt5ytf x7a5moj xtedp8i`,children:n.map(e=>(0,q.jsx)(NI,{call:e},MI(e)))})})})]})}PI.displayName=`ChatToolCalls`;var FI={wrapper:{k1xSpc:`x78zum5`,kjj79g:`xl56j7k`,kGO01o:`xvmdzux`,$$css:!0},button:{"--radius-element":`xnpej1e`,khDVqt:`xuxw1ft`,kg3NbH:`xf314gf`,$$css:!0},buttonWithLabel:{kwRFfy:`x1t818jl`,$$css:!0}};function II({ref:e,isVisible:t,label:n,onClick:r,xstyle:i,className:a,style:o,...s}){let c=Gs();return(0,q.jsx)(`div`,{ref:e,...J(Y(`chat-layout-scroll-button`),w(FI.wrapper,i),a,o),...s,children:(0,q.jsx)(`div`,{...{0:{className:`xawy1a7 xb3r6kr xjspbzw x1prclbq x14hfi27 x10w6t97 x1apppo2 xlr8y92 x2rcmwa x12w9bfk xg01cxk x47corl x1x67gh`},2:{className:`xawy1a7 xb3r6kr xjspbzw x1prclbq x14hfi27 x10w6t97 x1apppo2 xlr8y92 x2rcmwa x12w9bfk x1hc1fzr x67bb7w x1x67gh`},1:{className:`xawy1a7 xb3r6kr xjspbzw x1prclbq x14hfi27 x10w6t97 x1apppo2 xlr8y92 x2rcmwa x12w9bfk xg01cxk x47corl x1ncir08`},3:{className:`xawy1a7 xb3r6kr xjspbzw x1prclbq x14hfi27 x10w6t97 x1apppo2 xlr8y92 x2rcmwa x12w9bfk x1hc1fzr x67bb7w x1ncir08`}}[!!t<<1|!!n<<0],children:(0,q.jsx)(ec,{label:n??c(`@astryx.chatLayoutScrollButton.scrollToBottom`),"aria-label":n??c(`@astryx.chatLayoutScrollButton.scrollToBottom`),icon:(0,q.jsx)(fa,{icon:`chevronDown`,size:`md`}),variant:`ghost`,size:`md`,isIconOnly:!n,onClick:r,xstyle:[FI.button,n?FI.buttonWithLabel:null],children:n??void 0})})})}II.displayName=`ChatLayoutScrollButton`;var LI={root:{kVAEAm:`x1n2onr6`,k9g6sI:`x12h1iku`,kAzted:`x2lwn1j`,kUk6DE:`x98rzlu`,k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,$$css:!0},rootScrollable:{kORKVm:`x1odjw0f`,kXHlph:`x6ikm8r`,k5wCbM:`x1mqgsch`,$$css:!0},messageArea:{k1xSpc:`x78zum5`,kXwgrk:`xdt5ytf`,kUOVxO:`xvueqy4`,kzQI83:`x1iyjqo2`,kmuXW:`x2lah0s`,kCS8Yb:`xdl72j9`,kGO01o:`xjpqqx5`,kzqmXN:`xh8yej3`,ks0D6T:`x193iq5w`,kg3NbH:`xnjsko4`,$$css:!0},blurLayer:{kVAEAm:`x10l6tqk`,krVfgx:`x1ey2m1c`,kLqNvP:`x1o0tod`,kt4wiu:`xtijo5x`,kfzvcC:`x47corl`,k6WDB:`xvn2z4z`,keRtuK:`x67t5t6`,kZKoxP:`xpyat2d`,kX1K2I:`xw26lqc`,kAExgp:`x1bv1mxo`,$$css:!0},dock:{kVAEAm:`x1n2onr6`,kY2c9j:`x1vjfegm`,kfzvcC:`x67bb7w`,kg3NbH:`xrrkdod`,kGO01o:`xvmdzux`,$$css:!0},dockInner:{kUOVxO:`xvueqy4`,kzqmXN:`xh8yej3`,ks0D6T:`x193iq5w`,$$css:!0},messageAreaCompact:{ks0D6T:`x193iq5w`,kg3NbH:`xnjsko4`,$$css:!0},messageAreaBalanced:{ks0D6T:`x193iq5w`,kg3NbH:`xnjsko4`,$$css:!0},messageAreaSpacious:{ks0D6T:`x1ap80js`,kg3NbH:`x1pzlopt`,$$css:!0},blurLayerCompact:{kZKoxP:`xwzfr38`,kX1K2I:`xkm2don`,kAExgp:`xiy8rlo`,$$css:!0},blurLayerBalanced:{kZKoxP:`xpyat2d`,kX1K2I:`xw26lqc`,kAExgp:`x1bv1mxo`,$$css:!0},blurLayerSpacious:{kZKoxP:`x1wkxgih`,kX1K2I:`xr5yg4x`,kAExgp:`xo9xo30`,$$css:!0},dockCompact:{kg3NbH:`xf314gf`,kGO01o:`x1wesfrj`,$$css:!0},dockBalanced:{kg3NbH:`xrrkdod`,kGO01o:`xvmdzux`,$$css:!0},dockSpacious:{kg3NbH:`x1pzlopt`,kGO01o:`xvmdzux`,$$css:!0},dockInnerCompact:{ks0D6T:`x193iq5w`,$$css:!0},dockInnerBalanced:{ks0D6T:`x193iq5w`,$$css:!0},dockInnerSpacious:{ks0D6T:`x1ap80js`,$$css:!0}};function RI(e){return!(e==null||e===!1||Array.isArray(e)&&e.length===0)}function zI({children:e,composer:t,density:n=`balanced`,emptyState:r,scrollButton:i,scrollRef:a,xstyle:o,className:s,style:c,"data-testid":l,ref:u,...d}){let f=Gs(),p=(0,v.useRef)(null),m=a??p,h=!a,g=DI({scrollRef:m}),_=OI({isLocked:g.isLocked,onResize:g.scrollIfLocked}),y=(0,q.jsx)(II,{isVisible:g.isScrolledUp||_.hasNewMessages,label:_.hasNewMessages?f(`@astryx.chatLayout.newMessages`):void 0,onClick:()=>{_.dismiss(),g.scrollToBottom()}}),b=(0,v.useMemo)(()=>({scrollContainerRef:m,contentRef:_.contentRef}),[m,_.contentRef]),x=!RI(e),S={compact:{messageArea:LI.messageAreaCompact,blurLayer:LI.blurLayerCompact,dock:LI.dockCompact,dockInner:LI.dockInnerCompact},balanced:{messageArea:LI.messageAreaBalanced,blurLayer:LI.blurLayerBalanced,dock:LI.dockBalanced,dockInner:LI.dockInnerBalanced},spacious:{messageArea:LI.messageAreaSpacious,blurLayer:LI.blurLayerSpacious,dock:LI.dockSpacious,dockInner:LI.dockInnerSpacious}}[n];return(0,q.jsx)(oI,{value:b,children:(0,q.jsxs)(`div`,{...d,ref:Ei(u,p),"data-testid":l,...J(Y(`chat-layout`,{density:n}),w(LI.root,h&&LI.rootScrollable,o),s,c),children:[(0,q.jsx)(`div`,{...w(LI.messageArea,S.messageArea),children:x&&r?(0,q.jsx)(`div`,{className:`x78zum5 x6s0dn4 xl56j7k x98rzlu xz65tgg`,children:r}):e}),(0,q.jsxs)(`div`,{...{0:{className:`x1ey2m1c x1o0tod xtijo5x x1ja2u2z xc8icb0 x47corl x2lah0s xixxii4`},1:{className:`x1ey2m1c x1o0tod xtijo5x x1ja2u2z xc8icb0 x47corl x2lah0s x7wzq59`}}[!!h<<0],children:[i===void 0?y:i,(0,q.jsx)(`div`,{...w(LI.blurLayer,S.blurLayer)}),(0,q.jsx)(`div`,{...w(LI.dock,S.dock),children:(0,q.jsx)(`div`,{...w(LI.dockInner,S.dockInner),children:t})})]})]})})}zI.displayName=`ChatLayout`;var BI=`draft_mutation`;function VI(e,t){return e||t}function HI(e){return e.map((e,t)=>{let n={mutationId:e.id,summary:e.summary,affectedStageIds:e.affectedStageIds};return{type:`tool-call`,toolCallId:`mutation-${e.id}-${t}`,toolName:BI,args:n,argsText:JSON.stringify(n),result:{status:`applied`}}})}var UI=`Chat failed:`;function WI(e){return e.trim().length>0}function GI(e){return e===`user`||e===`system`||e===`assistant`?e:`assistant`}function KI(e){return typeof e==`string`?e?[{type:`text`,text:e}]:[]:e}function qI(e){if(!e||typeof e!=`object`)return null;let t=typeof e.mutationId==`string`?e.mutationId:``,n=typeof e.summary==`string`?e.summary:``,r=Array.isArray(e.affectedStageIds)?e.affectedStageIds.filter(e=>typeof e==`string`):[];return t?{mutationId:t,summary:n,affectedStageIds:r}:null}function JI(e){let t=[];for(let n of e){let e=GI(n.role),r=KI(n.content),i=r.filter(e=>e.type===`text`&&typeof e.text==`string`),a=i.find(e=>e.text.startsWith(UI));if(a){t.push({kind:`text`,role:e,text:a.text});continue}let o=i.map(e=>e.text).join(``);o&&t.push({kind:`text`,role:e,text:o});for(let e of r){if(e.type!==`tool-call`||e.toolName!==`draft_mutation`)continue;let n=qI(e.args);n&&t.push({kind:`draft_mutation`,toolCallId:typeof e.toolCallId==`string`&&e.toolCallId?e.toolCallId:`mutation-${n.mutationId}`,args:n})}}return t}function YI(e,t){if(t.length===0)return e?[{kind:`text`,text:e}]:[];let n=[...t].sort((e,t)=>e.textOffset-t.textOffset),r=[];for(let t of n){let n=Math.max(0,Math.min(t.textOffset,e.length)),i=r[r.length-1];i&&i.offset===n?i.calls.push({...t,textOffset:n}):r.push({offset:n,calls:[{...t,textOffset:n}]})}let i=[],a=0;for(let t of r)t.offset>a&&i.push({kind:`text`,text:e.slice(a,t.offset)}),i.push({kind:`tools`,calls:t.calls}),a=t.offset;return a<e.length?i.push({kind:`text`,text:e.slice(a)}):i.length===0&&e&&i.push({kind:`text`,text:e}),i}function XI(e,t){if(t!==1)return e===0?`first`:e===t-1?`last`:`middle`}function ZI(e){return typeof e.content==`string`||Array.isArray(e.content)?e.content:Array.isArray(e.parts)?e.parts:[]}function QI(e,t){return(0,q.jsx)(PI,{calls:t.map(e=>({key:e.id,name:e.name,status:e.status,target:e.target,errorMessage:e.errorMessage}))},e)}function $I({greeting:e,toolActivity:t=[],MutationCard:n,composerActions:r,onStop:i}){let a=cT(),o=dT(e=>e.thread.isRunning),s=dT(e=>e.thread.isEmpty),c=dT(e=>e.thread.messages),l=dT(e=>e.composer.text),u=JI(c.map(e=>({role:e.role,content:ZI(e)}))),d=-1;for(let e=u.length-1;e>=0;--e){let t=u[e];if(t.kind===`text`&&t.role===`user`)break;if(t.kind===`text`&&t.role===`assistant`){d=e;break}}let f=d>=0,p=o&&!f&&t.length===0,m=(0,q.jsx)(vI,{value:l,onChange:e=>a.composer.setText(e),onSubmit:e=>{o||WI(e)&&(a.composer.setText(e),a.composer.send())},onStop:i,isStopShown:o,placeholder:`Describe a stage or workflow change…`,footerActions:r,density:`compact`});if(s)return(0,q.jsxs)(py,{height:`100%`,minHeight:0,gap:3,padding:3,children:[(0,q.jsx)(yy,{size:`fill`,children:(0,q.jsx)(py,{height:`100%`,vAlign:`center`,hAlign:`center`,padding:3,children:(0,q.jsx)(eo,{type:`body`,justify:`center`,as:`p`,children:e})})}),m]});let h=[],g=[],_=[],v=()=>{if(g.length===0)return;let e=g;g=[],h.push((0,q.jsx)(CI,{sender:`user`,children:e.map((t,n)=>(0,q.jsx)(TI,{group:XI(n,e.length),children:t},n))},`user-${h.length}`))},y=()=>{if(_.length===0)return;let e=_;_=[],h.push((0,q.jsx)(CI,{sender:`assistant`,children:e},`assistant-${h.length}`))};for(let e=0;e<u.length;e+=1){let r=u[e];if(r.kind===`text`&&r.role===`user`){y(),g.push(r.text);continue}if(r.kind===`text`&&r.role===`assistant`){if(v(),e===d&&t.length>0){let n=YI(r.text,t);for(let[t,r]of n.entries())if(r.kind===`text`){if(!r.text)continue;_.push((0,q.jsx)(TI,{variant:`ghost`,children:(0,q.jsx)(Dm,{isStreaming:!1,density:`compact`,contentWidth:`100%`,children:r.text})},`text-${_.length}`))}else y(),h.push(QI(`tools-${e}-${t}`,r.calls))}else _.push((0,q.jsx)(TI,{variant:`ghost`,children:(0,q.jsx)(Dm,{isStreaming:!1,density:`compact`,contentWidth:`100%`,children:r.text})},`text-${_.length}`));continue}if(r.kind===`text`){v(),y(),h.push((0,q.jsx)(CI,{sender:`system`,children:(0,q.jsx)(eo,{type:`supporting`,children:r.text})},`system-${h.length}`));continue}r.kind===`draft_mutation`&&(v(),_.push((0,q.jsx)(n,{args:r.args},r.toolCallId)))}return v(),y(),!f&&t.length>0&&h.push(QI(`tool-activity`,t)),p&&h.push((0,q.jsx)(CI,{sender:`assistant`,children:(0,q.jsx)(TI,{variant:`ghost`,children:(0,q.jsx)(eo,{type:`supporting`,children:`Working…`})})},`in-progress`)),(0,q.jsx)(zI,{composer:m,children:(0,q.jsx)(xI,{isStreaming:o,density:`compact`,gap:2,children:h})})}function eL({seedMessages:e,adapter:t,greeting:n,toolActivity:r,MutationCard:i,composerActions:a,onStop:o}){let s=oF(t,{initialMessages:e});return(0,q.jsx)(`div`,{className:`workshop-lab__aui-island`,children:(0,q.jsx)(TF,{runtime:s,children:(0,q.jsx)(`div`,{className:`workshop-lab__aui-thread-wrap`,children:(0,q.jsx)($I,{greeting:n,toolActivity:r,MutationCard:i,composerActions:a,onStop:o})})})})}function tL(){return{pipeline:{id:`untitled`,stages:[]}}}function nL(e){return(e?.trim()??``)||`Untitled`}function rL(e){return e.id?`build:${e.id}`:`path:${encodeURIComponent(e.projectRoot??``)}/${encodeURIComponent(e.relativePath??``)}`}function iL(e){return e.relativePath?`${e.name} · ${e.relativePath}`:e.name}function aL(e,t){return typeof t==`string`&&t.length>0&&t===e}function oL(e){return{buildId:null,draft:tL(),rows:e.map(e=>({...e})),error:null}}function sL(e){let t=e.rows.map(e=>({...e}));return e.activeBuildId?!e.build||e.build.id!==e.activeBuildId?{buildId:null,draft:tL(),rows:t,error:e.error??`Build not found`}:{buildId:e.build.id,draft:e.build.draft,rows:mL(t,e.build),error:null}:{buildId:null,draft:tL(),rows:t,error:null}}function cL(e,t){return e?t.find(t=>t.id===e)?.name??`Untitled`:null}function lL(e,t){let n=e.rows.find(e=>e.id===t.buildId);return pL(e,{id:t.buildId,draft:t.draft,projectRoot:n?.projectRoot??null,relativePath:n?.relativePath??null})}function uL(e,t){let n=e.map(e=>({...e}));return!t?.id||n.some(e=>e.id===t.id)?n:[...n,{...t}]}function dL(e,t,n){return e.sessionId!==t.sessionId||e.buildId!==t.buildId?new Map:n}async function fL(e){if(e.row.id){let t=await e.loadBuild(e.row.id);if(!t.ok)return{selection:{...e.selection,error:t.error},changed:!1};let n=await e.updatePointer(e.sessionId,t.build.id);if(!n.ok)return{selection:{...e.selection,error:n.error},changed:!1};let r=pL(e.selection,t.build);return{selection:r,changed:r.buildId!==e.selection.buildId}}if(!e.row.projectRoot||!e.row.relativePath)return{selection:e.selection,changed:!1};let t=await e.focus(e.row);if(!t.ok)return{selection:{...e.selection,error:t.error},changed:!1};let n=await e.updatePointer(e.sessionId,t.build.id);if(!n.ok)return{selection:{...e.selection,error:n.error},changed:!1};let r=pL(e.selection,t.build);return{selection:r,changed:r.buildId!==e.selection.buildId}}function pL(e,t){return{buildId:t.id,draft:t.draft,rows:mL(e.rows,t),error:null}}function mL(e,t){let n={id:t.id,name:nL(t.draft.pipeline.id),projectRoot:t.projectRoot,relativePath:t.relativePath},r=t.projectRoot&&t.relativePath?`${t.projectRoot}\0${t.relativePath}`:null,i=!1,a=[];for(let o of e){let e=o.id!=null&&o.id===t.id,s=r!=null&&o.projectRoot===t.projectRoot&&o.relativePath===t.relativePath;if(e||s){i||=(a.push(n),!0);continue}a.push({...o})}return i||a.push(n),a}var hL=420,gL=280,_L=320,vL=32,yL={pipeline:{id:`untitled`,stages:[]}},bL=`What are we building? Tell me the workflow in your own words — I’ll ask where it changes the draft.`,xL={nodes:[],edges:[]},SL=(0,v.createContext)(null);function CL(){let e=(0,v.useContext)(SL);if(!e)throw Error(`WorkshopMutationContext missing`);return e}function wL(e){return e.split(/[-_]/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function TL(){return[]}function EL(e){return e.length===0?[]:e.map(e=>({role:e.role===`user`||e.role===`system`||e.role===`assistant`?e.role:`assistant`,content:e.text}))}function DL(e,t){return(e.stages??[]).find(e=>typeof e.body.id==`string`&&e.body.id===t||e.path.replace(/^\.\//,``).replace(/\.ya?ml$/,``)===t)?.body??null}function OL(e){if(!e||e.io==null)return`IO not set yet`;try{return JSON.stringify(e.io)}catch{return`IO present`}}function kL(e){if(!e)return`Verify not set yet`;if(e.verify!=null)try{return JSON.stringify(e.verify)}catch{return`Verify present`}return`Verify not set yet`}function AL(e){if(!e)return[];let t=[];if((e.ask_operator===!0||e.hitl===!0)&&t.push(`confirm`),Array.isArray(e.gates))for(let n of e.gates)typeof n==`string`&&t.push(n);return t}function jL(e,t){let n=new Map;for(let e of t.values())if(e.status===`pending`)for(let t of e.proposal.affectedStageIds)n.set(t,`pending`);return e.pipeline.stages.map((t,r)=>{let i=typeof t.id==`string`&&t.id?t.id:`stage-${r}`,a=DL(e,i),o=typeof a?.system_prompt==`string`?a.system_prompt:typeof a?.systemPrompt==`string`?a.systemPrompt:`Stage ${i}`;return{stageId:i,title:wL(i),promptSummary:o,ioSummary:OL(a),verifySummary:kL(a),hitlFlags:AL(a),mutationStatus:n.get(i)??`applied`}})}function ML(e){return{nodes:e.map((t,n)=>{let r=t.mutationStatus===`pending`;return{stage_id:t.stageId,status:r?`waiting_for_input`:`succeeded`,readiness:r?`waiting`:`succeeded`,layer:n,layer_order:0,attempt_count:+!r,gate_kinds:r?[`confirm`]:void 0,blocked_by:n>0?[e[n-1].stageId]:void 0}}),edges:e.slice(1).map((t,n)=>({from:e[n].stageId,to:t.stageId}))}}function NL(e){return e.map(e=>{let t=e.mutationStatus===`pending`;return{stage_id:e.stageId,status:t?`waiting_for_input`:`succeeded`,events:[],envelope:null,artifacts:[],attempt_count:+!t}})}function PL(e){return e.map(e=>{let t=e.mutationStatus===`pending`;return{stageId:e.stageId,title:e.title,kicker:t?`mutation · pending`:`stage · draft`,status:t?`waiting_for_input`:`succeeded`,attemptCount:t?void 0:1,readinessLine:t?`Awaiting Accept / Reject`:void 0,gateKinds:t?[`confirm`]:void 0,titleOnly:!0,isWaitingAttention:t,isSuperseded:!1}})}function FL(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(!(!n||n.role!==`user`))return n.content.filter(e=>e.type===`text`).map(e=>e.text).join(` `).trim()}return``}function IL(e){let t=[];for(let n of e)n.type===`message`&&n.role===`assistant`&&n.text?t.push(n.text):n.type===`error`&&n.message&&t.push(n.message);return t.join(`
132
132
 
133
- `).trim()}function RL(e){return{async*run({messages:t,abortSignal:n}){let r=IL(t);if(!r){yield{content:[{type:`text`,text:xL}]};return}e.clearActivity();let i=e.sessionId.current;if(!i){yield{content:[{type:`text`,text:`Workshop session is still starting. Try again in a moment.`}]};return}let a=``,o=[],s=[],c,l=e=>{s.push(e),c?.(),c=void 0},u=()=>new Promise(e=>{c=e}),d=new AbortController,f=()=>{d.signal.aborted||(d.abort(),l({kind:`aborted`}))};e.stop.current=f,n?.aborted?f():n?.addEventListener(`abort`,f,{once:!0});let p=wr({sessionId:i,message:r,draft:e.draft.current,model:e.model.current},{onDelta:e=>{a+=e,l({kind:`delta`})},onActivity:t=>{e.sessionId.current===i&&(t.draft!==null&&typeof t.draft==`object`&&oL(e.selectedBuildId.current,t.buildId)&&e.setDraft(t.draft),e.pushActivity({id:t.id,name:t.name,status:t.status,...t.target===void 0?{}:{target:t.target},...t.errorMessage===void 0?{}:{errorMessage:t.errorMessage},textOffset:a.length}))},onEvent:e=>{e.type===`proposal`&&o.push(e.proposal)},onPointerChange:t=>{e.sessionId.current===i&&(e.selectedBuildId.current=t.buildId,e.setDraft(t.draft),e.onPointerChange?.(t))},signal:d.signal}).then(e=>(l({kind:`done`,result:e}),e));try{for(;;){s.length===0&&await u();let t=s.shift();if(t.kind===`delta`){yield{content:[{type:`text`,text:a||`…`}]};continue}if(t.kind===`aborted`){let t=await Cr(i),n=e.sessionId.current===i&&oL(e.selectedBuildId.current,t?.buildId);t?.draft&&n&&e.setDraft(t.draft),n&&t?.pending&&!o.some(e=>e.id===t.pending?.id)&&o.push(t.pending),n&&o.length>0&&e.registerMutations(o),yield{content:[{type:`text`,text:a.trim()||`Stopped.`},...UI(o)]};return}await p;let n=t.result;if(!n.ok){yield{content:[{type:`text`,text:d.signal.aborted||n.error===`Stopped.`?a.trim()||`Stopped.`:`${WI} ${n.error}`}]};return}let r=e.sessionId.current===i&&oL(e.selectedBuildId.current,n.buildId);r&&e.setDraft(n.draft);let c=LL(n.events),l=a.trim()||c||(o.length>0?`Updated the draft. Accept or Reject the mutation cards below.`:`No draft change. ${e.model.current} finished without updating the studio.`);r&&o.length>0?e.registerMutations(o):r&&n.pending&&(e.registerMutations([n.pending]),o.push(n.pending)),yield{content:[{type:`text`,text:l},...UI(o)]};return}}finally{e.stop.current===f&&(e.stop.current=null),n?.removeEventListener(`abort`,f)}}}}function zL({args:e}){let t=wL(),n=fT(e=>e.thread.isRunning),r=typeof e?.mutationId==`string`?e.mutationId:``,i=r?t.getCard(r):void 0,a=typeof e?.summary==`string`?e.summary:i?.proposal.summary??`Draft mutation`,o=Array.isArray(e?.affectedStageIds)&&e.affectedStageIds.length>0?e.affectedStageIds:i?.proposal.affectedStageIds??[],s=i?.status??`pending`,[c,l]=(0,v.useState)(!1),u=HI(n,c),d=async e=>{if(!(!r||u||s!==`pending`)){l(!0);try{e===`accepted`?await t.accept(r):await t.reject(r)}finally{l(!1)}}};return(0,q.jsxs)(`div`,{className:`workshop-lab__proposal`,"data-status":s,"data-tool":`draft_mutation`,children:[(0,q.jsxs)(`div`,{className:`workshop-lab__proposal-head`,children:[(0,q.jsx)(`div`,{className:`eyebrow`,children:`Draft mutation`}),(0,q.jsx)(`strong`,{className:`workshop-lab__proposal-title`,children:a}),o.length>0?(0,q.jsx)(`span`,{className:`workshop-lab__proposal-id muted`,children:o.join(`, `)}):null]}),(0,q.jsx)(`p`,{className:`workshop-lab__proposal-summary`,children:`Applied to the studio. Accept confirms; Reject soft-undos when the draft is unchanged.`}),s===`pending`?(0,q.jsxs)(`div`,{className:`workshop-lab__proposal-actions`,children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:u,onClick:()=>void d(`accepted`),children:`Accept`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,disabled:u,onClick:()=>void d(`rejected`),children:`Reject`})]}):(0,q.jsx)(`p`,{className:`workshop-lab__proposal-status muted`,children:s===`accepted`?`Accepted`:s===`rejected`?`Rejected · undone`:i?.notice??`Could not undo — ask the agent to reverse it`})]})}function BL(){return(0,q.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,"aria-hidden":`true`,children:[(0,q.jsx)(`path`,{d:`M8 3.5V8l3 1.5`,stroke:`currentColor`,strokeWidth:`1.4`,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,q.jsx)(`circle`,{cx:`8`,cy:`8`,r:`5.25`,stroke:`currentColor`,strokeWidth:`1.4`}),(0,q.jsx)(`path`,{d:`M3.2 4.2 2 3M3.2 4.2 4.5 3.4`,stroke:`currentColor`,strokeWidth:`1.4`,strokeLinecap:`round`,strokeLinejoin:`round`})]})}function VL(){return(0,q.jsx)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,"aria-hidden":`true`,children:(0,q.jsx)(`path`,{d:`M8 3.5v9M3.5 8h9`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`})})}function HL({onHistory:e,onNew:t,historyOpen:n}){return(0,q.jsxs)(`header`,{className:`workshop-lab__chat-header`,children:[(0,q.jsx)(`div`,{className:`workshop-lab__chat-title`,children:`Chat`}),(0,q.jsxs)(`div`,{className:`workshop-lab__chat-actions`,children:[(0,q.jsx)(`button`,{type:`button`,className:`workshop-lab__icon-btn`,"aria-label":`Chat history`,"aria-expanded":n,onClick:e,children:(0,q.jsx)(BL,{})}),(0,q.jsx)(`button`,{type:`button`,className:`workshop-lab__icon-btn`,"aria-label":`New chat`,onClick:t,children:(0,q.jsx)(VL,{})})]})]})}function UL({sessions:e,pickerRows:t,activeSessionId:n,loading:r,error:i,onClose:a,onSelect:o}){return(0,q.jsxs)(`div`,{className:`workshop-lab__history`,role:`dialog`,"aria-label":`Chat history`,children:[(0,q.jsxs)(`div`,{className:`workshop-lab__history-head`,children:[(0,q.jsx)(`div`,{className:`eyebrow`,children:`History`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:a,children:`Close`})]}),r?(0,q.jsx)(`p`,{className:`muted workshop-lab__history-empty`,children:`Loading sessions…`}):i?(0,q.jsx)(`p`,{className:`muted workshop-lab__history-empty`,children:i}):e.length===0?(0,q.jsx)(`p`,{className:`muted workshop-lab__history-empty`,children:`No prior sessions yet.`}):(0,q.jsx)(`ul`,{className:`workshop-lab__history-list`,children:e.map(e=>{let r=e.title.trim()||`Untitled session`,i=new Date(e.updatedAt).toLocaleString(),a=lL(e.activeBuildId,t);return(0,q.jsx)(`li`,{children:(0,q.jsxs)(`button`,{type:`button`,className:`workshop-lab__history-item`,"data-active":e.id===n?`true`:`false`,onClick:()=>o(e.id),children:[(0,q.jsx)(`strong`,{children:r}),a?(0,q.jsx)(`span`,{children:a}):null,(0,q.jsx)(`span`,{className:`muted`,children:i})]})},e.id)})})]})}function WL({stage:e,onClose:t}){(0,v.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(e.preventDefault(),t())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]);let n=e.hitlFlags.length>0?e.hitlFlags.join(`, `):`None`;return(0,q.jsxs)(`div`,{className:`workshop-lab__popup-root`,children:[(0,q.jsx)(`button`,{type:`button`,className:`workshop-lab__popup-scrim`,"aria-label":`Close stage details`,onClick:t}),(0,q.jsxs)(`div`,{className:`workshop-lab__popup`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`workshop-stage-popup-title`,children:[(0,q.jsxs)(`div`,{className:`workshop-lab__popup-head`,children:[(0,q.jsx)(`h2`,{id:`workshop-stage-popup-title`,className:`workshop-lab__popup-title`,children:e.title}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:t,children:`Close`})]}),(0,q.jsxs)(`dl`,{className:`workshop-lab__popup-fields`,children:[(0,q.jsxs)(`div`,{className:`workshop-lab__popup-field`,children:[(0,q.jsx)(`dt`,{children:`Name`}),(0,q.jsx)(`dd`,{children:e.stageId})]}),(0,q.jsxs)(`div`,{className:`workshop-lab__popup-field`,children:[(0,q.jsx)(`dt`,{children:`Title`}),(0,q.jsx)(`dd`,{children:e.title})]}),(0,q.jsxs)(`div`,{className:`workshop-lab__popup-field`,children:[(0,q.jsx)(`dt`,{children:`Prompt`}),(0,q.jsx)(`dd`,{children:e.promptSummary})]}),(0,q.jsxs)(`div`,{className:`workshop-lab__popup-field`,children:[(0,q.jsx)(`dt`,{children:`IO`}),(0,q.jsx)(`dd`,{children:e.ioSummary})]}),(0,q.jsxs)(`div`,{className:`workshop-lab__popup-field`,children:[(0,q.jsx)(`dt`,{children:`Verify`}),(0,q.jsx)(`dd`,{children:e.verifySummary})]}),(0,q.jsxs)(`div`,{className:`workshop-lab__popup-field`,children:[(0,q.jsx)(`dt`,{children:`HITL`}),(0,q.jsx)(`dd`,{children:n})]}),(0,q.jsxs)(`div`,{className:`workshop-lab__popup-field`,children:[(0,q.jsx)(`dt`,{children:`Mutation`}),(0,q.jsx)(`dd`,{children:e.mutationStatus})]})]})]})]})}function GL(){return(0,q.jsxs)(`div`,{className:`workshop-lab__map-empty`,children:[(0,q.jsx)(`div`,{className:`eyebrow`,children:`Studio`}),(0,q.jsx)(`p`,{children:`Pipeline appears here as you build`})]})}var KL=`cursor/auto`;function qL(e){let t=e?.trim()??``;return t.length>0?t:KL}function JL(e){let t=e.split(`/`).pop()??e;return t.endsWith(`:free`)?t.slice(0,-5):t}function YL(e){let t=e.map(JL),n=new Map;for(let e of t)n.set(e,(n.get(e)??0)+1);let r=new Map;return e.forEach((e,i)=>{let a=t[i]??e,o=e.split(`/`)[0]??e;r.set(e,(n.get(a)??0)>1?`${o}/${a}`:a)}),r}function XL({model:e,models:t,settingsDefault:n,onChange:r}){let i=t.length>0?t:[qL(n)],a=i.includes(e)?i:[e,...i],o=YL(a).get(e)??JL(e);return(0,q.jsx)(jF,{placement:`above`,menuWidth:420,button:{label:`Workshop chat model`,variant:`ghost`,size:`sm`,children:o},children:(0,q.jsx)(ff,{label:`Workshop chat model`,value:e,onChange:r,children:a.map(e=>(0,q.jsx)(mf,{value:e,label:e===n?`${e} (default)`:e},e))})})}function ZL(){let[e,t]=(0,v.useState)(null),[n,r]=(0,v.useState)(bL),[i,a]=(0,v.useState)(()=>new Map),[o,s]=(0,v.useState)([]),[c,l]=(0,v.useState)(0),[u,d]=(0,v.useState)(null),[f,p]=(0,v.useState)(null),[m,h]=(0,v.useState)(!1),[g,_]=(0,v.useState)(!1),[y,b]=(0,v.useState)(null),[x,S]=(0,v.useState)([]),[C,w]=(0,v.useState)([]),[T,E]=(0,v.useState)(null),[D,O]=(0,v.useState)(null),[k,A]=(0,v.useState)(KL),[j,M]=(0,v.useState)([]),[N,P]=(0,v.useState)(null),F=(0,v.useRef)(null),I=(0,v.useRef)(bL),L=(0,v.useRef)(KL),R=(0,v.useRef)(null),z=(0,v.useRef)(null),B=(0,v.useRef)(null),V=(0,v.useRef)([]),H=(0,v.useRef)(sL([])),U=(0,v.useRef)(0),W=(0,v.useRef)(()=>{});F.current=e,I.current=n,L.current=k;let ee=(0,v.useCallback)(e=>{I.current=e,r(e)},[]),te=(0,v.useCallback)(e=>{H.current=e,V.current=e.rows,z.current=e.buildId,B.current=e.buildId,w(e.rows),E(e.buildId),O(e.error),ee(e.draft)},[ee]),ne=(0,v.useCallback)(e=>{V.current=e,H.current={...H.current,rows:e},w(e)},[]),re=(0,v.useCallback)(async()=>{let e=await hr();if(!e.ok)return;let t=H.current.rows.find(e=>e.id!=null&&e.id===z.current)??null;ne(dL(e.rows,t))},[ne]),[ie,ae]=(0,v.useState)([]),oe=(0,v.useCallback)(e=>{ae(t=>{let n=t.findIndex(t=>t.id===e.id);if(n<0)return[...t,e].slice(-12);let r=t.slice();return r[n]=e,r})},[]),se=(0,v.useCallback)(()=>{ae([])},[]),ce=(0,v.useCallback)(e=>{a(t=>{let n=new Map(t);for(let t of e)n.set(t.id,{proposal:t,status:`pending`});return n})},[]),le=(0,v.useMemo)(()=>({sessionId:F,draft:I,model:L,selectedBuildId:z,setDraft:ee,onPointerChange:e=>W.current(e),registerMutations:ce,pushActivity:oe,clearActivity:se,stop:R}),[ee,ce,oe,se]),ue=(0,v.useMemo)(()=>RL(le),[le]);W.current=e=>{let t={sessionId:F.current,buildId:B.current},n=uL(H.current,e);te(n),a(e=>fL(t,{sessionId:F.current,buildId:n.buildId},e)),re()},(0,v.useEffect)(()=>{re()},[re]),(0,v.useEffect)(()=>{let e=!1;return(async()=>{try{let[t,n]=await Promise.all([Yn(),Nn()]);if(e)return;let r=qL(t.defaultModel);P(r),M(n.models),A(r)}catch{if(e)return;M([])}})(),()=>{e=!0}},[]);let de=(0,v.useCallback)(async()=>{let e=++U.current;p(null),h(!1);let n={sessionId:F.current,buildId:B.current},r=await mr();if(U.current!==e)return;if(!r.ok){p(r.error);return}F.current=r.session.id;let i=sL(V.current);te(i),t(r.session.id),a(e=>fL(n,{sessionId:r.session.id,buildId:null},e)),d(null),s(EL()),l(e=>e+1)},[te]);(0,v.useEffect)(()=>{de()},[de]);let fe=(0,v.useCallback)(async()=>{h(!0),_(!0),b(null);let[e,t]=await Promise.all([pr(),hr()]);if(_(!1),t.ok){let e=H.current.rows.find(e=>e.id!=null&&e.id===z.current)??null;ne(dL(t.rows,e))}if(!e.ok){b(e.error),S([]);return}S(e.sessions)},[ne]),pe=(0,v.useCallback)(async e=>{let n=++U.current;_(!0),b(null);let r={sessionId:F.current,buildId:B.current},i=await yr(e);if(U.current!==n)return;if(_(!1),!i.ok){b(i.error);return}F.current=i.session.id,te(sL(V.current)),a(e=>fL(r,{sessionId:i.session.id,buildId:null},e));let o=null,c=null;if(i.session.activeBuildId){let e=await gr(i.session.activeBuildId);if(U.current!==n)return;e.ok?o=e.build:c=e.error}let u=cL({activeBuildId:i.session.activeBuildId,build:o,rows:V.current,error:c}),f=B.current;te(u),t(i.session.id),a(e=>fL({sessionId:i.session.id,buildId:f},{sessionId:i.session.id,buildId:u.buildId},e)),d(null),s(DL(i.session.transcript)),l(e=>e+1),h(!1)},[te]),me=(0,v.useCallback)(async e=>{let t=F.current;if(!t)return;let n=U.current,r={sessionId:t,buildId:B.current},i=await pL({sessionId:t,row:e,selection:H.current,focus:async e=>{if(!e.projectRoot||!e.relativePath)return{ok:!1,error:`project root and path are required`};let t=await _r({projectRoot:e.projectRoot,relativePath:e.relativePath});return t.ok?{ok:!0,build:t.build}:{ok:!1,error:t.error}},updatePointer:async(e,t)=>{let n=await vr({sessionId:e,activeBuildId:t});return n.ok?{ok:!0}:{ok:!1,error:n.error}},loadBuild:async e=>{let t=await gr(e);return t.ok?{ok:!0,build:t.build}:{ok:!1,error:t.error}}});U.current===n&&F.current===t&&(te(i.selection),a(e=>fL(r,{sessionId:t,buildId:i.selection.buildId},e)),d(null))},[te]),he=(0,v.useCallback)(async t=>{if(!e)return;let n=await xr({sessionId:e,draft:I.current,mutationId:t});if(n.ok){ee(n.draft),a(e=>{let n=new Map(e),r=n.get(t);return r&&n.set(t,{...r,status:`accepted`}),n});return}n.draft&&ee(n.draft),a(e=>{let r=new Map(e),i=r.get(t);return i&&r.set(t,{...i,status:`conflict`,notice:n.notice??n.error}),r})},[ee,e]),ge=(0,v.useCallback)(async t=>{if(!e)return;let n=await br({sessionId:e,draft:I.current,mutationId:t});if(n.ok){ee(n.draft),a(e=>{let n=new Map(e),r=n.get(t);return r&&n.set(t,{...r,status:`rejected`}),n});return}n.draft&&ee(n.draft),a(e=>{let r=new Map(e),i=r.get(t);return i&&r.set(t,{...i,status:`conflict`,notice:n.notice??n.error}),r})},[ee,e]),_e=(0,v.useMemo)(()=>({getCard:e=>i.get(e),accept:he,reject:ge}),[he,i,ge]),ve=(0,v.useMemo)(()=>ML(n,i),[n,i]),ye=(0,v.useMemo)(()=>ve.length?NL(ve):SL,[ve]),be=(0,v.useMemo)(()=>Qh(ye),[ye]),xe=(0,v.useMemo)(()=>PL(ve),[ve]),Se=(0,v.useMemo)(()=>FL(ve),[ve]),Ce=ve.find(e=>e.stageId===u)??null,we=(0,v.useMemo)(()=>new Set(ve.filter(e=>e.mutationStatus===`pending`).map(e=>e.stageId)),[ve]),Te=!!u||we.size>0,Ee=(0,v.useRef)(null),De=(0,v.useRef)(null),[Oe,ke]=(0,v.useState)(0),[G,Ae]=(0,v.useState)(gL),[je,Me]=(0,v.useState)(!1);(0,v.useEffect)(()=>{let e=Ee.current;if(!e)return;let t=()=>ke(e.clientWidth);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let Ne=Math.max(_L,Oe-vL),Pe=Oe>0&&Oe<600?Math.max(160,Math.floor(Oe/2)):_L,Fe=(0,v.useCallback)(e=>{let t=Oe>0?Oe-vL:e;Ae(Math.max(Pe,Math.min(e,Math.max(Pe,t))))},[Oe,Pe]);(0,v.useEffect)(()=>{if(Oe<=0)return;let e=Oe-vL;Ae(t=>Math.max(Pe,Math.min(t,Math.max(Pe,e))))},[Oe,Pe]);let K=(0,v.useCallback)(()=>d(null),[]),Ie=(0,v.useCallback)(e=>{d(e)},[]);return(0,q.jsxs)(`div`,{className:`pane workshop-lab${je?` is-resizing-x`:``}`,children:[(0,q.jsxs)(`div`,{className:`topbar`,children:[(0,q.jsx)(`div`,{className:`topbar__title`,children:`Workshop`}),(0,q.jsx)(`div`,{className:`topbar__sub`,children:`Live Author · draft mutates before Accept · Reject soft-undos`}),(0,q.jsx)(`div`,{className:`topbar__spacer`})]}),(0,q.jsxs)(`div`,{ref:Ee,className:`workshop-lab__body`,style:{"--chat-w":`${G}px`},children:[(0,q.jsxs)(`section`,{className:`workshop-lab__chat`,"aria-label":`Workshop chat`,children:[(0,q.jsx)(HL,{historyOpen:m,onHistory:()=>{m?h(!1):fe()},onNew:()=>void de()}),f?(0,q.jsx)(`p`,{className:`workshop-lab__boot-error muted`,children:f}):null,m?(0,q.jsx)(UL,{sessions:x,pickerRows:C,activeSessionId:e,loading:g,error:y,onClose:()=>h(!1),onSelect:e=>void pe(e)}):null,(0,q.jsx)(`div`,{className:`workshop-lab__chat-body`,children:(0,q.jsx)(CL.Provider,{value:_e,children:e?(0,q.jsx)(tL,{seedMessages:o,adapter:ue,greeting:xL,toolActivity:ie,MutationCard:zL,onStop:()=>R.current?.(),composerActions:(0,q.jsx)(XL,{model:k,models:j,settingsDefault:N,onChange:A})},`${e}:${c}`):(0,q.jsxs)(`div`,{className:`workshop-lab__welcome`,children:[(0,q.jsx)(`div`,{className:`eyebrow`,children:`Workshop`}),(0,q.jsx)(`p`,{children:`Starting session…`})]})})})]}),(0,q.jsx)(`div`,{className:`workshop-lab__split${je?` is-dragging`:``}`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize chat and run map`,"aria-valuemin":Math.round(Pe),"aria-valuemax":Math.round(Ne),"aria-valuenow":Math.round(G),tabIndex:0,onPointerDown:e=>{(e.button==null||e.button===0)&&(e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId),Me(!0),De.current={id:e.pointerId,x:e.clientX,w:G})},onPointerMove:e=>{let t=De.current;!t||t.id!==e.pointerId||Fe(t.w+(e.clientX-t.x))},onPointerUp:e=>{De.current?.id===e.pointerId&&(De.current=null,Me(!1))},onPointerCancel:e=>{De.current?.id===e.pointerId&&(De.current=null,Me(!1))},onKeyDown:e=>{e.key===`ArrowLeft`&&(e.preventDefault(),Fe(G-yL)),e.key===`ArrowRight`&&(e.preventDefault(),Fe(G+yL)),e.key===`Home`&&(e.preventDefault(),Fe(Pe)),e.key===`End`&&(e.preventDefault(),Fe(Ne))},children:(0,q.jsx)(`span`,{className:`workshop-lab__split-grip`,"aria-hidden":`true`})}),(0,q.jsxs)(`section`,{className:`workshop-lab__map`,"aria-label":`Workshop studio`,children:[(0,q.jsxs)(`div`,{className:`workshop-lab__map-head`,children:[(0,q.jsxs)(`div`,{className:`workshop-lab__map-switch`,children:[(0,q.jsx)(`div`,{className:`eyebrow`,children:`Studio · draft`}),(0,q.jsxs)(`select`,{className:`select workshop-lab__pipeline-select`,"aria-label":`Studio pipeline`,value:T?`build:${T}`:``,onChange:e=>{let t=e.target.value;if(!t)return;let n=C.find(e=>iL(e)===t);n&&me(n)},children:[(0,q.jsx)(`option`,{value:``,children:`No pipeline`}),C.map(e=>(0,q.jsx)(`option`,{value:iL(e),children:aL(e)},iL(e)))]})]}),D?(0,q.jsx)(`p`,{className:`workshop-lab__boot-error muted`,children:D}):null,(0,q.jsx)(`p`,{className:`workshop-lab__selection muted`,children:ve.length===0?`Empty — stages appear when the Author mutates the draft`:Ce?`Selected: ${Ce.title}`:`Click a stage for details`})]}),(0,q.jsx)(`div`,{className:`workspace workshop-lab__workspace${Te?` has-highlight`:``}`,children:ve.length===0?(0,q.jsx)(GL,{}):(0,q.jsx)(Dg,{layout:be,stages:xe,nodeChrome:Se,selectedStageId:u,onSelectStage:Ie,onDeselect:K,runId:`workshop-lab-draft`,showHint:!1})})]})]}),Ce?(0,q.jsx)(WL,{stage:Ce,onClose:K}):null]})}function QL(e){return e.name===`connect`?`settings`:e.name===`detail`?`runs`:e.name===`new`?`today`:e.name===`pipeline`?`pipelines`:e.name===`task`?`tasks`:e.name===`trigger`?`triggers`:e.name===`skill`?`skills`:e.name===`extensionPackage`||e.name===`extensionFile`?`extensions`:e.name}function $L(){let[e,t]=(0,v.useState)(()=>ry()),[n,r]=(0,v.useState)(eb),[i,a]=(0,v.useState)(Db),[o,s]=(0,v.useState)(`loading`),{snapshot:c}=Mr();(0,v.useEffect)(()=>{let e=()=>t(ry());return window.addEventListener(`hashchange`,e),window.location.hash||(window.location.hash=`#/today`),()=>window.removeEventListener(`hashchange`,e)},[]),Mb(i===`system`),(0,v.useEffect)(()=>{let e=!1;return Vn().then(t=>{e||s($_(t)?`needs_connect`:`ready`)}).catch(()=>{e||s(`ready`)}),()=>{e=!0}},[]);let l=Gr(c).length,u=c.health,d=(0,v.useCallback)(e=>{Hv(e)},[]),f=(0,v.useCallback)(e=>{d(`/${e}`)},[d]),p;return p=e.name===`new`?(0,q.jsx)(cv,{onStarted:e=>d(Uv(e)),initialPipelinePath:e.pipelineId,initialTaskPath:e.taskPath}):e.name===`detail`?(0,q.jsx)(q_,{runId:e.runId,view:e.view,onBack:()=>d(`/runs`),onReran:e=>d(Uv(e)),onOpenStream:t=>d(t?Wv(e.runId,t):Uv(e.runId)),onOpenArtifact:t=>d(Gv(e.runId,t)),onOpenEnvelope:t=>d(Kv(e.runId,t))}):e.name===`runs`?(0,q.jsx)(Ci,{onOpen:e=>d(Uv(e)),onNew:()=>d(`/new`)}):e.name===`pipelines`?(0,q.jsx)(jy,{onNew:d}):e.name===`pipeline`?(0,q.jsx)(jy,{pipelineId:e.pipelineId,onNew:d}):e.name===`tasks`?(0,q.jsx)(Ny,{onNew:d}):e.name===`task`?(0,q.jsx)(Ny,{taskId:e.taskId,onNew:d}):e.name===`triggers`?(0,q.jsx)(Ky,{}):e.name===`trigger`?(0,q.jsx)(Ky,{triggerId:e.triggerId}):e.name===`skills`?(0,q.jsx)(Jy,{}):e.name===`skill`?(0,q.jsx)(Jy,{skillName:e.skillName}):e.name===`extensions`?(0,q.jsx)(Xy,{}):e.name===`extensionPackage`?(0,q.jsx)(Xy,{packageScope:e.scope,packageSource:e.source}):e.name===`extensionFile`?(0,q.jsx)(Xy,{filePath:e.path}):e.name===`settings`?(0,q.jsx)(Fb,{themeMode:n,onThemeChange:r,notifyPreference:i,onNotifyChange:a}):e.name===`connect`?(0,q.jsx)(Ib,{onComplete:()=>{s(`ready`),d(`/today`)}}):e.name===`workshop`?(0,q.jsx)(ZL,{}):(0,q.jsx)(wv,{onOpen:e=>d(Uv(e)),onOpenArtifact:(e,t)=>d(Gv(e,t)),onNew:()=>d(`/new`),onSeeRuns:()=>d(`/runs`)}),o===`needs_connect`&&e.name!==`settings`&&e.name!==`connect`&&(p=(0,q.jsx)(Ib,{onComplete:()=>{s(`ready`),d(`/today`)}})),(0,q.jsx)(Ct,{theme:vn,mode:n,children:(0,q.jsxs)(`div`,{className:`app`,children:[(0,q.jsx)(ti,{activeId:QL(e),onNavigate:f,waitingCount:l,health:u}),(0,q.jsx)(`main`,{className:`main`,children:p})]})})}function eR(){let[e]=(0,v.useState)(()=>Or({source:Tr()}));return(0,q.jsx)(jr,{catalog:e,children:(0,q.jsx)($L,{})})}(0,_n.createRoot)(document.getElementById(`root`)).render((0,q.jsx)(v.StrictMode,{children:(0,q.jsx)(eR,{})}));
133
+ `).trim()}function LL(e){return{async*run({messages:t,abortSignal:n}){let r=FL(t);if(!r){yield{content:[{type:`text`,text:bL}]};return}e.clearActivity();let i=e.sessionId.current;if(!i){yield{content:[{type:`text`,text:`Workshop session is still starting. Try again in a moment.`}]};return}let a=``,o=[],s=[],c,l=e=>{s.push(e),c?.(),c=void 0},u=()=>new Promise(e=>{c=e}),d=new AbortController,f=()=>{d.signal.aborted||(d.abort(),l({kind:`aborted`}))};e.stop.current=f,n?.aborted?f():n?.addEventListener(`abort`,f,{once:!0});let p=wr({sessionId:i,message:r,draft:e.draft.current,model:e.model.current},{onDelta:e=>{a+=e,l({kind:`delta`})},onActivity:t=>{e.sessionId.current===i&&(t.draft!==null&&typeof t.draft==`object`&&aL(e.selectedBuildId.current,t.buildId)&&e.setDraft(t.draft),e.pushActivity({id:t.id,name:t.name,status:t.status,...t.target===void 0?{}:{target:t.target},...t.errorMessage===void 0?{}:{errorMessage:t.errorMessage},textOffset:a.length}))},onEvent:e=>{e.type===`proposal`&&o.push(e.proposal)},onPointerChange:t=>{e.sessionId.current===i&&(e.selectedBuildId.current=t.buildId,e.setDraft(t.draft),e.onPointerChange?.(t))},signal:d.signal}).then(e=>(l({kind:`done`,result:e}),e));try{for(;;){s.length===0&&await u();let t=s.shift();if(t.kind===`delta`){yield{content:[{type:`text`,text:a||`…`}]};continue}if(t.kind===`aborted`){let t=await Cr(i),n=e.sessionId.current===i&&aL(e.selectedBuildId.current,t?.buildId);t?.draft&&n&&e.setDraft(t.draft),n&&t?.pending&&!o.some(e=>e.id===t.pending?.id)&&o.push(t.pending),n&&o.length>0&&e.registerMutations(o),yield{content:[{type:`text`,text:a.trim()||`Stopped.`},...HI(o)]};return}await p;let n=t.result;if(!n.ok){yield{content:[{type:`text`,text:d.signal.aborted||n.error===`Stopped.`?a.trim()||`Stopped.`:`${UI} ${n.error}`}]};return}let r=e.sessionId.current===i&&aL(e.selectedBuildId.current,n.buildId);r&&e.setDraft(n.draft);let c=IL(n.events),l=a.trim()||c||(o.length>0?`Updated the draft. Accept or Reject the mutation cards below.`:`No draft change. ${e.model.current} finished without updating the studio.`);r&&o.length>0?e.registerMutations(o):r&&n.pending&&(e.registerMutations([n.pending]),o.push(n.pending)),yield{content:[{type:`text`,text:l},...HI(o)]};return}}finally{e.stop.current===f&&(e.stop.current=null),n?.removeEventListener(`abort`,f)}}}}function RL({args:e}){let t=CL(),n=dT(e=>e.thread.isRunning),r=typeof e?.mutationId==`string`?e.mutationId:``,i=r?t.getCard(r):void 0,a=typeof e?.summary==`string`?e.summary:i?.proposal.summary??`Draft mutation`,o=Array.isArray(e?.affectedStageIds)&&e.affectedStageIds.length>0?e.affectedStageIds:i?.proposal.affectedStageIds??[],s=i?.status??`pending`,[c,l]=(0,v.useState)(!1),u=VI(n,c),d=async e=>{if(!(!r||u||s!==`pending`)){l(!0);try{e===`accepted`?await t.accept(r):await t.reject(r)}finally{l(!1)}}};return(0,q.jsxs)(`div`,{className:`workshop-lab__proposal`,"data-status":s,"data-tool":`draft_mutation`,children:[(0,q.jsxs)(`div`,{className:`workshop-lab__proposal-head`,children:[(0,q.jsx)(`div`,{className:`eyebrow`,children:`Draft mutation`}),(0,q.jsx)(`strong`,{className:`workshop-lab__proposal-title`,children:a}),o.length>0?(0,q.jsx)(`span`,{className:`workshop-lab__proposal-id muted`,children:o.join(`, `)}):null]}),(0,q.jsx)(`p`,{className:`workshop-lab__proposal-summary`,children:`Applied to the studio. Accept confirms; Reject soft-undos when the draft is unchanged.`}),s===`pending`?(0,q.jsxs)(`div`,{className:`workshop-lab__proposal-actions`,children:[(0,q.jsx)(`button`,{type:`button`,className:`btn btn--primary`,disabled:u,onClick:()=>void d(`accepted`),children:`Accept`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost`,disabled:u,onClick:()=>void d(`rejected`),children:`Reject`})]}):(0,q.jsx)(`p`,{className:`workshop-lab__proposal-status muted`,children:s===`accepted`?`Accepted`:s===`rejected`?`Rejected · undone`:i?.notice??`Could not undo — ask the agent to reverse it`})]})}function zL(){return(0,q.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,"aria-hidden":`true`,children:[(0,q.jsx)(`path`,{d:`M8 3.5V8l3 1.5`,stroke:`currentColor`,strokeWidth:`1.4`,strokeLinecap:`round`,strokeLinejoin:`round`}),(0,q.jsx)(`circle`,{cx:`8`,cy:`8`,r:`5.25`,stroke:`currentColor`,strokeWidth:`1.4`}),(0,q.jsx)(`path`,{d:`M3.2 4.2 2 3M3.2 4.2 4.5 3.4`,stroke:`currentColor`,strokeWidth:`1.4`,strokeLinecap:`round`,strokeLinejoin:`round`})]})}function BL(){return(0,q.jsx)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 16 16`,fill:`none`,"aria-hidden":`true`,children:(0,q.jsx)(`path`,{d:`M8 3.5v9M3.5 8h9`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`})})}function VL({onHistory:e,onNew:t,historyOpen:n}){return(0,q.jsxs)(`header`,{className:`workshop-lab__chat-header`,children:[(0,q.jsx)(`div`,{className:`workshop-lab__chat-title`,children:`Chat`}),(0,q.jsxs)(`div`,{className:`workshop-lab__chat-actions`,children:[(0,q.jsx)(`button`,{type:`button`,className:`workshop-lab__icon-btn`,"aria-label":`Chat history`,"aria-expanded":n,onClick:e,children:(0,q.jsx)(zL,{})}),(0,q.jsx)(`button`,{type:`button`,className:`workshop-lab__icon-btn`,"aria-label":`New chat`,onClick:t,children:(0,q.jsx)(BL,{})})]})]})}function HL({sessions:e,pickerRows:t,activeSessionId:n,loading:r,error:i,onClose:a,onSelect:o}){return(0,q.jsxs)(`div`,{className:`workshop-lab__history`,role:`dialog`,"aria-label":`Chat history`,children:[(0,q.jsxs)(`div`,{className:`workshop-lab__history-head`,children:[(0,q.jsx)(`div`,{className:`eyebrow`,children:`History`}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:a,children:`Close`})]}),r?(0,q.jsx)(`p`,{className:`muted workshop-lab__history-empty`,children:`Loading sessions…`}):i?(0,q.jsx)(`p`,{className:`muted workshop-lab__history-empty`,children:i}):e.length===0?(0,q.jsx)(`p`,{className:`muted workshop-lab__history-empty`,children:`No prior sessions yet.`}):(0,q.jsx)(`ul`,{className:`workshop-lab__history-list`,children:e.map(e=>{let r=e.title.trim()||`Untitled session`,i=new Date(e.updatedAt).toLocaleString(),a=cL(e.activeBuildId,t);return(0,q.jsx)(`li`,{children:(0,q.jsxs)(`button`,{type:`button`,className:`workshop-lab__history-item`,"data-active":e.id===n?`true`:`false`,onClick:()=>o(e.id),children:[(0,q.jsx)(`strong`,{children:r}),a?(0,q.jsx)(`span`,{children:a}):null,(0,q.jsx)(`span`,{className:`muted`,children:i})]})},e.id)})})]})}function UL({stage:e,onClose:t}){(0,v.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(e.preventDefault(),t())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]);let n=e.hitlFlags.length>0?e.hitlFlags.join(`, `):`None`;return(0,q.jsxs)(`div`,{className:`workshop-lab__popup-root`,children:[(0,q.jsx)(`button`,{type:`button`,className:`workshop-lab__popup-scrim`,"aria-label":`Close stage details`,onClick:t}),(0,q.jsxs)(`div`,{className:`workshop-lab__popup`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`workshop-stage-popup-title`,children:[(0,q.jsxs)(`div`,{className:`workshop-lab__popup-head`,children:[(0,q.jsx)(`h2`,{id:`workshop-stage-popup-title`,className:`workshop-lab__popup-title`,children:e.title}),(0,q.jsx)(`button`,{type:`button`,className:`btn btn--ghost btn--sm`,onClick:t,children:`Close`})]}),(0,q.jsxs)(`dl`,{className:`workshop-lab__popup-fields`,children:[(0,q.jsxs)(`div`,{className:`workshop-lab__popup-field`,children:[(0,q.jsx)(`dt`,{children:`Name`}),(0,q.jsx)(`dd`,{children:e.stageId})]}),(0,q.jsxs)(`div`,{className:`workshop-lab__popup-field`,children:[(0,q.jsx)(`dt`,{children:`Title`}),(0,q.jsx)(`dd`,{children:e.title})]}),(0,q.jsxs)(`div`,{className:`workshop-lab__popup-field`,children:[(0,q.jsx)(`dt`,{children:`Prompt`}),(0,q.jsx)(`dd`,{children:e.promptSummary})]}),(0,q.jsxs)(`div`,{className:`workshop-lab__popup-field`,children:[(0,q.jsx)(`dt`,{children:`IO`}),(0,q.jsx)(`dd`,{children:e.ioSummary})]}),(0,q.jsxs)(`div`,{className:`workshop-lab__popup-field`,children:[(0,q.jsx)(`dt`,{children:`Verify`}),(0,q.jsx)(`dd`,{children:e.verifySummary})]}),(0,q.jsxs)(`div`,{className:`workshop-lab__popup-field`,children:[(0,q.jsx)(`dt`,{children:`HITL`}),(0,q.jsx)(`dd`,{children:n})]}),(0,q.jsxs)(`div`,{className:`workshop-lab__popup-field`,children:[(0,q.jsx)(`dt`,{children:`Mutation`}),(0,q.jsx)(`dd`,{children:e.mutationStatus})]})]})]})]})}function WL(){return(0,q.jsxs)(`div`,{className:`workshop-lab__map-empty`,children:[(0,q.jsx)(`div`,{className:`eyebrow`,children:`Studio`}),(0,q.jsx)(`p`,{children:`Pipeline appears here as you build`})]})}var GL=`cursor/auto`;function KL(e){let t=e?.trim()??``;return t.length>0?t:GL}function qL(e){let t=e.split(`/`).pop()??e;return t.endsWith(`:free`)?t.slice(0,-5):t}function JL(e){let t=e.map(qL),n=new Map;for(let e of t)n.set(e,(n.get(e)??0)+1);let r=new Map;return e.forEach((e,i)=>{let a=t[i]??e,o=e.split(`/`)[0]??e;r.set(e,(n.get(a)??0)>1?`${o}/${a}`:a)}),r}function YL({model:e,models:t,settingsDefault:n,onChange:r}){let i=t.length>0?t:[KL(n)],a=i.includes(e)?i:[e,...i],o=JL(a).get(e)??qL(e);return(0,q.jsx)(AF,{placement:`above`,menuWidth:420,button:{label:`Workshop chat model`,variant:`ghost`,size:`sm`,children:o},children:(0,q.jsx)(ff,{label:`Workshop chat model`,value:e,onChange:r,children:a.map(e=>(0,q.jsx)(mf,{value:e,label:e===n?`${e} (default)`:e},e))})})}function XL(){let[e,t]=(0,v.useState)(null),[n,r]=(0,v.useState)(yL),[i,a]=(0,v.useState)(()=>new Map),[o,s]=(0,v.useState)([]),[c,l]=(0,v.useState)(0),[u,d]=(0,v.useState)(null),[f,p]=(0,v.useState)(null),[m,h]=(0,v.useState)(!1),[g,_]=(0,v.useState)(!1),[y,b]=(0,v.useState)(null),[x,S]=(0,v.useState)([]),[C,w]=(0,v.useState)([]),[T,E]=(0,v.useState)(null),[D,O]=(0,v.useState)(null),[k,A]=(0,v.useState)(GL),[j,M]=(0,v.useState)([]),[N,P]=(0,v.useState)(null),F=(0,v.useRef)(null),I=(0,v.useRef)(yL),L=(0,v.useRef)(GL),R=(0,v.useRef)(null),z=(0,v.useRef)(null),B=(0,v.useRef)(null),V=(0,v.useRef)([]),H=(0,v.useRef)(oL([])),U=(0,v.useRef)(0),W=(0,v.useRef)(()=>{});F.current=e,I.current=n,L.current=k;let ee=(0,v.useCallback)(e=>{I.current=e,r(e)},[]),te=(0,v.useCallback)(e=>{H.current=e,V.current=e.rows,z.current=e.buildId,B.current=e.buildId,w(e.rows),E(e.buildId),O(e.error),ee(e.draft)},[ee]),ne=(0,v.useCallback)(e=>{V.current=e,H.current={...H.current,rows:e},w(e)},[]),re=(0,v.useCallback)(async()=>{let e=await hr();if(!e.ok)return;let t=H.current.rows.find(e=>e.id!=null&&e.id===z.current)??null;ne(uL(e.rows,t))},[ne]),[ie,ae]=(0,v.useState)([]),oe=(0,v.useCallback)(e=>{ae(t=>{let n=t.findIndex(t=>t.id===e.id);if(n<0)return[...t,e].slice(-12);let r=t.slice();return r[n]=e,r})},[]),se=(0,v.useCallback)(()=>{ae([])},[]),ce=(0,v.useCallback)(e=>{a(t=>{let n=new Map(t);for(let t of e)n.set(t.id,{proposal:t,status:`pending`});return n})},[]),le=(0,v.useMemo)(()=>({sessionId:F,draft:I,model:L,selectedBuildId:z,setDraft:ee,onPointerChange:e=>W.current(e),registerMutations:ce,pushActivity:oe,clearActivity:se,stop:R}),[ee,ce,oe,se]),ue=(0,v.useMemo)(()=>LL(le),[le]);W.current=e=>{let t={sessionId:F.current,buildId:B.current},n=lL(H.current,e);te(n),a(e=>dL(t,{sessionId:F.current,buildId:n.buildId},e)),re()},(0,v.useEffect)(()=>{re()},[re]),(0,v.useEffect)(()=>{let e=!1;return(async()=>{try{let[t,n]=await Promise.all([Yn(),Nn()]);if(e)return;let r=KL(t.defaultModel);P(r),M(n.models),A(r)}catch{if(e)return;M([])}})(),()=>{e=!0}},[]);let de=(0,v.useCallback)(async()=>{let e=++U.current;p(null),h(!1);let n={sessionId:F.current,buildId:B.current},r=await mr();if(U.current!==e)return;if(!r.ok){p(r.error);return}F.current=r.session.id;let i=oL(V.current);te(i),t(r.session.id),a(e=>dL(n,{sessionId:r.session.id,buildId:null},e)),d(null),s(TL()),l(e=>e+1)},[te]);(0,v.useEffect)(()=>{de()},[de]);let fe=(0,v.useCallback)(async()=>{h(!0),_(!0),b(null);let[e,t]=await Promise.all([pr(),hr()]);if(_(!1),t.ok){let e=H.current.rows.find(e=>e.id!=null&&e.id===z.current)??null;ne(uL(t.rows,e))}if(!e.ok){b(e.error),S([]);return}S(e.sessions)},[ne]),pe=(0,v.useCallback)(async e=>{let n=++U.current;_(!0),b(null);let r={sessionId:F.current,buildId:B.current},i=await yr(e);if(U.current!==n)return;if(_(!1),!i.ok){b(i.error);return}F.current=i.session.id,te(oL(V.current)),a(e=>dL(r,{sessionId:i.session.id,buildId:null},e));let o=null,c=null;if(i.session.activeBuildId){let e=await gr(i.session.activeBuildId);if(U.current!==n)return;e.ok?o=e.build:c=e.error}let u=sL({activeBuildId:i.session.activeBuildId,build:o,rows:V.current,error:c}),f=B.current;te(u),t(i.session.id),a(e=>dL({sessionId:i.session.id,buildId:f},{sessionId:i.session.id,buildId:u.buildId},e)),d(null),s(EL(i.session.transcript)),l(e=>e+1),h(!1)},[te]),me=(0,v.useCallback)(async e=>{let t=F.current;if(!t)return;let n=U.current,r={sessionId:t,buildId:B.current},i=await fL({sessionId:t,row:e,selection:H.current,focus:async e=>{if(!e.projectRoot||!e.relativePath)return{ok:!1,error:`project root and path are required`};let t=await _r({projectRoot:e.projectRoot,relativePath:e.relativePath});return t.ok?{ok:!0,build:t.build}:{ok:!1,error:t.error}},updatePointer:async(e,t)=>{let n=await vr({sessionId:e,activeBuildId:t});return n.ok?{ok:!0}:{ok:!1,error:n.error}},loadBuild:async e=>{let t=await gr(e);return t.ok?{ok:!0,build:t.build}:{ok:!1,error:t.error}}});U.current===n&&F.current===t&&(te(i.selection),a(e=>dL(r,{sessionId:t,buildId:i.selection.buildId},e)),d(null))},[te]),he=(0,v.useCallback)(async t=>{if(!e)return;let n=await xr({sessionId:e,draft:I.current,mutationId:t});if(n.ok){ee(n.draft),a(e=>{let n=new Map(e),r=n.get(t);return r&&n.set(t,{...r,status:`accepted`}),n});return}n.draft&&ee(n.draft),a(e=>{let r=new Map(e),i=r.get(t);return i&&r.set(t,{...i,status:`conflict`,notice:n.notice??n.error}),r})},[ee,e]),ge=(0,v.useCallback)(async t=>{if(!e)return;let n=await br({sessionId:e,draft:I.current,mutationId:t});if(n.ok){ee(n.draft),a(e=>{let n=new Map(e),r=n.get(t);return r&&n.set(t,{...r,status:`rejected`}),n});return}n.draft&&ee(n.draft),a(e=>{let r=new Map(e),i=r.get(t);return i&&r.set(t,{...i,status:`conflict`,notice:n.notice??n.error}),r})},[ee,e]),_e=(0,v.useMemo)(()=>({getCard:e=>i.get(e),accept:he,reject:ge}),[he,i,ge]),ve=(0,v.useMemo)(()=>jL(n,i),[n,i]),ye=(0,v.useMemo)(()=>ve.length?ML(ve):xL,[ve]),be=(0,v.useMemo)(()=>Qh(ye),[ye]),xe=(0,v.useMemo)(()=>NL(ve),[ve]),Se=(0,v.useMemo)(()=>PL(ve),[ve]),Ce=ve.find(e=>e.stageId===u)??null,we=(0,v.useMemo)(()=>new Set(ve.filter(e=>e.mutationStatus===`pending`).map(e=>e.stageId)),[ve]),Te=!!u||we.size>0,Ee=(0,v.useRef)(null),De=(0,v.useRef)(null),[Oe,ke]=(0,v.useState)(0),[G,Ae]=(0,v.useState)(hL),[je,Me]=(0,v.useState)(!1);(0,v.useEffect)(()=>{let e=Ee.current;if(!e)return;let t=()=>ke(e.clientWidth);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let Ne=Math.max(gL,Oe-_L),Pe=Oe>0&&Oe<600?Math.max(160,Math.floor(Oe/2)):gL,Fe=(0,v.useCallback)(e=>{let t=Oe>0?Oe-_L:e;Ae(Math.max(Pe,Math.min(e,Math.max(Pe,t))))},[Oe,Pe]);(0,v.useEffect)(()=>{if(Oe<=0)return;let e=Oe-_L;Ae(t=>Math.max(Pe,Math.min(t,Math.max(Pe,e))))},[Oe,Pe]);let K=(0,v.useCallback)(()=>d(null),[]),Ie=(0,v.useCallback)(e=>{d(e)},[]);return(0,q.jsxs)(`div`,{className:`pane workshop-lab${je?` is-resizing-x`:``}`,children:[(0,q.jsxs)(`div`,{className:`topbar`,children:[(0,q.jsx)(`div`,{className:`topbar__title`,children:`Workshop`}),(0,q.jsx)(`div`,{className:`topbar__sub`,children:`Live Author · draft mutates before Accept · Reject soft-undos`}),(0,q.jsx)(`div`,{className:`topbar__spacer`})]}),(0,q.jsxs)(`div`,{ref:Ee,className:`workshop-lab__body`,style:{"--chat-w":`${G}px`},children:[(0,q.jsxs)(`section`,{className:`workshop-lab__chat`,"aria-label":`Workshop chat`,children:[(0,q.jsx)(VL,{historyOpen:m,onHistory:()=>{m?h(!1):fe()},onNew:()=>void de()}),f?(0,q.jsx)(`p`,{className:`workshop-lab__boot-error muted`,children:f}):null,m?(0,q.jsx)(HL,{sessions:x,pickerRows:C,activeSessionId:e,loading:g,error:y,onClose:()=>h(!1),onSelect:e=>void pe(e)}):null,(0,q.jsx)(`div`,{className:`workshop-lab__chat-body`,children:(0,q.jsx)(SL.Provider,{value:_e,children:e?(0,q.jsx)(eL,{seedMessages:o,adapter:ue,greeting:bL,toolActivity:ie,MutationCard:RL,onStop:()=>R.current?.(),composerActions:(0,q.jsx)(YL,{model:k,models:j,settingsDefault:N,onChange:A})},`${e}:${c}`):(0,q.jsxs)(`div`,{className:`workshop-lab__welcome`,children:[(0,q.jsx)(`div`,{className:`eyebrow`,children:`Workshop`}),(0,q.jsx)(`p`,{children:`Starting session…`})]})})})]}),(0,q.jsx)(`div`,{className:`workshop-lab__split${je?` is-dragging`:``}`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize chat and run map`,"aria-valuemin":Math.round(Pe),"aria-valuemax":Math.round(Ne),"aria-valuenow":Math.round(G),tabIndex:0,onPointerDown:e=>{(e.button==null||e.button===0)&&(e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId),Me(!0),De.current={id:e.pointerId,x:e.clientX,w:G})},onPointerMove:e=>{let t=De.current;!t||t.id!==e.pointerId||Fe(t.w+(e.clientX-t.x))},onPointerUp:e=>{De.current?.id===e.pointerId&&(De.current=null,Me(!1))},onPointerCancel:e=>{De.current?.id===e.pointerId&&(De.current=null,Me(!1))},onKeyDown:e=>{e.key===`ArrowLeft`&&(e.preventDefault(),Fe(G-vL)),e.key===`ArrowRight`&&(e.preventDefault(),Fe(G+vL)),e.key===`Home`&&(e.preventDefault(),Fe(Pe)),e.key===`End`&&(e.preventDefault(),Fe(Ne))},children:(0,q.jsx)(`span`,{className:`workshop-lab__split-grip`,"aria-hidden":`true`})}),(0,q.jsxs)(`section`,{className:`workshop-lab__map`,"aria-label":`Workshop studio`,children:[(0,q.jsxs)(`div`,{className:`workshop-lab__map-head`,children:[(0,q.jsxs)(`div`,{className:`workshop-lab__map-switch`,children:[(0,q.jsx)(`div`,{className:`eyebrow`,children:`Studio · draft`}),(0,q.jsxs)(`select`,{className:`select workshop-lab__pipeline-select`,"aria-label":`Studio pipeline`,value:T?`build:${T}`:``,onChange:e=>{let t=e.target.value;if(!t)return;let n=C.find(e=>rL(e)===t);n&&me(n)},children:[(0,q.jsx)(`option`,{value:``,children:`No pipeline`}),C.map(e=>(0,q.jsx)(`option`,{value:rL(e),children:iL(e)},rL(e)))]})]}),D?(0,q.jsx)(`p`,{className:`workshop-lab__boot-error muted`,children:D}):null,(0,q.jsx)(`p`,{className:`workshop-lab__selection muted`,children:ve.length===0?`Empty — stages appear when the Author mutates the draft`:Ce?`Selected: ${Ce.title}`:`Click a stage for details`})]}),(0,q.jsx)(`div`,{className:`workspace workshop-lab__workspace${Te?` has-highlight`:``}`,children:ve.length===0?(0,q.jsx)(WL,{}):(0,q.jsx)(Dg,{layout:be,stages:xe,nodeChrome:Se,selectedStageId:u,onSelectStage:Ie,onDeselect:K,runId:`workshop-lab-draft`,showHint:!1})})]})]}),Ce?(0,q.jsx)(UL,{stage:Ce,onClose:K}):null]})}function ZL(e){return e.name===`connect`?`settings`:e.name===`detail`?`runs`:e.name===`new`?`today`:e.name===`pipeline`?`pipelines`:e.name===`task`?`tasks`:e.name===`trigger`?`triggers`:e.name===`skill`?`skills`:e.name===`extensionPackage`||e.name===`extensionFile`?`extensions`:e.name}function QL(){let[e,t]=(0,v.useState)(()=>ny()),[n,r]=(0,v.useState)($y),[i,a]=(0,v.useState)(Eb),[o,s]=(0,v.useState)(`loading`),{snapshot:c}=Mr();(0,v.useEffect)(()=>{let e=()=>t(ny());return window.addEventListener(`hashchange`,e),window.location.hash||(window.location.hash=`#/today`),()=>window.removeEventListener(`hashchange`,e)},[]),jb(i===`system`),(0,v.useEffect)(()=>{let e=!1;return av().then(t=>{e||s(t.ready?`ready`:`needs_connect`)}).catch(()=>{e||s(`ready`)}),()=>{e=!0}},[]);let l=Gr(c).length,u=c.health,d=(0,v.useCallback)(e=>{Vv(e)},[]),f=(0,v.useCallback)(e=>{d(`/${e}`)},[d]),p;return p=e.name===`new`?(0,q.jsx)(sv,{onStarted:e=>d(Hv(e)),initialPipelinePath:e.pipelineId,initialTaskPath:e.taskPath}):e.name===`detail`?(0,q.jsx)(q_,{runId:e.runId,view:e.view,onBack:()=>d(`/runs`),onReran:e=>d(Hv(e)),onOpenStream:t=>d(t?Uv(e.runId,t):Hv(e.runId)),onOpenArtifact:t=>d(Wv(e.runId,t)),onOpenEnvelope:t=>d(Gv(e.runId,t))}):e.name===`runs`?(0,q.jsx)(Ci,{onOpen:e=>d(Hv(e)),onNew:()=>d(`/new`)}):e.name===`pipelines`?(0,q.jsx)(Ay,{onNew:d}):e.name===`pipeline`?(0,q.jsx)(Ay,{pipelineId:e.pipelineId,onNew:d}):e.name===`tasks`?(0,q.jsx)(My,{onNew:d}):e.name===`task`?(0,q.jsx)(My,{taskId:e.taskId,onNew:d}):e.name===`triggers`?(0,q.jsx)(Gy,{}):e.name===`trigger`?(0,q.jsx)(Gy,{triggerId:e.triggerId}):e.name===`skills`?(0,q.jsx)(qy,{}):e.name===`skill`?(0,q.jsx)(qy,{skillName:e.skillName}):e.name===`extensions`?(0,q.jsx)(Yy,{}):e.name===`extensionPackage`?(0,q.jsx)(Yy,{packageScope:e.scope,packageSource:e.source}):e.name===`extensionFile`?(0,q.jsx)(Yy,{filePath:e.path}):e.name===`settings`?(0,q.jsx)(Pb,{themeMode:n,onThemeChange:r,notifyPreference:i,onNotifyChange:a}):e.name===`connect`?(0,q.jsx)(Fb,{onComplete:()=>{s(`ready`),d(`/today`)}}):e.name===`workshop`?(0,q.jsx)(XL,{}):(0,q.jsx)(Cv,{onOpen:e=>d(Hv(e)),onOpenArtifact:(e,t)=>d(Wv(e,t)),onNew:()=>d(`/new`),onSeeRuns:()=>d(`/runs`)}),o===`needs_connect`&&e.name!==`settings`&&e.name!==`connect`&&(p=(0,q.jsx)(Fb,{onComplete:()=>{s(`ready`),d(`/today`)}})),(0,q.jsx)(Ct,{theme:vn,mode:n,children:(0,q.jsxs)(`div`,{className:`app`,children:[(0,q.jsx)(ti,{activeId:ZL(e),onNavigate:f,waitingCount:l,health:u}),(0,q.jsx)(`main`,{className:`main`,children:p})]})})}function $L(){let[e]=(0,v.useState)(()=>Or({source:Tr()}));return(0,q.jsx)(jr,{catalog:e,children:(0,q.jsx)(QL,{})})}(0,_n.createRoot)(document.getElementById(`root`)).render((0,q.jsx)(v.StrictMode,{children:(0,q.jsx)($L,{})}));