@openagt/dashboard 0.17.0 → 0.18.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.
@@ -126,16 +126,16 @@ ${t.innerHTML}
126
126
  `),e.text(t.textContent,!1),e.ensureNewLine(),e.write("```"),e.closeBlock(t)},parse:{setup(e){e.set({langPrefix:this.options.languageClassPrefix??`language-`})},updateDOM(e){e.innerHTML=e.innerHTML.replace(/\n<\/code><\/pre>/g,`</code></pre>`)}}}}}}),lw=h_.create({name:`hardBreak`}).extend({addStorage(){return{markdown:{serialize(e,t,n,r){for(let i=r+1;i<n.childCount;i++)if(n.child(i).type!=t.type){e.write(e.inTable?rw.storage.markdown.serialize.call(this,e,t,n):`\\
127
127
  `);return}},parse:{}}}}}),uw=h_.create({name:`heading`}).extend({addStorage(){return{markdown:{serialize:FC.nodes.heading,parse:{}}}}}),dw=h_.create({name:`horizontalRule`}).extend({addStorage(){return{markdown:{serialize:FC.nodes.horizontal_rule,parse:{}}}}}),fw=h_.create({name:`image`}).extend({addStorage(){return{markdown:{serialize:FC.nodes.image,parse:{}}}}}),pw=h_.create({name:`listItem`}).extend({addStorage(){return{markdown:{serialize:FC.nodes.list_item,parse:{}}}}}),mw=h_.create({name:`orderedList`});function hw(e,t,n){let r=0;for(;n-r>0&&t.child(n-r-1).type.name===e.type.name;r++);return r}var gw=mw.extend({addStorage(){return{markdown:{serialize(e,t,n,r){let i=t.attrs.start||1,a=String(i+t.childCount-1).length,o=e.repeat(` `,a+2),s=hw(t,n,r)%2?`) `:`. `;e.renderList(t,o,t=>{let n=String(i+t);return e.repeat(` `,a-n.length)+n+s})},parse:{}}}}}),_w=h_.create({name:`paragraph`}).extend({addStorage(){return{markdown:{serialize:FC.nodes.paragraph,parse:{}}}}});function vw(e){var t;return(e==null||(t=e.content)==null?void 0:t.content)??[]}var yw=h_.create({name:`table`}).extend({addStorage(){return{markdown:{serialize(e,t,n){if(!xw(t)){rw.storage.markdown.serialize.call(this,e,t,n);return}e.inTable=!0,t.forEach((t,n,r)=>{if(e.write(`| `),t.forEach((t,n,r)=>{r&&e.write(` | `);let i=t.firstChild;i.textContent.trim()&&e.renderInline(i)}),e.write(` |`),e.ensureNewLine(),!r){let n=Array.from({length:t.childCount}).map(()=>`---`).join(` | `);e.write(`| ${n} |`),e.ensureNewLine()}}),e.closeBlock(t),e.inTable=!1},parse:{}}}}});function bw(e){return e.attrs.colspan>1||e.attrs.rowspan>1}function xw(e){let t=vw(e),n=t[0],r=t.slice(1);return!(vw(n).some(e=>e.type.name!==`tableHeader`||bw(e)||e.childCount>1)||r.some(e=>vw(e).some(e=>e.type.name===`tableHeader`||bw(e)||e.childCount>1)))}var Sw=[ow,sw,cw,lw,uw,dw,rw,fw,pw,gw,_w,yw,h_.create({name:`taskItem`}).extend({addStorage(){return{markdown:{serialize(e,t){let n=t.attrs.checked?`[x]`:`[ ]`;e.write(`${n} `),e.renderContent(t)},parse:{updateDOM(e){[...e.querySelectorAll(`.task-list-item`)].forEach(e=>{let t=e.querySelector(`input`);e.setAttribute(`data-type`,`taskItem`),t&&(e.setAttribute(`data-checked`,t.checked),t.remove())})}}}}}}),h_.create({name:`taskList`}).extend({addStorage(){return{markdown:{serialize:sw.storage.markdown.serialize,parse:{setup(e){e.use(zC.default)},updateDOM(e){[...e.querySelectorAll(`.contains-task-list`)].forEach(e=>{e.setAttribute(`data-type`,`taskList`)})}}}}}}),h_.create({name:`text`}).extend({addStorage(){return{markdown:{serialize(e,t){e.text(ew(t.text))},parse:{}}}}}),rh.create({name:`bold`}).extend({addStorage(){return{markdown:{serialize:FC.marks.strong,parse:{}}}}}),rh.create({name:`code`}).extend({addStorage(){return{markdown:{serialize:FC.marks.code,parse:{}}}}}),ZC,rh.create({name:`italic`}).extend({addStorage(){return{markdown:{serialize:FC.marks.em,parse:{}}}}}),rh.create({name:`link`}).extend({addStorage(){return{markdown:{serialize:FC.marks.link,parse:{}}}}}),rh.create({name:`strike`}).extend({addStorage(){return{markdown:{serialize:{open:`~~`,close:`~~`,expelEnclosingWhitespace:!0},parse:{}}}}})];function Cw(e){let t=e.storage?.markdown,n=Sw.find(t=>t.name===e.name)?.storage.markdown;return t||n?{...n,...t}:null}var ww=class{constructor(e){HC(this,`editor`,null),this.editor=e}serialize(e){let t=new XC(this.nodes,this.marks,{hardBreakNodeName:lw.name});return t.renderContent(e),t.out}get nodes(){return{...Object.fromEntries(Object.keys(this.editor.schema.nodes).map(e=>[e,this.serializeNode(rw)])),...Object.fromEntries(this.editor.extensionManager.extensions.filter(e=>e.type===`node`&&this.serializeNode(e)).map(e=>[e.name,this.serializeNode(e)])??[])}}get marks(){return{...Object.fromEntries(Object.keys(this.editor.schema.marks).map(e=>[e,this.serializeMark(ZC)])),...Object.fromEntries(this.editor.extensionManager.extensions.filter(e=>e.type===`mark`&&this.serializeMark(e)).map(e=>[e.name,this.serializeMark(e)])??[])}}serializeNode(e){var t;return(t=Cw(e))==null||(t=t.serialize)==null?void 0:t.bind({editor:this.editor,options:e.options})}serializeMark(e){let t=Cw(e)?.serialize;return t?{...t,open:typeof t.open==`function`?t.open.bind({editor:this.editor,options:e.options}):t.open,close:typeof t.close==`function`?t.close.bind({editor:this.editor,options:e.options}):t.close}:null}},Tw=class{constructor(e,t){HC(this,`editor`,null),HC(this,`md`,null);let{html:n,linkify:r,breaks:i}=t;this.editor=e,this.md=this.withPatchedRenderer(CC({html:n,linkify:r,breaks:i}))}parse(e){let{inline:t}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(typeof e==`string`){this.editor.extensionManager.extensions.forEach(e=>{var t;return(t=Cw(e))==null||(t=t.parse)==null||(t=t.setup)==null?void 0:t.call({editor:this.editor,options:e.options},this.md)});let n=$C(this.md.render(e));return this.editor.extensionManager.extensions.forEach(e=>{var t;return(t=Cw(e))==null||(t=t.parse)==null||(t=t.updateDOM)==null?void 0:t.call({editor:this.editor,options:e.options},n)}),this.normalizeDOM(n,{inline:t,content:e}),n.innerHTML}return e}normalizeDOM(e,t){let{inline:n,content:r}=t;return this.normalizeBlocks(e),e.querySelectorAll(`*`).forEach(e=>{e.nextSibling?.nodeType===Node.TEXT_NODE&&!e.closest(`pre`)&&(e.nextSibling.textContent=e.nextSibling.textContent.replace(/^\n/,``))}),n&&this.normalizeInline(e,r),e}normalizeBlocks(e){let t=Object.values(this.editor.schema.nodes).filter(e=>e.isBlock).map(e=>e.spec.parseDOM?.map(e=>e.tag)).flat().filter(Boolean).join(`,`);t&&[...e.querySelectorAll(t)].forEach(e=>{e.parentElement.matches(`p`)&&tw(e)})}normalizeInline(e,t){var n;if((n=e.firstElementChild)!=null&&n.matches(`p`)){let n=e.firstElementChild,{nextElementSibling:r}=n,i=t.match(/^\s+/)?.[0]??``,a=r?``:t.match(/\s+$/)?.[0]??``;if(t.match(/^\n\n/)){n.innerHTML=`${n.innerHTML}${a}`;return}nw(n),e.innerHTML=`${i}${e.innerHTML}${a}`}}withPatchedRenderer(e){let t=e=>function(){let t=e(...arguments);return t===`
128
128
  `?t:t[t.length-1]===`
129
- `?t.slice(0,-1):t};return e.renderer.rules.hardbreak=t(e.renderer.rules.hardbreak),e.renderer.rules.softbreak=t(e.renderer.rules.softbreak),e.renderer.rules.fence=t(e.renderer.rules.fence),e.renderer.rules.code_block=t(e.renderer.rules.code_block),e.renderer.renderToken=t(e.renderer.renderToken.bind(e.renderer)),e}},Ew=ph.create({name:`markdownClipboard`,addOptions(){return{transformPastedText:!1,transformCopiedText:!1}},addProseMirrorPlugins(){return[new $c({key:new nl(`markdownClipboard`),props:{clipboardTextParser:(e,t,n)=>{if(n||!this.options.transformPastedText)return null;let r=this.editor.storage.markdown.parser.parse(e,{inline:!0});return Qo.fromSchema(this.editor.schema).parseSlice($C(r),{preserveWhitespace:!0,context:t})},clipboardTextSerializer:e=>this.options.transformCopiedText?this.editor.storage.markdown.serializer.serialize(e.content):null}})]}}),Dw=ph.create({name:`markdown`,priority:50,addOptions(){return{html:!0,tightLists:!0,tightListClass:`tight`,bulletListMarker:`-`,linkify:!1,breaks:!1,transformPastedText:!1,transformCopiedText:!1}},addCommands(){let e=o_.Commands.config.addCommands();return{setContent:(t,n,r)=>i=>e.setContent(i.editor.storage.markdown.parser.parse(t),n,r)(i),insertContentAt:(t,n,r)=>i=>e.insertContentAt(t,i.editor.storage.markdown.parser.parse(n,{inline:!0}),r)(i)}},onBeforeCreate(){this.editor.storage.markdown={options:{...this.options},parser:new Tw(this.editor,this.options),serializer:new ww(this.editor),getMarkdown:()=>this.editor.storage.markdown.serializer.serialize(this.editor.state.doc)},this.editor.options.initialContent=this.editor.options.content,this.editor.options.content=this.editor.storage.markdown.parser.parse(this.editor.options.content)},onCreate(){this.editor.options.content=this.editor.options.initialContent,delete this.editor.options.initialContent},addStorage(){return{}},addExtensions(){return[UC.configure({tight:this.options.tightLists,tightClass:this.options.tightListClass}),Ew.configure({transformPastedText:this.options.transformPastedText,transformCopiedText:this.options.transformCopiedText})]}}),Ow=h_.create({name:`token`,group:`inline`,inline:!0,atom:!0,selectable:!0,addAttributes(){return{kind:{default:`file`},label:{default:``},text:{default:``}}},parseHTML(){return[{tag:`span[data-token]`}]},renderHTML({node:e,HTMLAttributes:t}){return[`span`,Lm(t,{"data-token":e.attrs.kind,class:`pe-token`}),e.attrs.label||e.attrs.text]},renderText({node:e}){return e.attrs.text},addStorage(){return{markdown:{serialize(e,t){e.write(t.attrs.text)},parse:{}}}}});function kw(e){let{char:t,allowSpaces:n,allowToIncludeChar:r,allowedPrefixes:i,startOfLine:a,$position:o}=e,s=n&&!r,c=v_(t),l=RegExp(`\\s${c}$`),u=a?`^`:``,d=r?``:c,f=RegExp(s?`${u}${c}.*?(?=\\s${d}|$)`:`${u}(?:^)?${c}[^\\s${d}]*`,`gm`),p=o.nodeBefore?.isText&&o.nodeBefore.text;if(!p)return null;let m=o.pos-p.length,h=Array.from(p.matchAll(f)).pop();if(!h||h.input===void 0||h.index===void 0)return null;let g=h.input.slice(Math.max(0,h.index-1),h.index),_=RegExp(`^[${i?.join(``)}\0]?$`).test(g);if(i!==null&&!_)return null;let v=m+h.index,y=v+h[0].length;return s&&l.test(p.slice(y-1,y+1))&&(h[0]+=` `,y+=1),v<o.pos&&y>=o.pos?{range:{from:v,to:y},query:h[0].slice(t.length),text:h[0]}:null}var Aw=new nl(`suggestion`);function jw({pluginKey:e=Aw,editor:t,char:n=`@`,allowSpaces:r=!1,allowToIncludeChar:i=!1,allowedPrefixes:a=[` `],startOfLine:o=!1,decorationTag:s=`span`,decorationClass:c=`suggestion`,decorationContent:l=``,decorationEmptyClass:u=`is-empty`,command:d=()=>null,items:f=()=>[],render:p=()=>({}),allow:m=()=>!0,findSuggestionMatch:h=kw}){let g,_=p?.(),v=new $c({key:e,view(){return{update:async(e,n)=>{var r,i,a,o,s;let c=this.key?.getState(n),l=this.key?.getState(e.state),u=c.active&&l.active&&c.range.from!==l.range.from,p=!c.active&&l.active,m=c.active&&!l.active,h=!p&&!m&&c.query!==l.query,v=p||u&&h,y=h||u,b=m||u&&h;if(!v&&!y&&!b)return;let x=b&&!v?c:l,S=e.dom.querySelector(`[data-decoration-id="${x.decorationId}"]`);g={editor:t,range:x.range,query:x.query,text:x.text,items:[],command:e=>d({editor:t,range:x.range,props:e}),decorationNode:S,clientRect:S?()=>{let{decorationId:n}=this.key?.getState(t.state);return e.dom.querySelector(`[data-decoration-id="${n}"]`)?.getBoundingClientRect()||null}:null},v&&((r=_?.onBeforeStart)==null||r.call(_,g)),y&&((i=_?.onBeforeUpdate)==null||i.call(_,g)),(y||v)&&(g.items=await f({editor:t,query:x.query})),b&&((a=_?.onExit)==null||a.call(_,g)),y&&((o=_?.onUpdate)==null||o.call(_,g)),v&&((s=_?.onStart)==null||s.call(_,g))},destroy:()=>{var e;g&&((e=_?.onExit)==null||e.call(_,g))}}},state:{init(){return{active:!1,range:{from:0,to:0},query:null,text:null,composing:!1}},apply(e,s,c,l){let{isEditable:u}=t,{composing:d}=t.view,{selection:f}=e,{empty:p,from:g}=f,_={...s};if(_.composing=d,u&&(p||t.view.composing)){(g<s.range.from||g>s.range.to)&&!d&&!s.composing&&(_.active=!1);let e=h({char:n,allowSpaces:r,allowToIncludeChar:i,allowedPrefixes:a,startOfLine:o,$position:f.$from}),c=`id_${Math.floor(Math.random()*4294967295)}`;e&&m({editor:t,state:l,range:e.range,isActive:s.active})?(_.active=!0,_.decorationId=s.decorationId?s.decorationId:c,_.range=e.range,_.query=e.query,_.text=e.text):_.active=!1}else _.active=!1;return _.active||(_.decorationId=null,_.range={from:0,to:0},_.query=null,_.text=null),_}},props:{handleKeyDown(e,t){let{active:n,range:r}=v.getState(e.state);return n&&(_?.onKeyDown)?.call(_,{view:e,event:t,range:r})||!1},decorations(e){let{active:t,range:n,decorationId:r,query:i}=v.getState(e);if(!t)return null;let a=!i?.length,o=[c];return a&&o.push(u),Bf.create(e.doc,[Lf.inline(n.from,n.to,{nodeName:s,class:o.join(` `),"data-decoration-id":r,"data-decoration-content":l})])}}});return v}function Mw(e){return`prompt-suggestion-option-${e}`}var Nw=(0,U.forwardRef)(function({items:e,command:t,emptyNote:n,onActiveChange:r},i){let[a,o]=(0,U.useState)(0);return(0,U.useEffect)(()=>o(0),[e]),(0,U.useEffect)(()=>{r?.(e.length>0?Mw(a):null)},[e,a,r]),(0,U.useImperativeHandle)(i,()=>({onKeyDown:n=>{if(e.length===0)return!1;if(n.key===`ArrowDown`)return o(t=>(t+1)%e.length),!0;if(n.key===`ArrowUp`)return o(t=>(t-1+e.length)%e.length),!0;if(n.key===`Enter`||n.key===`Tab`){let n=e[a];return n&&t(n),!0}return!1}})),e.length===0?(0,W.jsx)(`div`,{role:`status`,className:`w-64 rounded-md border border-border bg-card p-2 text-sm text-muted-foreground shadow-md`,children:n??`No matches`}):(0,W.jsx)(`div`,{role:`listbox`,"aria-label":`Suggestions`,className:`max-h-72 w-64 overflow-y-auto rounded-md border border-border bg-card p-1 text-sm shadow-md`,children:e.map((n,r)=>(0,W.jsxs)(`div`,{children:[n.group&&(r===0||e[r-1]?.group!==n.group)&&(0,W.jsx)(`div`,{className:`px-2 pb-1 pt-2 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground/70`,children:n.group}),(0,W.jsxs)(`button`,{type:`button`,id:Mw(r),role:`option`,"aria-selected":r===a,...n.title?{title:n.title}:{},onMouseDown:e=>{e.preventDefault(),t(n)},onMouseEnter:()=>o(r),className:L(`flex w-full items-center gap-2 rounded px-2 py-1.5 text-left`,r===a?`bg-accent text-accent-foreground`:`hover:bg-accent/60`),children:[(0,W.jsx)(`span`,{className:`truncate font-medium`,children:n.label}),n.hint&&(0,W.jsx)(`span`,{className:`ml-auto truncate text-xs text-muted-foreground`,children:n.hint})]})]},n.id))})});function Pw(e,t){if(!t)return;let n=window.innerHeight-t.bottom;e.style.left=`${t.left}px`,n<320?(e.style.top=``,e.style.bottom=`${window.innerHeight-t.top+4}px`):(e.style.bottom=``,e.style.top=`${t.bottom+4}px`)}function Fw(e){let t=null,n=null,r=null,i=null,a=null,o=!1,s=e=>{a&&(e?a.setAttribute(`aria-activedescendant`,e):a.removeAttribute(`aria-activedescendant`))},c=i=>{let{items:c,command:l}=i,u=c.length===0&&!i.query?e.emptyNote:void 0,d=!o&&(c.length>0||!!u);t&&(t.style.display=d?``:`none`),a?.setAttribute(`aria-expanded`,d?`true`:`false`),d||s(null),n?.render((0,U.createElement)(Nw,{items:c,command:l,emptyNote:u,onActiveChange:s,ref:e=>{r=e}}))},l=()=>{t&&Pw(t,i?.()??null)};return{onStart(e){o=!1,t=document.createElement(`div`),t.style.position=`fixed`,t.style.zIndex=`50`,document.body.appendChild(t),n=(0,Ct.createRoot)(t),i=e.clientRect??null,a=e.editor?.view.dom??null,l(),c(e),window.addEventListener(`scroll`,l,!0),window.addEventListener(`resize`,l)},onUpdate(e){i=e.clientRect??null,l(),c(e)},onKeyDown(e){return e.event.key===`Escape`?!t||t.style.display===`none`?!1:(o=!0,t.style.display=`none`,a?.setAttribute(`aria-expanded`,`false`),s(null),!0):r?.onKeyDown(e.event)??!1},onExit(){o=!1,window.removeEventListener(`scroll`,l,!0),window.removeEventListener(`resize`,l),a?.setAttribute(`aria-expanded`,`false`),s(null),a=null,n?.unmount(),t?.remove(),n=null,t=null,r=null,i=null}}}function Iw(e){return ph.create({name:`suggestion-${e.key}`,addProseMirrorPlugins(){return[jw({editor:this.editor,char:e.char,pluginKey:new nl(e.key),items:({query:t})=>e.items(t.toLowerCase()),command:({editor:t,range:n,props:r})=>e.onSelect(r,{editor:t,range:n}),render:()=>Fw(e)})]}})}function Lw(e,t,n){e.chain().focus().deleteRange(t).insertContent([{type:`token`,attrs:{kind:n.kind,label:n.label,text:n.text}},{type:`text`,text:` `}]).run()}function Rw(e,t){e.commands.setContent(t),e.commands.focus(`end`),/\s$/.test(t)&&e.commands.insertContent({type:`text`,text:` `})}var zw=(0,U.forwardRef)(function({onChange:e,onSubmit:t,onPreset:n,onMentionProject:r,onMentionFile:i,onMentionRemoved:a,projects:o,files:s=[],commands:c,customPresets:l=[],projectPresets:u=[],onNewPreset:d,disabled:f=!1,placeholder:p=`Describe what to do…`,initialText:m,compact:h=!1},g){let[_,v]=(0,U.useState)(!0),y=(0,U.useRef)(o),b=(0,U.useRef)(s),x=(0,U.useRef)(c),S=(0,U.useRef)(l),C=(0,U.useRef)(u),w=(0,U.useRef)(d),T=(0,U.useRef)(n),E=(0,U.useRef)(r),D=(0,U.useRef)(i),O=(0,U.useRef)(a),k=(0,U.useRef)(e),A=(0,U.useRef)(t);(0,U.useEffect)(()=>{y.current=o,b.current=s,x.current=c,S.current=l,C.current=u,w.current=d,T.current=n,E.current=r,D.current=i,O.current=a,k.current=e,A.current=t});let j=(0,U.useRef)(new Set),M=e=>{let t=new Set;e.state.doc.descendants(e=>(e.type.name===`token`&&(e.attrs.kind===`project`||e.attrs.kind===`file`)&&t.add(String(e.attrs.text)),!0));for(let e of j.current)if(!t.has(e)){if(e.startsWith(`#`))O.current?.(e.slice(1));else if(e.startsWith(`@`)){let t=y.current.find(t=>t.name===e.slice(1));t&&O.current?.(t.path)}}j.current=t},N=(e,t)=>{let n=!e.isEmpty;return Rw(e,t),M(e),v(e.isEmpty),k.current(e.storage.markdown.getMarkdown()),n},P=U_({immediatelyRender:!1,extensions:[my,Dw.configure({html:!1,linkify:!1,breaks:!0,transformPastedText:!0}),Ow,Iw({char:`/`,key:`slash`,items:e=>{let t=e.toLowerCase();if(x.current.some(e=>e.name===t))return[];let n=x.current.filter(e=>e.name.includes(t)).map(e=>({id:`command:${e.name}`,label:`/${e.name}`,group:`Commands`,...e.description?{title:e.description}:{}})),r=S.current.filter(e=>e.label.toLowerCase().includes(t)).map(e=>({id:`custom-preset:${e.id}`,label:e.label,hint:`saved prompt`,group:`Saved prompts`})),i=C.current.filter(e=>e.label.toLowerCase().includes(t)).map(e=>({id:`project-preset:${e.id}`,label:e.label,hint:`project saved prompt`,group:`Saved prompts`})),a=w.current&&`save prompt`.includes(t)?[{id:`new-preset`,label:`Save prompt…`,hint:`save the current prompt`,group:`Saved prompts`}]:[];return[...n,...r,...i,...a]},onSelect:(e,{editor:t,range:n})=>{if(e.id.startsWith(`command:`)){let r=x.current.find(t=>`command:${t.name}`===e.id);if(r){t.chain().focus().deleteRange(n).run();let e=N(t,`/${r.name} `);T.current?.(`/${r.name}`,e)}return}if(e.id.startsWith(`custom-preset:`)){let r=S.current.find(t=>`custom-preset:${t.id}`===e.id);if(r){t.chain().focus().deleteRange(n).run();let e=N(t,r.prompt);T.current?.(r.label,e)}return}if(e.id.startsWith(`project-preset:`)){let r=C.current.find(t=>`project-preset:${t.id}`===e.id);if(r){t.chain().focus().deleteRange(n).run();let e=N(t,r.prompt);T.current?.(r.label,e)}return}e.id===`new-preset`&&(t.chain().focus().deleteRange(n).run(),w.current?.())}}),Iw({char:`@`,key:`at`,emptyNote:`No projects to reference yet.`,items:e=>y.current.filter(t=>t.name.toLowerCase().includes(e)).slice(0,8).map(e=>({id:`project:${e.id}`,label:`@${e.name}`,hint:`project`,group:`Projects`})),onSelect:(e,{editor:t,range:n})=>{let r=y.current.find(t=>`project:${t.id}`===e.id);r&&(Lw(t,n,{kind:`project`,label:`@${r.name}`,text:`@${r.name}`}),E.current?.(r.path))}}),Iw({char:`#`,key:`hash`,emptyNote:`No files indexed here yet.`,items:e=>b.current.filter(t=>t.toLowerCase().includes(e.toLowerCase())).slice(0,8).map(e=>({id:`file:${e}`,label:`#${e}`,hint:`file`,group:`Files`})),onSelect:(e,{editor:t,range:n})=>{let r=e.id.slice(5);Lw(t,n,{kind:`file`,label:`#${r}`,text:`#${r}`}),D.current?.(r)}})],editorProps:{attributes:{class:`pe-prose focus:outline-none`,role:`textbox`,"aria-multiline":`true`,"aria-label":`Prompt`,"aria-placeholder":p},handleKeyDown:(e,t)=>(t.metaKey||t.ctrlKey)&&t.key===`Enter`?(t.preventDefault(),A.current(),!0):t.key===`Enter`&&!t.shiftKey&&!t.altKey&&!t.isComposing?e.dom.getAttribute(`aria-expanded`)===`true`||e.state.selection.$from.parent.type.name===`codeBlock`?!1:(t.preventDefault(),A.current(),!0):!1},onUpdate:({editor:e})=>{M(e),v(e.isEmpty),k.current(e.storage.markdown.getMarkdown())}});(0,U.useImperativeHandle)(g,()=>({clear:()=>{P?.commands.clearContent(),P&&M(P),v(!0),k.current(``)},focus:()=>P?.commands.focus(`end`),loadTemplate:e=>P?N(P,e):!1})),(0,U.useEffect)(()=>{P?.setEditable(!f,!1)},[P,f]);let ee=(0,U.useRef)(!1);(0,U.useEffect)(()=>{!P||ee.current||!m||(ee.current=!0,N(P,m))},[P,m]);let F=h?`px-2 py-1.5`:`px-3 py-2.5`,te=h?`left-2 top-1.5`:`left-3 top-2.5`;return(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(ce,{className:h?`rounded-md border border-border focus-within:ring-2 focus-within:ring-[var(--color-primary)]`:``,viewportClassName:h?`max-h-32 min-h-8`:`max-h-64 min-h-10`,children:(0,W.jsx)(A_,{editor:P,className:`w-full bg-transparent text-sm ${F}`})}),_&&(0,W.jsx)(`span`,{className:`pointer-events-none absolute text-sm text-muted-foreground ${te}`,children:p})]})}),Bw=80;function Vw(){return typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():`p-${Date.now()}`}function Hw({currentPrompt:e,busy:t,canSaveToProject:n,onSave:r,onCancel:i}){let[a,o]=(0,U.useState)(``),[s,c]=(0,U.useState)(e),[l,u]=(0,U.useState)(`user`),d=()=>{let e=a.trim(),t=s.trim();!e||!t||r({id:Vw(),label:e,prompt:t},n?l:`user`)};return(0,W.jsx)(ut,{open:!0,onOpenChange:e=>{e||i()},title:`Save prompt`,children:(0,W.jsxs)(`div`,{className:`flex w-full flex-col gap-2`,onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),d())},children:[(0,W.jsx)(D,{type:`text`,value:a,maxLength:Bw,placeholder:`Name`,disabled:t,autoFocus:!0,onChange:e=>o(e.target.value),className:`h-8 bg-background px-2`}),(0,W.jsx)(Ee,{value:s,placeholder:`The prompt to save…`,disabled:t,rows:5,onChange:e=>c(e.target.value),className:`resize-y px-2 py-1 font-mono text-xs`}),n&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-[var(--color-muted-foreground)]`,children:[(0,W.jsx)(`span`,{children:`Save to`}),(0,W.jsx)(`div`,{className:`inline-flex overflow-hidden rounded-md border border-border`,children:[`user`,`project`].map(e=>(0,W.jsx)(`button`,{type:`button`,disabled:t,onClick:()=>u(e),"aria-pressed":l===e,className:l===e?`bg-foreground px-2 py-0.5 text-background`:`px-2 py-0.5 text-foreground hover:bg-[var(--color-muted)]`,children:e===`user`?`Just me`:`This project`},e))}),(0,W.jsx)(`span`,{className:`truncate`,children:l===`project`?`Committed to the repo, shared with your team`:`Private to you, on every project`})]}),(0,W.jsxs)(`div`,{className:`mt-1 flex items-center justify-end gap-2`,children:[(0,W.jsx)(z,{type:`button`,variant:`ghost`,size:`sm`,onClick:i,children:`Cancel`}),(0,W.jsx)(z,{type:`button`,size:`sm`,disabled:t||!a.trim()||!s.trim(),onClick:d,children:`Save prompt`})]})]})})}function Uw({preset:e,busy:t,onLoad:n,onDelete:r}){return(0,W.jsxs)(F,{disabled:t,onClick:()=>n(e.prompt,e.label),className:`items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`flex-1 truncate`,children:e.label}),(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`button`,{type:`button`,disabled:t,onClick:t=>{t.stopPropagation(),r(e.id)},"aria-label":`Delete saved prompt ${e.label}`,className:`rounded p-0.5 text-[var(--color-muted-foreground)] hover:text-danger`}),children:(0,W.jsx)(Je,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),(0,W.jsxs)(h,{children:[`Delete "`,e.label,`"`]})]})]})}function Ww({commands:e,customPresets:t,projectPresets:n,busy:r,onLoad:i,onNew:a,onDelete:o,onDeleteProject:s}){return(0,W.jsxs)(l,{children:[(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(d,{type:`button`,disabled:r,"aria-label":`Commands`,className:L(gt({variant:`ghost`,size:`icon-sm`}),`h-8 w-8`)}),children:(0,W.jsx)(Yr,{className:`h-4 w-4`,"aria-hidden":!0})}),(0,W.jsx)(h,{children:`Run a command or load a saved prompt. In the box: / commands · @ projects · # files`})]}),(0,W.jsxs)(A,{align:`start`,className:`min-w-[16rem] max-w-[20rem]`,children:[(0,W.jsxs)(M,{children:[(0,W.jsx)(v,{children:`Commands`}),e.length===0&&(0,W.jsx)(`div`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`This project has no commands.`}),e.map(e=>{let t={disabled:r||e.waiting!==void 0,onClick:()=>i(`/${e.name} `,`/${e.name}`),className:`items-start`},n=(0,W.jsx)(Ne,{label:`/${e.name}`,...e.waiting===void 0?{}:{description:`waiting to reach ${e.waiting}`}});return e.description?(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(F,{...t}),children:n}),(0,W.jsx)(h,{className:`max-w-[22rem]`,children:e.description})]},e.name):(0,W.jsx)(F,{...t,children:n},e.name)})]}),t.length>0&&(0,W.jsxs)(M,{children:[(0,W.jsx)(w,{}),(0,W.jsx)(v,{children:`Your saved prompts`}),t.map(e=>(0,W.jsx)(Uw,{preset:e,busy:r,onLoad:i,onDelete:o},e.id))]}),n.length>0&&(0,W.jsxs)(M,{children:[(0,W.jsx)(w,{}),(0,W.jsx)(v,{children:`Project saved prompts`}),n.map(e=>(0,W.jsx)(Uw,{preset:e,busy:r,onLoad:i,onDelete:s},e.id))]}),a&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(w,{}),(0,W.jsxs)(F,{disabled:r,onClick:a,children:[(0,W.jsx)(Yr,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),`Save prompt…`]})]})]})]})}var Gw=`the CLI's own default`;function Kw(e,t){return e.find(e=>e.value===t)??e[0]}function qw(e,t){if(t)return e?.models.find(e=>e.value===t)?.label??t}function Jw({drivers:e,driver:t,model:n,onChange:r,busy:i}){let a=Kw(e,t),o=qw(a,n),s=`Driver: ${a?.label??``} · Model: ${o??`the CLI's own default`}`;return(0,W.jsxs)(l,{children:[(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(d,{type:`button`,disabled:i,"aria-label":s,className:L(gt({variant:`ghost`,size:`sm`}),`gap-1.5 px-2 font-normal`)}),children:[a?.icon?(0,W.jsx)(`span`,{className:`flex h-4 w-4 items-center justify-center`,children:a.icon}):a?.label,o,(0,W.jsx)(it,{className:`h-3.5 w-3.5 opacity-70`})]}),(0,W.jsx)(h,{children:s})]}),(0,W.jsx)(A,{align:`end`,children:e.map(e=>(0,W.jsxs)(k,{children:[(0,W.jsxs)(xt,{children:[(0,W.jsx)(Se,{className:L(`h-3.5 w-3.5 shrink-0`,e.value===t?`opacity-100`:`opacity-0`)}),e.icon&&(0,W.jsx)(`span`,{className:`flex h-4 w-4 items-center justify-center`,children:e.icon}),(0,W.jsx)(`span`,{className:`flex-1`,children:e.label})]}),(0,W.jsxs)(re,{children:[e.models.length===0&&e.modelsNote&&(0,W.jsx)(F,{disabled:!0,children:e.modelsNote}),e.models.map(i=>(0,W.jsxs)(F,{onClick:()=>r(e.value,i.value),children:[(0,W.jsx)(Se,{className:L(`h-3.5 w-3.5 shrink-0`,e.value===t&&i.value===n?`opacity-100`:`opacity-0`)}),i.label]},i.value))]})]},e.value))})]})}function Yw(e=typeof window>`u`?``:window.location.hostname){return e===``||Be(e)?`This machine`:e}var Xw=`inline-flex h-6 min-w-0 max-w-full items-center gap-1 overflow-hidden rounded-full border border-[var(--color-border)] px-2 text-xs text-muted-foreground`;function Zw({icon:e,children:t}){return(0,W.jsxs)(`span`,{className:Xw,children:[e,(0,W.jsx)(`span`,{className:`truncate`,children:t})]})}function Qw({status:e}){return(0,W.jsx)(`span`,{"aria-hidden":!0,className:L(`mt-1.5 h-2 w-2 shrink-0 rounded-full`,e===`online`?`bg-success`:`bg-muted-foreground/40`)})}function $w({connection:e,busy:t,chip:n=!1}){let r=e.selectedMachineId&&!e.onlyHere?e.machines.find(t=>t.id===e.selectedMachineId):void 0,i=Yw(),a=r?.label??i,o=!r,s=o||c(r.url)?zr:Qr;return(0,W.jsxs)(l,{children:[(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(d,{type:`button`,disabled:t,"aria-label":`Run on`,className:n?L(Xw,`transition-colors hover:bg-[var(--color-accent)] hover:text-[var(--color-accent-foreground)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] disabled:pointer-events-none disabled:opacity-50`):L(gt({variant:`ghost`,size:`icon-sm`}),`relative h-8 w-8`)}),children:n?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`span`,{className:`relative flex shrink-0`,children:[(0,W.jsx)(s,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),!o&&(0,W.jsx)(`span`,{className:`absolute -right-0.5 -top-0.5 h-1.5 w-1.5 rounded-full bg-[var(--color-primary)]`})]}),(0,W.jsx)(`span`,{className:`truncate`,children:a}),(0,W.jsx)(it,{className:`h-3 w-3 shrink-0 opacity-70`,"aria-hidden":!0})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(s,{className:`h-4 w-4`}),!o&&(0,W.jsx)(`span`,{className:`absolute -right-0.5 -top-0.5 h-2 w-2 rounded-full bg-[var(--color-primary)]`})]})}),(0,W.jsx)(h,{children:`Run on — ${a}`})]}),(0,W.jsxs)(A,{align:n?`start`:`end`,className:`min-w-[19rem] max-w-[22rem]`,children:[(0,W.jsxs)(F,{className:`items-start`,onClick:()=>e.onSelectLocal(),children:[(0,W.jsx)(Se,{className:L(`mt-0.5 h-3.5 w-3.5 shrink-0`,o?`opacity-100`:`opacity-0`)}),(0,W.jsx)(Ne,{label:i,description:`Start the run here, through this project's start hook.`})]}),e.machines.map(t=>{let n=e.status[t.id],i=n===`offline`,a=c(t.url),o=a?zr:Qr,s=a?i?`Not connected. It must be on, with OpenAgent running.`:`Your computer. The run starts there.`:i?`${t.url} (offline)`:t.url;return(0,W.jsxs)(F,{className:L(`items-start gap-2`,(i||e.onlyHere)&&`opacity-60`),disabled:e.onlyHere,onClick:()=>e.onSelect(t),children:[(0,W.jsx)(Se,{className:L(`mt-0.5 h-3.5 w-3.5 shrink-0`,r?.id===t.id?`opacity-100`:`opacity-0`)}),(0,W.jsx)(o,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground`,"aria-hidden":!0}),(0,W.jsx)(Qw,{status:n}),(0,W.jsx)(Ne,{label:t.label,description:s}),!a&&(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`button`,{type:`button`,onClick:n=>{n.stopPropagation(),e.onRemove(t)},"aria-label":`Remove machine ${t.label}`,className:`mt-0.5 rounded p-0.5 text-[var(--color-muted-foreground)] hover:text-danger`}),children:(0,W.jsx)(Je,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),(0,W.jsxs)(h,{children:[`Remove `,t.label]})]})]},t.id)}),e.onlyHere&&e.machines.length>0&&(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`This project has no repository address, so it cannot be sent to another machine.`}),(0,W.jsxs)(F,{className:`items-start`,disabled:t,onClick:()=>e.onAddMachine(),children:[(0,W.jsx)(Yr,{className:`mt-0.5 h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,W.jsx)(Ne,{label:`Add a machine…`,description:`Paste the link the other machine gives: its Settings, Devices, Add device.`})]})]})]})}var eT=1e4;function tT(e){let t=e.map(e=>e.id).join(`|`),n=Ie((0,U.useMemo)(()=>t?()=>ve():null,[t]),{},eT,[t]).value;return(0,U.useMemo)(()=>{let e={};for(let[t,r]of Object.entries(n))e[t]=r?`online`:`offline`;return e},[n])}var nT={xhigh:`Extra high`};function rT(e){return nT[e]??e.charAt(0).toUpperCase()+e.slice(1)}function iT({efforts:e,effort:t,onChange:n,busy:r=!1}){if(e.length===0)return null;let i=t===void 0?`Effort`:rT(t);return(0,W.jsxs)(l,{children:[(0,W.jsxs)(d,{type:`button`,disabled:r,"aria-label":t===void 0?`Effort: the agent’s default`:`Effort: ${rT(t)}`,className:L(gt({variant:`ghost`,size:`xs`}),`gap-1 text-muted-foreground`),children:[i,(0,W.jsx)(it,{className:`h-3 w-3 shrink-0`,"aria-hidden":!0})]}),(0,W.jsxs)(A,{align:`end`,className:`min-w-[9rem]`,children:[(0,W.jsxs)(F,{onClick:()=>n(void 0),children:[(0,W.jsx)(`span`,{className:`flex-1`,children:`The agent’s default`}),t===void 0&&(0,W.jsx)(Se,{className:`h-3.5 w-3.5`,"aria-hidden":!0})]}),e.map(e=>(0,W.jsxs)(F,{onClick:()=>n(e),children:[(0,W.jsx)(`span`,{className:`flex-1`,children:rT(e)}),t===e&&(0,W.jsx)(Se,{className:`h-3.5 w-3.5`,"aria-hidden":!0})]},e))]})]})}var aT={"claude-code":{icon:(0,W.jsx)(li,{className:`h-4 w-4`})},codex:{icon:(0,W.jsx)(ui,{className:`h-4 w-4`})}},oT=(0,U.forwardRef)(function({files:e,addContext:t,removeContext:n,aboveControls:r,belowControls:i,sessionModel:a,sessionContext:o,onSubmit:s,onPromptChange:c,onPreset:l,busy:u,submitLabel:d,submitBusyLabel:f,placeholder:p,compact:m=!1,showDriverModel:_=!0,inAgent:v=!1,canSubmit:y=!0,idleControl:b},x){let[S,C]=(0,U.useState)(``),[w,T]=(0,U.useState)(!1),[E,D]=(0,U.useState)(!1),[O,k]=(0,U.useState)(null),A=(0,U.useRef)(null),j=$e(),M=tT(j),N=qe(rr,[],[]),P=dn(),ee=P.model??``,F=P.driver??`claude-code`,te=Ze(),ne=P.customPresets??[],I=an(),re=un(),ie=Ba(re),ae=ie?.commands??[],oe=ie!==null&&ie.address===void 0,R=Fe(),se=R&&!oe?j.find(e=>e.id===R):void 0,ce=!!se&&M[se.id]===`offline`;(0,U.useImperativeHandle)(x,()=>({clear:()=>{A.current?.clear(),C(``)},focus:()=>A.current?.focus()}));let[le,ue]=(0,U.useState)(void 0);(0,U.useEffect)(()=>{if(m||v)return;let e=Ce();e&&ue(e)},[m,v]);let de=(0,U.useRef)(!1),fe=e=>{e?.preventDefault();let t=S.trim();!t||u||de.current||ce||!y||(de.current=!0,Promise.resolve(s(t)).finally(()=>{de.current=!1}))},pe=(e,t)=>{let n=A.current?.loadTemplate(e)??!1;l?.(t,n)},me=(0,W.jsx)(zw,{ref:A,compact:m,onChange:e=>{C(e),c?.(e)},onSubmit:fe,...l?{onPreset:l}:{},...t?{onMentionProject:t,onMentionFile:t}:{},...n?{onMentionRemoved:n}:{},projects:N,files:e,commands:Va(ae),customPresets:ne,projectPresets:I,...m?{}:{onNewPreset:()=>T(!0)},disabled:u,...p?{placeholder:p}:{},...le?{initialText:le}:{}}),he=_&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Jw,{drivers:ct(te).map(e=>({...e,...aT[e.value]})),driver:F,model:ee,onChange:(e,t)=>cn({driver:e,model:t}),busy:u}),(0,W.jsx)(iT,{efforts:rt(te,F,ee),...P.effort?{effort:P.effort}:{},onChange:e=>cn({effort:e??``}),busy:u})]}),ge=!m&&(0,W.jsx)(Ww,{commands:ae,customPresets:ne,projectPresets:I,busy:u,onLoad:pe,onNew:()=>T(!0),onDelete:e=>cn({customPresets:ne.filter(t=>t.id!==e)}),onDeleteProject:e=>on(I.filter(t=>t.id!==e))}),_e=v?null:(0,W.jsx)($w,{busy:u,chip:!m,connection:{machines:j,selectedMachineId:R,onlyHere:oe,onSelect:e=>Ke(e.id),onSelectLocal:()=>Ke(null),onAddMachine:()=>D(!0),onRemove:e=>{k(null),ke(e.id).then(e=>{e.ok||k(e.error)})},status:M}}),ve=!!S.trim(),ye=(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(z,{type:`submit`,size:`icon-sm`,onClick:fe,disabled:u||!ve||ce||!y,"aria-hidden":!ve,tabIndex:ve?void 0:-1,"aria-label":d,className:L(`h-8 w-8 shrink-0 transition-[margin,opacity,transform] duration-150 ease-out`,ve?`ml-0 translate-x-0 opacity-100 disabled:opacity-100`:L(`pointer-events-none translate-x-2 opacity-0 disabled:opacity-0`,m?`-ml-[2.375rem]`:`-ml-8`))}),children:u?(0,W.jsx)(nt,{className:`h-4 w-4 animate-spin`}):(0,W.jsx)(hr,{className:`h-4 w-4`})}),(0,W.jsx)(h,{children:u?f:`${d} (Enter · Shift+Enter for a new line)`})]}),be=!ve&&b?b:ye,xe=ce&&(0,W.jsx)(`p`,{role:`alert`,className:`mt-2 text-xs text-danger`,children:`${se?.label??`The selected machine`} is offline. Pick another place to run, then start.`}),Se=O&&(0,W.jsx)(`p`,{role:`alert`,className:`mt-2 text-xs text-danger`,children:O}),we=E&&(0,W.jsx)(We,{onClose:()=>D(!1),onAdded:()=>A.current?.focus()});return m?(0,W.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:me}),he,_e,be,we]}):(0,W.jsxs)(W.Fragment,{children:[!v&&(0,W.jsxs)(`div`,{className:`mb-1.5 flex h-6 items-center gap-1.5`,children:[(0,W.jsx)(`div`,{className:`flex min-w-0 items-center`,children:_e}),(0,W.jsx)(`div`,{className:`flex min-w-0 shrink-[100] items-center gap-1.5`,children:r})]}),(0,W.jsxs)(`div`,{className:`flex items-end rounded-lg border border-border bg-transparent focus-within:border-muted-foreground/40`,children:[(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:me}),(0,W.jsx)(`div`,{className:`flex shrink-0 items-center p-1`,children:be})]}),(0,W.jsxs)(`div`,{className:`mt-1 flex h-8 items-center gap-2`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-1.5`,children:[ge,i]}),(0,W.jsx)(`div`,{className:`shrink-0`,children:he||(0,W.jsxs)(`span`,{className:`flex items-center`,children:[a!==void 0&&(0,W.jsx)(`span`,{className:`px-2 text-xs text-muted-foreground`,children:a}),o]})})]}),xe,Se,w&&(0,W.jsx)(Hw,{currentPrompt:S,busy:u,canSaveToProject:re!==null,onCancel:()=>{T(!1),A.current?.focus()},onSave:(e,t)=>{t===`project`?on([...I,e]):cn({customPresets:[...ne,e]}),T(!1),A.current?.focus()}}),we]})});function sT(e,t,n){return e===`local`?`${n} (local)`:t}function cT({main:e,local:t,pick:n,onPick:r,busy:i}){let a=sT(n,e,t),o=[{pick:`main`,label:e,description:`The project's main branch, fetched fresh.`},{pick:`local`,label:`My local branch ${t}`,description:`Your branch as committed on this machine; uncommitted edits are not carried. If the agent publishes, your commits that are not pushed go up with its branch.`}];return(0,W.jsxs)(l,{children:[(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(d,{type:`button`,disabled:i,"aria-label":`The agent starts from`,className:L(Xw,`transition-colors hover:bg-[var(--color-accent)] hover:text-[var(--color-accent-foreground)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] disabled:pointer-events-none disabled:opacity-50`)}),children:[(0,W.jsx)(Nr,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`truncate`,children:a}),(0,W.jsx)(it,{className:`h-3 w-3 shrink-0 opacity-70`,"aria-hidden":!0})]}),(0,W.jsx)(h,{children:`The agent starts from ${a}`})]}),(0,W.jsx)(A,{align:`start`,className:`min-w-[19rem] max-w-[22rem]`,children:(0,W.jsxs)(M,{children:[(0,W.jsx)(v,{className:`font-normal`,children:`The agent starts from`}),o.map(e=>(0,W.jsxs)(F,{className:`items-start`,"aria-current":e.pick===n,onClick:()=>r(e.pick),children:[(0,W.jsx)(Se,{className:L(`mt-0.5 h-3.5 w-3.5 shrink-0`,e.pick===n?`opacity-100`:`opacity-0`),"aria-hidden":!0}),(0,W.jsx)(Ne,{label:e.label,description:e.description})]},e.pick))]})})]})}function lT(e,t){let n=t?.replace(/\/+$/,``);return n&&e.startsWith(`${n}/`)?e.slice(n.length+1):e}function uT(e){return e.kind===`driver`&&e.event.type===`output`?e.event.changed??[]:[]}function dT(e){return e.kind===`driver`&&e.event.type===`start`}function fT(e,t){let n=new Map;for(let r of e){let e=lT(r.path,t),i=n.get(e)??{path:e,name:e.replace(/\/+$/,``).split(`/`).pop()||e,added:0,removed:0,created:!1};n.set(e,{...i,added:i.added+r.added,removed:i.removed+r.removed,created:i.created||r.created===!0})}return[...n.values()].map(e=>e.created?{...e,added:Math.max(0,e.added-e.removed),removed:0}:e)}function pT(e,t){let n=new Map,r=[];for(let i of e){if(dT(i)){r.length>0&&n.set(i,fT(r,t)),r=[];continue}r.push(...uT(i))}return{ended:n,last:fT(r,t)}}function mT(e){return{added:e.reduce((e,t)=>e+t.added,0),removed:e.reduce((e,t)=>e+t.removed,0)}}var hT={Bash:{verb:`Ran`,doing:`Running`,kind:`command`},Read:{verb:`Read`,doing:`Reading`,kind:`read`,file:!0},Edit:{verb:`Edited`,doing:`Editing`,kind:`edit`,file:!0},MultiEdit:{verb:`Edited`,doing:`Editing`,kind:`edit`,file:!0},NotebookEdit:{verb:`Edited`,doing:`Editing`,kind:`edit`,file:!0},Write:{verb:`Wrote`,doing:`Writing`,kind:`edit`,file:!0},Grep:{verb:`Searched`,doing:`Searching`,kind:`search`},Glob:{verb:`Searched`,doing:`Searching`,kind:`search`},WebSearch:{verb:`Searched the web`,doing:`Searching the web`,kind:`search`},WebFetch:{verb:`Fetched`,doing:`Fetching`,kind:`other`},Skill:{verb:`Used skill`,doing:`Using skill`,kind:`skill`},Task:{verb:`Started agent`,doing:`Starting agent`,kind:`other`},Agent:{verb:`Started agent`,doing:`Starting agent`,kind:`other`},TodoWrite:{verb:`Updated todos`,doing:`Updating todos`,kind:`other`},commandExecution:{verb:`Ran`,doing:`Running`,kind:`command`},fileChange:{verb:`Edited`,doing:`Editing`,kind:`edit`,file:!0},mcpToolCall:{verb:`Called`,doing:`Calling`,kind:`other`},webSearch:{verb:`Searched the web`,doing:`Searching the web`,kind:`search`}};function gT(e){if(!/^[a-z]+([A-Z][a-z]*)+$/.test(e))return e;let t=e.replace(/[A-Z]/g,e=>` ${e.toLowerCase()}`);return t.charAt(0).toUpperCase()+t.slice(1)}function _T(e){return e.split(`, `).map(e=>e.replace(/\/+$/,``).split(`/`).pop()||e).join(`, `)}function vT(e,t,n){let r=hT[e],i={verb:r?.verb??gT(e),doing:r?.doing??gT(e),kind:r?.kind??`other`};if(t!==void 0&&(i.detail=t,i.target=r?.file?_T(t):t),n!==void 0&&n.length>0){let e=fT(n);i.kind=`edit`,i.verb=e.every(e=>e.created)?`Created`:`Edited`,i.target=e.map(e=>e.name).join(`, `),i.files=e,i.size=mT(e)}return i}function yT(e){return e===1?`Ran a command`:`Ran ${e} commands`}function bT({added:e,removed:t}){return(0,W.jsxs)(`span`,{className:`shrink-0 tabular-nums`,children:[(0,W.jsxs)(`span`,{className:`text-success`,children:[`+`,e]}),` `,(0,W.jsxs)(`span`,{className:`text-danger`,children:[`−`,t]})]})}function xT({files:e,onOpen:t}){return(0,W.jsx)(`ul`,{"aria-label":`Files changed`,className:`flex min-w-0 flex-1 flex-col gap-1 font-sans text-sm`,children:e.map(e=>{let n=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Re,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-left text-foreground`,title:e.path,children:e.name}),(0,W.jsx)(bT,{added:e.added,removed:e.removed}),t&&(0,W.jsx)(Xe,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`,"aria-hidden":!0})]}),r=`flex w-full min-w-0 items-center gap-2 rounded-lg border border-border px-3 py-2`;return(0,W.jsx)(`li`,{className:`min-w-0`,children:t?(0,W.jsx)(`button`,{type:`button`,onClick:()=>t(e.path),"aria-label":`Show the change to ${e.name}`,className:`${r} hover:bg-muted`,children:n}):(0,W.jsx)(`div`,{className:r,children:n})},e.path)})})}function ST({since:e}){let[t,n]=(0,U.useState)(()=>Date.now());(0,U.useEffect)(()=>{let e=setInterval(()=>n(Date.now()),1e3);return()=>clearInterval(e)},[]);let r=Math.max(0,Math.floor((t-Date.parse(e))/1e3));return(0,W.jsx)(`span`,{className:`shrink-0 tabular-nums`,children:r<60?`${r}s`:`${Math.floor(r/60)}m ${r%60}s`})}function CT(){return(0,W.jsxs)(`span`,{className:`dot-wave shrink-0`,"aria-hidden":!0,children:[(0,W.jsx)(`span`,{}),(0,W.jsx)(`span`,{}),(0,W.jsx)(`span`,{})]})}function wT(e){let t=e.trim().split(`
130
- `).find(e=>e.trim()!==``)?.trim()??`Thought`;return t.length>90?`${t.slice(0,90).trimEnd()}…`:t}var TT=`max-h-64 overflow-auto whitespace-pre-wrap break-all rounded-md px-2.5 py-1.5 font-mono text-xs text-foreground`;function ET({label:e,detail:t,whole:n,summary:r,output:i,live:a}){let[o,s]=(0,U.useState)(!1),c=vT(e,t,i?.changed),l=n??c.detail,u=c.kind===`command`?r:void 0,d=(0,W.jsxs)(W.Fragment,{children:[u===void 0?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:L(`shrink-0`,a&&`text-shimmer`),children:a?c.doing:c.verb}),c.target!==void 0&&(0,W.jsx)(`span`,{className:L(`truncate`,a?`text-shimmer`:`text-foreground`),children:c.target})]}):(0,W.jsx)(`span`,{className:L(`truncate`,a&&`text-shimmer`),children:u}),c.size!==void 0&&(0,W.jsx)(bT,{...c.size}),a?.since!==void 0&&(0,W.jsx)(ST,{since:a.since})]});return l===void 0&&i===void 0?(0,W.jsx)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:d}):(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>s(e=>!e),"aria-expanded":o,"aria-label":u??[a?c.doing:c.verb,c.target].filter(Boolean).join(` `),className:`flex max-w-full min-w-0 items-center gap-1.5 text-left hover:text-foreground`,children:[d,(0,W.jsx)(Xe,{className:L(`h-3.5 w-3.5 shrink-0 transition-transform`,o&&`rotate-90`),"aria-hidden":!0})]}),o&&(0,W.jsxs)(`div`,{className:`mt-1 flex flex-col gap-1`,children:[l!==void 0&&(0,W.jsxs)(`pre`,{"aria-label":c.kind===`command`?`Command`:`Detail`,className:L(TT,`bg-muted`),children:[c.kind===`command`&&(0,W.jsx)(`span`,{className:`select-none text-muted-foreground`,children:`$ `}),l]}),i!==void 0&&i.text!==``&&(0,W.jsx)(`pre`,{"aria-label":`Output`,className:L(TT,`border border-border`),children:i.text}),i?.failed&&(0,W.jsx)(`div`,{className:`text-xs text-danger`,children:i.exitCode===void 0?`Failed`:`Failed: exit code ${i.exitCode}`})]})]})}function DT({text:e}){let[t,n]=(0,U.useState)(!1);return(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),"aria-expanded":t,"aria-label":`Thought`,className:`flex min-w-0 max-w-full items-center gap-1.5 hover:text-foreground`,children:[(0,W.jsx)(`span`,{className:`truncate italic`,children:wT(e)}),(0,W.jsx)(Xe,{className:L(`h-3.5 w-3.5 shrink-0 transition-transform`,t&&`rotate-90`),"aria-hidden":!0})]}),t&&(0,W.jsx)(`div`,{className:`mt-1 italic`,children:(0,W.jsx)(o,{text:e,compact:!0})})]})}function OT({call:e,word:t,since:n}){return(0,W.jsxs)(`div`,{role:`status`,className:`flex min-w-0 flex-1 items-center gap-2 font-sans text-sm text-muted-foreground`,children:[(0,W.jsx)(CT,{}),(0,W.jsx)(`span`,{className:`morph-in flex min-w-0 items-center gap-2`,children:e?(0,W.jsx)(ET,{...e,live:{since:n}}):(0,W.jsxs)(W.Fragment,{children:[t!==void 0&&(0,W.jsx)(`span`,{className:`text-shimmer`,children:t}),n!==void 0&&(0,W.jsx)(ST,{since:n})]})},e?e.id??`${e.label} ${e.detail??``}`:t)]})}function kT({steps:e,lead:t}){let[n,r]=(0,U.useState)(!1),i=dn().showThinking===!0?e:e.filter(e=>e.type===`action`),a=e.filter(e=>e.type===`action`);if(a.length===0)return null;let o=yT(a.length),s=i.length===1?i[0]:void 0;return s?.type===`action`&&!t?(0,W.jsx)(`div`,{className:`min-w-0 flex-1 font-sans text-sm text-muted-foreground`,children:(0,W.jsx)(ET,{...s})}):(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 font-sans text-sm text-muted-foreground`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>r(e=>!e),"aria-expanded":n,"aria-label":o,className:`flex items-center gap-1.5 hover:text-foreground`,children:[(0,W.jsx)(`span`,{className:`min-w-0 truncate text-left`,children:o}),(0,W.jsx)(Xe,{className:L(`h-3.5 w-3.5 shrink-0 transition-transform`,n&&`rotate-90`),"aria-hidden":!0})]}),n&&(0,W.jsxs)(`div`,{className:`mt-1.5 flex flex-col divide-y divide-border rounded-lg border border-border`,children:[t&&(0,W.jsx)(`div`,{className:`px-2 py-1.5`,children:t}),i.map((e,t)=>(0,W.jsx)(`div`,{className:`px-2 py-1.5`,children:e.type===`action`?(0,W.jsx)(ET,{...e}):(0,W.jsx)(DT,{text:e.text})},t))]})]})}var AT=`Starting session`;function jT({projectId:e,projectName:t,onAgentStarted:n,files:r,context:i,addContext:a,removeContext:o,toggleContext:s}){let[c,l]=(0,U.useState)(null),[u,d]=(0,U.useState)(null),{busy:f,cloning:p,error:m,reset:h,start:g}=Fa(e),_=(0,U.useRef)(null),v=dn(),y=Ba(e),b=$e(),x=Fe(),S=x&&(y===null||y.address!==void 0)?b.find(e=>e.id===x):void 0,w=y!==null&&!y.startHook&&!S,T=S?[]:Va(y?.commands??[]),E=Na(T),D=S?!0:y?.gitHost??!0,k=S?!0:y?.remote??!0,A=O(v.publish,D,k),j=S?void 0:y?.startFrom,M=v.startFrom?.[e]??`main`,N=fn(),P=t=>{let{[e]:n,...r}=v.startFrom??{};cn({startFrom:t===`local`?{...r,[e]:`local`}:r})},ee=v.driver,F=qe(S?null:()=>pr(e,ee),null,[e,ee,S===void 0]),te=qe(rr,[],[]),ne=new Set(te.map(e=>e.path)),I=[...i].filter(e=>!ne.has(e)),re=te.filter(t=>t.id!==e),L=re.filter(e=>i.has(e.path)).length,ie=[L>0?`${L} project${L>1?`s`:``}`:null,I.length>0?`${I.length} file${I.length>1?`s`:``}`:null].filter(Boolean).join(` · `);return(0,W.jsxs)(`form`,{onSubmit:e=>e.preventDefault(),className:`relative mx-auto w-full max-w-3xl p-2`,children:[(0,W.jsx)(oT,{ref:_,files:r,addContext:a,removeContext:o,aboveControls:t?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Zw,{icon:(0,W.jsx)(Mr,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),children:t}),j&&N&&(0,W.jsx)(cT,{main:j.main,local:j.local,pick:M,onPick:P,busy:f})]}):null,belowControls:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(qa,{otherProjects:re,context:i,contextFiles:I,summary:ie,busy:f,onToggle:s}),(0,W.jsx)(Ga,{publish:A,picks:C(D,k),onPublish:e=>cn({publish:e}),cleanup:E?v.postMergeCleanup??!1:void 0,onCleanup:e=>cn({postMergeCleanup:e}),busy:f})]}),onSubmit:async t=>{if(f)return;l(AT),d(S?.label??null);let r=await g(e,Ua(t,i),{...ja(v),...Pa(v,T),...j&&M===`local`?{base:j.local}:{},...S?{machine:S.id}:{}});l(null),r&&(n?.(t,r.agentId,S?.label),_.current?.clear())},onPromptChange:e=>{!e.trim()&&c&&l(null),m&&h()},onPreset:(e,t)=>{h(),l(t?`${e} loaded over your draft — undo (⌘Z) brings the draft back`:`${e} loaded — review or edit, then Start`)},busy:f,canSubmit:!w,submitLabel:`Start agent`,submitBusyLabel:`Starting…`}),m&&(0,W.jsx)(MT,{children:m}),c===AT&&!m?(0,W.jsxs)(`p`,{role:`status`,className:`absolute inset-x-2 bottom-full flex items-center gap-2 px-1.5 pb-1 text-sm text-muted-foreground`,children:[(0,W.jsx)(CT,{}),(0,W.jsx)(`span`,{className:`text-shimmer`,children:p&&u?`Cloning ${t??`this project`} on ${u}, the first time only`:c})]}):c&&!m&&(0,W.jsx)(`p`,{role:`status`,className:`mt-2 text-xs text-muted-foreground`,children:c}),F?.problems.map(e=>(0,W.jsx)(MT,{children:e},e)),F?.warnings.map(e=>(0,W.jsx)(`p`,{role:`alert`,className:`mt-2 text-xs text-warning`,children:e},e)),w&&(0,W.jsxs)(MT,{children:[`This project has no start hook. Add a `,(0,W.jsx)(`code`,{className:`font-mono`,children:`start:`}),` line to`,` `,(0,W.jsx)(`code`,{className:`font-mono`,children:`.openagent/hooks.yml`}),`.`]})]})}function MT({children:e}){return(0,W.jsxs)(`p`,{role:`alert`,className:`mt-2 flex items-start gap-2 rounded-md border border-danger/40 bg-danger/10 px-3 py-2 text-sm text-danger`,children:[(0,W.jsx)(xr,{className:`mt-0.5 h-4 w-4 shrink-0`,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`min-w-0 [overflow-wrap:anywhere]`,children:e})]})}function NT(e){let t=RT(e);return t.length>0&&!t.some(e=>e.kind===`end`)}function PT(e){let t=RT(e).find(e=>e.kind===`end`);if(!(!t||t.kind!==`end`))return{ok:t.ok,stopped:t.stopped===!0,...t.waiting===!0?{waiting:!0}:{},...t.detail===void 0?{}:{detail:t.detail}}}function FT(e){if(e!==`running`)return{ok:e===`done`,stopped:e===`stopped`,...e===`waiting`?{waiting:!0}:{}}}function IT(e){let t;for(let n of e){if(n.kind!==`driver`||n.event.type!==`action`)continue;let e=/^run (https?:\/\/\S+)$/.exec(n.event.label);e&&(t=e[1])}return t}function LT(e){let t;for(let n of e){if(n.kind!==`driver`||n.event.type!==`action`)continue;let e=/^cloud (https:\/\/claude\.ai\/code\/(session_[A-Za-z0-9]+)\S*)$/.exec(n.event.label);e&&(t={url:e[1],id:e[2]})}return t}function RT(e){let t=0,n=!1;for(let r=e.length-1;r>=0;r--){let i=e[r]?.kind;if(i===`session`){t=r;break}if(i===`end`&&n){t=r+1;break}i===`driver`&&(n=!0)}return e.slice(t)}function zT(e){let t=e?.sessionLink,n=e?.sessionId;return!t||!n||!t.includes(n)?null:{href:t,label:`Open session (${n}) ↗`}}function BT(e){let t=e?.sessionId;if(!t)return null;let n=e.workspace;if(!n)return t;let r=`'${n.replaceAll(`'`,`'\\''`)}'`;return`mkdir -p ${r} && cd ${r} && claude --resume ${t}`}function VT(){return qe(()=>Wt(),[],[])}function HT(e){let t=VT();return e&&!t.some(t=>t.bin===e)?[...t,{bin:e,label:e}]:t}function UT({busy:e}){let t=dn().editor,n=HT(t);return(0,W.jsxs)(M,{children:[(0,W.jsx)(v,{children:`Preferred editor`}),(0,W.jsxs)(F,{disabled:e,closeOnClick:!1,onClick:()=>cn({editor:``}),className:`items-start`,children:[(0,W.jsx)(Se,{className:L(`mt-0.5 h-3.5 w-3.5 shrink-0`,t?`opacity-0`:`opacity-100`)}),(0,W.jsx)(Ne,{label:`Default`,description:`$OPENAGENT_EDITOR, or code`})]}),n.map(n=>(0,W.jsxs)(F,{disabled:e,closeOnClick:!1,onClick:()=>cn({editor:n.bin}),className:`items-start`,children:[(0,W.jsx)(Se,{className:L(`mt-0.5 h-3.5 w-3.5 shrink-0`,t===n.bin?`opacity-100`:`opacity-0`)}),(0,W.jsx)(Ne,{label:n.label,description:n.bin})]},n.bin))]})}var WT=`font-medium text-foreground`;function GT({projectId:e,open:t,onOpenChange:n,onRemoved:r}){let[i,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(null),{busy:c,error:l,run:u,reset:d}=tt();(0,U.useEffect)(()=>{t&&(a(!1),d())},[t,d]);let f=()=>{n(!1),queueMicrotask(r)};return(0,W.jsx)(he,{open:t,onOpenChange:e=>{c||o||n(e)},children:(0,W.jsxs)(yt,{children:[(0,W.jsx)(p,{className:`fixed inset-0 z-50 bg-black/40 backdrop-blur-[1px]`}),(0,W.jsx)(xe,{className:`fixed left-1/2 top-1/2 z-50 max-h-[calc(100vh-2rem)] w-[min(28rem,calc(100vw-2rem))] -translate-x-1/2 -translate-y-1/2 overflow-y-auto rounded-lg border border-border bg-card p-5 text-card-foreground shadow-lg`,children:o?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ye,{className:`text-sm font-semibold`,children:`Project removed`}),(0,W.jsx)(_t,{className:`mt-2 text-xs leading-relaxed text-muted-foreground`,children:`It left the dashboard’s list. This is what happened to OpenAgent’s files in the folder.`}),(0,W.jsx)(KT,{title:`Deleted`,empty:`Nothing: there was nothing of OpenAgent’s to delete.`,lines:o.removed}),o.kept.length>0&&(0,W.jsx)(KT,{title:`Kept`,lines:o.kept.map(e=>`${e.path}: ${e.reason}`)}),o.failed.length>0&&(0,W.jsx)(KT,{title:`Could not be cleaned`,lines:o.failed,danger:!0}),(0,W.jsx)(`div`,{className:`mt-4 flex justify-end`,children:(0,W.jsx)(z,{size:`sm`,onClick:f,children:`Done`})})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ye,{className:`text-sm font-semibold`,children:`Remove this project?`}),(0,W.jsxs)(_t,{className:`mt-2 text-xs leading-relaxed text-muted-foreground`,children:[`It leaves the dashboard’s list, and its scheduler stops unless you set it to keep running.`,` `,i?(0,W.jsx)(W.Fragment,{children:`Your files and your commits stay.`}):(0,W.jsxs)(W.Fragment,{children:[`Nothing in the folder is deleted: your files and your commits stay, and so do OpenAgent’s own files there (`,(0,W.jsx)(`span`,{className:WT,children:`.openagent`}),`, `,(0,W.jsx)(`span`,{className:WT,children:`.branches`}),`,`,` `,(0,W.jsx)(`span`,{className:WT,children:`.agent-runner`}),` and the branch `,(0,W.jsx)(`span`,{className:WT,children:`agent-data`}),` with the agents’ records).`]}),` `,`Add the folder again to bring the project back.`]}),(0,W.jsxs)(`label`,{className:`mt-3 flex cursor-pointer items-start gap-2 text-xs text-foreground`,children:[(0,W.jsx)(pe,{checked:i,onCheckedChange:e=>a(e===!0),disabled:c,className:`mt-0.5`}),(0,W.jsx)(`span`,{children:`Also delete OpenAgent’s files in this folder`})]}),i&&(0,W.jsxs)(`div`,{className:`mt-2 rounded-md border border-border p-3 text-xs leading-relaxed text-muted-foreground`,children:[(0,W.jsxs)(`p`,{children:[`This deletes, on this machine: the agents’ checkouts in `,(0,W.jsx)(`span`,{className:WT,children:`.branches`}),`, the folders`,` `,(0,W.jsx)(`span`,{className:WT,children:`.openagent`}),` (with `,(0,W.jsx)(`span`,{className:WT,children:`hooks.yml`}),`, the project’s start lines) and`,` `,(0,W.jsx)(`span`,{className:WT,children:`.agent-runner`}),`, and the local branch `,(0,W.jsx)(`span`,{className:WT,children:`agent-data`}),`. A tool that worked in the project removes its own files too: the scheduler’s state, the subagent settings.`]}),(0,W.jsxs)(`p`,{className:`mt-2`,children:[(0,W.jsx)(`span`,{className:WT,children:`The agents’ conversations go with that branch.`}),` If you never shared the records, this is their only copy. If you did, what has not reached the remote yet is lost. An agent that waits for your answer cannot be continued after this.`]}),(0,W.jsxs)(`p`,{className:`mt-2`,children:[`It never touches the remote, your files, your commits, a branch with work on it, or a file git tracks. A checkout with uncommitted work stays, and so does `,(0,W.jsx)(`span`,{className:WT,children:`.agent-runner/config.yml`}),` if you wrote one. A scheduler you set to keep running is not stopped: its files, the records and `,(0,W.jsx)(`span`,{className:WT,children:`.openagent`}),` then stay. Stop it, add the folder again and remove it once more to delete them. You see the list of what went and what stayed right after.`]})]}),l&&(0,W.jsx)(`p`,{className:`mt-2 text-xs text-danger`,children:l}),(0,W.jsxs)(`div`,{className:`mt-4 flex justify-end gap-2`,children:[(0,W.jsx)(ie,{render:(0,W.jsx)(z,{variant:`outline`,size:`sm`,disabled:c,children:`Cancel`})}),(0,W.jsx)(z,{variant:`destructive`,size:`sm`,disabled:c,onClick:()=>{u(()=>sr(e,i),`Could not remove the project.`).then(e=>{if(!e.ok)return;let t=e.value.cleanup;t?s(t):f()})},className:L(c&&`cursor-progress`),children:c?`Removing…`:i?`Remove and delete`:`Remove`})]})]})})]})})}function KT({title:e,lines:t,empty:n,danger:r=!1}){return(0,W.jsxs)(`div`,{className:`mt-3 text-xs`,children:[(0,W.jsx)(`p`,{className:L(`font-medium`,r?`text-danger`:`text-foreground`),children:e}),t.length===0?(0,W.jsx)(`p`,{className:`mt-1 text-muted-foreground`,children:n}):(0,W.jsx)(`ul`,{className:`mt-1 space-y-0.5 text-muted-foreground`,children:t.map(e=>(0,W.jsx)(`li`,{className:`break-words`,children:e},e))})]})}function qT({projectId:e,agentId:t,events:n,label:r,retainedWorktree:i=!1,onWorktreeRemoved:a,onDeleted:o,onProjectRemoved:s,onOpenSkills:c,details:u,size:f}){let p=!!t,m=NT(n),_=Nt(n),v=zT(_),y=m||i,b=BT(_),[x,S]=(0,U.useState)(!1),C=(0,U.useRef)(void 0);(0,U.useEffect)(()=>()=>clearTimeout(C.current),[]);let T=()=>{b&&navigator.clipboard?.writeText(b).then(()=>{S(!0),clearTimeout(C.current),C.current=setTimeout(()=>S(!1),1500)})},[E,D]=(0,U.useState)(0),O=qe(()=>Nn(e),null,[e,E],`previous`),j=qe(p?null:()=>Pn(e),null,[e,p,E]),[M,N]=(0,U.useState)(!1),[P,ee]=(0,U.useState)(0),te=qe(p?null:()=>cr(e),null,[e,p,E,P],`previous`),[ne,I]=(0,U.useState)(!1),[L,ie]=(0,U.useState)(!1),ae=()=>void se(()=>lr(e,!1),`Could not stop sharing.`).then(e=>{e.ok&&ee(e=>e+1)}),{busy:oe,error:R,run:se}=tt(),[ce,le]=(0,U.useState)(!1);(0,U.useEffect)(()=>le(!1),[t]);let ue=oe||ce&&m,[fe,pe]=(0,U.useState)(!1),me=n=>se(()=>Zn(e,n,t??void 0),`Failed to open.`),he=()=>void se(()=>Hn(e,t??void 0),`Could not stop the session.`).then(e=>{e.ok&&le(!0)}),ge=()=>{t&&se(()=>Jn(e,t),`Could not remove the worktree.`).then(e=>{e.ok&&a?.()})},_e=r?.trim()||t,ve=p?`Session actions`:`Project actions`,ye=i&&!m&&!!t,z=!!o&&!m&&!!t,xe=O&&(0,W.jsxs)(F,{render:(0,W.jsx)(`a`,{href:O.url,target:`_blank`,rel:`noreferrer`}),children:[(0,W.jsx)(kr,{className:`h-3.5 w-3.5 shrink-0`}),` Open on `,O.name]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(l,{children:[p?(0,W.jsxs)(d,{type:`button`,"aria-label":ve,title:r,className:`flex min-w-0 items-center gap-1 rounded px-1 py-0.5 text-left text-xs hover:bg-muted data-[popup-open]:bg-muted`,children:[r?(0,W.jsx)(`span`,{className:`min-w-0 truncate font-medium text-foreground`,children:r}):(0,W.jsx)(`span`,{"data-testid":`title-placeholder`,className:`h-3 w-40 max-w-full rounded bg-muted`}),(0,W.jsx)(it,{className:`h-3 w-3 shrink-0 text-muted-foreground`,"aria-hidden":!0})]}):(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(d,{type:`button`,"aria-label":ve,className:gt({variant:`outline`,size:`icon-sm`})}),children:(0,W.jsx)(Or,{className:`h-3.5 w-3.5`})}),(0,W.jsx)(h,{children:ve})]}),(0,W.jsxs)(A,{align:p?`start`:`end`,className:`min-w-[14rem]`,children:[u&&(0,W.jsxs)(F,{onClick:u.onToggle,children:[(0,W.jsx)(Rr,{className:`h-3.5 w-3.5 shrink-0`}),` `,u.open?`Hide details`:`Show details`]}),!p&&xe,c&&!p&&(0,W.jsxs)(F,{onClick:c,children:[(0,W.jsx)(Xr,{className:`h-3.5 w-3.5 shrink-0`}),` Skills…`]}),j&&(0,W.jsxs)(F,{onClick:()=>N(!0),children:[(0,W.jsx)(Tr,{className:`h-3.5 w-3.5 shrink-0`}),` Create a repository on `,j.name,`…`]}),te===`kept`&&(0,W.jsxs)(F,{onClick:()=>I(!0),children:[(0,W.jsx)(Tr,{className:`h-3.5 w-3.5 shrink-0`}),` Share the agents’ records to the remote…`]}),te===`origin`&&(0,W.jsxs)(F,{disabled:oe,onClick:ae,children:[(0,W.jsx)(wr,{className:`h-3.5 w-3.5 shrink-0`}),` Stop sharing the agents’ records`]}),(0,W.jsxs)(F,{disabled:oe,onClick:()=>void me(`files`),title:t&&!y?`This session no longer has its own checkout`:void 0,children:[(0,W.jsx)(Ar,{className:`h-3.5 w-3.5 shrink-0`}),` `,t?y?`Open session's folder`:`Open project folder`:`Open folder`]}),(0,W.jsxs)(k,{children:[(0,W.jsxs)(xt,{disabled:oe,children:[(0,W.jsx)(Dr,{className:`h-3.5 w-3.5 shrink-0`}),` Open in editor`]}),(0,W.jsxs)(re,{className:`min-w-[15rem]`,children:[(0,W.jsxs)(F,{disabled:oe,onClick:()=>void me(`editor`),children:[(0,W.jsx)(Dr,{className:`h-3.5 w-3.5 shrink-0`}),` `,t?`Open this session's checkout`:`Open in your editor`]}),(0,W.jsx)(w,{}),(0,W.jsx)(UT,{busy:oe})]})]}),p&&xe,v&&(0,W.jsxs)(F,{render:(0,W.jsx)(`a`,{href:v.href,target:`_blank`,rel:`noreferrer`}),children:[(0,W.jsx)(kr,{className:`h-3.5 w-3.5 shrink-0`}),` `,v.label.replace(` ↗`,``)]}),b&&_?.sessionId&&(0,W.jsxs)(F,{closeOnClick:!1,onClick:T,title:b,children:[x?(0,W.jsx)(Se,{className:`h-3.5 w-3.5 shrink-0 text-success`}):(0,W.jsx)(be,{className:`h-3.5 w-3.5 shrink-0`}),(0,W.jsx)(`span`,{className:`flex-1`,children:x?`Copied`:_.workspace?`Copy resume command`:`Copy session id`}),(0,W.jsx)(`span`,{className:`ml-auto pl-3 font-mono text-[10px] text-muted-foreground`,children:_.sessionId.slice(0,8)})]}),(m||ye||z)&&(0,W.jsx)(w,{}),m&&(0,W.jsxs)(F,{disabled:ue,onClick:()=>void he(),children:[(0,W.jsx)(ti,{className:`h-3 w-3 shrink-0 fill-current`}),` `,ue?`Stopping…`:`Stop agent`]}),ye&&(0,W.jsxs)(F,{disabled:oe,onClick:()=>ge(),children:[(0,W.jsx)(jr,{className:`h-3.5 w-3.5 shrink-0`}),` `,(0,W.jsx)(`span`,{className:`flex-1`,children:`Remove worktree`}),f&&(0,W.jsx)(`span`,{className:`ml-auto pl-3 text-[10px] text-muted-foreground`,children:f})]}),z&&(0,W.jsxs)(F,{onClick:()=>pe(!0),className:`text-danger`,children:[(0,W.jsx)(ri,{className:`h-3.5 w-3.5 shrink-0`}),` Delete session`]}),s&&!p&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(w,{}),(0,W.jsxs)(F,{onClick:()=>ie(!0),className:`text-danger`,children:[(0,W.jsx)(ri,{className:`h-3.5 w-3.5 shrink-0`}),` Remove project…`]})]}),R&&(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-xs text-danger`,children:R})]})]}),j&&(0,W.jsx)(de,{open:M,onOpenChange:N,title:`Create a private repository on ${j.name}?`,body:(0,W.jsxs)(W.Fragment,{children:[`This creates the private repository `,(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:j.repository}),` on your`,` `,j.name,` account and pushes this project to it. The project’s code leaves this machine.`]}),confirmLabel:`Create and push`,confirmBusyLabel:`Creating…`,fallbackError:`Could not create the repository.`,destructive:!1,onConfirm:()=>nr(e),onSuccess:()=>D(e=>e+1)}),te===`kept`&&(0,W.jsx)(de,{open:ne,onOpenChange:I,title:`Share the agents’ records to the remote?`,body:(0,W.jsxs)(W.Fragment,{children:[`This pushes a branch `,(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`agent-data`}),` to this project’s remote, and keeps pushing as agents work. It holds what you asked each agent and what it answered, under your git email. Everyone who can read the remote can read it.`]}),confirmLabel:`Share`,confirmBusyLabel:`Sharing…`,fallbackError:`Could not share the records.`,destructive:!1,onConfirm:()=>lr(e,!0),onSuccess:()=>ee(e=>e+1)}),s&&!p&&(0,W.jsx)(GT,{projectId:e,open:L,onOpenChange:ie,onRemoved:s}),o&&t&&(0,W.jsx)(de,{open:fe,onOpenChange:pe,title:`Delete this agent?`,body:(0,W.jsxs)(W.Fragment,{children:[`Deleting `,(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:_e}),` removes it from the dashboard for good — its history can’t be recovered. Its branch and any pull request stay in git.`]}),confirmLabel:`Delete`,confirmBusyLabel:`Deleting…`,fallbackError:`Could not delete the agent.`,onConfirm:()=>Yn(e,t),onSuccess:o})]})}function JT({docs:e,loaded:t}){let[n,r]=(0,U.useState)(0);if(!t)return(0,W.jsx)(`p`,{className:`p-4 text-sm text-muted-foreground`,children:`Loading…`});if(e.length===0)return(0,W.jsx)(`p`,{className:`p-4 text-sm text-muted-foreground`,children:`No PLAN/TODO docs yet.`});let i=e[Math.min(n,e.length-1)];return(0,W.jsxs)(`div`,{className:`flex min-h-0 flex-auto flex-col`,children:[(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1 border-b border-border p-2`,children:e.map((e,t)=>(0,W.jsx)(z,{variant:`ghost`,size:`sm`,className:L(`h-7 text-xs`,t===n&&`bg-accent text-accent-foreground`),onClick:()=>r(t),children:e.name},e.name))}),(0,W.jsx)(ce,{className:`min-h-0 flex-auto`,children:(0,W.jsx)(`div`,{className:`p-4`,children:(0,W.jsx)(o,{text:i.content})})})]})}var YT=class extends U.Component{state={error:null};static getDerivedStateFromError(e){return{error:e instanceof Error?e.message:String(e)}}render(){return this.state.error===null?this.props.children:(0,W.jsxs)(`div`,{role:`alert`,className:`p-6 text-sm text-danger`,children:[`The `,this.props.label,` failed: `,this.state.error]})}};function XT({package:e,label:t,children:n}){let r=Ge(e);return(0,W.jsx)(ot.Provider,{value:r,children:(0,W.jsx)(YT,{label:t,children:n})})}function ZT(e,t){return e.flatMap(e=>{let n=t.find(t=>t.id===e);return n?[{id:n.id,name:n.name,gitHost:n.gitHost}]:[]})}function QT({page:e,projects:t,path:n}){let r=e.Page;return(0,W.jsx)(XT,{package:e.package,label:`${e.label} page`,children:(0,W.jsx)(r,{projects:ZT(e.projects,t),path:n})},e.segment)}function $T(e){let t=(0,U.useId)();return`${e??t}`}var eE=typeof window<`u`?U.useLayoutEffect:U.useEffect;function tE(e){let t=(0,U.useRef)(e);return eE(()=>{t.current=e},[e]),(0,U.useCallback)((...e)=>t.current?.(...e),[t])}function nE(...e){return tE(t=>{e.forEach(e=>{if(e)switch(typeof e){case`function`:e(t);break;case`object`:e.current=t;break}})})}function rE(e,t){return t?e*2+1:e+1}function iE(e,t){return t?e*2-1:e}function aE(e,t,n){let r=rE(e,n);return t===void 0?`${r} / -1`:`${r} / span ${iE(t,n)}`}function oE(e){return`${e*2} / span 1`}function sE({crossCount:e,crossSpan:t,crossStart:n,hasGutters:r}){let i=t===void 0?e:n+t;if(n===0&&i===e)return`1 / -1`;let a=rE(n,r),o=rE(i-1,r)+1;return r&&(n>0&&a--,i<e&&o++),`${a} / ${o}`}function cE(e,t){return Number.isInteger(e)&&e>=1&&e<t}function $(e,t=`Assertion error`){if(!e)throw Error(t)}var lE=(0,U.createContext)(null);function uE(){let e=(0,U.useContext)(lE);return $(e,`Grid Context not found; did you render a Cell or Gridline outside of a Grid?`),e}function dE({children:e,className:t,column:n,columnSpan:r=1,elementRef:i,id:a,row:o,rowSpan:s=1,style:c,...l}){let u=$T(a),{gutters:d,registerCell:f}=uE(),p=(0,U.useRef)(null),m=nE(p,i);return eE(()=>{let e=p.current;if(e!==null)return f({column:n,columnSpan:r,element:e,id:u,row:o,rowSpan:s})},[n,r,u,f,o,s]),(0,W.jsx)(`div`,{...l,className:t,"data-cell":!0,"data-testid":u,id:u,ref:m,style:{overflow:`auto`,...c,minHeight:0,minWidth:0,gridColumn:aE(n,r,d.column),gridRow:aE(o,s,d.row)},children:e})}dE.displayName=`Cell`;var fE;function pE(){return fE===void 0&&(fE=typeof matchMedia==`function`&&!!matchMedia(`(pointer:coarse)`).matches),fE}function mE({expandHitTargets:e,axis:t,rect:n}){let r=e?pE()?t.resizeTargetMinimumSize.coarse:t.resizeTargetMinimumSize.fine:0;if(n.width<r){let e=r-n.width;n=new DOMRect(n.x-e/2,n.y,n.width+e,n.height)}if(n.height<r){let e=r-n.height;n=new DOMRect(n.x,n.y-e/2,n.width,n.height+e)}return n}function hE({axis:e,cells:t,index:n,rect:r}){let i=[r];for(let r of t){let t=e===`column`?r.column:r.row,a=e===`column`?r.columnSpan:r.rowSpan;if(t>=n||t+a<=n)continue;let o=r.element.getBoundingClientRect(),s=e===`column`?o.top:o.left,c=e===`column`?o.bottom:o.right;c<=s||(i=i.flatMap(t=>{let n=e===`column`?t.top:t.left,r=e===`column`?t.bottom:t.right;if(s>=r||c<=n)return[t];let i=[],a=(n,r)=>{i.push(e===`column`?new DOMRect(t.x,n,t.width,r-n):new DOMRect(n,t.y,r-n,t.height))};return n<s&&a(n,s),r>c&&a(c,r),i}))}return i}function gE({axis:e,cells:t,crossTrackCount:n,expandHitTargets:r,resizeAxis:i,axisSize:a,includeDisabled:o,separatorPlacements:s}){let{items:c,separators:l}=i,u=c.length,d=-1,f=-1,p=0;if(c.forEach((e,t)=>{e.constraintProps.disabled||(p++,d===-1&&(d=t),f=t)}),!o&&p<2)return[];let m=e=>o||e>d&&e<=f,h=[],g=(e,t,n)=>({axis:i,axisSize:a,items:[c[e-1],c[e]],rect:t,separator:n}),_=(n,r)=>{let i;for(let a of t){let t=e===`column`?a.row:a.column,o=e===`column`?a.rowSpan:a.columnSpan;if(r===`start`?t===n:t+o-1===n){let t=a.element.getBoundingClientRect();if(r===`start`){let n=e===`column`?t.top:t.left;i=i===void 0?n:Math.min(i,n)}else{let n=e===`column`?t.bottom:t.right;i=i===void 0?n:Math.max(i,n)}}}return i},v=new Set;for(let a of l){let c=s.get(a);if(!c||c.index<1||c.index>=u||(v.add(c.index),!o&&(a.disabled||a.element.hasAttribute(`aria-disabled`)))||!m(c.index))continue;let l=a.element.getBoundingClientRect(),{crossSpan:d,crossStart:f}=c,p=d===void 0?n:f+d,y=e===`column`?l.top:l.left,b=e===`column`?l.bottom:l.right;if(f>0){let e=_(f-1,`end`);e!==void 0&&e<y&&(y=e)}if(p<n){let e=_(p,`start`);e!==void 0&&e>b&&(b=e)}l=e===`column`?new DOMRect(l.x,y,l.width,b-y):new DOMRect(y,l.y,b-y,l.height),l=mE({expandHitTargets:r,axis:i,rect:l}),o?h.push(g(c.index,l,a)):hE({axis:e,cells:t,index:c.index,rect:l}).forEach(e=>{h.push(g(c.index,e,a))})}let y=(n,a)=>{hE({axis:e,cells:t,index:n,rect:mE({expandHitTargets:r,axis:i,rect:a})}).forEach(e=>{h.push(g(n,e))})},b=Array.from({length:n},()=>Array(u));for(let r of t){let[t,i,a,o]=e===`column`?[r.column,r.columnSpan,r.row,r.rowSpan]:[r.row,r.rowSpan,r.column,r.columnSpan];for(let e=Math.max(0,a);e<Math.min(n,a+o);e++)for(let n=Math.max(0,t);n<Math.min(u,t+i);n++)b[e][n]??=r}let x=new Map,S=t=>{let n=x.get(t);if(!n){let r=t.element.getBoundingClientRect();n=e===`column`?{crossEnd:r.bottom,crossStart:r.top,end:r.right,start:r.left}:{crossEnd:r.right,crossStart:r.left,end:r.bottom,start:r.top},x.set(t,n)}return n},C=({crossEnd:t,crossStart:n,end:r,start:i})=>e===`column`?new DOMRect(i,n,r-i,t-n):new DOMRect(n,i,t-n,r-i);for(let e=1;e<u;e++){if(v.has(e)||!m(e))continue;let t;for(let r=0;r<n;r++){let n=b[r][e-1],i=b[r][e],a;if((n||i)&&n!==i){let e=n?S(n):void 0,t=i?S(i):void 0,r=e?.end??t.start,o=t?.start??e.end,s=Math.max(e?.crossStart??-1/0,t?.crossStart??-1/0),c=Math.min(e?.crossEnd??1/0,t?.crossEnd??1/0);a={crossEnd:Math.max(s,c),crossStart:s,end:Math.max(r,o),start:Math.min(r,o)}}a?t=t?{crossEnd:Math.max(t.crossEnd,a.crossEnd),crossStart:Math.min(t.crossStart,a.crossStart),end:Math.max(t.end,a.end),start:Math.min(t.start,a.start)}:a:t&&=(y(e,C(t)),void 0)}t&&y(e,C(t))}return h}function _E(e){let t=parseFloat(e??``);return Number.isFinite(t)?t:0}function vE({axis:e,element:t,gutterSizes:n,hasGutters:r,layout:i,trackIds:a}){let o=a.length,s=r?o*2-1:o,c=t.ownerDocument.defaultView?.getComputedStyle(t),l=e===`column`?c?.gridTemplateColumns:c?.gridTemplateRows;if(l){let e=l.trim().split(/\s+/);if(e.length===s&&e.every(e=>/^-?[\d.]+px$/.test(e))){let t=a.map((t,n)=>_E(e[r?n*2:n]));return{availableSize:t.reduce((e,t)=>e+t,0),trackSizes:t}}}let u=e===`column`?t.offsetWidth:t.offsetHeight,d=e===`column`?_E(c?.paddingLeft)+_E(c?.paddingRight)+_E(c?.borderLeftWidth)+_E(c?.borderRightWidth):_E(c?.paddingTop)+_E(c?.paddingBottom)+_E(c?.borderTopWidth)+_E(c?.borderBottomWidth),f=_E(e===`column`?c?.columnGap:c?.rowGap),p=n.reduce((e,t)=>e+t,0),m=Math.max(0,u-d-f*Math.max(0,s-1)-p);return{availableSize:m,trackSizes:a.map(e=>i&&i[e]!==void 0?i[e]/100*m:m/o)}}function yE(e){switch(typeof e){case`number`:return[e,`px`];case`string`:{let t=parseFloat(e);return e.endsWith(`%`)?[t,`%`]:e.endsWith(`px`)?[t,`px`]:e.endsWith(`rem`)?[t,`rem`]:e.endsWith(`em`)?[t,`em`]:e.endsWith(`vh`)?[t,`vh`]:e.endsWith(`vw`)?[t,`vw`]:[t,`%`]}}}var bE=class{#e={};addListener(e,t){let n=this.#e[e];return n===void 0?this.#e[e]=[t]:n.includes(t)||n.push(t),()=>{this.removeListener(e,t)}}emit(e,t){let n=this.#e[e];if(n!==void 0)if(n.length===1)n[0].call(null,t);else{let e=!1,r=null,i=Array.from(n);for(let n=0;n<i.length;n++){let a=i[n];try{a.call(null,t)}catch(t){r===null&&(e=!0,r=t)}}if(e)throw r}}removeAllListeners(){this.#e={}}removeListener(e,t){let n=this.#e[e];if(n!==void 0){let e=n.indexOf(t);e>=0&&n.splice(e,1)}}},xE={cursorFlags:0,state:`inactive`},SE=new bE;function CE(){return xE}function wE(e){return SE.addListener(`change`,e)}function TE(e,t=[],n,r=!1){let i=xE,a={...xE};a.cursorFlags=e,a.state===`active`&&(a.didPointerMove||=r,a.previews=t,n&&(a.previewLayoutMap=n)),xE=a,SE.emit(`change`,{prev:i,next:a})}function EE(e){let t=xE;xE=e,t.state===`active`&&e.state!==`active`&&t.didPointerMove&&t.hitRegions.forEach(({separator:e})=>{e&&e.element.ownerDocument.activeElement===e.element&&e.element.blur()}),SE.emit(`change`,{prev:t,next:e})}function DE(e){xE.state!==`active`||!xE.previews.some(t=>t.separator===e)||EE({...xE,previews:xE.previews.map(t=>t.separator===e?{...t}:t)})}function OE(e){if(xE.state===`inactive`)return!1;let t=xE.hitRegions.filter(t=>t.axis!==e),n=xE.state===`active`&&xE.previews.some(t=>t.axis===e);if(t.length===xE.hitRegions.length&&!n)return!1;if(t.length===0)EE({cursorFlags:0,state:`inactive`});else if(xE.state===`active`){let n=new Map(xE.initialLayoutMap),r=new Map(xE.previewLayoutMap);n.delete(e),r.delete(e),EE({...xE,cursorFlags:0,hitRegions:t,initialLayoutMap:n,previewLayoutMap:r,previews:xE.previews.filter(t=>t.axis!==e)})}else EE({...xE,hitRegions:t});return!0}var kE=e=>e,AE=()=>{},jE=1,ME=2,NE=4,PE=8,FE=3,IE=12,LE;function RE(){return LE===void 0&&(LE=!1,typeof window<`u`&&(window.navigator.userAgent.includes(`Chrome`)||window.navigator.userAgent.includes(`Firefox`))&&(LE=!0)),LE}function zE({cursorFlags:e,axes:t,state:n}){let r=0,i=0;switch(n){case`active`:case`hover`:t.forEach(e=>{if(!e.mutableState.disableCursor)switch(e.orientation){case`horizontal`:r++;break;case`vertical`:i++;break}})}if(!(r===0&&i===0)){switch(n){case`active`:if(e&&RE()){let t=(e&jE)!==0,n=(e&ME)!==0,r=(e&NE)!==0,i=(e&PE)!==0;if(t)return r?`se-resize`:i?`ne-resize`:`e-resize`;if(n)return r?`sw-resize`:i?`nw-resize`:`w-resize`;if(r)return`s-resize`;if(i)return`n-resize`}break}return RE()?r>0&&i>0?`move`:r>0?`ew-resize`:`ns-resize`:r>0&&i>0?`grab`:r>0?`col-resize`:`row-resize`}}var BE=new WeakMap;function VE(e){if(!e.defaultView||!e.adoptedStyleSheets)return;let{prevStyle:t,styleSheet:n}=BE.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&(Object.isExtensible(e.adoptedStyleSheets)?e.adoptedStyleSheets.push(n):e.adoptedStyleSheets=[...e.adoptedStyleSheets,n]));let r=CE();switch(r.state){case`active`:case`hover`:{let e=zE({cursorFlags:r.cursorFlags,axes:r.hitRegions.map(e=>e.axis),state:r.state}),i=`*, *:hover {cursor: ${e} !important; }`;if(t===i)return;t=i,e?n.cssRules.length===0?n.insertRule(i):n.replaceSync(i):n.cssRules.length===1&&n.deleteRule(0);break}case`inactive`:t=void 0,n.cssRules.length===1&&n.deleteRule(0);break}BE.set(e,{prevStyle:t,styleSheet:n})}function HE({axis:e}){let{layoutStrategy:t,orientation:n,items:r}=e;return t?t.calculateAvailableSize():r.reduce((e,t)=>(e+=n===`horizontal`?t.element.offsetWidth:t.element.offsetHeight,e),0)}function UE(e,t){let n=e.compareDocumentPosition(t);return n&Node.DOCUMENT_POSITION_DISCONNECTED?0:n&Node.DOCUMENT_POSITION_FOLLOWING?-1:n&Node.DOCUMENT_POSITION_PRECEDING?1:0}function WE(e,t){return Array.from(t).sort((t,n)=>{let r=e===`horizontal`?GE(t,n):KE(t,n);return r===0?UE(t.element,n.element):r})}function GE(e,t){let n=e.element.offsetLeft-t.element.offsetLeft;return n===0?e.element.offsetWidth-t.element.offsetWidth:n}function KE(e,t){let n=e.element.offsetTop-t.element.offsetTop;return n===0?e.element.offsetHeight-t.element.offsetHeight:n}function qE(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.ELEMENT_NODE}function JE(e,t){return{x:e.x>=t.left&&e.x<=t.right?0:Math.min(Math.abs(e.x-t.left),Math.abs(e.x-t.right)),y:e.y>=t.top&&e.y<=t.bottom?0:Math.min(Math.abs(e.y-t.top),Math.abs(e.y-t.bottom))}}function YE({orientation:e,rects:t,targetRect:n}){let r={x:n.x+n.width/2,y:n.y+n.height/2},i,a=Number.MAX_VALUE;for(let n of t){let{x:t,y:o}=JE(r,n),s=e===`horizontal`?t:o;s<a&&(a=s,i=n)}return $(i,`No rect found`),i}function XE({expandHitTargets:e=!0,axis:t,includeDisabled:n=!1}){if(t.layoutStrategy)return t.layoutStrategy.calculateHitRegions({expandHitTargets:e,axis:t,includeDisabled:n});let{element:r,orientation:i,items:a,separators:o}=t,s=WE(i,Array.from(r.children).filter(qE).filter(e=>!e.hasAttribute(`data-resize-preview`)).map(e=>({element:e}))).map(({element:e})=>e),c=[],l=!1,u=!1,d=-1,f,p=-1,m=0,h,g=[];{let e=-1;for(let t of s)t.hasAttribute(`data-panel`)&&(e++,t.hasAttribute(`data-disabled`)||(m++,d===-1&&(d=e),p=e))}if(n||m>1){let r=-1;for(let m of s)if(m.hasAttribute(`data-panel`)){r++;let o=a.find(e=>e.element===m);if(o){if(h){let a=h.element.getBoundingClientRect(),s=m.getBoundingClientRect(),_;if(u){let e=i===`horizontal`?new DOMRect(a.right,a.top,0,a.height):new DOMRect(a.left,a.bottom,a.width,0),t=i===`horizontal`?new DOMRect(s.left,s.top,0,s.height):new DOMRect(s.left,s.top,s.width,0);switch(g.length){case 0:_=[e,t];break;case 1:{let n=g[0];_=[n,YE({orientation:i,rects:[a,s],targetRect:n.element.getBoundingClientRect()})===a?t:e];break}default:_=g;break}}else _=g.length?g:[i===`horizontal`?new DOMRect(a.right,s.top,s.left-a.right,s.height):new DOMRect(s.left,a.bottom,s.width,s.top-a.bottom)];for(let i of _){let a=mE({expandHitTargets:e,axis:t,rect:`width`in i?i:i.element.getBoundingClientRect()});(n||!l&&!(r<=d||r>p))&&(f??=HE({axis:t}),c.push({axis:t,axisSize:f,items:[h,o],separator:`width`in i?void 0:i,rect:a})),l=!1}}u=!1,h=o,g=[]}}else if(m.hasAttribute(`data-separator`)){m.ariaDisabled!==null&&(l=!0);let e=o.find(e=>e.element===m);e?g.push(e):(h=void 0,g=[])}else u=!0}return c}function ZE(e,t){let n=getComputedStyle(e);return t*parseFloat(n.fontSize)}function QE(e,t){let n=getComputedStyle(e.ownerDocument.documentElement);return t*parseFloat(n.fontSize)}function $E(e){return e/100*window.innerHeight}function eD(e){return e/100*window.innerWidth}function tD({axisSize:e,itemElement:t,styleProp:n}){let r,[i,a]=yE(n);switch(a){case`%`:r=i/100*e;break;case`px`:r=i;break;case`rem`:r=QE(t,i);break;case`em`:r=ZE(t,i);break;case`vh`:r=$E(i);break;case`vw`:r=eD(i);break}return r}function nD(e){return parseFloat(e.toFixed(3))}function rD(e){let{items:t}=e,n=HE({axis:e});return n===0?t.map(e=>({groupResizeBehavior:e.constraintProps.groupResizeBehavior,collapsedSize:0,collapsible:e.constraintProps.collapsible===!0,defaultSize:void 0,disabled:e.constraintProps.disabled,minSize:0,maxSize:100,itemId:e.id})):t.map(e=>{let{element:t,constraintProps:r}=e,i=0;r.collapsedSize!==void 0&&(i=nD(tD({axisSize:n,itemElement:t,styleProp:r.collapsedSize})/n*100));let a;r.collapsedThreshold!==void 0&&(a=nD(tD({axisSize:n,itemElement:t,styleProp:r.collapsedThreshold})/n*100));let o;r.defaultSize!==void 0&&(o=nD(tD({axisSize:n,itemElement:t,styleProp:r.defaultSize})/n*100));let s=0;r.minSize!==void 0&&(s=nD(tD({axisSize:n,itemElement:t,styleProp:r.minSize})/n*100));let c=100;return r.maxSize!==void 0&&(c=nD(tD({axisSize:n,itemElement:t,styleProp:r.maxSize})/n*100)),{groupResizeBehavior:r.groupResizeBehavior,collapsedSize:i,collapsedThreshold:a,collapsible:r.collapsible===!0,defaultSize:o,disabled:r.disabled,minSize:s,maxSize:c,itemId:e.id}})}var iD=new Map,aD=new bE;function oD(e){iD=new Map(iD),iD.delete(e)}function sD(e,t){for(let[t]of iD)if(t.id===e)return t}function cD(e,t){for(let[t,n]of iD)if(t.id===e)return n;if(t)throw Error(`Could not find data for Group with id ${e}`)}function lD(){return iD}function uD(e,t){return aD.addListener(`axisChange`,n=>{n.axis.id===e&&t(n)})}function dD(e,t,n){let r=iD.get(e);iD=new Map(iD),iD.set(e,t),aD.emit(`axisChange`,{axis:e,isUserInteraction:n?.isUserInteraction===!0,prev:r,next:t})}function fD(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}function pD(e,t,n=0){return Math.abs(nD(e)-nD(t))<=n}function mD(e,t){return pD(e,t)?0:e>t?1:-1}function hD({overrideDisabledItems:e,itemConstraints:t,prevSize:n,size:r}){let{collapsedSize:i=0,collapsedThreshold:a,collapsible:o,disabled:s,maxSize:c=100,minSize:l=0}=t;if(s&&!e)return n;if(mD(r,l)<0)if(o){let e=a??(l-i)/2,t=mD(n,i)<=0,o=t?i+e:l-e,s=mD(r,o);r=mD(r,i)<=0||s<0||a!==void 0&&t&&s===0?i:l}else r=l;return r=Math.min(c,r),r=nD(r),r}function gD({delta:e,initialLayout:t,itemConstraints:n,pivotIndices:r,prevLayout:i,trigger:a}){if(pD(e,0))return t;let o=a===`imperative-api`,s=n.map(({itemId:e})=>t[e]),c=n.map(({itemId:e})=>i[e]),l=[...s],[u,d]=r;$(u!=null,`Invalid first pivot index`),$(d!=null,`Invalid second pivot index`);let f=0;switch(a){case`keyboard`:{let t=e<0?d:u,r=n[t];$(r,`Panel constraints not found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if($(n!=null,`Previous layout not found for panel index ${t}`),pD(n,i)){let t=o-n;mD(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}{let t=e<0?u:d,r=n[t];$(r,`No panel constraints found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if($(n!=null,`Previous layout not found for panel index ${t}`),pD(n,o)){let t=n-i;mD(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}break;default:{let t=e<0?d:u,r=n[t];$(r,`Panel constraints not found for index ${t}`);let i=s[t],{collapsedSize:a,collapsedThreshold:o,collapsible:c,minSize:l}=r;if(c&&mD(i,l)<0){let t=l-a,n=o??t/2;if(mD(i+Math.abs(e),l)<0){let r=mD(Math.abs(e),n);e=r>0||r===0&&o===void 0&&e<0?e<0?-t:t:0}}break}}{let t=e<0?1:-1,r=e<0?d:u,i=0;for(;;){let e=s[r];$(e!=null,`Previous layout not found for panel index ${r}`);let a=hD({overrideDisabledItems:o,itemConstraints:n[r],prevSize:e,size:100})-e;if(i+=a,r+=t,r<0||r>=n.length)break}let a=Math.min(Math.abs(e),Math.abs(i));e=e<0?0-a:a}{let t=e<0?u:d;for(;t>=0&&t<n.length;){let r=Math.abs(e)-Math.abs(f),i=s[t];$(i!=null,`Previous layout not found for panel index ${t}`);let a=i-r,c=hD({overrideDisabledItems:o,itemConstraints:n[t],prevSize:i,size:a});if(!pD(i,c)&&(f+=i-c,l[t]=c,f.toFixed(3).localeCompare(Math.abs(e).toFixed(3),void 0,{numeric:!0})>=0))break;e<0?t--:t++}}if(fD(c,l))return i;{let t=e<0?d:u,r=s[t];$(r!=null,`Previous layout not found for panel index ${t}`);let i=r+f,a=hD({overrideDisabledItems:o,itemConstraints:n[t],prevSize:r,size:i});if(l[t]=a,!pD(a,i)){let t=i-a,r=e<0?d:u;for(;r>=0&&r<n.length;){let i=l[r];$(i!=null,`Previous layout not found for panel index ${r}`);let a=i+t,s=hD({overrideDisabledItems:o,itemConstraints:n[r],prevSize:i,size:a});if(pD(i,s)||(t-=s-i,l[r]=s),pD(t,0))break;e>0?r--:r++}}}return pD(Object.values(l).reduce((e,t)=>t+e,0),100,.1)?l.reduce((e,t,r)=>(e[n[r].itemId]=t,e),{}):i}function _D(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(t[n]===void 0||mD(e[n],t[n])!==0)return!1;return!0}function vD({commit:e,document:t,event:n,hitRegions:r,initialLayoutMap:i,mountedAxes:a,pointerDownAtPoint:o,prevCursorFlags:s}){let c=0,l=CE(),u=l.state===`active`?l.previews:[],d=new Map(l.state===`active`?l.previewLayoutMap:void 0);r.forEach(t=>{let{axis:r,axisSize:s}=t,{orientation:l,items:f}=r;if(e&&r.resizePreviewMode!==`separator`)return;let{disableCursor:p}=r.mutableState,m=0;m=o?l===`horizontal`?(n.clientX-o.x)/s*100:(n.clientY-o.y)/s*100:l===`horizontal`?n.clientX<0?-100:100:n.clientY<0?-100:100;let h=i.get(r),g=a.get(r);if(!h||!g)return;let{defaultLayoutDeferred:_,derivedItemConstraints:v,axisSize:y,layout:b,separatorToItems:x}=g;if(v&&b&&x){let n=r.resizePreviewMode===`separator`?d.get(r)??b:b,i=gD({delta:m,initialLayout:h,itemConstraints:v,pivotIndices:t.items.map(e=>f.indexOf(e)),prevLayout:n,trigger:`mouse-or-touch`});if(r.resizePreviewMode===`separator`&&!e&&!_D(i,n)){d.set(r,i);let e=0,t=f.map(t=>(e+=i[t.id]-h[t.id],s/100*e));u=u.map(e=>{if(e.axis!==r)return e;let n=t[e.itemIndex];return n===e.offset?e:{...e,offset:n}})}if(_D(i,n)&&m!==0&&!p)switch(l){case`horizontal`:c|=m<0?jE:ME;break;case`vertical`:c|=m<0?NE:PE;break}(r.resizePreviewMode!==`separator`||e)&&!_D(i,b)&&dD(t.axis,{defaultLayoutDeferred:_,derivedItemConstraints:v,axisSize:y,layout:i,requestedAxisSize:y,requestedLayout:i,separatorToItems:x})}});let f=0;n.movementX===0?f|=s&FE:f|=c&FE,n.movementY===0?f|=s&IE:f|=c&IE;let p=l.state===`active`&&(n.clientX!==l.pointerDownAtPoint.x||n.clientY!==l.pointerDownAtPoint.y);TE(f,u,d,p),VE(t)}function yD(e,t){let n=CE(),r=lD(),i=!1;switch(n.state){case`active`:vD({commit:!0,document:e,event:t,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedAxes:r,pointerDownAtPoint:n.pointerDownAtPoint,prevCursorFlags:n.cursorFlags}),EE({cursorFlags:0,state:`inactive`}),n.hitRegions.length>0&&(VE(e),i=!0,n.hitRegions.forEach(e=>{if(!r.has(e.axis))return;let t=cD(e.axis.id,!0);dD(e.axis,t,{isUserInteraction:!0})}))}return i}function bD(e){e.defaultPrevented||yD(e.currentTarget,e)}function xD(e,t,n){let r,i={x:1/0,y:1/0};for(let a of t){let t=JE(n,a.rect);switch(e){case`horizontal`:(t.x<i.x||t.x===i.x&&t.y<=i.y)&&(r=a,i=t);break;case`vertical`:(t.y<i.y||t.y===i.y&&t.x<=i.x)&&(r=a,i=t);break}}return r?{distance:i,hitRegion:r}:void 0}function SD(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function CD(e,t){if(e===t)throw Error(`Cannot compare node with itself`);let n={a:kD(e),b:kD(t)},r;for(;n.a.at(-1)===n.b.at(-1);)r=n.a.pop(),n.b.pop();$(r,`Stacking order can only be calculated for elements with a common ancestor`);let i={a:OD(DD(n.a)),b:OD(DD(n.b))};if(i.a===i.b){let e=r.childNodes,t={a:n.a.at(-1),b:n.b.at(-1)},i=e.length;for(;i--;){let n=e[i];if(n===t.a)return 1;if(n===t.b)return-1}}return Math.sign(i.a-i.b)}var wD=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function TD(e){let t=getComputedStyle(AD(e)??e).display;return t===`flex`||t===`inline-flex`}function ED(e){let t=getComputedStyle(e);return!!(t.position===`fixed`||t.zIndex!==`auto`&&(t.position!==`static`||TD(e))||+t.opacity<1||`transform`in t&&t.transform!==`none`||`webkitTransform`in t&&t.webkitTransform!==`none`||`mixBlendMode`in t&&t.mixBlendMode!==`normal`||`filter`in t&&t.filter!==`none`||`webkitFilter`in t&&t.webkitFilter!==`none`||`isolation`in t&&t.isolation===`isolate`||wD.test(t.willChange)||t.webkitOverflowScrolling===`touch`)}function DD(e){let t=e.length;for(;t--;){let n=e[t];if($(n,`Missing node`),ED(n))return n}return null}function OD(e){return e&&Number(getComputedStyle(e).zIndex)||0}function kD(e){let t=[];for(;e;)t.push(e),e=AD(e);return t}function AD(e){let{parentNode:t}=e;return SD(t)?t.host:t}function jD(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function MD(e){try{return e.matches(`:modal`)}catch{return!1}}function ND({axisElement:e,hitRegion:t,pointerEventTarget:n}){if(qE(n)){let t=n.closest(`dialog`);if(t&&!t.contains(e)&&MD(t))return!1}if(!qE(n)||n.contains(e)||e.contains(n))return!0;if(CD(n,e)>0){let r=n;for(;r;){if(r.contains(e))return!0;if(jD(r.getBoundingClientRect(),t))return!1;r=r.parentElement}}return!0}function PD(e,t){let n=[];return t.forEach((t,r)=>{if(r.disabled)return;let i=XE({axis:r}),a=xD(r.orientation,i,{x:e.clientX,y:e.clientY});a&&a.distance.x<=0&&a.distance.y<=0&&ND({axisElement:r.element,hitRegion:a.hitRegion.rect,pointerEventTarget:e.target})&&n.push(a.hitRegion)}),n}function FD({layout:e,itemConstraints:t}){let n=t.map(({itemId:t})=>e[t]),r=[...n],i=r.reduce((e,t)=>e+t,0);if(Object.keys(e).length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${Object.values(e).map(e=>`${e}%`).join(`, `)}`);if(!pD(i,100)&&r.length>0)for(let e=0;e<t.length;e++){let t=r[e];$(t!=null,`No layout data found for index ${e}`),r[e]=100/i*t}let a=0;for(let e=0;e<t.length;e++){let i=n[e];$(i!=null,`No layout data found for index ${e}`);let o=r[e];$(o!=null,`No layout data found for index ${e}`);let s=hD({overrideDisabledItems:!0,itemConstraints:t[e],prevSize:i,size:o});o!=s&&(a+=o-s,r[e]=s)}if(!pD(a,0))for(let e=0;e<t.length;e++){let n=r[e];$(n!=null,`No layout data found for index ${e}`);let i=n+a,o=hD({overrideDisabledItems:!0,itemConstraints:t[e],prevSize:n,size:i});if(n!==o&&(a-=o-n,r[e]=o,pD(a,0)))break}return r.reduce((e,n,r)=>(e[t[r].itemId]=n,e),{})}function ID({axisId:e,itemId:t}){let n=()=>{let t=lD();for(let[n,{defaultLayoutDeferred:r,derivedItemConstraints:i,layout:a,axisSize:o,separatorToItems:s}]of t)if(n.id===e)return{defaultLayoutDeferred:r,derivedItemConstraints:i,axis:n,axisSize:o,layout:a,separatorToItems:s};throw Error(`Group ${e} not found`)},r=()=>{let e=n().derivedItemConstraints.find(e=>e.itemId===t);if(e!==void 0)return e;throw Error(`Panel constraints not found for Panel ${t}`)},i=()=>{let e=n().axis.items.find(e=>e.id===t);if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},a=()=>{let e=n().layout[t];if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},o=({nextSize:e,items:n,prevLayout:r,derivedItemConstraints:i})=>{let o=a(),s=n.findIndex(e=>e.id===t),c=s===0,l=s===n.length-1;if(l&&e<o&&(c||n.slice(0,s).every((e,t)=>{let n=i[t];return n?.collapsible&&pD(n.collapsedSize,r[n.itemId])}))){let e=n.slice(0,s).reduce((e,t)=>e+r[t.id],0);return{...r,[t]:nD(100-e)}}return gD({delta:l?o-e:e-o,initialLayout:r,itemConstraints:i,pivotIndices:l?[s-1,s]:[s,s+1],prevLayout:r,trigger:`imperative-api`})},s=e=>{if(e===a())return;let{defaultLayoutDeferred:t,derivedItemConstraints:r,axis:i,axisSize:s,layout:c,separatorToItems:l}=n(),u=FD({layout:o({nextSize:e,items:i.items,prevLayout:c,derivedItemConstraints:r}),itemConstraints:r});_D(c,u)||dD(i,{defaultLayoutDeferred:t,derivedItemConstraints:r,axisSize:s,layout:u,requestedAxisSize:s,requestedLayout:u,separatorToItems:l})};return{collapse:()=>{let{collapsible:e,collapsedSize:t}=r(),{mutableValues:n}=i(),o=a();e&&o!==t&&(n.expandToSize=o,s(t))},expand:()=>{let{collapsible:e,collapsedSize:t,minSize:n}=r(),{mutableValues:o}=i(),c=a();if(e&&c===t){let e=o.expandToSize??n;e===0&&(e=1),s(e)}},getSize:()=>{let{axis:e}=n(),r=a(),{element:o}=i();return{asPercentage:r,inPixels:e.layoutStrategy?e.layoutStrategy.getItemSizeInPixels(t):e.orientation===`horizontal`?o.offsetWidth:o.offsetHeight}},isCollapsed:()=>{let{collapsible:e,collapsedSize:t}=r(),n=a();return e&&pD(t,n)},resize:e=>{let{axis:t}=n(),{element:r}=i(),a=HE({axis:t}),o=nD(tD({axisSize:a,itemElement:r,styleProp:e})/a*100);s(o)}}}function LD(e){e.defaultPrevented||PD(e,lD()).forEach(t=>{if(t.separator&&!t.separator.disableDoubleClick){let n=t.items.find(e=>e.constraintProps.defaultSize!==void 0);if(n){let r=n.constraintProps.defaultSize,i=ID({axisId:t.axis.id,itemId:n.id});i&&r!==void 0&&(i.resize(r),e.preventDefault())}}})}function RD(e){let t=lD();for(let[n]of t)if(n.separators.some(t=>t.element===e))return n;throw Error(`Could not find parent Group for separator element`)}function zD({axisId:e}){let t=()=>{let t=lD();for(let[n,r]of t)if(n.id===e)return{axis:n,...r};throw Error(`Could not find Group with id "${e}"`)};return{getLayout(){let{defaultLayoutDeferred:e,layout:n}=t();return e?{}:n},setLayout(e){let{defaultLayoutDeferred:n,derivedItemConstraints:r,axis:i,axisSize:a,layout:o,separatorToItems:s}=t(),c=FD({layout:e,itemConstraints:r});return n?o:(_D(o,c)||dD(i,{defaultLayoutDeferred:n,derivedItemConstraints:r,axisSize:a,layout:c,requestedAxisSize:a,requestedLayout:c,separatorToItems:s}),c)}}}function BD(e,t){let n=RD(e),r=cD(n.id,!0),i=n.separators.find(t=>t.element===e);$(i,`Matching separator not found`);let a=r.separatorToItems.get(i);$(a,`Matching panels not found`);let o=a.map(e=>n.items.indexOf(e)),s=zD({axisId:n.id}).getLayout(),c=FD({layout:gD({delta:t,initialLayout:s,itemConstraints:r.derivedItemConstraints,pivotIndices:o,prevLayout:s,trigger:`keyboard`}),itemConstraints:r.derivedItemConstraints});_D(s,c)||dD(n,{defaultLayoutDeferred:r.defaultLayoutDeferred,derivedItemConstraints:r.derivedItemConstraints,axisSize:r.axisSize,layout:c,requestedAxisSize:r.axisSize,requestedLayout:c,separatorToItems:r.separatorToItems},{isUserInteraction:!0})}function VD(e){if(e.defaultPrevented)return;let t=e.currentTarget,n=RD(t);if(!(n.disabled||n.separators.find(e=>e.element===t)?.disabled))switch(e.key){case`ArrowDown`:e.preventDefault(),n.orientation===`vertical`&&BD(t,5);break;case`ArrowLeft`:e.preventDefault(),n.orientation===`horizontal`&&BD(t,-5);break;case`ArrowRight`:e.preventDefault(),n.orientation===`horizontal`&&BD(t,5);break;case`ArrowUp`:e.preventDefault(),n.orientation===`vertical`&&BD(t,-5);break;case`End`:e.preventDefault(),BD(t,100);break;case`Enter`:{e.preventDefault();let{derivedItemConstraints:r,layout:i,separatorToItems:a}=cD(n.id,!0),o=n.separators.find(e=>e.element===t);$(o,`Matching separator not found`);let s=a.get(o);$(s,`Matching panels not found`);let c=s[0],l=r.find(e=>e.itemId===c.id);if($(l,`Panel metadata not found`),l.collapsible){let e=i[c.id];BD(t,(l.collapsedSize===e?n.mutableState.expandedItemSizes[c.id]??l.minSize:l.collapsedSize)-e)}break}case`F6`:{e.preventDefault();let t=n.separators.map(e=>e.element),r=Array.from(t).findIndex(t=>t===e.currentTarget);$(r!==null,`Index not found`),t[e.shiftKey?r>0?r-1:t.length-1:r+1<t.length?r+1:0].focus({preventScroll:!0});break}case`Home`:e.preventDefault(),BD(t,-100);break}}function HD(e,t){let{element:n,orientation:r,items:i}=e,a=n.getBoundingClientRect(),o=r===`horizontal`;return XE({expandHitTargets:!1,axis:e,includeDisabled:!0}).map(({items:r,rect:s,separator:c},l)=>{let u=i.indexOf(r[0]),d=o?s.left+s.width/2:s.top+s.height/2;return{active:t.some(t=>{if(t.axis!==e||t.items[0]!==r[0])return!1;if(c||t.separator)return t.separator===c;let n=o?t.rect.left+t.rect.width/2:t.rect.top+t.rect.height/2;return pD(d,n)}),axis:e,key:c?`separator-${c.id}`:`panel-${r[0].id}-${l}`,offset:0,itemIndex:u,rect:new DOMRect((o&&!c?d:s.left)-a.left-n.clientLeft+n.scrollLeft,(!o&&!c?d:s.top)-a.top-n.clientTop+n.scrollTop,o&&!c?0:s.width,!o&&!c?0:s.height),separator:c}})}function UD(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=lD(),n=PD(e,t);if(n.length===0)return;let r=new Map,i=!1;n.forEach(e=>{e.separator&&(i||(i=!0,e.separator.element.focus({focusVisible:!1,preventScroll:!0})));let n=t.get(e.axis);n&&r.set(e.axis,n.layout)});let a=Array.from(r.keys()).flatMap(e=>e.resizePreviewMode===`separator`?HD(e,n):[]);EE({cursorFlags:0,didPointerMove:!1,hitRegions:n,initialLayoutMap:r,pointerDownAtPoint:{x:e.clientX,y:e.clientY},previewLayoutMap:new Map(r),previews:a,state:`active`}),e.preventDefault()}function WD(e){let t=lD(),n=CE();switch(n.state){case`active`:vD({commit:!1,document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedAxes:t,prevCursorFlags:n.cursorFlags})}}function GD(e){if(e.defaultPrevented)return;let t=CE(),n=lD();switch(t.state){case`active`:if(e.buttons===0){t.previewLayoutMap.forEach((e,t)=>{let r=n.get(t);t.resizePreviewMode===`separator`&&r&&!_D(e,r.layout)&&dD(t,{...r,layout:e,requestedAxisSize:r.axisSize,requestedLayout:e})}),EE({cursorFlags:0,state:`inactive`}),t.hitRegions.forEach(e=>{if(!n.has(e.axis))return;let t=cD(e.axis.id,!0);dD(e.axis,t,{isUserInteraction:!0})}),VE(e.currentTarget);return}for(let n of t.hitRegions)if(n.separator){let{element:t}=n.separator;t.isConnected&&!t.hasPointerCapture?.(e.pointerId)&&t.setPointerCapture?.(e.pointerId)}vD({commit:!1,document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedAxes:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break;default:{let r=PD(e,n);r.length===0?t.state!==`inactive`&&EE({cursorFlags:0,state:`inactive`}):EE({cursorFlags:0,hitRegions:r,state:`hover`}),VE(e.currentTarget);break}}}function KD(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(CE().state){case`hover`:EE({cursorFlags:0,state:`inactive`})}}function qD(e){e.defaultPrevented||e.pointerType===`mouse`&&e.button>0||yD(e.currentTarget,e)&&e.preventDefault()}function JD(e){let t=0,n=0,r={};for(let i of e)if(i.defaultSize!==void 0){t++;let e=nD(i.defaultSize);n+=e,r[i.itemId]=e}else r[i.itemId]=void 0;let i=e.length-t;if(i!==0){let t=nD((100-n)/i);for(let n of e)n.defaultSize===void 0&&(r[n.itemId]=t)}return r}function YD(e,t){let n=e.map(e=>e.id),r=Object.keys(t);if(n.length!==r.length)return!1;for(let e of n)if(!r.includes(e))return!1;return!0}function XD({axis:e,itemConstraints:t}){let n=e.items.map(({id:e})=>e).join(`,`),r=e.mutableState.defaultLayout;return e.mutableState.layouts[n]??(r&&YD(e.items,r)?r:JD(t))}function ZD({itemIds:e,layout:t}){return FD({layout:t,itemConstraints:e.map(e=>({collapsedSize:0,collapsible:!1,defaultSize:void 0,disabled:void 0,itemId:e,maxSize:100,minSize:0}))})}function QD(e,t,n){if(!n[0])return;let r=e.items.find(e=>e.element===t);if(!r||!r.onResize)return;let i=HE({axis:e}),a=e.orientation===`horizontal`?r.element.offsetWidth:r.element.offsetHeight,o=r.mutableValues.prevSize,s={asPercentage:nD(a/i*100),inPixels:a};r.mutableValues.prevSize=s,r.onResize(s,r.id,o)}function $D(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function eO(e,t){return e.length===t.length&&e.every((e,n)=>$D(e,t[n]))}function tO({axis:e,nextAxisSize:t,prevAxisSize:n,prevLayout:r}){if(n<=0||t<=0||n===t)return r;let i=0,a=0,o=!1,s=new Map,c=[];for(let l of e.items){let e=r[l.id]??0;switch(l.constraintProps.groupResizeBehavior){case`preserve-pixel-size`:{o=!0;let r=nD(e/100*n/t*100);s.set(l.id,r),i+=r;break}default:c.push(l.id),a+=e;break}}if(!o||c.length===0)return r;let l=100-i,u={...r};if(s.forEach((e,t)=>{u[t]=e}),a>0)for(let e of c)u[e]=nD((r[e]??0)/a*l);else{let e=nD(l/c.length);for(let t of c)u[t]=e}return u}var nO=new Map;function rO(e){let t=!0;$(e.element.ownerDocument.defaultView,`Cannot register an unmounted Group`);let n=e.element.ownerDocument.defaultView.ResizeObserver,r=new Set,i=new Set,a=new n(n=>{for(let r of n){let{borderBoxSize:n,target:i}=r;if(i===e.element){if(t){let t=HE({axis:e});if(t===0)return;let n=cD(e.id);if(!n)return;let r=rD(e),i=n.requestedAxisSize,a=n.requestedLayout;n.defaultLayoutDeferred&&(i=t,a=ZD({itemIds:e.items.map(({id:e})=>e),layout:XD({axis:e,itemConstraints:r})}));let o=FD({layout:tO({axis:e,nextAxisSize:t,prevAxisSize:i,prevLayout:a}),itemConstraints:r});if(!n.defaultLayoutDeferred&&_D(n.layout,o)&&eO(n.derivedItemConstraints,r)&&n.axisSize===t)continue;dD(e,{defaultLayoutDeferred:!1,derivedItemConstraints:r,axisSize:t,layout:o,requestedAxisSize:i,requestedLayout:a,separatorToItems:n.separatorToItems})}}else QD(e,i,n)}});a.observe(e.element),e.items.forEach(e=>{$(!r.has(e.id),`Panel ids must be unique; id "${e.id}" was used more than once`),r.add(e.id),e.onResize&&a.observe(e.element)});let o=HE({axis:e}),s=rD(e),c=XD({axis:e,itemConstraints:s}),l=FD({layout:c,itemConstraints:s}),u=e.element.ownerDocument;nO.set(u,(nO.get(u)??0)+1);let d=new Map;return XE({axis:e,includeDisabled:!0}).forEach(e=>{e.separator&&d.set(e.separator,e.items)}),dD(e,{defaultLayoutDeferred:o===0,derivedItemConstraints:s,axisSize:o,layout:l,requestedAxisSize:o,requestedLayout:ZD({itemIds:e.items.map(({id:e})=>e),layout:c}),separatorToItems:d}),e.separators.forEach(e=>{$(!i.has(e.id),`Separator ids must be unique; id "${e.id}" was used more than once`),i.add(e.id),e.element.addEventListener(`keydown`,VD)}),nO.get(u)===1&&(u.addEventListener(`contextmenu`,bD,!0),u.addEventListener(`dblclick`,LD,!0),u.addEventListener(`pointerdown`,UD,!0),u.addEventListener(`pointerleave`,WD),u.addEventListener(`pointermove`,GD),u.addEventListener(`pointerout`,KD),u.addEventListener(`pointerup`,qD,!0)),function(){t=!1,nO.set(u,Math.max(0,(nO.get(u)??0)-1)),oD(e),OE(e)&&VE(u),e.separators.forEach(e=>{e.element.removeEventListener(`keydown`,VD)}),nO.get(u)||(u.removeEventListener(`contextmenu`,bD,!0),u.removeEventListener(`dblclick`,LD,!0),u.removeEventListener(`pointerdown`,UD,!0),u.removeEventListener(`pointerleave`,WD),u.removeEventListener(`pointermove`,GD),u.removeEventListener(`pointerout`,KD),u.removeEventListener(`pointerup`,qD,!0)),a.disconnect()}}function iO({derivedItemConstraints:e,axis:t,layout:n,prevLayout:r,requestedLayout:i}){let a=t.items.map(({id:e})=>e).join(`,`);t.mutableState.layouts[a]=i,r&&e.forEach(e=>{if(e.collapsible){let i=pD(e.collapsedSize,n[e.itemId]),a=pD(e.collapsedSize,r[e.itemId]);i&&!a&&(t.mutableState.expandedItemSizes[e.itemId]=r[e.itemId])}})}function aO(){let[e,t]=(0,U.useState)({});return[e,(0,U.useCallback)(()=>t({}),[])]}function oO(e){let t=(0,U.useRef)({...e});return eE(()=>{for(let n in e)t.current[n]=e[n]},[e]),t.current}var sO=(0,U.createContext)(null);function cO({layout:e,itemConstraints:t,itemId:n,itemIndex:r}){let i,a,o=e[n],s=t.find(e=>e.itemId===n);if(s){let c=s.maxSize,l=s.collapsible?s.collapsedSize:s.minSize,u=[r,r+1];a=FD({layout:gD({delta:l-o,initialLayout:e,itemConstraints:t,pivotIndices:u,prevLayout:e}),itemConstraints:t})[n],i=FD({layout:gD({delta:c-o,initialLayout:e,itemConstraints:t,pivotIndices:u,prevLayout:e}),itemConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:a,valueNow:o}}function lO({attributes:e,axisId:t,axisOrientation:n,children:r,className:i,disableCursor:a,disabled:o,disableDoubleClick:s,elementRef:c,id:l,isSharedHitRegion:u,preview:d,registerSeparator:f,requiredStyle:p,style:m,styleDefaults:h,tabIndex:g=0,updateSeparatorProps:_}){let v=oO({disabled:o,disableDoubleClick:s,children:r,className:i,preview:d,style:m}),[y,b]=(0,U.useState)({}),[x,S]=(0,U.useState)(`inactive`),[C,w]=(0,U.useState)(!1),T=(0,U.useRef)(null),E=(0,U.useRef)(null),D=nE(T,c),O=n===`horizontal`?`vertical`:`horizontal`;eE(()=>{let e=T.current;if(e!==null){let n={disabled:v.disabled,disableDoubleClick:v.disableDoubleClick,element:e,id:l,get children(){return v.children},get className(){return v.className},get preview(){return v.preview},get style(){return v.style}};E.current=n;let r=f(n),i=wE(e=>{S(e.next.state!==`inactive`&&e.next.hitRegions.some(e=>e.separator===n||(u?.(e)??!1))?e.next.state:`inactive`)}),a=uD(t,e=>{let{derivedItemConstraints:t,layout:r,separatorToItems:i}=e.next,a=i.get(n);if(a){let n=a[0],i=t.findIndex(e=>e.itemId===n.id),{layoutStrategy:o}=e.axis;b({...cO({layout:r,itemConstraints:t,itemId:n.id,itemIndex:i}),...o?.getItemAriaControls&&{valueControls:o.getItemAriaControls(n.id)}})}});return()=>{E.current=null,i(),a(),r()}}},[t,l,u,f,v]),eE(()=>{let e=E.current;e&&DE(e)},[d]),(0,U.useEffect)(()=>{_(l,{disabled:o,disableDoubleClick:s})},[o,s,l,_]);let k;o&&!a&&(k=`not-allowed`);let A;if(o)A=`disabled`;else switch(x){case`active`:A=`active`;break;default:A=C?`focus`:x}return(0,W.jsx)(`div`,{...e,"aria-controls":y.valueControls,"aria-disabled":o||void 0,"aria-orientation":O,"aria-valuemax":y.valueMax,"aria-valuemin":y.valueMin,"aria-valuenow":y.valueNow,children:r,className:i,"data-separator":A,"data-testid":l,id:l,onBlur:()=>w(!1),onFocus:()=>w(!0),ref:D,role:`separator`,style:{...h,cursor:k,...m,...p,touchAction:`none`},tabIndex:o?void 0:g})}function uO({axis:e,children:t,className:n,crossSpan:r,crossStart:i,disabled:a,elementRef:o,index:s,style:c}){let l=$T(void 0),{getDisableCursor:u,getResizeAxisId:d,gutters:f,registerSeparator:p,separatorPlacements:m,trackCounts:h,updateSeparatorProps:g}=uE(),_=d(e),v=e===`column`?`row`:`column`,y=h[v],b=!!a||!cE(s,h[e]),x=!0;for(let t of m.values())if(t.axis===e&&t.index===s&&!t.disabled&&t.crossStart<i){x=!1;break}let S=(0,U.useCallback)(e=>e.axis.id===_&&e.axis.items.indexOf(e.items[1])===s,[_,s]),C=(0,U.useCallback)(t=>p({axis:e,crossSpan:r,crossStart:i,disabled:!!a,index:s},t),[e,r,i,a,s,p]),w=oE(s),T=sE({crossCount:y,crossSpan:r,crossStart:i,hasGutters:f[v]});return(0,W.jsx)(lO,{axisId:_,axisOrientation:e===`column`?`horizontal`:`vertical`,className:n,disableCursor:u(),disabled:b,disableDoubleClick:void 0,elementRef:o,id:l,isSharedHitRegion:S,registerSeparator:C,requiredStyle:{gridColumn:e===`column`?w:T,gridRow:e===`row`?w:T},style:c,tabIndex:x?0:-1,updateSeparatorProps:g,children:t})}function dO(e){let{children:t,className:n,disabled:r,elementRef:i,style:a}=e;return e.type===`column`?(0,W.jsx)(uO,{axis:`column`,className:n,crossSpan:e.rowSpan,crossStart:e.row??0,disabled:r,elementRef:i,index:e.column,style:a,children:t}):(0,W.jsx)(uO,{axis:`row`,className:n,crossSpan:e.columnSpan,crossStart:e.column??0,disabled:r,elementRef:i,index:e.row,style:a,children:t})}dO.displayName=`Gridline`;var fO=[`column`,`row`],pO={columns:{},rows:{}};function mO({children:e,className:t,columns:n,defaultLayout:r,disableCursor:i,disabled:a,elementRef:o,gridRef:s,id:c,onLayoutChange:l,onLayoutChanged:u,resizeTargetMinimumSize:d={coarse:20,fine:10},rows:f,style:p,...m}){let h=$T(c),g=(0,U.useCallback)(e=>e===`column`?`${h}:columns`:`${h}:rows`,[h]),_=hO(n,`columns`),v=hO(f,`rows`),y=e=>e===`column`?_:v,b=(0,U.useRef)({onLayoutChange:pO,onLayoutChanged:pO}),x=tE(e=>{yO(b.current.onLayoutChange,e)||(b.current.onLayoutChange=e,l?.(e))}),S=tE((e,t,n)=>{yO(b.current.onLayoutChanged,e)||(b.current.onLayoutChanged=e,u?.(e,{isUserInteraction:t,requestedLayout:n}))}),C=(0,U.useRef)(null),w=nE(C,o),[T,E]=aO(),D=(0,U.useRef)({cells:[],column:{expandedItemSizes:{},layouts:{}},loggedErrors:new Set,row:{expandedItemSizes:{},layouts:{}},separators:new Map}),O={column:!1,row:!1};for(let e of D.current.separators.values())O[e.axis]=!0;gO(e,O);let k=oO({defaultLayout:r,disableCursor:i,resizeTargetMinimumSize:d}),A=tE(()=>!!k.disableCursor),j=(0,U.useCallback)(e=>{let t=D.current;return t.cells=[...t.cells,e],E(),()=>{t.cells=t.cells.filter(t=>t!==e),E()}},[E]),M=(0,U.useCallback)((e,t)=>{let n=D.current;return n.separators=new Map(n.separators),n.separators.set(t,e),E(),()=>{n.separators=new Map(n.separators),n.separators.delete(t),E()}},[E]),N=(0,U.useCallback)((e,{disabled:t,disableDoubleClick:n})=>{for(let r of D.current.separators.keys())r.id===e&&(r.disabled=t,r.disableDoubleClick=n)},[]),P=D.current.separators,ee=(0,U.useMemo)(()=>({getDisableCursor:A,getResizeAxisId:g,gutters:{column:O.column,row:O.row},id:h,registerCell:j,registerSeparator:M,separatorPlacements:P,trackCounts:{column:_.length,row:v.length},updateSeparatorProps:N}),[_.length,A,g,O.column,O.row,h,j,M,v.length,P,N]),F=(0,U.useRef)([]);eE(()=>{let e=C.current;if(e===null)return;let t=D.current,n=vO({cells:t.cells,separatorPlacements:t.separators,trackCounts:{column:_.length,row:v.length}});n.forEach(e=>{t.loggedErrors.has(e)||console.error(e)}),t.loggedErrors=new Set(n);let r=e=>Array.from(t.separators.entries()).filter(([,t])=>t.axis===e).sort(([,e],[,t])=>e.index-t.index).map(([e])=>e),i=fO.map(n=>{let i=n===`column`?_:v,o=n===`column`?v:_,s=i.map(e=>e.id),c=g(n),l=r(n),u=l.length>0,d=i.map(({id:t,...n},r)=>({element:e,id:s[r],idIsStable:!0,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:void 0,constraintProps:n})),f=()=>{let r=[];if(u){for(let[e,a]of t.separators)if(a.axis===n&&cE(a.index,i.length)){let t=e.element.getBoundingClientRect();r[a.index]=Math.max(r[a.index]??0,n===`column`?t.width:t.height)}}return vE({axis:n,element:e,gutterSizes:r.filter(e=>e!==void 0),hasGutters:u,layout:cD(c)?.layout,trackIds:s})},p,m=k.defaultLayout?.[n===`column`?`columns`:`rows`];if(m!==void 0&&Object.keys(m).length===s.length){p={};for(let e of s){let t=m[e];t!==void 0&&(p[e]=t)}}return{disabled:!!a,element:e,id:c,layoutStrategy:{getItemAriaControls:e=>{let r=s.indexOf(e);return t.cells.filter(e=>{let t=n===`column`?e.column:e.row,i=n===`column`?e.columnSpan:e.rowSpan;return t<=r&&r<t+i}).map(e=>e.element.id).filter(Boolean).join(` `)||void 0},calculateAvailableSize:()=>f().availableSize,calculateHitRegions:({expandHitTargets:e,axis:r,includeDisabled:i})=>gE({axis:n,cells:t.cells,crossTrackCount:o.length,expandHitTargets:e,resizeAxis:r,axisSize:f().availableSize,includeDisabled:i,separatorPlacements:t.separators}),getItemSizeInPixels:e=>f().trackSizes[s.indexOf(e)]??0},mutableState:{defaultLayout:p,disableCursor:!!k.disableCursor,expandedItemSizes:t[n].expandedItemSizes,layouts:t[n].layouts},orientation:n===`column`?`horizontal`:`vertical`,items:d,resizePreviewMode:`panel`,get resizeTargetMinimumSize(){return k.resizeTargetMinimumSize},separators:l}});F.current=i;let o=i.map(e=>rO(e)),s=()=>{let[e,t]=i.map(e=>cD(e.id));if(!(!e||!t||e.defaultLayoutDeferred||t.defaultLayoutDeferred))return{layout:{columns:e.layout,rows:t.layout},requestedLayout:{columns:e.requestedLayout,rows:t.requestedLayout}}};{let e=s();e&&(x(e.layout),S(e.layout,!1,e.requestedLayout))}let c=i.map(e=>uD(e.id,t=>{let{defaultLayoutDeferred:n,derivedItemConstraints:r,layout:a,requestedLayout:o}=t.next;if(n||r.length===0)return;iO({derivedItemConstraints:r,axis:e,layout:a,prevLayout:t.prev?.layout,requestedLayout:o});let c=s();if(c){let e=CE(),n=e.state!==`active`||!e.hitRegions.some(e=>i.includes(e.axis));x(c.layout),n&&S(c.layout,t.isUserInteraction,c.requestedLayout)}}));return()=>{F.current=[],o.forEach(e=>e()),c.forEach(e=>e())}},[_,a,g,h,S,x,v,T,k]),(0,U.useEffect)(()=>{F.current.forEach(e=>{e.mutableState.defaultLayout=r?.[e.orientation===`horizontal`?`columns`:`rows`],e.mutableState.disableCursor=!!i})}),(0,U.useImperativeHandle)(s,()=>{let e=()=>{let[e,t]=fO.map(g);return!sD(e)||!sD(t)?{columns:{},rows:{}}:{columns:zD({axisId:e}).getLayout(),rows:zD({axisId:t}).getLayout()}},t=e=>e.map(e=>`"${e}"`).join(`, `),n=(e,n)=>{let r=g(e),i=()=>{let i=sD(r);return $(i,`Grid "${h}" has not been mounted`),$(i.items.some(e=>e.id===n),`Grid "${h}" no longer contains a ${e} with id "${n}"; ${e} ids are ${t(i.items.map(e=>e.id))}`),ID({axisId:r,itemId:n})};return{collapse:()=>i().collapse(),expand:()=>i().expand(),getSize:()=>i().getSize(),isCollapsed:()=>i().isCollapsed(),resize:e=>i().resize(e)}};return{getLayout:e,getTrackById:(e,r)=>{let i=e===`column`?_:v,a=`${r}`;return $(i.some(e=>e.id===a),`Grid "${h}" does not contain a ${e} with id "${a}"; ${e} ids are ${t(i.map(e=>e.id))}`),n(e,a)},getTrackByIndex:(e,t)=>{let r=e===`column`?_:v,i=Number.isInteger(t)?r[t]:void 0;return $(i,`Grid "${h}" does not contain a ${e} at index ${t}; it has ${r.length} ${e}s`),n(e,i.id)},setLayout:t=>(fO.forEach(e=>{let n=t[e===`column`?`columns`:`rows`],r=g(e);n&&sD(r)&&zD({axisId:r}).setLayout(n)}),e())}},[_,g,h,v]);let te=()=>fO.map(e=>{let t=cD(g(e)),n=y(e);return(t&&!t.defaultLayoutDeferred?n.map(e=>`minmax(0, ${t.layout[e.id]??1}fr)`):_O(n,r?.[e===`column`?`columns`:`rows`])).join(O[e]?` auto `:` `)}).join(`|`),[ne,I]=(0,U.useSyncExternalStore)((0,U.useCallback)(e=>{let t=fO.map(t=>uD(g(t),e));return()=>t.forEach(e=>e())},[g]),te,te).split(`|`);return(0,W.jsx)(lE.Provider,{value:ee,children:(0,W.jsx)(`div`,{...m,className:t,"data-grid":!0,"data-testid":h,id:h,ref:w,style:{height:`100%`,width:`100%`,overflow:`hidden`,...p,display:`grid`,gridTemplateColumns:ne,gridTemplateRows:I,touchAction:`none`},children:(0,W.jsx)(sO.Provider,{value:null,children:e})})})}mO.displayName=`Grid`;function hO(e,t){let n=JSON.stringify(e);return(0,U.useMemo)(()=>{let r=typeof e==`number`?Array.from({length:e},(e,t)=>({id:`${t}`})):e.map((e,t)=>({...e,id:`${e.id??t}`}));return $(r.length>0,`Grid must have at least one track; "${t}" is ${n}`),r},[n])}function gO(e,t){U.Children.forEach(e,e=>{if((0,U.isValidElement)(e))if(e.type===dO){let{type:n}=e.props;n===`column`?t.column=!0:n===`row`&&(t.row=!0)}else typeof e.type==`symbol`&&e.props!==null&&typeof e.props==`object`&&`children`in e.props&&gO(e.props.children,t)})}function _O(e,t){if(t)return e.map(e=>`minmax(0, ${t[e.id]??1}fr)`);let n=e.map(e=>e.defaultSize===void 0?void 0:yE(e.defaultSize)),r=100,i=0;return n.forEach(e=>{e===void 0?i++:e[1]===`%`&&(r-=e[0])}),n.map(e=>{if(e===void 0)return`minmax(0, ${Math.max(0,r)/Math.max(1,i)}fr)`;let[t,n]=e;return n===`%`?`minmax(0, ${t}fr)`:`${t}${n}`})}function vO({cells:e,separatorPlacements:t,trackCounts:n}){let r=[];for(let t of e)fO.forEach(e=>{let[i,a]=e===`column`?[t.column,t.columnSpan]:[t.row,t.rowSpan],o=n[e];(!Number.isInteger(i)||!Number.isInteger(a)||i<0||a<1||i+a>o)&&r.push(`Invalid Cell ${e} placement (${e}: ${i}, ${e}Span: ${a}); Grid has ${o} ${e}s`)});let i=({axis:e,crossSpan:t,crossStart:n,disabled:r,index:i})=>{let a=e===`column`?`row`:`column`,o=`type="${e}" ${e}={${i}}`;return(n!==0||t!==void 0)&&(o+=` ${a}={${n}}`),t!==void 0&&(o+=` ${a}Span={${t}}`),r&&(o+=` disabled`),`<Gridline ${o} />`},a=Array.from(t.values()).filter(e=>{let{axis:t,crossSpan:i,crossStart:a,index:o}=e,s=t===`column`?`row`:`column`,c=n[t],l=n[s],u=!0;return cE(o,c)||(r.push(`Invalid ${t} Gridline ${t} (${o}); must be between 1 and ${c-1}`),u=!1),!Number.isInteger(a)||a<0||a>=l?(r.push(`Invalid ${t} Gridline ${s} (${a}); must be between 0 and ${l-1}`),u=!1):i!==void 0&&(!Number.isInteger(i)||i<1||a+i>l)&&(r.push(`Invalid ${t} Gridline ${s}Span (${i}); Grid has ${l} ${s}s`),u=!1),u}),o=e=>{let t=n[e.axis===`column`?`row`:`column`];return[e.crossStart,e.crossSpan===void 0?t:e.crossStart+e.crossSpan]};return a.forEach((t,n)=>{let{axis:s,index:c}=t,[l,u]=o(t);for(let n of e){let[e,a,o,d]=s===`column`?[n.column,n.columnSpan,n.row,n.rowSpan]:[n.row,n.rowSpan,n.column,n.columnSpan];if(e<c&&c<e+a&&o<u&&l<o+d){let n=s===`column`?`row`:`column`;r.push(`${i(t)} overlaps a Cell that spans across it (${s}: ${e}, ${s}Span: ${a}, ${n}: ${o}, ${n}Span: ${d}); use the ${n} and ${n}Span props to render gridlines beside the Cell instead`)}}for(let e of a.slice(n+1))if(e.axis===s&&e.index===c){let[n,a]=o(e);n<u&&l<a&&r.push(`${i(t)} overlaps ${i(e)}`)}}),r}function yO(e,t){return _D(e.columns,t.columns)&&_D(e.rows,t.rows)}function bO(e){for(let t=1;t<e.length;t++)if(UE(e[t-1],e[t])>0)return!1;return!0}function xO({separator:e}){let{element:t}=e,n=(0,U.useRef)(null);return eE(()=>{let e=t.cloneNode(!0),r=[t,...t.querySelectorAll(`*`)],i=[e,...e.querySelectorAll(`*`)],a=t.ownerDocument.defaultView;return r.forEach((e,t)=>{let n=i[t];if(n instanceof a.HTMLElement||n instanceof a.SVGElement){let t=a.getComputedStyle(e);for(let e=0;e<t.length;e++){let r=t.item(e);n.style.setProperty(r,t.getPropertyValue(r))}}n.removeAttribute(`data-testid`),n.removeAttribute(`id`)}),Object.assign(e.style,{boxSizing:`border-box`,height:`100%`,margin:`0`,position:`static`,transform:`none`,width:`100%`}),n.current.appendChild(e),()=>e.remove()},[t]),(0,W.jsx)(`div`,{ref:n,style:{height:`100%`,opacity:.65,pointerEvents:`none`,width:`100%`}})}function SO(){let e=(0,U.useContext)(sO);return $(e,`Group Context not found; did you render a Panel or Separator outside of a Group?`),e}function CO(e){let{registerOverlay:t}=SO(),n=(0,U.useRef)(e);$D(n.current,e)||(n.current=e);let r=n.current;return eE(()=>t(r),[t,r]),null}CO.displayName=`SeparatorOverlay`;function wO({active:e,orientation:t,style:n,...r}){let i;switch(t){case`horizontal`:i={height:`100%`,minWidth:`1px`};break;case`vertical`:i={minHeight:`1px`,width:`100%`};break}return(0,W.jsx)(`div`,{...r,"data-separator-overlay":e?`active`:`inactive`,style:{...i,...n,flexShrink:0,pointerEvents:`none`}})}function TO({overlay:e,preview:t}){let{axis:n,offset:r,rect:i,separator:a}=t,o=n.orientation===`horizontal`,s=a?.preview,c=e;return(0,U.isValidElement)(s)&&s.type===CO&&(c=s.props,s=void 0),s??(c?s=(0,W.jsx)(wO,{...c,active:t.active,orientation:n.orientation}):a&&(s=(0,W.jsx)(xO,{separator:a}))),(0,W.jsx)(`div`,{"aria-hidden":`true`,"data-resize-preview":!0,inert:!0,style:{height:i.height,left:i.left,pointerEvents:`none`,position:`absolute`,top:i.top,transform:o?`translateX(${r}px)`:`translateY(${r}px)`,width:i.width},children:s})}function EO(e){return Array.from(e).sort(UE)}function DO(e,t){let n=(0,U.useRef)({getLayout:()=>({}),setLayout:kE});(0,U.useImperativeHandle)(t,()=>n.current,[]),eE(()=>{Object.assign(n.current,zD({axisId:e}))})}function OO({groupId:e,resizePreviewMode:t}){let[n,r]=(0,U.useState)([]),i=(0,U.useRef)(n);return eE(()=>{let n=n=>{let a=sD(e),o=t===`separator`&&n.state===`active`?n.previews.filter(e=>e.axis===a&&(e.active||!pD(e.offset,0))):[],s=i.current;s.length===o.length&&o.every((e,t)=>e===s[t])||(i.current=o,r(o))};if(t!==`separator`){n(CE());return}let a=wE(({next:e})=>n(e));return n(CE()),a},[e,t]),n}function kO({children:e,className:t,defaultLayout:n,disableCursor:r,disabled:i,elementRef:a,groupRef:o,id:s,onLayoutChange:c,onLayoutChanged:l,orientation:u=`horizontal`,resizePreviewMode:d=`panel`,resizeTargetMinimumSize:f={coarse:20,fine:10},style:p,...m}){let h=(0,U.useRef)({onLayoutChange:{},onLayoutChanged:{}}),g=tE(e=>{_D(h.current.onLayoutChange,e)||(h.current.onLayoutChange=e,c?.(e))}),_=tE((e,t,n)=>{_D(h.current.onLayoutChanged,e)||(h.current.onLayoutChanged=e,l?.(e,{isUserInteraction:t,requestedLayout:n}))}),v=$T(s),[y,b]=(0,U.useState)(),x=OO({groupId:v,resizePreviewMode:d}),S=(0,U.useRef)(null),[C,w]=aO(),T=(0,U.useRef)([]),E=(0,U.useRef)({lastExpandedPanelSizes:{},layouts:{},panels:[],separators:[]}),D=nE(S,a);DO(v,o);let O=tE((e,t)=>{let r=cD(e);if(r)return{flexGrow:r.layout[t]??1};if(n?.[t])return{flexGrow:n?.[t]}}),k=oO({defaultLayout:n,disableCursor:r,resizeTargetMinimumSize:f}),A=(0,U.useMemo)(()=>({get disableCursor(){return!!k.disableCursor},getPanelStyles:O,id:v,orientation:u,registerPanel:e=>{let t=E.current;return t.panels=WE(u,[...t.panels,e]),w(),()=>{t.panels=t.panels.filter(t=>t!==e),w()}},registerOverlay:e=>(b(e),()=>{b(void 0)}),registerSeparator:e=>{let t=E.current;return t.separators=WE(u,[...t.separators,e]),w(),()=>{t.separators=t.separators.filter(t=>t!==e),w()}},updatePanelProps:(e,{disabled:t})=>{let n=E.current.panels.find(t=>t.id===e);n&&(n.constraintProps.disabled=t);let r=sD(v),i=cD(v);r&&i&&dD(r,{...i,derivedItemConstraints:rD(r)})},updateSeparatorProps:(e,{disabled:t,disableDoubleClick:n})=>{let r=E.current.separators.find(t=>t.id===e);r&&(r.disabled=t,r.disableDoubleClick=n)}}),[O,v,w,u,k]),j=(0,U.useRef)(null);return eE(()=>{let e=S.current;if(e===null)return;let t=E.current;t.panels=WE(u,t.panels),t.separators=WE(u,t.separators),T.current=EO([...t.panels.map(({element:e})=>e),...t.separators.map(({element:e})=>e)]);let n;if(k.defaultLayout!==void 0&&Object.keys(k.defaultLayout).length===t.panels.length){n={};for(let e of t.panels){let t=k.defaultLayout[e.id];t!==void 0&&(n[e.id]=t)}}let r={disabled:!!i,element:e,id:v,mutableState:{defaultLayout:n,disableCursor:!!k.disableCursor,expandedItemSizes:E.current.lastExpandedPanelSizes,layouts:E.current.layouts},orientation:u,items:t.panels,resizePreviewMode:d,get resizeTargetMinimumSize(){return k.resizeTargetMinimumSize},separators:t.separators};j.current=r;let a=rO(r),{defaultLayoutDeferred:o,derivedItemConstraints:s,layout:c,requestedLayout:l}=cD(r.id,!0);!o&&s.length>0&&(g(c),_(c,!1,l));let f=uD(v,e=>{let{defaultLayoutDeferred:t,derivedItemConstraints:n,layout:i,requestedLayout:a}=e.next;if(t||n.length===0)return;iO({derivedItemConstraints:n,axis:r,layout:i,prevLayout:e.prev?.layout,requestedLayout:a});let o=CE(),s=o.state!==`active`||!o.hitRegions.some(e=>e.axis===r);g(i),s&&_(i,e.isUserInteraction,a)});return()=>{j.current=null,a(),f()}},[i,v,_,g,u,C,d,k]),eE(()=>{bO(T.current)||w()}),(0,U.useEffect)(()=>{let e=j.current;e&&(e.mutableState.defaultLayout=n,e.mutableState.disableCursor=!!r)}),(0,W.jsx)(sO.Provider,{value:A,children:(0,W.jsxs)(`div`,{...m,className:t,"data-group":!0,"data-testid":v,id:v,ref:D,style:{height:`100%`,width:`100%`,overflow:`hidden`,position:d===`separator`?`relative`:void 0,...p,display:`flex`,flexDirection:u===`horizontal`?`row`:`column`,flexWrap:`nowrap`,touchAction:u===`horizontal`?`pan-y`:`pan-x`},children:[e,x.map(e=>(0,W.jsx)(TO,{overlay:y,preview:e},e.key))]})})}kO.displayName=`Group`;function AO(e,t){let{id:n}=SO(),r=(0,U.useRef)({collapse:AE,expand:AE,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:AE});(0,U.useImperativeHandle)(t,()=>r.current,[]),eE(()=>{Object.assign(r.current,ID({axisId:n,itemId:e}))})}function jO({children:e,className:t,collapsedSize:n=`0%`,collapsedThreshold:r,collapsible:i=!1,defaultSize:a,disabled:o,elementRef:s,groupResizeBehavior:c=`preserve-relative-size`,id:l,maxSize:u=`100%`,minSize:d=`0%`,onResize:f,panelRef:p,style:m,...h}){let g=!!l,_=$T(l),v=oO({disabled:o}),y=(0,U.useRef)(null),b=nE(y,s),{getPanelStyles:x,id:S,orientation:C,registerPanel:w,updatePanelProps:T}=SO(),E=f!==null,D=tE((e,t,n)=>{f?.(e,l,n)});eE(()=>{let e=y.current;if(e!==null){let t={element:e,id:_,idIsStable:g,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:E?D:void 0,constraintProps:{groupResizeBehavior:c,collapsedSize:n,collapsedThreshold:r,collapsible:i,defaultSize:a,disabled:v.disabled,maxSize:u,minSize:d}};return w(t)}},[c,n,r,i,a,E,_,g,u,d,D,w,v]),(0,U.useEffect)(()=>{T(_,{disabled:o})},[o,_,T]),AO(_,p);let O=()=>{let e=x(S,_);if(e)return JSON.stringify(e)},k=(0,U.useSyncExternalStore)(e=>uD(S,e),O,O),A;return A=k?JSON.parse(k):a===void 0?{flexGrow:1}:{flexGrow:void 0,flexShrink:void 0,flexBasis:a},(0,W.jsx)(`div`,{...h,"data-disabled":o||void 0,"data-panel":!0,"data-testid":_,id:_,ref:b,style:{...MO,display:`flex`,flexBasis:0,flexShrink:1,overflow:`visible`,...A},children:(0,W.jsx)(`div`,{className:t,style:{maxHeight:`100%`,maxWidth:`100%`,flexGrow:1,overflow:`auto`,...m,touchAction:C===`horizontal`?`pan-y`:`pan-x`},children:e})})}jO.displayName=`Panel`;var MO={minHeight:0,maxHeight:`100%`,height:`auto`,minWidth:0,maxWidth:`100%`,width:`auto`,border:`none`,borderWidth:0,padding:0,margin:0},NO={flexBasis:`auto`},PO={flexGrow:0,flexShrink:0};function FO({children:e,className:t,disabled:n,disableDoubleClick:r,elementRef:i,id:a,preview:o,style:s,...c}){let l=$T(a),{disableCursor:u,id:d,orientation:f,registerSeparator:p,updateSeparatorProps:m}=SO();return(0,W.jsx)(lO,{attributes:c,axisId:d,axisOrientation:f,className:t,disableCursor:u,disabled:n,disableDoubleClick:r,elementRef:i,id:l,preview:o,registerSeparator:p,requiredStyle:PO,style:s,styleDefaults:NO,updateSeparatorProps:m,children:e})}FO.displayName=`Separator`;function IO({className:e,...t}){return(0,W.jsx)(kO,{"data-slot":`resizable-panel-group`,className:L(`flex h-full w-full`,e),...t})}function LO(e){return(0,W.jsx)(jO,{"data-slot":`resizable-panel`,...e})}function RO({className:e,...t}){return(0,W.jsx)(FO,{"data-slot":`resizable-handle`,className:L(`group/handle flex shrink-0 items-center justify-center outline-none`,`aria-[orientation=vertical]:w-2 aria-[orientation=horizontal]:h-2`,e),...t,children:(0,W.jsx)(`div`,{className:L(`rounded-full bg-transparent transition-colors`,`group-aria-[orientation=vertical]/handle:h-10 group-aria-[orientation=vertical]/handle:w-0.5`,`group-aria-[orientation=horizontal]/handle:h-0.5 group-aria-[orientation=horizontal]/handle:w-10`,`group-data-[separator=hover]/handle:bg-muted-foreground/50 group-data-[separator=focus]/handle:bg-muted-foreground/50 group-data-[separator=active]/handle:bg-primary`)})})}var zO=`oa.panes`,BO=200,VO=new Set,HO=[];function UO(e,t){return t?`${e}/${t}`:`new`}var WO=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function GO(e){if(!WO(e))return{};let t={};for(let[n,r]of Object.entries(e))WO(r)&&Object.values(r).every(e=>typeof e==`number`)&&(t[n]=r);return t}function KO(e){let t;try{t=JSON.parse(e??`null`)}catch{t=null}let n={};if(WO(t)&&WO(t.pages))for(let[e,r]of Object.entries(t.pages))WO(r)&&(n[e]={open:Array.isArray(r.open)?r.open.filter(e=>typeof e==`string`):[],sizes:GO(r.sizes)});return{pages:n,last:WO(t)?GO(t.last):{}}}var qO,JO;function YO(){let e=JO??null;if(JO===void 0)try{e=globalThis.localStorage?.getItem(zO)??null}catch{e=null}return qO?.raw!==e&&(qO={raw:e,kept:KO(e)}),qO.kept}function XO(e,t,n){let r=YO(),{[e]:i,...a}=r.pages,o=t(i??{open:[],sizes:{}}),s=o.open.length>0||Object.keys(o.sizes).length>0?{...a,[e]:o}:a,c=Object.keys(s);for(let e of c.slice(0,Math.max(0,c.length-BO)))delete s[e];let l=JSON.stringify({pages:s,last:n??r.last});try{globalThis.localStorage?.setItem(zO,l),JO=void 0}catch{JO=l}for(let e of VO)e()}function ZO(e){return VO.add(e),()=>VO.delete(e)}function QO(e,t,n){!n&&ak.get(e)===t&&ak.delete(e),XO(e,e=>e.open.includes(t)===n?e:{...e,open:n?[...e.open,t]:e.open.filter(e=>e!==t)})}function $O(e){ak.delete(e),XO(e,e=>({...e,open:[]}))}function ek(e){return(0,U.useSyncExternalStore)(ZO,()=>YO().pages[e]?.open??HO,()=>HO)}function tk(e,t){let n=YO();return n.pages[e]?.sizes[t]??n.last[t]}var nk=0;function rk(e,t){return YO().pages[e]?.sizes[t]?e:`~${nk}`}function ik(e,t,n){nk++,XO(e,e=>({...e,sizes:{...e.sizes,[t]:n}}),{...YO().last,[t]:n})}var ak=new Map;function ok(e,t){t===void 0?ak.delete(e):ak.set(e,t);for(let e of VO)e()}function sk(e){return(0,U.useSyncExternalStore)(ZO,()=>ak.get(e),()=>void 0)}var ck=new Map,lk=new Map,uk=new Set,dk=0;function fk(e){return uk.add(e),()=>uk.delete(e)}function pk(e,t){ck.set(e,{path:t,at:++dk});for(let e of uk)e()}function mk(e){return(0,U.useSyncExternalStore)(fk,()=>ck.get(e),()=>void 0)}function hk(e){lk.set(e,++dk);for(let e of uk)e()}function gk(e){return(0,U.useSyncExternalStore)(fk,()=>lk.get(e),()=>void 0)}var _k=e=>`${e.package}/${e.id}`,vk=`docs`,yk=`workspace`,bk=`chat`,xk=`panes`,Sk=50,Ck=(0,U.createContext)({page:``,enabled:!1,panes:[],open:[],expanded:void 0,panelProps:void 0,reveal:void 0,docs:[],docsLoaded:!1}),wk=0;function Tk({projectId:e,agentId:t,enabled:n,files:r,context:i,toggleContext:a,activity:o,children:s}){let c=n?e:null,{value:l,loaded:u}=Ie(c?()=>Tn(c):null,[],4e3,[c],c?{remember:`docs:${c}`}:void 0),{panels:d}=_e(),f=(0,U.useMemo)(()=>{if(!c)return[];let e=d.filter(e=>e.projects.includes(c)).map(e=>({id:_k(e),label:e.label,help:e.help,icon:e.icon,panel:e}));return l.length>0?[...e,{id:vk,label:`Docs`,help:`The PLAN/TODO markdown files at the root of the workspace.`,icon:Re}]:e},[d,c,l.length]),p=UO(c??``,t),m=ek(p),h=(0,U.useMemo)(()=>m.flatMap(e=>f.find(t=>t.id===e)??[]),[m,f]),g=sk(p);(0,U.useEffect)(()=>()=>{Bi()&&$O(p)},[p]);let _=mk(p),v=f.find(e=>e.panel?.changes)?.id,y=_?.at;(0,U.useEffect)(()=>{y===void 0||v===void 0||y<=wk||(wk=y,QO(p,v,!0))},[y,v,p]);let b=gk(p),x=f.find(e=>e.panel?.screen)?.id;(0,U.useEffect)(()=>{b===void 0||x===void 0||b<=wk||(wk=b,QO(p,x,!0))},[b,x,p]);let S=(0,U.useMemo)(()=>new Set(r.filter(e=>i.has(e))),[r,i]),C=(0,U.useMemo)(()=>({files:S,toggle:a}),[S,a]),w=(0,U.useMemo)(()=>c?{projectId:c,...t?{agentId:t,...o===void 0?{}:{activity:o}}:{},context:C}:void 0,[c,t,o,C]),T=(0,U.useMemo)(()=>({page:p,enabled:c!==null,panes:f,open:h,expanded:h.some(e=>e.id===g)?g:void 0,panelProps:w,reveal:_,docs:l,docsLoaded:u}),[p,c,f,h,g,w,_,l,u]);return(0,W.jsx)(Ck.Provider,{value:T,children:s})}function Ek(){let{open:e}=(0,U.useContext)(Ck);return Hi()&&e.length>0}function Dk(){let{page:e,panes:t,open:n}=(0,U.useContext)(Ck);return Ek()||t.length===0?null:(0,W.jsx)(`div`,{role:`group`,"aria-label":`Panes`,className:`flex shrink-0 items-center gap-0.5`,children:t.map(t=>{let r=n.includes(t);return(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(z,{variant:`ghost`,size:`icon-sm`,className:L(`shrink-0 text-muted-foreground`,r&&`bg-accent text-accent-foreground`),"aria-label":t.label,"aria-pressed":r,onClick:()=>QO(e,t.id,!r)}),children:(0,W.jsx)(t.icon,{className:`h-4 w-4`})}),(0,W.jsxs)(h,{className:`max-w-64`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:t.label}),(0,W.jsx)(`span`,{className:`block text-muted-foreground`,children:t.help})]})]},t.id)})})}function Ok(){let{page:e,panes:t,open:n}=(0,U.useContext)(Ck);return Ek()?(0,W.jsxs)(l,{children:[(0,W.jsx)(d,{"aria-label":`Panes`,className:`flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-accent-foreground`,children:(0,W.jsx)(Or,{className:`h-4 w-4`,"aria-hidden":!0})}),(0,W.jsx)(A,{align:`start`,className:`min-w-[12rem]`,children:t.map(t=>(0,W.jsxs)(Ve,{closeOnClick:!0,checked:n.includes(t),onCheckedChange:n=>QO(e,t.id,n),children:[(0,W.jsx)(t.icon,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),` `,t.label]},t.id))})]}):null}function kk({pane:e}){let{page:t,expanded:n,panelProps:r,reveal:i,docs:a,docsLoaded:o}=(0,U.useContext)(Ck),s=n===e.id,[c,l]=(0,U.useState)(null),[u,d]=(0,U.useState)(null),f=(0,U.useMemo)(()=>({title:c,actions:u}),[c,u]);return(0,W.jsx)(`div`,{className:s?`absolute inset-0 z-30 flex bg-background p-2`:`flex h-full min-h-0 min-w-0`,children:(0,W.jsxs)(`section`,{"aria-label":e.label,className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-xl border border-border bg-card text-card-foreground`,children:[(0,W.jsxs)(`header`,{className:`flex h-9 shrink-0 items-center gap-0.5 pr-1 pl-1`,children:[(0,W.jsx)(`div`,{ref:l,className:`peer flex min-w-0 flex-1 items-center gap-0.5 empty:hidden`}),(0,W.jsx)(`h2`,{className:`min-w-0 flex-1 truncate pl-2 text-xs font-medium text-muted-foreground peer-[:not(:empty)]:hidden`,children:e.label}),(0,W.jsx)(`div`,{ref:d,className:`flex shrink-0 items-center gap-0.5 empty:hidden`}),(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(z,{variant:`ghost`,size:`icon-sm`,className:`shrink-0 text-muted-foreground`,"aria-label":s?`Bring ${e.label} back to its place`:`Let ${e.label} fill the page`,"aria-pressed":s,onClick:()=>ok(t,s?void 0:e.id)}),children:s?(0,W.jsx)(Gr,{className:`h-3.5 w-3.5`}):(0,W.jsx)(Hr,{className:`h-3.5 w-3.5`})}),(0,W.jsx)(h,{children:s?`Back to its place`:`Fill the page`})]}),(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(z,{variant:`ghost`,size:`icon-sm`,className:`shrink-0 text-muted-foreground`,"aria-label":`Close ${e.label}`,onClick:()=>QO(t,e.id,!1)}),children:(0,W.jsx)(Je,{className:`h-4 w-4`})}),(0,W.jsx)(h,{children:`Close`})]})]}),(0,W.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden`,children:e.panel&&r?(0,W.jsx)(XT,{package:e.panel.package,label:`${e.label} pane`,children:(0,W.jsx)(ht.Provider,{value:f,children:(0,W.jsx)(e.panel.Panel,{...e.panel.changes&&i?{...r,reveal:i}:r})})}):(0,W.jsx)(JT,{docs:a,loaded:o})})]})})}var Ak=e=>e.map(e=>e.id).join(`+`);function jk(){let{page:e,open:t,expanded:n}=(0,U.useContext)(Ck),r=Ak(t),i=tk(e,r),a=rk(e,r),o=e=>`${e.id}@${a}`;return(0,W.jsx)(IO,{orientation:`vertical`,disabled:n!==void 0,onLayoutChanged:(n,{isUserInteraction:i})=>{let a=t.map(e=>[e.id,n[o(e)]]);i&&a.every(([,e])=>e!==void 0)&&ik(e,r,Object.fromEntries(a))},children:t.flatMap((e,n)=>[...n>0?[(0,W.jsx)(RO,{"aria-label":`The height of ${t[n-1].label} and ${e.label}`},`above-${e.id}`)]:[],(0,W.jsx)(LO,{id:o(e),defaultSize:`${i?.[e.id]??100/t.length}%`,minSize:96,style:{overflow:`hidden`},children:(0,W.jsx)(kk,{pane:e})},e.id)])})}function Mk({children:e}){let{page:t,enabled:n,open:r,expanded:i}=(0,U.useContext)(Ck),a=Hi(),o=r.length>0&&!a;if(!n)return e;let s=tk(t,yk)?.[xk]??Sk,c=`${xk}@${rk(t,yk)}`;return(0,W.jsxs)(`div`,{className:`relative flex min-w-0 flex-1`,children:[(0,W.jsxs)(IO,{orientation:`horizontal`,disabled:i!==void 0,onLayoutChanged:(e,{isUserInteraction:n})=>{let[r,i]=[e[bk],e[c]];n&&r!==void 0&&i!==void 0&&ik(t,yk,{[bk]:r,[xk]:i})},children:[(0,W.jsx)(LO,{id:bk,minSize:320,className:`flex min-w-0 flex-col`,style:{overflow:`hidden`},children:e}),o&&(0,W.jsx)(RO,{"aria-label":`The width of the chat and the panes`}),o&&(0,W.jsx)(LO,{id:c,defaultSize:`${s}%`,minSize:288,className:`py-2 pr-2`,style:{overflow:`hidden`},children:(0,W.jsx)(jk,{})})]}),a&&r.length>0&&(0,W.jsx)(`div`,{className:L(`absolute inset-y-0 right-0 z-20 flex flex-col gap-2 p-2`,i?`left-0`:`w-2/3 min-w-64 max-w-full`),children:r.map(e=>(0,W.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,W.jsx)(kk,{pane:e})},e.id))})]})}var Nk=[];function Pk({projectId:e,onProjectRemoved:t,onOpenSkills:n}){return(0,W.jsxs)(`div`,{className:`flex items-center gap-2 overflow-hidden py-2 pr-2 md:pl-4 max-md:pl-11`,children:[(0,W.jsx)(Ok,{}),(0,W.jsx)(`div`,{className:`grow shrink-0`}),(0,W.jsx)(qT,{projectId:e,events:Nk,onProjectRemoved:t,onOpenSkills:n}),(0,W.jsx)(Dk,{})]})}var Fk=B(`onProjectSkills`),Ik=B(`sendChangeSkills`),Lk=B(`sendCommitSkills`),Rk=e=>e.standing!==`absent`,zk=e=>e.groups.flatMap(e=>e.skills),Bk=(e,t,n)=>`${e} ${e===1?t:n}`,Vk={newer:`a newer text is there`,changed:`changed by hand`,own:`your own text`},Hk=`Starts the automations you switch on, while the dashboard is open. This machine only, nothing to commit.`;function Uk({projectId:e,onChanged:t,door:n}){let{value:r,reload:i,loaded:a}=Ie(()=>Fk(e).catch(()=>null),null,15e3,[e],`previous`),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(null),{busy:u,error:d,run:f}=tt(),p=r?.uncommitted??0;(0,U.useEffect)(()=>{p>0&&l(null)},[p]);let m=n?.open??!1;if((0,U.useEffect)(()=>{m&&r&&s(e=>e??r)},[m,r]),!r)return m&&a?(0,W.jsx)(`p`,{role:`alert`,className:`border-b border-border px-4 py-2 text-xs text-danger`,children:`This project’s skills could not be read.`}):null;let h=async()=>{await i(),t?.()},g=zk(r).filter(e=>e.standing===`newer`).map(e=>e.name),_=zk(r).filter(e=>e.waiting).map(e=>e.name),v=async()=>{(await f(()=>Ik(e,{write:g}),`Could not update the skills.`)).ok&&await h()},y=async()=>{let t=await f(()=>Lk(e),`Could not commit the skill files.`);t.ok&&(l(t.value.commit??null),await h())},b=o&&(0,W.jsx)(Gk,{projectId:e,skills:o,onClose:()=>{s(null),n?.onClose()},onSaved:()=>void h()}),x=r.has===0,S=r.uncommitted===0&&c!==null,C=_.length>0&&r.startBranch!==void 0;return!x&&g.length===0&&r.uncommitted===0&&!S&&!C&&!d?b||null:(0,W.jsxs)(`div`,{role:`status`,"aria-label":`This project's skills`,className:`flex flex-wrap items-center gap-x-4 gap-y-1 border-b border-border px-4 py-2 text-xs text-muted-foreground`,children:[x&&(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[`This project has no skills yet.`,(0,W.jsx)(z,{type:`button`,variant:`outline`,size:`xs`,onClick:()=>s(r),children:`Add skills`})]}),g.length>0&&(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[Bk(g.length,`skill has`,`skills have`),` a newer text.`,(0,W.jsx)(z,{type:`button`,variant:`outline`,size:`xs`,disabled:u,onClick:()=>void v(),children:`Update`})]}),r.uncommitted>0&&(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[Bk(r.uncommitted,`skill file is`,`skill files are`),` not committed.`,(0,W.jsx)(z,{type:`button`,variant:`outline`,size:`xs`,disabled:u,onClick:()=>void y(),children:`Commit`})]}),S&&(0,W.jsxs)(`span`,{children:[`Committed as `,c,`. Nothing was pushed.`]}),C&&(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-foreground`,children:_.length>4?`${_.length} skills`:_.join(`, `)}),`: waiting to reach `,r.startBranch,`. An agent started from `,r.startBranch,` does not have `,_.length===1?`it`:`them`,`.`]}),d&&(0,W.jsx)(`span`,{className:`text-danger`,children:d}),b]})}function Wk(e){let t=zk(e).filter(Rk);return t.length>0||e.scheduler?{ticked:new Set(t.map(e=>e.name)),scheduler:e.scheduler}:{ticked:new Set(e.groups.filter(e=>e.ticked).flatMap(e=>e.skills.map(e=>e.name))),scheduler:!0}}function Gk({projectId:e,skills:t,onClose:n,onSaved:r}){let[i]=(0,U.useState)(()=>Wk(t)),[a,o]=(0,U.useState)(i.ticked),[s,c]=(0,U.useState)(i.scheduler),[l,u]=(0,U.useState)(null),[d,f]=(0,U.useState)(null),{busy:p,error:m,run:h}=tt(),g=(e,t)=>o(n=>{let r=new Set(n);return t?r.add(e):r.delete(e),r}),_=zk(t).filter(e=>a.has(e.name)&&!Rk(e)).map(e=>e.name),v=zk(t).filter(e=>!a.has(e.name)&&Rk(e)).map(e=>e.name),y=_.length===0&&v.length===0&&s===t.scheduler,b=async()=>{let n=await h(()=>Ik(e,{write:_,remove:v,...s===t.scheduler?{}:{scheduler:s}}),`Could not change the skills.`);n.ok&&(u(n.value),r())},x=async()=>{let t=await h(()=>Lk(e,[...l?.written??[],...l?.removed??[]]),`Could not commit the skill files.`);t.ok&&(f(t.value),r())};return(0,W.jsx)(ut,{open:!0,onOpenChange:e=>{!e&&!p&&n()},title:`Skills`,children:l?(0,W.jsxs)(`div`,{className:`space-y-2 text-xs leading-relaxed text-muted-foreground`,children:[l.written.length>0&&(0,W.jsxs)(`p`,{children:[`Wrote `,Bk(l.written.length,`skill`,`skills`),` in `,(0,W.jsx)(`code`,{className:`rounded bg-muted px-1`,children:`.agents/skills`}),`, linked in`,` `,(0,W.jsx)(`code`,{className:`rounded bg-muted px-1`,children:`.claude/skills`}),`: `,(0,W.jsx)(`span`,{className:`text-foreground`,children:l.written.join(`, `)}),`.`]}),l.removed.length>0&&(0,W.jsxs)(`p`,{children:[`Deleted `,Bk(l.removed.length,`skill`,`skills`),`: `,(0,W.jsx)(`span`,{className:`text-foreground`,children:l.removed.join(`, `)}),`.`]}),l.scheduler===`on`&&(0,W.jsx)(`p`,{children:`The scheduler is on for this project, on this machine. Every automation starts switched off.`}),l.scheduler===`off`&&(0,W.jsx)(`p`,{children:`The scheduler is off for this project on this machine, and stopped.`}),l.left.map(({path:e,reason:t})=>(0,W.jsxs)(`p`,{children:[`Left as it is: `,(0,W.jsx)(`code`,{className:`rounded bg-muted px-1`,children:e}),` (`,t,`).`]},e)),l.schedulerError&&(0,W.jsxs)(`p`,{className:`text-danger`,children:[`The scheduler was not switched: `,l.schedulerError]}),l.written.length+l.removed.length>0&&!t.git&&(0,W.jsx)(`p`,{children:`This folder is not a git repository, so there is nothing to commit.`}),l.written.length+l.removed.length>0&&t.git&&d===null&&(0,W.jsx)(`p`,{children:`The files are in the project’s folder, not committed. A commit holds these files alone, on the branch the folder is on. Nothing is pushed.`}),d!==null&&!d.committed&&(0,W.jsx)(`p`,{children:`Nothing to commit: git already has these files as they are.`}),d?.committed&&t.remote&&(0,W.jsxs)(`p`,{children:[`Committed as `,d.commit,`, these files alone. Nothing was pushed: push it, or open a pull request where the default branch is protected.`]}),d?.committed&&!t.remote&&(0,W.jsxs)(`p`,{children:[`Committed as `,d.commit,`, these files alone.`,l.written.length>0?` Your agents have these skills from their next start.`:``]}),l.written.length>0&&t.startBranch!==void 0&&!(d?.committed&&!t.remote)&&(0,W.jsxs)(`p`,{children:[`Your agents get these skills once they are on `,t.startBranch,`.`]}),m&&(0,W.jsx)(`p`,{className:`text-danger`,children:m}),(0,W.jsxs)(`div`,{className:`flex justify-end gap-2 pt-1`,children:[l.written.length+l.removed.length>0&&t.git&&d===null&&(0,W.jsx)(z,{type:`button`,size:`sm`,disabled:p,onClick:()=>void x(),children:p?`Committing…`:`Commit these files`}),(0,W.jsx)(z,{type:`button`,variant:`outline`,size:`sm`,disabled:p,onClick:n,children:`Done`})]})]}):(0,W.jsxs)(`div`,{className:`text-xs`,children:[(0,W.jsx)(`p`,{className:`mb-2 leading-relaxed text-muted-foreground`,children:`A ticked skill is written into the project’s folder as a file you commit; an unticked one is deleted. Branches, logs, question, and github on a GitHub project come with every run and are not here.`}),(0,W.jsxs)(`div`,{className:`max-h-[55vh] space-y-3 overflow-y-auto pr-1`,children:[t.groups.map(e=>(0,W.jsxs)(`fieldset`,{children:[(0,W.jsx)(`legend`,{className:`mb-1 font-medium text-foreground`,children:e.title}),e.skills.map(e=>(0,W.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2 py-0.5`,children:[(0,W.jsx)(pe,{checked:a.has(e.name),onCheckedChange:t=>g(e.name,t===!0),disabled:p,className:`mt-0.5`,"aria-label":e.name}),(0,W.jsxs)(`span`,{className:`min-w-0`,children:[(0,W.jsx)(`span`,{className:`text-foreground`,children:e.name}),Vk[e.standing]&&(0,W.jsxs)(`span`,{className:`text-warning`,children:[` (`,Vk[e.standing],`)`]}),e.waiting&&t.startBranch!==void 0&&(0,W.jsxs)(`span`,{className:`text-warning`,children:[` (waiting to reach `,t.startBranch,`)`]}),(0,W.jsx)(`span`,{className:`block text-muted-foreground`,children:e.description})]})]},e.name))]},e.title)),(0,W.jsxs)(`fieldset`,{children:[(0,W.jsx)(`legend`,{className:`mb-1 font-medium text-foreground`,children:`The scheduler`}),(0,W.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2 py-0.5`,children:[(0,W.jsx)(pe,{checked:s,onCheckedChange:e=>c(e===!0),disabled:p,className:`mt-0.5`,"aria-label":`scheduler`}),(0,W.jsxs)(`span`,{className:`min-w-0`,children:[(0,W.jsx)(`span`,{className:`text-foreground`,children:`scheduler`}),(0,W.jsx)(`span`,{className:`block text-muted-foreground`,children:Hk})]})]})]})]}),m&&(0,W.jsx)(`p`,{className:`mt-2 text-danger`,children:m}),(0,W.jsxs)(`div`,{className:`mt-3 flex items-center justify-end gap-2`,children:[(0,W.jsx)(`span`,{className:`mr-auto text-muted-foreground`,children:y?`Nothing to change.`:[_.length>0?`${Bk(_.length,`skill`,`skills`)} to write`:``,v.length>0?`${Bk(v.length,`skill`,`skills`)} to delete`:``,s===t.scheduler?``:`the scheduler ${s?`on`:`off`}`].filter(Boolean).join(`, `)+`.`}),(0,W.jsx)(z,{type:`button`,variant:`outline`,size:`sm`,disabled:p,onClick:n,children:`Cancel`}),(0,W.jsx)(z,{type:`button`,size:`sm`,disabled:p||y,onClick:()=>void b(),children:p?`Saving…`:`Save`})]})]})})}function Kk({events:e,headline:t=!1}){let n=qk(e);if(n.length===0)return null;let r=n[n.length-1];return(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsxs)(`span`,{role:`alert`,className:`flex shrink-0 items-center gap-1.5 text-danger`,children:[(0,W.jsx)(ii,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,W.jsxs)(`span`,{className:`font-medium`,children:[n.length,` `,n.length===1?`error`:`errors`]}),t&&(0,W.jsxs)(`span`,{className:`min-w-0 truncate text-muted-foreground`,children:[`· `,r.headline]})]})}),(0,W.jsx)(h,{className:`whitespace-pre-line`,children:n.map(e=>e.headline).join(`
131
- `)})]})}function qk(e){let t=Mt(e),n=PT(e),r=n&&!n.ok&&!n.stopped&&!n.waiting?n.detail:void 0;return r?t.filter(e=>!r.includes(e.headline)):t}function Jk(e){if(e.length===0)return null;let t=PT(e);return t!==void 0&&!t.ok&&!t.stopped&&!t.waiting?{dot:`bg-danger`,label:`failed`,tone:`text-danger`,...t?.detail?{detail:t.detail}:{}}:t?.stopped?{dot:`bg-warning`,label:`stopped`,tone:`text-warning`}:t?.waiting?{dot:`bg-warning`,label:`waiting for an answer`,tone:`text-warning`}:NT(e)?{dot:`animate-pulse bg-warning`,label:`building…`,tone:`text-muted-foreground`}:{dot:`bg-muted-foreground`,label:`finished`,tone:`text-muted-foreground`}}function Yk({events:e}){let t=Nt(e),n=Jk(e),r=qk(e),i=zT(t);return!i&&!n&&r.length===0?null:(0,W.jsxs)(`div`,{className:`grid gap-3 border-b border-border p-4 md:grid-cols-2`,children:[n&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-sm md:col-span-2`,children:[(0,W.jsx)(`span`,{className:L(`h-2.5 w-2.5 shrink-0 rounded-full`,n.dot),"aria-hidden":!0}),(0,W.jsx)(`span`,{className:L(`text-xs`,n.tone),children:n.detail?`${n.label} — ${n.detail}`:n.label})]}),r.length>0&&(0,W.jsx)(`div`,{className:`text-sm md:col-span-2`,children:(0,W.jsx)(Kk,{events:e,headline:!0})}),i&&(0,W.jsx)(`a`,{href:i.href,target:`_blank`,rel:`noreferrer`,className:`text-xs text-primary underline underline-offset-2 md:col-span-2`,children:i.label})]})}var Xk=[];function Zk({projectId:e=null,onOpenAgent:t}){let{value:n,loaded:r}=Ie(kn,Xk,5e3,[]),i=e===null?n:n.filter(t=>t.projectId===e);return!r||i.length===0?null:(0,W.jsxs)(`section`,{"aria-label":`Open questions`,className:`p-3`,children:[(0,W.jsxs)(`h2`,{className:`mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:[`Waiting on you · `,i.length]}),(0,W.jsx)(`ul`,{className:`max-h-[70vh] overflow-x-hidden overflow-y-auto`,children:i.map(e=>{let n=Qk(e),r=s(e.updatedAt,``);return(0,W.jsx)(`li`,{children:(0,W.jsxs)(`button`,{type:`button`,"aria-label":`Open ${n}: needs input, ${e.choice.title}`,onClick:()=>t(e.projectId,e.agentId),className:`flex w-full items-center overflow-hidden whitespace-nowrap rounded-md px-2 py-1.5 text-left text-sm hover:bg-accent/40 md:gap-3 max-md:flex-wrap max-md:gap-x-3 max-md:gap-y-0.5`,children:[(0,W.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1.5 text-xs text-warning`,children:[(0,W.jsx)(`span`,{className:`h-2 w-2 rounded-full bg-warning`,"aria-hidden":!0}),`Needs input`]}),(0,W.jsx)(`span`,{className:`min-w-0 shrink truncate text-foreground md:max-w-[50%] max-md:flex-1`,children:n}),(0,W.jsx)(`span`,{className:`min-w-0 truncate text-muted-foreground md:flex-auto max-md:order-last max-md:basis-full`,children:e.choice.title}),(0,W.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:e.projectName}),r&&(0,W.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:r}),(0,W.jsx)(Ue,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`,"aria-hidden":!0})]})},`${e.projectId} ${e.agentId}`)})})]})}function Qk(e){return e.intent?.split(`
132
- `)[0]?.slice(0,80)??e.agentId}function $k({projectId:e,projectName:t,scope:n=null,events:r,onAgentStarted:i,files:a,context:o,addContext:s,removeContext:c,toggleContext:l,onOpenAgent:u,errors:d,onProjectRemoved:f,onSkillsChanged:p}){let[m,h]=(0,U.useState)(null);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Pk,{projectId:e,onProjectRemoved:f,onOpenSkills:()=>h(e)}),(0,W.jsx)(ki,{errors:d}),(0,W.jsx)(Uk,{projectId:e,onChanged:p,door:{open:m===e,onClose:()=>h(null)}},e),(0,W.jsx)(ce,{className:`min-h-0 flex-1`,children:(0,W.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl`,children:[r.length>0&&(0,W.jsx)(Yk,{events:r}),(0,W.jsx)(Zk,{projectId:n,onOpenAgent:u})]})}),(0,W.jsx)(jT,{projectId:e,projectName:t,onAgentStarted:i,files:a,context:o,addContext:s,removeContext:c,toggleContext:l})]})}var eA=B(`onQuota`),tA=3e4;function nA(){return Ie(eA,void 0,tA,[]).value}function rA(e){return new Intl.DateTimeFormat(`en-US`,{weekday:`short`}).format(e).slice(0,2).toUpperCase()}function iA(e,t,n=rA){let r=t-e;if(!(r>0))return[];let i=[e],a=new Date(e);for(a.setHours(24,0,0,0);a.getTime()<t;)i.push(a.getTime()),a.setHours(24,0,0,0);i.push(t);let o=[];for(let t=0;t<i.length-1;t++){let a=i[t],s=i[t+1];o.push({startPercent:(a-e)/r*100,endPercent:(s-e)/r*100,label:n(a)})}let s=o[0],c=o.at(-1);return o.length>1&&s.label===c.label&&(s.endPercent-s.startPercent>=c.endPercent-c.startPercent?c.label=void 0:s.label=void 0),o}var aA=5;function oA(e,t,n=aA){return e>=100?`full`:e>t+n?`over`:e>=t-n?`near`:`under`}function sA(e,t){return Math.min(Math.max(e+t,0),100)}function cA(e,t,n){return(e-t)/100*n}function lA(e,t){return Math.min(Math.max(e,0),100)/100*t}function uA(e,t){if(!(t<=0))return e/t*100}function dA(e,t){let n=Math.min(Math.max(e,0),100);return{start:n,end:Math.max(n,Math.min(Math.max(t,0),100))}}var fA={under:`bg-success`,near:`bg-info`,over:`bg-warning`,full:`bg-danger`},pA={under:`text-success`,near:`text-info`,over:`text-warning`,full:`text-danger`},mA=` — `;function hA(e){return e.find(e=>e.kind===`week`)}function gA(e,t){let n=t.map(e=>`“${e.label}”`).join(`, `);return e?e.resetsAtText?`Couldn't parse quota: the week resets “${e.resetsAtText}”, which isn't a phrasing this version recognizes.`:`No quota week to place: “${e.label}” reports ${e.percentUsed}% used but no reset time, and the week is drawn between its start and its reset — there is no span to place it in.`:`Couldn't parse quota: no “Current week (all models)” line in the readout — it reported ${n}.`}function _A({swatch:e,children:t}){return(0,W.jsxs)(`span`,{className:`flex items-center gap-1`,children:[e,t]})}function vA({boundary:e,percentUsed:t,offset:n,onChangeOffset:r,others:i}){let a=iA(e.startsAt,e.resetsAt),o=oA(t,e.percent),s=n!==void 0,c=sA(e.percent,n??0),l=dA(t,s?c:t),u=s&&l.end>l.start,d=cA(c,e.percent,e.resetsAt-e.startsAt),f=s&&c>e.percent+14.285714285714286,p=`${Math.round(t)}% of the week used, against a boundary of ${Math.round(e.percent)}% on day ${e.day} of 7`,m=e.resetsAt-e.startsAt,_=cA(t,e.percent,m),v=_>=0,y=lA(t,m),b=uA(t,e.percent);return(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(`div`,{className:`relative h-4 text-[10px] font-medium tracking-wide text-muted-foreground`,children:a.map((e,t)=>e.label&&(0,W.jsx)(`span`,{className:`absolute top-0 -translate-x-1/2`,style:{left:`${(e.startPercent+e.endPercent)/2}%`},children:e.label},t))}),(0,W.jsxs)(`div`,{className:`relative h-4`,children:[(0,W.jsxs)(`div`,{role:`img`,"aria-label":p,className:`absolute inset-x-0 top-[3px] h-2.5 overflow-hidden rounded-full bg-muted`,children:[(0,W.jsx)(`div`,{className:L(`absolute inset-y-0 left-0`,fA[o]),style:{width:`${l.start}%`}}),u&&(0,W.jsx)(`div`,{className:L(`absolute inset-y-0 opacity-35`,fA[o]),style:{left:`${l.start}%`,width:`${l.end-l.start}%`}}),a.slice(1).map((e,t)=>(0,W.jsx)(`div`,{className:`absolute inset-y-0 w-1 bg-background/60`,style:{left:`${e.startPercent}%`},"aria-hidden":!0},t)),(0,W.jsx)(`div`,{className:`absolute inset-y-0 w-0.5 -translate-x-1/2 bg-foreground`,style:{left:`${Math.min(Math.max(e.percent,0),100)}%`},"aria-hidden":!0})]}),s&&(0,W.jsx)(`input`,{type:`range`,"aria-label":`Unattended work stops at`,className:L(`absolute inset-0 h-full w-full cursor-grab appearance-none bg-transparent active:cursor-grabbing`,`[&::-webkit-slider-runnable-track]:bg-transparent`,`[&::-moz-range-track]:border-none [&::-moz-range-track]:bg-transparent`,`[&::-webkit-slider-thumb]:h-3.5 [&::-webkit-slider-thumb]:w-3.5 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full`,`[&::-webkit-slider-thumb]:border [&::-webkit-slider-thumb]:border-background [&::-webkit-slider-thumb]:bg-foreground [&::-webkit-slider-thumb]:shadow-sm`,`[&::-moz-range-thumb]:h-3.5 [&::-moz-range-thumb]:w-3.5 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-none`,`[&::-moz-range-thumb]:border [&::-moz-range-thumb]:border-background [&::-moz-range-thumb]:bg-foreground [&::-moz-range-thumb]:shadow-sm`),min:0,max:100,step:`any`,value:c,onChange:t=>{let n=Math.round(Number(t.target.value)-e.percent);r?.(Math.min(Math.max(n,-50),50))}})]}),(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`span`,{className:`cursor-default`}),children:[`You are `,(0,W.jsx)(`span`,{className:L(`font-medium`,pA[o]),children:ge(Math.abs(_))}),` `,v?`over`:`under`,` the week's pace`]}),(0,W.jsxs)(h,{className:`max-w-64`,children:[`You are `,ne(Math.abs(_)),` `,v?`above`:`below`,` the quota boundary.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),`You're`,` `,v?`over-consuming`:`under-consuming`,`: you spend `,v?`faster`:`slower`,` than the week's pace allows.`]})]}),`:`,` `,(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`span`,{className:`cursor-default`}),children:[(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:ge(y)}),` spent`]}),(0,W.jsxs)(h,{className:`max-w-64`,children:[ne(y),` of the week's allowance has been consumed — `,Math.round(t),`% of it, said in the same unit as the pace figure beside it.`]})]}),b!==void 0&&(0,W.jsxs)(W.Fragment,{children:[`,`,` `,(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`span`,{className:`cursor-default`}),children:[(0,W.jsxs)(`span`,{className:L(`font-medium`,pA[o]),children:[Math.round(b),`%`]}),` of pace`]}),(0,W.jsxs)(h,{className:`max-w-64`,children:[`Against the `,Math.round(e.percent),`% of the week allowed by day `,e.day,` of 7 — 100% is exactly on pace. This is the line that parks unattended work, not the week's total.`]})]})]}),`.`,` `,(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`span`,{className:`cursor-default`}),children:[`Resets `,De(e.resetsAt)]}),(0,W.jsx)(h,{children:st(e.resetsAt)})]}),`.`,i.length>1?(0,W.jsxs)(W.Fragment,{children:[` `,(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`span`,{className:`cursor-default`}),children:`Show all limits`}),(0,W.jsx)(h,{children:(0,W.jsx)(`table`,{className:`border-collapse text-left`,children:(0,W.jsx)(`tbody`,{children:i.map(e=>(0,W.jsx)(bA,{window:e},e.label))})})})]})]}):null]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-3 gap-y-1 text-[11px] text-muted-foreground`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,W.jsx)(_A,{swatch:(0,W.jsx)(`span`,{className:L(`h-2 w-2 rounded-sm`,fA[o]),"aria-hidden":!0}),children:`Used`}),s&&(0,W.jsx)(_A,{swatch:(0,W.jsx)(`span`,{className:L(`h-2 w-2 rounded-sm opacity-35`,fA[o]),"aria-hidden":!0}),children:`Budget for Autonomous AI`}),(0,W.jsx)(_A,{swatch:(0,W.jsx)(`span`,{className:`h-2 w-0.5 bg-foreground`,"aria-hidden":!0}),children:(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`span`,{className:`inline-flex cursor-default items-center gap-0.5`}),children:[`Quota boundary`,(0,W.jsx)(Cr,{className:`h-3 w-3`,"aria-hidden":!0})]}),(0,W.jsxs)(h,{className:`max-w-64 space-y-2`,children:[(0,W.jsx)(`p`,{children:`Not a hard limit — just an indication of whether you're over- or under-consuming. It's calculated as a pro-rated share of the weekly limit.`}),(0,W.jsx)(`p`,{children:`If your usage matches the quota boundary, then you're spending exactly what the week's pace allows.`}),(0,W.jsx)(`p`,{children:`Fun fact: the quota boundary is shown exactly at the current time in the week usage bar above.`})]})]})})]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[f&&(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`span`,{className:`inline-flex cursor-default items-center gap-0.5 text-warning`}),children:[`⚠️ Eager consumption`,(0,W.jsx)(Cr,{className:`h-3 w-3`,"aria-hidden":!0})]}),(0,W.jsxs)(h,{children:[`Autonomous AI will spend tokens `,ne(d),` faster than the week's pace allows`]})]}),s&&(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`span`,{className:`cursor-default`}),children:u?(0,W.jsxs)(W.Fragment,{children:[`✅ Autonomous AI `,(0,W.jsx)(`em`,{children:`enabled`}),` `,(0,W.jsx)(`small`,{className:`text-muted-foreground/70`,children:`move slider to the left to disable`})]}):(0,W.jsxs)(W.Fragment,{children:[`❌ Autonomous AI `,(0,W.jsx)(`em`,{children:`disabled`}),` `,(0,W.jsx)(`small`,{className:`text-muted-foreground/70`,children:`move slider to the right to enable`})]})}),(0,W.jsx)(h,{className:`max-w-64`,children:u?`Autonomous AI enabled means that unattended work may start on its own while the account is under the line.`:`Autonomous AI disabled means that no agent starts on its own — every new agentic work is triggered by you manually.`})]})]})]})]})}function yA({window:e}){return(0,W.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 text-xs`,children:[(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:e.label}),(0,W.jsxs)(`span`,{className:`text-muted-foreground`,children:[Math.round(e.percentUsed),`% used`,e.resetsAtText?`${mA}resets ${e.resetsAtText}`:``]})]})}function bA({window:e}){return(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`td`,{className:`pr-3 align-baseline text-muted-foreground`,children:e.label}),(0,W.jsxs)(`td`,{className:`whitespace-nowrap align-baseline text-muted-foreground`,children:[Math.round(e.percentUsed),`% used`,e.resetsAtText?`${mA}resets ${e.resetsAtText}`:``]})]})}function xA(e){switch(e.unavailable){case void 0:return;case`no-subscription`:return`This account has no subscription usage to report, so there is no boundary to measure against.`;case`agent-not-found`:return`Claude Code was not found, so usage cannot be read.`;case`unrecognized`:return e.windows.length?`Claude Code's latest usage readout wasn't one this version recognizes, so these numbers are from the reading before it.`:`Claude Code reported its usage in a way this version does not recognize. Trying again shortly.`;default:return e.windows.length?`Couldn't refresh just now, so these numbers may be a little behind.`:`Reading your usage now.`}}var SA=500;function CA(e,t){let[n,r]=(0,U.useState)(e),[i,a]=(0,U.useState)(),o=(0,U.useRef)(null),s=(0,U.useRef)(void 0);return(0,U.useEffect)(()=>{e!==void 0&&(o.current!==null&&o.current!==e||(o.current=null,r(e)))},[e]),(0,U.useEffect)(()=>()=>clearTimeout(s.current),[]),[n,n=>{r(n),a(void 0),o.current=n,clearTimeout(s.current),s.current=setTimeout(()=>{t(n).then(t=>{t.ok||o.current!==n||(o.current=null,a(t.error),e!==void 0&&r(e))})},SA)},i]}function wA({limit:e,projects:t,boundary:n,percentUsed:r,others:i}){let a=Le(),o=t.map(e=>e.id).join(`,`),{value:s}=Ie(()=>e.read(a,t),void 0,1e4,[e.package,o]),[c,l,u]=CA(s,n=>e.save(a,t,n));return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(vA,{boundary:n,percentUsed:r,...c===void 0?{}:{offset:c,onChangeOffset:l},others:i}),u&&(0,W.jsxs)(`p`,{role:`alert`,className:`text-xs text-danger`,children:[`The limit was not saved: `,u]})]})}function TA({projects:e}){let t=nA(),{usageLimit:n}=_e(),r=t?xA(t):void 0,i=t?.unavailable!==void 0&&t.windows.length>0?t.readAt:void 0,a=t?hA(t.windows):void 0,o=t?.windows??[];return(0,W.jsxs)(R,{children:[(0,W.jsx)(y,{children:(0,W.jsx)(E,{className:`text-base`,children:`Usage`})}),(0,W.jsxs)(le,{className:`space-y-4`,children:[!t&&(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Reading your usage…`}),t?.boundary&&a?n?(0,W.jsx)(XT,{package:n.package,label:`usage limit`,children:(0,W.jsx)(wA,{limit:n,projects:ZT(n.projects,e),boundary:t.boundary,percentUsed:a.percentUsed,others:o})}):(0,W.jsx)(vA,{boundary:t.boundary,percentUsed:a.percentUsed,others:o}):t&&t.windows.length?(0,W.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:gA(a,o)}):null,!(t?.boundary&&a)&&o.length?(0,W.jsx)(`div`,{className:`space-y-1 border-t border-border pt-3`,children:o.map(e=>(0,W.jsx)(yA,{window:e},e.label))}):null,r?(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[r,i===void 0?``:` Last read ${s(new Date(i).toISOString())}.`]}):null]})]})}var EA=`/update-tickets`;function DA({busy:e,onStart:t,onConfigure:n,lastImportedAt:r,disabled:i,variant:a,size:o=`sm`,className:s}){return(0,W.jsx)(dt,{...a?{variant:a}:{},size:o,...i===void 0?{}:{disabled:i},...s?{className:s}:{},icon:(0,W.jsx)(Zr,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),label:`Update tickets`,menuAriaLabel:`Other ways to update the tickets`,tooltip:r?`Bring tickets/ up to date with the issues and comments changed since the last import.`:`Bring tickets/ up to date with the issue tracker. With no import on record, everything open comes across.`,busy:e,starting:e,onStart:t,onConfigure:n,prompt:EA,configureDescription:`Opens the launcher with the update prompt, so you can set the model and where it runs.`})}function OA({dismissible:e=!1,onAgentStarted:t,onSelectProject:n}){let{value:r,reload:i}=Ie(jn,null,1e4,[]),{value:a,reload:o}=Ie(dr,null,3e4,[]),s=dn(),c=ha(),{start:l,busy:u,error:d}=Fa(),[f,p]=(0,U.useState)(null),m=a?.cwdProjectId??r?.projects[0]?.projectId??null,_=r?.totals.projects??0,v=r?.projects.some(e=>e.hasTickets)??!1,b=c===`granted`&&hn(s),x=()=>{cn({notifyBrowser:!0}),c==="default"&&Notification.requestPermission()},S=async()=>{if(!m)return;let e=await l(m,EA,ja(s));e&&t(m,EA,e.agentId)},C=a?.cwd&&!a.cwdProjectId?a.cwd:void 0,w=[{key:`project`,label:`Add a project`,description:r&&_===0?(0,W.jsx)(Ei,{}):`A project is a git repo OpenAgent may work in.`,done:_>0,action:(0,W.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2`,children:[C&&(0,W.jsx)(z,{size:`sm`,className:`h-auto min-h-8 max-w-full whitespace-normal py-1 text-left [overflow-wrap:anywhere]`,onClick:()=>p({folder:C}),children:`Add ${C} as project…`}),a?.canPickFolder!==!1&&(0,W.jsx)(z,{size:`sm`,variant:`outline`,onClick:()=>p({}),children:`Select & add project directory`}),(0,W.jsx)(z,{size:`sm`,variant:`outline`,onClick:()=>p({fromAddress:!0}),children:`Add from a GitHub address`})]})},...(r?.queue.length??0)>0?[{key:`todos`,label:`Populate the queue of AI tasks`,description:`The agent queue: each entry is work the agent picks up on its own, so a filled queue is what lets it keep going without you.`,done:(r?.totals.openTodos??0)>0}]:[],...r?.projects.some(e=>e.providesTickets)?[{key:`tickets`,label:`Populate tickets/`,description:`tickets/ holds the bigger things to work on, in the repo. The agent researches and plans them, and they are the input the queue is filled from.`,done:v,optional:!0,action:(0,W.jsxs)(`div`,{className:`flex flex-col items-end gap-1`,children:[(0,W.jsx)(DA,{variant:`default`,busy:u,disabled:!m,onStart:()=>void S(),onConfigure:()=>m&&n(m)}),!m&&(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Add a project first`}),d&&(0,W.jsx)(`span`,{className:`text-xs text-destructive`,children:d})]})}]:[],{key:`browser-notification`,label:`Add browser notifications`,description:`Desktop pings while the dashboard is open, so a session waiting on you does not sit unnoticed.`,done:b,optional:!0,action:c===`denied`?(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Blocked in your browser settings`}):c===`unsupported`?(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Not supported by this browser`}):(0,W.jsx)(z,{size:`sm`,variant:`outline`,onClick:x,children:`Enable`})}],T=w.filter(e=>e.done).length;return(0,W.jsxs)(R,{children:[(0,W.jsxs)(y,{className:`flex flex-row items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(E,{className:`text-base`,children:`Onboarding`}),(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[T,` of `,w.length,` set up.`]})]}),e&&(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(z,{variant:`ghost`,size:`sm`,onClick:()=>cn({onboardingDismissed:!0}),"aria-label":`Remove, you can resume the onboarding on the settings page`}),children:(0,W.jsx)(Je,{className:`h-4 w-4`,"aria-hidden":!0})}),(0,W.jsx)(h,{children:`Remove, you can resume the onboarding on the settings page`})]})]}),(0,W.jsx)(le,{children:(0,W.jsx)(`ul`,{className:`divide-y divide-border`,children:w.map(e=>(0,W.jsxs)(`li`,{className:`flex flex-wrap items-start justify-between gap-x-4 gap-y-2 py-3 first:pt-0 last:pb-0`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 grow basis-96 items-start gap-3`,children:[e.done?(0,W.jsx)(ei,{className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--color-primary)]`,"aria-label":`Done`}):(0,W.jsx)(ti,{className:`mt-0.5 h-4 w-4 shrink-0 text-muted-foreground`,"aria-label":`Not done`}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`p`,{className:e.done?`text-sm text-muted-foreground line-through`:`text-sm`,children:[e.label,e.optional&&(0,W.jsx)(`span`,{className:`ml-2 rounded-full border border-border px-1.5 py-0.5 align-middle text-[10px] font-normal uppercase tracking-wide text-muted-foreground`,children:`Optional`})]}),typeof e.description==`string`?(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.description}):(0,W.jsx)(`div`,{className:`mt-1`,children:e.description})]})]}),!e.done&&e.action&&(0,W.jsx)(`div`,{className:`max-w-full shrink-0`,children:e.action})]},e.key))})}),f&&(0,W.jsx)(Di,{folder:f.folder,fromAddress:f.fromAddress===!0,onAdded:()=>{i(),o()},onClose:()=>p(null)})]})}function kA({working:e,onSelectAgent:t}){return(0,W.jsxs)(R,{children:[(0,W.jsx)(y,{children:(0,W.jsxs)(E,{className:`flex items-center gap-2 text-base`,children:[(0,W.jsx)(yr,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),`Agents`,(0,W.jsx)(`span`,{className:`truncate text-xs font-normal text-muted-foreground`,children:`Agents currently working`})]})}),(0,W.jsx)(le,{children:(0,W.jsx)(`ul`,{className:`space-y-0.5`,children:e.map(e=>(0,W.jsx)(AA,{label:jA(e),cloud:e.cloud,host:e.host,at:e.updatedAt,projectName:e.projectName,onOpen:()=>t(e.projectId,e.agentId)},`${e.projectId}:${e.agentId}`))})})]})}function AA({label:e,cloud:t,host:n,at:r,projectName:i,onOpen:a}){return(0,W.jsx)(`li`,{children:(0,W.jsxs)(`button`,{type:`button`,onClick:a,className:`flex w-full items-baseline gap-2 rounded-md px-2 py-1.5 text-left hover:bg-accent focus-visible:bg-accent focus-visible:outline-none`,children:[(0,W.jsx)(`span`,{"aria-hidden":!0,className:`shrink-0 text-muted-foreground/50`,children:`•`}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm`,children:e}),t&&(0,W.jsx)(`span`,{className:`shrink-0 text-[10px] uppercase text-muted-foreground`,children:t===`waiting`?`waiting`:`in cloud`}),(0,W.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:i}),n&&(0,W.jsxs)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:[`from `,n]}),r&&(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`span`,{className:`shrink-0 whitespace-nowrap text-xs tabular-nums text-muted-foreground/80`}),children:T(r)}),(0,W.jsx)(h,{children:me(r)})]})]})})}function jA(e){return e.intent?.trim()||e.scope?.trim()||e.projectName}function MA({projects:e}){let{cards:t}=_e();return(0,W.jsx)(W.Fragment,{children:t.map(t=>{let n=t.Card,r=ZT(t.projects,e);return r.length===0?null:(0,W.jsx)(XT,{package:t.package,label:`${t.id} card`,children:(0,W.jsx)(n,{projects:r})},`${t.package}/${t.id}`)})})}function NA({onSelectProject:e,onSelectAgent:t,onAgentStarted:n,interventions:r,projects:i,scope:a}){let{value:o}=Ie(jn,null,5e3,[]),s=dn().onboardingDismissed??!1,c=(o?.active??[]).filter(e=>a===null||e.projectId===a),l=a===null?i:i.filter(e=>e.id===a);return(0,W.jsx)(ce,{className:`min-h-0 flex-1`,children:(0,W.jsxs)(`div`,{className:`mx-auto max-w-6xl space-y-6 p-6`,children:[!s&&(0,W.jsx)(OA,{dismissible:!0,onAgentStarted:n,onSelectProject:e}),(0,W.jsx)(TA,{projects:i}),(0,W.jsxs)(`div`,{className:L(`grid grid-cols-[minmax(0,1fr)] items-start gap-4`,c.length>0&&`lg:grid-cols-2`),children:[(0,W.jsx)(PA,{items:r,onSelectProject:e,onSelectAgent:t}),c.length>0&&(0,W.jsx)(kA,{working:c,onSelectAgent:t})]}),(0,W.jsx)(`div`,{className:`gap-4 lg:columns-2 [&>*]:mb-4 [&>*]:break-inside-avoid`,children:(0,W.jsx)(MA,{projects:l})})]})})}function PA({items:e,onSelectProject:t,onSelectAgent:n}){let r=e=>e.agentId?n(e.projectId,e.agentId):t(e.projectId);return(0,W.jsxs)(R,{children:[(0,W.jsxs)(y,{children:[(0,W.jsxs)(E,{className:`flex items-center gap-2 text-base`,children:[(0,W.jsx)(Lr,{className:`h-4 w-4 text-muted-foreground`}),`Human Queue`,e.length>0&&(0,W.jsx)(`span`,{className:`rounded-full bg-primary px-1.5 text-xs font-semibold text-primary-foreground tabular-nums`,children:e.length})]}),(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Agents awaiting your approval, review, or input`})]}),(0,W.jsx)(le,{children:e.length===0?(0,W.jsx)(`p`,{className:`py-2 text-sm text-muted-foreground`,children:`AI doesn't need you.`}):(0,W.jsx)(`ul`,{className:`divide-y divide-border`,children:e.map(e=>(0,W.jsx)(`li`,{children:e.kind===`awaiting`?(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(e),className:`flex w-full items-center gap-2.5 py-2 text-left hover:opacity-80`}),children:[(0,W.jsx)(Wr,{className:`h-4 w-4 shrink-0 text-warning`}),(0,W.jsx)(`span`,{className:`shrink-0 text-xs font-medium text-warning`,children:`Awaiting`}),(0,W.jsx)(`span`,{className:`truncate text-sm font-medium`,children:e.title}),(0,W.jsx)(`span`,{className:`ml-auto shrink-0 text-xs text-muted-foreground`,children:e.projectName})]}),(0,W.jsx)(h,{children:`Open the agent to answer`})]}):e.kind===`unpushed`?(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(e),className:`flex w-full items-center gap-2.5 py-2 text-left hover:opacity-80`}),children:[(0,W.jsx)(Nr,{className:`h-4 w-4 shrink-0 text-info`}),(0,W.jsx)(`span`,{className:`shrink-0 text-xs font-medium text-info`,children:`Not published`}),(0,W.jsx)(`span`,{className:`truncate text-sm font-medium`,children:e.title}),e.commits!==void 0&&e.commits>0&&(0,W.jsx)(`span`,{className:`shrink-0 text-xs tabular-nums text-muted-foreground`,children:e.commits===1?`1 commit`:`${e.commits} commits`}),(0,W.jsx)(`span`,{className:`ml-auto shrink-0 text-xs text-muted-foreground`,children:e.projectName})]}),(0,W.jsx)(h,{children:`Open the session: work on ${e.branch??``} is not published`})]}):(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,className:`flex items-center gap-2.5 py-2 hover:opacity-80`}),children:[(0,W.jsx)(Fr,{className:`h-4 w-4 shrink-0 text-success`}),(0,W.jsxs)(`span`,{className:`shrink-0 text-xs font-medium tabular-nums text-muted-foreground`,children:[`#`,e.number]}),(0,W.jsx)(`span`,{className:`truncate text-sm font-medium`,children:e.title}),(0,W.jsx)(`span`,{className:`ml-auto shrink-0 text-xs text-muted-foreground`,children:e.projectName})]}),(0,W.jsx)(h,{children:`Open PR #${e.number}`})]})},Ft(e)))})})]})}function FA({projects:e}){let{settings:t}=_e();return(0,W.jsx)(W.Fragment,{children:t.map(t=>{let n=t.Section;return(0,W.jsx)(XT,{package:t.package,label:`${t.id} settings`,children:(0,W.jsx)(n,{projects:ZT(t.projects,e)})},`${t.package}/${t.id}`)})})}function IA({enabled:e,onChange:t}){let[n,r]=(0,U.useState)(null),[i,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(!1);return(0,U.useEffect)(()=>{if(!e){s(null),l(!1);return}let t=!0,n=()=>void Ln().then(e=>{t&&(s(e.version?.blocked?{got:e.version.got,expected:e.version.expected}:null),l(e.lastContact?.status===401))}).catch(()=>{});n();let r=setInterval(n,5e3);return()=>{t=!1,clearInterval(r)}},[e]),(0,U.useEffect)(()=>{if(!e){r(null),a(!1);return}let t=!0;return Rn().then(e=>{t&&r(e)}).catch(()=>{}),()=>{t=!1}},[e]),e?(0,W.jsxs)(`div`,{className:`mt-2 space-y-2 rounded-md border border-border bg-muted/30 p-3 text-xs`,children:[(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`Install the browser extension, open its options, and paste this token. It reports the question a Claude web session is parked on, so it shows up here instead of only on claude.ai.`}),o&&(0,W.jsxs)(`p`,{className:`text-danger`,children:[`The extension is blocked: it is v`,o.got,` and this dashboard expects v`,o.expected,`. Update it — pull the repo, then reload the extension at chrome://extensions.`]}),!o&&c&&(0,W.jsx)(`p`,{className:`text-danger`,children:`Something is calling the bridge with a token this dashboard rejects, so the calls get nowhere. Open the extension's options and save the token shown below again.`}),n===null?(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`Restart the dashboard to generate the token.`}):(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(`code`,{className:`min-w-0 flex-1 truncate rounded bg-muted px-2 py-1 font-mono`,children:i?n:`•`.repeat(24)}),(0,W.jsx)(z,{variant:`outline`,size:`sm`,onClick:()=>a(e=>!e),children:i?`Hide`:`Reveal`}),(0,W.jsx)(Oe,{text:n,label:`Copy the bridge token`})]})]}):null}function LA({enabled:e}){let[t,n]=(0,U.useState)(null);if((0,U.useEffect)(()=>{if(!e){n(null);return}let t=!0,r=()=>void Vn().then(e=>{t&&n(e)}).catch(()=>{});r();let i=setInterval(r,3e3);return()=>{t=!1,clearInterval(i)}},[e]),!e||!t)return null;let r=e=>void Kn(e).catch(()=>{});return(0,W.jsxs)(`div`,{className:`mt-2 space-y-2 rounded-md border border-border bg-muted/30 p-3 text-xs`,children:[t.state===`off`&&(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`The bridge browser is off.`}),t.state===`starting`&&(0,W.jsxs)(`p`,{className:`text-muted-foreground`,children:[`Starting the bridge browser: `,t.detail,`.`]}),t.state===`stopped`&&(0,W.jsxs)(`p`,{className:`text-danger`,children:[`The bridge browser is not running: `,t.detail,`.`,` `,(0,W.jsx)(z,{variant:`outline`,size:`sm`,onClick:()=>r(`restart`),children:`Restart`})]}),t.state===`running`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`p`,{className:`text-muted-foreground`,children:[`The bridge browser is running`,t.visible?` with its window shown`:`, minimized`,`.`,t.signIn&&` It is on claude.ai’s sign-in page: show the window and sign in once, then hide it again.`]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[t.visible?(0,W.jsx)(z,{variant:`outline`,size:`sm`,onClick:()=>r(`hide`),children:`Hide the window`}):(0,W.jsx)(z,{variant:`outline`,size:`sm`,onClick:()=>r(`show`),children:t.signIn?`Show the window to sign in`:`Show the window`}),(0,W.jsx)(z,{variant:`outline`,size:`sm`,onClick:()=>r(`restart`),children:`Restart`})]})]})]})}function RA({onAgentStarted:e,onSelectProject:t}){let n=dn(),r=qe(rr,[],[]),i=VT(),a=pn(n),o=ct(Ze()),s=n.driver??I[0],c=n.model??``,l=ha()===`denied`;return(0,W.jsx)(ce,{className:`min-h-0 flex-1`,children:(0,W.jsxs)(`div`,{className:`mx-auto max-w-4xl space-y-6 p-6 max-md:p-4`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Settings`}),(0,W.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Your defaults, everywhere.`})]}),(0,W.jsx)(OA,{onAgentStarted:e,onSelectProject:t}),(0,W.jsxs)(lt,{title:`Appearance`,children:[(0,W.jsx)(we,{label:`Theme`,description:`Follow the system, or pin light or dark.`,value:a,options:[{value:`system`,label:`System`},{value:`light`,label:`Light`},{value:`dark`,label:`Dark`}],onChange:e=>cn({theme:e})}),(0,W.jsx)(we,{label:`Editor`,description:`Which editor “Open in editor” launches.`,value:n.editor??``,options:[{value:``,label:`Auto-detect`},...i.map(e=>({value:e.bin,label:e.label}))],onChange:e=>cn({editor:e})})]}),(0,W.jsxs)(lt,{title:`Agent`,children:[(0,W.jsx)(we,{label:`Agent`,description:`Which coding agent runs the work.`,value:s,options:o,onChange:e=>cn({driver:e,model:``})}),(0,W.jsx)(we,{label:`Model`,description:`The models the agent lists. Its own default when none is picked.`,value:c,options:VA(o.find(e=>e.value===s),c),onChange:e=>cn({model:e})}),(0,W.jsx)(BA,{label:`Name each run`,description:`A small model is asked for the two to five words a run's row shows, in place of the first line of your prompt. One short turn with no tools, about a thirtieth of a cent a run. Off, a run is listed by what you asked for.`,checked:n.nameRuns??!0,onChange:e=>cn({nameRuns:e})}),(0,W.jsx)(BA,{label:`Show what the agent thought`,description:`Inside a run of steps, a row for each thought between them. Off, the panel is the steps the agent took and nothing else.`,checked:n.showThinking??!1,onChange:e=>cn({showThinking:e})}),(0,W.jsx)(BA,{label:`Post-merge cleanup`,description:`The box in the launcher's Auto menu, ticked by default: once a run ends done with a pull request, a fresh agent runs /post-merge-cleanup on its branch before it merges. In projects with that command.`,checked:n.postMergeCleanup??!1,onChange:e=>cn({postMergeCleanup:e})})]}),(0,W.jsxs)(lt,{title:`Notifications`,children:[(0,W.jsx)(BA,{label:`Browser`,description:l?`Blocked in your browser settings`:`Desktop notifications while the dashboard is open.`,checked:(n.notifyBrowser??!0)&&!l,disabled:l,onChange:e=>cn({notifyBrowser:e})}),(0,W.jsx)(BA,{label:`Human Queue`,description:`An agent awaiting your answer, or a PR ready to review.`,checked:n.notifyHumanIntervention??!0,onChange:e=>cn({notifyHumanIntervention:e})}),(0,W.jsx)(BA,{label:`New activity`,description:`Also ping when an agent starts or finishes.`,checked:n.notifyNewActivity??!1,onChange:e=>cn({notifyNewActivity:e})})]}),(0,W.jsxs)(lt,{title:`Claude web`,description:`A Claude web agent hands off and ends, so the questions its session asks never reach this dashboard. The browser bridge carries them back and types your answers into the session.`,children:[(0,W.jsx)(BA,{label:`Browser bridge`,description:`Carry claude.ai questions into this dashboard and type your answers back. A browser signed in to claude.ai does the work, through the bridge extension.`,checked:n.bridge??!1,onChange:e=>cn({bridge:e})}),(n.bridge??!1)&&(0,W.jsx)(zA,{daemonBrowser:n.bridgeBrowser??!1,onChange:e=>cn({bridgeBrowser:e})})]}),(0,W.jsx)(FA,{projects:r})]})})}function zA({daemonBrowser:e,onChange:t}){let n=(0,U.useId)(),r=(t,n,r,i)=>(0,W.jsxs)(`label`,{className:L(`flex cursor-pointer gap-3 rounded-md border p-3`,e===t?`border-primary/60 bg-muted/20`:`border-border`),children:[(0,W.jsx)(se,{value:t?`daemon`:`own`,"aria-label":n,className:`mt-1`}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`span`,{className:`block text-sm font-medium`,children:n}),(0,W.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:r}),e===t&&i]})]});return(0,W.jsxs)(`div`,{className:`mt-3`,children:[(0,W.jsx)(`p`,{id:n,className:`mb-2 text-sm font-medium`,children:`Which browser does the work?`}),(0,W.jsxs)(S,{"aria-labelledby":n,value:e?`daemon`:`own`,onValueChange:e=>t(e===`daemon`),children:[r(!0,`A browser the daemon runs — recommended`,`Chrome for Testing, downloaded once, signed in once, kept minimized. Web runs work with your own Chrome closed.`,(0,W.jsx)(LA,{enabled:!0})),r(!1,`Your own Chrome`,`Install the extension, open its options and paste the token. Web runs need your Chrome open.`,(0,W.jsx)(IA,{enabled:!0,onChange:()=>{}}))]})]})}function BA({label:e,description:t,checked:n,onChange:r,disabled:i=!1}){return(0,W.jsx)(He,{label:e,description:t,dimmed:i,control:(0,W.jsx)(x,{checked:n,disabled:i,onCheckedChange:e=>r(e===!0),"aria-label":e})})}function VA(e,t){let n=e?.models??[];return[{value:``,label:Gw},...n,...t&&!n.some(e=>e.value===t)?[{value:t,label:t}]:[],...n.length===0&&e?.modelsNote?[{value:e.modelsNote,label:e.modelsNote,disabled:!0}]:[]]}var HA=15e3,UA=1e4,WA=1e3;function GA(e){return e?e.landed?!0:e.exists?!e.empty||e.commits.length>0||!!e.pendingFiles?.length:!e.unchanged:!1}function KA(e,t,n=!0,r=!1,i=!1){let a=t?`handoff:${e}:${t}`:void 0;(0,U.useEffect)(()=>{i&&a!==void 0&&Ae(a)},[i,a]);let[o,s]=(0,U.useState)(!1),c=(0,U.useRef)(i);(0,U.useEffect)(()=>{c.current&&!i&&s(!0),c.current=i},[i]),(0,U.useEffect)(()=>{if(!o)return;let e=setTimeout(()=>s(!1),UA);return()=>clearTimeout(e)},[o]);let[l,u]=(0,U.useState)(HA),{value:d,reload:f,loaded:p}=Ie(n&&t?()=>Fn(e,t):null,null,l,[e,t,n,l,r],a===void 0?void 0:{remember:a});(0,U.useEffect)(()=>u(d?.prPending?300:o?WA:HA),[d?.prPending,o]),(0,U.useEffect)(()=>{o&&GA(d)&&s(!1)},[o,d]);let{busy:m,error:h,run:g}=tt(),[_,v]=(0,U.useState)(null);return{handoff:d,loaded:p,busy:m,error:h,pending:_,act:(e,t,n)=>{v(e),g(t,n).then(e=>e.ok?f():void 0).then(()=>v(null))}}}function qA(e,t,n){let[r,i]=(0,U.useState)(1e4),{value:a,reload:o}=Ie(()=>Sn(e,t),null,r,[e,t,r],{remember:`worktree:${e}:${t}`});(0,U.useEffect)(()=>i(a?.prPending?300:1e4),[a?.prPending]);let s=(0,U.useRef)({key:``,turn:n});return(0,U.useEffect)(()=>{let r=`${e}\0${t}`,i=s.current.key===r&&s.current.turn!==n;s.current={key:r,turn:n},i&&o()},[e,t,n,o]),a}function JA({projectId:e,agentId:t,events:n,retainedWorktree:r=!1,onWorktreeRemoved:i,onDeleted:a,label:o,projectName:s,runsOn:c=Yw(),expanded:l=!1,onToggle:u,ready:d=!0,checkout:f}){let p=d?jt(f?.checkout?.sizeBytes,``):``;return(0,W.jsxs)(`div`,{className:`@container flex min-h-11 items-center gap-2 overflow-hidden py-2 pr-2 md:pl-4 max-md:pl-11`,children:[(0,W.jsx)(Ok,{}),(0,W.jsx)(qT,{projectId:e,agentId:t,events:n,label:o,retainedWorktree:r,onWorktreeRemoved:i,onDeleted:a,...u?{details:{open:l,onToggle:u}}:{},size:p}),(0,W.jsx)(`span`,{"data-testid":`runs-on`,className:`max-w-64 shrink-0 truncate rounded bg-muted px-1.5 py-0.5 text-[11px] text-muted-foreground @max-md:hidden`,title:s?`${c} · ${s}`:c,children:s?`${c} · ${s}`:c}),(0,W.jsx)(`div`,{className:`grow shrink-0`}),d&&(0,W.jsx)(Kk,{events:n}),(0,W.jsx)(Dk,{})]})}function YA({projectId:e,agentId:t,live:n,files:r,onAgentStarted:i,onSending:a,onQueued:o,outcome:s,model:c,context:l}){let u=(0,U.useRef)(null),{busy:d,error:f,run:p}=tt(),{busy:m,error:_,run:v}=tt(),[y,b]=(0,U.useState)(!1);(0,U.useEffect)(()=>b(!1),[t]),(0,U.useEffect)(()=>{n||b(!1)},[n]);let[x,S]=(0,U.useState)(!1);(0,U.useEffect)(()=>S(!1),[t]),(0,U.useEffect)(()=>{n&&S(!1)},[n]);let C=m||y&&n,w=async r=>{let s=n;return s||a?.(r),(await p(()=>qn(e,r,t),`Could not send. Your text is kept, try again.`)).ok?(s?o?.(r):i?.(r,t),!0):(s||a?.(null),!1)},T=async e=>{d||(await w(e)&&u.current?.clear(),u.current?.focus())},E=()=>void v(()=>Hn(e,t).then(()=>!0),`Could not stop the agent.`).then(e=>{e&&b(!0)}),D=async()=>{d||await w(`This session was stopped before it finished, not because the work was done. Look at what you had already done, then carry on from there.`)&&S(!0)},O=n?(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(z,{type:`button`,size:`icon-sm`,onClick:E,disabled:C,"aria-label":`Stop agent`,className:`h-8 w-8 shrink-0 disabled:opacity-100`}),children:C?(0,W.jsx)(nt,{className:`h-4 w-4 animate-spin`}):(0,W.jsx)(ti,{className:`h-3 w-3 fill-current`})}),(0,W.jsx)(h,{children:C?`Stopping…`:`Stop agent`})]}):s?.stopped||x?(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(z,{type:`button`,size:`icon-sm`,onClick:()=>void D(),disabled:d||x,"aria-label":`Resume`,className:`h-8 w-8 shrink-0 disabled:opacity-100`}),children:d||x?(0,W.jsx)(nt,{className:`h-4 w-4 animate-spin`}):(0,W.jsx)(Jr,{className:`h-3.5 w-3.5 fill-current`})}),(0,W.jsx)(h,{children:d||x?`Resuming…`:`Resume the agent`})]}):void 0,k=f??_;return(0,W.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl p-2`,children:[k&&(0,W.jsx)(`p`,{role:`alert`,className:`mb-1 px-2 text-xs text-danger`,children:k}),(0,W.jsx)(oT,{ref:u,files:r,onSubmit:T,busy:d,submitLabel:`Send`,submitBusyLabel:n?`Sending…`:`Resuming…`,showDriverModel:!1,inAgent:!0,sessionModel:c,sessionContext:l,idleControl:O,placeholder:n?`Send now, and the agent reads it when its turn ends`:`Message the agent to continue it…`})]})}function XA({projectName:e,checkout:t,summary:n,actions:r,show:i,state:a}){let o=t?.branch,s=a??`${o??``}|${t?.pr?.number??``}|${t?.pr?.state??``}`,[c,l]=(0,U.useState)(null);return o===void 0||!i||c===s?null:(0,W.jsx)(`div`,{className:`mx-auto w-full max-w-3xl px-2 pt-2`,children:(0,W.jsxs)(`div`,{role:`group`,"aria-label":`This agent's work`,className:`flex items-center overflow-hidden rounded-[10px] bg-muted px-2 text-[13px] md:h-10 md:gap-2 max-md:min-h-10 max-md:flex-wrap max-md:gap-x-2 max-md:gap-y-1 max-md:py-1.5`,children:[e&&(0,W.jsx)(`span`,{className:`max-w-32 shrink-0 truncate text-muted-foreground`,title:e,children:e}),(0,W.jsx)(`span`,{className:`flex min-w-0 items-center text-muted-foreground`,children:(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`span`,{className:`truncate font-mono`}),children:o}),(0,W.jsx)(h,{className:`whitespace-pre-line`,children:[o,t?.checkout?.path].filter(Boolean).join(`
133
- `)})]})}),(0,W.jsx)(`div`,{className:`grow`}),(0,W.jsx)(`span`,{className:`shrink-0`,children:n}),t?.pr&&(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`a`,{href:t.pr.url,target:`_blank`,rel:`noreferrer`,className:`flex shrink-0 items-center gap-1.5 text-primary hover:underline`}),children:[(0,W.jsxs)(`span`,{children:[`PR #`,t.pr.number]}),(0,W.jsx)(`span`,{className:`rounded-full border border-border px-1.5 text-[10px] uppercase text-muted-foreground`,children:t.pr.state.toLowerCase()})]}),(0,W.jsx)(h,{children:t.pr.title})]}),(0,W.jsx)(`div`,{className:`flex items-center gap-2 md:shrink-0 max-md:min-w-0 max-md:flex-wrap`,children:r}),(0,W.jsx)(`button`,{type:`button`,"aria-label":`Hide this bar`,title:`Hide this bar`,onClick:()=>l(s),className:`flex h-6 w-6 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)]`,children:(0,W.jsx)(Je,{className:`h-3.5 w-3.5`})})]})})}function ZA({top:e,bottom:t,children:n}){let r=(0,U.useRef)(null),i=(0,U.useRef)(null),a=(0,U.useRef)(null);return(0,U.useLayoutEffect)(()=>{let e=()=>{let e=r.current.style;e.setProperty(`--chat-bottom`,`${i.current.getBoundingClientRect().height}px`),e.setProperty(`--chat-scroll-bar`,`${a.current.offsetWidth-a.current.clientWidth}px`)};if(e(),typeof ResizeObserver>`u`)return;let t=new ResizeObserver(e);for(let e of[i,a])t.observe(e.current);return()=>t.disconnect()},[]),(0,W.jsxs)(`div`,{ref:r,"data-testid":`chat-pane`,className:`flex min-h-0 flex-1 flex-col`,children:[(0,W.jsx)(`div`,{"data-testid":`chat-top`,className:`shrink-0`,children:e}),(0,W.jsxs)(`div`,{className:`relative isolate flex min-h-0 flex-1 flex-col overflow-hidden`,children:[(0,W.jsx)(`div`,{ref:a,className:`scrollbar-thin invisible absolute h-0 w-8 overflow-y-scroll`,"aria-hidden":!0}),n,(0,W.jsx)(`div`,{ref:i,"data-testid":`chat-bottom`,className:`absolute right-(--chat-scroll-bar) bottom-0 left-0 z-10 max-h-full overflow-y-auto bg-background`,children:t}),(0,W.jsx)(`div`,{className:`pointer-events-none absolute top-0 right-(--chat-scroll-bar) left-0 z-10 h-4 bg-gradient-to-b from-background to-transparent`,"aria-hidden":!0}),(0,W.jsx)(`div`,{className:`pointer-events-none absolute right-(--chat-scroll-bar) bottom-(--chat-bottom) left-0 z-10 h-4 bg-gradient-to-t from-background to-transparent`,"aria-hidden":!0})]})]})}function QA({children:e}){return(0,W.jsx)(`div`,{className:`grid flex-1 place-items-center pb-(--chat-bottom) text-sm text-muted-foreground`,children:e})}function $A(e){let t=/^You paused to ask: "([\s\S]*)"\. The user chose: ([\s\S]*)\. Continue with that decision\.$/.exec(e);return t?{question:t[1],answer:t[2]}:void 0}function ej(e){switch(e.kind){case`end`:return e.stopped?{said:`Stopped`}:!e.ok&&!e.waiting?{said:`Failed — ${e.detail??`unknown error`}`}:void 0;case`error`:return{said:e.headline,...e.detail!==void 0&&e.detail!==``?{detail:e.detail}:{}};case`settled`:return{said:`Done for now — waiting for your next message`};case`branch`:return{said:`Branch`,thing:e.branch};case`pull-request`:return{said:`Pull request`,thing:`#${e.number}`,href:e.url};case`cloud-anchor`:return{said:`Handed off at`,thing:e.sha.slice(0,7)};case`log`:return{said:e.message};case`intent`:return{said:`Asked for`,thing:e.text};case`driver`:return tj(e.event);default:return}}function tj(e){switch(e.type){case`notice`:return{said:e.message};case`error`:return{said:`The agent reported an error`,detail:e.message};case`rate-limit`:{let t=e.limit.window.replace(/_/g,`-`),n=`resets ${new Date(e.limit.resetsAt).toLocaleString()}`;return e.limit.status===`rejected`?{said:`The ${t} quota is used up`,thing:n}:e.limit.status===`allowed_warning`?{said:`The ${t} quota is running low`,thing:n}:void 0}default:return}}function nj({choice:e,pick:t}){let[n,r]=(0,U.useState)(!1),i=new Set(wt(t));return(0,W.jsxs)(`div`,{className:`overflow-hidden rounded-md border border-border`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>r(e=>!e),className:`flex w-full items-baseline gap-2 px-4 py-2 text-left text-xs text-muted-foreground hover:bg-accent/40`,"aria-expanded":n,children:[(0,W.jsx)(`span`,{className:`shrink-0 text-success`,children:`✓`}),(0,W.jsx)(`span`,{className:`truncate font-medium text-foreground`,children:e.title}),(0,W.jsx)(`span`,{className:`ml-auto shrink-0`,children:n?`Collapse`:`Expand`})]}),n&&(0,W.jsx)(`div`,{className:`border-t border-border p-4`,children:(0,W.jsxs)(`ul`,{className:`space-y-1 text-sm`,children:[e.options.map(e=>(0,W.jsxs)(`li`,{className:L(`flex items-baseline gap-2`,i.has(e.id)?``:`text-muted-foreground`),children:[(0,W.jsx)(`span`,{className:L(`w-4 shrink-0`,i.has(e.id)?`text-success`:``),children:i.has(e.id)?`✓`:``}),(0,W.jsx)(`span`,{children:e.label})]},e.id)),i.size===0&&(0,W.jsx)(`li`,{className:`text-muted-foreground`,children:`Accepted none`})]})})]})}function rj({label:e,value:t}){return(0,W.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,W.jsx)(Sr,{className:`h-3.5 w-3.5 shrink-0 text-success`,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`shrink-0 text-foreground`,children:e}),t!==void 0&&(0,W.jsx)(`span`,{className:`truncate`,title:t,children:t})]})}function ij(e,t){return e.workspace===void 0&&e.branch===void 0&&e.driver===void 0&&(!t||e.elsewhere===!0)}function aj({setup:e,live:t,working:n=!1,added:r}){let[i,a]=(0,U.useState)(!1),o=u(e.driver),s=Ze(),c=o?bt[o]:e.driver,l=e.model&&ze(o?s?.[o]:void 0,e.model);if(t){let n=e.branch!==void 0||e.workspace!==void 0?`Starting ${c??`the coding agent`}`:c!==void 0&&!e.elsewhere?`Making the checkout`:`Starting session`;return(0,W.jsxs)(`div`,{role:`status`,className:`flex min-w-0 flex-1 items-center gap-2 font-sans text-sm text-muted-foreground`,children:[(0,W.jsx)(CT,{}),(0,W.jsx)(`span`,{className:`morph-in`,children:(0,W.jsx)(`span`,{className:`text-shimmer`,children:n})},n),t.since!==void 0&&(0,W.jsx)(ST,{since:t.since})]})}return e.workspace===void 0&&e.branch===void 0&&c===void 0?ij(e,n)?null:(0,W.jsx)(`div`,{className:`min-w-0 flex-1 font-sans text-sm text-muted-foreground`,children:`Initialized session`}):(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 font-sans text-sm text-muted-foreground`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>a(e=>!e),"aria-expanded":i,className:`flex items-center gap-1.5 hover:text-foreground`,children:[(0,W.jsx)(`span`,{children:`Initialized session`}),(0,W.jsx)(Xe,{className:L(`h-3.5 w-3.5 shrink-0 transition-transform`,i&&`rotate-90`),"aria-hidden":!0})]}),i&&(0,W.jsxs)(`div`,{className:`mt-1.5 flex flex-col gap-1.5 rounded-lg border border-border px-3 py-2`,children:[e.workspace!==void 0&&(0,W.jsx)(rj,{label:`Made the checkout`,value:e.workspace}),e.branch!==void 0&&(0,W.jsx)(rj,{label:`Made the branch`,value:e.branch}),e.base!==void 0&&(0,W.jsxs)(`div`,{className:`min-w-0 truncate`,title:e.base,children:[`Started from the branch `,(0,W.jsx)(`span`,{className:`text-foreground`,children:e.base}),`, not from the main branch.`]}),c!==void 0&&(0,W.jsx)(rj,{label:`Started ${c}`,...l?{value:l}:{}}),r!==void 0&&(0,W.jsxs)(`div`,{className:`min-w-0`,children:[`Auto adds after each message: `,(0,W.jsxs)(`span`,{className:`text-foreground`,children:[`“`,r,`”`]})]})]})]})}function oj({open:e,onToggle:t,children:n,className:r}){return(0,W.jsxs)(`button`,{type:`button`,onClick:t,"aria-expanded":e,className:L(`flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground`,r),children:[(0,W.jsx)(Xe,{className:L(`h-3.5 w-3.5 shrink-0 transition-transform`,e&&`rotate-90`)}),n]})}function sj({agent:e,doing:t,end:n,onOpen:r}){let i=n?.status??e.status,a=!n&&e.status===`running`,o=!n&&e.endedAt!==void 0?ge(Date.parse(e.endedAt)-Date.parse(wi(e))):void 0,s=n?n.detail:a?t:o;return(0,W.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-baseline gap-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>r?.(e.id),className:`min-w-0 shrink truncate text-left text-foreground hover:underline`,"aria-label":`Open the subagent: ${_i(e)}`,children:[`↳ `,_i(e)]}),(0,W.jsxs)(`span`,{className:L(`flex shrink-0 items-center gap-1.5`,i===`waiting`?`text-muted-foreground`:oi[i]??`text-muted-foreground`),children:[a&&(0,W.jsx)(`span`,{className:`inline-block h-1.5 w-1.5 animate-pulse rounded-full bg-primary`,"aria-hidden":!0}),n?`ended ${i}`:i]}),s&&(0,W.jsx)(`span`,{className:`max-w-[45%] shrink-0 truncate text-muted-foreground`,children:s})]})}function cj({subagents:e,doing:t,onOpen:n}){let[r,i]=(0,U.useState)(!1),a=e.filter(e=>e.status===`running`).length;return a===0?null:(0,W.jsx)(`div`,{className:`border-t border-border py-1.5`,children:(0,W.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl px-4`,children:[(0,W.jsxs)(oj,{open:r,onToggle:()=>i(e=>!e),children:[`Subagents · `,a,` of `,e.length,` running`]}),r&&(0,W.jsx)(`div`,{className:`mt-1 flex flex-col gap-0.5 pl-4 font-mono text-xs`,children:e.map(e=>(0,W.jsx)(sj,{agent:e,doing:t[e.id],onOpen:n},e.id))})]})})}function lj({defaultTagName:e,props:t,render:n,state:r={},stateAttributesMapping:i}){let a=uj(dj(r,i),t);if(!n)return U.createElement(e,a);if(typeof n==`function`)return n(a,r);if(!U.isValidElement(n))return null;let o=n.props,s={...uj(a,o),ref:mj(a.ref,o.ref)};return U.cloneElement(n,s)}function uj(...e){let t={};for(let n of e){if(!n)continue;let e=n;for(let n of Object.keys(e)){let r=e[n];if(r===void 0)continue;let i=t[n];n===`className`?t[n]=[i,r].filter(Boolean).join(` `):n===`style`?t[n]={...i,...r}:n===`ref`?t[n]=mj(i,r):pj(n)&&typeof i==`function`&&typeof r==`function`?t[n]=fj(r,i):t[n]=r}}return t}function dj(e,t){let n={};for(let r of Object.keys(e)){let i=e[r],a=t?.[r]?.(i);if(a){Object.assign(n,a);continue}if(r===`slot`){n[`data-slot`]=i;continue}let o=`data-${String(r).replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}`;typeof i==`boolean`?n[o]=i?``:void 0:i!=null&&(n[o]=String(i))}return n}function fj(e,t){return function(n){e(n),n.defaultPrevented||t(n)}}function pj(e){return/^on[A-Z]/.test(e)}function mj(...e){let t=e.filter(Boolean);if(t.length!==0)return e=>{for(let n of t)typeof n==`function`?n(e):n&&(n.current=e)}}var hj=8,gj=64,_j=0,vj=.5,yj=180,bj=new Set([`ArrowDown`,`ArrowUp`,`End`,`Home`,`PageDown`,`PageUp`,` `]),xj={start:!1,end:!1},Sj={currentAnchorId:null,visibleMessageIds:[]};function Cj({content:e,scrollEdgeThreshold:t,spacer:n,viewport:r}){if(!r||!e)return xj;let i=Fj({content:e,spacer:n,viewport:r});return{start:r.scrollTop>t,end:i-r.scrollTop-r.clientHeight>t}}function wj({content:e,scrollMargin:t,scrollPreviousItemPeek:n,spacer:r,viewport:i,visibleMessageIds:a}){if(!e||!i)return Sj;let o=i.getBoundingClientRect(),s=o.top+t+n,c=typeof IntersectionObserver>`u`,l=[],u=null;for(let t of Tj(e,r)){let e=t.dataset.messageId;if(!e)continue;let n=t.dataset.scrollAnchor===`true`,r=n||c?t.getBoundingClientRect():null;(c&&r?r.bottom>s&&r.top<o.bottom:a.has(e))&&l.push(e),n&&r&&r.top<=s+vj&&(u=e)}return l.length===0&&u===null?Sj:{currentAnchorId:u,visibleMessageIds:l}}function Tj(e,t){return Array.from(e.children).filter(e=>e instanceof HTMLElement&&e!==t)}function Ej(e,t){for(let n=t;n<e.length;n++){let t=e[n];if(t?.dataset.scrollAnchor===`true`)return t}return null}function Dj(e,t){for(let n of e)if(n.dataset.scrollAnchor===`true`&&!t.has(n))return n;return null}function Oj(e,t){let n=0;for(let r=t;r<e.length;r++)if(e[r]?.dataset.scrollAnchor===`true`&&(n+=1,n>1))return!0;return!1}function kj(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n?.dataset.scrollAnchor===`true`)return n}return null}function Aj({content:e,spacer:t,viewport:n}){let r=n.getBoundingClientRect();for(let n of Tj(e,t)){if(!n.dataset.messageId)continue;let e=n.getBoundingClientRect();if(e.bottom>r.top&&e.top<r.bottom)return n}return null}function jj({align:e,element:t,scrollMargin:n,spacer:r,viewport:i}){let a=Mj(t,i),o=t.getBoundingClientRect().height,s=Rj(r);if(e===`center`){let e=Math.max(0,i.clientHeight-s.start-s.end);return a-s.start-(e-o)/2-n}if(e===`end`)return a-i.clientHeight+o+s.end+n;if(e===`nearest`){let e=a+o,t=i.scrollTop+s.start,r=i.scrollTop+i.clientHeight-s.end;return a>=t&&e<=r?i.scrollTop:a<t?a-s.start-n:e-i.clientHeight+s.end+n}return a-s.start-n}function Mj(e,t){let n=e.getBoundingClientRect(),r=t.getBoundingClientRect();return n.top-r.top+t.scrollTop}function Nj(e,t){return e.getBoundingClientRect().top-t.getBoundingClientRect().top}function Pj({content:e,scrollTop:t,spacer:n,viewport:r}){let i=Fj({content:e,spacer:n,viewport:r});return t+r.clientHeight-i}function Fj({content:e,spacer:t,viewport:n}){let r=Tj(e,t),i=Lj(e),a=n.getBoundingClientRect(),o=n.scrollTop,s=i.start+i.end;for(let e of r){let t=e.getBoundingClientRect();s=Math.max(s,t.bottom-a.top+o+i.end)}return s}function Ij(e){return Math.max(0,e.scrollHeight-e.clientHeight)}function Lj(e){let t=window.getComputedStyle(e);return{end:Bj(t.paddingBlockEnd||t.paddingBottom),start:Bj(t.paddingBlockStart||t.paddingTop)}}function Rj(e){let t=e?.parentElement;return t?Lj(t):{end:0,start:0}}function zj(e){if(!e)return 0;let t=window.getComputedStyle(e);return Bj(t.rowGap===`normal`?t.gap:t.rowGap)}function Bj(e){if(!e)return 0;let t=Number.parseFloat(e);return Number.isFinite(t)?t:0}function Vj({refs:e,commitScrollState:t,scheduleStateCommit:n,scheduleVisibilitySync:r}){let{streamingTurnRef:i,autoScrollRef:a,autoscrollingRef:o,autoscrollingTimeoutRef:s,contentRef:c,defaultScrollPositionAppliedRef:l,itemCountRef:u,messageElementsRef:d,modeRef:f,pendingScrollToMessageRef:p,prependRestoreRef:m,scrollMarginRef:h,scrollPreviousItemPeekRef:g,spacerGapRef:_,spacerHeightRef:v,spacerRef:y,viewportRef:b}=e,x=U.useCallback(e=>{s.current!==null&&(window.clearTimeout(s.current),s.current=null),o.current!==e&&(o.current=e,t()),e&&(s.current=window.setTimeout(()=>{s.current=null,o.current=!1,t()},yj))},[t]),S=U.useCallback(e=>{let t=y.current;if(!t)return;let n=Math.max(0,Math.ceil(e));v.current!==n&&(v.current=n,t.hidden=n===0,t.style.height=`${n}px`,t.style.marginTop=n>0?`${-_.current}px`:``)},[]),C=U.useCallback((e,{behavior:r=`auto`,autoscrolling:i=!1}={})=>{let a=b.current;if(!a)return;let o=Math.max(0,e);if(Math.abs(a.scrollTop-o)<=vj){a.scrollTop=o,t();return}i&&x(!0),a.scrollTo({top:o,behavior:r}),n()},[t,n,x]),w=U.useCallback(({behavior:e=`auto`}={})=>b.current?(S(0),i.current=null,f.current=`free-scrolling`,C(0,{behavior:e}),r(),!0):!1,[r,C,S]),T=U.useCallback(({behavior:e=`auto`}={})=>{let t=b.current;return t?(S(0),i.current=null,f.current=a.current?`following-bottom`:`free-scrolling`,C(Ij(t),{autoscrolling:!0,behavior:e}),r(),!0):!1},[r,C,S]),E=U.useCallback((e,{align:t=`start`,behavior:n=`auto`,scrollMargin:a=h.current}={},{keepPreviousPeek:o=!1}={})=>{let s=c.current,l=b.current;if(!s||!l||!s.contains(e))return!1;let u=jj({align:t,element:e,scrollMargin:o?a+g.current:a,spacer:y.current,viewport:l}),d=Pj({content:s,scrollTop:u,spacer:y.current,viewport:l});return S(d),m.current={element:e,viewportTop:Nj(e,l)},f.current=o?`anchored-to-message`:`settling-jump`,i.current=o?e:null,C(u,{behavior:n}),r(),!0},[r,C,S]),D=U.useCallback(()=>{let e=i.current;return!e||!e.isConnected||f.current!==`anchored-to-message`?!1:E(e,{align:`start`},{keepPreviousPeek:!0})},[E]),O=U.useCallback((e,t)=>{let n=d.current.get(e);return n?(l.current=!0,E(n,t)?(p.current=null,!0):(p.current={messageId:e,options:t},!0)):u.current===0?(p.current={messageId:e,options:t},l.current=!0,!0):!1},[E]);return{flushPendingScrollToMessage:U.useCallback(()=>{let e=p.current;if(!e)return!1;let t=d.current.get(e.messageId);return!t||!E(t,e.options)?!1:(p.current=null,l.current=!0,!0)},[E]),reanchorToAnchoredMessage:D,scrollToElement:E,scrollToEnd:T,scrollToMessage:O,scrollToStart:w}}function Hj(e,t){let n=e,r=new Set;return{getSnapshot:()=>n,hasListeners:()=>r.size>0,setSnapshot:e=>{t(n,e)||(n=e,r.forEach(e=>e()))},subscribe:(e,t,n)=>{let i=r.size===0;return r.add(e),i&&t?.(),()=>{r.delete(e),r.size===0&&n?.()}}}}function Uj(e,t){return Hj(e,t)}function Wj(){return Hj(Sj,Kj)}function Gj(e,t){return e.start===t.start&&e.end===t.end}function Kj(e,t){return e.currentAnchorId!==t.currentAnchorId||e.visibleMessageIds.length!==t.visibleMessageIds.length?!1:e.visibleMessageIds.every((e,n)=>e===t.visibleMessageIds[n])}function qj({autoScroll:e,scrollEdgeThreshold:t,scrollMargin:n,scrollPreviousItemPeek:r}){let i=U.useRef(e),a=U.useRef(!1),o=U.useRef(null),s=U.useRef(!1),c=U.useRef(t),l=U.useRef(0),u=U.useRef(null),d=U.useRef(0),f=U.useRef(e?`following-bottom`:`free-scrolling`),p=U.useRef(new Map),m=U.useRef(null),h=U.useRef(null),g=U.useRef(null),_=U.useRef(r),v=U.useRef(!0),y=U.useRef(null),b=U.useRef(n),x=U.useRef(null),S=U.useRef(0),C=U.useRef(0),w=U.useRef(null),T=U.useRef(null),E=U.useRef(null),D=U.useRef(null),O=U.useRef(null),k=U.useRef(null),A=U.useRef(null),j=U.useRef(null),M=U.useRef(new Set),N=U.useRef(new WeakSet);return E.current===null&&(E.current=Uj(xj,Gj)),j.current===null&&(j.current=Wj()),i.current=e,c.current=t,b.current=n,_.current=r,{autoScrollRef:i,autoscrollingRef:a,autoscrollingTimeoutRef:D,streamingTurnRef:g,contentRef:o,defaultScrollPositionAppliedRef:s,firstItemRef:u,itemCountRef:l,lastScrollTopRef:d,messageElementsRef:p,modeRef:f,pendingScrollFrameRef:x,pendingScrollToMessageRef:m,prependRestoreRef:h,preserveScrollOnPrependRef:v,rootRef:y,scrollEdgeThresholdRef:c,scrollMarginRef:b,scrollPreviousItemPeekRef:_,spacerGapRef:S,spacerHeightRef:C,spacerRef:w,stateFrameRef:T,stateStore:E.current,viewportRef:O,visibilityFrameRef:k,visibilityObserverRef:A,visibilityStore:j.current,visibleMessageIdsRef:M,handledScrollAnchorsRef:N}}function Jj(e,t){return U.useCallback(n=>{e.current=n,n&&t()},[e,t])}function Yj({autoScroll:e=!1,defaultScrollPosition:t=`end`,scrollEdgeThreshold:n=hj,scrollPreviousItemPeek:r=gj,scrollMargin:i=_j}){let a=qj({autoScroll:e,scrollEdgeThreshold:n,scrollMargin:i,scrollPreviousItemPeek:r}),{streamingTurnRef:o,autoScrollRef:s,autoscrollingRef:c,autoscrollingTimeoutRef:l,contentRef:u,defaultScrollPositionAppliedRef:d,firstItemRef:f,itemCountRef:p,lastScrollTopRef:m,messageElementsRef:h,modeRef:g,pendingScrollFrameRef:_,pendingScrollToMessageRef:v,prependRestoreRef:y,preserveScrollOnPrependRef:b,rootRef:x,scrollEdgeThresholdRef:S,scrollMarginRef:C,scrollPreviousItemPeekRef:w,spacerGapRef:T,spacerHeightRef:E,spacerRef:D,stateFrameRef:O,stateStore:k,viewportRef:A,visibilityFrameRef:j,visibilityObserverRef:M,visibilityStore:N,visibleMessageIdsRef:P,handledScrollAnchorsRef:ee}=a,F=U.useRef(t);F.current!==t&&(F.current=t,d.current=!1);let te=U.useCallback(e=>{let t=x.current,n=A.current,r=[e.start&&`start`,e.end&&`end`].filter(Boolean).join(` `),i=c.current;for(let e of[t,n])e&&(r?e.setAttribute(`data-scrollable`,r):e.removeAttribute(`data-scrollable`),e.toggleAttribute(`data-autoscrolling`,i))},[]),ne=U.useCallback(e=>{let t=A.current?.scrollTop??0,n=t<m.current-vj;m.current=t,s.current&&!e.end&&g.current!==`settling-jump`&&g.current!==`anchored-to-message`?g.current=`following-bottom`:g.current===`following-bottom`&&e.end&&n&&!c.current&&(g.current=`free-scrolling`)},[]),I=U.useCallback(()=>{let e=Cj({content:u.current,scrollEdgeThreshold:S.current,spacer:D.current,viewport:A.current});ne(e);let t=g.current===`following-bottom`?{...e,end:!1}:e;te(t),k.setSnapshot(t)},[ne,k,te]),re=U.useCallback(()=>{O.current===null&&(O.current=window.requestAnimationFrame(()=>{O.current=null,I()}))},[I]),L=U.useCallback(()=>{N.hasListeners()&&j.current===null&&(j.current=window.requestAnimationFrame(()=>{j.current=null,N.hasListeners()&&N.setSnapshot(wj({content:u.current,scrollMargin:C.current,scrollPreviousItemPeek:w.current,spacer:D.current,viewport:A.current,visibleMessageIds:P.current}))}))},[N]),{flushPendingScrollToMessage:ie,reanchorToAnchoredMessage:ae,scrollToElement:oe,scrollToEnd:R,scrollToMessage:se,scrollToStart:ce}=Vj({refs:a,commitScrollState:I,scheduleStateCommit:re,scheduleVisibilitySync:L}),le=U.useCallback(()=>{let e=y.current,t=A.current;if(!e||!t||!e.element.isConnected)return!1;let n=Nj(e.element,t)-e.viewportTop;return Math.abs(n)<=vj?!1:(t.scrollTop+=n,e.viewportTop=Nj(e.element,t),re(),L(),!0)},[re,L]),ue=U.useCallback(()=>{let e=u.current,t=A.current;if(!e||!t){y.current=null;return}let n=Aj({content:e,spacer:D.current,viewport:t});y.current=n?{element:n,viewportTop:Nj(n,t)}:null},[]),de=U.useCallback(()=>{_.current===null&&(_.current=window.requestAnimationFrame(()=>{_.current=null,ie()&&ue()}))},[ue,ie]),fe=U.useCallback(()=>{if(!t||d.current||p.current===0)return!1;let e=!1;if(t===`last-anchor`){let t=u.current,n=A.current,r=t&&n?kj(Tj(t,D.current)):null;if(!t||!n||!r)e=R({behavior:`auto`});else{let i=Mj(r,n);e=Fj({content:t,spacer:D.current,viewport:n})-i<=n.clientHeight?R({behavior:`auto`}):oe(r,{align:`start`},{keepPreviousPeek:!0})}}else e=t===`end`?R({behavior:`auto`}):ce({behavior:`auto`});return e?(d.current=!0,!0):!1},[t,oe,R,ce]),pe=U.useCallback(()=>{let e=u.current;if(!e)return;let t=Tj(e,D.current),n=p.current,r=f.current;p.current=t.length,f.current=t[0]??null,(()=>{if(ie())return;if(n===0){if(fe()||t.length>0&&s.current&&R({behavior:`auto`}))return;I(),L();return}let e=r?t.indexOf(r):-1;if(b.current&&e>0){le();return}if(t.length>n){let e=Ej(t,n);if(e){if(s.current&&g.current===`following-bottom`&&Oj(t,n)){R({behavior:`auto`});return}oe(e,{align:`start`},{keepPreviousPeek:!0}),ee.current.add(e);return}}if(t.length===n){let e=Dj(t,ee.current);if(e){oe(e,{align:`start`},{keepPreviousPeek:!0}),ee.current.add(e);return}}g.current===`following-bottom`&&s.current?R({behavior:`auto`}):(I(),L())})(),ue()},[fe,ue,I,ie,le,L,oe,R]),me=U.useCallback(()=>{if(g.current===`following-bottom`&&s.current){R({behavior:`auto`});return}let e=E.current;if(ae()){s.current&&e>0&&E.current===0&&R({behavior:`auto`});return}re(),L()},[ae,re,L,R]),he=U.useCallback(()=>{let e=A.current;if(!(!e||!N.hasListeners())){if(typeof IntersectionObserver>`u`){L();return}M.current||=new IntersectionObserver(e=>{for(let t of e){let e=t.target.dataset.messageId;e&&(t.isIntersecting?P.current.add(e):P.current.delete(e))}L()},{root:e,rootMargin:`${-(C.current+w.current)}px 0px 0px 0px`,threshold:[0,.01,.5,1]}),h.current.forEach(e=>{M.current?.observe(e)}),L()}},[L,N]),ge=U.useCallback(()=>{j.current!==null&&(window.cancelAnimationFrame(j.current),j.current=null),M.current?.disconnect(),M.current=null,P.current.clear(),N.setSnapshot(Sj)},[N]),_e=U.useCallback((e,t,n)=>{if(t){h.current.set(e,t),M.current?.observe(t),L(),v.current?.messageId===e&&de();return}n&&h.current.get(e)===n&&(h.current.delete(e),P.current.delete(e),M.current?.unobserve(n),L())},[de,L]),ve=U.useCallback(()=>{(g.current===`following-bottom`||g.current===`anchored-to-message`||g.current===`settling-jump`)&&(o.current=null,g.current=`free-scrolling`)},[]),ye=U.useCallback(()=>te(k.getSnapshot()),[k,te]),be=Jj(x,ye),z=Jj(A,ye),xe=U.useCallback(e=>{u.current=e},[]),Se=U.useCallback(e=>{D.current=e,T.current=zj(e?.parentElement??null)},[]),Ce=U.useCallback(()=>{I(),L(),ue()},[ue,I,L]),we=U.useMemo(()=>({handleContentChange:pe,handleResize:me,observeVisibility:he,preserveScrollOnPrependRef:b,scrollToEnd:R,scrollToMessage:se,scrollToStart:ce,setContentElement:xe,setRootElement:be,setSpacerElement:Se,setViewportElement:z,stateStore:k,syncAfterScroll:Ce,unobserveVisibility:ge,userScrollIntent:ve,viewportRef:A,visibilityStore:N}),[pe,me,he,R,se,ce,xe,be,Se,z,k,Ce,ge,ve,N]);return U.useLayoutEffect(()=>{fe()},[fe]),U.useEffect(()=>()=>{O.current!==null&&(window.cancelAnimationFrame(O.current),O.current=null),j.current!==null&&(window.cancelAnimationFrame(j.current),j.current=null),l.current!==null&&(window.clearTimeout(l.current),l.current=null),_.current!==null&&(window.cancelAnimationFrame(_.current),_.current=null),M.current?.disconnect(),M.current=null},[]),U.useLayoutEffect(()=>{if(e&&g.current===`following-bottom`&&p.current>0){R({behavior:`auto`});return}I()},[e,I,R]),{context:we,registerMessage:_e}}function Xj(e){let t=U.useRef(e);return t.current=e,t}var Zj=U.createContext(null),Qj=U.createContext(null);function $j(){let e=U.useContext(Zj);if(!e)throw Error(`useMessageScroller must be used within a MessageScroller.`);return e}function eM(){let e=U.useContext(Qj);if(!e)throw Error(`MessageScrollerItem must be used within a MessageScroller.`);return e}function tM(){let{scrollToEnd:e,scrollToMessage:t,scrollToStart:n}=$j();return U.useMemo(()=>({scrollToEnd:e,scrollToMessage:t,scrollToStart:n}),[e,t,n])}function nM({autoScroll:e=!1,children:t,defaultScrollPosition:n=`end`,scrollEdgeThreshold:r,scrollPreviousItemPeek:i,scrollMargin:a}){let{context:o,registerMessage:s}=Yj({autoScroll:e,defaultScrollPosition:n,scrollEdgeThreshold:r,scrollPreviousItemPeek:i,scrollMargin:a});return(0,W.jsx)(Zj.Provider,{value:o,children:(0,W.jsx)(Qj.Provider,{value:s,children:t})})}function rM({children:e,...t}){let{setRootElement:n}=$j();return(0,W.jsx)(`div`,{ref:n,...t,children:e})}function iM({"aria-label":e,children:t,onKeyDown:n,onScroll:r,onTouchMove:i,onWheel:a,preserveScrollOnPrepend:o=!0,ref:s,role:c,tabIndex:l,...u}){let{handleResize:d,preserveScrollOnPrependRef:f,setViewportElement:p,syncAfterScroll:m,userScrollIntent:h,viewportRef:g}=$j();f.current=o;let _=U.useCallback(e=>{p(e),mj(s)?.(e)},[s,p]);function v(e){m(),r?.(e)}function y(e){h(),a?.(e)}function b(e){h(),i?.(e)}function x(e){bj.has(e.key)&&h(),n?.(e)}return U.useEffect(()=>{let e=g.current;if(!e||typeof ResizeObserver>`u`)return;let t=0,n=new ResizeObserver(()=>{window.cancelAnimationFrame(t),t=window.requestAnimationFrame(d)});return n.observe(e),()=>{window.cancelAnimationFrame(t),n.disconnect()}},[d,g]),(0,W.jsx)(`div`,{ref:_,role:c??`region`,"aria-label":e??`Messages`,tabIndex:l??0,onKeyDown:x,onScroll:v,onTouchMove:b,onWheel:y,...u,children:t})}function aM({"aria-relevant":e,children:t,ref:n,role:r,spacerClassName:i,...a}){let{handleContentChange:o,handleResize:s,setContentElement:c,setSpacerElement:l}=$j(),u=U.useRef(null),d=U.useCallback(e=>{u.current=e,c(e),mj(n)?.(e)},[n,c]);return U.useLayoutEffect(()=>{let e=u.current;if(!e||(o(),typeof MutationObserver>`u`))return;let t=new MutationObserver(()=>{o()});return t.observe(e,{childList:!0}),()=>t.disconnect()},[o]),U.useEffect(()=>{let e=u.current;if(!e||typeof ResizeObserver>`u`)return;let t=0,n=new ResizeObserver(()=>{window.cancelAnimationFrame(t),t=window.requestAnimationFrame(s)});return n.observe(e),()=>{window.cancelAnimationFrame(t),n.disconnect()}},[s]),(0,W.jsxs)(`div`,{ref:d,role:r??`log`,"aria-relevant":e??`additions`,...a,children:[t,(0,W.jsx)(`div`,{ref:l,"aria-hidden":`true`,"data-message-scroller-spacer":``,hidden:!0,className:i})]})}function oM({messageId:e,ref:t,scrollAnchor:n=!1,...r}){let i=eM(),a=U.useRef(null);return(0,W.jsx)(`div`,{ref:U.useCallback(n=>{let r=a.current;a.current=n,e&&i(e,n,r),mj(t)?.(n)},[e,t,i]),"data-message-id":e,"data-scroll-anchor":n?`true`:`false`,...r})}function sM({behavior:e=`smooth`,children:t,direction:n=`end`,onClick:r,render:i,tabIndex:a,type:o=`button`,...s}){let{scrollToEnd:c,scrollToStart:l,stateStore:u}=$j(),d=Xj(r),f=U.useCallback(e=>u.subscribe(e),[u]),p=U.useCallback(()=>{let e=u.getSnapshot();return n===`start`?e.start:e.end},[n,u]),m=U.useSyncExternalStore(f,p,p),h=U.useCallback(t=>{m&&(d.current?.(t),t.defaultPrevented||(t.currentTarget.blur(),n===`start`?l({behavior:e}):c({behavior:e})))},[e,n,m,d,c,l]);return lj({defaultTagName:`button`,props:uj({type:o,inert:!m,tabIndex:m?a:-1,children:t??(0,W.jsxs)(`span`,{children:[`Scroll to `,n]}),onClick:h},s),render:i,state:{active:m,direction:n},stateAttributesMapping:{active:e=>({"data-active":e?`true`:`false`})}})}var cM={Provider:nM,Root:rM,Viewport:iM,Content:aM,Item:oM,Button:sM},lM=cM.Provider;function uM({className:e,...t}){return(0,W.jsx)(cM.Root,{"data-slot":`message-scroller`,className:L(`group/message-scroller relative flex size-full min-h-0 flex-col overflow-hidden`,e),...t})}function dM({className:e,...t}){return(0,W.jsx)(cM.Viewport,{"data-slot":`message-scroller-viewport`,className:L(`size-full min-h-0 min-w-0 overflow-y-auto overscroll-contain`,`scrollbar-thin scrollbar-gutter-stable data-autoscrolling:scrollbar-quiet`,e),...t})}function fM({className:e,...t}){return(0,W.jsx)(cM.Content,{"data-slot":`message-scroller-content`,className:L(`flex h-max min-h-full flex-col`,e),...t})}function pM({className:e,scrollAnchor:t=!1,...n}){return(0,W.jsx)(cM.Item,{"data-slot":`message-scroller-item`,scrollAnchor:t,className:L(`min-w-0 shrink-0`,e),...n})}function mM({direction:e=`end`,className:t,children:n,...r}){return(0,W.jsx)(cM.Button,{"data-slot":`message-scroller-button`,"data-direction":e,direction:e,className:L(`absolute left-1/2 z-10 flex -translate-x-1/2 items-center gap-1 rounded-full border border-border bg-background/90 px-3 py-1 text-xs text-foreground shadow-sm backdrop-blur transition-[translate,scale,opacity] duration-200 hover:bg-accent`,`data-[active=false]:pointer-events-none data-[active=false]:scale-95 data-[active=false]:opacity-0`,`data-[active=true]:translate-y-0 data-[active=true]:scale-100 data-[active=true]:opacity-100`,`data-[direction=end]:bottom-3 data-[direction=end]:data-[active=false]:translate-y-full`,`data-[direction=start]:top-3 data-[direction=start]:data-[active=false]:-translate-y-full`,t),...r,children:n??(0,W.jsxs)(W.Fragment,{children:[`Jump to latest`,(0,W.jsx)(mr,{className:`size-3.5`,"aria-hidden":!0})]})})}function hM(e){return e.kind===`driver`?e.event.type===`start`?e.event.prompt:e.event.type===`text`?e.event.text:null:null}function gM(e){return e.replace(/\s+/g,` `).trim().length>100}function _M(e){return e.kind===`driver`?e.event.type===`start`?`you`:`agent`:e.kind}function vM(e){return e.kind===`driver`&&e.event.type===`start`}function yM(e){return e.kind===`driver`?e.event.type===`error`:e.kind===`error`||e.kind===`end`&&!e.ok&&!e.stopped&&!e.waiting}function bM(e){return yM(e)?`text-danger`:``}function xM(e){return yM(e)?`bg-danger/10`:``}function SM(e){let t=e.findIndex(vM);return t<=0?e:[e[t],...e.slice(0,t),...e.slice(t+1)]}function CM(e){return new Date(e).toLocaleTimeString()}function wM(e){let t=new Map,n=new Set,r=new Map,i=new Map;e.forEach((e,t)=>{e.kind===`choice`?r.set(e.id,{e,at:t}):e.kind===`choice-resolved`&&i.set(e.id,{e,at:t})});let a=new Set(e.flatMap(e=>vM(e)?[$A(e.event.prompt)?.question]:[]));for(let t of e)t.kind===`choice`&&a.has(t.title)&&n.add(t);let o=new Set(Pt(e).map(e=>e.id));for(let[e,a]of r){if(n.has(a.e))continue;let{kind:r,...s}=a.e,c=i.get(e);o.has(e)?t.set(a.e,{choice:s}):c&&c.at>a.at&&(t.set(a.e,{choice:s,pick:c.e.picked}),n.add(c.e))}return{rows:t,hidden:n}}function TM(e){return new Set(e.filter(e=>e.kind===`end`&&(e.ok||e.waiting)))}function EM(e){let t=new Set,n;for(let r of e)vM(r)?n=void 0:r.kind===`driver`&&r.event.type===`text`?n=r:r.kind===`choice`&&n&&t.add(n);return t}function DM(e){return e.replace(/```await-choices\b[\s\S]*?(```|$)/g,``).trim()}function OM({text:e}){return(0,W.jsx)(`div`,{className:`min-w-0 flex-1 font-sans text-foreground`,children:(0,W.jsx)(o,{text:e})})}function kM({text:e,at:t}){let[n,r]=(0,U.useState)(!1);return(0,W.jsxs)(`div`,{className:`flex items-center gap-1 font-sans text-muted-foreground`,children:[(0,W.jsx)(`button`,{type:`button`,"aria-label":n?`Copied`:`Copy this message`,title:n?`Copied`:`Copy this message`,onClick:()=>{navigator.clipboard?.writeText(e).then(()=>r(!0),()=>void 0)},className:`flex h-6 w-6 items-center justify-center rounded hover:bg-accent hover:text-accent-foreground`,children:n?(0,W.jsx)(Se,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):(0,W.jsx)(be,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),t!==void 0&&(0,W.jsx)(`time`,{dateTime:t,title:new Date(t).toLocaleString(),className:`px-1 text-[11px]`,children:T(t)})]})}var AM=8,jM=600;function MM(e){return e.length>jM||e.trim().split(`
134
- `).length>AM}function NM({choice:e}){let[t,n]=(0,U.useState)(!1);return(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 font-sans text-sm text-muted-foreground`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),"aria-expanded":t,"aria-label":`Asking ${e.title}`,className:`flex max-w-full items-center gap-1.5 hover:text-foreground`,children:[(0,W.jsx)(`span`,{className:`shrink-0`,children:`Asking`}),(0,W.jsx)(`span`,{className:`truncate text-foreground`,children:e.title}),(0,W.jsx)(Xe,{className:`h-3.5 w-3.5 shrink-0 transition-transform ${t?`rotate-90`:``}`,"aria-hidden":!0})]}),t&&(0,W.jsx)(`ul`,{className:`mt-1.5 flex flex-col gap-1 rounded-lg border border-border px-3 py-2`,children:e.options.map(e=>(0,W.jsx)(`li`,{className:`text-foreground`,children:e.label},e.id))})]})}function PM({question:e,answer:t}){return(0,W.jsxs)(`div`,{role:`group`,"aria-label":`Your answer`,className:`min-w-[min(100%,20rem)] max-w-[85%] rounded-lg border border-border p-2.5 font-sans text-sm`,children:[(0,W.jsx)(`div`,{className:`text-muted-foreground`,children:e}),(0,W.jsx)(`div`,{className:`text-foreground`,children:t})]})}function FM({text:e,at:t,queued:n=!1,attached:r,fresh:i=!1}){let[a,s]=(0,U.useState)(!1),c=MM(e);return(0,W.jsxs)(`div`,{className:`group/prompt flex min-w-0 flex-1 flex-col items-end font-sans text-foreground ${i?`bubble-in`:``}`,children:[(0,W.jsxs)(`div`,{role:`group`,"aria-label":n?`Your message, queued`:`Your message`,className:`max-w-[85%] min-w-0 rounded-xl bg-muted px-3.5 py-2 ${n?`opacity-60`:``}`,children:[(0,W.jsx)(`div`,{className:c&&!a?`max-h-40 overflow-hidden`:``,children:(0,W.jsx)(o,{text:e})}),c&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>s(e=>!e),"aria-expanded":a,className:`mt-1 text-xs text-muted-foreground hover:text-foreground`,children:a?`Show less`:`Show more`})]}),r!==void 0&&(0,W.jsx)(IM,{text:r}),n?(0,W.jsx)(`span`,{className:`h-4 pr-1 text-[10px] text-muted-foreground`,children:`Queued`}):(0,W.jsx)(`time`,{dateTime:t,title:t===void 0?void 0:new Date(t).toLocaleString(),className:`h-4 pr-1 text-[10px] tabular-nums text-muted-foreground opacity-0 transition-opacity group-hover/prompt:opacity-100`,children:t===void 0?``:CM(t)})]})}function IM({text:e}){let[t,n]=(0,U.useState)(!1);return(0,W.jsxs)(`div`,{className:`mt-1 flex max-w-[85%] min-w-0 flex-col items-end text-xs text-muted-foreground`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),"aria-expanded":t,className:`flex items-center gap-1 hover:text-foreground`,children:[(0,W.jsx)(`span`,{children:`Sent with this message`}),(0,W.jsx)(Xe,{className:`h-3.5 w-3.5 shrink-0 transition-transform ${t?`rotate-90`:``}`,"aria-hidden":!0})]}),t&&(0,W.jsx)(`pre`,{className:`mt-1 max-h-80 w-full overflow-auto whitespace-pre-wrap break-words rounded-lg border border-border px-3 py-2 text-left font-mono text-foreground`,children:e})]})}function LM({text:e}){let[t,n]=(0,U.useState)(!1);return gM(e)?(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-1.5`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>n(!t),"aria-expanded":t,"aria-label":t?`Collapse message`:`Expand message`,className:`shrink-0 select-none text-muted-foreground transition-transform ${t?`rotate-90`:``}`,children:`›`}),(0,W.jsx)(`div`,{className:t?`min-w-0 flex-1`:`max-h-[1.35rem] min-w-0 flex-1 cursor-pointer overflow-hidden`,onClick:t?void 0:()=>n(!0),children:(0,W.jsx)(o,{text:e,compact:!0})})]}):(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,W.jsx)(o,{text:e,compact:!0})})}function RM(e){return e.kind===`driver`&&(e.event.type===`action`||e.event.type===`thought`)?{...e.event}:void 0}function zM(e){return e.kind===`driver`&&e.event.type===`output`?e.event:void 0}function BM(e,t=!1){let n=e[e.length-1],r=t&&n!==void 0?RM(n):void 0;if(r?.type===`action`)return{...BM(e.slice(0,-1)),current:r};let i=[],a=new Map,o,s=new Map,c=()=>{o?.steps.some(e=>e.type===`action`)&&(i.push(o.head),a.set(o.head,o.steps)),o=void 0};for(let t of e){let e=zM(t);if(e){let t=s.get(e.id);t&&(t.output={text:e.text,...e.failed?{failed:!0}:{},...e.exitCode===void 0?{}:{exitCode:e.exitCode},...e.changed?{changed:e.changed}:{}});continue}let n=RM(t);n?.type===`action`&&n.id!==void 0&&s.set(n.id,n),n===void 0?(c(),i.push(t)):o?o.steps.push(n):o={head:t,steps:[n]}}return c(),{rows:i,steps:a}}function VM({words:e,tone:t}){let{said:n,thing:r,href:i,detail:a}=e,o=t===``?`text-foreground`:t;return(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 font-sans text-sm`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-1.5`,children:[(0,W.jsx)(`span`,{className:`min-w-0 whitespace-pre-wrap break-words ${t||`text-muted-foreground`}`,children:n}),r!==void 0&&(i===void 0?(0,W.jsx)(`span`,{className:`min-w-0 truncate ${o}`,children:r}):(0,W.jsx)(`a`,{href:i,target:`_blank`,rel:`noreferrer`,className:`min-w-0 shrink-0 truncate hover:underline ${o}`,children:r}))]}),a!==void 0&&(0,W.jsx)(`div`,{className:`mt-0.5 whitespace-pre-wrap break-words opacity-80 ${t||`text-muted-foreground`}`,children:a})]})}function HM({label:e,onOpen:t}){return t?(0,W.jsxs)(`button`,{type:`button`,onClick:t,className:`group/screen flex min-w-0 flex-1 items-center gap-1.5 text-left font-sans text-sm text-foreground`,children:[(0,W.jsx)(`span`,{className:`min-w-0 truncate group-hover/screen:underline`,children:e}),(0,W.jsx)(Xe,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`,"aria-hidden":!0})]}):(0,W.jsx)(`div`,{className:`min-w-0 flex-1 truncate font-sans text-sm text-muted-foreground`,children:e})}var UM=`ml-auto shrink-0 pt-0.5 text-[10px] tabular-nums text-muted-foreground opacity-0 transition-opacity group-hover/row:opacity-100`,WM=`subagent`,GM=8,KM=[],qM=[],JM={};function YM(e){return e.kind===`session-update`||e.kind===`usage`||e.kind===`title`||e.kind===`driver`&&e.event.type===`result`?!1:e.kind===`driver`&&e.event.type===`rate-limit`?e.event.limit.status!==`allowed`:!0}function XM(e,t){(0,U.useLayoutEffect)(()=>{let n=e.current,r=t.current;if(!n||!r||typeof ResizeObserver>`u`)return;let i=()=>n.clientHeight-r.getBoundingClientRect().height,a=i(),o=new ResizeObserver(()=>{let e=a-i();a-=e,!(e<=0)&&n.scrollHeight-n.scrollTop-n.clientHeight-e<=GM&&(n.scrollTop=n.scrollHeight)});return o.observe(r),o.observe(n),()=>o.disconnect()},[e,t])}function ZM({sent:e}){let{scrollToEnd:t}=tM(),n=(0,U.useRef)(e);return(0,U.useLayoutEffect)(()=>{e>n.current&&t({behavior:`smooth`}),n.current=e},[e,t]),null}function QM({events:e,writing:t=``,sending:n,working:r=!1,queued:i=qM,waitingOn:a=0,stick:o=!0,openAt:s,tail:c,projectId:l,subagents:u=KM,doing:d=JM,setup:f,onOpenAgent:p,onOpenChange:m,onOpenScreen:_}){let v=(0,U.useMemo)(()=>l?wM(e):void 0,[l,e]),y=(0,U.useMemo)(()=>kt(e),[e]),b=(0,U.useMemo)(()=>TM(e),[e]),x=f?.workspace,S=(0,U.useMemo)(()=>pT(e,x),[e,x]),C=(0,U.useMemo)(()=>new Map(e.map((e,t)=>[e,String(t)])),[e]),w=(0,U.useMemo)(()=>EM(e),[e]),T=SM(e).filter(e=>YM(e)&&!v?.hidden.has(e)&&!y.hidden.has(e)),E=n===void 0?T:[...T,{kind:`driver`,event:{type:`start`,prompt:n}}],D=e=>{let t=hM(e);return t!==null&&w.has(e)?DM(t):t},O=DM(t),k=E.filter(e=>!b.has(e)&&D(e)!==``),{rows:A,steps:j,current:M}=BM(k,r&&!O),N=k.length>0&&vM(k[k.length-1]),P=[...k].reverse().find(vM)?.at??k[k.length-1]?.at,ee=new Map;for(let e of A){let t=e.kind===`driver`&&e.event.type===`start`?Ci(e.event.prompt,u):void 0;t&&ee.set(e,t)}let F=e=>C.get(e)??`sending`,te=e=>ee.has(e)?WM:_M(e),ne=Ti(A,u),I=e=>ne.get(e)?.map(e=>(0,W.jsxs)(pM,{messageId:`subagent-${e.id}`,className:`group/row -mx-1.5 flex items-start gap-2 rounded-sm px-1.5`,children:[(0,W.jsx)(sj,{agent:e,doing:d[e.id],onOpen:p}),(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`span`,{className:UM}),children:CM(wi(e))}),(0,W.jsx)(h,{children:new Date(wi(e)).toLocaleString()})]})]},`subagent-${e.id}`)),re=f===void 0?-1:A.length>0&&vM(A[0])?1:0,L=f!==void 0&&r&&!O&&N&&k.filter(vM).length===1,ie=e.find(vM),ae=ie?.kind===`driver`&&ie.event.type===`start`?ie.event.added:void 0,oe=f!==void 0&&(0,W.jsx)(aj,{setup:f,working:r,added:ae,...L?{live:{since:P}}:{}}),R=oe!==!1&&!ij(f,r)&&!L&&re>=0&&A[re]!==void 0&&j.has(A[re]),se=oe&&!R&&(0,W.jsx)(pM,{messageId:`setup`,className:`-mx-1.5 flex items-start gap-2 rounded-sm px-1.5 empty:hidden`,children:oe},`setup`),ce=(0,U.useRef)(null),le=(0,U.useRef)(null);XM(ce,le);let ue=A[A.length-1],de=ue?D(ue):null,fe=!r&&n===void 0&&ue!==void 0&&de!==null&&!vM(ue)&&!ee.has(ue)?{text:de,at:ue.at}:void 0;return(0,W.jsxs)(lM,{autoScroll:o,defaultScrollPosition:s??(o?`end`:`start`),children:[(0,W.jsx)(ZM,{sent:(n===void 0?0:1)+i.length}),(0,W.jsxs)(uM,{className:`isolate flex-1`,children:[(0,W.jsx)(dM,{ref:ce,"aria-label":`Agent output`,className:`scroll-pb-(--chat-bottom)`,children:(0,W.jsxs)(fM,{spacerClassName:`order-last`,className:`mx-auto w-full max-w-3xl gap-2 px-4 pt-4 font-mono text-xs`,children:[(0,W.jsx)(`div`,{ref:le,"data-testid":`log-end-room`,className:`order-9998 h-[calc(var(--chat-bottom,0px)+0.5rem)] shrink-0`,"aria-hidden":!0}),A.map((e,t,n)=>{let r=D(e),i=v?.rows.get(e),a=t>0?n[t-1]:void 0,o=ee.get(e),s=!a||(ne.has(t)?!o:te(a)!==te(e)),c=e.at,l=vM(e)&&!o,u=ej(e),d=l&&r!==null?$A(r):void 0;return(0,W.jsxs)(U.Fragment,{children:[S.ended.has(e)&&(0,W.jsx)(pM,{messageId:`changes-${F(e)}`,className:`-mx-1.5 flex items-start gap-2 rounded-sm px-1.5`,children:(0,W.jsx)(xT,{files:S.ended.get(e),onOpen:m})}),F(e)===`sending`&&S.last.length>0&&(0,W.jsx)(pM,{messageId:`changes-last`,className:`-mx-1.5 flex items-start gap-2 rounded-sm px-1.5`,children:(0,W.jsx)(xT,{files:S.last,onOpen:m})}),t===re&&se,I(t),(0,W.jsxs)(pM,{messageId:F(e),className:`group/row -mx-1.5 flex items-start gap-2 rounded-sm px-1.5 ${l||d?`mt-5 first:mt-0`:``} ${o?``:xM(e)}`,children:[d?(0,W.jsx)(PM,{...d}):l&&r!==null?(0,W.jsx)(FM,{text:r,at:c,attached:e.kind===`driver`&&e.event.type===`start`?e.event.attached:void 0,fresh:F(e)===`sending`}):o?(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,W.jsx)(sj,{agent:o.agent,end:o,onOpen:p}),o.rest&&(0,W.jsx)(LM,{text:o.rest})]}):r===null?j.has(e)?(0,W.jsx)(kT,{steps:j.get(e),lead:R&&t===re?oe:void 0}):i&&i.pick===void 0?(0,W.jsx)(NM,{choice:i.choice}):i?.pick===void 0?u?(0,W.jsx)(VM,{words:u,tone:bM(e)}):e.kind===`screen`?(0,W.jsx)(HM,{label:e.label,onOpen:_&&y.live.has(e)?_:void 0}):(0,W.jsx)(`span`,{className:`min-w-0 flex-1 whitespace-pre-wrap break-words ${bM(e)||`text-foreground`}`,children:(Tt(e)??``).trim()}):(0,W.jsx)(`div`,{className:`min-w-0 flex-1 font-sans`,children:(0,W.jsx)(nj,{choice:i.choice,pick:i.pick})}):(0,W.jsx)(OM,{text:r}),!l&&s&&c!==void 0&&(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`span`,{className:UM}),children:CM(c)}),(0,W.jsx)(h,{children:new Date(c).toLocaleString()})]})]})]},F(e))}),A.length===re&&se,I(A.length),O&&(0,W.jsx)(pM,{messageId:`writing`,className:`-mx-1.5 flex items-start gap-2 rounded-sm px-1.5`,children:(0,W.jsx)(OM,{text:O})}),!r&&n===void 0&&S.last.length>0&&(0,W.jsx)(pM,{messageId:`changes-last`,className:`-mx-1.5 flex items-start gap-2 rounded-sm px-1.5`,children:(0,W.jsx)(xT,{files:S.last,onOpen:m})}),fe&&(0,W.jsx)(`div`,{className:`-mx-1.5 flex items-start gap-2 rounded-sm px-1.5`,children:(0,W.jsx)(kM,{text:fe.text,at:fe.at})}),A.length>0&&(0,W.jsx)(`div`,{"data-testid":`live-line`,className:`-mx-1.5 flex min-h-5 shrink-0 items-center gap-2 rounded-sm px-1.5`,children:r&&!L&&(0,W.jsx)(OT,{...O?{}:{call:M},since:P})}),!r&&a>0&&(0,W.jsx)(pM,{messageId:`waiting-on`,className:`-mx-1.5 flex items-center gap-2 rounded-sm px-1.5`,children:(0,W.jsx)(OT,{word:`Waiting for ${a} ${a===1?`subagent`:`subagents`}`})}),i.map((e,t)=>(0,W.jsx)(pM,{messageId:`queued-${t}`,className:`-mx-1.5 flex items-start gap-2 rounded-sm px-1.5`,children:(0,W.jsx)(FM,{text:e,queued:!0,fresh:!0})},`queued-${t}`)),c]})}),(0,W.jsx)(mM,{className:`data-[direction=end]:bottom-[calc(var(--chat-bottom,0px)+1.25rem)]`})]})]})}function $M({events:e,writing:t=``,sending:n,working:r=!1,queued:i,waitingOn:a,stick:o=!0,openAt:s,emptyLabel:c=`Waiting for the session to start…`,tail:l,projectId:u,subagents:d,doing:f,setup:p,onOpenAgent:m,onOpenChange:h,onOpenScreen:g}){return e.length===0&&n===void 0&&!i?.length?(0,W.jsx)(QA,{children:c}):(0,W.jsx)(QM,{events:e,writing:t,...n===void 0?{}:{sending:n},working:r,...i?{queued:i}:{},...a?{waitingOn:a}:{},stick:o,...s?{openAt:s}:{},...l?{tail:l}:{},projectId:u,...d?{subagents:d}:{},...f?{doing:f}:{},setup:p,onOpenAgent:m,onOpenChange:h,onOpenScreen:g})}function eN({target:e,events:t,live:n}){if(e!==`actions`)return null;let r=IT(t);return(0,W.jsxs)(`div`,{role:`status`,className:`flex items-center gap-2 border-b border-border bg-muted/40 px-4 py-2 text-xs text-muted-foreground`,children:[(0,W.jsx)(Ir,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[`Running on GitHub Actions`,n?` — updates arrive when the run finishes.`:`.`]}),r&&(0,W.jsxs)(`a`,{href:r,target:`_blank`,rel:`noreferrer`,className:`inline-flex shrink-0 items-center gap-1 text-primary hover:underline`,children:[`View the Actions run`,(0,W.jsx)(kr,{className:`h-3.5 w-3.5`,"aria-hidden":!0})]})]})}function tN(){return(0,W.jsxs)(`div`,{role:`status`,className:`flex items-center gap-2 border-b border-border bg-warning/10 px-4 py-2 text-xs text-warning`,children:[(0,W.jsx)(ii,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),`Live stream lost — reconnecting. The session keeps running; this view may be behind.`]})}var nN=Symbol(`other`);function rN({n:e}){return(0,W.jsx)(`kbd`,{className:`mt-0.5 flex h-5 min-w-5 shrink-0 items-center justify-center rounded border border-border px-1 font-sans text-[11px] text-muted-foreground`,"aria-hidden":!0,children:e})}function iN({projectId:e,agentId:t,choice:n,active:r=!1,onSaid:i,send:a}){let{busy:o,error:s,run:c}=tt(),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(()=>n.multi?void 0:n.recommended??n.options[0]?.id),[p,m]=(0,U.useState)(()=>new Set(n.multi?n.options.filter(e=>e.default).map(e=>e.id):[])),[h,g]=(0,U.useState)(``),[_,v]=(0,U.useState)(!1),[y,b]=(0,U.useState)(!1),x=(0,U.useRef)(null),S=o||l,C=h.trim(),w=e=>void c(e,`Could not send your answer — try again.`).then(e=>e.ok&&u(!0)),T=r=>w(()=>a?a(r):Un(e,n.id,r,t)),E=n=>w(async()=>{let r=await qn(e,n,t);return r.ok&&i?.(n),r}),D=n.multi||d!==nN||C!==``,O=()=>{if(!(S||!D)){if(n.multi)return C===``?T([...p]):E([...n.options.filter(e=>p.has(e.id)).map(e=>e.label),C].join(`, `));if(d===nN)return E(C);d!==void 0&&T(d)}},k=e=>{if(!S){if(!n.multi)return f(e);m(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}},A=(0,U.useRef)({submit:O,pick:k});A.current={submit:O,pick:k},(0,U.useEffect)(()=>{if(!r)return;let e=e=>{let t=e.target,r=t!==null&&(t.isContentEditable||t.tagName===`INPUT`||t.tagName===`TEXTAREA`);if((e.ctrlKey||e.metaKey)&&e.key===`Enter`){if(r&&t!==x.current)return;e.preventDefault(),A.current.submit();return}if(r||e.ctrlKey||e.metaKey||e.altKey||!/^[1-9]$/.test(e.key))return;let i=Number(e.key),o=n.options[i-1];if(o)A.current.pick(o.id);else if(!a&&i===n.options.length+1)x.current?.focus();else return;e.preventDefault()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r,n.options,a]);let j=e=>L(`flex w-full items-start gap-3 rounded-[5px] p-2 text-left`,e?`bg-accent`:`bg-muted/60 hover:bg-muted`);return y?null:(0,W.jsx)(`section`,{role:`region`,"aria-label":n.title,className:`mx-auto w-full max-w-3xl px-2 pt-2`,children:(0,W.jsxs)(`div`,{className:`rounded-[10px] border border-border bg-background p-3`,children:[(0,W.jsxs)(`div`,{className:`mb-2 flex items-start gap-2 px-1`,children:[(0,W.jsx)(`h2`,{className:`min-w-0 flex-1 text-sm font-medium`,children:n.title}),(0,W.jsx)(`button`,{type:`button`,"aria-label":_?`Show the options`:`Hide the options`,"aria-expanded":!_,onClick:()=>v(e=>!e),className:`flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-accent-foreground`,children:(0,W.jsx)(it,{className:L(`h-3.5 w-3.5 transition-transform`,_&&`-rotate-90`),"aria-hidden":!0})}),(0,W.jsx)(`button`,{type:`button`,"aria-label":`Put this question away`,onClick:()=>b(!0),className:`flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-accent-foreground`,children:(0,W.jsx)(Je,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}),!_&&(0,W.jsxs)(`ul`,{className:`flex flex-col gap-[3px]`,children:[n.options.map((e,t)=>{let r=n.multi?p.has(e.id):d===e.id;return(0,W.jsx)(`li`,{children:(0,W.jsxs)(`button`,{type:`button`,role:n.multi?`checkbox`:`radio`,"aria-checked":r,disabled:S,onClick:()=>k(e.id),className:L(j(r),`disabled:opacity-60`),children:[n.multi&&(0,W.jsx)(`span`,{className:L(`mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded border`,r?`border-primary bg-primary text-primary-foreground`:`border-border`),"aria-hidden":!0,children:r&&(0,W.jsx)(Se,{className:`h-3 w-3`})}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,W.jsxs)(`span`,{className:`text-sm font-medium`,children:[e.label,e.id===n.recommended&&(0,W.jsx)(`span`,{className:`ml-2 text-xs font-normal text-muted-foreground`,children:`Recommended`})]}),e.detail&&(0,W.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:e.detail})]}),(0,W.jsx)(rN,{n:t+1})]})},e.id)}),!a&&(0,W.jsx)(`li`,{children:(0,W.jsxs)(`label`,{className:L(j(n.multi?C!==``:d===nN),`items-center`),children:[(0,W.jsx)(`input`,{ref:x,value:h,disabled:S,onFocus:()=>!n.multi&&f(nN),onChange:e=>g(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.ctrlKey&&!e.metaKey&&O()},placeholder:`Other: say it in your own words`,"aria-label":`Other`,className:`min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground`}),(0,W.jsx)(rN,{n:n.options.length+1})]})})]}),s&&(0,W.jsx)(`p`,{role:`alert`,className:`mt-2 px-1 text-xs text-danger`,children:s}),(0,W.jsxs)(`div`,{className:`mt-3 flex items-center gap-2`,children:[(0,W.jsx)(`span`,{role:S?`status`:void 0,className:`min-w-0 flex-1 truncate px-1 text-xs text-muted-foreground`,children:o?`Sending your answer…`:l?`Answer sent — waiting for the agent to pick it up…`:``}),!a&&(0,W.jsx)(z,{variant:`ghost`,size:`sm`,disabled:S,onClick:()=>E(`I skip this question.`),children:`Skip`}),(0,W.jsxs)(z,{size:`sm`,disabled:S||!D,onClick:O,children:[`Submit`,r&&(0,W.jsx)(`kbd`,{className:`font-sans text-[11px] opacity-70`,"aria-hidden":!0,children:`⌃⏎`})]})]})]})})}var aN=4e3;function oN({target:e,events:t,projectId:n,agentId:r}){let i=e===`web`?LT(t):void 0,a=_N(i?.id),o=gN(i?.id);return e===`web`?(0,W.jsxs)(`div`,{className:`border-b border-border bg-muted/40`,children:[(0,W.jsxs)(`div`,{role:`status`,className:`flex flex-wrap items-center gap-2 px-4 py-2 text-xs text-muted-foreground`,children:[(0,W.jsx)(Er,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1`,children:i?`Running as a Claude Code cloud session. It opens its own pull request over there; a question it parks on shows here once the bridge sees it.`:`Starting a Claude Code cloud session…`}),i&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`span`,{className:`inline-flex shrink-0 items-center gap-1`,children:[(0,W.jsxs)(`code`,{className:`rounded bg-muted px-1 py-0.5`,children:[`claude --teleport `,i.id]}),(0,W.jsx)(Oe,{text:`claude --teleport ${i.id}`,label:`Copy the command that continues this session here`})]}),(0,W.jsxs)(`a`,{href:i.url,target:`_blank`,rel:`noreferrer`,className:`inline-flex shrink-0 items-center gap-1 text-primary hover:underline`,children:[`Open the session`,(0,W.jsx)(kr,{className:`h-3.5 w-3.5`,"aria-hidden":!0})]})]})]}),a&&i&&(!o||o.state===`failed`)&&(0,W.jsx)(cN,{question:a,url:i.url,sessionId:i.id,projectId:n,agentId:r,failure:o?.state===`failed`?o:void 0}),o&&i&&o.state!==`failed`&&(0,W.jsx)(lN,{answer:o,url:i.url,sessionId:i.id})]}):null}function sN(e){return async t=>{let n=await Wn(e,Array.isArray(t)?t:[t]);if(!n.ok)throw Error(n.error??`could not queue the answer`)}}function cN({question:e,url:t,sessionId:n,projectId:r,agentId:i,failure:a}){return(0,W.jsxs)(`div`,{className:`border-t border-border`,children:[a&&(0,W.jsxs)(`p`,{className:`flex items-center gap-1 px-4 pt-2.5 text-xs text-destructive`,children:[(0,W.jsx)(ii,{className:`h-3 w-3 shrink-0`,"aria-hidden":!0}),`Sending “`,a.labels.join(`, `),`” failed`,a.note?`: ${a.note}`:``,`. Pick again, or answer in the session.`]}),(0,W.jsx)(iN,{projectId:r,agentId:i,choice:Rt(e),send:sN(n)},e.title),(0,W.jsxs)(`a`,{href:t,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 px-4 py-2.5 text-xs text-primary hover:underline`,children:[`Answer it in the session`,(0,W.jsx)(kr,{className:`h-3 w-3`,"aria-hidden":!0})]})]})}function lN({answer:e,url:t,sessionId:n}){return(0,W.jsx)(`div`,{className:`flex items-center gap-2 border-t border-border px-4 py-2.5 text-xs text-muted-foreground`,children:e.state===`queued`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(nt,{className:`h-3.5 w-3.5 shrink-0 animate-spin text-primary`,"aria-hidden":!0}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[`Sending “`,e.labels.join(`, `),`” through your Claude web tab… It goes out the next time the extension checks in.`]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void Gn(n).catch(()=>{}),className:`shrink-0 rounded border border-border px-2 py-1 hover:border-primary/50 hover:text-foreground`,children:`Cancel`})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Se,{className:`h-3.5 w-3.5 shrink-0 text-primary`,"aria-hidden":!0}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[`Answered “`,e.labels.join(`, `),`”. The session continues over there and its transcript above follows along.`]}),(0,W.jsxs)(`a`,{href:t,target:`_blank`,rel:`noreferrer`,className:`inline-flex shrink-0 items-center gap-1 text-primary hover:underline`,children:[`Open the session`,(0,W.jsx)(kr,{className:`h-3 w-3`,"aria-hidden":!0})]})]})})}var uN=[/^Arrow keys move the tile/i,/^Show message actions$/i,/^(Claude\s+)?(Fable|Opus|Sonnet|Haiku)(\s+\d[\d.]*)?$/i];function dN(e){return e.split(`
135
- `).filter(e=>!uN.some(t=>t.test(e.trim()))).join(`
129
+ `?t.slice(0,-1):t};return e.renderer.rules.hardbreak=t(e.renderer.rules.hardbreak),e.renderer.rules.softbreak=t(e.renderer.rules.softbreak),e.renderer.rules.fence=t(e.renderer.rules.fence),e.renderer.rules.code_block=t(e.renderer.rules.code_block),e.renderer.renderToken=t(e.renderer.renderToken.bind(e.renderer)),e}},Ew=ph.create({name:`markdownClipboard`,addOptions(){return{transformPastedText:!1,transformCopiedText:!1}},addProseMirrorPlugins(){return[new $c({key:new nl(`markdownClipboard`),props:{clipboardTextParser:(e,t,n)=>{if(n||!this.options.transformPastedText)return null;let r=this.editor.storage.markdown.parser.parse(e,{inline:!0});return Qo.fromSchema(this.editor.schema).parseSlice($C(r),{preserveWhitespace:!0,context:t})},clipboardTextSerializer:e=>this.options.transformCopiedText?this.editor.storage.markdown.serializer.serialize(e.content):null}})]}}),Dw=ph.create({name:`markdown`,priority:50,addOptions(){return{html:!0,tightLists:!0,tightListClass:`tight`,bulletListMarker:`-`,linkify:!1,breaks:!1,transformPastedText:!1,transformCopiedText:!1}},addCommands(){let e=o_.Commands.config.addCommands();return{setContent:(t,n,r)=>i=>e.setContent(i.editor.storage.markdown.parser.parse(t),n,r)(i),insertContentAt:(t,n,r)=>i=>e.insertContentAt(t,i.editor.storage.markdown.parser.parse(n,{inline:!0}),r)(i)}},onBeforeCreate(){this.editor.storage.markdown={options:{...this.options},parser:new Tw(this.editor,this.options),serializer:new ww(this.editor),getMarkdown:()=>this.editor.storage.markdown.serializer.serialize(this.editor.state.doc)},this.editor.options.initialContent=this.editor.options.content,this.editor.options.content=this.editor.storage.markdown.parser.parse(this.editor.options.content)},onCreate(){this.editor.options.content=this.editor.options.initialContent,delete this.editor.options.initialContent},addStorage(){return{}},addExtensions(){return[UC.configure({tight:this.options.tightLists,tightClass:this.options.tightListClass}),Ew.configure({transformPastedText:this.options.transformPastedText,transformCopiedText:this.options.transformCopiedText})]}}),Ow=h_.create({name:`token`,group:`inline`,inline:!0,atom:!0,selectable:!0,addAttributes(){return{kind:{default:`file`},label:{default:``},text:{default:``}}},parseHTML(){return[{tag:`span[data-token]`}]},renderHTML({node:e,HTMLAttributes:t}){return[`span`,Lm(t,{"data-token":e.attrs.kind,class:`pe-token`}),e.attrs.label||e.attrs.text]},renderText({node:e}){return e.attrs.text},addStorage(){return{markdown:{serialize(e,t){e.write(t.attrs.text)},parse:{}}}}});function kw(e){let{char:t,allowSpaces:n,allowToIncludeChar:r,allowedPrefixes:i,startOfLine:a,$position:o}=e,s=n&&!r,c=v_(t),l=RegExp(`\\s${c}$`),u=a?`^`:``,d=r?``:c,f=RegExp(s?`${u}${c}.*?(?=\\s${d}|$)`:`${u}(?:^)?${c}[^\\s${d}]*`,`gm`),p=o.nodeBefore?.isText&&o.nodeBefore.text;if(!p)return null;let m=o.pos-p.length,h=Array.from(p.matchAll(f)).pop();if(!h||h.input===void 0||h.index===void 0)return null;let g=h.input.slice(Math.max(0,h.index-1),h.index),_=RegExp(`^[${i?.join(``)}\0]?$`).test(g);if(i!==null&&!_)return null;let v=m+h.index,y=v+h[0].length;return s&&l.test(p.slice(y-1,y+1))&&(h[0]+=` `,y+=1),v<o.pos&&y>=o.pos?{range:{from:v,to:y},query:h[0].slice(t.length),text:h[0]}:null}var Aw=new nl(`suggestion`);function jw({pluginKey:e=Aw,editor:t,char:n=`@`,allowSpaces:r=!1,allowToIncludeChar:i=!1,allowedPrefixes:a=[` `],startOfLine:o=!1,decorationTag:s=`span`,decorationClass:c=`suggestion`,decorationContent:l=``,decorationEmptyClass:u=`is-empty`,command:d=()=>null,items:f=()=>[],render:p=()=>({}),allow:m=()=>!0,findSuggestionMatch:h=kw}){let g,_=p?.(),v=new $c({key:e,view(){return{update:async(e,n)=>{var r,i,a,o,s;let c=this.key?.getState(n),l=this.key?.getState(e.state),u=c.active&&l.active&&c.range.from!==l.range.from,p=!c.active&&l.active,m=c.active&&!l.active,h=!p&&!m&&c.query!==l.query,v=p||u&&h,y=h||u,b=m||u&&h;if(!v&&!y&&!b)return;let x=b&&!v?c:l,S=e.dom.querySelector(`[data-decoration-id="${x.decorationId}"]`);g={editor:t,range:x.range,query:x.query,text:x.text,items:[],command:e=>d({editor:t,range:x.range,props:e}),decorationNode:S,clientRect:S?()=>{let{decorationId:n}=this.key?.getState(t.state);return e.dom.querySelector(`[data-decoration-id="${n}"]`)?.getBoundingClientRect()||null}:null},v&&((r=_?.onBeforeStart)==null||r.call(_,g)),y&&((i=_?.onBeforeUpdate)==null||i.call(_,g)),(y||v)&&(g.items=await f({editor:t,query:x.query})),b&&((a=_?.onExit)==null||a.call(_,g)),y&&((o=_?.onUpdate)==null||o.call(_,g)),v&&((s=_?.onStart)==null||s.call(_,g))},destroy:()=>{var e;g&&((e=_?.onExit)==null||e.call(_,g))}}},state:{init(){return{active:!1,range:{from:0,to:0},query:null,text:null,composing:!1}},apply(e,s,c,l){let{isEditable:u}=t,{composing:d}=t.view,{selection:f}=e,{empty:p,from:g}=f,_={...s};if(_.composing=d,u&&(p||t.view.composing)){(g<s.range.from||g>s.range.to)&&!d&&!s.composing&&(_.active=!1);let e=h({char:n,allowSpaces:r,allowToIncludeChar:i,allowedPrefixes:a,startOfLine:o,$position:f.$from}),c=`id_${Math.floor(Math.random()*4294967295)}`;e&&m({editor:t,state:l,range:e.range,isActive:s.active})?(_.active=!0,_.decorationId=s.decorationId?s.decorationId:c,_.range=e.range,_.query=e.query,_.text=e.text):_.active=!1}else _.active=!1;return _.active||(_.decorationId=null,_.range={from:0,to:0},_.query=null,_.text=null),_}},props:{handleKeyDown(e,t){let{active:n,range:r}=v.getState(e.state);return n&&(_?.onKeyDown)?.call(_,{view:e,event:t,range:r})||!1},decorations(e){let{active:t,range:n,decorationId:r,query:i}=v.getState(e);if(!t)return null;let a=!i?.length,o=[c];return a&&o.push(u),Bf.create(e.doc,[Lf.inline(n.from,n.to,{nodeName:s,class:o.join(` `),"data-decoration-id":r,"data-decoration-content":l})])}}});return v}function Mw(e){return`prompt-suggestion-option-${e}`}var Nw=(0,U.forwardRef)(function({items:e,command:t,emptyNote:n,onActiveChange:r},i){let[a,o]=(0,U.useState)(0);return(0,U.useEffect)(()=>o(0),[e]),(0,U.useEffect)(()=>{r?.(e.length>0?Mw(a):null)},[e,a,r]),(0,U.useImperativeHandle)(i,()=>({onKeyDown:n=>{if(e.length===0)return!1;if(n.key===`ArrowDown`)return o(t=>(t+1)%e.length),!0;if(n.key===`ArrowUp`)return o(t=>(t-1+e.length)%e.length),!0;if(n.key===`Enter`||n.key===`Tab`){let n=e[a];return n&&t(n),!0}return!1}})),e.length===0?(0,W.jsx)(`div`,{role:`status`,className:`w-64 rounded-md border border-border bg-card p-2 text-sm text-muted-foreground shadow-md`,children:n??`No matches`}):(0,W.jsx)(`div`,{role:`listbox`,"aria-label":`Suggestions`,className:`max-h-72 w-64 overflow-y-auto rounded-md border border-border bg-card p-1 text-sm shadow-md`,children:e.map((n,r)=>(0,W.jsxs)(`div`,{children:[n.group&&(r===0||e[r-1]?.group!==n.group)&&(0,W.jsx)(`div`,{className:`px-2 pb-1 pt-2 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground/70`,children:n.group}),(0,W.jsxs)(`button`,{type:`button`,id:Mw(r),role:`option`,"aria-selected":r===a,...n.title?{title:n.title}:{},onMouseDown:e=>{e.preventDefault(),t(n)},onMouseEnter:()=>o(r),className:L(`flex w-full items-center gap-2 rounded px-2 py-1.5 text-left`,r===a?`bg-accent text-accent-foreground`:`hover:bg-accent/60`),children:[(0,W.jsx)(`span`,{className:`truncate font-medium`,children:n.label}),n.hint&&(0,W.jsx)(`span`,{className:`ml-auto truncate text-xs text-muted-foreground`,children:n.hint})]})]},n.id))})});function Pw(e,t){if(!t)return;let n=window.innerHeight-t.bottom;e.style.left=`${t.left}px`,n<320?(e.style.top=``,e.style.bottom=`${window.innerHeight-t.top+4}px`):(e.style.bottom=``,e.style.top=`${t.bottom+4}px`)}function Fw(e){let t=null,n=null,r=null,i=null,a=null,o=!1,s=e=>{a&&(e?a.setAttribute(`aria-activedescendant`,e):a.removeAttribute(`aria-activedescendant`))},c=i=>{let{items:c,command:l}=i,u=c.length===0&&!i.query?e.emptyNote:void 0,d=!o&&(c.length>0||!!u);t&&(t.style.display=d?``:`none`),a?.setAttribute(`aria-expanded`,d?`true`:`false`),d||s(null),n?.render((0,U.createElement)(Nw,{items:c,command:l,emptyNote:u,onActiveChange:s,ref:e=>{r=e}}))},l=()=>{t&&Pw(t,i?.()??null)};return{onStart(e){o=!1,t=document.createElement(`div`),t.style.position=`fixed`,t.style.zIndex=`50`,document.body.appendChild(t),n=(0,Ct.createRoot)(t),i=e.clientRect??null,a=e.editor?.view.dom??null,l(),c(e),window.addEventListener(`scroll`,l,!0),window.addEventListener(`resize`,l)},onUpdate(e){i=e.clientRect??null,l(),c(e)},onKeyDown(e){return e.event.key===`Escape`?!t||t.style.display===`none`?!1:(o=!0,t.style.display=`none`,a?.setAttribute(`aria-expanded`,`false`),s(null),!0):r?.onKeyDown(e.event)??!1},onExit(){o=!1,window.removeEventListener(`scroll`,l,!0),window.removeEventListener(`resize`,l),a?.setAttribute(`aria-expanded`,`false`),s(null),a=null,n?.unmount(),t?.remove(),n=null,t=null,r=null,i=null}}}function Iw(e){return ph.create({name:`suggestion-${e.key}`,addProseMirrorPlugins(){return[jw({editor:this.editor,char:e.char,pluginKey:new nl(e.key),items:({query:t})=>e.items(t.toLowerCase()),command:({editor:t,range:n,props:r})=>e.onSelect(r,{editor:t,range:n}),render:()=>Fw(e)})]}})}function Lw(e,t,n){e.chain().focus().deleteRange(t).insertContent([{type:`token`,attrs:{kind:n.kind,label:n.label,text:n.text}},{type:`text`,text:` `}]).run()}function Rw(e,t){e.commands.setContent(t),e.commands.focus(`end`),/\s$/.test(t)&&e.commands.insertContent({type:`text`,text:` `})}var zw=(0,U.forwardRef)(function({onChange:e,onSubmit:t,onPreset:n,onMentionProject:r,onMentionFile:i,onMentionRemoved:a,projects:o,files:s=[],commands:c,customPresets:l=[],projectPresets:u=[],onNewPreset:d,disabled:f=!1,placeholder:p=`Describe what to do…`,initialText:m,compact:h=!1},g){let[_,v]=(0,U.useState)(!0),y=(0,U.useRef)(o),b=(0,U.useRef)(s),x=(0,U.useRef)(c),S=(0,U.useRef)(l),C=(0,U.useRef)(u),w=(0,U.useRef)(d),T=(0,U.useRef)(n),E=(0,U.useRef)(r),D=(0,U.useRef)(i),O=(0,U.useRef)(a),k=(0,U.useRef)(e),A=(0,U.useRef)(t);(0,U.useEffect)(()=>{y.current=o,b.current=s,x.current=c,S.current=l,C.current=u,w.current=d,T.current=n,E.current=r,D.current=i,O.current=a,k.current=e,A.current=t});let j=(0,U.useRef)(new Set),M=e=>{let t=new Set;e.state.doc.descendants(e=>(e.type.name===`token`&&(e.attrs.kind===`project`||e.attrs.kind===`file`)&&t.add(String(e.attrs.text)),!0));for(let e of j.current)if(!t.has(e)){if(e.startsWith(`#`))O.current?.(e.slice(1));else if(e.startsWith(`@`)){let t=y.current.find(t=>t.name===e.slice(1));t&&O.current?.(t.path)}}j.current=t},N=(e,t)=>{let n=!e.isEmpty;return Rw(e,t),M(e),v(e.isEmpty),k.current(e.storage.markdown.getMarkdown()),n},P=U_({immediatelyRender:!1,extensions:[my,Dw.configure({html:!1,linkify:!1,breaks:!0,transformPastedText:!0}),Ow,Iw({char:`/`,key:`slash`,items:e=>{let t=e.toLowerCase();if(x.current.some(e=>e.name===t))return[];let n=x.current.filter(e=>e.name.includes(t)).map(e=>({id:`command:${e.name}`,label:`/${e.name}`,group:`Commands`,...e.description?{title:e.description}:{}})),r=S.current.filter(e=>e.label.toLowerCase().includes(t)).map(e=>({id:`custom-preset:${e.id}`,label:e.label,hint:`saved prompt`,group:`Saved prompts`})),i=C.current.filter(e=>e.label.toLowerCase().includes(t)).map(e=>({id:`project-preset:${e.id}`,label:e.label,hint:`project saved prompt`,group:`Saved prompts`})),a=w.current&&`save prompt`.includes(t)?[{id:`new-preset`,label:`Save prompt…`,hint:`save the current prompt`,group:`Saved prompts`}]:[];return[...n,...r,...i,...a]},onSelect:(e,{editor:t,range:n})=>{if(e.id.startsWith(`command:`)){let r=x.current.find(t=>`command:${t.name}`===e.id);if(r){t.chain().focus().deleteRange(n).run();let e=N(t,`/${r.name} `);T.current?.(`/${r.name}`,e)}return}if(e.id.startsWith(`custom-preset:`)){let r=S.current.find(t=>`custom-preset:${t.id}`===e.id);if(r){t.chain().focus().deleteRange(n).run();let e=N(t,r.prompt);T.current?.(r.label,e)}return}if(e.id.startsWith(`project-preset:`)){let r=C.current.find(t=>`project-preset:${t.id}`===e.id);if(r){t.chain().focus().deleteRange(n).run();let e=N(t,r.prompt);T.current?.(r.label,e)}return}e.id===`new-preset`&&(t.chain().focus().deleteRange(n).run(),w.current?.())}}),Iw({char:`@`,key:`at`,emptyNote:`No projects to reference yet.`,items:e=>y.current.filter(t=>t.name.toLowerCase().includes(e)).slice(0,8).map(e=>({id:`project:${e.id}`,label:`@${e.name}`,hint:`project`,group:`Projects`})),onSelect:(e,{editor:t,range:n})=>{let r=y.current.find(t=>`project:${t.id}`===e.id);r&&(Lw(t,n,{kind:`project`,label:`@${r.name}`,text:`@${r.name}`}),E.current?.(r.path))}}),Iw({char:`#`,key:`hash`,emptyNote:`No files indexed here yet.`,items:e=>b.current.filter(t=>t.toLowerCase().includes(e.toLowerCase())).slice(0,8).map(e=>({id:`file:${e}`,label:`#${e}`,hint:`file`,group:`Files`})),onSelect:(e,{editor:t,range:n})=>{let r=e.id.slice(5);Lw(t,n,{kind:`file`,label:`#${r}`,text:`#${r}`}),D.current?.(r)}})],editorProps:{attributes:{class:`pe-prose focus:outline-none`,role:`textbox`,"aria-multiline":`true`,"aria-label":`Prompt`,"aria-placeholder":p},handleKeyDown:(e,t)=>(t.metaKey||t.ctrlKey)&&t.key===`Enter`?(t.preventDefault(),A.current(),!0):t.key===`Enter`&&!t.shiftKey&&!t.altKey&&!t.isComposing?e.dom.getAttribute(`aria-expanded`)===`true`||e.state.selection.$from.parent.type.name===`codeBlock`?!1:(t.preventDefault(),A.current(),!0):!1},onUpdate:({editor:e})=>{M(e),v(e.isEmpty),k.current(e.storage.markdown.getMarkdown())}});(0,U.useImperativeHandle)(g,()=>({clear:()=>{P?.commands.clearContent(),P&&M(P),v(!0),k.current(``)},focus:()=>P?.commands.focus(`end`),loadTemplate:e=>P?N(P,e):!1})),(0,U.useEffect)(()=>{P?.setEditable(!f,!1)},[P,f]);let ee=(0,U.useRef)(!1);(0,U.useEffect)(()=>{!P||ee.current||!m||(ee.current=!0,N(P,m))},[P,m]);let F=h?`px-2 py-1.5`:`px-3 py-2.5`,te=h?`left-2 top-1.5`:`left-3 top-2.5`;return(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(ce,{className:h?`rounded-md border border-border focus-within:ring-2 focus-within:ring-[var(--color-primary)]`:``,viewportClassName:h?`max-h-32 min-h-8`:`max-h-64 min-h-10`,children:(0,W.jsx)(A_,{editor:P,className:`w-full bg-transparent text-sm ${F}`})}),_&&(0,W.jsx)(`span`,{className:`pointer-events-none absolute text-sm text-muted-foreground ${te}`,children:p})]})}),Bw=80;function Vw(){return typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():`p-${Date.now()}`}function Hw({currentPrompt:e,busy:t,canSaveToProject:n,onSave:r,onCancel:i}){let[a,o]=(0,U.useState)(``),[s,c]=(0,U.useState)(e),[l,u]=(0,U.useState)(`user`),d=()=>{let e=a.trim(),t=s.trim();!e||!t||r({id:Vw(),label:e,prompt:t},n?l:`user`)};return(0,W.jsx)(ut,{open:!0,onOpenChange:e=>{e||i()},title:`Save prompt`,children:(0,W.jsxs)(`div`,{className:`flex w-full flex-col gap-2`,onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),d())},children:[(0,W.jsx)(D,{type:`text`,value:a,maxLength:Bw,placeholder:`Name`,disabled:t,autoFocus:!0,onChange:e=>o(e.target.value),className:`h-8 bg-background px-2`}),(0,W.jsx)(Ee,{value:s,placeholder:`The prompt to save…`,disabled:t,rows:5,onChange:e=>c(e.target.value),className:`resize-y px-2 py-1 font-mono text-xs`}),n&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-[var(--color-muted-foreground)]`,children:[(0,W.jsx)(`span`,{children:`Save to`}),(0,W.jsx)(`div`,{className:`inline-flex overflow-hidden rounded-md border border-border`,children:[`user`,`project`].map(e=>(0,W.jsx)(`button`,{type:`button`,disabled:t,onClick:()=>u(e),"aria-pressed":l===e,className:l===e?`bg-foreground px-2 py-0.5 text-background`:`px-2 py-0.5 text-foreground hover:bg-[var(--color-muted)]`,children:e===`user`?`Just me`:`This project`},e))}),(0,W.jsx)(`span`,{className:`truncate`,children:l===`project`?`Committed to the repo, shared with your team`:`Private to you, on every project`})]}),(0,W.jsxs)(`div`,{className:`mt-1 flex items-center justify-end gap-2`,children:[(0,W.jsx)(z,{type:`button`,variant:`ghost`,size:`sm`,onClick:i,children:`Cancel`}),(0,W.jsx)(z,{type:`button`,size:`sm`,disabled:t||!a.trim()||!s.trim(),onClick:d,children:`Save prompt`})]})]})})}function Uw({preset:e,busy:t,onLoad:n,onDelete:r}){return(0,W.jsxs)(F,{disabled:t,onClick:()=>n(e.prompt,e.label),className:`items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`flex-1 truncate`,children:e.label}),(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`button`,{type:`button`,disabled:t,onClick:t=>{t.stopPropagation(),r(e.id)},"aria-label":`Delete saved prompt ${e.label}`,className:`rounded p-0.5 text-[var(--color-muted-foreground)] hover:text-danger`}),children:(0,W.jsx)(Je,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),(0,W.jsxs)(h,{children:[`Delete "`,e.label,`"`]})]})]})}function Ww({commands:e,customPresets:t,projectPresets:n,busy:r,onLoad:i,onNew:a,onDelete:o,onDeleteProject:s}){return(0,W.jsxs)(l,{children:[(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(d,{type:`button`,disabled:r,"aria-label":`Commands`,className:L(gt({variant:`ghost`,size:`icon-sm`}),`h-8 w-8`)}),children:(0,W.jsx)(Yr,{className:`h-4 w-4`,"aria-hidden":!0})}),(0,W.jsx)(h,{children:`Run a command or load a saved prompt. In the box: / commands · @ projects · # files`})]}),(0,W.jsxs)(A,{align:`start`,className:`min-w-[16rem] max-w-[20rem]`,children:[(0,W.jsxs)(M,{children:[(0,W.jsx)(v,{children:`Commands`}),e.length===0&&(0,W.jsx)(`div`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`This project has no commands.`}),e.map(e=>{let t={disabled:r||e.waiting!==void 0,onClick:()=>i(`/${e.name} `,`/${e.name}`),className:`items-start`},n=(0,W.jsx)(Ne,{label:`/${e.name}`,...e.waiting===void 0?{}:{description:`waiting to reach ${e.waiting}`}});return e.description?(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(F,{...t}),children:n}),(0,W.jsx)(h,{className:`max-w-[22rem]`,children:e.description})]},e.name):(0,W.jsx)(F,{...t,children:n},e.name)})]}),t.length>0&&(0,W.jsxs)(M,{children:[(0,W.jsx)(w,{}),(0,W.jsx)(v,{children:`Your saved prompts`}),t.map(e=>(0,W.jsx)(Uw,{preset:e,busy:r,onLoad:i,onDelete:o},e.id))]}),n.length>0&&(0,W.jsxs)(M,{children:[(0,W.jsx)(w,{}),(0,W.jsx)(v,{children:`Project saved prompts`}),n.map(e=>(0,W.jsx)(Uw,{preset:e,busy:r,onLoad:i,onDelete:s},e.id))]}),a&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(w,{}),(0,W.jsxs)(F,{disabled:r,onClick:a,children:[(0,W.jsx)(Yr,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),`Save prompt…`]})]})]})]})}var Gw=`the CLI's own default`;function Kw(e,t){return e.find(e=>e.value===t)??e[0]}function qw(e,t){if(t)return e?.models.find(e=>e.value===t)?.label??t}function Jw({drivers:e,driver:t,model:n,onChange:r,busy:i}){let a=Kw(e,t),o=qw(a,n),s=`Driver: ${a?.label??``} · Model: ${o??`the CLI's own default`}`;return(0,W.jsxs)(l,{children:[(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(d,{type:`button`,disabled:i,"aria-label":s,className:L(gt({variant:`ghost`,size:`sm`}),`gap-1.5 px-2 font-normal`)}),children:[a?.icon?(0,W.jsx)(`span`,{className:`flex h-4 w-4 items-center justify-center`,children:a.icon}):a?.label,o,(0,W.jsx)(it,{className:`h-3.5 w-3.5 opacity-70`})]}),(0,W.jsx)(h,{children:s})]}),(0,W.jsx)(A,{align:`end`,children:e.map(e=>(0,W.jsxs)(k,{children:[(0,W.jsxs)(xt,{children:[(0,W.jsx)(Se,{className:L(`h-3.5 w-3.5 shrink-0`,e.value===t?`opacity-100`:`opacity-0`)}),e.icon&&(0,W.jsx)(`span`,{className:`flex h-4 w-4 items-center justify-center`,children:e.icon}),(0,W.jsx)(`span`,{className:`flex-1`,children:e.label})]}),(0,W.jsxs)(re,{children:[e.models.length===0&&e.modelsNote&&(0,W.jsx)(F,{disabled:!0,children:e.modelsNote}),e.models.map(i=>(0,W.jsxs)(F,{onClick:()=>r(e.value,i.value),children:[(0,W.jsx)(Se,{className:L(`h-3.5 w-3.5 shrink-0`,e.value===t&&i.value===n?`opacity-100`:`opacity-0`)}),i.label]},i.value))]})]},e.value))})]})}function Yw(e=typeof window>`u`?``:window.location.hostname){return e===``||Be(e)?`This machine`:e}var Xw=`inline-flex h-6 min-w-0 max-w-full items-center gap-1 overflow-hidden rounded-full border border-[var(--color-border)] px-2 text-xs text-muted-foreground`;function Zw({icon:e,children:t}){return(0,W.jsxs)(`span`,{className:Xw,children:[e,(0,W.jsx)(`span`,{className:`truncate`,children:t})]})}function Qw({status:e}){return(0,W.jsx)(`span`,{"aria-hidden":!0,className:L(`mt-1.5 h-2 w-2 shrink-0 rounded-full`,e===`online`?`bg-success`:`bg-muted-foreground/40`)})}function $w({connection:e,busy:t,chip:n=!1}){let r=e.selectedMachineId&&!e.onlyHere?e.machines.find(t=>t.id===e.selectedMachineId):void 0,i=Yw(),a=r?.label??i,o=!r,s=o||c(r.url)?zr:Qr;return(0,W.jsxs)(l,{children:[(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(d,{type:`button`,disabled:t,"aria-label":`Run on`,className:n?L(Xw,`transition-colors hover:bg-[var(--color-accent)] hover:text-[var(--color-accent-foreground)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] disabled:pointer-events-none disabled:opacity-50`):L(gt({variant:`ghost`,size:`icon-sm`}),`relative h-8 w-8`)}),children:n?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`span`,{className:`relative flex shrink-0`,children:[(0,W.jsx)(s,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),!o&&(0,W.jsx)(`span`,{className:`absolute -right-0.5 -top-0.5 h-1.5 w-1.5 rounded-full bg-[var(--color-primary)]`})]}),(0,W.jsx)(`span`,{className:`truncate`,children:a}),(0,W.jsx)(it,{className:`h-3 w-3 shrink-0 opacity-70`,"aria-hidden":!0})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(s,{className:`h-4 w-4`}),!o&&(0,W.jsx)(`span`,{className:`absolute -right-0.5 -top-0.5 h-2 w-2 rounded-full bg-[var(--color-primary)]`})]})}),(0,W.jsx)(h,{children:`Run on — ${a}`})]}),(0,W.jsxs)(A,{align:n?`start`:`end`,className:`min-w-[19rem] max-w-[22rem]`,children:[(0,W.jsxs)(F,{className:`items-start`,onClick:()=>e.onSelectLocal(),children:[(0,W.jsx)(Se,{className:L(`mt-0.5 h-3.5 w-3.5 shrink-0`,o?`opacity-100`:`opacity-0`)}),(0,W.jsx)(Ne,{label:i,description:`Start the run here, through this project's start hook.`})]}),e.machines.map(t=>{let n=e.status[t.id],i=n===`offline`,a=c(t.url),o=a?zr:Qr,s=a?i?`Not connected. It must be on, with OpenAgent running.`:`Your computer. The run starts there.`:i?`${t.url} (offline)`:t.url;return(0,W.jsxs)(F,{className:L(`items-start gap-2`,(i||e.onlyHere)&&`opacity-60`),disabled:e.onlyHere,onClick:()=>e.onSelect(t),children:[(0,W.jsx)(Se,{className:L(`mt-0.5 h-3.5 w-3.5 shrink-0`,r?.id===t.id?`opacity-100`:`opacity-0`)}),(0,W.jsx)(o,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground`,"aria-hidden":!0}),(0,W.jsx)(Qw,{status:n}),(0,W.jsx)(Ne,{label:t.label,description:s}),!a&&(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`button`,{type:`button`,onClick:n=>{n.stopPropagation(),e.onRemove(t)},"aria-label":`Remove machine ${t.label}`,className:`mt-0.5 rounded p-0.5 text-[var(--color-muted-foreground)] hover:text-danger`}),children:(0,W.jsx)(Je,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),(0,W.jsxs)(h,{children:[`Remove `,t.label]})]})]},t.id)}),e.onlyHere&&e.machines.length>0&&(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`This project has no repository address, so it cannot be sent to another machine.`}),(0,W.jsxs)(F,{className:`items-start`,disabled:t,onClick:()=>e.onAddMachine(),children:[(0,W.jsx)(Yr,{className:`mt-0.5 h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,W.jsx)(Ne,{label:`Add a machine…`,description:`Paste the link the other machine gives: its Settings, Devices, Add device.`})]})]})]})}var eT=1e4;function tT(e){let t=e.map(e=>e.id).join(`|`),n=Ie((0,U.useMemo)(()=>t?()=>ve():null,[t]),{},eT,[t]).value;return(0,U.useMemo)(()=>{let e={};for(let[t,r]of Object.entries(n))e[t]=r?`online`:`offline`;return e},[n])}var nT={xhigh:`Extra high`};function rT(e){return nT[e]??e.charAt(0).toUpperCase()+e.slice(1)}function iT({efforts:e,effort:t,onChange:n,busy:r=!1}){if(e.length===0)return null;let i=t===void 0?`Effort`:rT(t);return(0,W.jsxs)(l,{children:[(0,W.jsxs)(d,{type:`button`,disabled:r,"aria-label":t===void 0?`Effort: the agent’s default`:`Effort: ${rT(t)}`,className:L(gt({variant:`ghost`,size:`xs`}),`gap-1 text-muted-foreground`),children:[i,(0,W.jsx)(it,{className:`h-3 w-3 shrink-0`,"aria-hidden":!0})]}),(0,W.jsxs)(A,{align:`end`,className:`min-w-[9rem]`,children:[(0,W.jsxs)(F,{onClick:()=>n(void 0),children:[(0,W.jsx)(`span`,{className:`flex-1`,children:`The agent’s default`}),t===void 0&&(0,W.jsx)(Se,{className:`h-3.5 w-3.5`,"aria-hidden":!0})]}),e.map(e=>(0,W.jsxs)(F,{onClick:()=>n(e),children:[(0,W.jsx)(`span`,{className:`flex-1`,children:rT(e)}),t===e&&(0,W.jsx)(Se,{className:`h-3.5 w-3.5`,"aria-hidden":!0})]},e))]})]})}var aT={"claude-code":{icon:(0,W.jsx)(li,{className:`h-4 w-4`})},codex:{icon:(0,W.jsx)(ui,{className:`h-4 w-4`})}},oT=(0,U.forwardRef)(function({files:e,addContext:t,removeContext:n,aboveControls:r,belowControls:i,sessionModel:a,sessionContext:o,onSubmit:s,onPromptChange:c,onPreset:l,busy:u,submitLabel:d,submitBusyLabel:f,placeholder:p,compact:m=!1,showDriverModel:_=!0,inAgent:v=!1,canSubmit:y=!0,idleControl:b},x){let[S,C]=(0,U.useState)(``),[w,T]=(0,U.useState)(!1),[E,D]=(0,U.useState)(!1),[O,k]=(0,U.useState)(null),A=(0,U.useRef)(null),j=$e(),M=tT(j),N=qe(rr,[],[]),P=dn(),ee=P.model??``,F=P.driver??`claude-code`,te=Ze(),ne=P.customPresets??[],I=an(),re=un(),ie=Ba(re),ae=ie?.commands??[],oe=ie!==null&&ie.address===void 0,R=Fe(),se=R&&!oe?j.find(e=>e.id===R):void 0,ce=!!se&&M[se.id]===`offline`;(0,U.useImperativeHandle)(x,()=>({clear:()=>{A.current?.clear(),C(``)},focus:()=>A.current?.focus()}));let[le,ue]=(0,U.useState)(void 0);(0,U.useEffect)(()=>{if(m||v)return;let e=Ce();e&&ue(e)},[m,v]);let de=(0,U.useRef)(!1),fe=e=>{e?.preventDefault();let t=S.trim();!t||u||de.current||ce||!y||(de.current=!0,Promise.resolve(s(t)).finally(()=>{de.current=!1}))},pe=(e,t)=>{let n=A.current?.loadTemplate(e)??!1;l?.(t,n)},me=(0,W.jsx)(zw,{ref:A,compact:m,onChange:e=>{C(e),c?.(e)},onSubmit:fe,...l?{onPreset:l}:{},...t?{onMentionProject:t,onMentionFile:t}:{},...n?{onMentionRemoved:n}:{},projects:N,files:e,commands:Va(ae),customPresets:ne,projectPresets:I,...m?{}:{onNewPreset:()=>T(!0)},disabled:u,...p?{placeholder:p}:{},...le?{initialText:le}:{}}),he=_&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Jw,{drivers:ct(te).map(e=>({...e,...aT[e.value]})),driver:F,model:ee,onChange:(e,t)=>cn({driver:e,model:t}),busy:u}),(0,W.jsx)(iT,{efforts:rt(te,F,ee),...P.effort?{effort:P.effort}:{},onChange:e=>cn({effort:e??``}),busy:u})]}),ge=!m&&(0,W.jsx)(Ww,{commands:ae,customPresets:ne,projectPresets:I,busy:u,onLoad:pe,onNew:()=>T(!0),onDelete:e=>cn({customPresets:ne.filter(t=>t.id!==e)}),onDeleteProject:e=>on(I.filter(t=>t.id!==e))}),_e=v?null:(0,W.jsx)($w,{busy:u,chip:!m,connection:{machines:j,selectedMachineId:R,onlyHere:oe,onSelect:e=>Ke(e.id),onSelectLocal:()=>Ke(null),onAddMachine:()=>D(!0),onRemove:e=>{k(null),ke(e.id).then(e=>{e.ok||k(e.error)})},status:M}}),ve=!!S.trim(),ye=(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(z,{type:`submit`,size:`icon-sm`,onClick:fe,disabled:u||!ve||ce||!y,"aria-hidden":!ve,tabIndex:ve?void 0:-1,"aria-label":d,className:L(`h-8 w-8 shrink-0 transition-[margin,opacity,transform] duration-150 ease-out`,ve?`ml-0 translate-x-0 opacity-100 disabled:opacity-100`:L(`pointer-events-none translate-x-2 opacity-0 disabled:opacity-0`,m?`-ml-[2.375rem]`:`-ml-8`))}),children:u?(0,W.jsx)(nt,{className:`h-4 w-4 animate-spin`}):(0,W.jsx)(hr,{className:`h-4 w-4`})}),(0,W.jsx)(h,{children:u?f:`${d} (Enter · Shift+Enter for a new line)`})]}),be=!ve&&b?b:ye,xe=ce&&(0,W.jsx)(`p`,{role:`alert`,className:`mt-2 text-xs text-danger`,children:`${se?.label??`The selected machine`} is offline. Pick another place to run, then start.`}),Se=O&&(0,W.jsx)(`p`,{role:`alert`,className:`mt-2 text-xs text-danger`,children:O}),we=E&&(0,W.jsx)(We,{onClose:()=>D(!1),onAdded:()=>A.current?.focus()});return m?(0,W.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:me}),he,_e,be,we]}):(0,W.jsxs)(W.Fragment,{children:[!v&&(0,W.jsxs)(`div`,{className:`mb-1.5 flex h-6 items-center gap-1.5`,children:[(0,W.jsx)(`div`,{className:`flex min-w-0 items-center`,children:_e}),(0,W.jsx)(`div`,{className:`flex min-w-0 shrink-[100] items-center gap-1.5`,children:r})]}),(0,W.jsxs)(`div`,{className:`flex items-end rounded-lg border border-border bg-transparent focus-within:border-muted-foreground/40`,children:[(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:me}),(0,W.jsx)(`div`,{className:`flex shrink-0 items-center p-1`,children:be})]}),(0,W.jsxs)(`div`,{className:`mt-1 flex h-8 items-center gap-2`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-1.5`,children:[ge,i]}),(0,W.jsx)(`div`,{className:`shrink-0`,children:he||(0,W.jsxs)(`span`,{className:`flex items-center`,children:[a!==void 0&&(0,W.jsx)(`span`,{className:`px-2 text-xs text-muted-foreground`,children:a}),o]})})]}),xe,Se,w&&(0,W.jsx)(Hw,{currentPrompt:S,busy:u,canSaveToProject:re!==null,onCancel:()=>{T(!1),A.current?.focus()},onSave:(e,t)=>{t===`project`?on([...I,e]):cn({customPresets:[...ne,e]}),T(!1),A.current?.focus()}}),we]})});function sT(e,t,n){return e===`local`?`${n} (local)`:t}function cT({main:e,local:t,pick:n,onPick:r,busy:i}){let a=sT(n,e,t),o=[{pick:`main`,label:e,description:`The project's main branch, fetched fresh.`},{pick:`local`,label:`My local branch ${t}`,description:`Your branch as committed on this machine; uncommitted edits are not carried. If the agent publishes, your commits that are not pushed go up with its branch.`}];return(0,W.jsxs)(l,{children:[(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(d,{type:`button`,disabled:i,"aria-label":`The agent starts from`,className:L(Xw,`transition-colors hover:bg-[var(--color-accent)] hover:text-[var(--color-accent-foreground)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] disabled:pointer-events-none disabled:opacity-50`)}),children:[(0,W.jsx)(Nr,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`truncate`,children:a}),(0,W.jsx)(it,{className:`h-3 w-3 shrink-0 opacity-70`,"aria-hidden":!0})]}),(0,W.jsx)(h,{children:`The agent starts from ${a}`})]}),(0,W.jsx)(A,{align:`start`,className:`min-w-[19rem] max-w-[22rem]`,children:(0,W.jsxs)(M,{children:[(0,W.jsx)(v,{className:`font-normal`,children:`The agent starts from`}),o.map(e=>(0,W.jsxs)(F,{className:`items-start`,"aria-current":e.pick===n,onClick:()=>r(e.pick),children:[(0,W.jsx)(Se,{className:L(`mt-0.5 h-3.5 w-3.5 shrink-0`,e.pick===n?`opacity-100`:`opacity-0`),"aria-hidden":!0}),(0,W.jsx)(Ne,{label:e.label,description:e.description})]},e.pick))]})})]})}function lT(e,t){let n=t?.replace(/\/+$/,``);return n&&e.startsWith(`${n}/`)?e.slice(n.length+1):e}function uT(e,t){let n=t?.replace(/\/+$/,``);return n===void 0||!e.startsWith(`/`)||e.startsWith(`${n}/`)}function dT(e){return e.kind===`driver`&&e.event.type===`output`?e.event.changed??[]:[]}function fT(e){return e.kind===`driver`&&e.event.type===`start`}function pT(e,t){let n=new Map;for(let r of e){if(!uT(r.path,t))continue;let e=lT(r.path,t),i=n.get(e)??{path:e,name:e.replace(/\/+$/,``).split(`/`).pop()||e,added:0,removed:0,created:!1};n.set(e,{...i,added:i.added+r.added,removed:i.removed+r.removed,created:i.created||r.created===!0})}return[...n.values()].map(e=>e.created?{...e,added:Math.max(0,e.added-e.removed),removed:0}:e)}function mT(e,t){let n=new Map,r=[];for(let i of e){if(fT(i)){r.length>0&&n.set(i,pT(r,t)),r=[];continue}r.push(...dT(i))}return{ended:n,last:pT(r,t)}}function hT(e){return{added:e.reduce((e,t)=>e+t.added,0),removed:e.reduce((e,t)=>e+t.removed,0)}}var gT={Bash:{verb:`Ran`,doing:`Running`,kind:`command`},Read:{verb:`Read`,doing:`Reading`,kind:`read`,file:!0},Edit:{verb:`Edited`,doing:`Editing`,kind:`edit`,file:!0},MultiEdit:{verb:`Edited`,doing:`Editing`,kind:`edit`,file:!0},NotebookEdit:{verb:`Edited`,doing:`Editing`,kind:`edit`,file:!0},Write:{verb:`Wrote`,doing:`Writing`,kind:`edit`,file:!0},Grep:{verb:`Searched`,doing:`Searching`,kind:`search`},Glob:{verb:`Searched`,doing:`Searching`,kind:`search`},WebSearch:{verb:`Searched the web`,doing:`Searching the web`,kind:`search`},WebFetch:{verb:`Fetched`,doing:`Fetching`,kind:`other`},Skill:{verb:`Used skill`,doing:`Using skill`,kind:`skill`},Task:{verb:`Started agent`,doing:`Starting agent`,kind:`other`},Agent:{verb:`Started agent`,doing:`Starting agent`,kind:`other`},TodoWrite:{verb:`Updated todos`,doing:`Updating todos`,kind:`other`},commandExecution:{verb:`Ran`,doing:`Running`,kind:`command`},fileChange:{verb:`Edited`,doing:`Editing`,kind:`edit`,file:!0},mcpToolCall:{verb:`Called`,doing:`Calling`,kind:`other`},webSearch:{verb:`Searched the web`,doing:`Searching the web`,kind:`search`}};function _T(e){if(!/^[a-z]+([A-Z][a-z]*)+$/.test(e))return e;let t=e.replace(/[A-Z]/g,e=>` ${e.toLowerCase()}`);return t.charAt(0).toUpperCase()+t.slice(1)}function vT(e){return e.split(`, `).map(e=>e.replace(/\/+$/,``).split(`/`).pop()||e).join(`, `)}function yT(e,t,n){let r=gT[e],i={verb:r?.verb??_T(e),doing:r?.doing??_T(e),kind:r?.kind??`other`};if(t!==void 0&&(i.detail=t,i.target=r?.file?vT(t):t),n!==void 0&&n.length>0){let e=pT(n);i.kind=`edit`,i.verb=e.every(e=>e.created)?`Created`:`Edited`,i.target=e.map(e=>e.name).join(`, `),i.files=e,i.size=hT(e)}return i}function bT(e){return e===1?`Ran a command`:`Ran ${e} commands`}function xT({added:e,removed:t}){return(0,W.jsxs)(`span`,{className:`shrink-0 tabular-nums`,children:[(0,W.jsxs)(`span`,{className:`text-success`,children:[`+`,e]}),` `,(0,W.jsxs)(`span`,{className:`text-danger`,children:[`−`,t]})]})}function ST({files:e,onOpen:t}){return(0,W.jsx)(`ul`,{"aria-label":`Files changed`,className:`flex min-w-0 flex-1 flex-col gap-1 font-sans text-sm`,children:e.map(e=>{let n=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Re,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-left text-foreground`,title:e.path,children:e.name}),(0,W.jsx)(xT,{added:e.added,removed:e.removed}),t&&(0,W.jsx)(Xe,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`,"aria-hidden":!0})]}),r=`flex w-full min-w-0 items-center gap-2 rounded-lg border border-border px-3 py-2`;return(0,W.jsx)(`li`,{className:`min-w-0`,children:t?(0,W.jsx)(`button`,{type:`button`,onClick:()=>t(e.path),"aria-label":`Show the change to ${e.name}`,className:`${r} hover:bg-muted`,children:n}):(0,W.jsx)(`div`,{className:r,children:n})},e.path)})})}function CT({since:e}){let[t,n]=(0,U.useState)(()=>Date.now());(0,U.useEffect)(()=>{let e=setInterval(()=>n(Date.now()),1e3);return()=>clearInterval(e)},[]);let r=Math.max(0,Math.floor((t-Date.parse(e))/1e3));return(0,W.jsx)(`span`,{className:`shrink-0 tabular-nums`,children:r<60?`${r}s`:`${Math.floor(r/60)}m ${r%60}s`})}function wT(){return(0,W.jsxs)(`span`,{className:`dot-wave shrink-0`,"aria-hidden":!0,children:[(0,W.jsx)(`span`,{}),(0,W.jsx)(`span`,{}),(0,W.jsx)(`span`,{})]})}function TT(e){let t=e.trim().split(`
130
+ `).find(e=>e.trim()!==``)?.trim()??`Thought`;return t.length>90?`${t.slice(0,90).trimEnd()}…`:t}var ET=`max-h-64 overflow-auto whitespace-pre-wrap break-all rounded-md px-2.5 py-1.5 font-mono text-xs text-foreground`;function DT({label:e,detail:t,whole:n,summary:r,output:i,live:a}){let[o,s]=(0,U.useState)(!1),c=yT(e,t,i?.changed),l=n??c.detail,u=c.kind===`command`?r:void 0,d=(0,W.jsxs)(W.Fragment,{children:[u===void 0?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:L(`shrink-0`,a&&`text-shimmer`),children:a?c.doing:c.verb}),c.target!==void 0&&(0,W.jsx)(`span`,{className:L(`truncate`,a?`text-shimmer`:`text-foreground`),children:c.target})]}):(0,W.jsx)(`span`,{className:L(`truncate`,a&&`text-shimmer`),children:u}),c.size!==void 0&&(0,W.jsx)(xT,{...c.size}),a?.since!==void 0&&(0,W.jsx)(CT,{since:a.since})]});return l===void 0&&i===void 0?(0,W.jsx)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:d}):(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>s(e=>!e),"aria-expanded":o,"aria-label":u??[a?c.doing:c.verb,c.target].filter(Boolean).join(` `),className:`flex max-w-full min-w-0 items-center gap-1.5 text-left hover:text-foreground`,children:[d,(0,W.jsx)(Xe,{className:L(`h-3.5 w-3.5 shrink-0 transition-transform`,o&&`rotate-90`),"aria-hidden":!0})]}),o&&(0,W.jsxs)(`div`,{className:`mt-1 flex flex-col gap-1`,children:[l!==void 0&&(0,W.jsxs)(`pre`,{"aria-label":c.kind===`command`?`Command`:`Detail`,className:L(ET,`bg-muted`),children:[c.kind===`command`&&(0,W.jsx)(`span`,{className:`select-none text-muted-foreground`,children:`$ `}),l]}),i!==void 0&&i.text!==``&&(0,W.jsx)(`pre`,{"aria-label":`Output`,className:L(ET,`border border-border`),children:i.text}),i?.failed&&(0,W.jsx)(`div`,{className:`text-xs text-danger`,children:i.exitCode===void 0?`Failed`:`Failed: exit code ${i.exitCode}`})]})]})}function OT({text:e}){let[t,n]=(0,U.useState)(!1);return(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),"aria-expanded":t,"aria-label":`Thought`,className:`flex min-w-0 max-w-full items-center gap-1.5 hover:text-foreground`,children:[(0,W.jsx)(`span`,{className:`truncate italic`,children:TT(e)}),(0,W.jsx)(Xe,{className:L(`h-3.5 w-3.5 shrink-0 transition-transform`,t&&`rotate-90`),"aria-hidden":!0})]}),t&&(0,W.jsx)(`div`,{className:`mt-1 italic`,children:(0,W.jsx)(o,{text:e,compact:!0})})]})}function kT({call:e,word:t,since:n}){return(0,W.jsxs)(`div`,{role:`status`,className:`flex min-w-0 flex-1 items-center gap-2 font-sans text-sm text-muted-foreground`,children:[(0,W.jsx)(wT,{}),(0,W.jsx)(`span`,{className:`morph-in flex min-w-0 items-center gap-2`,children:e?(0,W.jsx)(DT,{...e,live:{since:n}}):(0,W.jsxs)(W.Fragment,{children:[t!==void 0&&(0,W.jsx)(`span`,{className:`text-shimmer`,children:t}),n!==void 0&&(0,W.jsx)(CT,{since:n})]})},e?e.id??`${e.label} ${e.detail??``}`:t)]})}function AT({steps:e,lead:t}){let[n,r]=(0,U.useState)(!1),i=dn().showThinking===!0?e:e.filter(e=>e.type===`action`),a=e.filter(e=>e.type===`action`);if(a.length===0)return null;let o=bT(a.length),s=i.length===1?i[0]:void 0;return s?.type===`action`&&!t?(0,W.jsx)(`div`,{className:`min-w-0 flex-1 font-sans text-sm text-muted-foreground`,children:(0,W.jsx)(DT,{...s})}):(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 font-sans text-sm text-muted-foreground`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>r(e=>!e),"aria-expanded":n,"aria-label":o,className:`flex items-center gap-1.5 hover:text-foreground`,children:[(0,W.jsx)(`span`,{className:`min-w-0 truncate text-left`,children:o}),(0,W.jsx)(Xe,{className:L(`h-3.5 w-3.5 shrink-0 transition-transform`,n&&`rotate-90`),"aria-hidden":!0})]}),n&&(0,W.jsxs)(`div`,{className:`mt-1.5 flex flex-col divide-y divide-border rounded-lg border border-border`,children:[t&&(0,W.jsx)(`div`,{className:`px-2 py-1.5`,children:t}),i.map((e,t)=>(0,W.jsx)(`div`,{className:`px-2 py-1.5`,children:e.type===`action`?(0,W.jsx)(DT,{...e}):(0,W.jsx)(OT,{text:e.text})},t))]})]})}var jT=`Starting session`;function MT({projectId:e,projectName:t,onAgentStarted:n,files:r,context:i,addContext:a,removeContext:o,toggleContext:s}){let[c,l]=(0,U.useState)(null),[u,d]=(0,U.useState)(null),{busy:f,cloning:p,error:m,reset:h,start:g}=Fa(e),_=(0,U.useRef)(null),v=dn(),y=Ba(e),b=$e(),x=Fe(),S=x&&(y===null||y.address!==void 0)?b.find(e=>e.id===x):void 0,w=y!==null&&!y.startHook&&!S,T=S?[]:Va(y?.commands??[]),E=Na(T),D=S?!0:y?.gitHost??!0,k=S?!0:y?.remote??!0,A=O(v.publish,D,k),j=S?void 0:y?.startFrom,M=v.startFrom?.[e]??`main`,N=fn(),P=t=>{let{[e]:n,...r}=v.startFrom??{};cn({startFrom:t===`local`?{...r,[e]:`local`}:r})},ee=v.driver,F=qe(S?null:()=>pr(e,ee),null,[e,ee,S===void 0]),te=qe(rr,[],[]),ne=new Set(te.map(e=>e.path)),I=[...i].filter(e=>!ne.has(e)),re=te.filter(t=>t.id!==e),L=re.filter(e=>i.has(e.path)).length,ie=[L>0?`${L} project${L>1?`s`:``}`:null,I.length>0?`${I.length} file${I.length>1?`s`:``}`:null].filter(Boolean).join(` · `);return(0,W.jsxs)(`form`,{onSubmit:e=>e.preventDefault(),className:`relative mx-auto w-full max-w-3xl p-2`,children:[(0,W.jsx)(oT,{ref:_,files:r,addContext:a,removeContext:o,aboveControls:t?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Zw,{icon:(0,W.jsx)(Mr,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),children:t}),j&&N&&(0,W.jsx)(cT,{main:j.main,local:j.local,pick:M,onPick:P,busy:f})]}):null,belowControls:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(qa,{otherProjects:re,context:i,contextFiles:I,summary:ie,busy:f,onToggle:s}),(0,W.jsx)(Ga,{publish:A,picks:C(D,k),onPublish:e=>cn({publish:e}),cleanup:E?v.postMergeCleanup??!1:void 0,onCleanup:e=>cn({postMergeCleanup:e}),busy:f})]}),onSubmit:async t=>{if(f)return;l(jT),d(S?.label??null);let r=await g(e,Ua(t,i),{...ja(v),...Pa(v,T),...j&&M===`local`?{base:j.local}:{},...S?{machine:S.id}:{}});l(null),r&&(n?.(t,r.agentId,S?.label),_.current?.clear())},onPromptChange:e=>{!e.trim()&&c&&l(null),m&&h()},onPreset:(e,t)=>{h(),l(t?`${e} loaded over your draft — undo (⌘Z) brings the draft back`:`${e} loaded — review or edit, then Start`)},busy:f,canSubmit:!w,submitLabel:`Start agent`,submitBusyLabel:`Starting…`}),m&&(0,W.jsx)(NT,{children:m}),c===jT&&!m?(0,W.jsxs)(`p`,{role:`status`,className:`absolute inset-x-2 bottom-full flex items-center gap-2 px-1.5 pb-1 text-sm text-muted-foreground`,children:[(0,W.jsx)(wT,{}),(0,W.jsx)(`span`,{className:`text-shimmer`,children:p&&u?`Cloning ${t??`this project`} on ${u}, the first time only`:c})]}):c&&!m&&(0,W.jsx)(`p`,{role:`status`,className:`mt-2 text-xs text-muted-foreground`,children:c}),F?.problems.map(e=>(0,W.jsx)(NT,{children:e},e)),F?.warnings.map(e=>(0,W.jsx)(`p`,{role:`alert`,className:`mt-2 text-xs text-warning`,children:e},e)),w&&(0,W.jsxs)(NT,{children:[`This project has no start hook. Add a `,(0,W.jsx)(`code`,{className:`font-mono`,children:`start:`}),` line to`,` `,(0,W.jsx)(`code`,{className:`font-mono`,children:`.openagent/hooks.yml`}),`.`]})]})}function NT({children:e}){return(0,W.jsxs)(`p`,{role:`alert`,className:`mt-2 flex items-start gap-2 rounded-md border border-danger/40 bg-danger/10 px-3 py-2 text-sm text-danger`,children:[(0,W.jsx)(xr,{className:`mt-0.5 h-4 w-4 shrink-0`,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`min-w-0 [overflow-wrap:anywhere]`,children:e})]})}function PT(e){let t=zT(e);return t.length>0&&!t.some(e=>e.kind===`end`)}function FT(e){let t=zT(e).find(e=>e.kind===`end`);if(!(!t||t.kind!==`end`))return{ok:t.ok,stopped:t.stopped===!0,...t.waiting===!0?{waiting:!0}:{},...t.detail===void 0?{}:{detail:t.detail}}}function IT(e){if(e!==`running`)return{ok:e===`done`,stopped:e===`stopped`,...e===`waiting`?{waiting:!0}:{}}}function LT(e){let t;for(let n of e){if(n.kind!==`driver`||n.event.type!==`action`)continue;let e=/^run (https?:\/\/\S+)$/.exec(n.event.label);e&&(t=e[1])}return t}function RT(e){let t;for(let n of e){if(n.kind!==`driver`||n.event.type!==`action`)continue;let e=/^cloud (https:\/\/claude\.ai\/code\/(session_[A-Za-z0-9]+)\S*)$/.exec(n.event.label);e&&(t={url:e[1],id:e[2]})}return t}function zT(e){let t=0,n=!1;for(let r=e.length-1;r>=0;r--){let i=e[r]?.kind;if(i===`session`){t=r;break}if(i===`end`&&n){t=r+1;break}i===`driver`&&(n=!0)}return e.slice(t)}function BT(e){let t=e?.sessionLink,n=e?.sessionId;return!t||!n||!t.includes(n)?null:{href:t,label:`Open session (${n}) ↗`}}function VT(e){let t=e?.sessionId;if(!t)return null;let n=e.workspace;if(!n)return t;let r=`'${n.replaceAll(`'`,`'\\''`)}'`;return`mkdir -p ${r} && cd ${r} && claude --resume ${t}`}function HT(){return qe(()=>Wt(),[],[])}function UT(e){let t=HT();return e&&!t.some(t=>t.bin===e)?[...t,{bin:e,label:e}]:t}function WT({busy:e}){let t=dn().editor,n=UT(t);return(0,W.jsxs)(M,{children:[(0,W.jsx)(v,{children:`Preferred editor`}),(0,W.jsxs)(F,{disabled:e,closeOnClick:!1,onClick:()=>cn({editor:``}),className:`items-start`,children:[(0,W.jsx)(Se,{className:L(`mt-0.5 h-3.5 w-3.5 shrink-0`,t?`opacity-0`:`opacity-100`)}),(0,W.jsx)(Ne,{label:`Default`,description:`$OPENAGENT_EDITOR, or code`})]}),n.map(n=>(0,W.jsxs)(F,{disabled:e,closeOnClick:!1,onClick:()=>cn({editor:n.bin}),className:`items-start`,children:[(0,W.jsx)(Se,{className:L(`mt-0.5 h-3.5 w-3.5 shrink-0`,t===n.bin?`opacity-100`:`opacity-0`)}),(0,W.jsx)(Ne,{label:n.label,description:n.bin})]},n.bin))]})}var GT=`font-medium text-foreground`;function KT({projectId:e,open:t,onOpenChange:n,onRemoved:r}){let[i,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(null),{busy:c,error:l,run:u,reset:d}=tt();(0,U.useEffect)(()=>{t&&(a(!1),d())},[t,d]);let f=()=>{n(!1),queueMicrotask(r)};return(0,W.jsx)(he,{open:t,onOpenChange:e=>{c||o||n(e)},children:(0,W.jsxs)(yt,{children:[(0,W.jsx)(p,{className:`fixed inset-0 z-50 bg-black/40 backdrop-blur-[1px]`}),(0,W.jsx)(xe,{className:`fixed left-1/2 top-1/2 z-50 max-h-[calc(100vh-2rem)] w-[min(28rem,calc(100vw-2rem))] -translate-x-1/2 -translate-y-1/2 overflow-y-auto rounded-lg border border-border bg-card p-5 text-card-foreground shadow-lg`,children:o?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ye,{className:`text-sm font-semibold`,children:`Project removed`}),(0,W.jsx)(_t,{className:`mt-2 text-xs leading-relaxed text-muted-foreground`,children:`It left the dashboard’s list. This is what happened to OpenAgent’s files in the folder.`}),(0,W.jsx)(qT,{title:`Deleted`,empty:`Nothing: there was nothing of OpenAgent’s to delete.`,lines:o.removed}),o.kept.length>0&&(0,W.jsx)(qT,{title:`Kept`,lines:o.kept.map(e=>`${e.path}: ${e.reason}`)}),o.failed.length>0&&(0,W.jsx)(qT,{title:`Could not be cleaned`,lines:o.failed,danger:!0}),(0,W.jsx)(`div`,{className:`mt-4 flex justify-end`,children:(0,W.jsx)(z,{size:`sm`,onClick:f,children:`Done`})})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ye,{className:`text-sm font-semibold`,children:`Remove this project?`}),(0,W.jsxs)(_t,{className:`mt-2 text-xs leading-relaxed text-muted-foreground`,children:[`It leaves the dashboard’s list, and its scheduler stops unless you set it to keep running.`,` `,i?(0,W.jsx)(W.Fragment,{children:`Your files and your commits stay.`}):(0,W.jsxs)(W.Fragment,{children:[`Nothing in the folder is deleted: your files and your commits stay, and so do OpenAgent’s own files there (`,(0,W.jsx)(`span`,{className:GT,children:`.openagent`}),`, `,(0,W.jsx)(`span`,{className:GT,children:`.branches`}),`,`,` `,(0,W.jsx)(`span`,{className:GT,children:`.agent-runner`}),` and the branch `,(0,W.jsx)(`span`,{className:GT,children:`agent-data`}),` with the agents’ records).`]}),` `,`Add the folder again to bring the project back.`]}),(0,W.jsxs)(`label`,{className:`mt-3 flex cursor-pointer items-start gap-2 text-xs text-foreground`,children:[(0,W.jsx)(pe,{checked:i,onCheckedChange:e=>a(e===!0),disabled:c,className:`mt-0.5`}),(0,W.jsx)(`span`,{children:`Also delete OpenAgent’s files in this folder`})]}),i&&(0,W.jsxs)(`div`,{className:`mt-2 rounded-md border border-border p-3 text-xs leading-relaxed text-muted-foreground`,children:[(0,W.jsxs)(`p`,{children:[`This deletes, on this machine: the agents’ checkouts in `,(0,W.jsx)(`span`,{className:GT,children:`.branches`}),`, the folders`,` `,(0,W.jsx)(`span`,{className:GT,children:`.openagent`}),` (with `,(0,W.jsx)(`span`,{className:GT,children:`hooks.yml`}),`, the project’s start lines) and`,` `,(0,W.jsx)(`span`,{className:GT,children:`.agent-runner`}),`, and the local branch `,(0,W.jsx)(`span`,{className:GT,children:`agent-data`}),`. A tool that worked in the project removes its own files too: the scheduler’s state, the subagent settings.`]}),(0,W.jsxs)(`p`,{className:`mt-2`,children:[(0,W.jsx)(`span`,{className:GT,children:`The agents’ conversations go with that branch.`}),` If you never shared the records, this is their only copy. If you did, what has not reached the remote yet is lost. An agent that waits for your answer cannot be continued after this.`]}),(0,W.jsxs)(`p`,{className:`mt-2`,children:[`It never touches the remote, your files, your commits, a branch with work on it, or a file git tracks. A checkout with uncommitted work stays, and so does `,(0,W.jsx)(`span`,{className:GT,children:`.agent-runner/config.yml`}),` if you wrote one. A scheduler you set to keep running is not stopped: its files, the records and `,(0,W.jsx)(`span`,{className:GT,children:`.openagent`}),` then stay. Stop it, add the folder again and remove it once more to delete them. You see the list of what went and what stayed right after.`]})]}),l&&(0,W.jsx)(`p`,{className:`mt-2 text-xs text-danger`,children:l}),(0,W.jsxs)(`div`,{className:`mt-4 flex justify-end gap-2`,children:[(0,W.jsx)(ie,{render:(0,W.jsx)(z,{variant:`outline`,size:`sm`,disabled:c,children:`Cancel`})}),(0,W.jsx)(z,{variant:`destructive`,size:`sm`,disabled:c,onClick:()=>{u(()=>sr(e,i),`Could not remove the project.`).then(e=>{if(!e.ok)return;let t=e.value.cleanup;t?s(t):f()})},className:L(c&&`cursor-progress`),children:c?`Removing…`:i?`Remove and delete`:`Remove`})]})]})})]})})}function qT({title:e,lines:t,empty:n,danger:r=!1}){return(0,W.jsxs)(`div`,{className:`mt-3 text-xs`,children:[(0,W.jsx)(`p`,{className:L(`font-medium`,r?`text-danger`:`text-foreground`),children:e}),t.length===0?(0,W.jsx)(`p`,{className:`mt-1 text-muted-foreground`,children:n}):(0,W.jsx)(`ul`,{className:`mt-1 space-y-0.5 text-muted-foreground`,children:t.map(e=>(0,W.jsx)(`li`,{className:`break-words`,children:e},e))})]})}function JT({projectId:e,agentId:t,events:n,label:r,retainedWorktree:i=!1,onWorktreeRemoved:a,onDeleted:o,onProjectRemoved:s,onOpenSkills:c,details:u,size:f}){let p=!!t,m=PT(n),_=Nt(n),v=BT(_),y=m||i,b=VT(_),[x,S]=(0,U.useState)(!1),C=(0,U.useRef)(void 0);(0,U.useEffect)(()=>()=>clearTimeout(C.current),[]);let T=()=>{b&&navigator.clipboard?.writeText(b).then(()=>{S(!0),clearTimeout(C.current),C.current=setTimeout(()=>S(!1),1500)})},[E,D]=(0,U.useState)(0),O=qe(()=>Nn(e),null,[e,E],`previous`),j=qe(p?null:()=>Pn(e),null,[e,p,E]),[M,N]=(0,U.useState)(!1),[P,ee]=(0,U.useState)(0),te=qe(p?null:()=>cr(e),null,[e,p,E,P],`previous`),[ne,I]=(0,U.useState)(!1),[L,ie]=(0,U.useState)(!1),ae=()=>void se(()=>lr(e,!1),`Could not stop sharing.`).then(e=>{e.ok&&ee(e=>e+1)}),{busy:oe,error:R,run:se}=tt(),[ce,le]=(0,U.useState)(!1);(0,U.useEffect)(()=>le(!1),[t]);let ue=oe||ce&&m,[fe,pe]=(0,U.useState)(!1),me=n=>se(()=>Zn(e,n,t??void 0),`Failed to open.`),he=()=>void se(()=>Hn(e,t??void 0),`Could not stop the session.`).then(e=>{e.ok&&le(!0)}),ge=()=>{t&&se(()=>Jn(e,t),`Could not remove the worktree.`).then(e=>{e.ok&&a?.()})},_e=r?.trim()||t,ve=p?`Session actions`:`Project actions`,ye=i&&!m&&!!t,z=!!o&&!m&&!!t,xe=O&&(0,W.jsxs)(F,{render:(0,W.jsx)(`a`,{href:O.url,target:`_blank`,rel:`noreferrer`}),children:[(0,W.jsx)(kr,{className:`h-3.5 w-3.5 shrink-0`}),` Open on `,O.name]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(l,{children:[p?(0,W.jsxs)(d,{type:`button`,"aria-label":ve,title:r,className:`flex min-w-0 items-center gap-1 rounded px-1 py-0.5 text-left text-xs hover:bg-muted data-[popup-open]:bg-muted`,children:[r?(0,W.jsx)(`span`,{className:`min-w-0 truncate font-medium text-foreground`,children:r}):(0,W.jsx)(`span`,{"data-testid":`title-placeholder`,className:`h-3 w-40 max-w-full rounded bg-muted`}),(0,W.jsx)(it,{className:`h-3 w-3 shrink-0 text-muted-foreground`,"aria-hidden":!0})]}):(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(d,{type:`button`,"aria-label":ve,className:gt({variant:`outline`,size:`icon-sm`})}),children:(0,W.jsx)(Or,{className:`h-3.5 w-3.5`})}),(0,W.jsx)(h,{children:ve})]}),(0,W.jsxs)(A,{align:p?`start`:`end`,className:`min-w-[14rem]`,children:[u&&(0,W.jsxs)(F,{onClick:u.onToggle,children:[(0,W.jsx)(Rr,{className:`h-3.5 w-3.5 shrink-0`}),` `,u.open?`Hide details`:`Show details`]}),!p&&xe,c&&!p&&(0,W.jsxs)(F,{onClick:c,children:[(0,W.jsx)(Xr,{className:`h-3.5 w-3.5 shrink-0`}),` Skills…`]}),j&&(0,W.jsxs)(F,{onClick:()=>N(!0),children:[(0,W.jsx)(Tr,{className:`h-3.5 w-3.5 shrink-0`}),` Create a repository on `,j.name,`…`]}),te===`kept`&&(0,W.jsxs)(F,{onClick:()=>I(!0),children:[(0,W.jsx)(Tr,{className:`h-3.5 w-3.5 shrink-0`}),` Share the agents’ records to the remote…`]}),te===`origin`&&(0,W.jsxs)(F,{disabled:oe,onClick:ae,children:[(0,W.jsx)(wr,{className:`h-3.5 w-3.5 shrink-0`}),` Stop sharing the agents’ records`]}),(0,W.jsxs)(F,{disabled:oe,onClick:()=>void me(`files`),title:t&&!y?`This session no longer has its own checkout`:void 0,children:[(0,W.jsx)(Ar,{className:`h-3.5 w-3.5 shrink-0`}),` `,t?y?`Open session's folder`:`Open project folder`:`Open folder`]}),(0,W.jsxs)(k,{children:[(0,W.jsxs)(xt,{disabled:oe,children:[(0,W.jsx)(Dr,{className:`h-3.5 w-3.5 shrink-0`}),` Open in editor`]}),(0,W.jsxs)(re,{className:`min-w-[15rem]`,children:[(0,W.jsxs)(F,{disabled:oe,onClick:()=>void me(`editor`),children:[(0,W.jsx)(Dr,{className:`h-3.5 w-3.5 shrink-0`}),` `,t?`Open this session's checkout`:`Open in your editor`]}),(0,W.jsx)(w,{}),(0,W.jsx)(WT,{busy:oe})]})]}),p&&xe,v&&(0,W.jsxs)(F,{render:(0,W.jsx)(`a`,{href:v.href,target:`_blank`,rel:`noreferrer`}),children:[(0,W.jsx)(kr,{className:`h-3.5 w-3.5 shrink-0`}),` `,v.label.replace(` ↗`,``)]}),b&&_?.sessionId&&(0,W.jsxs)(F,{closeOnClick:!1,onClick:T,title:b,children:[x?(0,W.jsx)(Se,{className:`h-3.5 w-3.5 shrink-0 text-success`}):(0,W.jsx)(be,{className:`h-3.5 w-3.5 shrink-0`}),(0,W.jsx)(`span`,{className:`flex-1`,children:x?`Copied`:_.workspace?`Copy resume command`:`Copy session id`}),(0,W.jsx)(`span`,{className:`ml-auto pl-3 font-mono text-[10px] text-muted-foreground`,children:_.sessionId.slice(0,8)})]}),(m||ye||z)&&(0,W.jsx)(w,{}),m&&(0,W.jsxs)(F,{disabled:ue,onClick:()=>void he(),children:[(0,W.jsx)(ti,{className:`h-3 w-3 shrink-0 fill-current`}),` `,ue?`Stopping…`:`Stop agent`]}),ye&&(0,W.jsxs)(F,{disabled:oe,onClick:()=>ge(),children:[(0,W.jsx)(jr,{className:`h-3.5 w-3.5 shrink-0`}),` `,(0,W.jsx)(`span`,{className:`flex-1`,children:`Remove worktree`}),f&&(0,W.jsx)(`span`,{className:`ml-auto pl-3 text-[10px] text-muted-foreground`,children:f})]}),z&&(0,W.jsxs)(F,{onClick:()=>pe(!0),className:`text-danger`,children:[(0,W.jsx)(ri,{className:`h-3.5 w-3.5 shrink-0`}),` Delete session`]}),s&&!p&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(w,{}),(0,W.jsxs)(F,{onClick:()=>ie(!0),className:`text-danger`,children:[(0,W.jsx)(ri,{className:`h-3.5 w-3.5 shrink-0`}),` Remove project…`]})]}),R&&(0,W.jsx)(`p`,{className:`px-2 py-1.5 text-xs text-danger`,children:R})]})]}),j&&(0,W.jsx)(de,{open:M,onOpenChange:N,title:`Create a private repository on ${j.name}?`,body:(0,W.jsxs)(W.Fragment,{children:[`This creates the private repository `,(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:j.repository}),` on your`,` `,j.name,` account and pushes this project to it. The project’s code leaves this machine.`]}),confirmLabel:`Create and push`,confirmBusyLabel:`Creating…`,fallbackError:`Could not create the repository.`,destructive:!1,onConfirm:()=>nr(e),onSuccess:()=>D(e=>e+1)}),te===`kept`&&(0,W.jsx)(de,{open:ne,onOpenChange:I,title:`Share the agents’ records to the remote?`,body:(0,W.jsxs)(W.Fragment,{children:[`This pushes a branch `,(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:`agent-data`}),` to this project’s remote, and keeps pushing as agents work. It holds what you asked each agent and what it answered, under your git email. Everyone who can read the remote can read it.`]}),confirmLabel:`Share`,confirmBusyLabel:`Sharing…`,fallbackError:`Could not share the records.`,destructive:!1,onConfirm:()=>lr(e,!0),onSuccess:()=>ee(e=>e+1)}),s&&!p&&(0,W.jsx)(KT,{projectId:e,open:L,onOpenChange:ie,onRemoved:s}),o&&t&&(0,W.jsx)(de,{open:fe,onOpenChange:pe,title:`Delete this agent?`,body:(0,W.jsxs)(W.Fragment,{children:[`Deleting `,(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:_e}),` removes it from the dashboard for good — its history can’t be recovered. Its branch and any pull request stay in git.`]}),confirmLabel:`Delete`,confirmBusyLabel:`Deleting…`,fallbackError:`Could not delete the agent.`,onConfirm:()=>Yn(e,t),onSuccess:o})]})}function YT({docs:e,loaded:t}){let[n,r]=(0,U.useState)(0);if(!t)return(0,W.jsx)(`p`,{className:`p-4 text-sm text-muted-foreground`,children:`Loading…`});if(e.length===0)return(0,W.jsx)(`p`,{className:`p-4 text-sm text-muted-foreground`,children:`No PLAN/TODO docs yet.`});let i=e[Math.min(n,e.length-1)];return(0,W.jsxs)(`div`,{className:`flex min-h-0 flex-auto flex-col`,children:[(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1 border-b border-border p-2`,children:e.map((e,t)=>(0,W.jsx)(z,{variant:`ghost`,size:`sm`,className:L(`h-7 text-xs`,t===n&&`bg-accent text-accent-foreground`),onClick:()=>r(t),children:e.name},e.name))}),(0,W.jsx)(ce,{className:`min-h-0 flex-auto`,children:(0,W.jsx)(`div`,{className:`p-4`,children:(0,W.jsx)(o,{text:i.content})})})]})}var XT=class extends U.Component{state={error:null};static getDerivedStateFromError(e){return{error:e instanceof Error?e.message:String(e)}}render(){return this.state.error===null?this.props.children:(0,W.jsxs)(`div`,{role:`alert`,className:`p-6 text-sm text-danger`,children:[`The `,this.props.label,` failed: `,this.state.error]})}};function ZT({package:e,label:t,children:n}){let r=Ge(e);return(0,W.jsx)(ot.Provider,{value:r,children:(0,W.jsx)(XT,{label:t,children:n})})}function QT(e,t){return e.flatMap(e=>{let n=t.find(t=>t.id===e);return n?[{id:n.id,name:n.name,gitHost:n.gitHost}]:[]})}function $T({page:e,projects:t,path:n}){let r=e.Page;return(0,W.jsx)(ZT,{package:e.package,label:`${e.label} page`,children:(0,W.jsx)(r,{projects:QT(e.projects,t),path:n})},e.segment)}function eE(e){let t=(0,U.useId)();return`${e??t}`}var tE=typeof window<`u`?U.useLayoutEffect:U.useEffect;function nE(e){let t=(0,U.useRef)(e);return tE(()=>{t.current=e},[e]),(0,U.useCallback)((...e)=>t.current?.(...e),[t])}function rE(...e){return nE(t=>{e.forEach(e=>{if(e)switch(typeof e){case`function`:e(t);break;case`object`:e.current=t;break}})})}function iE(e,t){return t?e*2+1:e+1}function aE(e,t){return t?e*2-1:e}function oE(e,t,n){let r=iE(e,n);return t===void 0?`${r} / -1`:`${r} / span ${aE(t,n)}`}function sE(e){return`${e*2} / span 1`}function cE({crossCount:e,crossSpan:t,crossStart:n,hasGutters:r}){let i=t===void 0?e:n+t;if(n===0&&i===e)return`1 / -1`;let a=iE(n,r),o=iE(i-1,r)+1;return r&&(n>0&&a--,i<e&&o++),`${a} / ${o}`}function lE(e,t){return Number.isInteger(e)&&e>=1&&e<t}function $(e,t=`Assertion error`){if(!e)throw Error(t)}var uE=(0,U.createContext)(null);function dE(){let e=(0,U.useContext)(uE);return $(e,`Grid Context not found; did you render a Cell or Gridline outside of a Grid?`),e}function fE({children:e,className:t,column:n,columnSpan:r=1,elementRef:i,id:a,row:o,rowSpan:s=1,style:c,...l}){let u=eE(a),{gutters:d,registerCell:f}=dE(),p=(0,U.useRef)(null),m=rE(p,i);return tE(()=>{let e=p.current;if(e!==null)return f({column:n,columnSpan:r,element:e,id:u,row:o,rowSpan:s})},[n,r,u,f,o,s]),(0,W.jsx)(`div`,{...l,className:t,"data-cell":!0,"data-testid":u,id:u,ref:m,style:{overflow:`auto`,...c,minHeight:0,minWidth:0,gridColumn:oE(n,r,d.column),gridRow:oE(o,s,d.row)},children:e})}fE.displayName=`Cell`;var pE;function mE(){return pE===void 0&&(pE=typeof matchMedia==`function`&&!!matchMedia(`(pointer:coarse)`).matches),pE}function hE({expandHitTargets:e,axis:t,rect:n}){let r=e?mE()?t.resizeTargetMinimumSize.coarse:t.resizeTargetMinimumSize.fine:0;if(n.width<r){let e=r-n.width;n=new DOMRect(n.x-e/2,n.y,n.width+e,n.height)}if(n.height<r){let e=r-n.height;n=new DOMRect(n.x,n.y-e/2,n.width,n.height+e)}return n}function gE({axis:e,cells:t,index:n,rect:r}){let i=[r];for(let r of t){let t=e===`column`?r.column:r.row,a=e===`column`?r.columnSpan:r.rowSpan;if(t>=n||t+a<=n)continue;let o=r.element.getBoundingClientRect(),s=e===`column`?o.top:o.left,c=e===`column`?o.bottom:o.right;c<=s||(i=i.flatMap(t=>{let n=e===`column`?t.top:t.left,r=e===`column`?t.bottom:t.right;if(s>=r||c<=n)return[t];let i=[],a=(n,r)=>{i.push(e===`column`?new DOMRect(t.x,n,t.width,r-n):new DOMRect(n,t.y,r-n,t.height))};return n<s&&a(n,s),r>c&&a(c,r),i}))}return i}function _E({axis:e,cells:t,crossTrackCount:n,expandHitTargets:r,resizeAxis:i,axisSize:a,includeDisabled:o,separatorPlacements:s}){let{items:c,separators:l}=i,u=c.length,d=-1,f=-1,p=0;if(c.forEach((e,t)=>{e.constraintProps.disabled||(p++,d===-1&&(d=t),f=t)}),!o&&p<2)return[];let m=e=>o||e>d&&e<=f,h=[],g=(e,t,n)=>({axis:i,axisSize:a,items:[c[e-1],c[e]],rect:t,separator:n}),_=(n,r)=>{let i;for(let a of t){let t=e===`column`?a.row:a.column,o=e===`column`?a.rowSpan:a.columnSpan;if(r===`start`?t===n:t+o-1===n){let t=a.element.getBoundingClientRect();if(r===`start`){let n=e===`column`?t.top:t.left;i=i===void 0?n:Math.min(i,n)}else{let n=e===`column`?t.bottom:t.right;i=i===void 0?n:Math.max(i,n)}}}return i},v=new Set;for(let a of l){let c=s.get(a);if(!c||c.index<1||c.index>=u||(v.add(c.index),!o&&(a.disabled||a.element.hasAttribute(`aria-disabled`)))||!m(c.index))continue;let l=a.element.getBoundingClientRect(),{crossSpan:d,crossStart:f}=c,p=d===void 0?n:f+d,y=e===`column`?l.top:l.left,b=e===`column`?l.bottom:l.right;if(f>0){let e=_(f-1,`end`);e!==void 0&&e<y&&(y=e)}if(p<n){let e=_(p,`start`);e!==void 0&&e>b&&(b=e)}l=e===`column`?new DOMRect(l.x,y,l.width,b-y):new DOMRect(y,l.y,b-y,l.height),l=hE({expandHitTargets:r,axis:i,rect:l}),o?h.push(g(c.index,l,a)):gE({axis:e,cells:t,index:c.index,rect:l}).forEach(e=>{h.push(g(c.index,e,a))})}let y=(n,a)=>{gE({axis:e,cells:t,index:n,rect:hE({expandHitTargets:r,axis:i,rect:a})}).forEach(e=>{h.push(g(n,e))})},b=Array.from({length:n},()=>Array(u));for(let r of t){let[t,i,a,o]=e===`column`?[r.column,r.columnSpan,r.row,r.rowSpan]:[r.row,r.rowSpan,r.column,r.columnSpan];for(let e=Math.max(0,a);e<Math.min(n,a+o);e++)for(let n=Math.max(0,t);n<Math.min(u,t+i);n++)b[e][n]??=r}let x=new Map,S=t=>{let n=x.get(t);if(!n){let r=t.element.getBoundingClientRect();n=e===`column`?{crossEnd:r.bottom,crossStart:r.top,end:r.right,start:r.left}:{crossEnd:r.right,crossStart:r.left,end:r.bottom,start:r.top},x.set(t,n)}return n},C=({crossEnd:t,crossStart:n,end:r,start:i})=>e===`column`?new DOMRect(i,n,r-i,t-n):new DOMRect(n,i,t-n,r-i);for(let e=1;e<u;e++){if(v.has(e)||!m(e))continue;let t;for(let r=0;r<n;r++){let n=b[r][e-1],i=b[r][e],a;if((n||i)&&n!==i){let e=n?S(n):void 0,t=i?S(i):void 0,r=e?.end??t.start,o=t?.start??e.end,s=Math.max(e?.crossStart??-1/0,t?.crossStart??-1/0),c=Math.min(e?.crossEnd??1/0,t?.crossEnd??1/0);a={crossEnd:Math.max(s,c),crossStart:s,end:Math.max(r,o),start:Math.min(r,o)}}a?t=t?{crossEnd:Math.max(t.crossEnd,a.crossEnd),crossStart:Math.min(t.crossStart,a.crossStart),end:Math.max(t.end,a.end),start:Math.min(t.start,a.start)}:a:t&&=(y(e,C(t)),void 0)}t&&y(e,C(t))}return h}function vE(e){let t=parseFloat(e??``);return Number.isFinite(t)?t:0}function yE({axis:e,element:t,gutterSizes:n,hasGutters:r,layout:i,trackIds:a}){let o=a.length,s=r?o*2-1:o,c=t.ownerDocument.defaultView?.getComputedStyle(t),l=e===`column`?c?.gridTemplateColumns:c?.gridTemplateRows;if(l){let e=l.trim().split(/\s+/);if(e.length===s&&e.every(e=>/^-?[\d.]+px$/.test(e))){let t=a.map((t,n)=>vE(e[r?n*2:n]));return{availableSize:t.reduce((e,t)=>e+t,0),trackSizes:t}}}let u=e===`column`?t.offsetWidth:t.offsetHeight,d=e===`column`?vE(c?.paddingLeft)+vE(c?.paddingRight)+vE(c?.borderLeftWidth)+vE(c?.borderRightWidth):vE(c?.paddingTop)+vE(c?.paddingBottom)+vE(c?.borderTopWidth)+vE(c?.borderBottomWidth),f=vE(e===`column`?c?.columnGap:c?.rowGap),p=n.reduce((e,t)=>e+t,0),m=Math.max(0,u-d-f*Math.max(0,s-1)-p);return{availableSize:m,trackSizes:a.map(e=>i&&i[e]!==void 0?i[e]/100*m:m/o)}}function bE(e){switch(typeof e){case`number`:return[e,`px`];case`string`:{let t=parseFloat(e);return e.endsWith(`%`)?[t,`%`]:e.endsWith(`px`)?[t,`px`]:e.endsWith(`rem`)?[t,`rem`]:e.endsWith(`em`)?[t,`em`]:e.endsWith(`vh`)?[t,`vh`]:e.endsWith(`vw`)?[t,`vw`]:[t,`%`]}}}var xE=class{#e={};addListener(e,t){let n=this.#e[e];return n===void 0?this.#e[e]=[t]:n.includes(t)||n.push(t),()=>{this.removeListener(e,t)}}emit(e,t){let n=this.#e[e];if(n!==void 0)if(n.length===1)n[0].call(null,t);else{let e=!1,r=null,i=Array.from(n);for(let n=0;n<i.length;n++){let a=i[n];try{a.call(null,t)}catch(t){r===null&&(e=!0,r=t)}}if(e)throw r}}removeAllListeners(){this.#e={}}removeListener(e,t){let n=this.#e[e];if(n!==void 0){let e=n.indexOf(t);e>=0&&n.splice(e,1)}}},SE={cursorFlags:0,state:`inactive`},CE=new xE;function wE(){return SE}function TE(e){return CE.addListener(`change`,e)}function EE(e,t=[],n,r=!1){let i=SE,a={...SE};a.cursorFlags=e,a.state===`active`&&(a.didPointerMove||=r,a.previews=t,n&&(a.previewLayoutMap=n)),SE=a,CE.emit(`change`,{prev:i,next:a})}function DE(e){let t=SE;SE=e,t.state===`active`&&e.state!==`active`&&t.didPointerMove&&t.hitRegions.forEach(({separator:e})=>{e&&e.element.ownerDocument.activeElement===e.element&&e.element.blur()}),CE.emit(`change`,{prev:t,next:e})}function OE(e){SE.state!==`active`||!SE.previews.some(t=>t.separator===e)||DE({...SE,previews:SE.previews.map(t=>t.separator===e?{...t}:t)})}function kE(e){if(SE.state===`inactive`)return!1;let t=SE.hitRegions.filter(t=>t.axis!==e),n=SE.state===`active`&&SE.previews.some(t=>t.axis===e);if(t.length===SE.hitRegions.length&&!n)return!1;if(t.length===0)DE({cursorFlags:0,state:`inactive`});else if(SE.state===`active`){let n=new Map(SE.initialLayoutMap),r=new Map(SE.previewLayoutMap);n.delete(e),r.delete(e),DE({...SE,cursorFlags:0,hitRegions:t,initialLayoutMap:n,previewLayoutMap:r,previews:SE.previews.filter(t=>t.axis!==e)})}else DE({...SE,hitRegions:t});return!0}var AE=e=>e,jE=()=>{},ME=1,NE=2,PE=4,FE=8,IE=3,LE=12,RE;function zE(){return RE===void 0&&(RE=!1,typeof window<`u`&&(window.navigator.userAgent.includes(`Chrome`)||window.navigator.userAgent.includes(`Firefox`))&&(RE=!0)),RE}function BE({cursorFlags:e,axes:t,state:n}){let r=0,i=0;switch(n){case`active`:case`hover`:t.forEach(e=>{if(!e.mutableState.disableCursor)switch(e.orientation){case`horizontal`:r++;break;case`vertical`:i++;break}})}if(!(r===0&&i===0)){switch(n){case`active`:if(e&&zE()){let t=(e&ME)!==0,n=(e&NE)!==0,r=(e&PE)!==0,i=(e&FE)!==0;if(t)return r?`se-resize`:i?`ne-resize`:`e-resize`;if(n)return r?`sw-resize`:i?`nw-resize`:`w-resize`;if(r)return`s-resize`;if(i)return`n-resize`}break}return zE()?r>0&&i>0?`move`:r>0?`ew-resize`:`ns-resize`:r>0&&i>0?`grab`:r>0?`col-resize`:`row-resize`}}var VE=new WeakMap;function HE(e){if(!e.defaultView||!e.adoptedStyleSheets)return;let{prevStyle:t,styleSheet:n}=VE.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&(Object.isExtensible(e.adoptedStyleSheets)?e.adoptedStyleSheets.push(n):e.adoptedStyleSheets=[...e.adoptedStyleSheets,n]));let r=wE();switch(r.state){case`active`:case`hover`:{let e=BE({cursorFlags:r.cursorFlags,axes:r.hitRegions.map(e=>e.axis),state:r.state}),i=`*, *:hover {cursor: ${e} !important; }`;if(t===i)return;t=i,e?n.cssRules.length===0?n.insertRule(i):n.replaceSync(i):n.cssRules.length===1&&n.deleteRule(0);break}case`inactive`:t=void 0,n.cssRules.length===1&&n.deleteRule(0);break}VE.set(e,{prevStyle:t,styleSheet:n})}function UE({axis:e}){let{layoutStrategy:t,orientation:n,items:r}=e;return t?t.calculateAvailableSize():r.reduce((e,t)=>(e+=n===`horizontal`?t.element.offsetWidth:t.element.offsetHeight,e),0)}function WE(e,t){let n=e.compareDocumentPosition(t);return n&Node.DOCUMENT_POSITION_DISCONNECTED?0:n&Node.DOCUMENT_POSITION_FOLLOWING?-1:n&Node.DOCUMENT_POSITION_PRECEDING?1:0}function GE(e,t){return Array.from(t).sort((t,n)=>{let r=e===`horizontal`?KE(t,n):qE(t,n);return r===0?WE(t.element,n.element):r})}function KE(e,t){let n=e.element.offsetLeft-t.element.offsetLeft;return n===0?e.element.offsetWidth-t.element.offsetWidth:n}function qE(e,t){let n=e.element.offsetTop-t.element.offsetTop;return n===0?e.element.offsetHeight-t.element.offsetHeight:n}function JE(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.ELEMENT_NODE}function YE(e,t){return{x:e.x>=t.left&&e.x<=t.right?0:Math.min(Math.abs(e.x-t.left),Math.abs(e.x-t.right)),y:e.y>=t.top&&e.y<=t.bottom?0:Math.min(Math.abs(e.y-t.top),Math.abs(e.y-t.bottom))}}function XE({orientation:e,rects:t,targetRect:n}){let r={x:n.x+n.width/2,y:n.y+n.height/2},i,a=Number.MAX_VALUE;for(let n of t){let{x:t,y:o}=YE(r,n),s=e===`horizontal`?t:o;s<a&&(a=s,i=n)}return $(i,`No rect found`),i}function ZE({expandHitTargets:e=!0,axis:t,includeDisabled:n=!1}){if(t.layoutStrategy)return t.layoutStrategy.calculateHitRegions({expandHitTargets:e,axis:t,includeDisabled:n});let{element:r,orientation:i,items:a,separators:o}=t,s=GE(i,Array.from(r.children).filter(JE).filter(e=>!e.hasAttribute(`data-resize-preview`)).map(e=>({element:e}))).map(({element:e})=>e),c=[],l=!1,u=!1,d=-1,f,p=-1,m=0,h,g=[];{let e=-1;for(let t of s)t.hasAttribute(`data-panel`)&&(e++,t.hasAttribute(`data-disabled`)||(m++,d===-1&&(d=e),p=e))}if(n||m>1){let r=-1;for(let m of s)if(m.hasAttribute(`data-panel`)){r++;let o=a.find(e=>e.element===m);if(o){if(h){let a=h.element.getBoundingClientRect(),s=m.getBoundingClientRect(),_;if(u){let e=i===`horizontal`?new DOMRect(a.right,a.top,0,a.height):new DOMRect(a.left,a.bottom,a.width,0),t=i===`horizontal`?new DOMRect(s.left,s.top,0,s.height):new DOMRect(s.left,s.top,s.width,0);switch(g.length){case 0:_=[e,t];break;case 1:{let n=g[0];_=[n,XE({orientation:i,rects:[a,s],targetRect:n.element.getBoundingClientRect()})===a?t:e];break}default:_=g;break}}else _=g.length?g:[i===`horizontal`?new DOMRect(a.right,s.top,s.left-a.right,s.height):new DOMRect(s.left,a.bottom,s.width,s.top-a.bottom)];for(let i of _){let a=hE({expandHitTargets:e,axis:t,rect:`width`in i?i:i.element.getBoundingClientRect()});(n||!l&&!(r<=d||r>p))&&(f??=UE({axis:t}),c.push({axis:t,axisSize:f,items:[h,o],separator:`width`in i?void 0:i,rect:a})),l=!1}}u=!1,h=o,g=[]}}else if(m.hasAttribute(`data-separator`)){m.ariaDisabled!==null&&(l=!0);let e=o.find(e=>e.element===m);e?g.push(e):(h=void 0,g=[])}else u=!0}return c}function QE(e,t){let n=getComputedStyle(e);return t*parseFloat(n.fontSize)}function $E(e,t){let n=getComputedStyle(e.ownerDocument.documentElement);return t*parseFloat(n.fontSize)}function eD(e){return e/100*window.innerHeight}function tD(e){return e/100*window.innerWidth}function nD({axisSize:e,itemElement:t,styleProp:n}){let r,[i,a]=bE(n);switch(a){case`%`:r=i/100*e;break;case`px`:r=i;break;case`rem`:r=$E(t,i);break;case`em`:r=QE(t,i);break;case`vh`:r=eD(i);break;case`vw`:r=tD(i);break}return r}function rD(e){return parseFloat(e.toFixed(3))}function iD(e){let{items:t}=e,n=UE({axis:e});return n===0?t.map(e=>({groupResizeBehavior:e.constraintProps.groupResizeBehavior,collapsedSize:0,collapsible:e.constraintProps.collapsible===!0,defaultSize:void 0,disabled:e.constraintProps.disabled,minSize:0,maxSize:100,itemId:e.id})):t.map(e=>{let{element:t,constraintProps:r}=e,i=0;r.collapsedSize!==void 0&&(i=rD(nD({axisSize:n,itemElement:t,styleProp:r.collapsedSize})/n*100));let a;r.collapsedThreshold!==void 0&&(a=rD(nD({axisSize:n,itemElement:t,styleProp:r.collapsedThreshold})/n*100));let o;r.defaultSize!==void 0&&(o=rD(nD({axisSize:n,itemElement:t,styleProp:r.defaultSize})/n*100));let s=0;r.minSize!==void 0&&(s=rD(nD({axisSize:n,itemElement:t,styleProp:r.minSize})/n*100));let c=100;return r.maxSize!==void 0&&(c=rD(nD({axisSize:n,itemElement:t,styleProp:r.maxSize})/n*100)),{groupResizeBehavior:r.groupResizeBehavior,collapsedSize:i,collapsedThreshold:a,collapsible:r.collapsible===!0,defaultSize:o,disabled:r.disabled,minSize:s,maxSize:c,itemId:e.id}})}var aD=new Map,oD=new xE;function sD(e){aD=new Map(aD),aD.delete(e)}function cD(e,t){for(let[t]of aD)if(t.id===e)return t}function lD(e,t){for(let[t,n]of aD)if(t.id===e)return n;if(t)throw Error(`Could not find data for Group with id ${e}`)}function uD(){return aD}function dD(e,t){return oD.addListener(`axisChange`,n=>{n.axis.id===e&&t(n)})}function fD(e,t,n){let r=aD.get(e);aD=new Map(aD),aD.set(e,t),oD.emit(`axisChange`,{axis:e,isUserInteraction:n?.isUserInteraction===!0,prev:r,next:t})}function pD(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}function mD(e,t,n=0){return Math.abs(rD(e)-rD(t))<=n}function hD(e,t){return mD(e,t)?0:e>t?1:-1}function gD({overrideDisabledItems:e,itemConstraints:t,prevSize:n,size:r}){let{collapsedSize:i=0,collapsedThreshold:a,collapsible:o,disabled:s,maxSize:c=100,minSize:l=0}=t;if(s&&!e)return n;if(hD(r,l)<0)if(o){let e=a??(l-i)/2,t=hD(n,i)<=0,o=t?i+e:l-e,s=hD(r,o);r=hD(r,i)<=0||s<0||a!==void 0&&t&&s===0?i:l}else r=l;return r=Math.min(c,r),r=rD(r),r}function _D({delta:e,initialLayout:t,itemConstraints:n,pivotIndices:r,prevLayout:i,trigger:a}){if(mD(e,0))return t;let o=a===`imperative-api`,s=n.map(({itemId:e})=>t[e]),c=n.map(({itemId:e})=>i[e]),l=[...s],[u,d]=r;$(u!=null,`Invalid first pivot index`),$(d!=null,`Invalid second pivot index`);let f=0;switch(a){case`keyboard`:{let t=e<0?d:u,r=n[t];$(r,`Panel constraints not found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if($(n!=null,`Previous layout not found for panel index ${t}`),mD(n,i)){let t=o-n;hD(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}{let t=e<0?u:d,r=n[t];$(r,`No panel constraints found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if($(n!=null,`Previous layout not found for panel index ${t}`),mD(n,o)){let t=n-i;hD(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}break;default:{let t=e<0?d:u,r=n[t];$(r,`Panel constraints not found for index ${t}`);let i=s[t],{collapsedSize:a,collapsedThreshold:o,collapsible:c,minSize:l}=r;if(c&&hD(i,l)<0){let t=l-a,n=o??t/2;if(hD(i+Math.abs(e),l)<0){let r=hD(Math.abs(e),n);e=r>0||r===0&&o===void 0&&e<0?e<0?-t:t:0}}break}}{let t=e<0?1:-1,r=e<0?d:u,i=0;for(;;){let e=s[r];$(e!=null,`Previous layout not found for panel index ${r}`);let a=gD({overrideDisabledItems:o,itemConstraints:n[r],prevSize:e,size:100})-e;if(i+=a,r+=t,r<0||r>=n.length)break}let a=Math.min(Math.abs(e),Math.abs(i));e=e<0?0-a:a}{let t=e<0?u:d;for(;t>=0&&t<n.length;){let r=Math.abs(e)-Math.abs(f),i=s[t];$(i!=null,`Previous layout not found for panel index ${t}`);let a=i-r,c=gD({overrideDisabledItems:o,itemConstraints:n[t],prevSize:i,size:a});if(!mD(i,c)&&(f+=i-c,l[t]=c,f.toFixed(3).localeCompare(Math.abs(e).toFixed(3),void 0,{numeric:!0})>=0))break;e<0?t--:t++}}if(pD(c,l))return i;{let t=e<0?d:u,r=s[t];$(r!=null,`Previous layout not found for panel index ${t}`);let i=r+f,a=gD({overrideDisabledItems:o,itemConstraints:n[t],prevSize:r,size:i});if(l[t]=a,!mD(a,i)){let t=i-a,r=e<0?d:u;for(;r>=0&&r<n.length;){let i=l[r];$(i!=null,`Previous layout not found for panel index ${r}`);let a=i+t,s=gD({overrideDisabledItems:o,itemConstraints:n[r],prevSize:i,size:a});if(mD(i,s)||(t-=s-i,l[r]=s),mD(t,0))break;e>0?r--:r++}}}return mD(Object.values(l).reduce((e,t)=>t+e,0),100,.1)?l.reduce((e,t,r)=>(e[n[r].itemId]=t,e),{}):i}function vD(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(t[n]===void 0||hD(e[n],t[n])!==0)return!1;return!0}function yD({commit:e,document:t,event:n,hitRegions:r,initialLayoutMap:i,mountedAxes:a,pointerDownAtPoint:o,prevCursorFlags:s}){let c=0,l=wE(),u=l.state===`active`?l.previews:[],d=new Map(l.state===`active`?l.previewLayoutMap:void 0);r.forEach(t=>{let{axis:r,axisSize:s}=t,{orientation:l,items:f}=r;if(e&&r.resizePreviewMode!==`separator`)return;let{disableCursor:p}=r.mutableState,m=0;m=o?l===`horizontal`?(n.clientX-o.x)/s*100:(n.clientY-o.y)/s*100:l===`horizontal`?n.clientX<0?-100:100:n.clientY<0?-100:100;let h=i.get(r),g=a.get(r);if(!h||!g)return;let{defaultLayoutDeferred:_,derivedItemConstraints:v,axisSize:y,layout:b,separatorToItems:x}=g;if(v&&b&&x){let n=r.resizePreviewMode===`separator`?d.get(r)??b:b,i=_D({delta:m,initialLayout:h,itemConstraints:v,pivotIndices:t.items.map(e=>f.indexOf(e)),prevLayout:n,trigger:`mouse-or-touch`});if(r.resizePreviewMode===`separator`&&!e&&!vD(i,n)){d.set(r,i);let e=0,t=f.map(t=>(e+=i[t.id]-h[t.id],s/100*e));u=u.map(e=>{if(e.axis!==r)return e;let n=t[e.itemIndex];return n===e.offset?e:{...e,offset:n}})}if(vD(i,n)&&m!==0&&!p)switch(l){case`horizontal`:c|=m<0?ME:NE;break;case`vertical`:c|=m<0?PE:FE;break}(r.resizePreviewMode!==`separator`||e)&&!vD(i,b)&&fD(t.axis,{defaultLayoutDeferred:_,derivedItemConstraints:v,axisSize:y,layout:i,requestedAxisSize:y,requestedLayout:i,separatorToItems:x})}});let f=0;n.movementX===0?f|=s&IE:f|=c&IE,n.movementY===0?f|=s&LE:f|=c&LE;let p=l.state===`active`&&(n.clientX!==l.pointerDownAtPoint.x||n.clientY!==l.pointerDownAtPoint.y);EE(f,u,d,p),HE(t)}function bD(e,t){let n=wE(),r=uD(),i=!1;switch(n.state){case`active`:yD({commit:!0,document:e,event:t,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedAxes:r,pointerDownAtPoint:n.pointerDownAtPoint,prevCursorFlags:n.cursorFlags}),DE({cursorFlags:0,state:`inactive`}),n.hitRegions.length>0&&(HE(e),i=!0,n.hitRegions.forEach(e=>{if(!r.has(e.axis))return;let t=lD(e.axis.id,!0);fD(e.axis,t,{isUserInteraction:!0})}))}return i}function xD(e){e.defaultPrevented||bD(e.currentTarget,e)}function SD(e,t,n){let r,i={x:1/0,y:1/0};for(let a of t){let t=YE(n,a.rect);switch(e){case`horizontal`:(t.x<i.x||t.x===i.x&&t.y<=i.y)&&(r=a,i=t);break;case`vertical`:(t.y<i.y||t.y===i.y&&t.x<=i.x)&&(r=a,i=t);break}}return r?{distance:i,hitRegion:r}:void 0}function CD(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function wD(e,t){if(e===t)throw Error(`Cannot compare node with itself`);let n={a:AD(e),b:AD(t)},r;for(;n.a.at(-1)===n.b.at(-1);)r=n.a.pop(),n.b.pop();$(r,`Stacking order can only be calculated for elements with a common ancestor`);let i={a:kD(OD(n.a)),b:kD(OD(n.b))};if(i.a===i.b){let e=r.childNodes,t={a:n.a.at(-1),b:n.b.at(-1)},i=e.length;for(;i--;){let n=e[i];if(n===t.a)return 1;if(n===t.b)return-1}}return Math.sign(i.a-i.b)}var TD=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function ED(e){let t=getComputedStyle(jD(e)??e).display;return t===`flex`||t===`inline-flex`}function DD(e){let t=getComputedStyle(e);return!!(t.position===`fixed`||t.zIndex!==`auto`&&(t.position!==`static`||ED(e))||+t.opacity<1||`transform`in t&&t.transform!==`none`||`webkitTransform`in t&&t.webkitTransform!==`none`||`mixBlendMode`in t&&t.mixBlendMode!==`normal`||`filter`in t&&t.filter!==`none`||`webkitFilter`in t&&t.webkitFilter!==`none`||`isolation`in t&&t.isolation===`isolate`||TD.test(t.willChange)||t.webkitOverflowScrolling===`touch`)}function OD(e){let t=e.length;for(;t--;){let n=e[t];if($(n,`Missing node`),DD(n))return n}return null}function kD(e){return e&&Number(getComputedStyle(e).zIndex)||0}function AD(e){let t=[];for(;e;)t.push(e),e=jD(e);return t}function jD(e){let{parentNode:t}=e;return CD(t)?t.host:t}function MD(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function ND(e){try{return e.matches(`:modal`)}catch{return!1}}function PD({axisElement:e,hitRegion:t,pointerEventTarget:n}){if(JE(n)){let t=n.closest(`dialog`);if(t&&!t.contains(e)&&ND(t))return!1}if(!JE(n)||n.contains(e)||e.contains(n))return!0;if(wD(n,e)>0){let r=n;for(;r;){if(r.contains(e))return!0;if(MD(r.getBoundingClientRect(),t))return!1;r=r.parentElement}}return!0}function FD(e,t){let n=[];return t.forEach((t,r)=>{if(r.disabled)return;let i=ZE({axis:r}),a=SD(r.orientation,i,{x:e.clientX,y:e.clientY});a&&a.distance.x<=0&&a.distance.y<=0&&PD({axisElement:r.element,hitRegion:a.hitRegion.rect,pointerEventTarget:e.target})&&n.push(a.hitRegion)}),n}function ID({layout:e,itemConstraints:t}){let n=t.map(({itemId:t})=>e[t]),r=[...n],i=r.reduce((e,t)=>e+t,0);if(Object.keys(e).length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${Object.values(e).map(e=>`${e}%`).join(`, `)}`);if(!mD(i,100)&&r.length>0)for(let e=0;e<t.length;e++){let t=r[e];$(t!=null,`No layout data found for index ${e}`),r[e]=100/i*t}let a=0;for(let e=0;e<t.length;e++){let i=n[e];$(i!=null,`No layout data found for index ${e}`);let o=r[e];$(o!=null,`No layout data found for index ${e}`);let s=gD({overrideDisabledItems:!0,itemConstraints:t[e],prevSize:i,size:o});o!=s&&(a+=o-s,r[e]=s)}if(!mD(a,0))for(let e=0;e<t.length;e++){let n=r[e];$(n!=null,`No layout data found for index ${e}`);let i=n+a,o=gD({overrideDisabledItems:!0,itemConstraints:t[e],prevSize:n,size:i});if(n!==o&&(a-=o-n,r[e]=o,mD(a,0)))break}return r.reduce((e,n,r)=>(e[t[r].itemId]=n,e),{})}function LD({axisId:e,itemId:t}){let n=()=>{let t=uD();for(let[n,{defaultLayoutDeferred:r,derivedItemConstraints:i,layout:a,axisSize:o,separatorToItems:s}]of t)if(n.id===e)return{defaultLayoutDeferred:r,derivedItemConstraints:i,axis:n,axisSize:o,layout:a,separatorToItems:s};throw Error(`Group ${e} not found`)},r=()=>{let e=n().derivedItemConstraints.find(e=>e.itemId===t);if(e!==void 0)return e;throw Error(`Panel constraints not found for Panel ${t}`)},i=()=>{let e=n().axis.items.find(e=>e.id===t);if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},a=()=>{let e=n().layout[t];if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},o=({nextSize:e,items:n,prevLayout:r,derivedItemConstraints:i})=>{let o=a(),s=n.findIndex(e=>e.id===t),c=s===0,l=s===n.length-1;if(l&&e<o&&(c||n.slice(0,s).every((e,t)=>{let n=i[t];return n?.collapsible&&mD(n.collapsedSize,r[n.itemId])}))){let e=n.slice(0,s).reduce((e,t)=>e+r[t.id],0);return{...r,[t]:rD(100-e)}}return _D({delta:l?o-e:e-o,initialLayout:r,itemConstraints:i,pivotIndices:l?[s-1,s]:[s,s+1],prevLayout:r,trigger:`imperative-api`})},s=e=>{if(e===a())return;let{defaultLayoutDeferred:t,derivedItemConstraints:r,axis:i,axisSize:s,layout:c,separatorToItems:l}=n(),u=ID({layout:o({nextSize:e,items:i.items,prevLayout:c,derivedItemConstraints:r}),itemConstraints:r});vD(c,u)||fD(i,{defaultLayoutDeferred:t,derivedItemConstraints:r,axisSize:s,layout:u,requestedAxisSize:s,requestedLayout:u,separatorToItems:l})};return{collapse:()=>{let{collapsible:e,collapsedSize:t}=r(),{mutableValues:n}=i(),o=a();e&&o!==t&&(n.expandToSize=o,s(t))},expand:()=>{let{collapsible:e,collapsedSize:t,minSize:n}=r(),{mutableValues:o}=i(),c=a();if(e&&c===t){let e=o.expandToSize??n;e===0&&(e=1),s(e)}},getSize:()=>{let{axis:e}=n(),r=a(),{element:o}=i();return{asPercentage:r,inPixels:e.layoutStrategy?e.layoutStrategy.getItemSizeInPixels(t):e.orientation===`horizontal`?o.offsetWidth:o.offsetHeight}},isCollapsed:()=>{let{collapsible:e,collapsedSize:t}=r(),n=a();return e&&mD(t,n)},resize:e=>{let{axis:t}=n(),{element:r}=i(),a=UE({axis:t}),o=rD(nD({axisSize:a,itemElement:r,styleProp:e})/a*100);s(o)}}}function RD(e){e.defaultPrevented||FD(e,uD()).forEach(t=>{if(t.separator&&!t.separator.disableDoubleClick){let n=t.items.find(e=>e.constraintProps.defaultSize!==void 0);if(n){let r=n.constraintProps.defaultSize,i=LD({axisId:t.axis.id,itemId:n.id});i&&r!==void 0&&(i.resize(r),e.preventDefault())}}})}function zD(e){let t=uD();for(let[n]of t)if(n.separators.some(t=>t.element===e))return n;throw Error(`Could not find parent Group for separator element`)}function BD({axisId:e}){let t=()=>{let t=uD();for(let[n,r]of t)if(n.id===e)return{axis:n,...r};throw Error(`Could not find Group with id "${e}"`)};return{getLayout(){let{defaultLayoutDeferred:e,layout:n}=t();return e?{}:n},setLayout(e){let{defaultLayoutDeferred:n,derivedItemConstraints:r,axis:i,axisSize:a,layout:o,separatorToItems:s}=t(),c=ID({layout:e,itemConstraints:r});return n?o:(vD(o,c)||fD(i,{defaultLayoutDeferred:n,derivedItemConstraints:r,axisSize:a,layout:c,requestedAxisSize:a,requestedLayout:c,separatorToItems:s}),c)}}}function VD(e,t){let n=zD(e),r=lD(n.id,!0),i=n.separators.find(t=>t.element===e);$(i,`Matching separator not found`);let a=r.separatorToItems.get(i);$(a,`Matching panels not found`);let o=a.map(e=>n.items.indexOf(e)),s=BD({axisId:n.id}).getLayout(),c=ID({layout:_D({delta:t,initialLayout:s,itemConstraints:r.derivedItemConstraints,pivotIndices:o,prevLayout:s,trigger:`keyboard`}),itemConstraints:r.derivedItemConstraints});vD(s,c)||fD(n,{defaultLayoutDeferred:r.defaultLayoutDeferred,derivedItemConstraints:r.derivedItemConstraints,axisSize:r.axisSize,layout:c,requestedAxisSize:r.axisSize,requestedLayout:c,separatorToItems:r.separatorToItems},{isUserInteraction:!0})}function HD(e){if(e.defaultPrevented)return;let t=e.currentTarget,n=zD(t);if(!(n.disabled||n.separators.find(e=>e.element===t)?.disabled))switch(e.key){case`ArrowDown`:e.preventDefault(),n.orientation===`vertical`&&VD(t,5);break;case`ArrowLeft`:e.preventDefault(),n.orientation===`horizontal`&&VD(t,-5);break;case`ArrowRight`:e.preventDefault(),n.orientation===`horizontal`&&VD(t,5);break;case`ArrowUp`:e.preventDefault(),n.orientation===`vertical`&&VD(t,-5);break;case`End`:e.preventDefault(),VD(t,100);break;case`Enter`:{e.preventDefault();let{derivedItemConstraints:r,layout:i,separatorToItems:a}=lD(n.id,!0),o=n.separators.find(e=>e.element===t);$(o,`Matching separator not found`);let s=a.get(o);$(s,`Matching panels not found`);let c=s[0],l=r.find(e=>e.itemId===c.id);if($(l,`Panel metadata not found`),l.collapsible){let e=i[c.id];VD(t,(l.collapsedSize===e?n.mutableState.expandedItemSizes[c.id]??l.minSize:l.collapsedSize)-e)}break}case`F6`:{e.preventDefault();let t=n.separators.map(e=>e.element),r=Array.from(t).findIndex(t=>t===e.currentTarget);$(r!==null,`Index not found`),t[e.shiftKey?r>0?r-1:t.length-1:r+1<t.length?r+1:0].focus({preventScroll:!0});break}case`Home`:e.preventDefault(),VD(t,-100);break}}function UD(e,t){let{element:n,orientation:r,items:i}=e,a=n.getBoundingClientRect(),o=r===`horizontal`;return ZE({expandHitTargets:!1,axis:e,includeDisabled:!0}).map(({items:r,rect:s,separator:c},l)=>{let u=i.indexOf(r[0]),d=o?s.left+s.width/2:s.top+s.height/2;return{active:t.some(t=>{if(t.axis!==e||t.items[0]!==r[0])return!1;if(c||t.separator)return t.separator===c;let n=o?t.rect.left+t.rect.width/2:t.rect.top+t.rect.height/2;return mD(d,n)}),axis:e,key:c?`separator-${c.id}`:`panel-${r[0].id}-${l}`,offset:0,itemIndex:u,rect:new DOMRect((o&&!c?d:s.left)-a.left-n.clientLeft+n.scrollLeft,(!o&&!c?d:s.top)-a.top-n.clientTop+n.scrollTop,o&&!c?0:s.width,!o&&!c?0:s.height),separator:c}})}function WD(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=uD(),n=FD(e,t);if(n.length===0)return;let r=new Map,i=!1;n.forEach(e=>{e.separator&&(i||(i=!0,e.separator.element.focus({focusVisible:!1,preventScroll:!0})));let n=t.get(e.axis);n&&r.set(e.axis,n.layout)});let a=Array.from(r.keys()).flatMap(e=>e.resizePreviewMode===`separator`?UD(e,n):[]);DE({cursorFlags:0,didPointerMove:!1,hitRegions:n,initialLayoutMap:r,pointerDownAtPoint:{x:e.clientX,y:e.clientY},previewLayoutMap:new Map(r),previews:a,state:`active`}),e.preventDefault()}function GD(e){let t=uD(),n=wE();switch(n.state){case`active`:yD({commit:!1,document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedAxes:t,prevCursorFlags:n.cursorFlags})}}function KD(e){if(e.defaultPrevented)return;let t=wE(),n=uD();switch(t.state){case`active`:if(e.buttons===0){t.previewLayoutMap.forEach((e,t)=>{let r=n.get(t);t.resizePreviewMode===`separator`&&r&&!vD(e,r.layout)&&fD(t,{...r,layout:e,requestedAxisSize:r.axisSize,requestedLayout:e})}),DE({cursorFlags:0,state:`inactive`}),t.hitRegions.forEach(e=>{if(!n.has(e.axis))return;let t=lD(e.axis.id,!0);fD(e.axis,t,{isUserInteraction:!0})}),HE(e.currentTarget);return}for(let n of t.hitRegions)if(n.separator){let{element:t}=n.separator;t.isConnected&&!t.hasPointerCapture?.(e.pointerId)&&t.setPointerCapture?.(e.pointerId)}yD({commit:!1,document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedAxes:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break;default:{let r=FD(e,n);r.length===0?t.state!==`inactive`&&DE({cursorFlags:0,state:`inactive`}):DE({cursorFlags:0,hitRegions:r,state:`hover`}),HE(e.currentTarget);break}}}function qD(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(wE().state){case`hover`:DE({cursorFlags:0,state:`inactive`})}}function JD(e){e.defaultPrevented||e.pointerType===`mouse`&&e.button>0||bD(e.currentTarget,e)&&e.preventDefault()}function YD(e){let t=0,n=0,r={};for(let i of e)if(i.defaultSize!==void 0){t++;let e=rD(i.defaultSize);n+=e,r[i.itemId]=e}else r[i.itemId]=void 0;let i=e.length-t;if(i!==0){let t=rD((100-n)/i);for(let n of e)n.defaultSize===void 0&&(r[n.itemId]=t)}return r}function XD(e,t){let n=e.map(e=>e.id),r=Object.keys(t);if(n.length!==r.length)return!1;for(let e of n)if(!r.includes(e))return!1;return!0}function ZD({axis:e,itemConstraints:t}){let n=e.items.map(({id:e})=>e).join(`,`),r=e.mutableState.defaultLayout;return e.mutableState.layouts[n]??(r&&XD(e.items,r)?r:YD(t))}function QD({itemIds:e,layout:t}){return ID({layout:t,itemConstraints:e.map(e=>({collapsedSize:0,collapsible:!1,defaultSize:void 0,disabled:void 0,itemId:e,maxSize:100,minSize:0}))})}function $D(e,t,n){if(!n[0])return;let r=e.items.find(e=>e.element===t);if(!r||!r.onResize)return;let i=UE({axis:e}),a=e.orientation===`horizontal`?r.element.offsetWidth:r.element.offsetHeight,o=r.mutableValues.prevSize,s={asPercentage:rD(a/i*100),inPixels:a};r.mutableValues.prevSize=s,r.onResize(s,r.id,o)}function eO(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function tO(e,t){return e.length===t.length&&e.every((e,n)=>eO(e,t[n]))}function nO({axis:e,nextAxisSize:t,prevAxisSize:n,prevLayout:r}){if(n<=0||t<=0||n===t)return r;let i=0,a=0,o=!1,s=new Map,c=[];for(let l of e.items){let e=r[l.id]??0;switch(l.constraintProps.groupResizeBehavior){case`preserve-pixel-size`:{o=!0;let r=rD(e/100*n/t*100);s.set(l.id,r),i+=r;break}default:c.push(l.id),a+=e;break}}if(!o||c.length===0)return r;let l=100-i,u={...r};if(s.forEach((e,t)=>{u[t]=e}),a>0)for(let e of c)u[e]=rD((r[e]??0)/a*l);else{let e=rD(l/c.length);for(let t of c)u[t]=e}return u}var rO=new Map;function iO(e){let t=!0;$(e.element.ownerDocument.defaultView,`Cannot register an unmounted Group`);let n=e.element.ownerDocument.defaultView.ResizeObserver,r=new Set,i=new Set,a=new n(n=>{for(let r of n){let{borderBoxSize:n,target:i}=r;if(i===e.element){if(t){let t=UE({axis:e});if(t===0)return;let n=lD(e.id);if(!n)return;let r=iD(e),i=n.requestedAxisSize,a=n.requestedLayout;n.defaultLayoutDeferred&&(i=t,a=QD({itemIds:e.items.map(({id:e})=>e),layout:ZD({axis:e,itemConstraints:r})}));let o=ID({layout:nO({axis:e,nextAxisSize:t,prevAxisSize:i,prevLayout:a}),itemConstraints:r});if(!n.defaultLayoutDeferred&&vD(n.layout,o)&&tO(n.derivedItemConstraints,r)&&n.axisSize===t)continue;fD(e,{defaultLayoutDeferred:!1,derivedItemConstraints:r,axisSize:t,layout:o,requestedAxisSize:i,requestedLayout:a,separatorToItems:n.separatorToItems})}}else $D(e,i,n)}});a.observe(e.element),e.items.forEach(e=>{$(!r.has(e.id),`Panel ids must be unique; id "${e.id}" was used more than once`),r.add(e.id),e.onResize&&a.observe(e.element)});let o=UE({axis:e}),s=iD(e),c=ZD({axis:e,itemConstraints:s}),l=ID({layout:c,itemConstraints:s}),u=e.element.ownerDocument;rO.set(u,(rO.get(u)??0)+1);let d=new Map;return ZE({axis:e,includeDisabled:!0}).forEach(e=>{e.separator&&d.set(e.separator,e.items)}),fD(e,{defaultLayoutDeferred:o===0,derivedItemConstraints:s,axisSize:o,layout:l,requestedAxisSize:o,requestedLayout:QD({itemIds:e.items.map(({id:e})=>e),layout:c}),separatorToItems:d}),e.separators.forEach(e=>{$(!i.has(e.id),`Separator ids must be unique; id "${e.id}" was used more than once`),i.add(e.id),e.element.addEventListener(`keydown`,HD)}),rO.get(u)===1&&(u.addEventListener(`contextmenu`,xD,!0),u.addEventListener(`dblclick`,RD,!0),u.addEventListener(`pointerdown`,WD,!0),u.addEventListener(`pointerleave`,GD),u.addEventListener(`pointermove`,KD),u.addEventListener(`pointerout`,qD),u.addEventListener(`pointerup`,JD,!0)),function(){t=!1,rO.set(u,Math.max(0,(rO.get(u)??0)-1)),sD(e),kE(e)&&HE(u),e.separators.forEach(e=>{e.element.removeEventListener(`keydown`,HD)}),rO.get(u)||(u.removeEventListener(`contextmenu`,xD,!0),u.removeEventListener(`dblclick`,RD,!0),u.removeEventListener(`pointerdown`,WD,!0),u.removeEventListener(`pointerleave`,GD),u.removeEventListener(`pointermove`,KD),u.removeEventListener(`pointerout`,qD),u.removeEventListener(`pointerup`,JD,!0)),a.disconnect()}}function aO({derivedItemConstraints:e,axis:t,layout:n,prevLayout:r,requestedLayout:i}){let a=t.items.map(({id:e})=>e).join(`,`);t.mutableState.layouts[a]=i,r&&e.forEach(e=>{if(e.collapsible){let i=mD(e.collapsedSize,n[e.itemId]),a=mD(e.collapsedSize,r[e.itemId]);i&&!a&&(t.mutableState.expandedItemSizes[e.itemId]=r[e.itemId])}})}function oO(){let[e,t]=(0,U.useState)({});return[e,(0,U.useCallback)(()=>t({}),[])]}function sO(e){let t=(0,U.useRef)({...e});return tE(()=>{for(let n in e)t.current[n]=e[n]},[e]),t.current}var cO=(0,U.createContext)(null);function lO({layout:e,itemConstraints:t,itemId:n,itemIndex:r}){let i,a,o=e[n],s=t.find(e=>e.itemId===n);if(s){let c=s.maxSize,l=s.collapsible?s.collapsedSize:s.minSize,u=[r,r+1];a=ID({layout:_D({delta:l-o,initialLayout:e,itemConstraints:t,pivotIndices:u,prevLayout:e}),itemConstraints:t})[n],i=ID({layout:_D({delta:c-o,initialLayout:e,itemConstraints:t,pivotIndices:u,prevLayout:e}),itemConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:a,valueNow:o}}function uO({attributes:e,axisId:t,axisOrientation:n,children:r,className:i,disableCursor:a,disabled:o,disableDoubleClick:s,elementRef:c,id:l,isSharedHitRegion:u,preview:d,registerSeparator:f,requiredStyle:p,style:m,styleDefaults:h,tabIndex:g=0,updateSeparatorProps:_}){let v=sO({disabled:o,disableDoubleClick:s,children:r,className:i,preview:d,style:m}),[y,b]=(0,U.useState)({}),[x,S]=(0,U.useState)(`inactive`),[C,w]=(0,U.useState)(!1),T=(0,U.useRef)(null),E=(0,U.useRef)(null),D=rE(T,c),O=n===`horizontal`?`vertical`:`horizontal`;tE(()=>{let e=T.current;if(e!==null){let n={disabled:v.disabled,disableDoubleClick:v.disableDoubleClick,element:e,id:l,get children(){return v.children},get className(){return v.className},get preview(){return v.preview},get style(){return v.style}};E.current=n;let r=f(n),i=TE(e=>{S(e.next.state!==`inactive`&&e.next.hitRegions.some(e=>e.separator===n||(u?.(e)??!1))?e.next.state:`inactive`)}),a=dD(t,e=>{let{derivedItemConstraints:t,layout:r,separatorToItems:i}=e.next,a=i.get(n);if(a){let n=a[0],i=t.findIndex(e=>e.itemId===n.id),{layoutStrategy:o}=e.axis;b({...lO({layout:r,itemConstraints:t,itemId:n.id,itemIndex:i}),...o?.getItemAriaControls&&{valueControls:o.getItemAriaControls(n.id)}})}});return()=>{E.current=null,i(),a(),r()}}},[t,l,u,f,v]),tE(()=>{let e=E.current;e&&OE(e)},[d]),(0,U.useEffect)(()=>{_(l,{disabled:o,disableDoubleClick:s})},[o,s,l,_]);let k;o&&!a&&(k=`not-allowed`);let A;if(o)A=`disabled`;else switch(x){case`active`:A=`active`;break;default:A=C?`focus`:x}return(0,W.jsx)(`div`,{...e,"aria-controls":y.valueControls,"aria-disabled":o||void 0,"aria-orientation":O,"aria-valuemax":y.valueMax,"aria-valuemin":y.valueMin,"aria-valuenow":y.valueNow,children:r,className:i,"data-separator":A,"data-testid":l,id:l,onBlur:()=>w(!1),onFocus:()=>w(!0),ref:D,role:`separator`,style:{...h,cursor:k,...m,...p,touchAction:`none`},tabIndex:o?void 0:g})}function dO({axis:e,children:t,className:n,crossSpan:r,crossStart:i,disabled:a,elementRef:o,index:s,style:c}){let l=eE(void 0),{getDisableCursor:u,getResizeAxisId:d,gutters:f,registerSeparator:p,separatorPlacements:m,trackCounts:h,updateSeparatorProps:g}=dE(),_=d(e),v=e===`column`?`row`:`column`,y=h[v],b=!!a||!lE(s,h[e]),x=!0;for(let t of m.values())if(t.axis===e&&t.index===s&&!t.disabled&&t.crossStart<i){x=!1;break}let S=(0,U.useCallback)(e=>e.axis.id===_&&e.axis.items.indexOf(e.items[1])===s,[_,s]),C=(0,U.useCallback)(t=>p({axis:e,crossSpan:r,crossStart:i,disabled:!!a,index:s},t),[e,r,i,a,s,p]),w=sE(s),T=cE({crossCount:y,crossSpan:r,crossStart:i,hasGutters:f[v]});return(0,W.jsx)(uO,{axisId:_,axisOrientation:e===`column`?`horizontal`:`vertical`,className:n,disableCursor:u(),disabled:b,disableDoubleClick:void 0,elementRef:o,id:l,isSharedHitRegion:S,registerSeparator:C,requiredStyle:{gridColumn:e===`column`?w:T,gridRow:e===`row`?w:T},style:c,tabIndex:x?0:-1,updateSeparatorProps:g,children:t})}function fO(e){let{children:t,className:n,disabled:r,elementRef:i,style:a}=e;return e.type===`column`?(0,W.jsx)(dO,{axis:`column`,className:n,crossSpan:e.rowSpan,crossStart:e.row??0,disabled:r,elementRef:i,index:e.column,style:a,children:t}):(0,W.jsx)(dO,{axis:`row`,className:n,crossSpan:e.columnSpan,crossStart:e.column??0,disabled:r,elementRef:i,index:e.row,style:a,children:t})}fO.displayName=`Gridline`;var pO=[`column`,`row`],mO={columns:{},rows:{}};function hO({children:e,className:t,columns:n,defaultLayout:r,disableCursor:i,disabled:a,elementRef:o,gridRef:s,id:c,onLayoutChange:l,onLayoutChanged:u,resizeTargetMinimumSize:d={coarse:20,fine:10},rows:f,style:p,...m}){let h=eE(c),g=(0,U.useCallback)(e=>e===`column`?`${h}:columns`:`${h}:rows`,[h]),_=gO(n,`columns`),v=gO(f,`rows`),y=e=>e===`column`?_:v,b=(0,U.useRef)({onLayoutChange:mO,onLayoutChanged:mO}),x=nE(e=>{bO(b.current.onLayoutChange,e)||(b.current.onLayoutChange=e,l?.(e))}),S=nE((e,t,n)=>{bO(b.current.onLayoutChanged,e)||(b.current.onLayoutChanged=e,u?.(e,{isUserInteraction:t,requestedLayout:n}))}),C=(0,U.useRef)(null),w=rE(C,o),[T,E]=oO(),D=(0,U.useRef)({cells:[],column:{expandedItemSizes:{},layouts:{}},loggedErrors:new Set,row:{expandedItemSizes:{},layouts:{}},separators:new Map}),O={column:!1,row:!1};for(let e of D.current.separators.values())O[e.axis]=!0;_O(e,O);let k=sO({defaultLayout:r,disableCursor:i,resizeTargetMinimumSize:d}),A=nE(()=>!!k.disableCursor),j=(0,U.useCallback)(e=>{let t=D.current;return t.cells=[...t.cells,e],E(),()=>{t.cells=t.cells.filter(t=>t!==e),E()}},[E]),M=(0,U.useCallback)((e,t)=>{let n=D.current;return n.separators=new Map(n.separators),n.separators.set(t,e),E(),()=>{n.separators=new Map(n.separators),n.separators.delete(t),E()}},[E]),N=(0,U.useCallback)((e,{disabled:t,disableDoubleClick:n})=>{for(let r of D.current.separators.keys())r.id===e&&(r.disabled=t,r.disableDoubleClick=n)},[]),P=D.current.separators,ee=(0,U.useMemo)(()=>({getDisableCursor:A,getResizeAxisId:g,gutters:{column:O.column,row:O.row},id:h,registerCell:j,registerSeparator:M,separatorPlacements:P,trackCounts:{column:_.length,row:v.length},updateSeparatorProps:N}),[_.length,A,g,O.column,O.row,h,j,M,v.length,P,N]),F=(0,U.useRef)([]);tE(()=>{let e=C.current;if(e===null)return;let t=D.current,n=yO({cells:t.cells,separatorPlacements:t.separators,trackCounts:{column:_.length,row:v.length}});n.forEach(e=>{t.loggedErrors.has(e)||console.error(e)}),t.loggedErrors=new Set(n);let r=e=>Array.from(t.separators.entries()).filter(([,t])=>t.axis===e).sort(([,e],[,t])=>e.index-t.index).map(([e])=>e),i=pO.map(n=>{let i=n===`column`?_:v,o=n===`column`?v:_,s=i.map(e=>e.id),c=g(n),l=r(n),u=l.length>0,d=i.map(({id:t,...n},r)=>({element:e,id:s[r],idIsStable:!0,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:void 0,constraintProps:n})),f=()=>{let r=[];if(u){for(let[e,a]of t.separators)if(a.axis===n&&lE(a.index,i.length)){let t=e.element.getBoundingClientRect();r[a.index]=Math.max(r[a.index]??0,n===`column`?t.width:t.height)}}return yE({axis:n,element:e,gutterSizes:r.filter(e=>e!==void 0),hasGutters:u,layout:lD(c)?.layout,trackIds:s})},p,m=k.defaultLayout?.[n===`column`?`columns`:`rows`];if(m!==void 0&&Object.keys(m).length===s.length){p={};for(let e of s){let t=m[e];t!==void 0&&(p[e]=t)}}return{disabled:!!a,element:e,id:c,layoutStrategy:{getItemAriaControls:e=>{let r=s.indexOf(e);return t.cells.filter(e=>{let t=n===`column`?e.column:e.row,i=n===`column`?e.columnSpan:e.rowSpan;return t<=r&&r<t+i}).map(e=>e.element.id).filter(Boolean).join(` `)||void 0},calculateAvailableSize:()=>f().availableSize,calculateHitRegions:({expandHitTargets:e,axis:r,includeDisabled:i})=>_E({axis:n,cells:t.cells,crossTrackCount:o.length,expandHitTargets:e,resizeAxis:r,axisSize:f().availableSize,includeDisabled:i,separatorPlacements:t.separators}),getItemSizeInPixels:e=>f().trackSizes[s.indexOf(e)]??0},mutableState:{defaultLayout:p,disableCursor:!!k.disableCursor,expandedItemSizes:t[n].expandedItemSizes,layouts:t[n].layouts},orientation:n===`column`?`horizontal`:`vertical`,items:d,resizePreviewMode:`panel`,get resizeTargetMinimumSize(){return k.resizeTargetMinimumSize},separators:l}});F.current=i;let o=i.map(e=>iO(e)),s=()=>{let[e,t]=i.map(e=>lD(e.id));if(!(!e||!t||e.defaultLayoutDeferred||t.defaultLayoutDeferred))return{layout:{columns:e.layout,rows:t.layout},requestedLayout:{columns:e.requestedLayout,rows:t.requestedLayout}}};{let e=s();e&&(x(e.layout),S(e.layout,!1,e.requestedLayout))}let c=i.map(e=>dD(e.id,t=>{let{defaultLayoutDeferred:n,derivedItemConstraints:r,layout:a,requestedLayout:o}=t.next;if(n||r.length===0)return;aO({derivedItemConstraints:r,axis:e,layout:a,prevLayout:t.prev?.layout,requestedLayout:o});let c=s();if(c){let e=wE(),n=e.state!==`active`||!e.hitRegions.some(e=>i.includes(e.axis));x(c.layout),n&&S(c.layout,t.isUserInteraction,c.requestedLayout)}}));return()=>{F.current=[],o.forEach(e=>e()),c.forEach(e=>e())}},[_,a,g,h,S,x,v,T,k]),(0,U.useEffect)(()=>{F.current.forEach(e=>{e.mutableState.defaultLayout=r?.[e.orientation===`horizontal`?`columns`:`rows`],e.mutableState.disableCursor=!!i})}),(0,U.useImperativeHandle)(s,()=>{let e=()=>{let[e,t]=pO.map(g);return!cD(e)||!cD(t)?{columns:{},rows:{}}:{columns:BD({axisId:e}).getLayout(),rows:BD({axisId:t}).getLayout()}},t=e=>e.map(e=>`"${e}"`).join(`, `),n=(e,n)=>{let r=g(e),i=()=>{let i=cD(r);return $(i,`Grid "${h}" has not been mounted`),$(i.items.some(e=>e.id===n),`Grid "${h}" no longer contains a ${e} with id "${n}"; ${e} ids are ${t(i.items.map(e=>e.id))}`),LD({axisId:r,itemId:n})};return{collapse:()=>i().collapse(),expand:()=>i().expand(),getSize:()=>i().getSize(),isCollapsed:()=>i().isCollapsed(),resize:e=>i().resize(e)}};return{getLayout:e,getTrackById:(e,r)=>{let i=e===`column`?_:v,a=`${r}`;return $(i.some(e=>e.id===a),`Grid "${h}" does not contain a ${e} with id "${a}"; ${e} ids are ${t(i.map(e=>e.id))}`),n(e,a)},getTrackByIndex:(e,t)=>{let r=e===`column`?_:v,i=Number.isInteger(t)?r[t]:void 0;return $(i,`Grid "${h}" does not contain a ${e} at index ${t}; it has ${r.length} ${e}s`),n(e,i.id)},setLayout:t=>(pO.forEach(e=>{let n=t[e===`column`?`columns`:`rows`],r=g(e);n&&cD(r)&&BD({axisId:r}).setLayout(n)}),e())}},[_,g,h,v]);let te=()=>pO.map(e=>{let t=lD(g(e)),n=y(e);return(t&&!t.defaultLayoutDeferred?n.map(e=>`minmax(0, ${t.layout[e.id]??1}fr)`):vO(n,r?.[e===`column`?`columns`:`rows`])).join(O[e]?` auto `:` `)}).join(`|`),[ne,I]=(0,U.useSyncExternalStore)((0,U.useCallback)(e=>{let t=pO.map(t=>dD(g(t),e));return()=>t.forEach(e=>e())},[g]),te,te).split(`|`);return(0,W.jsx)(uE.Provider,{value:ee,children:(0,W.jsx)(`div`,{...m,className:t,"data-grid":!0,"data-testid":h,id:h,ref:w,style:{height:`100%`,width:`100%`,overflow:`hidden`,...p,display:`grid`,gridTemplateColumns:ne,gridTemplateRows:I,touchAction:`none`},children:(0,W.jsx)(cO.Provider,{value:null,children:e})})})}hO.displayName=`Grid`;function gO(e,t){let n=JSON.stringify(e);return(0,U.useMemo)(()=>{let r=typeof e==`number`?Array.from({length:e},(e,t)=>({id:`${t}`})):e.map((e,t)=>({...e,id:`${e.id??t}`}));return $(r.length>0,`Grid must have at least one track; "${t}" is ${n}`),r},[n])}function _O(e,t){U.Children.forEach(e,e=>{if((0,U.isValidElement)(e))if(e.type===fO){let{type:n}=e.props;n===`column`?t.column=!0:n===`row`&&(t.row=!0)}else typeof e.type==`symbol`&&e.props!==null&&typeof e.props==`object`&&`children`in e.props&&_O(e.props.children,t)})}function vO(e,t){if(t)return e.map(e=>`minmax(0, ${t[e.id]??1}fr)`);let n=e.map(e=>e.defaultSize===void 0?void 0:bE(e.defaultSize)),r=100,i=0;return n.forEach(e=>{e===void 0?i++:e[1]===`%`&&(r-=e[0])}),n.map(e=>{if(e===void 0)return`minmax(0, ${Math.max(0,r)/Math.max(1,i)}fr)`;let[t,n]=e;return n===`%`?`minmax(0, ${t}fr)`:`${t}${n}`})}function yO({cells:e,separatorPlacements:t,trackCounts:n}){let r=[];for(let t of e)pO.forEach(e=>{let[i,a]=e===`column`?[t.column,t.columnSpan]:[t.row,t.rowSpan],o=n[e];(!Number.isInteger(i)||!Number.isInteger(a)||i<0||a<1||i+a>o)&&r.push(`Invalid Cell ${e} placement (${e}: ${i}, ${e}Span: ${a}); Grid has ${o} ${e}s`)});let i=({axis:e,crossSpan:t,crossStart:n,disabled:r,index:i})=>{let a=e===`column`?`row`:`column`,o=`type="${e}" ${e}={${i}}`;return(n!==0||t!==void 0)&&(o+=` ${a}={${n}}`),t!==void 0&&(o+=` ${a}Span={${t}}`),r&&(o+=` disabled`),`<Gridline ${o} />`},a=Array.from(t.values()).filter(e=>{let{axis:t,crossSpan:i,crossStart:a,index:o}=e,s=t===`column`?`row`:`column`,c=n[t],l=n[s],u=!0;return lE(o,c)||(r.push(`Invalid ${t} Gridline ${t} (${o}); must be between 1 and ${c-1}`),u=!1),!Number.isInteger(a)||a<0||a>=l?(r.push(`Invalid ${t} Gridline ${s} (${a}); must be between 0 and ${l-1}`),u=!1):i!==void 0&&(!Number.isInteger(i)||i<1||a+i>l)&&(r.push(`Invalid ${t} Gridline ${s}Span (${i}); Grid has ${l} ${s}s`),u=!1),u}),o=e=>{let t=n[e.axis===`column`?`row`:`column`];return[e.crossStart,e.crossSpan===void 0?t:e.crossStart+e.crossSpan]};return a.forEach((t,n)=>{let{axis:s,index:c}=t,[l,u]=o(t);for(let n of e){let[e,a,o,d]=s===`column`?[n.column,n.columnSpan,n.row,n.rowSpan]:[n.row,n.rowSpan,n.column,n.columnSpan];if(e<c&&c<e+a&&o<u&&l<o+d){let n=s===`column`?`row`:`column`;r.push(`${i(t)} overlaps a Cell that spans across it (${s}: ${e}, ${s}Span: ${a}, ${n}: ${o}, ${n}Span: ${d}); use the ${n} and ${n}Span props to render gridlines beside the Cell instead`)}}for(let e of a.slice(n+1))if(e.axis===s&&e.index===c){let[n,a]=o(e);n<u&&l<a&&r.push(`${i(t)} overlaps ${i(e)}`)}}),r}function bO(e,t){return vD(e.columns,t.columns)&&vD(e.rows,t.rows)}function xO(e){for(let t=1;t<e.length;t++)if(WE(e[t-1],e[t])>0)return!1;return!0}function SO({separator:e}){let{element:t}=e,n=(0,U.useRef)(null);return tE(()=>{let e=t.cloneNode(!0),r=[t,...t.querySelectorAll(`*`)],i=[e,...e.querySelectorAll(`*`)],a=t.ownerDocument.defaultView;return r.forEach((e,t)=>{let n=i[t];if(n instanceof a.HTMLElement||n instanceof a.SVGElement){let t=a.getComputedStyle(e);for(let e=0;e<t.length;e++){let r=t.item(e);n.style.setProperty(r,t.getPropertyValue(r))}}n.removeAttribute(`data-testid`),n.removeAttribute(`id`)}),Object.assign(e.style,{boxSizing:`border-box`,height:`100%`,margin:`0`,position:`static`,transform:`none`,width:`100%`}),n.current.appendChild(e),()=>e.remove()},[t]),(0,W.jsx)(`div`,{ref:n,style:{height:`100%`,opacity:.65,pointerEvents:`none`,width:`100%`}})}function CO(){let e=(0,U.useContext)(cO);return $(e,`Group Context not found; did you render a Panel or Separator outside of a Group?`),e}function wO(e){let{registerOverlay:t}=CO(),n=(0,U.useRef)(e);eO(n.current,e)||(n.current=e);let r=n.current;return tE(()=>t(r),[t,r]),null}wO.displayName=`SeparatorOverlay`;function TO({active:e,orientation:t,style:n,...r}){let i;switch(t){case`horizontal`:i={height:`100%`,minWidth:`1px`};break;case`vertical`:i={minHeight:`1px`,width:`100%`};break}return(0,W.jsx)(`div`,{...r,"data-separator-overlay":e?`active`:`inactive`,style:{...i,...n,flexShrink:0,pointerEvents:`none`}})}function EO({overlay:e,preview:t}){let{axis:n,offset:r,rect:i,separator:a}=t,o=n.orientation===`horizontal`,s=a?.preview,c=e;return(0,U.isValidElement)(s)&&s.type===wO&&(c=s.props,s=void 0),s??(c?s=(0,W.jsx)(TO,{...c,active:t.active,orientation:n.orientation}):a&&(s=(0,W.jsx)(SO,{separator:a}))),(0,W.jsx)(`div`,{"aria-hidden":`true`,"data-resize-preview":!0,inert:!0,style:{height:i.height,left:i.left,pointerEvents:`none`,position:`absolute`,top:i.top,transform:o?`translateX(${r}px)`:`translateY(${r}px)`,width:i.width},children:s})}function DO(e){return Array.from(e).sort(WE)}function OO(e,t){let n=(0,U.useRef)({getLayout:()=>({}),setLayout:AE});(0,U.useImperativeHandle)(t,()=>n.current,[]),tE(()=>{Object.assign(n.current,BD({axisId:e}))})}function kO({groupId:e,resizePreviewMode:t}){let[n,r]=(0,U.useState)([]),i=(0,U.useRef)(n);return tE(()=>{let n=n=>{let a=cD(e),o=t===`separator`&&n.state===`active`?n.previews.filter(e=>e.axis===a&&(e.active||!mD(e.offset,0))):[],s=i.current;s.length===o.length&&o.every((e,t)=>e===s[t])||(i.current=o,r(o))};if(t!==`separator`){n(wE());return}let a=TE(({next:e})=>n(e));return n(wE()),a},[e,t]),n}function AO({children:e,className:t,defaultLayout:n,disableCursor:r,disabled:i,elementRef:a,groupRef:o,id:s,onLayoutChange:c,onLayoutChanged:l,orientation:u=`horizontal`,resizePreviewMode:d=`panel`,resizeTargetMinimumSize:f={coarse:20,fine:10},style:p,...m}){let h=(0,U.useRef)({onLayoutChange:{},onLayoutChanged:{}}),g=nE(e=>{vD(h.current.onLayoutChange,e)||(h.current.onLayoutChange=e,c?.(e))}),_=nE((e,t,n)=>{vD(h.current.onLayoutChanged,e)||(h.current.onLayoutChanged=e,l?.(e,{isUserInteraction:t,requestedLayout:n}))}),v=eE(s),[y,b]=(0,U.useState)(),x=kO({groupId:v,resizePreviewMode:d}),S=(0,U.useRef)(null),[C,w]=oO(),T=(0,U.useRef)([]),E=(0,U.useRef)({lastExpandedPanelSizes:{},layouts:{},panels:[],separators:[]}),D=rE(S,a);OO(v,o);let O=nE((e,t)=>{let r=lD(e);if(r)return{flexGrow:r.layout[t]??1};if(n?.[t])return{flexGrow:n?.[t]}}),k=sO({defaultLayout:n,disableCursor:r,resizeTargetMinimumSize:f}),A=(0,U.useMemo)(()=>({get disableCursor(){return!!k.disableCursor},getPanelStyles:O,id:v,orientation:u,registerPanel:e=>{let t=E.current;return t.panels=GE(u,[...t.panels,e]),w(),()=>{t.panels=t.panels.filter(t=>t!==e),w()}},registerOverlay:e=>(b(e),()=>{b(void 0)}),registerSeparator:e=>{let t=E.current;return t.separators=GE(u,[...t.separators,e]),w(),()=>{t.separators=t.separators.filter(t=>t!==e),w()}},updatePanelProps:(e,{disabled:t})=>{let n=E.current.panels.find(t=>t.id===e);n&&(n.constraintProps.disabled=t);let r=cD(v),i=lD(v);r&&i&&fD(r,{...i,derivedItemConstraints:iD(r)})},updateSeparatorProps:(e,{disabled:t,disableDoubleClick:n})=>{let r=E.current.separators.find(t=>t.id===e);r&&(r.disabled=t,r.disableDoubleClick=n)}}),[O,v,w,u,k]),j=(0,U.useRef)(null);return tE(()=>{let e=S.current;if(e===null)return;let t=E.current;t.panels=GE(u,t.panels),t.separators=GE(u,t.separators),T.current=DO([...t.panels.map(({element:e})=>e),...t.separators.map(({element:e})=>e)]);let n;if(k.defaultLayout!==void 0&&Object.keys(k.defaultLayout).length===t.panels.length){n={};for(let e of t.panels){let t=k.defaultLayout[e.id];t!==void 0&&(n[e.id]=t)}}let r={disabled:!!i,element:e,id:v,mutableState:{defaultLayout:n,disableCursor:!!k.disableCursor,expandedItemSizes:E.current.lastExpandedPanelSizes,layouts:E.current.layouts},orientation:u,items:t.panels,resizePreviewMode:d,get resizeTargetMinimumSize(){return k.resizeTargetMinimumSize},separators:t.separators};j.current=r;let a=iO(r),{defaultLayoutDeferred:o,derivedItemConstraints:s,layout:c,requestedLayout:l}=lD(r.id,!0);!o&&s.length>0&&(g(c),_(c,!1,l));let f=dD(v,e=>{let{defaultLayoutDeferred:t,derivedItemConstraints:n,layout:i,requestedLayout:a}=e.next;if(t||n.length===0)return;aO({derivedItemConstraints:n,axis:r,layout:i,prevLayout:e.prev?.layout,requestedLayout:a});let o=wE(),s=o.state!==`active`||!o.hitRegions.some(e=>e.axis===r);g(i),s&&_(i,e.isUserInteraction,a)});return()=>{j.current=null,a(),f()}},[i,v,_,g,u,C,d,k]),tE(()=>{xO(T.current)||w()}),(0,U.useEffect)(()=>{let e=j.current;e&&(e.mutableState.defaultLayout=n,e.mutableState.disableCursor=!!r)}),(0,W.jsx)(cO.Provider,{value:A,children:(0,W.jsxs)(`div`,{...m,className:t,"data-group":!0,"data-testid":v,id:v,ref:D,style:{height:`100%`,width:`100%`,overflow:`hidden`,position:d===`separator`?`relative`:void 0,...p,display:`flex`,flexDirection:u===`horizontal`?`row`:`column`,flexWrap:`nowrap`,touchAction:u===`horizontal`?`pan-y`:`pan-x`},children:[e,x.map(e=>(0,W.jsx)(EO,{overlay:y,preview:e},e.key))]})})}AO.displayName=`Group`;function jO(e,t){let{id:n}=CO(),r=(0,U.useRef)({collapse:jE,expand:jE,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:jE});(0,U.useImperativeHandle)(t,()=>r.current,[]),tE(()=>{Object.assign(r.current,LD({axisId:n,itemId:e}))})}function MO({children:e,className:t,collapsedSize:n=`0%`,collapsedThreshold:r,collapsible:i=!1,defaultSize:a,disabled:o,elementRef:s,groupResizeBehavior:c=`preserve-relative-size`,id:l,maxSize:u=`100%`,minSize:d=`0%`,onResize:f,panelRef:p,style:m,...h}){let g=!!l,_=eE(l),v=sO({disabled:o}),y=(0,U.useRef)(null),b=rE(y,s),{getPanelStyles:x,id:S,orientation:C,registerPanel:w,updatePanelProps:T}=CO(),E=f!==null,D=nE((e,t,n)=>{f?.(e,l,n)});tE(()=>{let e=y.current;if(e!==null){let t={element:e,id:_,idIsStable:g,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:E?D:void 0,constraintProps:{groupResizeBehavior:c,collapsedSize:n,collapsedThreshold:r,collapsible:i,defaultSize:a,disabled:v.disabled,maxSize:u,minSize:d}};return w(t)}},[c,n,r,i,a,E,_,g,u,d,D,w,v]),(0,U.useEffect)(()=>{T(_,{disabled:o})},[o,_,T]),jO(_,p);let O=()=>{let e=x(S,_);if(e)return JSON.stringify(e)},k=(0,U.useSyncExternalStore)(e=>dD(S,e),O,O),A;return A=k?JSON.parse(k):a===void 0?{flexGrow:1}:{flexGrow:void 0,flexShrink:void 0,flexBasis:a},(0,W.jsx)(`div`,{...h,"data-disabled":o||void 0,"data-panel":!0,"data-testid":_,id:_,ref:b,style:{...NO,display:`flex`,flexBasis:0,flexShrink:1,overflow:`visible`,...A},children:(0,W.jsx)(`div`,{className:t,style:{maxHeight:`100%`,maxWidth:`100%`,flexGrow:1,overflow:`auto`,...m,touchAction:C===`horizontal`?`pan-y`:`pan-x`},children:e})})}MO.displayName=`Panel`;var NO={minHeight:0,maxHeight:`100%`,height:`auto`,minWidth:0,maxWidth:`100%`,width:`auto`,border:`none`,borderWidth:0,padding:0,margin:0},PO={flexBasis:`auto`},FO={flexGrow:0,flexShrink:0};function IO({children:e,className:t,disabled:n,disableDoubleClick:r,elementRef:i,id:a,preview:o,style:s,...c}){let l=eE(a),{disableCursor:u,id:d,orientation:f,registerSeparator:p,updateSeparatorProps:m}=CO();return(0,W.jsx)(uO,{attributes:c,axisId:d,axisOrientation:f,className:t,disableCursor:u,disabled:n,disableDoubleClick:r,elementRef:i,id:l,preview:o,registerSeparator:p,requiredStyle:FO,style:s,styleDefaults:PO,updateSeparatorProps:m,children:e})}IO.displayName=`Separator`;function LO({className:e,...t}){return(0,W.jsx)(AO,{"data-slot":`resizable-panel-group`,className:L(`flex h-full w-full`,e),...t})}function RO(e){return(0,W.jsx)(MO,{"data-slot":`resizable-panel`,...e})}function zO({className:e,...t}){return(0,W.jsx)(IO,{"data-slot":`resizable-handle`,className:L(`group/handle flex shrink-0 items-center justify-center outline-none`,`aria-[orientation=vertical]:w-2 aria-[orientation=horizontal]:h-2`,e),...t,children:(0,W.jsx)(`div`,{className:L(`rounded-full bg-transparent transition-colors`,`group-aria-[orientation=vertical]/handle:h-10 group-aria-[orientation=vertical]/handle:w-0.5`,`group-aria-[orientation=horizontal]/handle:h-0.5 group-aria-[orientation=horizontal]/handle:w-10`,`group-data-[separator=hover]/handle:bg-muted-foreground/50 group-data-[separator=focus]/handle:bg-muted-foreground/50 group-data-[separator=active]/handle:bg-primary`)})})}var BO=`oa.panes`,VO=200,HO=new Set,UO=[];function WO(e,t){return t?`${e}/${t}`:`new`}var GO=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function KO(e){if(!GO(e))return{};let t={};for(let[n,r]of Object.entries(e))GO(r)&&Object.values(r).every(e=>typeof e==`number`)&&(t[n]=r);return t}function qO(e){let t;try{t=JSON.parse(e??`null`)}catch{t=null}let n={};if(GO(t)&&GO(t.pages))for(let[e,r]of Object.entries(t.pages))GO(r)&&(n[e]={open:Array.isArray(r.open)?r.open.filter(e=>typeof e==`string`):[],sizes:KO(r.sizes)});return{pages:n,last:GO(t)?KO(t.last):{}}}var JO,YO;function XO(){let e=YO??null;if(YO===void 0)try{e=globalThis.localStorage?.getItem(BO)??null}catch{e=null}return JO?.raw!==e&&(JO={raw:e,kept:qO(e)}),JO.kept}function ZO(e,t,n){let r=XO(),{[e]:i,...a}=r.pages,o=t(i??{open:[],sizes:{}}),s=o.open.length>0||Object.keys(o.sizes).length>0?{...a,[e]:o}:a,c=Object.keys(s);for(let e of c.slice(0,Math.max(0,c.length-VO)))delete s[e];let l=JSON.stringify({pages:s,last:n??r.last});try{globalThis.localStorage?.setItem(BO,l),YO=void 0}catch{YO=l}for(let e of HO)e()}function QO(e){return HO.add(e),()=>HO.delete(e)}function $O(e,t,n){!n&&ok.get(e)===t&&ok.delete(e),ZO(e,e=>e.open.includes(t)===n?e:{...e,open:n?[...e.open,t]:e.open.filter(e=>e!==t)})}function ek(e){ok.delete(e),ZO(e,e=>({...e,open:[]}))}function tk(e){return(0,U.useSyncExternalStore)(QO,()=>XO().pages[e]?.open??UO,()=>UO)}function nk(e,t){let n=XO();return n.pages[e]?.sizes[t]??n.last[t]}var rk=0;function ik(e,t){return XO().pages[e]?.sizes[t]?e:`~${rk}`}function ak(e,t,n){rk++,ZO(e,e=>({...e,sizes:{...e.sizes,[t]:n}}),{...XO().last,[t]:n})}var ok=new Map;function sk(e,t){t===void 0?ok.delete(e):ok.set(e,t);for(let e of HO)e()}function ck(e){return(0,U.useSyncExternalStore)(QO,()=>ok.get(e),()=>void 0)}var lk=new Map,uk=new Map,dk=new Set,fk=0;function pk(e){return dk.add(e),()=>dk.delete(e)}function mk(e,t){lk.set(e,{path:t,at:++fk});for(let e of dk)e()}function hk(e){return(0,U.useSyncExternalStore)(pk,()=>lk.get(e),()=>void 0)}function gk(e){uk.set(e,++fk);for(let e of dk)e()}function _k(e){return(0,U.useSyncExternalStore)(pk,()=>uk.get(e),()=>void 0)}var vk=e=>`${e.package}/${e.id}`,yk=`docs`,bk=`workspace`,xk=`chat`,Sk=`panes`,Ck=50,wk=(0,U.createContext)({page:``,enabled:!1,panes:[],open:[],expanded:void 0,panelProps:void 0,reveal:void 0,docs:[],docsLoaded:!1}),Tk=0;function Ek({projectId:e,agentId:t,enabled:n,files:r,context:i,toggleContext:a,activity:o,children:s}){let c=n?e:null,{value:l,loaded:u}=Ie(c?()=>Tn(c):null,[],4e3,[c],c?{remember:`docs:${c}`}:void 0),{panels:d}=_e(),f=(0,U.useMemo)(()=>{if(!c)return[];let e=d.filter(e=>e.projects.includes(c)).map(e=>({id:vk(e),label:e.label,help:e.help,icon:e.icon,panel:e}));return l.length>0?[...e,{id:yk,label:`Docs`,help:`The PLAN/TODO markdown files at the root of the workspace.`,icon:Re}]:e},[d,c,l.length]),p=WO(c??``,t),m=tk(p),h=(0,U.useMemo)(()=>m.flatMap(e=>f.find(t=>t.id===e)??[]),[m,f]),g=ck(p);(0,U.useEffect)(()=>()=>{Bi()&&ek(p)},[p]);let _=hk(p),v=f.find(e=>e.panel?.changes)?.id,y=_?.at;(0,U.useEffect)(()=>{y===void 0||v===void 0||y<=Tk||(Tk=y,$O(p,v,!0))},[y,v,p]);let b=_k(p),x=f.find(e=>e.panel?.screen)?.id;(0,U.useEffect)(()=>{b===void 0||x===void 0||b<=Tk||(Tk=b,$O(p,x,!0))},[b,x,p]);let S=(0,U.useMemo)(()=>new Set(r.filter(e=>i.has(e))),[r,i]),C=(0,U.useMemo)(()=>({files:S,toggle:a}),[S,a]),w=(0,U.useMemo)(()=>c?{projectId:c,...t?{agentId:t,...o===void 0?{}:{activity:o}}:{},context:C}:void 0,[c,t,o,C]),T=(0,U.useMemo)(()=>({page:p,enabled:c!==null,panes:f,open:h,expanded:h.some(e=>e.id===g)?g:void 0,panelProps:w,reveal:_,docs:l,docsLoaded:u}),[p,c,f,h,g,w,_,l,u]);return(0,W.jsx)(wk.Provider,{value:T,children:s})}function Dk(){let{open:e}=(0,U.useContext)(wk);return Hi()&&e.length>0}function Ok(){let{page:e,panes:t,open:n}=(0,U.useContext)(wk);return Dk()||t.length===0?null:(0,W.jsx)(`div`,{role:`group`,"aria-label":`Panes`,className:`flex shrink-0 items-center gap-0.5`,children:t.map(t=>{let r=n.includes(t);return(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(z,{variant:`ghost`,size:`icon-sm`,className:L(`shrink-0 text-muted-foreground`,r&&`bg-accent text-accent-foreground`),"aria-label":t.label,"aria-pressed":r,onClick:()=>$O(e,t.id,!r)}),children:(0,W.jsx)(t.icon,{className:`h-4 w-4`})}),(0,W.jsxs)(h,{className:`max-w-64`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:t.label}),(0,W.jsx)(`span`,{className:`block text-muted-foreground`,children:t.help})]})]},t.id)})})}function kk(){let{page:e,panes:t,open:n}=(0,U.useContext)(wk);return Dk()?(0,W.jsxs)(l,{children:[(0,W.jsx)(d,{"aria-label":`Panes`,className:`flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-accent-foreground`,children:(0,W.jsx)(Or,{className:`h-4 w-4`,"aria-hidden":!0})}),(0,W.jsx)(A,{align:`start`,className:`min-w-[12rem]`,children:t.map(t=>(0,W.jsxs)(Ve,{closeOnClick:!0,checked:n.includes(t),onCheckedChange:n=>$O(e,t.id,n),children:[(0,W.jsx)(t.icon,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),` `,t.label]},t.id))})]}):null}function Ak({pane:e}){let{page:t,expanded:n,panelProps:r,reveal:i,docs:a,docsLoaded:o}=(0,U.useContext)(wk),s=n===e.id,[c,l]=(0,U.useState)(null),[u,d]=(0,U.useState)(null),f=(0,U.useMemo)(()=>({title:c,actions:u}),[c,u]);return(0,W.jsx)(`div`,{className:s?`absolute inset-0 z-30 flex bg-background p-2`:`flex h-full min-h-0 min-w-0`,children:(0,W.jsxs)(`section`,{"aria-label":e.label,className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-xl border border-border bg-card text-card-foreground`,children:[(0,W.jsxs)(`header`,{className:`flex h-9 shrink-0 items-center gap-0.5 pr-1 pl-1`,children:[(0,W.jsx)(`div`,{ref:l,className:`peer flex min-w-0 flex-1 items-center gap-0.5 empty:hidden`}),(0,W.jsx)(`h2`,{className:`min-w-0 flex-1 truncate pl-2 text-xs font-medium text-muted-foreground peer-[:not(:empty)]:hidden`,children:e.label}),(0,W.jsx)(`div`,{ref:d,className:`flex shrink-0 items-center gap-0.5 empty:hidden`}),(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(z,{variant:`ghost`,size:`icon-sm`,className:`shrink-0 text-muted-foreground`,"aria-label":s?`Bring ${e.label} back to its place`:`Let ${e.label} fill the page`,"aria-pressed":s,onClick:()=>sk(t,s?void 0:e.id)}),children:s?(0,W.jsx)(Gr,{className:`h-3.5 w-3.5`}):(0,W.jsx)(Hr,{className:`h-3.5 w-3.5`})}),(0,W.jsx)(h,{children:s?`Back to its place`:`Fill the page`})]}),(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(z,{variant:`ghost`,size:`icon-sm`,className:`shrink-0 text-muted-foreground`,"aria-label":`Close ${e.label}`,onClick:()=>$O(t,e.id,!1)}),children:(0,W.jsx)(Je,{className:`h-4 w-4`})}),(0,W.jsx)(h,{children:`Close`})]})]}),(0,W.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden`,children:e.panel&&r?(0,W.jsx)(ZT,{package:e.panel.package,label:`${e.label} pane`,children:(0,W.jsx)(ht.Provider,{value:f,children:(0,W.jsx)(e.panel.Panel,{...e.panel.changes&&i?{...r,reveal:i}:r})})}):(0,W.jsx)(YT,{docs:a,loaded:o})})]})})}var jk=e=>e.map(e=>e.id).join(`+`);function Mk(){let{page:e,open:t,expanded:n}=(0,U.useContext)(wk),r=jk(t),i=nk(e,r),a=ik(e,r),o=e=>`${e.id}@${a}`;return(0,W.jsx)(LO,{orientation:`vertical`,disabled:n!==void 0,onLayoutChanged:(n,{isUserInteraction:i})=>{let a=t.map(e=>[e.id,n[o(e)]]);i&&a.every(([,e])=>e!==void 0)&&ak(e,r,Object.fromEntries(a))},children:t.flatMap((e,n)=>[...n>0?[(0,W.jsx)(zO,{"aria-label":`The height of ${t[n-1].label} and ${e.label}`},`above-${e.id}`)]:[],(0,W.jsx)(RO,{id:o(e),defaultSize:`${i?.[e.id]??100/t.length}%`,minSize:96,style:{overflow:`hidden`},children:(0,W.jsx)(Ak,{pane:e})},e.id)])})}function Nk({children:e}){let{page:t,enabled:n,open:r,expanded:i}=(0,U.useContext)(wk),a=Hi(),o=r.length>0&&!a;if(!n)return e;let s=nk(t,bk)?.[Sk]??Ck,c=`${Sk}@${ik(t,bk)}`;return(0,W.jsxs)(`div`,{className:`relative flex min-w-0 flex-1`,children:[(0,W.jsxs)(LO,{orientation:`horizontal`,disabled:i!==void 0,onLayoutChanged:(e,{isUserInteraction:n})=>{let[r,i]=[e[xk],e[c]];n&&r!==void 0&&i!==void 0&&ak(t,bk,{[xk]:r,[Sk]:i})},children:[(0,W.jsx)(RO,{id:xk,minSize:320,className:`flex min-w-0 flex-col`,style:{overflow:`hidden`},children:e}),o&&(0,W.jsx)(zO,{"aria-label":`The width of the chat and the panes`}),o&&(0,W.jsx)(RO,{id:c,defaultSize:`${s}%`,minSize:288,className:`py-2 pr-2`,style:{overflow:`hidden`},children:(0,W.jsx)(Mk,{})})]}),a&&r.length>0&&(0,W.jsx)(`div`,{className:L(`absolute inset-y-0 right-0 z-20 flex flex-col gap-2 p-2`,i?`left-0`:`w-2/3 min-w-64 max-w-full`),children:r.map(e=>(0,W.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,W.jsx)(Ak,{pane:e})},e.id))})]})}var Pk=[];function Fk({projectId:e,onProjectRemoved:t,onOpenSkills:n}){return(0,W.jsxs)(`div`,{className:`flex items-center gap-2 overflow-hidden py-2 pr-2 md:pl-4 max-md:pl-11`,children:[(0,W.jsx)(kk,{}),(0,W.jsx)(`div`,{className:`grow shrink-0`}),(0,W.jsx)(JT,{projectId:e,events:Pk,onProjectRemoved:t,onOpenSkills:n}),(0,W.jsx)(Ok,{})]})}var Ik=B(`onProjectSkills`),Lk=B(`sendChangeSkills`),Rk=B(`sendCommitSkills`),zk=e=>e.standing!==`absent`,Bk=e=>e.groups.flatMap(e=>e.skills),Vk=(e,t,n)=>`${e} ${e===1?t:n}`,Hk={newer:`a newer text is there`,changed:`changed by hand`,own:`your own text`},Uk=`Starts the automations you switch on, while the dashboard is open. This machine only, nothing to commit.`;function Wk({projectId:e,onChanged:t,door:n}){let{value:r,reload:i,loaded:a}=Ie(()=>Ik(e).catch(()=>null),null,15e3,[e],`previous`),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(null),{busy:u,error:d,run:f}=tt(),p=r?.uncommitted??0;(0,U.useEffect)(()=>{p>0&&l(null)},[p]);let m=n?.open??!1;if((0,U.useEffect)(()=>{m&&r&&s(e=>e??r)},[m,r]),!r)return m&&a?(0,W.jsx)(`p`,{role:`alert`,className:`border-b border-border px-4 py-2 text-xs text-danger`,children:`This project’s skills could not be read.`}):null;let h=async()=>{await i(),t?.()},g=Bk(r).filter(e=>e.standing===`newer`).map(e=>e.name),_=Bk(r).filter(e=>e.waiting).map(e=>e.name),v=async()=>{(await f(()=>Lk(e,{write:g}),`Could not update the skills.`)).ok&&await h()},y=async()=>{let t=await f(()=>Rk(e),`Could not commit the skill files.`);t.ok&&(l(t.value.commit??null),await h())},b=o&&(0,W.jsx)(Kk,{projectId:e,skills:o,onClose:()=>{s(null),n?.onClose()},onSaved:()=>void h()}),x=r.has===0,S=r.uncommitted===0&&c!==null,C=_.length>0&&r.startBranch!==void 0;return!x&&g.length===0&&r.uncommitted===0&&!S&&!C&&!d?b||null:(0,W.jsxs)(`div`,{role:`status`,"aria-label":`This project's skills`,className:`flex flex-wrap items-center gap-x-4 gap-y-1 border-b border-border px-4 py-2 text-xs text-muted-foreground`,children:[x&&(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[`This project has no skills yet.`,(0,W.jsx)(z,{type:`button`,variant:`outline`,size:`xs`,onClick:()=>s(r),children:`Add skills`})]}),g.length>0&&(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[Vk(g.length,`skill has`,`skills have`),` a newer text.`,(0,W.jsx)(z,{type:`button`,variant:`outline`,size:`xs`,disabled:u,onClick:()=>void v(),children:`Update`})]}),r.uncommitted>0&&(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[Vk(r.uncommitted,`skill file is`,`skill files are`),` not committed.`,(0,W.jsx)(z,{type:`button`,variant:`outline`,size:`xs`,disabled:u,onClick:()=>void y(),children:`Commit`})]}),S&&(0,W.jsxs)(`span`,{children:[`Committed as `,c,`. Nothing was pushed.`]}),C&&(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`text-foreground`,children:_.length>4?`${_.length} skills`:_.join(`, `)}),`: waiting to reach `,r.startBranch,`. An agent started from `,r.startBranch,` does not have `,_.length===1?`it`:`them`,`.`]}),d&&(0,W.jsx)(`span`,{className:`text-danger`,children:d}),b]})}function Gk(e){let t=Bk(e).filter(zk);return t.length>0||e.scheduler?{ticked:new Set(t.map(e=>e.name)),scheduler:e.scheduler}:{ticked:new Set(e.groups.filter(e=>e.ticked).flatMap(e=>e.skills.map(e=>e.name))),scheduler:!0}}function Kk({projectId:e,skills:t,onClose:n,onSaved:r}){let[i]=(0,U.useState)(()=>Gk(t)),[a,o]=(0,U.useState)(i.ticked),[s,c]=(0,U.useState)(i.scheduler),[l,u]=(0,U.useState)(null),[d,f]=(0,U.useState)(null),{busy:p,error:m,run:h}=tt(),g=(e,t)=>o(n=>{let r=new Set(n);return t?r.add(e):r.delete(e),r}),_=Bk(t).filter(e=>a.has(e.name)&&!zk(e)).map(e=>e.name),v=Bk(t).filter(e=>!a.has(e.name)&&zk(e)).map(e=>e.name),y=_.length===0&&v.length===0&&s===t.scheduler,b=async()=>{let n=await h(()=>Lk(e,{write:_,remove:v,...s===t.scheduler?{}:{scheduler:s}}),`Could not change the skills.`);n.ok&&(u(n.value),r())},x=async()=>{let t=await h(()=>Rk(e,[...l?.written??[],...l?.removed??[]]),`Could not commit the skill files.`);t.ok&&(f(t.value),r())};return(0,W.jsx)(ut,{open:!0,onOpenChange:e=>{!e&&!p&&n()},title:`Skills`,children:l?(0,W.jsxs)(`div`,{className:`space-y-2 text-xs leading-relaxed text-muted-foreground`,children:[l.written.length>0&&(0,W.jsxs)(`p`,{children:[`Wrote `,Vk(l.written.length,`skill`,`skills`),` in `,(0,W.jsx)(`code`,{className:`rounded bg-muted px-1`,children:`.agents/skills`}),`, linked in`,` `,(0,W.jsx)(`code`,{className:`rounded bg-muted px-1`,children:`.claude/skills`}),`: `,(0,W.jsx)(`span`,{className:`text-foreground`,children:l.written.join(`, `)}),`.`]}),l.removed.length>0&&(0,W.jsxs)(`p`,{children:[`Deleted `,Vk(l.removed.length,`skill`,`skills`),`: `,(0,W.jsx)(`span`,{className:`text-foreground`,children:l.removed.join(`, `)}),`.`]}),l.scheduler===`on`&&(0,W.jsx)(`p`,{children:`The scheduler is on for this project, on this machine. Every automation starts switched off.`}),l.scheduler===`off`&&(0,W.jsx)(`p`,{children:`The scheduler is off for this project on this machine, and stopped.`}),l.left.map(({path:e,reason:t})=>(0,W.jsxs)(`p`,{children:[`Left as it is: `,(0,W.jsx)(`code`,{className:`rounded bg-muted px-1`,children:e}),` (`,t,`).`]},e)),l.schedulerError&&(0,W.jsxs)(`p`,{className:`text-danger`,children:[`The scheduler was not switched: `,l.schedulerError]}),l.written.length+l.removed.length>0&&!t.git&&(0,W.jsx)(`p`,{children:`This folder is not a git repository, so there is nothing to commit.`}),l.written.length+l.removed.length>0&&t.git&&d===null&&(0,W.jsx)(`p`,{children:`The files are in the project’s folder, not committed. A commit holds these files alone, on the branch the folder is on. Nothing is pushed.`}),d!==null&&!d.committed&&(0,W.jsx)(`p`,{children:`Nothing to commit: git already has these files as they are.`}),d?.committed&&t.remote&&(0,W.jsxs)(`p`,{children:[`Committed as `,d.commit,`, these files alone. Nothing was pushed: push it, or open a pull request where the default branch is protected.`]}),d?.committed&&!t.remote&&(0,W.jsxs)(`p`,{children:[`Committed as `,d.commit,`, these files alone.`,l.written.length>0?` Your agents have these skills from their next start.`:``]}),l.written.length>0&&t.startBranch!==void 0&&!(d?.committed&&!t.remote)&&(0,W.jsxs)(`p`,{children:[`Your agents get these skills once they are on `,t.startBranch,`.`]}),m&&(0,W.jsx)(`p`,{className:`text-danger`,children:m}),(0,W.jsxs)(`div`,{className:`flex justify-end gap-2 pt-1`,children:[l.written.length+l.removed.length>0&&t.git&&d===null&&(0,W.jsx)(z,{type:`button`,size:`sm`,disabled:p,onClick:()=>void x(),children:p?`Committing…`:`Commit these files`}),(0,W.jsx)(z,{type:`button`,variant:`outline`,size:`sm`,disabled:p,onClick:n,children:`Done`})]})]}):(0,W.jsxs)(`div`,{className:`text-xs`,children:[(0,W.jsx)(`p`,{className:`mb-2 leading-relaxed text-muted-foreground`,children:`A ticked skill is written into the project’s folder as a file you commit; an unticked one is deleted. Branches, logs, question, and github on a GitHub project come with every run and are not here.`}),(0,W.jsxs)(`div`,{className:`max-h-[55vh] space-y-3 overflow-y-auto pr-1`,children:[t.groups.map(e=>(0,W.jsxs)(`fieldset`,{children:[(0,W.jsx)(`legend`,{className:`mb-1 font-medium text-foreground`,children:e.title}),e.skills.map(e=>(0,W.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2 py-0.5`,children:[(0,W.jsx)(pe,{checked:a.has(e.name),onCheckedChange:t=>g(e.name,t===!0),disabled:p,className:`mt-0.5`,"aria-label":e.name}),(0,W.jsxs)(`span`,{className:`min-w-0`,children:[(0,W.jsx)(`span`,{className:`text-foreground`,children:e.name}),Hk[e.standing]&&(0,W.jsxs)(`span`,{className:`text-warning`,children:[` (`,Hk[e.standing],`)`]}),e.waiting&&t.startBranch!==void 0&&(0,W.jsxs)(`span`,{className:`text-warning`,children:[` (waiting to reach `,t.startBranch,`)`]}),(0,W.jsx)(`span`,{className:`block text-muted-foreground`,children:e.description})]})]},e.name))]},e.title)),(0,W.jsxs)(`fieldset`,{children:[(0,W.jsx)(`legend`,{className:`mb-1 font-medium text-foreground`,children:`The scheduler`}),(0,W.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2 py-0.5`,children:[(0,W.jsx)(pe,{checked:s,onCheckedChange:e=>c(e===!0),disabled:p,className:`mt-0.5`,"aria-label":`scheduler`}),(0,W.jsxs)(`span`,{className:`min-w-0`,children:[(0,W.jsx)(`span`,{className:`text-foreground`,children:`scheduler`}),(0,W.jsx)(`span`,{className:`block text-muted-foreground`,children:Uk})]})]})]})]}),m&&(0,W.jsx)(`p`,{className:`mt-2 text-danger`,children:m}),(0,W.jsxs)(`div`,{className:`mt-3 flex items-center justify-end gap-2`,children:[(0,W.jsx)(`span`,{className:`mr-auto text-muted-foreground`,children:y?`Nothing to change.`:[_.length>0?`${Vk(_.length,`skill`,`skills`)} to write`:``,v.length>0?`${Vk(v.length,`skill`,`skills`)} to delete`:``,s===t.scheduler?``:`the scheduler ${s?`on`:`off`}`].filter(Boolean).join(`, `)+`.`}),(0,W.jsx)(z,{type:`button`,variant:`outline`,size:`sm`,disabled:p,onClick:n,children:`Cancel`}),(0,W.jsx)(z,{type:`button`,size:`sm`,disabled:p||y,onClick:()=>void b(),children:p?`Saving…`:`Save`})]})]})})}function qk({events:e,headline:t=!1}){let n=Jk(e);if(n.length===0)return null;let r=n[n.length-1];return(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsxs)(`span`,{role:`alert`,className:`flex shrink-0 items-center gap-1.5 text-danger`,children:[(0,W.jsx)(ii,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,W.jsxs)(`span`,{className:`font-medium`,children:[n.length,` `,n.length===1?`error`:`errors`]}),t&&(0,W.jsxs)(`span`,{className:`min-w-0 truncate text-muted-foreground`,children:[`· `,r.headline]})]})}),(0,W.jsx)(h,{className:`whitespace-pre-line`,children:n.map(e=>e.headline).join(`
131
+ `)})]})}function Jk(e){let t=Mt(e),n=FT(e),r=n&&!n.ok&&!n.stopped&&!n.waiting?n.detail:void 0;return r?t.filter(e=>!r.includes(e.headline)):t}function Yk(e){if(e.length===0)return null;let t=FT(e);return t!==void 0&&!t.ok&&!t.stopped&&!t.waiting?{dot:`bg-danger`,label:`failed`,tone:`text-danger`,...t?.detail?{detail:t.detail}:{}}:t?.stopped?{dot:`bg-warning`,label:`stopped`,tone:`text-warning`}:t?.waiting?{dot:`bg-warning`,label:`waiting for an answer`,tone:`text-warning`}:PT(e)?{dot:`animate-pulse bg-warning`,label:`building…`,tone:`text-muted-foreground`}:{dot:`bg-muted-foreground`,label:`finished`,tone:`text-muted-foreground`}}function Xk({events:e}){let t=Nt(e),n=Yk(e),r=Jk(e),i=BT(t);return!i&&!n&&r.length===0?null:(0,W.jsxs)(`div`,{className:`grid gap-3 border-b border-border p-4 md:grid-cols-2`,children:[n&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-sm md:col-span-2`,children:[(0,W.jsx)(`span`,{className:L(`h-2.5 w-2.5 shrink-0 rounded-full`,n.dot),"aria-hidden":!0}),(0,W.jsx)(`span`,{className:L(`text-xs`,n.tone),children:n.detail?`${n.label} — ${n.detail}`:n.label})]}),r.length>0&&(0,W.jsx)(`div`,{className:`text-sm md:col-span-2`,children:(0,W.jsx)(qk,{events:e,headline:!0})}),i&&(0,W.jsx)(`a`,{href:i.href,target:`_blank`,rel:`noreferrer`,className:`text-xs text-primary underline underline-offset-2 md:col-span-2`,children:i.label})]})}var Zk=[];function Qk({projectId:e=null,onOpenAgent:t}){let{value:n,loaded:r}=Ie(kn,Zk,5e3,[]),i=e===null?n:n.filter(t=>t.projectId===e);return!r||i.length===0?null:(0,W.jsxs)(`section`,{"aria-label":`Open questions`,className:`p-3`,children:[(0,W.jsxs)(`h2`,{className:`mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:[`Waiting on you · `,i.length]}),(0,W.jsx)(`ul`,{className:`max-h-[70vh] overflow-x-hidden overflow-y-auto`,children:i.map(e=>{let n=$k(e),r=s(e.updatedAt,``);return(0,W.jsx)(`li`,{children:(0,W.jsxs)(`button`,{type:`button`,"aria-label":`Open ${n}: needs input, ${e.choice.title}`,onClick:()=>t(e.projectId,e.agentId),className:`flex w-full items-center overflow-hidden whitespace-nowrap rounded-md px-2 py-1.5 text-left text-sm hover:bg-accent/40 md:gap-3 max-md:flex-wrap max-md:gap-x-3 max-md:gap-y-0.5`,children:[(0,W.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1.5 text-xs text-warning`,children:[(0,W.jsx)(`span`,{className:`h-2 w-2 rounded-full bg-warning`,"aria-hidden":!0}),`Needs input`]}),(0,W.jsx)(`span`,{className:`min-w-0 shrink truncate text-foreground md:max-w-[50%] max-md:flex-1`,children:n}),(0,W.jsx)(`span`,{className:`min-w-0 truncate text-muted-foreground md:flex-auto max-md:order-last max-md:basis-full`,children:e.choice.title}),(0,W.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:e.projectName}),r&&(0,W.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:r}),(0,W.jsx)(Ue,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`,"aria-hidden":!0})]})},`${e.projectId} ${e.agentId}`)})})]})}function $k(e){return e.intent?.split(`
132
+ `)[0]?.slice(0,80)??e.agentId}function eA({projectId:e,projectName:t,scope:n=null,events:r,onAgentStarted:i,files:a,context:o,addContext:s,removeContext:c,toggleContext:l,onOpenAgent:u,errors:d,onProjectRemoved:f,onSkillsChanged:p}){let[m,h]=(0,U.useState)(null);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Fk,{projectId:e,onProjectRemoved:f,onOpenSkills:()=>h(e)}),(0,W.jsx)(ki,{errors:d}),(0,W.jsx)(Wk,{projectId:e,onChanged:p,door:{open:m===e,onClose:()=>h(null)}},e),(0,W.jsx)(ce,{className:`min-h-0 flex-1`,children:(0,W.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl`,children:[r.length>0&&(0,W.jsx)(Xk,{events:r}),(0,W.jsx)(Qk,{projectId:n,onOpenAgent:u})]})}),(0,W.jsx)(MT,{projectId:e,projectName:t,onAgentStarted:i,files:a,context:o,addContext:s,removeContext:c,toggleContext:l})]})}var tA=B(`onQuota`),nA=3e4;function rA(){return Ie(tA,void 0,nA,[]).value}function iA(e){return new Intl.DateTimeFormat(`en-US`,{weekday:`short`}).format(e).slice(0,2).toUpperCase()}function aA(e,t,n=iA){let r=t-e;if(!(r>0))return[];let i=[e],a=new Date(e);for(a.setHours(24,0,0,0);a.getTime()<t;)i.push(a.getTime()),a.setHours(24,0,0,0);i.push(t);let o=[];for(let t=0;t<i.length-1;t++){let a=i[t],s=i[t+1];o.push({startPercent:(a-e)/r*100,endPercent:(s-e)/r*100,label:n(a)})}let s=o[0],c=o.at(-1);return o.length>1&&s.label===c.label&&(s.endPercent-s.startPercent>=c.endPercent-c.startPercent?c.label=void 0:s.label=void 0),o}var oA=5;function sA(e,t,n=oA){return e>=100?`full`:e>t+n?`over`:e>=t-n?`near`:`under`}function cA(e,t){return Math.min(Math.max(e+t,0),100)}function lA(e,t,n){return(e-t)/100*n}function uA(e,t){return Math.min(Math.max(e,0),100)/100*t}function dA(e,t){if(!(t<=0))return e/t*100}function fA(e,t){let n=Math.min(Math.max(e,0),100);return{start:n,end:Math.max(n,Math.min(Math.max(t,0),100))}}var pA={under:`bg-success`,near:`bg-info`,over:`bg-warning`,full:`bg-danger`},mA={under:`text-success`,near:`text-info`,over:`text-warning`,full:`text-danger`},hA=` — `;function gA(e){return e.find(e=>e.kind===`week`)}function _A(e,t){let n=t.map(e=>`“${e.label}”`).join(`, `);return e?e.resetsAtText?`Couldn't parse quota: the week resets “${e.resetsAtText}”, which isn't a phrasing this version recognizes.`:`No quota week to place: “${e.label}” reports ${e.percentUsed}% used but no reset time, and the week is drawn between its start and its reset — there is no span to place it in.`:`Couldn't parse quota: no “Current week (all models)” line in the readout — it reported ${n}.`}function vA({swatch:e,children:t}){return(0,W.jsxs)(`span`,{className:`flex items-center gap-1`,children:[e,t]})}function yA({boundary:e,percentUsed:t,offset:n,onChangeOffset:r,others:i}){let a=aA(e.startsAt,e.resetsAt),o=sA(t,e.percent),s=n!==void 0,c=cA(e.percent,n??0),l=fA(t,s?c:t),u=s&&l.end>l.start,d=lA(c,e.percent,e.resetsAt-e.startsAt),f=s&&c>e.percent+14.285714285714286,p=`${Math.round(t)}% of the week used, against a boundary of ${Math.round(e.percent)}% on day ${e.day} of 7`,m=e.resetsAt-e.startsAt,_=lA(t,e.percent,m),v=_>=0,y=uA(t,m),b=dA(t,e.percent);return(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(`div`,{className:`relative h-4 text-[10px] font-medium tracking-wide text-muted-foreground`,children:a.map((e,t)=>e.label&&(0,W.jsx)(`span`,{className:`absolute top-0 -translate-x-1/2`,style:{left:`${(e.startPercent+e.endPercent)/2}%`},children:e.label},t))}),(0,W.jsxs)(`div`,{className:`relative h-4`,children:[(0,W.jsxs)(`div`,{role:`img`,"aria-label":p,className:`absolute inset-x-0 top-[3px] h-2.5 overflow-hidden rounded-full bg-muted`,children:[(0,W.jsx)(`div`,{className:L(`absolute inset-y-0 left-0`,pA[o]),style:{width:`${l.start}%`}}),u&&(0,W.jsx)(`div`,{className:L(`absolute inset-y-0 opacity-35`,pA[o]),style:{left:`${l.start}%`,width:`${l.end-l.start}%`}}),a.slice(1).map((e,t)=>(0,W.jsx)(`div`,{className:`absolute inset-y-0 w-1 bg-background/60`,style:{left:`${e.startPercent}%`},"aria-hidden":!0},t)),(0,W.jsx)(`div`,{className:`absolute inset-y-0 w-0.5 -translate-x-1/2 bg-foreground`,style:{left:`${Math.min(Math.max(e.percent,0),100)}%`},"aria-hidden":!0})]}),s&&(0,W.jsx)(`input`,{type:`range`,"aria-label":`Unattended work stops at`,className:L(`absolute inset-0 h-full w-full cursor-grab appearance-none bg-transparent active:cursor-grabbing`,`[&::-webkit-slider-runnable-track]:bg-transparent`,`[&::-moz-range-track]:border-none [&::-moz-range-track]:bg-transparent`,`[&::-webkit-slider-thumb]:h-3.5 [&::-webkit-slider-thumb]:w-3.5 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full`,`[&::-webkit-slider-thumb]:border [&::-webkit-slider-thumb]:border-background [&::-webkit-slider-thumb]:bg-foreground [&::-webkit-slider-thumb]:shadow-sm`,`[&::-moz-range-thumb]:h-3.5 [&::-moz-range-thumb]:w-3.5 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-none`,`[&::-moz-range-thumb]:border [&::-moz-range-thumb]:border-background [&::-moz-range-thumb]:bg-foreground [&::-moz-range-thumb]:shadow-sm`),min:0,max:100,step:`any`,value:c,onChange:t=>{let n=Math.round(Number(t.target.value)-e.percent);r?.(Math.min(Math.max(n,-50),50))}})]}),(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`span`,{className:`cursor-default`}),children:[`You are `,(0,W.jsx)(`span`,{className:L(`font-medium`,mA[o]),children:ge(Math.abs(_))}),` `,v?`over`:`under`,` the week's pace`]}),(0,W.jsxs)(h,{className:`max-w-64`,children:[`You are `,ne(Math.abs(_)),` `,v?`above`:`below`,` the quota boundary.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),`You're`,` `,v?`over-consuming`:`under-consuming`,`: you spend `,v?`faster`:`slower`,` than the week's pace allows.`]})]}),`:`,` `,(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`span`,{className:`cursor-default`}),children:[(0,W.jsx)(`span`,{className:`font-medium text-foreground`,children:ge(y)}),` spent`]}),(0,W.jsxs)(h,{className:`max-w-64`,children:[ne(y),` of the week's allowance has been consumed — `,Math.round(t),`% of it, said in the same unit as the pace figure beside it.`]})]}),b!==void 0&&(0,W.jsxs)(W.Fragment,{children:[`,`,` `,(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`span`,{className:`cursor-default`}),children:[(0,W.jsxs)(`span`,{className:L(`font-medium`,mA[o]),children:[Math.round(b),`%`]}),` of pace`]}),(0,W.jsxs)(h,{className:`max-w-64`,children:[`Against the `,Math.round(e.percent),`% of the week allowed by day `,e.day,` of 7 — 100% is exactly on pace. This is the line that parks unattended work, not the week's total.`]})]})]}),`.`,` `,(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`span`,{className:`cursor-default`}),children:[`Resets `,De(e.resetsAt)]}),(0,W.jsx)(h,{children:st(e.resetsAt)})]}),`.`,i.length>1?(0,W.jsxs)(W.Fragment,{children:[` `,(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`span`,{className:`cursor-default`}),children:`Show all limits`}),(0,W.jsx)(h,{children:(0,W.jsx)(`table`,{className:`border-collapse text-left`,children:(0,W.jsx)(`tbody`,{children:i.map(e=>(0,W.jsx)(xA,{window:e},e.label))})})})]})]}):null]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-3 gap-y-1 text-[11px] text-muted-foreground`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,W.jsx)(vA,{swatch:(0,W.jsx)(`span`,{className:L(`h-2 w-2 rounded-sm`,pA[o]),"aria-hidden":!0}),children:`Used`}),s&&(0,W.jsx)(vA,{swatch:(0,W.jsx)(`span`,{className:L(`h-2 w-2 rounded-sm opacity-35`,pA[o]),"aria-hidden":!0}),children:`Budget for Autonomous AI`}),(0,W.jsx)(vA,{swatch:(0,W.jsx)(`span`,{className:`h-2 w-0.5 bg-foreground`,"aria-hidden":!0}),children:(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`span`,{className:`inline-flex cursor-default items-center gap-0.5`}),children:[`Quota boundary`,(0,W.jsx)(Cr,{className:`h-3 w-3`,"aria-hidden":!0})]}),(0,W.jsxs)(h,{className:`max-w-64 space-y-2`,children:[(0,W.jsx)(`p`,{children:`Not a hard limit — just an indication of whether you're over- or under-consuming. It's calculated as a pro-rated share of the weekly limit.`}),(0,W.jsx)(`p`,{children:`If your usage matches the quota boundary, then you're spending exactly what the week's pace allows.`}),(0,W.jsx)(`p`,{children:`Fun fact: the quota boundary is shown exactly at the current time in the week usage bar above.`})]})]})})]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[f&&(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`span`,{className:`inline-flex cursor-default items-center gap-0.5 text-warning`}),children:[`⚠️ Eager consumption`,(0,W.jsx)(Cr,{className:`h-3 w-3`,"aria-hidden":!0})]}),(0,W.jsxs)(h,{children:[`Autonomous AI will spend tokens `,ne(d),` faster than the week's pace allows`]})]}),s&&(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`span`,{className:`cursor-default`}),children:u?(0,W.jsxs)(W.Fragment,{children:[`✅ Autonomous AI `,(0,W.jsx)(`em`,{children:`enabled`}),` `,(0,W.jsx)(`small`,{className:`text-muted-foreground/70`,children:`move slider to the left to disable`})]}):(0,W.jsxs)(W.Fragment,{children:[`❌ Autonomous AI `,(0,W.jsx)(`em`,{children:`disabled`}),` `,(0,W.jsx)(`small`,{className:`text-muted-foreground/70`,children:`move slider to the right to enable`})]})}),(0,W.jsx)(h,{className:`max-w-64`,children:u?`Autonomous AI enabled means that unattended work may start on its own while the account is under the line.`:`Autonomous AI disabled means that no agent starts on its own — every new agentic work is triggered by you manually.`})]})]})]})]})}function bA({window:e}){return(0,W.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 text-xs`,children:[(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:e.label}),(0,W.jsxs)(`span`,{className:`text-muted-foreground`,children:[Math.round(e.percentUsed),`% used`,e.resetsAtText?`${hA}resets ${e.resetsAtText}`:``]})]})}function xA({window:e}){return(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`td`,{className:`pr-3 align-baseline text-muted-foreground`,children:e.label}),(0,W.jsxs)(`td`,{className:`whitespace-nowrap align-baseline text-muted-foreground`,children:[Math.round(e.percentUsed),`% used`,e.resetsAtText?`${hA}resets ${e.resetsAtText}`:``]})]})}function SA(e){switch(e.unavailable){case void 0:return;case`no-subscription`:return`This account has no subscription usage to report, so there is no boundary to measure against.`;case`agent-not-found`:return`Claude Code was not found, so usage cannot be read.`;case`unrecognized`:return e.windows.length?`Claude Code's latest usage readout wasn't one this version recognizes, so these numbers are from the reading before it.`:`Claude Code reported its usage in a way this version does not recognize. Trying again shortly.`;default:return e.windows.length?`Couldn't refresh just now, so these numbers may be a little behind.`:`Reading your usage now.`}}var CA=500;function wA(e,t){let[n,r]=(0,U.useState)(e),[i,a]=(0,U.useState)(),o=(0,U.useRef)(null),s=(0,U.useRef)(void 0);return(0,U.useEffect)(()=>{e!==void 0&&(o.current!==null&&o.current!==e||(o.current=null,r(e)))},[e]),(0,U.useEffect)(()=>()=>clearTimeout(s.current),[]),[n,n=>{r(n),a(void 0),o.current=n,clearTimeout(s.current),s.current=setTimeout(()=>{t(n).then(t=>{t.ok||o.current!==n||(o.current=null,a(t.error),e!==void 0&&r(e))})},CA)},i]}function TA({limit:e,projects:t,boundary:n,percentUsed:r,others:i}){let a=Le(),o=t.map(e=>e.id).join(`,`),{value:s}=Ie(()=>e.read(a,t),void 0,1e4,[e.package,o]),[c,l,u]=wA(s,n=>e.save(a,t,n));return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(yA,{boundary:n,percentUsed:r,...c===void 0?{}:{offset:c,onChangeOffset:l},others:i}),u&&(0,W.jsxs)(`p`,{role:`alert`,className:`text-xs text-danger`,children:[`The limit was not saved: `,u]})]})}function EA({projects:e}){let t=rA(),{usageLimit:n}=_e(),r=t?SA(t):void 0,i=t?.unavailable!==void 0&&t.windows.length>0?t.readAt:void 0,a=t?gA(t.windows):void 0,o=t?.windows??[];return(0,W.jsxs)(R,{children:[(0,W.jsx)(y,{children:(0,W.jsx)(E,{className:`text-base`,children:`Usage`})}),(0,W.jsxs)(le,{className:`space-y-4`,children:[!t&&(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Reading your usage…`}),t?.boundary&&a?n?(0,W.jsx)(ZT,{package:n.package,label:`usage limit`,children:(0,W.jsx)(TA,{limit:n,projects:QT(n.projects,e),boundary:t.boundary,percentUsed:a.percentUsed,others:o})}):(0,W.jsx)(yA,{boundary:t.boundary,percentUsed:a.percentUsed,others:o}):t&&t.windows.length?(0,W.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:_A(a,o)}):null,!(t?.boundary&&a)&&o.length?(0,W.jsx)(`div`,{className:`space-y-1 border-t border-border pt-3`,children:o.map(e=>(0,W.jsx)(bA,{window:e},e.label))}):null,r?(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[r,i===void 0?``:` Last read ${s(new Date(i).toISOString())}.`]}):null]})]})}var DA=`/update-tickets`;function OA({busy:e,onStart:t,onConfigure:n,lastImportedAt:r,disabled:i,variant:a,size:o=`sm`,className:s}){return(0,W.jsx)(dt,{...a?{variant:a}:{},size:o,...i===void 0?{}:{disabled:i},...s?{className:s}:{},icon:(0,W.jsx)(Zr,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),label:`Update tickets`,menuAriaLabel:`Other ways to update the tickets`,tooltip:r?`Bring tickets/ up to date with the issues and comments changed since the last import.`:`Bring tickets/ up to date with the issue tracker. With no import on record, everything open comes across.`,busy:e,starting:e,onStart:t,onConfigure:n,prompt:DA,configureDescription:`Opens the launcher with the update prompt, so you can set the model and where it runs.`})}function kA({dismissible:e=!1,onAgentStarted:t,onSelectProject:n}){let{value:r,reload:i}=Ie(jn,null,1e4,[]),{value:a,reload:o}=Ie(dr,null,3e4,[]),s=dn(),c=ha(),{start:l,busy:u,error:d}=Fa(),[f,p]=(0,U.useState)(null),m=a?.cwdProjectId??r?.projects[0]?.projectId??null,_=r?.totals.projects??0,v=r?.projects.some(e=>e.hasTickets)??!1,b=c===`granted`&&hn(s),x=()=>{cn({notifyBrowser:!0}),c==="default"&&Notification.requestPermission()},S=async()=>{if(!m)return;let e=await l(m,DA,ja(s));e&&t(m,DA,e.agentId)},C=a?.cwd&&!a.cwdProjectId?a.cwd:void 0,w=[{key:`project`,label:`Add a project`,description:r&&_===0?(0,W.jsx)(Ei,{}):`A project is a git repo OpenAgent may work in.`,done:_>0,action:(0,W.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2`,children:[C&&(0,W.jsx)(z,{size:`sm`,className:`h-auto min-h-8 max-w-full whitespace-normal py-1 text-left [overflow-wrap:anywhere]`,onClick:()=>p({folder:C}),children:`Add ${C} as project…`}),a?.canPickFolder!==!1&&(0,W.jsx)(z,{size:`sm`,variant:`outline`,onClick:()=>p({}),children:`Select & add project directory`}),(0,W.jsx)(z,{size:`sm`,variant:`outline`,onClick:()=>p({fromAddress:!0}),children:`Add from a GitHub address`})]})},...(r?.queue.length??0)>0?[{key:`todos`,label:`Populate the queue of AI tasks`,description:`The agent queue: each entry is work the agent picks up on its own, so a filled queue is what lets it keep going without you.`,done:(r?.totals.openTodos??0)>0}]:[],...r?.projects.some(e=>e.providesTickets)?[{key:`tickets`,label:`Populate tickets/`,description:`tickets/ holds the bigger things to work on, in the repo. The agent researches and plans them, and they are the input the queue is filled from.`,done:v,optional:!0,action:(0,W.jsxs)(`div`,{className:`flex flex-col items-end gap-1`,children:[(0,W.jsx)(OA,{variant:`default`,busy:u,disabled:!m,onStart:()=>void S(),onConfigure:()=>m&&n(m)}),!m&&(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Add a project first`}),d&&(0,W.jsx)(`span`,{className:`text-xs text-destructive`,children:d})]})}]:[],{key:`browser-notification`,label:`Add browser notifications`,description:`Desktop pings while the dashboard is open, so a session waiting on you does not sit unnoticed.`,done:b,optional:!0,action:c===`denied`?(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Blocked in your browser settings`}):c===`unsupported`?(0,W.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Not supported by this browser`}):(0,W.jsx)(z,{size:`sm`,variant:`outline`,onClick:x,children:`Enable`})}],T=w.filter(e=>e.done).length;return(0,W.jsxs)(R,{children:[(0,W.jsxs)(y,{className:`flex flex-row items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(E,{className:`text-base`,children:`Onboarding`}),(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[T,` of `,w.length,` set up.`]})]}),e&&(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(z,{variant:`ghost`,size:`sm`,onClick:()=>cn({onboardingDismissed:!0}),"aria-label":`Remove, you can resume the onboarding on the settings page`}),children:(0,W.jsx)(Je,{className:`h-4 w-4`,"aria-hidden":!0})}),(0,W.jsx)(h,{children:`Remove, you can resume the onboarding on the settings page`})]})]}),(0,W.jsx)(le,{children:(0,W.jsx)(`ul`,{className:`divide-y divide-border`,children:w.map(e=>(0,W.jsxs)(`li`,{className:`flex flex-wrap items-start justify-between gap-x-4 gap-y-2 py-3 first:pt-0 last:pb-0`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 grow basis-96 items-start gap-3`,children:[e.done?(0,W.jsx)(ei,{className:`mt-0.5 h-4 w-4 shrink-0 text-[var(--color-primary)]`,"aria-label":`Done`}):(0,W.jsx)(ti,{className:`mt-0.5 h-4 w-4 shrink-0 text-muted-foreground`,"aria-label":`Not done`}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`p`,{className:e.done?`text-sm text-muted-foreground line-through`:`text-sm`,children:[e.label,e.optional&&(0,W.jsx)(`span`,{className:`ml-2 rounded-full border border-border px-1.5 py-0.5 align-middle text-[10px] font-normal uppercase tracking-wide text-muted-foreground`,children:`Optional`})]}),typeof e.description==`string`?(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.description}):(0,W.jsx)(`div`,{className:`mt-1`,children:e.description})]})]}),!e.done&&e.action&&(0,W.jsx)(`div`,{className:`max-w-full shrink-0`,children:e.action})]},e.key))})}),f&&(0,W.jsx)(Di,{folder:f.folder,fromAddress:f.fromAddress===!0,onAdded:()=>{i(),o()},onClose:()=>p(null)})]})}function AA({working:e,onSelectAgent:t}){return(0,W.jsxs)(R,{children:[(0,W.jsx)(y,{children:(0,W.jsxs)(E,{className:`flex items-center gap-2 text-base`,children:[(0,W.jsx)(yr,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),`Agents`,(0,W.jsx)(`span`,{className:`truncate text-xs font-normal text-muted-foreground`,children:`Agents currently working`})]})}),(0,W.jsx)(le,{children:(0,W.jsx)(`ul`,{className:`space-y-0.5`,children:e.map(e=>(0,W.jsx)(jA,{label:MA(e),cloud:e.cloud,host:e.host,at:e.updatedAt,projectName:e.projectName,onOpen:()=>t(e.projectId,e.agentId)},`${e.projectId}:${e.agentId}`))})})]})}function jA({label:e,cloud:t,host:n,at:r,projectName:i,onOpen:a}){return(0,W.jsx)(`li`,{children:(0,W.jsxs)(`button`,{type:`button`,onClick:a,className:`flex w-full items-baseline gap-2 rounded-md px-2 py-1.5 text-left hover:bg-accent focus-visible:bg-accent focus-visible:outline-none`,children:[(0,W.jsx)(`span`,{"aria-hidden":!0,className:`shrink-0 text-muted-foreground/50`,children:`•`}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm`,children:e}),t&&(0,W.jsx)(`span`,{className:`shrink-0 text-[10px] uppercase text-muted-foreground`,children:t===`waiting`?`waiting`:`in cloud`}),(0,W.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:i}),n&&(0,W.jsxs)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:[`from `,n]}),r&&(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`span`,{className:`shrink-0 whitespace-nowrap text-xs tabular-nums text-muted-foreground/80`}),children:T(r)}),(0,W.jsx)(h,{children:me(r)})]})]})})}function MA(e){return e.intent?.trim()||e.scope?.trim()||e.projectName}function NA({projects:e}){let{cards:t}=_e();return(0,W.jsx)(W.Fragment,{children:t.map(t=>{let n=t.Card,r=QT(t.projects,e);return r.length===0?null:(0,W.jsx)(ZT,{package:t.package,label:`${t.id} card`,children:(0,W.jsx)(n,{projects:r})},`${t.package}/${t.id}`)})})}function PA({onSelectProject:e,onSelectAgent:t,onAgentStarted:n,interventions:r,projects:i,scope:a}){let{value:o}=Ie(jn,null,5e3,[]),s=dn().onboardingDismissed??!1,c=(o?.active??[]).filter(e=>a===null||e.projectId===a),l=a===null?i:i.filter(e=>e.id===a);return(0,W.jsx)(ce,{className:`min-h-0 flex-1`,children:(0,W.jsxs)(`div`,{className:`mx-auto max-w-6xl space-y-6 p-6`,children:[!s&&(0,W.jsx)(kA,{dismissible:!0,onAgentStarted:n,onSelectProject:e}),(0,W.jsx)(EA,{projects:i}),(0,W.jsxs)(`div`,{className:L(`grid grid-cols-[minmax(0,1fr)] items-start gap-4`,c.length>0&&`lg:grid-cols-2`),children:[(0,W.jsx)(FA,{items:r,onSelectProject:e,onSelectAgent:t}),c.length>0&&(0,W.jsx)(AA,{working:c,onSelectAgent:t})]}),(0,W.jsx)(`div`,{className:`gap-4 lg:columns-2 [&>*]:mb-4 [&>*]:break-inside-avoid`,children:(0,W.jsx)(NA,{projects:l})})]})})}function FA({items:e,onSelectProject:t,onSelectAgent:n}){let r=e=>e.agentId?n(e.projectId,e.agentId):t(e.projectId);return(0,W.jsxs)(R,{children:[(0,W.jsxs)(y,{children:[(0,W.jsxs)(E,{className:`flex items-center gap-2 text-base`,children:[(0,W.jsx)(Lr,{className:`h-4 w-4 text-muted-foreground`}),`Human Queue`,e.length>0&&(0,W.jsx)(`span`,{className:`rounded-full bg-primary px-1.5 text-xs font-semibold text-primary-foreground tabular-nums`,children:e.length})]}),(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Agents awaiting your approval, review, or input`})]}),(0,W.jsx)(le,{children:e.length===0?(0,W.jsx)(`p`,{className:`py-2 text-sm text-muted-foreground`,children:`AI doesn't need you.`}):(0,W.jsx)(`ul`,{className:`divide-y divide-border`,children:e.map(e=>(0,W.jsx)(`li`,{children:e.kind===`awaiting`?(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(e),className:`flex w-full items-center gap-2.5 py-2 text-left hover:opacity-80`}),children:[(0,W.jsx)(Wr,{className:`h-4 w-4 shrink-0 text-warning`}),(0,W.jsx)(`span`,{className:`shrink-0 text-xs font-medium text-warning`,children:`Awaiting`}),(0,W.jsx)(`span`,{className:`truncate text-sm font-medium`,children:e.title}),(0,W.jsx)(`span`,{className:`ml-auto shrink-0 text-xs text-muted-foreground`,children:e.projectName})]}),(0,W.jsx)(h,{children:`Open the agent to answer`})]}):e.kind===`unpushed`?(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(e),className:`flex w-full items-center gap-2.5 py-2 text-left hover:opacity-80`}),children:[(0,W.jsx)(Nr,{className:`h-4 w-4 shrink-0 text-info`}),(0,W.jsx)(`span`,{className:`shrink-0 text-xs font-medium text-info`,children:`Not published`}),(0,W.jsx)(`span`,{className:`truncate text-sm font-medium`,children:e.title}),e.commits!==void 0&&e.commits>0&&(0,W.jsx)(`span`,{className:`shrink-0 text-xs tabular-nums text-muted-foreground`,children:e.commits===1?`1 commit`:`${e.commits} commits`}),(0,W.jsx)(`span`,{className:`ml-auto shrink-0 text-xs text-muted-foreground`,children:e.projectName})]}),(0,W.jsx)(h,{children:`Open the session: work on ${e.branch??``} is not published`})]}):(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,className:`flex items-center gap-2.5 py-2 hover:opacity-80`}),children:[(0,W.jsx)(Fr,{className:`h-4 w-4 shrink-0 text-success`}),(0,W.jsxs)(`span`,{className:`shrink-0 text-xs font-medium tabular-nums text-muted-foreground`,children:[`#`,e.number]}),(0,W.jsx)(`span`,{className:`truncate text-sm font-medium`,children:e.title}),(0,W.jsx)(`span`,{className:`ml-auto shrink-0 text-xs text-muted-foreground`,children:e.projectName})]}),(0,W.jsx)(h,{children:`Open PR #${e.number}`})]})},Ft(e)))})})]})}function IA({projects:e}){let{settings:t}=_e();return(0,W.jsx)(W.Fragment,{children:t.map(t=>{let n=t.Section;return(0,W.jsx)(ZT,{package:t.package,label:`${t.id} settings`,children:(0,W.jsx)(n,{projects:QT(t.projects,e)})},`${t.package}/${t.id}`)})})}function LA({enabled:e,onChange:t}){let[n,r]=(0,U.useState)(null),[i,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(!1);return(0,U.useEffect)(()=>{if(!e){s(null),l(!1);return}let t=!0,n=()=>void Ln().then(e=>{t&&(s(e.version?.blocked?{got:e.version.got,expected:e.version.expected}:null),l(e.lastContact?.status===401))}).catch(()=>{});n();let r=setInterval(n,5e3);return()=>{t=!1,clearInterval(r)}},[e]),(0,U.useEffect)(()=>{if(!e){r(null),a(!1);return}let t=!0;return Rn().then(e=>{t&&r(e)}).catch(()=>{}),()=>{t=!1}},[e]),e?(0,W.jsxs)(`div`,{className:`mt-2 space-y-2 rounded-md border border-border bg-muted/30 p-3 text-xs`,children:[(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`Install the browser extension, open its options, and paste this token. It reports the question a Claude web session is parked on, so it shows up here instead of only on claude.ai.`}),o&&(0,W.jsxs)(`p`,{className:`text-danger`,children:[`The extension is blocked: it is v`,o.got,` and this dashboard expects v`,o.expected,`. Update it — pull the repo, then reload the extension at chrome://extensions.`]}),!o&&c&&(0,W.jsx)(`p`,{className:`text-danger`,children:`Something is calling the bridge with a token this dashboard rejects, so the calls get nowhere. Open the extension's options and save the token shown below again.`}),n===null?(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`Restart the dashboard to generate the token.`}):(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(`code`,{className:`min-w-0 flex-1 truncate rounded bg-muted px-2 py-1 font-mono`,children:i?n:`•`.repeat(24)}),(0,W.jsx)(z,{variant:`outline`,size:`sm`,onClick:()=>a(e=>!e),children:i?`Hide`:`Reveal`}),(0,W.jsx)(Oe,{text:n,label:`Copy the bridge token`})]})]}):null}function RA({enabled:e}){let[t,n]=(0,U.useState)(null);if((0,U.useEffect)(()=>{if(!e){n(null);return}let t=!0,r=()=>void Vn().then(e=>{t&&n(e)}).catch(()=>{});r();let i=setInterval(r,3e3);return()=>{t=!1,clearInterval(i)}},[e]),!e||!t)return null;let r=e=>void Kn(e).catch(()=>{});return(0,W.jsxs)(`div`,{className:`mt-2 space-y-2 rounded-md border border-border bg-muted/30 p-3 text-xs`,children:[t.state===`off`&&(0,W.jsx)(`p`,{className:`text-muted-foreground`,children:`The bridge browser is off.`}),t.state===`starting`&&(0,W.jsxs)(`p`,{className:`text-muted-foreground`,children:[`Starting the bridge browser: `,t.detail,`.`]}),t.state===`stopped`&&(0,W.jsxs)(`p`,{className:`text-danger`,children:[`The bridge browser is not running: `,t.detail,`.`,` `,(0,W.jsx)(z,{variant:`outline`,size:`sm`,onClick:()=>r(`restart`),children:`Restart`})]}),t.state===`running`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`p`,{className:`text-muted-foreground`,children:[`The bridge browser is running`,t.visible?` with its window shown`:`, minimized`,`.`,t.signIn&&` It is on claude.ai’s sign-in page: show the window and sign in once, then hide it again.`]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[t.visible?(0,W.jsx)(z,{variant:`outline`,size:`sm`,onClick:()=>r(`hide`),children:`Hide the window`}):(0,W.jsx)(z,{variant:`outline`,size:`sm`,onClick:()=>r(`show`),children:t.signIn?`Show the window to sign in`:`Show the window`}),(0,W.jsx)(z,{variant:`outline`,size:`sm`,onClick:()=>r(`restart`),children:`Restart`})]})]})]})}function zA({onAgentStarted:e,onSelectProject:t}){let n=dn(),r=qe(rr,[],[]),i=HT(),a=pn(n),o=ct(Ze()),s=n.driver??I[0],c=n.model??``,l=ha()===`denied`;return(0,W.jsx)(ce,{className:`min-h-0 flex-1`,children:(0,W.jsxs)(`div`,{className:`mx-auto max-w-4xl space-y-6 p-6 max-md:p-4`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Settings`}),(0,W.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Your defaults, everywhere.`})]}),(0,W.jsx)(kA,{onAgentStarted:e,onSelectProject:t}),(0,W.jsxs)(lt,{title:`Appearance`,children:[(0,W.jsx)(we,{label:`Theme`,description:`Follow the system, or pin light or dark.`,value:a,options:[{value:`system`,label:`System`},{value:`light`,label:`Light`},{value:`dark`,label:`Dark`}],onChange:e=>cn({theme:e})}),(0,W.jsx)(we,{label:`Editor`,description:`Which editor “Open in editor” launches.`,value:n.editor??``,options:[{value:``,label:`Auto-detect`},...i.map(e=>({value:e.bin,label:e.label}))],onChange:e=>cn({editor:e})})]}),(0,W.jsxs)(lt,{title:`Agent`,children:[(0,W.jsx)(we,{label:`Agent`,description:`Which coding agent runs the work.`,value:s,options:o,onChange:e=>cn({driver:e,model:``})}),(0,W.jsx)(we,{label:`Model`,description:`The models the agent lists. Its own default when none is picked.`,value:c,options:HA(o.find(e=>e.value===s),c),onChange:e=>cn({model:e})}),(0,W.jsx)(VA,{label:`Name each run`,description:`A small model is asked for the two to five words a run's row shows, in place of the first line of your prompt. One short turn with no tools, about a thirtieth of a cent a run. Off, a run is listed by what you asked for.`,checked:n.nameRuns??!0,onChange:e=>cn({nameRuns:e})}),(0,W.jsx)(VA,{label:`Show what the agent thought`,description:`Inside a run of steps, a row for each thought between them. Off, the panel is the steps the agent took and nothing else.`,checked:n.showThinking??!1,onChange:e=>cn({showThinking:e})}),(0,W.jsx)(VA,{label:`Post-merge cleanup`,description:`The box in the launcher's Auto menu, ticked by default: once a run ends done with a pull request, a fresh agent runs /post-merge-cleanup on its branch before it merges. In projects with that command.`,checked:n.postMergeCleanup??!1,onChange:e=>cn({postMergeCleanup:e})})]}),(0,W.jsxs)(lt,{title:`Notifications`,children:[(0,W.jsx)(VA,{label:`Browser`,description:l?`Blocked in your browser settings`:`Desktop notifications while the dashboard is open.`,checked:(n.notifyBrowser??!0)&&!l,disabled:l,onChange:e=>cn({notifyBrowser:e})}),(0,W.jsx)(VA,{label:`Human Queue`,description:`An agent awaiting your answer, or a PR ready to review.`,checked:n.notifyHumanIntervention??!0,onChange:e=>cn({notifyHumanIntervention:e})}),(0,W.jsx)(VA,{label:`New activity`,description:`Also ping when an agent starts or finishes.`,checked:n.notifyNewActivity??!1,onChange:e=>cn({notifyNewActivity:e})})]}),(0,W.jsxs)(lt,{title:`Claude web`,description:`A Claude web agent hands off and ends, so the questions its session asks never reach this dashboard. The browser bridge carries them back and types your answers into the session.`,children:[(0,W.jsx)(VA,{label:`Browser bridge`,description:`Carry claude.ai questions into this dashboard and type your answers back. A browser signed in to claude.ai does the work, through the bridge extension.`,checked:n.bridge??!1,onChange:e=>cn({bridge:e})}),(n.bridge??!1)&&(0,W.jsx)(BA,{daemonBrowser:n.bridgeBrowser??!1,onChange:e=>cn({bridgeBrowser:e})})]}),(0,W.jsx)(IA,{projects:r})]})})}function BA({daemonBrowser:e,onChange:t}){let n=(0,U.useId)(),r=(t,n,r,i)=>(0,W.jsxs)(`label`,{className:L(`flex cursor-pointer gap-3 rounded-md border p-3`,e===t?`border-primary/60 bg-muted/20`:`border-border`),children:[(0,W.jsx)(se,{value:t?`daemon`:`own`,"aria-label":n,className:`mt-1`}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`span`,{className:`block text-sm font-medium`,children:n}),(0,W.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:r}),e===t&&i]})]});return(0,W.jsxs)(`div`,{className:`mt-3`,children:[(0,W.jsx)(`p`,{id:n,className:`mb-2 text-sm font-medium`,children:`Which browser does the work?`}),(0,W.jsxs)(S,{"aria-labelledby":n,value:e?`daemon`:`own`,onValueChange:e=>t(e===`daemon`),children:[r(!0,`A browser the daemon runs — recommended`,`Chrome for Testing, downloaded once, signed in once, kept minimized. Web runs work with your own Chrome closed.`,(0,W.jsx)(RA,{enabled:!0})),r(!1,`Your own Chrome`,`Install the extension, open its options and paste the token. Web runs need your Chrome open.`,(0,W.jsx)(LA,{enabled:!0,onChange:()=>{}}))]})]})}function VA({label:e,description:t,checked:n,onChange:r,disabled:i=!1}){return(0,W.jsx)(He,{label:e,description:t,dimmed:i,control:(0,W.jsx)(x,{checked:n,disabled:i,onCheckedChange:e=>r(e===!0),"aria-label":e})})}function HA(e,t){let n=e?.models??[];return[{value:``,label:Gw},...n,...t&&!n.some(e=>e.value===t)?[{value:t,label:t}]:[],...n.length===0&&e?.modelsNote?[{value:e.modelsNote,label:e.modelsNote,disabled:!0}]:[]]}var UA=15e3,WA=1e4,GA=1e3;function KA(e){return e?e.landed?!0:e.exists?!e.empty||e.commits.length>0||!!e.pendingFiles?.length:!e.unchanged:!1}function qA(e,t,n=!0,r=!1,i=!1){let a=t?`handoff:${e}:${t}`:void 0;(0,U.useEffect)(()=>{i&&a!==void 0&&Ae(a)},[i,a]);let[o,s]=(0,U.useState)(!1),c=(0,U.useRef)(i);(0,U.useEffect)(()=>{c.current&&!i&&s(!0),c.current=i},[i]),(0,U.useEffect)(()=>{if(!o)return;let e=setTimeout(()=>s(!1),WA);return()=>clearTimeout(e)},[o]);let[l,u]=(0,U.useState)(UA),{value:d,reload:f,loaded:p}=Ie(n&&t?()=>Fn(e,t):null,null,l,[e,t,n,l,r],a===void 0?void 0:{remember:a});(0,U.useEffect)(()=>u(d?.prPending?300:o?GA:UA),[d?.prPending,o]),(0,U.useEffect)(()=>{o&&KA(d)&&s(!1)},[o,d]);let{busy:m,error:h,run:g}=tt(),[_,v]=(0,U.useState)(null);return{handoff:d,loaded:p,busy:m,error:h,pending:_,act:(e,t,n)=>{v(e),g(t,n).then(e=>e.ok?f():void 0).then(()=>v(null))}}}function JA(e,t,n){let[r,i]=(0,U.useState)(1e4),{value:a,reload:o}=Ie(()=>Sn(e,t),null,r,[e,t,r],{remember:`worktree:${e}:${t}`});(0,U.useEffect)(()=>i(a?.prPending?300:1e4),[a?.prPending]);let s=(0,U.useRef)({key:``,turn:n});return(0,U.useEffect)(()=>{let r=`${e}\0${t}`,i=s.current.key===r&&s.current.turn!==n;s.current={key:r,turn:n},i&&o()},[e,t,n,o]),a}function YA({projectId:e,agentId:t,events:n,retainedWorktree:r=!1,onWorktreeRemoved:i,onDeleted:a,label:o,projectName:s,runsOn:c=Yw(),expanded:l=!1,onToggle:u,ready:d=!0,checkout:f}){let p=d?jt(f?.checkout?.sizeBytes,``):``;return(0,W.jsxs)(`div`,{className:`@container flex min-h-11 items-center gap-2 overflow-hidden py-2 pr-2 md:pl-4 max-md:pl-11`,children:[(0,W.jsx)(kk,{}),(0,W.jsx)(JT,{projectId:e,agentId:t,events:n,label:o,retainedWorktree:r,onWorktreeRemoved:i,onDeleted:a,...u?{details:{open:l,onToggle:u}}:{},size:p}),(0,W.jsx)(`span`,{"data-testid":`runs-on`,className:`max-w-64 shrink-0 truncate rounded bg-muted px-1.5 py-0.5 text-[11px] text-muted-foreground @max-md:hidden`,title:s?`${c} · ${s}`:c,children:s?`${c} · ${s}`:c}),(0,W.jsx)(`div`,{className:`grow shrink-0`}),d&&(0,W.jsx)(qk,{events:n}),(0,W.jsx)(Ok,{})]})}function XA({projectId:e,agentId:t,live:n,files:r,onAgentStarted:i,onSending:a,onQueued:o,outcome:s,model:c,context:l}){let u=(0,U.useRef)(null),{busy:d,error:f,run:p}=tt(),{busy:m,error:_,run:v}=tt(),[y,b]=(0,U.useState)(!1);(0,U.useEffect)(()=>b(!1),[t]),(0,U.useEffect)(()=>{n||b(!1)},[n]);let[x,S]=(0,U.useState)(!1);(0,U.useEffect)(()=>S(!1),[t]),(0,U.useEffect)(()=>{n&&S(!1)},[n]);let C=m||y&&n,w=async r=>{let s=n;return s||a?.(r),(await p(()=>qn(e,r,t),`Could not send. Your text is kept, try again.`)).ok?(s?o?.(r):i?.(r,t),!0):(s||a?.(null),!1)},T=async e=>{d||(await w(e)&&u.current?.clear(),u.current?.focus())},E=()=>void v(()=>Hn(e,t).then(()=>!0),`Could not stop the agent.`).then(e=>{e&&b(!0)}),D=async()=>{d||await w(`This session was stopped before it finished, not because the work was done. Look at what you had already done, then carry on from there.`)&&S(!0)},O=n?(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(z,{type:`button`,size:`icon-sm`,onClick:E,disabled:C,"aria-label":`Stop agent`,className:`h-8 w-8 shrink-0 disabled:opacity-100`}),children:C?(0,W.jsx)(nt,{className:`h-4 w-4 animate-spin`}):(0,W.jsx)(ti,{className:`h-3 w-3 fill-current`})}),(0,W.jsx)(h,{children:C?`Stopping…`:`Stop agent`})]}):s?.stopped||x?(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(z,{type:`button`,size:`icon-sm`,onClick:()=>void D(),disabled:d||x,"aria-label":`Resume`,className:`h-8 w-8 shrink-0 disabled:opacity-100`}),children:d||x?(0,W.jsx)(nt,{className:`h-4 w-4 animate-spin`}):(0,W.jsx)(Jr,{className:`h-3.5 w-3.5 fill-current`})}),(0,W.jsx)(h,{children:d||x?`Resuming…`:`Resume the agent`})]}):void 0,k=f??_;return(0,W.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl p-2`,children:[k&&(0,W.jsx)(`p`,{role:`alert`,className:`mb-1 px-2 text-xs text-danger`,children:k}),(0,W.jsx)(oT,{ref:u,files:r,onSubmit:T,busy:d,submitLabel:`Send`,submitBusyLabel:n?`Sending…`:`Resuming…`,showDriverModel:!1,inAgent:!0,sessionModel:c,sessionContext:l,idleControl:O,placeholder:n?`Send now, and the agent reads it when its turn ends`:`Message the agent to continue it…`})]})}function ZA({projectName:e,checkout:t,summary:n,actions:r,show:i,state:a}){let o=t?.branch,s=a??`${o??``}|${t?.pr?.number??``}|${t?.pr?.state??``}`,[c,l]=(0,U.useState)(null);return o===void 0||!i||c===s?null:(0,W.jsx)(`div`,{className:`mx-auto w-full max-w-3xl px-2 pt-2`,children:(0,W.jsxs)(`div`,{role:`group`,"aria-label":`This agent's work`,className:`flex items-center overflow-hidden rounded-[10px] bg-muted px-2 text-[13px] md:h-10 md:gap-2 max-md:min-h-10 max-md:flex-wrap max-md:gap-x-2 max-md:gap-y-1 max-md:py-1.5`,children:[e&&(0,W.jsx)(`span`,{className:`max-w-32 shrink-0 truncate text-muted-foreground`,title:e,children:e}),(0,W.jsx)(`span`,{className:`flex min-w-0 items-center text-muted-foreground`,children:(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`span`,{className:`truncate font-mono`}),children:o}),(0,W.jsx)(h,{className:`whitespace-pre-line`,children:[o,t?.checkout?.path].filter(Boolean).join(`
133
+ `)})]})}),(0,W.jsx)(`div`,{className:`grow`}),(0,W.jsx)(`span`,{className:`shrink-0`,children:n}),t?.pr&&(0,W.jsxs)(g,{children:[(0,W.jsxs)(V,{render:(0,W.jsx)(`a`,{href:t.pr.url,target:`_blank`,rel:`noreferrer`,className:`flex shrink-0 items-center gap-1.5 text-primary hover:underline`}),children:[(0,W.jsxs)(`span`,{children:[`PR #`,t.pr.number]}),(0,W.jsx)(`span`,{className:`rounded-full border border-border px-1.5 text-[10px] uppercase text-muted-foreground`,children:t.pr.state.toLowerCase()})]}),(0,W.jsx)(h,{children:t.pr.title})]}),(0,W.jsx)(`div`,{className:`flex items-center gap-2 md:shrink-0 max-md:min-w-0 max-md:flex-wrap`,children:r}),(0,W.jsx)(`button`,{type:`button`,"aria-label":`Hide this bar`,title:`Hide this bar`,onClick:()=>l(s),className:`flex h-6 w-6 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)]`,children:(0,W.jsx)(Je,{className:`h-3.5 w-3.5`})})]})})}function QA({top:e,bottom:t,children:n}){let r=(0,U.useRef)(null),i=(0,U.useRef)(null),a=(0,U.useRef)(null);return(0,U.useLayoutEffect)(()=>{let e=()=>{let e=r.current.style;e.setProperty(`--chat-bottom`,`${i.current.getBoundingClientRect().height}px`),e.setProperty(`--chat-scroll-bar`,`${a.current.offsetWidth-a.current.clientWidth}px`)};if(e(),typeof ResizeObserver>`u`)return;let t=new ResizeObserver(e);for(let e of[i,a])t.observe(e.current);return()=>t.disconnect()},[]),(0,W.jsxs)(`div`,{ref:r,"data-testid":`chat-pane`,className:`flex min-h-0 flex-1 flex-col`,children:[(0,W.jsx)(`div`,{"data-testid":`chat-top`,className:`shrink-0`,children:e}),(0,W.jsxs)(`div`,{className:`relative isolate flex min-h-0 flex-1 flex-col overflow-hidden`,children:[(0,W.jsx)(`div`,{ref:a,className:`scrollbar-thin invisible absolute h-0 w-8 overflow-y-scroll`,"aria-hidden":!0}),n,(0,W.jsx)(`div`,{ref:i,"data-testid":`chat-bottom`,className:`absolute right-(--chat-scroll-bar) bottom-0 left-0 z-10 max-h-full overflow-y-auto bg-background`,children:t}),(0,W.jsx)(`div`,{className:`pointer-events-none absolute top-0 right-(--chat-scroll-bar) left-0 z-10 h-4 bg-gradient-to-b from-background to-transparent`,"aria-hidden":!0}),(0,W.jsx)(`div`,{className:`pointer-events-none absolute right-(--chat-scroll-bar) bottom-(--chat-bottom) left-0 z-10 h-4 bg-gradient-to-t from-background to-transparent`,"aria-hidden":!0})]})]})}function $A({children:e}){return(0,W.jsx)(`div`,{className:`grid flex-1 place-items-center pb-(--chat-bottom) text-sm text-muted-foreground`,children:e})}function ej(e){let t=/^You paused to ask: "([\s\S]*)"\. The user chose: ([\s\S]*)\. Continue with that decision\.$/.exec(e);return t?{question:t[1],answer:t[2]}:void 0}function tj(e){switch(e.kind){case`end`:return e.stopped?{said:`Stopped`}:!e.ok&&!e.waiting?{said:`Failed — ${e.detail??`unknown error`}`}:void 0;case`error`:return{said:e.headline,...e.detail!==void 0&&e.detail!==``?{detail:e.detail}:{}};case`settled`:return{said:`Done for now — waiting for your next message`};case`branch`:return{said:`Branch`,thing:e.branch};case`pull-request`:return{said:`Pull request`,thing:`#${e.number}`,href:e.url};case`cloud-anchor`:return{said:`Handed off at`,thing:e.sha.slice(0,7)};case`log`:return{said:e.message};case`intent`:return{said:`Asked for`,thing:e.text};case`driver`:return nj(e.event);default:return}}function nj(e){switch(e.type){case`notice`:return{said:e.message};case`error`:return{said:`The agent reported an error`,detail:e.message};case`rate-limit`:{let t=e.limit.window.replace(/_/g,`-`),n=`resets ${new Date(e.limit.resetsAt).toLocaleString()}`;return e.limit.status===`rejected`?{said:`The ${t} quota is used up`,thing:n}:e.limit.status===`allowed_warning`?{said:`The ${t} quota is running low`,thing:n}:void 0}default:return}}function rj({choice:e,pick:t}){let[n,r]=(0,U.useState)(!1),i=new Set(wt(t));return(0,W.jsxs)(`div`,{className:`overflow-hidden rounded-md border border-border`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>r(e=>!e),className:`flex w-full items-baseline gap-2 px-4 py-2 text-left text-xs text-muted-foreground hover:bg-accent/40`,"aria-expanded":n,children:[(0,W.jsx)(`span`,{className:`shrink-0 text-success`,children:`✓`}),(0,W.jsx)(`span`,{className:`truncate font-medium text-foreground`,children:e.title}),(0,W.jsx)(`span`,{className:`ml-auto shrink-0`,children:n?`Collapse`:`Expand`})]}),n&&(0,W.jsx)(`div`,{className:`border-t border-border p-4`,children:(0,W.jsxs)(`ul`,{className:`space-y-1 text-sm`,children:[e.options.map(e=>(0,W.jsxs)(`li`,{className:L(`flex items-baseline gap-2`,i.has(e.id)?``:`text-muted-foreground`),children:[(0,W.jsx)(`span`,{className:L(`w-4 shrink-0`,i.has(e.id)?`text-success`:``),children:i.has(e.id)?`✓`:``}),(0,W.jsx)(`span`,{children:e.label})]},e.id)),i.size===0&&(0,W.jsx)(`li`,{className:`text-muted-foreground`,children:`Accepted none`})]})})]})}function ij({label:e,value:t}){return(0,W.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,W.jsx)(Sr,{className:`h-3.5 w-3.5 shrink-0 text-success`,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`shrink-0 text-foreground`,children:e}),t!==void 0&&(0,W.jsx)(`span`,{className:`truncate`,title:t,children:t})]})}function aj(e,t){return e.workspace===void 0&&e.branch===void 0&&e.driver===void 0&&(!t||e.elsewhere===!0)}function oj({setup:e,live:t,working:n=!1,added:r}){let[i,a]=(0,U.useState)(!1),o=u(e.driver),s=Ze(),c=o?bt[o]:e.driver,l=e.model&&ze(o?s?.[o]:void 0,e.model);if(t){let n=e.branch!==void 0||e.workspace!==void 0?`Starting ${c??`the coding agent`}`:c!==void 0&&!e.elsewhere?`Making the checkout`:`Starting session`;return(0,W.jsxs)(`div`,{role:`status`,className:`flex min-w-0 flex-1 items-center gap-2 font-sans text-sm text-muted-foreground`,children:[(0,W.jsx)(wT,{}),(0,W.jsx)(`span`,{className:`morph-in`,children:(0,W.jsx)(`span`,{className:`text-shimmer`,children:n})},n),t.since!==void 0&&(0,W.jsx)(CT,{since:t.since})]})}return e.workspace===void 0&&e.branch===void 0&&c===void 0?aj(e,n)?null:(0,W.jsx)(`div`,{className:`min-w-0 flex-1 font-sans text-sm text-muted-foreground`,children:`Initialized session`}):(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 font-sans text-sm text-muted-foreground`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>a(e=>!e),"aria-expanded":i,className:`flex items-center gap-1.5 hover:text-foreground`,children:[(0,W.jsx)(`span`,{children:`Initialized session`}),(0,W.jsx)(Xe,{className:L(`h-3.5 w-3.5 shrink-0 transition-transform`,i&&`rotate-90`),"aria-hidden":!0})]}),i&&(0,W.jsxs)(`div`,{className:`mt-1.5 flex flex-col gap-1.5 rounded-lg border border-border px-3 py-2`,children:[e.workspace!==void 0&&(0,W.jsx)(ij,{label:`Made the checkout`,value:e.workspace}),e.branch!==void 0&&(0,W.jsx)(ij,{label:`Made the branch`,value:e.branch}),e.base!==void 0&&(0,W.jsxs)(`div`,{className:`min-w-0 truncate`,title:e.base,children:[`Started from the branch `,(0,W.jsx)(`span`,{className:`text-foreground`,children:e.base}),`, not from the main branch.`]}),c!==void 0&&(0,W.jsx)(ij,{label:`Started ${c}`,...l?{value:l}:{}}),r!==void 0&&(0,W.jsxs)(`div`,{className:`min-w-0`,children:[`Auto adds after each message: `,(0,W.jsxs)(`span`,{className:`text-foreground`,children:[`“`,r,`”`]})]})]})]})}function sj({open:e,onToggle:t,children:n,className:r}){return(0,W.jsxs)(`button`,{type:`button`,onClick:t,"aria-expanded":e,className:L(`flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground`,r),children:[(0,W.jsx)(Xe,{className:L(`h-3.5 w-3.5 shrink-0 transition-transform`,e&&`rotate-90`)}),n]})}function cj({agent:e,doing:t,end:n,onOpen:r}){let i=n?.status??e.status,a=!n&&e.status===`running`,o=!n&&e.endedAt!==void 0?ge(Date.parse(e.endedAt)-Date.parse(wi(e))):void 0,s=n?n.detail:a?t:o;return(0,W.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-baseline gap-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>r?.(e.id),className:`min-w-0 shrink truncate text-left text-foreground hover:underline`,"aria-label":`Open the subagent: ${_i(e)}`,children:[`↳ `,_i(e)]}),(0,W.jsxs)(`span`,{className:L(`flex shrink-0 items-center gap-1.5`,i===`waiting`?`text-muted-foreground`:oi[i]??`text-muted-foreground`),children:[a&&(0,W.jsx)(`span`,{className:`inline-block h-1.5 w-1.5 animate-pulse rounded-full bg-primary`,"aria-hidden":!0}),n?`ended ${i}`:i]}),s&&(0,W.jsx)(`span`,{className:`max-w-[45%] shrink-0 truncate text-muted-foreground`,children:s})]})}function lj({subagents:e,doing:t,onOpen:n}){let[r,i]=(0,U.useState)(!1),a=e.filter(e=>e.status===`running`).length;return a===0?null:(0,W.jsx)(`div`,{className:`border-t border-border py-1.5`,children:(0,W.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl px-4`,children:[(0,W.jsxs)(sj,{open:r,onToggle:()=>i(e=>!e),children:[`Subagents · `,a,` of `,e.length,` running`]}),r&&(0,W.jsx)(`div`,{className:`mt-1 flex flex-col gap-0.5 pl-4 font-mono text-xs`,children:e.map(e=>(0,W.jsx)(cj,{agent:e,doing:t[e.id],onOpen:n},e.id))})]})})}function uj({defaultTagName:e,props:t,render:n,state:r={},stateAttributesMapping:i}){let a=dj(fj(r,i),t);if(!n)return U.createElement(e,a);if(typeof n==`function`)return n(a,r);if(!U.isValidElement(n))return null;let o=n.props,s={...dj(a,o),ref:hj(a.ref,o.ref)};return U.cloneElement(n,s)}function dj(...e){let t={};for(let n of e){if(!n)continue;let e=n;for(let n of Object.keys(e)){let r=e[n];if(r===void 0)continue;let i=t[n];n===`className`?t[n]=[i,r].filter(Boolean).join(` `):n===`style`?t[n]={...i,...r}:n===`ref`?t[n]=hj(i,r):mj(n)&&typeof i==`function`&&typeof r==`function`?t[n]=pj(r,i):t[n]=r}}return t}function fj(e,t){let n={};for(let r of Object.keys(e)){let i=e[r],a=t?.[r]?.(i);if(a){Object.assign(n,a);continue}if(r===`slot`){n[`data-slot`]=i;continue}let o=`data-${String(r).replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}`;typeof i==`boolean`?n[o]=i?``:void 0:i!=null&&(n[o]=String(i))}return n}function pj(e,t){return function(n){e(n),n.defaultPrevented||t(n)}}function mj(e){return/^on[A-Z]/.test(e)}function hj(...e){let t=e.filter(Boolean);if(t.length!==0)return e=>{for(let n of t)typeof n==`function`?n(e):n&&(n.current=e)}}var gj=8,_j=64,vj=0,yj=.5,bj=180,xj=new Set([`ArrowDown`,`ArrowUp`,`End`,`Home`,`PageDown`,`PageUp`,` `]),Sj={start:!1,end:!1},Cj={currentAnchorId:null,visibleMessageIds:[]};function wj({content:e,scrollEdgeThreshold:t,spacer:n,viewport:r}){if(!r||!e)return Sj;let i=Ij({content:e,spacer:n,viewport:r});return{start:r.scrollTop>t,end:i-r.scrollTop-r.clientHeight>t}}function Tj({content:e,scrollMargin:t,scrollPreviousItemPeek:n,spacer:r,viewport:i,visibleMessageIds:a}){if(!e||!i)return Cj;let o=i.getBoundingClientRect(),s=o.top+t+n,c=typeof IntersectionObserver>`u`,l=[],u=null;for(let t of Ej(e,r)){let e=t.dataset.messageId;if(!e)continue;let n=t.dataset.scrollAnchor===`true`,r=n||c?t.getBoundingClientRect():null;(c&&r?r.bottom>s&&r.top<o.bottom:a.has(e))&&l.push(e),n&&r&&r.top<=s+yj&&(u=e)}return l.length===0&&u===null?Cj:{currentAnchorId:u,visibleMessageIds:l}}function Ej(e,t){return Array.from(e.children).filter(e=>e instanceof HTMLElement&&e!==t)}function Dj(e,t){for(let n=t;n<e.length;n++){let t=e[n];if(t?.dataset.scrollAnchor===`true`)return t}return null}function Oj(e,t){for(let n of e)if(n.dataset.scrollAnchor===`true`&&!t.has(n))return n;return null}function kj(e,t){let n=0;for(let r=t;r<e.length;r++)if(e[r]?.dataset.scrollAnchor===`true`&&(n+=1,n>1))return!0;return!1}function Aj(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n?.dataset.scrollAnchor===`true`)return n}return null}function jj({content:e,spacer:t,viewport:n}){let r=n.getBoundingClientRect();for(let n of Ej(e,t)){if(!n.dataset.messageId)continue;let e=n.getBoundingClientRect();if(e.bottom>r.top&&e.top<r.bottom)return n}return null}function Mj({align:e,element:t,scrollMargin:n,spacer:r,viewport:i}){let a=Nj(t,i),o=t.getBoundingClientRect().height,s=zj(r);if(e===`center`){let e=Math.max(0,i.clientHeight-s.start-s.end);return a-s.start-(e-o)/2-n}if(e===`end`)return a-i.clientHeight+o+s.end+n;if(e===`nearest`){let e=a+o,t=i.scrollTop+s.start,r=i.scrollTop+i.clientHeight-s.end;return a>=t&&e<=r?i.scrollTop:a<t?a-s.start-n:e-i.clientHeight+s.end+n}return a-s.start-n}function Nj(e,t){let n=e.getBoundingClientRect(),r=t.getBoundingClientRect();return n.top-r.top+t.scrollTop}function Pj(e,t){return e.getBoundingClientRect().top-t.getBoundingClientRect().top}function Fj({content:e,scrollTop:t,spacer:n,viewport:r}){let i=Ij({content:e,spacer:n,viewport:r});return t+r.clientHeight-i}function Ij({content:e,spacer:t,viewport:n}){let r=Ej(e,t),i=Rj(e),a=n.getBoundingClientRect(),o=n.scrollTop,s=i.start+i.end;for(let e of r){let t=e.getBoundingClientRect();s=Math.max(s,t.bottom-a.top+o+i.end)}return s}function Lj(e){return Math.max(0,e.scrollHeight-e.clientHeight)}function Rj(e){let t=window.getComputedStyle(e);return{end:Vj(t.paddingBlockEnd||t.paddingBottom),start:Vj(t.paddingBlockStart||t.paddingTop)}}function zj(e){let t=e?.parentElement;return t?Rj(t):{end:0,start:0}}function Bj(e){if(!e)return 0;let t=window.getComputedStyle(e);return Vj(t.rowGap===`normal`?t.gap:t.rowGap)}function Vj(e){if(!e)return 0;let t=Number.parseFloat(e);return Number.isFinite(t)?t:0}function Hj({refs:e,commitScrollState:t,scheduleStateCommit:n,scheduleVisibilitySync:r}){let{streamingTurnRef:i,autoScrollRef:a,autoscrollingRef:o,autoscrollingTimeoutRef:s,contentRef:c,defaultScrollPositionAppliedRef:l,itemCountRef:u,messageElementsRef:d,modeRef:f,pendingScrollToMessageRef:p,prependRestoreRef:m,scrollMarginRef:h,scrollPreviousItemPeekRef:g,spacerGapRef:_,spacerHeightRef:v,spacerRef:y,viewportRef:b}=e,x=U.useCallback(e=>{s.current!==null&&(window.clearTimeout(s.current),s.current=null),o.current!==e&&(o.current=e,t()),e&&(s.current=window.setTimeout(()=>{s.current=null,o.current=!1,t()},bj))},[t]),S=U.useCallback(e=>{let t=y.current;if(!t)return;let n=Math.max(0,Math.ceil(e));v.current!==n&&(v.current=n,t.hidden=n===0,t.style.height=`${n}px`,t.style.marginTop=n>0?`${-_.current}px`:``)},[]),C=U.useCallback((e,{behavior:r=`auto`,autoscrolling:i=!1}={})=>{let a=b.current;if(!a)return;let o=Math.max(0,e);if(Math.abs(a.scrollTop-o)<=yj){a.scrollTop=o,t();return}i&&x(!0),a.scrollTo({top:o,behavior:r}),n()},[t,n,x]),w=U.useCallback(({behavior:e=`auto`}={})=>b.current?(S(0),i.current=null,f.current=`free-scrolling`,C(0,{behavior:e}),r(),!0):!1,[r,C,S]),T=U.useCallback(({behavior:e=`auto`}={})=>{let t=b.current;return t?(S(0),i.current=null,f.current=a.current?`following-bottom`:`free-scrolling`,C(Lj(t),{autoscrolling:!0,behavior:e}),r(),!0):!1},[r,C,S]),E=U.useCallback((e,{align:t=`start`,behavior:n=`auto`,scrollMargin:a=h.current}={},{keepPreviousPeek:o=!1}={})=>{let s=c.current,l=b.current;if(!s||!l||!s.contains(e))return!1;let u=Mj({align:t,element:e,scrollMargin:o?a+g.current:a,spacer:y.current,viewport:l}),d=Fj({content:s,scrollTop:u,spacer:y.current,viewport:l});return S(d),m.current={element:e,viewportTop:Pj(e,l)},f.current=o?`anchored-to-message`:`settling-jump`,i.current=o?e:null,C(u,{behavior:n}),r(),!0},[r,C,S]),D=U.useCallback(()=>{let e=i.current;return!e||!e.isConnected||f.current!==`anchored-to-message`?!1:E(e,{align:`start`},{keepPreviousPeek:!0})},[E]),O=U.useCallback((e,t)=>{let n=d.current.get(e);return n?(l.current=!0,E(n,t)?(p.current=null,!0):(p.current={messageId:e,options:t},!0)):u.current===0?(p.current={messageId:e,options:t},l.current=!0,!0):!1},[E]);return{flushPendingScrollToMessage:U.useCallback(()=>{let e=p.current;if(!e)return!1;let t=d.current.get(e.messageId);return!t||!E(t,e.options)?!1:(p.current=null,l.current=!0,!0)},[E]),reanchorToAnchoredMessage:D,scrollToElement:E,scrollToEnd:T,scrollToMessage:O,scrollToStart:w}}function Uj(e,t){let n=e,r=new Set;return{getSnapshot:()=>n,hasListeners:()=>r.size>0,setSnapshot:e=>{t(n,e)||(n=e,r.forEach(e=>e()))},subscribe:(e,t,n)=>{let i=r.size===0;return r.add(e),i&&t?.(),()=>{r.delete(e),r.size===0&&n?.()}}}}function Wj(e,t){return Uj(e,t)}function Gj(){return Uj(Cj,qj)}function Kj(e,t){return e.start===t.start&&e.end===t.end}function qj(e,t){return e.currentAnchorId!==t.currentAnchorId||e.visibleMessageIds.length!==t.visibleMessageIds.length?!1:e.visibleMessageIds.every((e,n)=>e===t.visibleMessageIds[n])}function Jj({autoScroll:e,scrollEdgeThreshold:t,scrollMargin:n,scrollPreviousItemPeek:r}){let i=U.useRef(e),a=U.useRef(!1),o=U.useRef(null),s=U.useRef(!1),c=U.useRef(t),l=U.useRef(0),u=U.useRef(null),d=U.useRef(0),f=U.useRef(e?`following-bottom`:`free-scrolling`),p=U.useRef(new Map),m=U.useRef(null),h=U.useRef(null),g=U.useRef(null),_=U.useRef(r),v=U.useRef(!0),y=U.useRef(null),b=U.useRef(n),x=U.useRef(null),S=U.useRef(0),C=U.useRef(0),w=U.useRef(null),T=U.useRef(null),E=U.useRef(null),D=U.useRef(null),O=U.useRef(null),k=U.useRef(null),A=U.useRef(null),j=U.useRef(null),M=U.useRef(new Set),N=U.useRef(new WeakSet);return E.current===null&&(E.current=Wj(Sj,Kj)),j.current===null&&(j.current=Gj()),i.current=e,c.current=t,b.current=n,_.current=r,{autoScrollRef:i,autoscrollingRef:a,autoscrollingTimeoutRef:D,streamingTurnRef:g,contentRef:o,defaultScrollPositionAppliedRef:s,firstItemRef:u,itemCountRef:l,lastScrollTopRef:d,messageElementsRef:p,modeRef:f,pendingScrollFrameRef:x,pendingScrollToMessageRef:m,prependRestoreRef:h,preserveScrollOnPrependRef:v,rootRef:y,scrollEdgeThresholdRef:c,scrollMarginRef:b,scrollPreviousItemPeekRef:_,spacerGapRef:S,spacerHeightRef:C,spacerRef:w,stateFrameRef:T,stateStore:E.current,viewportRef:O,visibilityFrameRef:k,visibilityObserverRef:A,visibilityStore:j.current,visibleMessageIdsRef:M,handledScrollAnchorsRef:N}}function Yj(e,t){return U.useCallback(n=>{e.current=n,n&&t()},[e,t])}function Xj({autoScroll:e=!1,defaultScrollPosition:t=`end`,scrollEdgeThreshold:n=gj,scrollPreviousItemPeek:r=_j,scrollMargin:i=vj}){let a=Jj({autoScroll:e,scrollEdgeThreshold:n,scrollMargin:i,scrollPreviousItemPeek:r}),{streamingTurnRef:o,autoScrollRef:s,autoscrollingRef:c,autoscrollingTimeoutRef:l,contentRef:u,defaultScrollPositionAppliedRef:d,firstItemRef:f,itemCountRef:p,lastScrollTopRef:m,messageElementsRef:h,modeRef:g,pendingScrollFrameRef:_,pendingScrollToMessageRef:v,prependRestoreRef:y,preserveScrollOnPrependRef:b,rootRef:x,scrollEdgeThresholdRef:S,scrollMarginRef:C,scrollPreviousItemPeekRef:w,spacerGapRef:T,spacerHeightRef:E,spacerRef:D,stateFrameRef:O,stateStore:k,viewportRef:A,visibilityFrameRef:j,visibilityObserverRef:M,visibilityStore:N,visibleMessageIdsRef:P,handledScrollAnchorsRef:ee}=a,F=U.useRef(t);F.current!==t&&(F.current=t,d.current=!1);let te=U.useCallback(e=>{let t=x.current,n=A.current,r=[e.start&&`start`,e.end&&`end`].filter(Boolean).join(` `),i=c.current;for(let e of[t,n])e&&(r?e.setAttribute(`data-scrollable`,r):e.removeAttribute(`data-scrollable`),e.toggleAttribute(`data-autoscrolling`,i))},[]),ne=U.useCallback(e=>{let t=A.current?.scrollTop??0,n=t<m.current-yj;m.current=t,s.current&&!e.end&&g.current!==`settling-jump`&&g.current!==`anchored-to-message`?g.current=`following-bottom`:g.current===`following-bottom`&&e.end&&n&&!c.current&&(g.current=`free-scrolling`)},[]),I=U.useCallback(()=>{let e=wj({content:u.current,scrollEdgeThreshold:S.current,spacer:D.current,viewport:A.current});ne(e);let t=g.current===`following-bottom`?{...e,end:!1}:e;te(t),k.setSnapshot(t)},[ne,k,te]),re=U.useCallback(()=>{O.current===null&&(O.current=window.requestAnimationFrame(()=>{O.current=null,I()}))},[I]),L=U.useCallback(()=>{N.hasListeners()&&j.current===null&&(j.current=window.requestAnimationFrame(()=>{j.current=null,N.hasListeners()&&N.setSnapshot(Tj({content:u.current,scrollMargin:C.current,scrollPreviousItemPeek:w.current,spacer:D.current,viewport:A.current,visibleMessageIds:P.current}))}))},[N]),{flushPendingScrollToMessage:ie,reanchorToAnchoredMessage:ae,scrollToElement:oe,scrollToEnd:R,scrollToMessage:se,scrollToStart:ce}=Hj({refs:a,commitScrollState:I,scheduleStateCommit:re,scheduleVisibilitySync:L}),le=U.useCallback(()=>{let e=y.current,t=A.current;if(!e||!t||!e.element.isConnected)return!1;let n=Pj(e.element,t)-e.viewportTop;return Math.abs(n)<=yj?!1:(t.scrollTop+=n,e.viewportTop=Pj(e.element,t),re(),L(),!0)},[re,L]),ue=U.useCallback(()=>{let e=u.current,t=A.current;if(!e||!t){y.current=null;return}let n=jj({content:e,spacer:D.current,viewport:t});y.current=n?{element:n,viewportTop:Pj(n,t)}:null},[]),de=U.useCallback(()=>{_.current===null&&(_.current=window.requestAnimationFrame(()=>{_.current=null,ie()&&ue()}))},[ue,ie]),fe=U.useCallback(()=>{if(!t||d.current||p.current===0)return!1;let e=!1;if(t===`last-anchor`){let t=u.current,n=A.current,r=t&&n?Aj(Ej(t,D.current)):null;if(!t||!n||!r)e=R({behavior:`auto`});else{let i=Nj(r,n);e=Ij({content:t,spacer:D.current,viewport:n})-i<=n.clientHeight?R({behavior:`auto`}):oe(r,{align:`start`},{keepPreviousPeek:!0})}}else e=t===`end`?R({behavior:`auto`}):ce({behavior:`auto`});return e?(d.current=!0,!0):!1},[t,oe,R,ce]),pe=U.useCallback(()=>{let e=u.current;if(!e)return;let t=Ej(e,D.current),n=p.current,r=f.current;p.current=t.length,f.current=t[0]??null,(()=>{if(ie())return;if(n===0){if(fe()||t.length>0&&s.current&&R({behavior:`auto`}))return;I(),L();return}let e=r?t.indexOf(r):-1;if(b.current&&e>0){le();return}if(t.length>n){let e=Dj(t,n);if(e){if(s.current&&g.current===`following-bottom`&&kj(t,n)){R({behavior:`auto`});return}oe(e,{align:`start`},{keepPreviousPeek:!0}),ee.current.add(e);return}}if(t.length===n){let e=Oj(t,ee.current);if(e){oe(e,{align:`start`},{keepPreviousPeek:!0}),ee.current.add(e);return}}g.current===`following-bottom`&&s.current?R({behavior:`auto`}):(I(),L())})(),ue()},[fe,ue,I,ie,le,L,oe,R]),me=U.useCallback(()=>{if(g.current===`following-bottom`&&s.current){R({behavior:`auto`});return}let e=E.current;if(ae()){s.current&&e>0&&E.current===0&&R({behavior:`auto`});return}re(),L()},[ae,re,L,R]),he=U.useCallback(()=>{let e=A.current;if(!(!e||!N.hasListeners())){if(typeof IntersectionObserver>`u`){L();return}M.current||=new IntersectionObserver(e=>{for(let t of e){let e=t.target.dataset.messageId;e&&(t.isIntersecting?P.current.add(e):P.current.delete(e))}L()},{root:e,rootMargin:`${-(C.current+w.current)}px 0px 0px 0px`,threshold:[0,.01,.5,1]}),h.current.forEach(e=>{M.current?.observe(e)}),L()}},[L,N]),ge=U.useCallback(()=>{j.current!==null&&(window.cancelAnimationFrame(j.current),j.current=null),M.current?.disconnect(),M.current=null,P.current.clear(),N.setSnapshot(Cj)},[N]),_e=U.useCallback((e,t,n)=>{if(t){h.current.set(e,t),M.current?.observe(t),L(),v.current?.messageId===e&&de();return}n&&h.current.get(e)===n&&(h.current.delete(e),P.current.delete(e),M.current?.unobserve(n),L())},[de,L]),ve=U.useCallback(()=>{(g.current===`following-bottom`||g.current===`anchored-to-message`||g.current===`settling-jump`)&&(o.current=null,g.current=`free-scrolling`)},[]),ye=U.useCallback(()=>te(k.getSnapshot()),[k,te]),be=Yj(x,ye),z=Yj(A,ye),xe=U.useCallback(e=>{u.current=e},[]),Se=U.useCallback(e=>{D.current=e,T.current=Bj(e?.parentElement??null)},[]),Ce=U.useCallback(()=>{I(),L(),ue()},[ue,I,L]),we=U.useMemo(()=>({handleContentChange:pe,handleResize:me,observeVisibility:he,preserveScrollOnPrependRef:b,scrollToEnd:R,scrollToMessage:se,scrollToStart:ce,setContentElement:xe,setRootElement:be,setSpacerElement:Se,setViewportElement:z,stateStore:k,syncAfterScroll:Ce,unobserveVisibility:ge,userScrollIntent:ve,viewportRef:A,visibilityStore:N}),[pe,me,he,R,se,ce,xe,be,Se,z,k,Ce,ge,ve,N]);return U.useLayoutEffect(()=>{fe()},[fe]),U.useEffect(()=>()=>{O.current!==null&&(window.cancelAnimationFrame(O.current),O.current=null),j.current!==null&&(window.cancelAnimationFrame(j.current),j.current=null),l.current!==null&&(window.clearTimeout(l.current),l.current=null),_.current!==null&&(window.cancelAnimationFrame(_.current),_.current=null),M.current?.disconnect(),M.current=null},[]),U.useLayoutEffect(()=>{if(e&&g.current===`following-bottom`&&p.current>0){R({behavior:`auto`});return}I()},[e,I,R]),{context:we,registerMessage:_e}}function Zj(e){let t=U.useRef(e);return t.current=e,t}var Qj=U.createContext(null),$j=U.createContext(null);function eM(){let e=U.useContext(Qj);if(!e)throw Error(`useMessageScroller must be used within a MessageScroller.`);return e}function tM(){let e=U.useContext($j);if(!e)throw Error(`MessageScrollerItem must be used within a MessageScroller.`);return e}function nM(){let{scrollToEnd:e,scrollToMessage:t,scrollToStart:n}=eM();return U.useMemo(()=>({scrollToEnd:e,scrollToMessage:t,scrollToStart:n}),[e,t,n])}function rM({autoScroll:e=!1,children:t,defaultScrollPosition:n=`end`,scrollEdgeThreshold:r,scrollPreviousItemPeek:i,scrollMargin:a}){let{context:o,registerMessage:s}=Xj({autoScroll:e,defaultScrollPosition:n,scrollEdgeThreshold:r,scrollPreviousItemPeek:i,scrollMargin:a});return(0,W.jsx)(Qj.Provider,{value:o,children:(0,W.jsx)($j.Provider,{value:s,children:t})})}function iM({children:e,...t}){let{setRootElement:n}=eM();return(0,W.jsx)(`div`,{ref:n,...t,children:e})}function aM({"aria-label":e,children:t,onKeyDown:n,onScroll:r,onTouchMove:i,onWheel:a,preserveScrollOnPrepend:o=!0,ref:s,role:c,tabIndex:l,...u}){let{handleResize:d,preserveScrollOnPrependRef:f,setViewportElement:p,syncAfterScroll:m,userScrollIntent:h,viewportRef:g}=eM();f.current=o;let _=U.useCallback(e=>{p(e),hj(s)?.(e)},[s,p]);function v(e){m(),r?.(e)}function y(e){h(),a?.(e)}function b(e){h(),i?.(e)}function x(e){xj.has(e.key)&&h(),n?.(e)}return U.useEffect(()=>{let e=g.current;if(!e||typeof ResizeObserver>`u`)return;let t=0,n=new ResizeObserver(()=>{window.cancelAnimationFrame(t),t=window.requestAnimationFrame(d)});return n.observe(e),()=>{window.cancelAnimationFrame(t),n.disconnect()}},[d,g]),(0,W.jsx)(`div`,{ref:_,role:c??`region`,"aria-label":e??`Messages`,tabIndex:l??0,onKeyDown:x,onScroll:v,onTouchMove:b,onWheel:y,...u,children:t})}function oM({"aria-relevant":e,children:t,ref:n,role:r,spacerClassName:i,...a}){let{handleContentChange:o,handleResize:s,setContentElement:c,setSpacerElement:l}=eM(),u=U.useRef(null),d=U.useCallback(e=>{u.current=e,c(e),hj(n)?.(e)},[n,c]);return U.useLayoutEffect(()=>{let e=u.current;if(!e||(o(),typeof MutationObserver>`u`))return;let t=new MutationObserver(()=>{o()});return t.observe(e,{childList:!0}),()=>t.disconnect()},[o]),U.useEffect(()=>{let e=u.current;if(!e||typeof ResizeObserver>`u`)return;let t=0,n=new ResizeObserver(()=>{window.cancelAnimationFrame(t),t=window.requestAnimationFrame(s)});return n.observe(e),()=>{window.cancelAnimationFrame(t),n.disconnect()}},[s]),(0,W.jsxs)(`div`,{ref:d,role:r??`log`,"aria-relevant":e??`additions`,...a,children:[t,(0,W.jsx)(`div`,{ref:l,"aria-hidden":`true`,"data-message-scroller-spacer":``,hidden:!0,className:i})]})}function sM({messageId:e,ref:t,scrollAnchor:n=!1,...r}){let i=tM(),a=U.useRef(null);return(0,W.jsx)(`div`,{ref:U.useCallback(n=>{let r=a.current;a.current=n,e&&i(e,n,r),hj(t)?.(n)},[e,t,i]),"data-message-id":e,"data-scroll-anchor":n?`true`:`false`,...r})}function cM({behavior:e=`smooth`,children:t,direction:n=`end`,onClick:r,render:i,tabIndex:a,type:o=`button`,...s}){let{scrollToEnd:c,scrollToStart:l,stateStore:u}=eM(),d=Zj(r),f=U.useCallback(e=>u.subscribe(e),[u]),p=U.useCallback(()=>{let e=u.getSnapshot();return n===`start`?e.start:e.end},[n,u]),m=U.useSyncExternalStore(f,p,p),h=U.useCallback(t=>{m&&(d.current?.(t),t.defaultPrevented||(t.currentTarget.blur(),n===`start`?l({behavior:e}):c({behavior:e})))},[e,n,m,d,c,l]);return uj({defaultTagName:`button`,props:dj({type:o,inert:!m,tabIndex:m?a:-1,children:t??(0,W.jsxs)(`span`,{children:[`Scroll to `,n]}),onClick:h},s),render:i,state:{active:m,direction:n},stateAttributesMapping:{active:e=>({"data-active":e?`true`:`false`})}})}var lM={Provider:rM,Root:iM,Viewport:aM,Content:oM,Item:sM,Button:cM},uM=lM.Provider;function dM({className:e,...t}){return(0,W.jsx)(lM.Root,{"data-slot":`message-scroller`,className:L(`group/message-scroller relative flex size-full min-h-0 flex-col overflow-hidden`,e),...t})}function fM({className:e,...t}){return(0,W.jsx)(lM.Viewport,{"data-slot":`message-scroller-viewport`,className:L(`size-full min-h-0 min-w-0 overflow-y-auto overscroll-contain`,`scrollbar-thin scrollbar-gutter-stable data-autoscrolling:scrollbar-quiet`,e),...t})}function pM({className:e,...t}){return(0,W.jsx)(lM.Content,{"data-slot":`message-scroller-content`,className:L(`flex h-max min-h-full flex-col`,e),...t})}function mM({className:e,scrollAnchor:t=!1,...n}){return(0,W.jsx)(lM.Item,{"data-slot":`message-scroller-item`,scrollAnchor:t,className:L(`min-w-0 shrink-0`,e),...n})}function hM({direction:e=`end`,className:t,children:n,...r}){return(0,W.jsx)(lM.Button,{"data-slot":`message-scroller-button`,"data-direction":e,direction:e,className:L(`absolute left-1/2 z-10 flex -translate-x-1/2 items-center gap-1 rounded-full border border-border bg-background/90 px-3 py-1 text-xs text-foreground shadow-sm backdrop-blur transition-[translate,scale,opacity] duration-200 hover:bg-accent`,`data-[active=false]:pointer-events-none data-[active=false]:scale-95 data-[active=false]:opacity-0`,`data-[active=true]:translate-y-0 data-[active=true]:scale-100 data-[active=true]:opacity-100`,`data-[direction=end]:bottom-3 data-[direction=end]:data-[active=false]:translate-y-full`,`data-[direction=start]:top-3 data-[direction=start]:data-[active=false]:-translate-y-full`,t),...r,children:n??(0,W.jsxs)(W.Fragment,{children:[`Jump to latest`,(0,W.jsx)(mr,{className:`size-3.5`,"aria-hidden":!0})]})})}function gM(e){return e.kind===`driver`?e.event.type===`start`?e.event.prompt:e.event.type===`text`?e.event.text:null:null}function _M(e){return e.replace(/\s+/g,` `).trim().length>100}function vM(e){return e.kind===`driver`?e.event.type===`start`?`you`:`agent`:e.kind}function yM(e){return e.kind===`driver`&&e.event.type===`start`}function bM(e){return e.kind===`driver`?e.event.type===`error`:e.kind===`error`||e.kind===`end`&&!e.ok&&!e.stopped&&!e.waiting}function xM(e){return bM(e)?`text-danger`:``}function SM(e){return bM(e)?`bg-danger/10`:``}function CM(e){let t=e.findIndex(yM);return t<=0?e:[e[t],...e.slice(0,t),...e.slice(t+1)]}function wM(e){return new Date(e).toLocaleTimeString()}function TM(e){let t=new Map,n=new Set,r=new Map,i=new Map;e.forEach((e,t)=>{e.kind===`choice`?r.set(e.id,{e,at:t}):e.kind===`choice-resolved`&&i.set(e.id,{e,at:t})});let a=new Set(e.flatMap(e=>yM(e)?[ej(e.event.prompt)?.question]:[]));for(let t of e)t.kind===`choice`&&a.has(t.title)&&n.add(t);let o=new Set(Pt(e).map(e=>e.id));for(let[e,a]of r){if(n.has(a.e))continue;let{kind:r,...s}=a.e,c=i.get(e);o.has(e)?t.set(a.e,{choice:s}):c&&c.at>a.at&&(t.set(a.e,{choice:s,pick:c.e.picked}),n.add(c.e))}return{rows:t,hidden:n}}function EM(e){return new Set(e.filter(e=>e.kind===`end`&&(e.ok||e.waiting)))}function DM(e){let t=new Set,n;for(let r of e)yM(r)?n=void 0:r.kind===`driver`&&r.event.type===`text`?n=r:r.kind===`choice`&&n&&t.add(n);return t}function OM(e){return e.replace(/```await-choices\b[\s\S]*?(```|$)/g,``).trim()}function kM({text:e}){return(0,W.jsx)(`div`,{className:`min-w-0 flex-1 font-sans text-foreground`,children:(0,W.jsx)(o,{text:e})})}function AM({text:e,at:t}){let[n,r]=(0,U.useState)(!1);return(0,W.jsxs)(`div`,{className:`flex items-center gap-1 font-sans text-muted-foreground`,children:[(0,W.jsx)(`button`,{type:`button`,"aria-label":n?`Copied`:`Copy this message`,title:n?`Copied`:`Copy this message`,onClick:()=>{navigator.clipboard?.writeText(e).then(()=>r(!0),()=>void 0)},className:`flex h-6 w-6 items-center justify-center rounded hover:bg-accent hover:text-accent-foreground`,children:n?(0,W.jsx)(Se,{className:`h-3.5 w-3.5`,"aria-hidden":!0}):(0,W.jsx)(be,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),t!==void 0&&(0,W.jsx)(`time`,{dateTime:t,title:new Date(t).toLocaleString(),className:`px-1 text-[11px]`,children:T(t)})]})}var jM=8,MM=600;function NM(e){return e.length>MM||e.trim().split(`
134
+ `).length>jM}function PM({choice:e}){let[t,n]=(0,U.useState)(!1);return(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 font-sans text-sm text-muted-foreground`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),"aria-expanded":t,"aria-label":`Asking ${e.title}`,className:`flex max-w-full items-center gap-1.5 hover:text-foreground`,children:[(0,W.jsx)(`span`,{className:`shrink-0`,children:`Asking`}),(0,W.jsx)(`span`,{className:`truncate text-foreground`,children:e.title}),(0,W.jsx)(Xe,{className:`h-3.5 w-3.5 shrink-0 transition-transform ${t?`rotate-90`:``}`,"aria-hidden":!0})]}),t&&(0,W.jsx)(`ul`,{className:`mt-1.5 flex flex-col gap-1 rounded-lg border border-border px-3 py-2`,children:e.options.map(e=>(0,W.jsx)(`li`,{className:`text-foreground`,children:e.label},e.id))})]})}function FM({question:e,answer:t}){return(0,W.jsxs)(`div`,{role:`group`,"aria-label":`Your answer`,className:`min-w-[min(100%,20rem)] max-w-[85%] rounded-lg border border-border p-2.5 font-sans text-sm`,children:[(0,W.jsx)(`div`,{className:`text-muted-foreground`,children:e}),(0,W.jsx)(`div`,{className:`text-foreground`,children:t})]})}function IM({text:e,at:t,queued:n=!1,attached:r,fresh:i=!1}){let[a,s]=(0,U.useState)(!1),c=NM(e);return(0,W.jsxs)(`div`,{className:`group/prompt flex min-w-0 flex-1 flex-col items-end font-sans text-foreground ${i?`bubble-in`:``}`,children:[(0,W.jsxs)(`div`,{role:`group`,"aria-label":n?`Your message, queued`:`Your message`,className:`max-w-[85%] min-w-0 rounded-xl bg-muted px-3.5 py-2 ${n?`opacity-60`:``}`,children:[(0,W.jsx)(`div`,{className:c&&!a?`max-h-40 overflow-hidden`:``,children:(0,W.jsx)(o,{text:e})}),c&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>s(e=>!e),"aria-expanded":a,className:`mt-1 text-xs text-muted-foreground hover:text-foreground`,children:a?`Show less`:`Show more`})]}),r!==void 0&&(0,W.jsx)(LM,{text:r}),n?(0,W.jsx)(`span`,{className:`h-4 pr-1 text-[10px] text-muted-foreground`,children:`Queued`}):(0,W.jsx)(`time`,{dateTime:t,title:t===void 0?void 0:new Date(t).toLocaleString(),className:`h-4 pr-1 text-[10px] tabular-nums text-muted-foreground opacity-0 transition-opacity group-hover/prompt:opacity-100`,children:t===void 0?``:wM(t)})]})}function LM({text:e}){let[t,n]=(0,U.useState)(!1);return(0,W.jsxs)(`div`,{className:`mt-1 flex max-w-[85%] min-w-0 flex-col items-end text-xs text-muted-foreground`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),"aria-expanded":t,className:`flex items-center gap-1 hover:text-foreground`,children:[(0,W.jsx)(`span`,{children:`Sent with this message`}),(0,W.jsx)(Xe,{className:`h-3.5 w-3.5 shrink-0 transition-transform ${t?`rotate-90`:``}`,"aria-hidden":!0})]}),t&&(0,W.jsx)(`pre`,{className:`mt-1 max-h-80 w-full overflow-auto whitespace-pre-wrap break-words rounded-lg border border-border px-3 py-2 text-left font-mono text-foreground`,children:e})]})}function RM({text:e}){let[t,n]=(0,U.useState)(!1);return _M(e)?(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-1.5`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>n(!t),"aria-expanded":t,"aria-label":t?`Collapse message`:`Expand message`,className:`shrink-0 select-none text-muted-foreground transition-transform ${t?`rotate-90`:``}`,children:`›`}),(0,W.jsx)(`div`,{className:t?`min-w-0 flex-1`:`max-h-[1.35rem] min-w-0 flex-1 cursor-pointer overflow-hidden`,onClick:t?void 0:()=>n(!0),children:(0,W.jsx)(o,{text:e,compact:!0})})]}):(0,W.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,W.jsx)(o,{text:e,compact:!0})})}function zM(e){return e.kind===`driver`&&(e.event.type===`action`||e.event.type===`thought`)?{...e.event}:void 0}function BM(e){return e.kind===`driver`&&e.event.type===`output`?e.event:void 0}function VM(e,t=!1){let n=e[e.length-1],r=t&&n!==void 0?zM(n):void 0;if(r?.type===`action`)return{...VM(e.slice(0,-1)),current:r};let i=[],a=new Map,o,s=new Map,c=()=>{o?.steps.some(e=>e.type===`action`)&&(i.push(o.head),a.set(o.head,o.steps)),o=void 0};for(let t of e){let e=BM(t);if(e){let t=s.get(e.id);t&&(t.output={text:e.text,...e.failed?{failed:!0}:{},...e.exitCode===void 0?{}:{exitCode:e.exitCode},...e.changed?{changed:e.changed}:{}});continue}let n=zM(t);n?.type===`action`&&n.id!==void 0&&s.set(n.id,n),n===void 0?(c(),i.push(t)):o?o.steps.push(n):o={head:t,steps:[n]}}return c(),{rows:i,steps:a}}function HM({words:e,tone:t}){let{said:n,thing:r,href:i,detail:a}=e,o=t===``?`text-foreground`:t;return(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 font-sans text-sm`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-1.5`,children:[(0,W.jsx)(`span`,{className:`min-w-0 whitespace-pre-wrap break-words ${t||`text-muted-foreground`}`,children:n}),r!==void 0&&(i===void 0?(0,W.jsx)(`span`,{className:`min-w-0 truncate ${o}`,children:r}):(0,W.jsx)(`a`,{href:i,target:`_blank`,rel:`noreferrer`,className:`min-w-0 shrink-0 truncate hover:underline ${o}`,children:r}))]}),a!==void 0&&(0,W.jsx)(`div`,{className:`mt-0.5 whitespace-pre-wrap break-words opacity-80 ${t||`text-muted-foreground`}`,children:a})]})}function UM({label:e,onOpen:t}){return t?(0,W.jsxs)(`button`,{type:`button`,onClick:t,className:`group/screen flex min-w-0 flex-1 items-center gap-1.5 text-left font-sans text-sm text-foreground`,children:[(0,W.jsx)(`span`,{className:`min-w-0 truncate group-hover/screen:underline`,children:e}),(0,W.jsx)(Xe,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`,"aria-hidden":!0})]}):(0,W.jsx)(`div`,{className:`min-w-0 flex-1 truncate font-sans text-sm text-muted-foreground`,children:e})}var WM=`ml-auto shrink-0 pt-0.5 text-[10px] tabular-nums text-muted-foreground opacity-0 transition-opacity group-hover/row:opacity-100`,GM=`subagent`,KM=8,qM=[],JM=[],YM={};function XM(e){return e.kind===`session-update`||e.kind===`usage`||e.kind===`title`||e.kind===`driver`&&e.event.type===`result`?!1:e.kind===`driver`&&e.event.type===`rate-limit`?e.event.limit.status!==`allowed`:!0}function ZM(e,t){(0,U.useLayoutEffect)(()=>{let n=e.current,r=t.current;if(!n||!r||typeof ResizeObserver>`u`)return;let i=()=>n.clientHeight-r.getBoundingClientRect().height,a=i(),o=new ResizeObserver(()=>{let e=a-i();a-=e,!(e<=0)&&n.scrollHeight-n.scrollTop-n.clientHeight-e<=KM&&(n.scrollTop=n.scrollHeight)});return o.observe(r),o.observe(n),()=>o.disconnect()},[e,t])}function QM({sent:e}){let{scrollToEnd:t}=nM(),n=(0,U.useRef)(e);return(0,U.useLayoutEffect)(()=>{e>n.current&&t({behavior:`smooth`}),n.current=e},[e,t]),null}function $M({events:e,writing:t=``,sending:n,working:r=!1,queued:i=JM,waitingOn:a=0,stick:o=!0,openAt:s,tail:c,projectId:l,subagents:u=qM,doing:d=YM,setup:f,onOpenAgent:p,onOpenChange:m,onOpenScreen:_}){let v=(0,U.useMemo)(()=>l?TM(e):void 0,[l,e]),y=(0,U.useMemo)(()=>kt(e),[e]),b=(0,U.useMemo)(()=>EM(e),[e]),x=f?.workspace,S=(0,U.useMemo)(()=>mT(e,x),[e,x]),C=(0,U.useMemo)(()=>new Map(e.map((e,t)=>[e,String(t)])),[e]),w=(0,U.useMemo)(()=>DM(e),[e]),T=CM(e).filter(e=>XM(e)&&!v?.hidden.has(e)&&!y.hidden.has(e)),E=n===void 0?T:[...T,{kind:`driver`,event:{type:`start`,prompt:n}}],D=e=>{let t=gM(e);return t!==null&&w.has(e)?OM(t):t},O=OM(t),k=E.filter(e=>!b.has(e)&&D(e)!==``),{rows:A,steps:j,current:M}=VM(k,r&&!O),N=k.length>0&&yM(k[k.length-1]),P=[...k].reverse().find(yM)?.at??k[k.length-1]?.at,ee=new Map;for(let e of A){let t=e.kind===`driver`&&e.event.type===`start`?Ci(e.event.prompt,u):void 0;t&&ee.set(e,t)}let F=e=>C.get(e)??`sending`,te=e=>ee.has(e)?GM:vM(e),ne=Ti(A,u),I=e=>ne.get(e)?.map(e=>(0,W.jsxs)(mM,{messageId:`subagent-${e.id}`,className:`group/row -mx-1.5 flex items-start gap-2 rounded-sm px-1.5`,children:[(0,W.jsx)(cj,{agent:e,doing:d[e.id],onOpen:p}),(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`span`,{className:WM}),children:wM(wi(e))}),(0,W.jsx)(h,{children:new Date(wi(e)).toLocaleString()})]})]},`subagent-${e.id}`)),re=f===void 0?-1:A.length>0&&yM(A[0])?1:0,L=f!==void 0&&r&&!O&&N&&k.filter(yM).length===1,ie=e.find(yM),ae=ie?.kind===`driver`&&ie.event.type===`start`?ie.event.added:void 0,oe=f!==void 0&&(0,W.jsx)(oj,{setup:f,working:r,added:ae,...L?{live:{since:P}}:{}}),R=oe!==!1&&!aj(f,r)&&!L&&re>=0&&A[re]!==void 0&&j.has(A[re]),se=oe&&!R&&(0,W.jsx)(mM,{messageId:`setup`,className:`-mx-1.5 flex items-start gap-2 rounded-sm px-1.5 empty:hidden`,children:oe},`setup`),ce=(0,U.useRef)(null),le=(0,U.useRef)(null);ZM(ce,le);let ue=A[A.length-1],de=ue?D(ue):null,fe=!r&&n===void 0&&ue!==void 0&&de!==null&&!yM(ue)&&!ee.has(ue)?{text:de,at:ue.at}:void 0;return(0,W.jsxs)(uM,{autoScroll:o,defaultScrollPosition:s??(o?`end`:`start`),children:[(0,W.jsx)(QM,{sent:(n===void 0?0:1)+i.length}),(0,W.jsxs)(dM,{className:`isolate flex-1`,children:[(0,W.jsx)(fM,{ref:ce,"aria-label":`Agent output`,className:`scroll-pb-(--chat-bottom)`,children:(0,W.jsxs)(pM,{spacerClassName:`order-last`,className:`mx-auto w-full max-w-3xl gap-2 px-4 pt-4 font-mono text-xs`,children:[(0,W.jsx)(`div`,{ref:le,"data-testid":`log-end-room`,className:`order-9998 h-[calc(var(--chat-bottom,0px)+0.5rem)] shrink-0`,"aria-hidden":!0}),A.map((e,t,n)=>{let r=D(e),i=v?.rows.get(e),a=t>0?n[t-1]:void 0,o=ee.get(e),s=!a||(ne.has(t)?!o:te(a)!==te(e)),c=e.at,l=yM(e)&&!o,u=tj(e),d=l&&r!==null?ej(r):void 0;return(0,W.jsxs)(U.Fragment,{children:[S.ended.has(e)&&(0,W.jsx)(mM,{messageId:`changes-${F(e)}`,className:`-mx-1.5 flex items-start gap-2 rounded-sm px-1.5`,children:(0,W.jsx)(ST,{files:S.ended.get(e),onOpen:m})}),F(e)===`sending`&&S.last.length>0&&(0,W.jsx)(mM,{messageId:`changes-last`,className:`-mx-1.5 flex items-start gap-2 rounded-sm px-1.5`,children:(0,W.jsx)(ST,{files:S.last,onOpen:m})}),t===re&&se,I(t),(0,W.jsxs)(mM,{messageId:F(e),className:`group/row -mx-1.5 flex items-start gap-2 rounded-sm px-1.5 ${l||d?`mt-5 first:mt-0`:``} ${o?``:SM(e)}`,children:[d?(0,W.jsx)(FM,{...d}):l&&r!==null?(0,W.jsx)(IM,{text:r,at:c,attached:e.kind===`driver`&&e.event.type===`start`?e.event.attached:void 0,fresh:F(e)===`sending`}):o?(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,W.jsx)(cj,{agent:o.agent,end:o,onOpen:p}),o.rest&&(0,W.jsx)(RM,{text:o.rest})]}):r===null?j.has(e)?(0,W.jsx)(AT,{steps:j.get(e),lead:R&&t===re?oe:void 0}):i&&i.pick===void 0?(0,W.jsx)(PM,{choice:i.choice}):i?.pick===void 0?u?(0,W.jsx)(HM,{words:u,tone:xM(e)}):e.kind===`screen`?(0,W.jsx)(UM,{label:e.label,onOpen:_&&y.live.has(e)?_:void 0}):(0,W.jsx)(`span`,{className:`min-w-0 flex-1 whitespace-pre-wrap break-words ${xM(e)||`text-foreground`}`,children:(Tt(e)??``).trim()}):(0,W.jsx)(`div`,{className:`min-w-0 flex-1 font-sans`,children:(0,W.jsx)(rj,{choice:i.choice,pick:i.pick})}):(0,W.jsx)(kM,{text:r}),!l&&s&&c!==void 0&&(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`span`,{className:WM}),children:wM(c)}),(0,W.jsx)(h,{children:new Date(c).toLocaleString()})]})]})]},F(e))}),A.length===re&&se,I(A.length),O&&(0,W.jsx)(mM,{messageId:`writing`,className:`-mx-1.5 flex items-start gap-2 rounded-sm px-1.5`,children:(0,W.jsx)(kM,{text:O})}),!r&&n===void 0&&S.last.length>0&&(0,W.jsx)(mM,{messageId:`changes-last`,className:`-mx-1.5 flex items-start gap-2 rounded-sm px-1.5`,children:(0,W.jsx)(ST,{files:S.last,onOpen:m})}),fe&&(0,W.jsx)(`div`,{className:`-mx-1.5 flex items-start gap-2 rounded-sm px-1.5`,children:(0,W.jsx)(AM,{text:fe.text,at:fe.at})}),A.length>0&&(0,W.jsx)(`div`,{"data-testid":`live-line`,className:`-mx-1.5 flex min-h-5 shrink-0 items-center gap-2 rounded-sm px-1.5`,children:r&&!L&&(0,W.jsx)(kT,{...O?{}:{call:M},since:P})}),!r&&a>0&&(0,W.jsx)(mM,{messageId:`waiting-on`,className:`-mx-1.5 flex items-center gap-2 rounded-sm px-1.5`,children:(0,W.jsx)(kT,{word:`Waiting for ${a} ${a===1?`subagent`:`subagents`}`})}),i.map((e,t)=>(0,W.jsx)(mM,{messageId:`queued-${t}`,className:`-mx-1.5 flex items-start gap-2 rounded-sm px-1.5`,children:(0,W.jsx)(IM,{text:e,queued:!0,fresh:!0})},`queued-${t}`)),c]})}),(0,W.jsx)(hM,{className:`data-[direction=end]:bottom-[calc(var(--chat-bottom,0px)+1.25rem)]`})]})]})}function eN({events:e,writing:t=``,sending:n,working:r=!1,queued:i,waitingOn:a,stick:o=!0,openAt:s,emptyLabel:c=`Waiting for the session to start…`,tail:l,projectId:u,subagents:d,doing:f,setup:p,onOpenAgent:m,onOpenChange:h,onOpenScreen:g}){return e.length===0&&n===void 0&&!i?.length?(0,W.jsx)($A,{children:c}):(0,W.jsx)($M,{events:e,writing:t,...n===void 0?{}:{sending:n},working:r,...i?{queued:i}:{},...a?{waitingOn:a}:{},stick:o,...s?{openAt:s}:{},...l?{tail:l}:{},projectId:u,...d?{subagents:d}:{},...f?{doing:f}:{},setup:p,onOpenAgent:m,onOpenChange:h,onOpenScreen:g})}function tN({target:e,events:t,live:n}){if(e!==`actions`)return null;let r=LT(t);return(0,W.jsxs)(`div`,{role:`status`,className:`flex items-center gap-2 border-b border-border bg-muted/40 px-4 py-2 text-xs text-muted-foreground`,children:[(0,W.jsx)(Ir,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[`Running on GitHub Actions`,n?` — updates arrive when the run finishes.`:`.`]}),r&&(0,W.jsxs)(`a`,{href:r,target:`_blank`,rel:`noreferrer`,className:`inline-flex shrink-0 items-center gap-1 text-primary hover:underline`,children:[`View the Actions run`,(0,W.jsx)(kr,{className:`h-3.5 w-3.5`,"aria-hidden":!0})]})]})}function nN(){return(0,W.jsxs)(`div`,{role:`status`,className:`flex items-center gap-2 border-b border-border bg-warning/10 px-4 py-2 text-xs text-warning`,children:[(0,W.jsx)(ii,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),`Live stream lost — reconnecting. The session keeps running; this view may be behind.`]})}var rN=Symbol(`other`);function iN({n:e}){return(0,W.jsx)(`kbd`,{className:`mt-0.5 flex h-5 min-w-5 shrink-0 items-center justify-center rounded border border-border px-1 font-sans text-[11px] text-muted-foreground`,"aria-hidden":!0,children:e})}function aN({projectId:e,agentId:t,choice:n,active:r=!1,onSaid:i,send:a}){let{busy:o,error:s,run:c}=tt(),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(()=>n.multi?void 0:n.recommended??n.options[0]?.id),[p,m]=(0,U.useState)(()=>new Set(n.multi?n.options.filter(e=>e.default).map(e=>e.id):[])),[h,g]=(0,U.useState)(``),[_,v]=(0,U.useState)(!1),[y,b]=(0,U.useState)(!1),x=(0,U.useRef)(null),S=o||l,C=h.trim(),w=e=>void c(e,`Could not send your answer — try again.`).then(e=>e.ok&&u(!0)),T=r=>w(()=>a?a(r):Un(e,n.id,r,t)),E=n=>w(async()=>{let r=await qn(e,n,t);return r.ok&&i?.(n),r}),D=n.multi||d!==rN||C!==``,O=()=>{if(!(S||!D)){if(n.multi)return C===``?T([...p]):E([...n.options.filter(e=>p.has(e.id)).map(e=>e.label),C].join(`, `));if(d===rN)return E(C);d!==void 0&&T(d)}},k=e=>{if(!S){if(!n.multi)return f(e);m(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}},A=(0,U.useRef)({submit:O,pick:k});A.current={submit:O,pick:k},(0,U.useEffect)(()=>{if(!r)return;let e=e=>{let t=e.target,r=t!==null&&(t.isContentEditable||t.tagName===`INPUT`||t.tagName===`TEXTAREA`);if((e.ctrlKey||e.metaKey)&&e.key===`Enter`){if(r&&t!==x.current)return;e.preventDefault(),A.current.submit();return}if(r||e.ctrlKey||e.metaKey||e.altKey||!/^[1-9]$/.test(e.key))return;let i=Number(e.key),o=n.options[i-1];if(o)A.current.pick(o.id);else if(!a&&i===n.options.length+1)x.current?.focus();else return;e.preventDefault()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r,n.options,a]);let j=e=>L(`flex w-full items-start gap-3 rounded-[5px] p-2 text-left`,e?`bg-accent`:`bg-muted/60 hover:bg-muted`);return y?null:(0,W.jsx)(`section`,{role:`region`,"aria-label":n.title,className:`mx-auto w-full max-w-3xl px-2 pt-2`,children:(0,W.jsxs)(`div`,{className:`rounded-[10px] border border-border bg-background p-3`,children:[(0,W.jsxs)(`div`,{className:`mb-2 flex items-start gap-2 px-1`,children:[(0,W.jsx)(`h2`,{className:`min-w-0 flex-1 text-sm font-medium`,children:n.title}),(0,W.jsx)(`button`,{type:`button`,"aria-label":_?`Show the options`:`Hide the options`,"aria-expanded":!_,onClick:()=>v(e=>!e),className:`flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-accent-foreground`,children:(0,W.jsx)(it,{className:L(`h-3.5 w-3.5 transition-transform`,_&&`-rotate-90`),"aria-hidden":!0})}),(0,W.jsx)(`button`,{type:`button`,"aria-label":`Put this question away`,onClick:()=>b(!0),className:`flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-accent-foreground`,children:(0,W.jsx)(Je,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]}),!_&&(0,W.jsxs)(`ul`,{className:`flex flex-col gap-[3px]`,children:[n.options.map((e,t)=>{let r=n.multi?p.has(e.id):d===e.id;return(0,W.jsx)(`li`,{children:(0,W.jsxs)(`button`,{type:`button`,role:n.multi?`checkbox`:`radio`,"aria-checked":r,disabled:S,onClick:()=>k(e.id),className:L(j(r),`disabled:opacity-60`),children:[n.multi&&(0,W.jsx)(`span`,{className:L(`mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded border`,r?`border-primary bg-primary text-primary-foreground`:`border-border`),"aria-hidden":!0,children:r&&(0,W.jsx)(Se,{className:`h-3 w-3`})}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,W.jsxs)(`span`,{className:`text-sm font-medium`,children:[e.label,e.id===n.recommended&&(0,W.jsx)(`span`,{className:`ml-2 text-xs font-normal text-muted-foreground`,children:`Recommended`})]}),e.detail&&(0,W.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:e.detail})]}),(0,W.jsx)(iN,{n:t+1})]})},e.id)}),!a&&(0,W.jsx)(`li`,{children:(0,W.jsxs)(`label`,{className:L(j(n.multi?C!==``:d===rN),`items-center`),children:[(0,W.jsx)(`input`,{ref:x,value:h,disabled:S,onFocus:()=>!n.multi&&f(rN),onChange:e=>g(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.ctrlKey&&!e.metaKey&&O()},placeholder:`Other: say it in your own words`,"aria-label":`Other`,className:`min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground`}),(0,W.jsx)(iN,{n:n.options.length+1})]})})]}),s&&(0,W.jsx)(`p`,{role:`alert`,className:`mt-2 px-1 text-xs text-danger`,children:s}),(0,W.jsxs)(`div`,{className:`mt-3 flex items-center gap-2`,children:[(0,W.jsx)(`span`,{role:S?`status`:void 0,className:`min-w-0 flex-1 truncate px-1 text-xs text-muted-foreground`,children:o?`Sending your answer…`:l?`Answer sent — waiting for the agent to pick it up…`:``}),!a&&(0,W.jsx)(z,{variant:`ghost`,size:`sm`,disabled:S,onClick:()=>E(`I skip this question.`),children:`Skip`}),(0,W.jsxs)(z,{size:`sm`,disabled:S||!D,onClick:O,children:[`Submit`,r&&(0,W.jsx)(`kbd`,{className:`font-sans text-[11px] opacity-70`,"aria-hidden":!0,children:`⌃⏎`})]})]})]})})}var oN=4e3;function sN({target:e,events:t,projectId:n,agentId:r}){let i=e===`web`?RT(t):void 0,a=vN(i?.id),o=_N(i?.id);return e===`web`?(0,W.jsxs)(`div`,{className:`border-b border-border bg-muted/40`,children:[(0,W.jsxs)(`div`,{role:`status`,className:`flex flex-wrap items-center gap-2 px-4 py-2 text-xs text-muted-foreground`,children:[(0,W.jsx)(Er,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1`,children:i?`Running as a Claude Code cloud session. It opens its own pull request over there; a question it parks on shows here once the bridge sees it.`:`Starting a Claude Code cloud session…`}),i&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`span`,{className:`inline-flex shrink-0 items-center gap-1`,children:[(0,W.jsxs)(`code`,{className:`rounded bg-muted px-1 py-0.5`,children:[`claude --teleport `,i.id]}),(0,W.jsx)(Oe,{text:`claude --teleport ${i.id}`,label:`Copy the command that continues this session here`})]}),(0,W.jsxs)(`a`,{href:i.url,target:`_blank`,rel:`noreferrer`,className:`inline-flex shrink-0 items-center gap-1 text-primary hover:underline`,children:[`Open the session`,(0,W.jsx)(kr,{className:`h-3.5 w-3.5`,"aria-hidden":!0})]})]})]}),a&&i&&(!o||o.state===`failed`)&&(0,W.jsx)(lN,{question:a,url:i.url,sessionId:i.id,projectId:n,agentId:r,failure:o?.state===`failed`?o:void 0}),o&&i&&o.state!==`failed`&&(0,W.jsx)(uN,{answer:o,url:i.url,sessionId:i.id})]}):null}function cN(e){return async t=>{let n=await Wn(e,Array.isArray(t)?t:[t]);if(!n.ok)throw Error(n.error??`could not queue the answer`)}}function lN({question:e,url:t,sessionId:n,projectId:r,agentId:i,failure:a}){return(0,W.jsxs)(`div`,{className:`border-t border-border`,children:[a&&(0,W.jsxs)(`p`,{className:`flex items-center gap-1 px-4 pt-2.5 text-xs text-destructive`,children:[(0,W.jsx)(ii,{className:`h-3 w-3 shrink-0`,"aria-hidden":!0}),`Sending “`,a.labels.join(`, `),`” failed`,a.note?`: ${a.note}`:``,`. Pick again, or answer in the session.`]}),(0,W.jsx)(aN,{projectId:r,agentId:i,choice:Rt(e),send:cN(n)},e.title),(0,W.jsxs)(`a`,{href:t,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 px-4 py-2.5 text-xs text-primary hover:underline`,children:[`Answer it in the session`,(0,W.jsx)(kr,{className:`h-3 w-3`,"aria-hidden":!0})]})]})}function uN({answer:e,url:t,sessionId:n}){return(0,W.jsx)(`div`,{className:`flex items-center gap-2 border-t border-border px-4 py-2.5 text-xs text-muted-foreground`,children:e.state===`queued`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(nt,{className:`h-3.5 w-3.5 shrink-0 animate-spin text-primary`,"aria-hidden":!0}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[`Sending “`,e.labels.join(`, `),`” through your Claude web tab… It goes out the next time the extension checks in.`]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>void Gn(n).catch(()=>{}),className:`shrink-0 rounded border border-border px-2 py-1 hover:border-primary/50 hover:text-foreground`,children:`Cancel`})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Se,{className:`h-3.5 w-3.5 shrink-0 text-primary`,"aria-hidden":!0}),(0,W.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[`Answered “`,e.labels.join(`, `),`”. The session continues over there and its transcript above follows along.`]}),(0,W.jsxs)(`a`,{href:t,target:`_blank`,rel:`noreferrer`,className:`inline-flex shrink-0 items-center gap-1 text-primary hover:underline`,children:[`Open the session`,(0,W.jsx)(kr,{className:`h-3 w-3`,"aria-hidden":!0})]})]})})}var dN=[/^Arrow keys move the tile/i,/^Show message actions$/i,/^(Claude\s+)?(Fable|Opus|Sonnet|Haiku)(\s+\d[\d.]*)?$/i];function fN(e){return e.split(`
135
+ `).filter(e=>!dN.some(t=>t.test(e.trim()))).join(`
136
136
  `).replace(/\n{3,}/g,`
137
137
 
138
- `).trim()}function fN({target:e,events:t}){let n=e===`web`?LT(t):void 0,r=hN(n?.id).map(e=>({...e,text:dN(e.text)})).filter(e=>e.text),i=mN(r.at(-1)?.seq,r.at(-1)?.text.length);return e!==`web`||!n?null:(0,W.jsxs)(`div`,{role:`status`,"aria-label":`Cloud session mirror`,className:`mt-2 rounded-md border border-border bg-muted/40 font-sans`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 border-b border-border px-3 py-1.5 text-[10px] text-muted-foreground`,children:[(0,W.jsx)(Er,{className:`h-3 w-3 shrink-0 text-primary`,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`font-medium uppercase tracking-wide`,children:`Cloud session mirror`}),(0,W.jsx)(`span`,{className:`opacity-70`,children:`a best-effort view of the Claude tab, not the run's own log`})]}),r.length>0?(0,W.jsx)(`div`,{ref:i,className:`max-h-80 space-y-2 overflow-y-auto px-3 py-2 text-xs`,children:r.map(e=>e.role===`user`?(0,W.jsxs)(`div`,{className:`truncate text-muted-foreground/70`,title:e.text,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:`you ›`}),` `,pN(e.text)]},e.seq):(0,W.jsx)(`div`,{className:`whitespace-pre-wrap break-words text-muted-foreground`,children:e.text},e.seq))}):(0,W.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 text-xs text-muted-foreground`,children:[(0,W.jsx)(nt,{className:`h-3.5 w-3.5 shrink-0 animate-spin text-primary`,"aria-hidden":!0}),`Connecting to the cloud session…`]})]})}function pN(e){return e.split(`
139
- `).find(e=>e.trim())??``}function mN(e,t){let n=(0,U.useRef)(null);return(0,U.useEffect)(()=>{let e=n.current;e&&(e.scrollTop=e.scrollHeight)},[e,t]),n}function hN(e){let[t,n]=(0,U.useState)([]);return(0,U.useEffect)(()=>{if(!e){n([]);return}let t=!0,r=()=>{Bn(e).then(e=>{t&&n(e)}).catch(()=>{})};r();let i=setInterval(r,aN);return()=>{t=!1,clearInterval(i)}},[e]),t}function gN(e){let[t,n]=(0,U.useState)(void 0);return(0,U.useEffect)(()=>{if(!e){n(void 0);return}let t=!0,r=()=>{zn(e).then(e=>{t&&n(e??void 0)}).catch(()=>{})};r();let i=setInterval(r,aN);return()=>{t=!1,clearInterval(i)}},[e]),t}function _N(e){let[t,n]=(0,U.useState)(void 0);return(0,U.useEffect)(()=>{if(!e){n(void 0);return}let t=!0,r=()=>{In(e).then(e=>{t&&n(e??void 0)}).catch(()=>{})};r();let i=setInterval(r,aN);return()=>{t=!1,clearInterval(i)}},[e]),t}function vN({handoff:e,subagent:t=!1}){if(!e||!e.exists&&e.landed)return null;if(!e.exists)return(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:e.unchanged?`no changes`:`branch gone`});let n=`${e.commits.length} commit${e.commits.length===1?``:`s`}`;if(e.empty&&e.commits.length>0)return(0,W.jsxs)(`span`,{className:`text-muted-foreground`,children:[n,` · no change left`]});if(e.empty&&e.pendingFiles?.length)return null;if(e.empty)return(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:e.merged?`merged`:`no changes`});let r=[n,`${e.files.length} file${e.files.length===1?``:`s`}`,...!t&&e.pushed&&!e.pr?[`pushed`]:[]].join(` · `);return(0,W.jsx)(`span`,{className:`flex shrink-0 items-center whitespace-nowrap rounded-md bg-background/60 px-1.5 py-0.5`,title:r,"aria-label":r,children:(0,W.jsx)(ae,{added:e.insertions,removed:e.deletions,zeros:!0,className:`text-[11px] font-medium`})})}var yN=`Commit your work.`;function bN(e){return e!==void 0&&!/^[0-9a-f]{40}$/.test(e)?e.replace(/^origin\//,``):`the main branch`}function xN(e){return e===yN}function SN(){return(0,W.jsx)(DN,{children:`Committing…`})}function CN({projectId:e,agentId:t,state:n,subagent:r=!1,onAsked:i}){let{handoff:a,busy:o,pending:s,act:c}=n;if(!a)return null;if(r)return a.landed?(0,W.jsx)(DN,{children:`landed`}):a.empty?(0,W.jsx)(TN,{paths:a.pendingFiles??[]}):(0,W.jsx)(DN,{children:`not landed`});if(a.landed)return(0,W.jsx)(DN,{children:`Merged into the main branch.`});if(a.prPending)return null;let u=a.pendingFiles??[];if(u.length>0)return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(TN,{paths:u,committed:!a.empty}),(0,W.jsx)(z,{size:`xs`,variant:`ghost`,disabled:o,onClick:()=>{i?.(yN),c(`commit`,()=>qn(e,yN,t).then(e=>(e.ok||i?.(null),e),e=>{throw i?.(null),e}),`Could not ask the agent to commit.`)},children:s===`commit`?`Asking…`:`Commit`})]});let f=()=>c(`push`,()=>er(e,t),`Could not push the branch.`);if(a.pr&&!a.movedPastPr){if(a.pr.state!==`OPEN`||a.merged)return null;let n=a.pr.headRefOid;return!a.pushed&&a.commits.slice(1).some(e=>e.sha===n)?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(DN,{children:`not in the PR yet`}),(0,W.jsx)(z,{size:`xs`,variant:`ghost`,disabled:o,onClick:f,children:s===`push`?`Updating PR…`:`Update PR`})]}):(0,W.jsx)(z,{size:`xs`,variant:`ghost`,disabled:o,onClick:()=>c(`merge`,()=>$n(e,t),`Could not merge the pull request.`),children:s===`merge`?`Merging…`:`Merge PR`})}if(!a.exists)return a.unchanged?null:(0,W.jsx)(DN,{children:`Branch gone — nothing to open a PR from.`});if(a.empty)return a.commits.length>0?(0,W.jsxs)(DN,{children:[`Nothing to `,a.hasRemote?`publish`:`merge`,`: the commits cancel out.`]}):null;if(a.merged)return(0,W.jsxs)(DN,{children:[`Merged into `,bN(a.base),`.`]});if(!a.hasRemote)return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(DN,{children:[`Not in `,bN(a.base),` yet.`]}),(0,W.jsx)(z,{size:`xs`,variant:`ghost`,disabled:o,onClick:()=>c(`merge-branch`,()=>tr(e,t),`Could not merge the branch.`),children:s===`merge-branch`?`Merging…`:`Merge`})]});if(!a.gitHost)return a.pushed?(0,W.jsx)(DN,{children:`Pushed — no git host package to open a pull request with.`}):(0,W.jsx)(W.Fragment,{children:(0,W.jsx)(z,{size:`xs`,variant:`ghost`,disabled:o,onClick:f,children:s===`push`?`Publishing…`:`Publish branch`})});let p=n=>c(`pr`,()=>Qn(e,t,{draft:n}),`Could not open the pull request.`);return(0,W.jsxs)(W.Fragment,{children:[a.carries&&(0,W.jsx)(wN,{carries:a.carries}),(0,W.jsxs)(`span`,{className:`inline-flex`,children:[(0,W.jsx)(z,{size:`xs`,variant:`ghost`,className:`rounded-r-none pr-1.5`,disabled:o,onClick:()=>p(!1),children:s===`pr`?`Opening PR…`:s===`push`?`Publishing…`:`Open PR`}),(0,W.jsxs)(l,{children:[(0,W.jsx)(d,{type:`button`,"aria-label":`Other choices`,disabled:o,className:L(gt({size:`xs`,variant:`ghost`}),`rounded-l-none px-1 text-muted-foreground data-[popup-open]:bg-[var(--color-accent)] data-[popup-open]:text-[var(--color-accent-foreground)]`),children:(0,W.jsx)(it,{className:`h-3.5 w-3.5`})}),(0,W.jsxs)(A,{align:`end`,className:`min-w-[10rem]`,children:[(0,W.jsxs)(F,{onClick:()=>p(!0),children:[(0,W.jsx)(Pr,{className:`h-3.5 w-3.5`}),`Create draft PR`]}),!a.pushed&&(0,W.jsxs)(F,{onClick:f,children:[(0,W.jsx)(ai,{className:`h-3.5 w-3.5`}),`Publish branch`]})]})]})]})]})}function wN({carries:e}){let t=bN(e.base),n=`${e.files} file${e.files===1?``:`s`}`;return(0,W.jsxs)(DN,{title:`A pull request against ${t} carries ${`${e.commits} commit${e.commits===1?``:`s`}`} · ${n} · +${e.insertions} −${e.deletions}, this run's work among them.`,children:[n,` over `,t]})}function TN({paths:e,committed:t=!1}){return e.length===0?null:(0,W.jsxs)(DN,{title:e.join(`
140
- `),children:[t?``:`Nothing committed — `,EN(e),` left uncommitted.`]})}function EN(e){let t=e.slice(0,2).join(`, `),n=e.length-Math.min(e.length,2);return n>0?`${t} and ${n} more`:t}function DN({children:e,title:t}){return(0,W.jsx)(`span`,{className:`inline-block max-w-[24rem] truncate align-middle text-xs text-muted-foreground`,...t?{title:t}:{},children:e})}function ON(e){let t,n=0;for(let r of e)r.kind===`usage`?t=(t??0)+r.costUsd:r.kind===`driver`&&r.event.type===`result`&&n++;return{...t===void 0?{}:{costUsd:t},turns:n}}function kN({label:e,value:t}){return(0,W.jsxs)(`span`,{className:`flex items-baseline gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-muted-foreground/70`,children:e}),(0,W.jsx)(`span`,{className:`tabular-nums text-foreground`,children:t})]})}function AN({events:e,card:t,pr:n}){let r=u(t?.driver),i=r?bt[r]:t?.driver,a=Ze(),o=t?.model&&ze(r?a?.[r]:void 0,t.model),{costUsd:s,turns:c}=ON(e);return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-1 border-b border-border px-4 py-2 text-xs`,children:[i&&(0,W.jsx)(kN,{label:`Agent`,value:i}),o&&(0,W.jsx)(kN,{label:`Model`,value:o}),s!==void 0&&(0,W.jsx)(kN,{label:`Spent`,value:`$${s.toFixed(2)}`}),c>0&&(0,W.jsx)(kN,{label:`Turns`,value:String(c)}),n&&(0,W.jsxs)(`span`,{className:`flex items-baseline gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-muted-foreground/70`,children:`Pull request`}),(0,W.jsxs)(`a`,{href:n.url,target:`_blank`,rel:`noreferrer`,className:`text-primary hover:underline`,children:[`#`,n.number]}),(0,W.jsx)(`span`,{className:`text-muted-foreground/70`,children:n.state.toLowerCase()})]}),s===void 0&&c===0&&(0,W.jsx)(`span`,{className:`text-muted-foreground/70`,children:`No spend reported yet`})]})}function jN(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e5?`${Math.round(e/1e3)}k`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function MN({used:e,size:t}){if(!(t>0))return null;let n=Math.min(Math.max(e,0)/t,1),r=2*Math.PI*5,i=Math.round((1-n)*100),a=`${jN(e)} of ${jN(t)} used · ${i}% of the context left`;return(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`span`,{className:`flex shrink-0 items-center px-1`,role:`img`,"aria-label":a}),children:(0,W.jsxs)(`svg`,{viewBox:`0 0 14 14`,className:`h-3.5 w-3.5`,"aria-hidden":!0,children:[(0,W.jsx)(`circle`,{cx:`7`,cy:`7`,r:5,fill:`none`,strokeWidth:`2`,className:`stroke-muted-foreground/30`}),(0,W.jsx)(`circle`,{cx:`7`,cy:`7`,r:5,fill:`none`,strokeWidth:`2`,strokeDasharray:`${r*n} ${r}`,transform:`rotate(-90 7 7)`,className:L(`transition-[stroke-dasharray] duration-500`,n>=.9?`stroke-danger`:n>=.75?`stroke-warning`:`stroke-muted-foreground`)})]})}),(0,W.jsx)(h,{children:a})]})}var NN=1e3,PN=5e3,FN=2e3,IN=[],LN={};function RN({projectId:e,agentId:t,events:n,live:r,card:i,label:a,projectName:o,target:s,remoteLabel:c,files:l,lost:d=!1,writing:f=``,startedWith:p,onAgentStarted:m,onDeleted:h,subagents:g=IN,onOpenAgent:_}){let[v,y]=(0,U.useState)(0),b=qe(r===!1?()=>Cn(e,t):null,null,[e,t,r,v],{remember:va(e,t)}),x=g.filter(e=>e.status===`running`).map(e=>e.id).join(`,`),S=Date.now(),C=g.filter(e=>bi(e,S)).length,{value:w}=Ie(x?()=>wn(e,x.split(`,`)):null,LN,FN,[e,x],`previous`),T=qe(r===!1?()=>xn(e):null,[],[e,t,r],{remember:`retained:${e}`}),[E,D]=(0,U.useState)(!1),O=(0,U.useCallback)(()=>D(!0),[]),k=qe(()=>Nn(e),null,[e],{remember:`git-host-home:${e}`}),A=k?.name===`GitHub`?k.url:void 0;(0,U.useEffect)(()=>{D(!1),y(0)},[t]);let j=r===!1&&!E&&T.includes(t),M=r===!0,N=i?.parent!==void 0,{workspace:P,branch:ee,base:F,driver:ne,model:I}=i??{},re=s!==void 0&&s!==`local`||c!==void 0,L=(0,U.useMemo)(()=>({workspace:P,branch:ee,base:F,driver:ne,model:I,elsewhere:re}),[P,ee,F,ne,I,re]),ie=u(ne),ae=Ze(),oe=[I?ze(ie?ae?.[ie]:void 0,I):void 0,i?.effort?rT(i.effort):void 0].filter(Boolean).join(` `)||void 0,R=Ye(ae,ie,I),se=c??(s===`web`?`Cloud`:s===`actions`?`GitHub Actions`:s===`remote`?`Another machine`:i?.otherHost&&i.host?i.host:Yw()),[ce,le]=(0,U.useState)(!1),{runSlots:ue,panels:de}=_e(),fe=de.some(t=>t.changes&&t.projects.includes(e)),pe=(0,U.useMemo)(()=>fe?n=>pk(UO(e,t),n):void 0,[fe,e,t]),me=de.some(t=>t.screen&&t.projects.includes(e)),he=(0,U.useMemo)(()=>me?()=>hk(UO(e,t)):void 0,[me,e,t]),ge=ue.filter(t=>t.projects.includes(e)),ve=(0,U.useCallback)(()=>le(e=>!e),[]),ye=(!b?.length||n.length===0||JSON.stringify(n[0])===JSON.stringify(b[0]))&&n.length>(b?.length??0),be=M?n:b?.length&&!ye?b:n;(0,U.useEffect)(()=>{r===!1&&b!==null&&ye&&y(n.length)},[r,b,ye,n.length]);let[z,xe]=(0,U.useState)(null),Se=NT(be),Ce=M||Se&&(ye||z===t);(0,U.useEffect)(()=>{Se&&ye&&b!==null?xe(t):Se||xe(null)},[Se,ye,b,t]);let[we,Te]=(0,U.useState)(null);(0,U.useEffect)(()=>Te(null),[t]);let Ee=be.filter(e=>e.kind===`driver`&&e.event.type===`start`).length;(0,U.useEffect)(()=>{we&&Ee>we.prompts&&Te(null)},[we,Ee]);let De=(0,U.useCallback)(e=>Te(e===null?null:{text:e,prompts:Ee}),[Ee]),[Oe,ke]=(0,U.useState)(null);(0,U.useEffect)(()=>ke(null),[t]),(0,U.useEffect)(()=>{Oe&&Ee>Oe.prompts&&ke(null)},[Oe,Ee]),(0,U.useEffect)(()=>{if(!Oe||Ce)return;let e=setTimeout(()=>ke(null),PN);return()=>clearTimeout(e)},[Oe,Ce]);let Ae=(0,U.useCallback)(e=>ke(t=>({texts:[...t?.texts??[],e],prompts:Ee})),[Ee]),je=(we&&Ee<=we.prompts?we.text:void 0)??(p&&Ee===0?p:void 0),Me=Ce||je!==void 0,Ne=qA(e,t,Se),Pe=KA(e,t,r===!1&&!Me,i?.saving===!0,Me),Fe=Pe.handoff!==null&&Pe.handoff.exists&&!Pe.handoff.empty,Le=i?.saving&&!Fe?{...Pe,handoff:null,loaded:!1}:Pe,Re=je??[...be].reverse().find(e=>e.kind===`driver`&&e.event.type===`start`),Be=xN(typeof Re==`string`?Re:Re?.kind===`driver`&&Re.event.type===`start`?Re.event.prompt:void 0)&&(Me||r===!1&&!Le.loaded),Ve=M?void 0:PT(be)??(i?FT(i.status):void 0),B=(0,U.useMemo)(()=>Pt(be),[be]),V=r===!1&&Le.loaded,[He,Ue]=(0,U.useState)(null);(0,U.useEffect)(()=>{let e=setTimeout(()=>Ue(t),NN);return()=>clearTimeout(e)},[t]);let We=i?.saving===!0||Le.loaded&&!Le.handoff?.prPending,Ge=M||He===t||b!==null&&We,[Ke,Je]=(0,U.useState)(null),Xe=Ke===t||M||b!==null||He===t;(0,U.useEffect)(()=>{Xe&&Je(t)},[Xe,t]);let Qe=Ge&&r===!1&&!Me&&C===0,$e=Le.handoff,et=r===!1&&($e?.landed===!0||($e?.merged===!0||Ne?.pr?.state===`MERGED`)&&!$e?.pendingFiles?.length&&$e?.movedPastPr!==!0),tt=(0,U.useRef)({agentId:null,say:!1}),nt=tt.current.agentId===t&&tt.current.say,rt=!et&&(Be||Ne?.pr!==void 0||(r===!1?Le.loaded&&GA(Le.handoff)||nt:Ne?.checkout?.dirty===!0||nt));tt.current={agentId:t,say:rt};let it=Le.handoff,at=[t,Ne?.branch??``,it?.commits.length??0,it?.pendingFiles?.length??0,it?.insertions??0,it?.deletions??0,it?.pushed??!1,Ne?.pr?.number??``,Ne?.pr?.state??``].join(`|`);return(0,W.jsx)(ZA,{top:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(JA,{projectId:e,agentId:t,events:be,label:a,projectName:o,runsOn:se,retainedWorktree:j,onWorktreeRemoved:O,onDeleted:h,expanded:ce,onToggle:ve,ready:Ge,checkout:Ne}),ce&&(0,W.jsx)(AN,{events:be,card:i,...Ne?.pr?{pr:Ne.pr}:{}}),(0,W.jsx)(eN,{target:s,events:be,live:M}),(0,W.jsx)(oN,{target:s,events:be,projectId:e,agentId:t}),d&&(0,W.jsx)(tN,{})]}),bottom:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(cj,{subagents:g,doing:w,onOpen:_},t),t&&B.map((n,r)=>(0,W.jsx)(iN,{projectId:e,agentId:t,choice:n,active:r===B.length-1,onSaid:De},`${t}:${n.id}`)),(0,W.jsx)(XA,{projectName:o,checkout:Ne,summary:Ge&&(V?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(vN,{handoff:Le.handoff,subagent:N}),Le.error&&(0,W.jsx)(`span`,{className:`text-danger`,children:Le.error})]}):ge.map(n=>{let r=n.summary;return r?(0,W.jsx)(XT,{package:n.package,label:`run summary`,children:(0,W.jsx)(r,{projectId:e,agentId:t,working:M})},n.package):null})),actions:Be?(0,W.jsx)(SN,{}):Qe?(0,W.jsx)(CN,{projectId:e,agentId:t,state:Le,subagent:N,onAsked:De}):void 0,show:rt,state:at}),(0,W.jsx)(YA,{projectId:e,agentId:t,live:Ce,files:l,onAgentStarted:m,onSending:De,onQueued:Ae,outcome:Ve,model:oe,...R===void 0?{}:{context:(0,W.jsx)(MN,{used:i?.contextTokens??0,size:R})}})]}),children:Xe?r!==!0&&b===null&&be.length===0?(0,W.jsx)(QA,{children:`Loading agent…`}):(0,W.jsx)(te.Provider,{value:A,children:(0,W.jsx)($M,{events:be,projectId:e,writing:Ce?f:``,...je===void 0?{}:{sending:je},working:Ce||je!==void 0,queued:Oe&&Ee<=Oe.prompts?Oe.texts:void 0,waitingOn:!Me&&r===!1&&Ve?.ok!==!1&&!Ve?.waiting?C:0,...Ce?{}:{openAt:`end`,emptyLabel:`This agent has no events.`},...Me?{}:{stick:!1},tail:(0,W.jsx)(fN,{target:s,events:be}),subagents:g,doing:w,setup:L,onOpenAgent:_,onOpenChange:pe,onOpenScreen:he},t)}):null})}function zN(){let{toggleSidebar:e,openMobile:t}=Ji();return(0,W.jsx)(z,{variant:`ghost`,size:`icon-sm`,className:`absolute top-2 left-2 z-10 h-7 w-7`,"aria-label":`Open the menu`,"aria-expanded":t,onClick:e,children:(0,W.jsx)(Ur,{className:`h-4 w-4`,"aria-hidden":!0})})}function BN({title:e}){return(0,W.jsx)(`div`,{className:`flex h-11 shrink-0 items-center border-b border-border pr-4 pl-11 text-sm font-medium`,children:(0,W.jsx)(`span`,{className:`truncate`,children:e})})}function VN({title:e,detail:t,actionLabel:n,onAction:r}){return(0,W.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-3 p-8 text-center`,children:[(0,W.jsx)(`p`,{className:`font-medium`,children:e}),(0,W.jsx)(`p`,{className:`max-w-md text-sm text-muted-foreground`,children:t}),(0,W.jsx)(z,{variant:`outline`,onClick:r,children:n})]})}function HN(e,t,n){return`/_screen/${e}?project=${encodeURIComponent(t)}&run=${encodeURIComponent(n)}`}async function UN(e,t,n){let r=await fetch(HN(`stream`,e,t),{signal:n}).catch(()=>void 0);return r?.ok&&r.body?r.body:void 0}function WN(e,t,n){return fetch(HN(`input`,e,t),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n)}).then(e=>e.ok,()=>!1)}var GN=[1e3,2e3,4e3,8e3];function KN(e){return GN[Math.min(e,GN.length-1)]}var qN=1500;function JN(e,t,n){let[r,i]=(0,U.useState)([]),[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(``);return(0,U.useEffect)(()=>{i([]),u(``)},[n]),(0,U.useEffect)(()=>{if(i([]),o(!1),c(!1),u(``),!e)return;let n,r=!1,a=0,s=!0,l,d,f=()=>{r||(o(!0),l=setTimeout(p,KN(a++)))},p=()=>{let l=!s;s=!1,N(e,t??void 0).then(e=>{if(r){e.close();return}n=e,a=0,o(!1);let t=l?[]:void 0,s=``,p=()=>{if(r||t===void 0)return;let e=t;t=void 0,i(e)},m=!1;l?d=setTimeout(()=>{t!==void 0&&t.length===0?m=!0:p()},qN):i([]),e.listen(e=>{if(e.kind===`stream-sync`){d&&clearTimeout(d),p();return}if(e.kind===`partial`){u(e.text===s?``:e.text);return}(e.kind===`driver`&&e.event.type===`text`||e.kind===`end`)&&(s=e.kind===`driver`&&e.event.type===`text`?e.event.text:``,u(``)),t?(t.push(e),m&&(m=!1,d=setTimeout(p,qN))):i(t=>[...t,e])}),e.onClose(e=>{t=void 0,d&&clearTimeout(d),e?f():r||c(!0)})},f)};return p(),()=>{r=!0,l&&clearTimeout(l),d&&clearTimeout(d),n?.close()}},[e,t]),{events:(0,U.useMemo)(()=>t?r:RT(r),[r,t]),lost:a,done:s,writing:l}}var YN=3e4;function XN(e,t=null){let{value:n,reload:r,loaded:i}=Ie(e?()=>bn(e):null,[],2e3,[e]),a=t===null?void 0:n.find(e=>e.id===t),o=e!==null&&t!==null&&(a===void 0||a.status===`running`&&a.branch===void 0);return(0,U.useEffect)(()=>{if(!o)return;let e=setInterval(()=>void r(),400),t=setTimeout(()=>clearInterval(e),YN);return()=>{clearInterval(e),clearTimeout(t)}},[o,t,r]),{agents:n,reload:r,loaded:i}}var ZN=new Set;function QN(){for(let e of ZN)e()}function $N(e){return ZN.size===0&&window.addEventListener(`popstate`,QN),ZN.add(e),()=>{ZN.delete(e),ZN.size===0&&window.removeEventListener(`popstate`,QN)}}var eP=()=>window.location.pathname+window.location.search;function tP(){let e=(0,U.useSyncExternalStore)($N,eP,()=>`/`);return{route:m(e),go:(t,n)=>{let r=n?.keepQuery?oe(mt(t),window.location.search):mt(t);r!==e&&(n?.replace?window.history.replaceState(null,``,r):window.history.pushState(null,``,r),QN())}}}function nP(e,t){if(typeof Notification>`u`||Notification.permission!==`granted`)return;let n=e[0];if(!n)return;let r=new Notification(t.title(n,e.length),{body:e.map(t.label).join(`
141
- `)});r.onclick=()=>{let e=t.clickUrl(n);e?window.open(e,`_blank`,`noopener`):window.focus(),r.close()}}function rP(e,t,n){let r=(0,U.useRef)(void 0);r.current??=new Lt(n.keyOf,e=>e.projectId);let i=(0,U.useRef)(void 0);(0,U.useEffect)(()=>{if(e===i.current)return;i.current=e;let a=r.current.observe(e.items,e.whole);t&&a.length>0&&nP(a,n)},[e,t])}var iP={keyOf:Ft,title:(e,t)=>t===1?`Human Queue · ${e.projectName}`:`${t} items in your Human Queue`,label:e=>e.kind===`awaiting`?e.title:e.kind===`unpushed`?e.commits===void 0||e.commits===0?`${e.title} — work not pushed`:`${e.title} — ${e.commits===1?`1 commit`:`${e.commits} commits`} not pushed`:`#${e.number} ${e.title}`,clickUrl:e=>e.kind===`awaiting`||e.kind===`unpushed`?void 0:e.url},aP={keyOf:It,title:(e,t)=>t===1?`${e.kind===`started`?`Agent started`:`Agent finished`} · ${e.projectName}`:`${t} agent updates`,label:e=>`${e.kind===`started`?`Started`:`Finished`}: ${e.title??`a session`}`,clickUrl:()=>void 0};function oP(e,t){rP(e,t,iP)}function sP(e,t){rP(e,t,aP)}function cP(e,t){return`${e>0?`(${e}) `:``}${t?`${t} — `:``}OpenAgent`}function lP(e,t){(0,U.useEffect)(()=>{typeof document>`u`||(document.title=cP(e,t))},[e,t])}var uP={active:[],queueOpen:0,recent:[]};function dP(){let{value:e}=Ie(En,uP,5e3,[]);return e.active.length>0}var fP=`/logo.svg`,pP=`/logo-animated.svg`;function mP(e){return e?pP:fP}function hP(e){(0,U.useEffect)(()=>{if(typeof document>`u`)return;let t=document.querySelector(`link[rel~="icon"]`);t||(t=document.createElement(`link`),t.rel=`icon`,document.head.appendChild(t));let n=mP(e);t.getAttribute(`href`)!==n&&t.setAttribute(`href`,n)},[e])}var gP=5e3;function _P(){let[e,t]=(0,U.useState)(!0);return(0,U.useEffect)(()=>{let e=!1,n,r=()=>{rr().then(()=>{e||(t(!0),n=setTimeout(r,gP))},()=>{e||(t(!1),n=setTimeout(r,gP))})};return r(),()=>{e=!0,n&&clearTimeout(n)}},[]),e}var vP=[],yP=[],bP={items:[],whole:[]},xP={items:[],whole:[]},SP=[];function CP(){let{route:e,go:t}=tP(),{view:n,projectId:r,agentId:i}=e,a=e.page??null,[o,s]=(0,U.useState)(0),{value:c,loaded:l}=Ie(rr,yP,3e4,[o]),u=je(o),{pages:d,loaded:f}=u,p=e.scope&&(c.length===0||c.some(t=>t.id===e.scope))?e.scope:null,m=(0,U.useMemo)(()=>p?c.filter(e=>e.id===p):c,[c,p]),h=(0,U.useMemo)(()=>p?d.filter(e=>e.projects.includes(p)):d,[d,p]),g=a?h.find(e=>e.segment===a):void 0,_=(e,n)=>t({...e,...p?{scope:e.projectId??p}:{}},n),v=n=>{let{scope:r,...i}=e;if(n===null)return t(i,{keepQuery:!0});if(i.projectId!==null&&i.projectId!==n)return t(i.agentId===null?{projectId:n,agentId:null,scope:n}:{projectId:null,agentId:null,scope:n});let a=d.find(e=>e.segment===i.page);if(a&&!a.projects.includes(n))return t({projectId:null,agentId:null,scope:n});let{pagePath:o,...s}=i;t({...s,scope:n},{keepQuery:!o?.length})},[y,b]=(0,U.useState)({tick:0,intent:``,id:null,projectId:null}),{agents:x,reload:S,loaded:C}=XN(r??p,y.id!==null&&y.projectId===(r??p)?y.id:null),{context:w,add:T,remove:E,toggle:D,reset:O}=Ha();(0,U.useEffect)(()=>{O()},[r]);let{value:k}=Ie(r?()=>Mn(r,i??void 0):null,vP,1e4,[r,i]),{value:A}=Ie(On,bP,15e3,[]),j=r?c.find(e=>e.id===r):void 0,M=j?.name??null,N=p?A.items.filter(e=>e.projectId===p):A.items;lP(N.length,M??c.find(e=>e.id===p)?.name??null);let P=r!==null&&c.length>0&&!c.some(e=>e.id===r),ee=dn();oP(A,_n(ee)&&hn(ee));let F=gn(ee)&&hn(ee),{value:te}=Ie(F?An:null,xP,15e3,[F]);sP(te,F);let{value:ne,reload:I}=Ie(p===null?Dn:null,SP,1e4,[p]),re=(e,t,n,a)=>{let o=n===i&&e===r;b(r=>({tick:o?r.tick:r.tick+1,intent:t,id:n,projectId:e,...a?{runsOn:a}:{}})),O(),_({projectId:e,agentId:n}),S(),I()},L=(e,t,n)=>re(r,e,t,n),ie=e=>{_({projectId:r,agentId:e})},ae=e=>{_({projectId:e,agentId:null})},oe=(e,t)=>{_({projectId:e,agentId:t})},R=e=>{_({projectId:e,agentId:null}),O()},se=()=>{_({projectId:null,agentId:null})},ce=()=>{_({view:`settings`,projectId:null,agentId:null})},le=e=>{_({projectId:null,agentId:null,page:e})},ue={openAgent:oe,openPage:(e,t)=>_({projectId:null,agentId:null,page:e,...t&&t.length?{pagePath:t}:{}}),startRun:async(e,t,n)=>{let r=await Xn(e,t,ja(ee));return r.ok&&(n?.land??!0?re(e,t,r.agentId):S()),r},configureRun:(e,t)=>{at(t),ae(e)},agents:async e=>(await bn(e)).map(e=>({id:e.id,status:e.status,startedAt:e.startedAt,...e.branch?{name:e.branch}:{},...e.intent?{ask:e.intent}:{}})),machines:Me,addMachine:async(e,t)=>{let n=await Te(e,t);return n.ok?{ok:!0}:n},removeMachine:ke,watchScreen:UN,sendToScreen:WN},{events:de,lost:fe,writing:pe}=JN(r,i,y.tick),me=de.filter(e=>e.kind===`end`).length;(0,U.useEffect)(()=>{me>0&&S()},[me]);let he=dP();hP(he);let ge=_P(),_e=i?x.find(e=>e.id===i)??(C?void 0:ne.find(e=>e.projectId===r&&e.agent.id===i)?.agent):void 0,ve=(0,U.useMemo)(()=>i?gi(x,i):[],[x,i]),ye=()=>n===`settings`?(0,W.jsx)(RA,{onAgentStarted:re,onSelectProject:ae,onDone:se}):a?g?(0,W.jsx)(QT,{page:g,projects:m,path:e.pagePath??[]}):!f||p!==null&&!l?null:(0,W.jsx)(VN,{title:`No such page`,detail:p!==null&&d.some(e=>e.segment===a)?`The project "${c.find(e=>e.id===p)?.name??p}" has no package that adds a page at "/${a}".`:`No installed package adds a page at "/${a}".`,actionLabel:`Go to the Overview`,onAction:se}):r?P?(0,W.jsx)(VN,{title:`No such project`,detail:`No project is registered as "${r}". It may have been removed, or the link may be from another machine.`,actionLabel:`Go to the Overview`,onAction:se}):i===null?(0,W.jsx)($k,{projectId:r,projectName:M,scope:p,events:de,onAgentStarted:L,files:k,context:w,addContext:T,removeContext:E,toggleContext:D,onOpenAgent:oe,errors:j?.errors,onProjectRemoved:()=>{s(e=>e+1),se()},onSkillsChanged:()=>s(e=>e+1)}):_e?(0,W.jsx)(RN,{projectId:r,agentId:i,events:de,live:_e.status===`running`,card:_e,label:_e.parent===void 0?pi(_e):_i(_e),projectName:M,files:k,lost:fe,writing:pe,startedWith:i===y.id?y.intent:void 0,target:_e.target,remoteLabel:_e.remoteLabel,subagents:ve,onOpenAgent:ie,onAgentStarted:L,onDeleted:()=>{ie(null),S()}}):i===y.id||!C?(0,W.jsx)(RN,{projectId:r,agentId:i,events:de,live:i===y.id||null,label:y.intent||void 0,projectName:M,remoteLabel:i===y.id?y.runsOn:void 0,files:k,lost:fe,writing:pe,startedWith:i===y.id?y.intent:void 0,onAgentStarted:L}):(0,W.jsx)(VN,{title:`This agent is gone`,detail:`There is no record of this agent. Once its checkout is removed, a finished agent is kept only when the project has a logs skill installed.`,actionLabel:`Back to the project`,onAction:()=>ie(null)}):(0,W.jsx)(NA,{onSelectProject:ae,onSelectAgent:oe,onAgentStarted:re,interventions:N,projects:c,scope:p}),be=Hi(),z=n===`settings`?`Settings`:a?g?.label??``:r===null?`Overview`:null;return(0,W.jsx)(Pe.Provider,{value:u,children:(0,W.jsx)(Qe.Provider,{value:ue,children:(0,W.jsxs)(Yi,{className:`h-screen flex-col overflow-hidden`,children:[!ge&&(0,W.jsxs)(`div`,{role:`alert`,className:`flex items-center gap-2 border-b border-border bg-warning/10 px-4 py-2 text-xs text-warning`,children:[(0,W.jsx)(ii,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),`The daemon is not answering — retrying. Everything on this page is frozen until it returns.`]}),(0,W.jsxs)(`div`,{className:`relative flex min-h-0 flex-1 overflow-hidden`,children:[(0,W.jsx)(xa,{projectId:r,scope:p,onScope:v,homeHref:mt({projectId:null,agentId:null,...p?{scope:p}:{}}),agents:x,selectedAgentId:i,onSelect:e=>_({projectId:p??r,agentId:e}),recentAgents:ne,onSelectRecent:oe,projects:c,onNewAgentInProject:R,onProjectAdded:()=>{s(e=>e+1),S()},startTick:y.tick,startIntent:y.intent,startId:y.id,startProjectName:c.find(e=>e.id===y.projectId)?.name,working:he,onDashboard:se,onSettings:ce,pages:h,activePage:a,atSettings:n===`settings`,onPage:le,interventionCount:N.length}),be&&(0,W.jsx)(zN,{}),(0,W.jsx)(Tk,{projectId:r,agentId:i,enabled:!a,files:k,context:w,toggleContext:D,activity:de.length,children:(0,W.jsx)(Mk,{children:(0,W.jsxs)(`main`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[be&&z!==null&&(0,W.jsx)(BN,{title:z}),ye()]})})})]})]})})})}var wP=document.getElementById(`root`);if(!wP)throw Error(`no #root in index.html`);(0,Ct.createRoot)(wP).render((0,W.jsx)(yn,{children:(0,W.jsx)(CP,{})}));
138
+ `).trim()}function pN({target:e,events:t}){let n=e===`web`?RT(t):void 0,r=gN(n?.id).map(e=>({...e,text:fN(e.text)})).filter(e=>e.text),i=hN(r.at(-1)?.seq,r.at(-1)?.text.length);return e!==`web`||!n?null:(0,W.jsxs)(`div`,{role:`status`,"aria-label":`Cloud session mirror`,className:`mt-2 rounded-md border border-border bg-muted/40 font-sans`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 border-b border-border px-3 py-1.5 text-[10px] text-muted-foreground`,children:[(0,W.jsx)(Er,{className:`h-3 w-3 shrink-0 text-primary`,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`font-medium uppercase tracking-wide`,children:`Cloud session mirror`}),(0,W.jsx)(`span`,{className:`opacity-70`,children:`a best-effort view of the Claude tab, not the run's own log`})]}),r.length>0?(0,W.jsx)(`div`,{ref:i,className:`max-h-80 space-y-2 overflow-y-auto px-3 py-2 text-xs`,children:r.map(e=>e.role===`user`?(0,W.jsxs)(`div`,{className:`truncate text-muted-foreground/70`,title:e.text,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:`you ›`}),` `,mN(e.text)]},e.seq):(0,W.jsx)(`div`,{className:`whitespace-pre-wrap break-words text-muted-foreground`,children:e.text},e.seq))}):(0,W.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 text-xs text-muted-foreground`,children:[(0,W.jsx)(nt,{className:`h-3.5 w-3.5 shrink-0 animate-spin text-primary`,"aria-hidden":!0}),`Connecting to the cloud session…`]})]})}function mN(e){return e.split(`
139
+ `).find(e=>e.trim())??``}function hN(e,t){let n=(0,U.useRef)(null);return(0,U.useEffect)(()=>{let e=n.current;e&&(e.scrollTop=e.scrollHeight)},[e,t]),n}function gN(e){let[t,n]=(0,U.useState)([]);return(0,U.useEffect)(()=>{if(!e){n([]);return}let t=!0,r=()=>{Bn(e).then(e=>{t&&n(e)}).catch(()=>{})};r();let i=setInterval(r,oN);return()=>{t=!1,clearInterval(i)}},[e]),t}function _N(e){let[t,n]=(0,U.useState)(void 0);return(0,U.useEffect)(()=>{if(!e){n(void 0);return}let t=!0,r=()=>{zn(e).then(e=>{t&&n(e??void 0)}).catch(()=>{})};r();let i=setInterval(r,oN);return()=>{t=!1,clearInterval(i)}},[e]),t}function vN(e){let[t,n]=(0,U.useState)(void 0);return(0,U.useEffect)(()=>{if(!e){n(void 0);return}let t=!0,r=()=>{In(e).then(e=>{t&&n(e??void 0)}).catch(()=>{})};r();let i=setInterval(r,oN);return()=>{t=!1,clearInterval(i)}},[e]),t}function yN({handoff:e,subagent:t=!1}){if(!e||!e.exists&&e.landed)return null;if(!e.exists)return(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:e.unchanged?`no changes`:`branch gone`});let n=`${e.commits.length} commit${e.commits.length===1?``:`s`}`;if(e.empty&&e.commits.length>0)return(0,W.jsxs)(`span`,{className:`text-muted-foreground`,children:[n,` · no change left`]});if(e.empty&&e.pendingFiles?.length)return null;if(e.empty)return(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:e.merged?`merged`:`no changes`});let r=[n,`${e.files.length} file${e.files.length===1?``:`s`}`,...!t&&e.pushed&&!e.pr?[`pushed`]:[]].join(` · `);return(0,W.jsx)(`span`,{className:`flex shrink-0 items-center whitespace-nowrap rounded-md bg-background/60 px-1.5 py-0.5`,title:r,"aria-label":r,children:(0,W.jsx)(ae,{added:e.insertions,removed:e.deletions,zeros:!0,className:`text-[11px] font-medium`})})}var bN=`Commit your work.`;function xN(e){return e!==void 0&&!/^[0-9a-f]{40}$/.test(e)?e.replace(/^origin\//,``):`the main branch`}function SN(e){return e===bN}function CN(){return(0,W.jsx)(ON,{children:`Committing…`})}function wN({projectId:e,agentId:t,state:n,subagent:r=!1,onAsked:i}){let{handoff:a,busy:o,pending:s,act:c}=n;if(!a)return null;if(r)return a.landed?(0,W.jsx)(ON,{children:`landed`}):a.empty?(0,W.jsx)(EN,{paths:a.pendingFiles??[]}):(0,W.jsx)(ON,{children:`not landed`});if(a.landed)return(0,W.jsx)(ON,{children:`Merged into the main branch.`});if(a.prPending)return null;let u=a.pendingFiles??[];if(u.length>0)return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(EN,{paths:u,committed:!a.empty}),(0,W.jsx)(z,{size:`xs`,variant:`ghost`,disabled:o,onClick:()=>{i?.(bN),c(`commit`,()=>qn(e,bN,t).then(e=>(e.ok||i?.(null),e),e=>{throw i?.(null),e}),`Could not ask the agent to commit.`)},children:s===`commit`?`Asking…`:`Commit`})]});let f=()=>c(`push`,()=>er(e,t),`Could not push the branch.`);if(a.pr&&!a.movedPastPr){if(a.pr.state!==`OPEN`||a.merged)return null;let n=a.pr.headRefOid;return!a.pushed&&a.commits.slice(1).some(e=>e.sha===n)?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ON,{children:`not in the PR yet`}),(0,W.jsx)(z,{size:`xs`,variant:`ghost`,disabled:o,onClick:f,children:s===`push`?`Updating PR…`:`Update PR`})]}):(0,W.jsx)(z,{size:`xs`,variant:`ghost`,disabled:o,onClick:()=>c(`merge`,()=>$n(e,t),`Could not merge the pull request.`),children:s===`merge`?`Merging…`:`Merge PR`})}if(!a.exists)return a.unchanged?null:(0,W.jsx)(ON,{children:`Branch gone — nothing to open a PR from.`});if(a.empty)return a.commits.length>0?(0,W.jsxs)(ON,{children:[`Nothing to `,a.hasRemote?`publish`:`merge`,`: the commits cancel out.`]}):null;if(a.merged)return(0,W.jsxs)(ON,{children:[`Merged into `,xN(a.base),`.`]});if(!a.hasRemote)return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(ON,{children:[`Not in `,xN(a.base),` yet.`]}),(0,W.jsx)(z,{size:`xs`,variant:`ghost`,disabled:o,onClick:()=>c(`merge-branch`,()=>tr(e,t),`Could not merge the branch.`),children:s===`merge-branch`?`Merging…`:`Merge`})]});if(!a.gitHost)return a.pushed?(0,W.jsx)(ON,{children:`Pushed — no git host package to open a pull request with.`}):(0,W.jsx)(W.Fragment,{children:(0,W.jsx)(z,{size:`xs`,variant:`ghost`,disabled:o,onClick:f,children:s===`push`?`Publishing…`:`Publish branch`})});let p=n=>c(`pr`,()=>Qn(e,t,{draft:n}),`Could not open the pull request.`);return(0,W.jsxs)(W.Fragment,{children:[a.carries&&(0,W.jsx)(TN,{carries:a.carries}),(0,W.jsxs)(`span`,{className:`inline-flex`,children:[(0,W.jsx)(z,{size:`xs`,variant:`ghost`,className:`rounded-r-none pr-1.5`,disabled:o,onClick:()=>p(!1),children:s===`pr`?`Opening PR…`:s===`push`?`Publishing…`:`Open PR`}),(0,W.jsxs)(l,{children:[(0,W.jsx)(d,{type:`button`,"aria-label":`Other choices`,disabled:o,className:L(gt({size:`xs`,variant:`ghost`}),`rounded-l-none px-1 text-muted-foreground data-[popup-open]:bg-[var(--color-accent)] data-[popup-open]:text-[var(--color-accent-foreground)]`),children:(0,W.jsx)(it,{className:`h-3.5 w-3.5`})}),(0,W.jsxs)(A,{align:`end`,className:`min-w-[10rem]`,children:[(0,W.jsxs)(F,{onClick:()=>p(!0),children:[(0,W.jsx)(Pr,{className:`h-3.5 w-3.5`}),`Create draft PR`]}),!a.pushed&&(0,W.jsxs)(F,{onClick:f,children:[(0,W.jsx)(ai,{className:`h-3.5 w-3.5`}),`Publish branch`]})]})]})]})]})}function TN({carries:e}){let t=xN(e.base),n=`${e.files} file${e.files===1?``:`s`}`;return(0,W.jsxs)(ON,{title:`A pull request against ${t} carries ${`${e.commits} commit${e.commits===1?``:`s`}`} · ${n} · +${e.insertions} −${e.deletions}, this run's work among them.`,children:[n,` over `,t]})}function EN({paths:e,committed:t=!1}){return e.length===0?null:(0,W.jsxs)(ON,{title:e.join(`
140
+ `),children:[t?``:`Nothing committed — `,DN(e),` left uncommitted.`]})}function DN(e){let t=e.slice(0,2).join(`, `),n=e.length-Math.min(e.length,2);return n>0?`${t} and ${n} more`:t}function ON({children:e,title:t}){return(0,W.jsx)(`span`,{className:`inline-block max-w-[24rem] truncate align-middle text-xs text-muted-foreground`,...t?{title:t}:{},children:e})}function kN(e){let t,n=0;for(let r of e)r.kind===`usage`?t=(t??0)+r.costUsd:r.kind===`driver`&&r.event.type===`result`&&n++;return{...t===void 0?{}:{costUsd:t},turns:n}}function AN({label:e,value:t}){return(0,W.jsxs)(`span`,{className:`flex items-baseline gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-muted-foreground/70`,children:e}),(0,W.jsx)(`span`,{className:`tabular-nums text-foreground`,children:t})]})}function jN({events:e,card:t,pr:n}){let r=u(t?.driver),i=r?bt[r]:t?.driver,a=Ze(),o=t?.model&&ze(r?a?.[r]:void 0,t.model),{costUsd:s,turns:c}=kN(e);return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-1 border-b border-border px-4 py-2 text-xs`,children:[i&&(0,W.jsx)(AN,{label:`Agent`,value:i}),o&&(0,W.jsx)(AN,{label:`Model`,value:o}),s!==void 0&&(0,W.jsx)(AN,{label:`Spent`,value:`$${s.toFixed(2)}`}),c>0&&(0,W.jsx)(AN,{label:`Turns`,value:String(c)}),n&&(0,W.jsxs)(`span`,{className:`flex items-baseline gap-1.5`,children:[(0,W.jsx)(`span`,{className:`text-muted-foreground/70`,children:`Pull request`}),(0,W.jsxs)(`a`,{href:n.url,target:`_blank`,rel:`noreferrer`,className:`text-primary hover:underline`,children:[`#`,n.number]}),(0,W.jsx)(`span`,{className:`text-muted-foreground/70`,children:n.state.toLowerCase()})]}),s===void 0&&c===0&&(0,W.jsx)(`span`,{className:`text-muted-foreground/70`,children:`No spend reported yet`})]})}function MN(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e5?`${Math.round(e/1e3)}k`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function NN({used:e,size:t}){if(!(t>0))return null;let n=Math.min(Math.max(e,0)/t,1),r=2*Math.PI*5,i=Math.round((1-n)*100),a=`${MN(e)} of ${MN(t)} used · ${i}% of the context left`;return(0,W.jsxs)(g,{children:[(0,W.jsx)(V,{render:(0,W.jsx)(`span`,{className:`flex shrink-0 items-center px-1`,role:`img`,"aria-label":a}),children:(0,W.jsxs)(`svg`,{viewBox:`0 0 14 14`,className:`h-3.5 w-3.5`,"aria-hidden":!0,children:[(0,W.jsx)(`circle`,{cx:`7`,cy:`7`,r:5,fill:`none`,strokeWidth:`2`,className:`stroke-muted-foreground/30`}),(0,W.jsx)(`circle`,{cx:`7`,cy:`7`,r:5,fill:`none`,strokeWidth:`2`,strokeDasharray:`${r*n} ${r}`,transform:`rotate(-90 7 7)`,className:L(`transition-[stroke-dasharray] duration-500`,n>=.9?`stroke-danger`:n>=.75?`stroke-warning`:`stroke-muted-foreground`)})]})}),(0,W.jsx)(h,{children:a})]})}var PN=1e3,FN=5e3,IN=2e3,LN=[],RN={};function zN({projectId:e,agentId:t,events:n,live:r,card:i,label:a,projectName:o,target:s,remoteLabel:c,files:l,lost:d=!1,writing:f=``,startedWith:p,onAgentStarted:m,onDeleted:h,subagents:g=LN,onOpenAgent:_}){let[v,y]=(0,U.useState)(0),b=qe(r===!1?()=>Cn(e,t):null,null,[e,t,r,v],{remember:va(e,t)}),x=g.filter(e=>e.status===`running`).map(e=>e.id).join(`,`),S=Date.now(),C=g.filter(e=>bi(e,S)).length,{value:w}=Ie(x?()=>wn(e,x.split(`,`)):null,RN,IN,[e,x],`previous`),T=qe(r===!1?()=>xn(e):null,[],[e,t,r],{remember:`retained:${e}`}),[E,D]=(0,U.useState)(!1),O=(0,U.useCallback)(()=>D(!0),[]),k=qe(()=>Nn(e),null,[e],{remember:`git-host-home:${e}`}),A=k?.name===`GitHub`?k.url:void 0;(0,U.useEffect)(()=>{D(!1),y(0)},[t]);let j=r===!1&&!E&&T.includes(t),M=r===!0,N=i?.parent!==void 0,{workspace:P,branch:ee,base:F,driver:ne,model:I}=i??{},re=s!==void 0&&s!==`local`||c!==void 0,L=(0,U.useMemo)(()=>({workspace:P,branch:ee,base:F,driver:ne,model:I,elsewhere:re}),[P,ee,F,ne,I,re]),ie=u(ne),ae=Ze(),oe=[I?ze(ie?ae?.[ie]:void 0,I):void 0,i?.effort?rT(i.effort):void 0].filter(Boolean).join(` `)||void 0,R=Ye(ae,ie,I),se=c??(s===`web`?`Cloud`:s===`actions`?`GitHub Actions`:s===`remote`?`Another machine`:i?.otherHost&&i.host?i.host:Yw()),[ce,le]=(0,U.useState)(!1),{runSlots:ue,panels:de}=_e(),fe=de.some(t=>t.changes&&t.projects.includes(e)),pe=(0,U.useMemo)(()=>fe?n=>mk(WO(e,t),n):void 0,[fe,e,t]),me=de.some(t=>t.screen&&t.projects.includes(e)),he=(0,U.useMemo)(()=>me?()=>gk(WO(e,t)):void 0,[me,e,t]),ge=ue.filter(t=>t.projects.includes(e)),ve=(0,U.useCallback)(()=>le(e=>!e),[]),ye=(!b?.length||n.length===0||JSON.stringify(n[0])===JSON.stringify(b[0]))&&n.length>(b?.length??0),be=M?n:b?.length&&!ye?b:n;(0,U.useEffect)(()=>{r===!1&&b!==null&&ye&&y(n.length)},[r,b,ye,n.length]);let[z,xe]=(0,U.useState)(null),Se=PT(be),Ce=M||Se&&(ye||z===t);(0,U.useEffect)(()=>{Se&&ye&&b!==null?xe(t):Se||xe(null)},[Se,ye,b,t]);let[we,Te]=(0,U.useState)(null);(0,U.useEffect)(()=>Te(null),[t]);let Ee=be.filter(e=>e.kind===`driver`&&e.event.type===`start`).length;(0,U.useEffect)(()=>{we&&Ee>we.prompts&&Te(null)},[we,Ee]);let De=(0,U.useCallback)(e=>Te(e===null?null:{text:e,prompts:Ee}),[Ee]),[Oe,ke]=(0,U.useState)(null);(0,U.useEffect)(()=>ke(null),[t]),(0,U.useEffect)(()=>{Oe&&Ee>Oe.prompts&&ke(null)},[Oe,Ee]),(0,U.useEffect)(()=>{if(!Oe||Ce)return;let e=setTimeout(()=>ke(null),FN);return()=>clearTimeout(e)},[Oe,Ce]);let Ae=(0,U.useCallback)(e=>ke(t=>({texts:[...t?.texts??[],e],prompts:Ee})),[Ee]),je=(we&&Ee<=we.prompts?we.text:void 0)??(p&&Ee===0?p:void 0),Me=Ce||je!==void 0,Ne=JA(e,t,Se),Pe=qA(e,t,r===!1&&!Me,i?.saving===!0,Me),Fe=Pe.handoff!==null&&Pe.handoff.exists&&!Pe.handoff.empty,Le=i?.saving&&!Fe?{...Pe,handoff:null,loaded:!1}:Pe,Re=je??[...be].reverse().find(e=>e.kind===`driver`&&e.event.type===`start`),Be=SN(typeof Re==`string`?Re:Re?.kind===`driver`&&Re.event.type===`start`?Re.event.prompt:void 0)&&(Me||r===!1&&!Le.loaded),Ve=M?void 0:FT(be)??(i?IT(i.status):void 0),B=(0,U.useMemo)(()=>Pt(be),[be]),V=r===!1&&Le.loaded,[He,Ue]=(0,U.useState)(null);(0,U.useEffect)(()=>{let e=setTimeout(()=>Ue(t),PN);return()=>clearTimeout(e)},[t]);let We=i?.saving===!0||Le.loaded&&!Le.handoff?.prPending,Ge=M||He===t||b!==null&&We,[Ke,Je]=(0,U.useState)(null),Xe=Ke===t||M||b!==null||He===t;(0,U.useEffect)(()=>{Xe&&Je(t)},[Xe,t]);let Qe=Ge&&r===!1&&!Me&&C===0,$e=Le.handoff,et=r===!1&&($e?.landed===!0||($e?.merged===!0||Ne?.pr?.state===`MERGED`)&&!$e?.pendingFiles?.length&&$e?.movedPastPr!==!0),tt=(0,U.useRef)({agentId:null,say:!1}),nt=tt.current.agentId===t&&tt.current.say,rt=!et&&(Be||Ne?.pr!==void 0||(r===!1?Le.loaded&&KA(Le.handoff)||nt:Ne?.checkout?.dirty===!0||nt));tt.current={agentId:t,say:rt};let it=Le.handoff,at=[t,Ne?.branch??``,it?.commits.length??0,it?.pendingFiles?.length??0,it?.insertions??0,it?.deletions??0,it?.pushed??!1,Ne?.pr?.number??``,Ne?.pr?.state??``].join(`|`);return(0,W.jsx)(QA,{top:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(YA,{projectId:e,agentId:t,events:be,label:a,projectName:o,runsOn:se,retainedWorktree:j,onWorktreeRemoved:O,onDeleted:h,expanded:ce,onToggle:ve,ready:Ge,checkout:Ne}),ce&&(0,W.jsx)(jN,{events:be,card:i,...Ne?.pr?{pr:Ne.pr}:{}}),(0,W.jsx)(tN,{target:s,events:be,live:M}),(0,W.jsx)(sN,{target:s,events:be,projectId:e,agentId:t}),d&&(0,W.jsx)(nN,{})]}),bottom:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(lj,{subagents:g,doing:w,onOpen:_},t),t&&B.map((n,r)=>(0,W.jsx)(aN,{projectId:e,agentId:t,choice:n,active:r===B.length-1,onSaid:De},`${t}:${n.id}`)),(0,W.jsx)(ZA,{projectName:o,checkout:Ne,summary:Ge&&(V?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(yN,{handoff:Le.handoff,subagent:N}),Le.error&&(0,W.jsx)(`span`,{className:`text-danger`,children:Le.error})]}):ge.map(n=>{let r=n.summary;return r?(0,W.jsx)(ZT,{package:n.package,label:`run summary`,children:(0,W.jsx)(r,{projectId:e,agentId:t,working:M})},n.package):null})),actions:Be?(0,W.jsx)(CN,{}):Qe?(0,W.jsx)(wN,{projectId:e,agentId:t,state:Le,subagent:N,onAsked:De}):void 0,show:rt,state:at}),(0,W.jsx)(XA,{projectId:e,agentId:t,live:Ce,files:l,onAgentStarted:m,onSending:De,onQueued:Ae,outcome:Ve,model:oe,...R===void 0?{}:{context:(0,W.jsx)(NN,{used:i?.contextTokens??0,size:R})}})]}),children:Xe?r!==!0&&b===null&&be.length===0?(0,W.jsx)($A,{children:`Loading agent…`}):(0,W.jsx)(te.Provider,{value:A,children:(0,W.jsx)(eN,{events:be,projectId:e,writing:Ce?f:``,...je===void 0?{}:{sending:je},working:Ce||je!==void 0,queued:Oe&&Ee<=Oe.prompts?Oe.texts:void 0,waitingOn:!Me&&r===!1&&Ve?.ok!==!1&&!Ve?.waiting?C:0,...Ce?{}:{openAt:`end`,emptyLabel:`This agent has no events.`},...Me?{}:{stick:!1},tail:(0,W.jsx)(pN,{target:s,events:be}),subagents:g,doing:w,setup:L,onOpenAgent:_,onOpenChange:pe,onOpenScreen:he},t)}):null})}function BN(){let{toggleSidebar:e,openMobile:t}=Ji();return(0,W.jsx)(z,{variant:`ghost`,size:`icon-sm`,className:`absolute top-2 left-2 z-10 h-7 w-7`,"aria-label":`Open the menu`,"aria-expanded":t,onClick:e,children:(0,W.jsx)(Ur,{className:`h-4 w-4`,"aria-hidden":!0})})}function VN({title:e}){return(0,W.jsx)(`div`,{className:`flex h-11 shrink-0 items-center border-b border-border pr-4 pl-11 text-sm font-medium`,children:(0,W.jsx)(`span`,{className:`truncate`,children:e})})}function HN({title:e,detail:t,actionLabel:n,onAction:r}){return(0,W.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-3 p-8 text-center`,children:[(0,W.jsx)(`p`,{className:`font-medium`,children:e}),(0,W.jsx)(`p`,{className:`max-w-md text-sm text-muted-foreground`,children:t}),(0,W.jsx)(z,{variant:`outline`,onClick:r,children:n})]})}function UN(e,t,n){return`/_screen/${e}?project=${encodeURIComponent(t)}&run=${encodeURIComponent(n)}`}async function WN(e,t,n){let r=await fetch(UN(`stream`,e,t),{signal:n}).catch(()=>void 0);return r?.ok&&r.body?r.body:void 0}function GN(e,t,n){return fetch(UN(`input`,e,t),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n)}).then(e=>e.ok,()=>!1)}var KN=[1e3,2e3,4e3,8e3];function qN(e){return KN[Math.min(e,KN.length-1)]}var JN=1500;function YN(e,t,n){let[r,i]=(0,U.useState)([]),[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(``);return(0,U.useEffect)(()=>{i([]),u(``)},[n]),(0,U.useEffect)(()=>{if(i([]),o(!1),c(!1),u(``),!e)return;let n,r=!1,a=0,s=!0,l,d,f=()=>{r||(o(!0),l=setTimeout(p,qN(a++)))},p=()=>{let l=!s;s=!1,N(e,t??void 0).then(e=>{if(r){e.close();return}n=e,a=0,o(!1);let t=l?[]:void 0,s=``,p=()=>{if(r||t===void 0)return;let e=t;t=void 0,i(e)},m=!1;l?d=setTimeout(()=>{t!==void 0&&t.length===0?m=!0:p()},JN):i([]),e.listen(e=>{if(e.kind===`stream-sync`){d&&clearTimeout(d),p();return}if(e.kind===`partial`){u(e.text===s?``:e.text);return}(e.kind===`driver`&&e.event.type===`text`||e.kind===`end`)&&(s=e.kind===`driver`&&e.event.type===`text`?e.event.text:``,u(``)),t?(t.push(e),m&&(m=!1,d=setTimeout(p,JN))):i(t=>[...t,e])}),e.onClose(e=>{t=void 0,d&&clearTimeout(d),e?f():r||c(!0)})},f)};return p(),()=>{r=!0,l&&clearTimeout(l),d&&clearTimeout(d),n?.close()}},[e,t]),{events:(0,U.useMemo)(()=>t?r:zT(r),[r,t]),lost:a,done:s,writing:l}}var XN=3e4;function ZN(e,t=null){let{value:n,reload:r,loaded:i}=Ie(e?()=>bn(e):null,[],2e3,[e]),a=t===null?void 0:n.find(e=>e.id===t),o=e!==null&&t!==null&&(a===void 0||a.status===`running`&&a.branch===void 0);return(0,U.useEffect)(()=>{if(!o)return;let e=setInterval(()=>void r(),400),t=setTimeout(()=>clearInterval(e),XN);return()=>{clearInterval(e),clearTimeout(t)}},[o,t,r]),{agents:n,reload:r,loaded:i}}var QN=new Set;function $N(){for(let e of QN)e()}function eP(e){return QN.size===0&&window.addEventListener(`popstate`,$N),QN.add(e),()=>{QN.delete(e),QN.size===0&&window.removeEventListener(`popstate`,$N)}}var tP=()=>window.location.pathname+window.location.search;function nP(){let e=(0,U.useSyncExternalStore)(eP,tP,()=>`/`);return{route:m(e),go:(t,n)=>{let r=n?.keepQuery?oe(mt(t),window.location.search):mt(t);r!==e&&(n?.replace?window.history.replaceState(null,``,r):window.history.pushState(null,``,r),$N())}}}function rP(e,t){if(typeof Notification>`u`||Notification.permission!==`granted`)return;let n=e[0];if(!n)return;let r=new Notification(t.title(n,e.length),{body:e.map(t.label).join(`
141
+ `)});r.onclick=()=>{let e=t.clickUrl(n);e?window.open(e,`_blank`,`noopener`):window.focus(),r.close()}}function iP(e,t,n){let r=(0,U.useRef)(void 0);r.current??=new Lt(n.keyOf,e=>e.projectId);let i=(0,U.useRef)(void 0);(0,U.useEffect)(()=>{if(e===i.current)return;i.current=e;let a=r.current.observe(e.items,e.whole);t&&a.length>0&&rP(a,n)},[e,t])}var aP={keyOf:Ft,title:(e,t)=>t===1?`Human Queue · ${e.projectName}`:`${t} items in your Human Queue`,label:e=>e.kind===`awaiting`?e.title:e.kind===`unpushed`?e.commits===void 0||e.commits===0?`${e.title} — work not pushed`:`${e.title} — ${e.commits===1?`1 commit`:`${e.commits} commits`} not pushed`:`#${e.number} ${e.title}`,clickUrl:e=>e.kind===`awaiting`||e.kind===`unpushed`?void 0:e.url},oP={keyOf:It,title:(e,t)=>t===1?`${e.kind===`started`?`Agent started`:`Agent finished`} · ${e.projectName}`:`${t} agent updates`,label:e=>`${e.kind===`started`?`Started`:`Finished`}: ${e.title??`a session`}`,clickUrl:()=>void 0};function sP(e,t){iP(e,t,aP)}function cP(e,t){iP(e,t,oP)}function lP(e,t){return`${e>0?`(${e}) `:``}${t?`${t} — `:``}OpenAgent`}function uP(e,t){(0,U.useEffect)(()=>{typeof document>`u`||(document.title=lP(e,t))},[e,t])}var dP={active:[],queueOpen:0,recent:[]};function fP(){let{value:e}=Ie(En,dP,5e3,[]);return e.active.length>0}var pP=`/logo.svg`,mP=`/logo-animated.svg`;function hP(e){return e?mP:pP}function gP(e){(0,U.useEffect)(()=>{if(typeof document>`u`)return;let t=document.querySelector(`link[rel~="icon"]`);t||(t=document.createElement(`link`),t.rel=`icon`,document.head.appendChild(t));let n=hP(e);t.getAttribute(`href`)!==n&&t.setAttribute(`href`,n)},[e])}var _P=5e3;function vP(){let[e,t]=(0,U.useState)(!0);return(0,U.useEffect)(()=>{let e=!1,n,r=()=>{rr().then(()=>{e||(t(!0),n=setTimeout(r,_P))},()=>{e||(t(!1),n=setTimeout(r,_P))})};return r(),()=>{e=!0,n&&clearTimeout(n)}},[]),e}var yP=[],bP=[],xP={items:[],whole:[]},SP={items:[],whole:[]},CP=[];function wP(){let{route:e,go:t}=nP(),{view:n,projectId:r,agentId:i}=e,a=e.page??null,[o,s]=(0,U.useState)(0),{value:c,loaded:l}=Ie(rr,bP,3e4,[o]),u=je(o),{pages:d,loaded:f}=u,p=e.scope&&(c.length===0||c.some(t=>t.id===e.scope))?e.scope:null,m=(0,U.useMemo)(()=>p?c.filter(e=>e.id===p):c,[c,p]),h=(0,U.useMemo)(()=>p?d.filter(e=>e.projects.includes(p)):d,[d,p]),g=a?h.find(e=>e.segment===a):void 0,_=(e,n)=>t({...e,...p?{scope:e.projectId??p}:{}},n),v=n=>{let{scope:r,...i}=e;if(n===null)return t(i,{keepQuery:!0});if(i.projectId!==null&&i.projectId!==n)return t(i.agentId===null?{projectId:n,agentId:null,scope:n}:{projectId:null,agentId:null,scope:n});let a=d.find(e=>e.segment===i.page);if(a&&!a.projects.includes(n))return t({projectId:null,agentId:null,scope:n});let{pagePath:o,...s}=i;t({...s,scope:n},{keepQuery:!o?.length})},[y,b]=(0,U.useState)({tick:0,intent:``,id:null,projectId:null}),{agents:x,reload:S,loaded:C}=ZN(r??p,y.id!==null&&y.projectId===(r??p)?y.id:null),{context:w,add:T,remove:E,toggle:D,reset:O}=Ha();(0,U.useEffect)(()=>{O()},[r]);let{value:k}=Ie(r?()=>Mn(r,i??void 0):null,yP,1e4,[r,i]),{value:A}=Ie(On,xP,15e3,[]),j=r?c.find(e=>e.id===r):void 0,M=j?.name??null,N=p?A.items.filter(e=>e.projectId===p):A.items;uP(N.length,M??c.find(e=>e.id===p)?.name??null);let P=r!==null&&c.length>0&&!c.some(e=>e.id===r),ee=dn();sP(A,_n(ee)&&hn(ee));let F=gn(ee)&&hn(ee),{value:te}=Ie(F?An:null,SP,15e3,[F]);cP(te,F);let{value:ne,reload:I}=Ie(p===null?Dn:null,CP,1e4,[p]),re=(e,t,n,a)=>{let o=n===i&&e===r;b(r=>({tick:o?r.tick:r.tick+1,intent:t,id:n,projectId:e,...a?{runsOn:a}:{}})),O(),_({projectId:e,agentId:n}),S(),I()},L=(e,t,n)=>re(r,e,t,n),ie=e=>{_({projectId:r,agentId:e})},ae=e=>{_({projectId:e,agentId:null})},oe=(e,t)=>{_({projectId:e,agentId:t})},R=e=>{_({projectId:e,agentId:null}),O()},se=()=>{_({projectId:null,agentId:null})},ce=()=>{_({view:`settings`,projectId:null,agentId:null})},le=e=>{_({projectId:null,agentId:null,page:e})},ue={openAgent:oe,openPage:(e,t)=>_({projectId:null,agentId:null,page:e,...t&&t.length?{pagePath:t}:{}}),startRun:async(e,t,n)=>{let r=await Xn(e,t,ja(ee));return r.ok&&(n?.land??!0?re(e,t,r.agentId):S()),r},configureRun:(e,t)=>{at(t),ae(e)},agents:async e=>(await bn(e)).map(e=>({id:e.id,status:e.status,startedAt:e.startedAt,...e.branch?{name:e.branch}:{},...e.intent?{ask:e.intent}:{}})),machines:Me,addMachine:async(e,t)=>{let n=await Te(e,t);return n.ok?{ok:!0}:n},removeMachine:ke,watchScreen:WN,sendToScreen:GN},{events:de,lost:fe,writing:pe}=YN(r,i,y.tick),me=de.filter(e=>e.kind===`end`).length;(0,U.useEffect)(()=>{me>0&&S()},[me]);let he=fP();gP(he);let ge=vP(),_e=i?x.find(e=>e.id===i)??(C?void 0:ne.find(e=>e.projectId===r&&e.agent.id===i)?.agent):void 0,ve=(0,U.useMemo)(()=>i?gi(x,i):[],[x,i]),ye=()=>n===`settings`?(0,W.jsx)(zA,{onAgentStarted:re,onSelectProject:ae,onDone:se}):a?g?(0,W.jsx)($T,{page:g,projects:m,path:e.pagePath??[]}):!f||p!==null&&!l?null:(0,W.jsx)(HN,{title:`No such page`,detail:p!==null&&d.some(e=>e.segment===a)?`The project "${c.find(e=>e.id===p)?.name??p}" has no package that adds a page at "/${a}".`:`No installed package adds a page at "/${a}".`,actionLabel:`Go to the Overview`,onAction:se}):r?P?(0,W.jsx)(HN,{title:`No such project`,detail:`No project is registered as "${r}". It may have been removed, or the link may be from another machine.`,actionLabel:`Go to the Overview`,onAction:se}):i===null?(0,W.jsx)(eA,{projectId:r,projectName:M,scope:p,events:de,onAgentStarted:L,files:k,context:w,addContext:T,removeContext:E,toggleContext:D,onOpenAgent:oe,errors:j?.errors,onProjectRemoved:()=>{s(e=>e+1),se()},onSkillsChanged:()=>s(e=>e+1)}):_e?(0,W.jsx)(zN,{projectId:r,agentId:i,events:de,live:_e.status===`running`,card:_e,label:_e.parent===void 0?pi(_e):_i(_e),projectName:M,files:k,lost:fe,writing:pe,startedWith:i===y.id?y.intent:void 0,target:_e.target,remoteLabel:_e.remoteLabel,subagents:ve,onOpenAgent:ie,onAgentStarted:L,onDeleted:()=>{ie(null),S()}}):i===y.id||!C?(0,W.jsx)(zN,{projectId:r,agentId:i,events:de,live:i===y.id||null,label:y.intent||void 0,projectName:M,remoteLabel:i===y.id?y.runsOn:void 0,files:k,lost:fe,writing:pe,startedWith:i===y.id?y.intent:void 0,onAgentStarted:L}):(0,W.jsx)(HN,{title:`This agent is gone`,detail:`There is no record of this agent. Once its checkout is removed, a finished agent is kept only when the project has a logs skill installed.`,actionLabel:`Back to the project`,onAction:()=>ie(null)}):(0,W.jsx)(PA,{onSelectProject:ae,onSelectAgent:oe,onAgentStarted:re,interventions:N,projects:c,scope:p}),be=Hi(),z=n===`settings`?`Settings`:a?g?.label??``:r===null?`Overview`:null;return(0,W.jsx)(Pe.Provider,{value:u,children:(0,W.jsx)(Qe.Provider,{value:ue,children:(0,W.jsxs)(Yi,{className:`h-screen flex-col overflow-hidden`,children:[!ge&&(0,W.jsxs)(`div`,{role:`alert`,className:`flex items-center gap-2 border-b border-border bg-warning/10 px-4 py-2 text-xs text-warning`,children:[(0,W.jsx)(ii,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),`The daemon is not answering — retrying. Everything on this page is frozen until it returns.`]}),(0,W.jsxs)(`div`,{className:`relative flex min-h-0 flex-1 overflow-hidden`,children:[(0,W.jsx)(xa,{projectId:r,scope:p,onScope:v,homeHref:mt({projectId:null,agentId:null,...p?{scope:p}:{}}),agents:x,selectedAgentId:i,onSelect:e=>_({projectId:p??r,agentId:e}),recentAgents:ne,onSelectRecent:oe,projects:c,onNewAgentInProject:R,onProjectAdded:()=>{s(e=>e+1),S()},startTick:y.tick,startIntent:y.intent,startId:y.id,startProjectName:c.find(e=>e.id===y.projectId)?.name,working:he,onDashboard:se,onSettings:ce,pages:h,activePage:a,atSettings:n===`settings`,onPage:le,interventionCount:N.length}),be&&(0,W.jsx)(BN,{}),(0,W.jsx)(Ek,{projectId:r,agentId:i,enabled:!a,files:k,context:w,toggleContext:D,activity:de.length,children:(0,W.jsx)(Nk,{children:(0,W.jsxs)(`main`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[be&&z!==null&&(0,W.jsx)(VN,{title:z}),ye()]})})})]})]})})})}var TP=document.getElementById(`root`);if(!TP)throw Error(`no #root in index.html`);(0,Ct.createRoot)(TP).render((0,W.jsx)(yn,{children:(0,W.jsx)(wP,{})}));