@oxgeneral/orch 1.0.24 → 1.0.25

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.
@@ -6,8 +6,8 @@ import {b,a as a$2}from'./chunk-3YGXRXS7.js';import {a as a$4}from'./chunk-JDG6Z
6
6
  `):[""]}),[C,z]=useState(0),[P,B]=useState(0),[H,G]=useState(()=>{let D=n.find(O=>!O.skip?.({}));if(D?.type==="select"&&D.defaultValue){let N=(D.getOptions?.({})??D.options??[]).findIndex($=>$.value===D.defaultValue);return N>=0?N:0}return 0}),W=useMemo(()=>n.filter(D=>!D.skip?.(I)),[n,I]),w=W[T],U=W.length,{taLineNumWidth:oe,taContentWidth:we}=useMemo(()=>{let D=String(_.length).length;return {taLineNumWidth:D,taContentWidth:Math.max(1,s-D-4)}},[_.length,s]),We=useMemo(()=>{if(!w||w.type!=="textarea")return [];let D=[];for(let O=0;O<_.length;O++){let N=Tc(_[O]??"",we);for(let $=0;$<N.length;$++)D.push({logicalRow:O,startCol:$*we,text:N[$],isFirst:$===0});}return D},[w?.id,w?.type,_,we]),Ge=useMemo(()=>{for(let D=0;D<We.length;D++){let O=We[D];if(O.logicalRow===C&&(P>=O.startCol&&P<O.startCol+we||P>=O.startCol&&(D+1>=We.length||We[D+1].logicalRow!==C)))return D}return 0},[We,C,P,we]),[ut,Ct]=useState(new Set),[gt,mt]=useState(false),[Ye,Ze]=useState(0),[ft,Ce]=useState(false),[Wt,It]=useState(null),[ht,Je]=useState(false),ot=useRef(null),Xe=useRef(null),po=useMemo(()=>w?w.type==="text"?L:w.type==="textarea"?_.join(`
7
7
  `):"":"",[w,L,_]),rn=useCallback((D,O)=>{if(ot.current&&clearTimeout(ot.current),!O){It(null);return}ot.current=setTimeout(()=>{It(O(D));},300);},[]);useEffect(()=>(w&&w.validate&&(w.type==="text"||w.type==="textarea")&&rn(po,w.validate),()=>{ot.current&&clearTimeout(ot.current);}),[po,w,rn]),useEffect(()=>()=>{Xe.current&&clearTimeout(Xe.current);},[]);let $t=useMemo(()=>!w||w.type!=="select"&&w.type!=="multiselect"?[]:w.getOptions?.(I)??w.options??[],[w,I]),Gt=Math.min(H,Math.max(0,$t.length-1)),zt=useMemo(()=>{if(!w?.suggestions)return [];if(!L.trim())return w.suggestions;let D=L.toLowerCase();return w.suggestions.filter(O=>O.label.toLowerCase().includes(D)||(O.hint??"").toLowerCase().includes(D))},[w?.suggestions,L]),qt=Math.min(Ye,Math.max(0,zt.length-1)),sn=D=>{let O={...I,[w.id]:D};M(O),v.reset(""),R([""]),z(0),B(0),G(0),Ct(new Set),mt(false),Ze(0),Ce(false),It(null),Je(false),ot.current&&clearTimeout(ot.current);let N=w.id,q=n.findIndex(ne=>ne.id===N)+1;for(;q<n.length;){let ne=n[q];if(ne&&!ne.skip?.(O))break;q++;}if(q>=n.length)o(O);else {let ne=n[q].id,ae=n.filter(ce=>!ce.skip?.(O)).findIndex(ce=>ce.id===ne);S(ae>=0?ae:0);let ue=n[q];if(ue.type==="text")v.reset(ue.defaultValue??"");else if(ue.type==="textarea"){let ce=ue.defaultValue?ue.defaultValue.split(`
8
8
  `):[""];R(ce),z(ce.length-1),B(ce[ce.length-1].length);}else if(ue.type==="select"){let ce=ue.getOptions?.(O)??ue.options??[];if(ue.defaultValue){let Kt=ce.findIndex(de=>de.value===ue.defaultValue);G(Kt>=0?Kt:0);}else G(0);}else ue.type==="multiselect"&&(G(0),ue.defaultValue?Ct(new Set(ue.defaultValue.split(","))):Ct(new Set));}},an=()=>{if(T===0){r();return}let D=w.id,N=n.findIndex(ae=>ae.id===D)-1;for(;N>=0;){let ae=n[N];if(ae&&!ae.skip?.(I))break;N--;}if(N<0){r();return}let $=n[N].id,q=W.findIndex(ae=>ae.id===$);S(q>=0?q:0),mt(false),Ze(0),Ce(false),It(null),Je(false),ot.current&&clearTimeout(ot.current);let ne=n[N];if(I[ne.id]&&Ce(true),ne.type==="text")v.reset(I[ne.id]??ne.defaultValue??"");else if(ne.type==="textarea"){let ae=I[ne.id]??ne.defaultValue??"",ue=ae?ae.split(`
9
- `):[""];R(ue),z(ue.length-1),B(ue[ue.length-1].length);}else if(ne.type==="multiselect"){G(0);let ae=I[ne.id];Ct(ae?new Set(ae.split(",")):new Set);}else {let ae=ne.getOptions?.(I)??ne.options??[],ue=I[ne.id],ce=ae.findIndex(Kt=>Kt.value===ue);G(ce>=0?ce:0);}};if(useInput((D,O)=>{if(w){if(O.escape){T===0?r():an();return}if((O.ctrl||O.meta)&&(D==="v"||D==="i")&&h&&(w.type==="text"||w.type==="textarea")){h();return}if(w.type==="text"){if(gt&&zt.length>0){if(O.upArrow){qt<=0?mt(false):Ze($=>$-1);return}if(O.downArrow){Ze($=>Math.min(zt.length-1,$+1));return}if(O.return){let $=zt[qt];$&&m&&m($.value);return}mt(false);}if(O.return){let $=L.trim();if(w.required&&!$){Ce(true);return}if(Wt!==null){Ce(true),Je(true),Xe.current&&clearTimeout(Xe.current),Xe.current=setTimeout(()=>Je(false),2e3);return}sn($);return}if(O.downArrow&&w.suggestions&&zt.length>0){mt(true),Ze(0);return}if((O.backspace||O.delete)&&v.cursor.isEmpty&&T>0){an();return}v.handleInput(D,O)&&(Ce(true),mt(false),Ze(0));return}if(w.type==="textarea"){if(O.return&&(O.ctrl||O.meta)){let N=_.join(`
10
- `).trim();if(w.required&&!N){Ce(true);return}if(Wt!==null){Ce(true),Je(true),Xe.current&&clearTimeout(Xe.current),Xe.current=setTimeout(()=>Je(false),2e3);return}sn(N);return}if(O.return){Ce(true),R(N=>{let $=N[C]??"",q=$.slice(0,P),ne=$.slice(P),_e=[...N];return _e.splice(C,1,q,ne),_e}),z(N=>N+1),B(0);return}if(O.ctrl&&D==="a"){B(0);return}if(O.ctrl&&D==="e"){B((_[C]??"").length);return}if(O.ctrl&&D==="k"){Ce(true),R(N=>{let $=[...N];return $[C]=($[C]??"").slice(0,P),$});return}if(O.ctrl&&D==="u"){Ce(true),R(N=>{let $=[...N];return $[C]=($[C]??"").slice(P),$}),B(0);return}if(O.ctrl&&D==="w"){Ce(true);let N=C,$=P,q=_[N]??"",ne=fi(q,$);R(_e=>{let ae=[..._e];return ae[N]=q.slice(0,ne)+q.slice($),ae}),B(ne);return}if(O.meta&&(O.leftArrow||D==="b")){B(fi(_[C]??"",P));return}if(O.meta&&(O.rightArrow||D==="f")){B(yc(_[C]??"",P));return}if(O.upArrow){if(Ge>0){let N=We[Ge],$=We[Ge-1],q=P-(N?.startCol??0),ne=Math.min($.startCol+q,$.startCol+$.text.length);z($.logicalRow),B(ne);}return}if(O.downArrow){if(Ge<We.length-1){let N=We[Ge],$=We[Ge+1],q=P-(N?.startCol??0),ne=Math.min($.startCol+q,$.startCol+$.text.length);z($.logicalRow),B(ne);}return}if(O.leftArrow){P>0?B(N=>N-1):C>0&&(z(N=>N-1),B((_[C-1]??"").length));return}if(O.rightArrow){let N=(_[C]??"").length;P<N?B($=>$+1):C<_.length-1&&(z($=>$+1),B(0));return}if(O.backspace||O.delete){if(P===0&&C===0)return;if(P>0)R(N=>{let $=[...N],q=$[C]??"";return $[C]=q.slice(0,P-1)+q.slice(P),$}),B(N=>N-1);else {let N=(_[C-1]??"").length;R($=>{let q=[...$],ne=q[C-1]??"",_e=q[C]??"";return q.splice(C-1,2,ne+_e),q}),B(N),z($=>$-1);}return}if(D&&!O.ctrl&&!O.meta&&!O.escape){Ce(true);let N=D.split(/\r?\n/);if(N.length===1)R($=>{let q=[...$],ne=q[C]??"";return q[C]=ne.slice(0,P)+D+ne.slice(P),q}),B($=>$+D.length);else {let $=C,q=P;R(ne=>{let _e=[...ne],ae=_e[$]??"",ue=ae.slice(0,q),ce=ae.slice(q),Kt=N[0]??"",de=N[N.length-1]??"",dr=[ue+Kt,...N.slice(1,-1),de+ce];return _e.splice($,1,...dr),_e}),z($+N.length-1),B((N[N.length-1]??"").length);}}return}if(w.type==="select"||w.type==="multiselect"){if(O.upArrow||D==="k"){G(N=>Math.max(0,N-1));return}if(O.downArrow||D==="j"){G(N=>Math.min($t.length-1,N+1));return}if(O.backspace||O.delete){an();return}if(w.type==="select"){if(O.return||O.tab){let N=$t[Gt];if(N){if(w.validate){let $=w.validate(N.value);if($!==null){Ce(true),It($),Je(true),Xe.current&&clearTimeout(Xe.current),Xe.current=setTimeout(()=>Je(false),2e3);return}}sn(N.value);}return}if(D>="1"&&D<="9"){let N=parseInt(D,10)-1;if(N<$t.length){let $=$t[N];$&&sn($.value);}return}}else {if(D===" "){let N=$t[Gt];N&&Ct($=>{let q=new Set($);return q.has(N.value)?q.delete(N.value):q.add(N.value),q});return}if(O.return){let N=Array.from(ut).join(",");sn(N);return}}}}}),!w)return null;let vt=ft?Wt:null,wn=Math.max(20,s-6),Un=`${T+1}/${U}`,ln=Math.max(2,f-4),rt=0;Gt>=ln&&(rt=Gt-ln+1);let cn=$t.slice(rt,rt+ln);return jsxs(Box,{flexDirection:"column",paddingX:2,children:[jsxs(Box,{children:[jsx(Text,{color:e.amber,bold:true,children:t}),jsxs(Text,{color:e.ghost,children:[" ",je,je," "]}),jsxs(Text,{color:e.dim,children:["step ",Un]})]}),jsxs(Box,{children:[jsx(Text,{children:" "}),W.map((D,O)=>jsxs(Text,{color:O===T?e.amber:O<T?e.green:e.ghost,children:[O===T?"\u25CF":O<T?"\u2713":"\u25CB"," "]},D.id))]}),jsxs(Box,{marginTop:0,children:[jsxs(Text,{color:e.white,bold:true,children:[" ",w.label]}),w.required&&jsx(Text,{color:e.red,children:" *"}),!w.required&&jsxs(Text,{color:e.dim,children:[" (optional, ",w.type==="textarea"?`${Fr}+Enter`:"Enter"," to skip)"]})]}),w.description&&jsx(Box,{children:jsxs(Text,{color:e.dim,children:[" ",w.description]})}),w.type==="text"&&jsxs(Box,{flexDirection:"column",paddingLeft:2,children:[jsx(Ho,{cursor:v.cursor,width:wn-4,prefix:"> ",placeholder:w.placeholder,hasError:!!vt}),vt&&jsxs(Text,{color:e.red,dimColor:true,children:[" ",vt]}),ht&&jsx(Text,{color:e.red,children:" Fix the error above"})]}),w.type==="text"&&w.suggestions&&zt.length>0&&(()=>{let D=Math.max(2,f-6),O=0;gt&&qt>=D&&(O=qt-D+1);let N=zt.slice(O,O+D);return jsxs(Box,{flexDirection:"column",children:[jsxs(Text,{color:e.ghost,children:[" ",je,je,je," or browse templates ",je.repeat(Math.max(0,wn-28))]}),N.map(($,q)=>{let ne=q+O,_e=gt&&ne===qt;return jsxs(Box,{children:[jsx(Text,{color:_e?e.amber:e.ghost,children:_e?" \u25B8 ":" "}),jsx(Text,{color:_e?e.white:e.silver,bold:_e,children:$.label}),$.hint&&jsxs(Text,{color:e.dim,wrap:"truncate",children:[" ",je," ",$.hint.replace(/\n/g," ")]})]},$.value)})]})})(),w.type==="textarea"&&(()=>{let D=Math.max(3,f-6),O=0;Ge>=D&&(O=Ge-D+1);let N=We.slice(O,O+D);return jsxs(Box,{flexDirection:"column",children:[jsxs(Box,{flexDirection:"column",borderStyle:vt?"round":void 0,borderColor:vt?e.red:void 0,children:[N.map(($,q)=>{let ne=q+O,_e=$.isFirst?String($.logicalRow+1).padStart(oe," "):"".padStart(oe," "),ae=ne===Ge,ue=P-$.startCol;return jsxs(Box,{children:[jsxs(Text,{color:e.dim,children:[" ",_e," "]}),jsxs(Text,{color:e.ghost,children:["\u2502"," "]}),ae?jsxs(Fragment,{children:[jsx(Text,{color:e.white,children:$.text.slice(0,ue)}),jsx(Text,{color:e.amber,children:bc}),jsx(Text,{color:e.white,children:$.text.slice(ue)})]}):jsx(Text,{color:e.silver,children:$.text||($.isFirst?" ":"")})]},`${$.logicalRow}-${$.startCol}`)}),_.length===1&&_[0]===""&&w.placeholder&&jsx(Box,{children:jsxs(Text,{color:e.dim,children:[" ","".padStart(oe," ")," ",w.placeholder]})})]}),vt&&jsxs(Text,{color:e.red,dimColor:true,children:[" ",vt]}),ht&&jsx(Text,{color:e.red,children:" Fix the error above"})]})})(),w.type==="select"&&jsxs(Box,{flexDirection:"column",children:[cn.map((D,O)=>{let N=O+rt,$=N===Gt,q=String(N+1).padStart($t.length>=10?2:1);return jsxs(Box,{children:[jsx(Text,{color:$?e.amber:e.ghost,children:$?" \u25B8 ":` ${q} `}),jsx(Text,{color:$?e.white:e.silver,bold:$,children:D.label}),D.hint&&jsxs(Text,{color:e.dim,wrap:"truncate",children:[" ",je," ",D.hint.replace(/\n/g," ")]})]},D.value)}),vt&&jsxs(Text,{color:e.red,dimColor:true,children:[" ",vt]}),ht&&jsx(Text,{color:e.red,children:" Fix the error above"})]}),w.type==="multiselect"&&jsxs(Box,{flexDirection:"column",children:[cn.map((D,O)=>{let $=O+rt===Gt,q=ut.has(D.value);return jsxs(Box,{children:[jsx(Text,{color:$?e.amber:e.ghost,children:$?" \u25B8 ":" "}),jsx(Text,{color:q?e.green:e.dim,children:q?"[\u2713]":"[ ]"}),jsxs(Text,{color:$?e.white:e.silver,bold:$,children:[" ",D.label]}),D.hint&&jsxs(Text,{color:e.dim,wrap:"truncate",children:[" ",je," ",D.hint.replace(/\n/g," ")]})]},D.value)}),ut.size>0&&jsx(Box,{children:jsxs(Text,{color:e.dim,children:[" ","\u2514"," ",ut.size," selected"]})})]}),jsxs(Box,{marginTop:0,children:[jsxs(Text,{color:e.ghost,children:[" ",w.type==="select"?"\u2191\u2193 select Enter confirm":w.type==="multiselect"?"\u2191\u2193 move Space toggle Enter confirm":w.type==="textarea"?`Enter newline ${Fr}+Enter confirm \u2190\u2191\u2192\u2193 navigate`:gt?"\u2191\u2193 browse Enter select \u2191 back to input":w.suggestions?"\u2190\u2192 move Enter confirm \u2193 browse templates":"\u2190\u2192 move Enter confirm",h&&(w.type==="text"||w.type==="textarea")?` ${Fr}+V paste image`:""," Esc ",T>0?"back":"cancel"]}),y&&jsxs(Text,{color:e.amber,children:[" ",y]})]})]})}var bi=uo.memo(function({agents:n,selected:o,msgCounts:r,colorMap:s,maxHeight:f,onConfirm:h,onCancel:y}){let [m,T]=useState(0),[S,I]=useState(()=>new Set(o));useMemo(()=>S.size===0||S.size===n.length,[S.size,n.length]);let v=Math.max(3,f-5),L=useMemo(()=>{if(n.length<=v)return 0;let C=Math.floor(v/2),z=n.length-v;return Math.min(z,Math.max(0,m-C))},[m,n.length,v]),_=n.slice(L,L+v);useInput((C,z)=>{if(z.upArrow){T(P=>P>0?P-1:n.length-1);return}if(z.downArrow){T(P=>P<n.length-1?P+1:0);return}if(C===" "){let P=n[m];if(!P)return;I(B=>{let H=new Set(B);return H.has(P.id)?H.delete(P.id):H.add(P.id),H});return}if(C==="a"||C==="A"){I(P=>new Set);return}if(z.return){h(new Set(S));return}if(z.escape){y();return}});let R=S.size===0?n.length:S.size;return jsxs(Box,{flexDirection:"column",borderStyle:"round",borderColor:e.amber,paddingX:1,children:[jsxs(Box,{gap:1,children:[jsx(Text,{color:e.amber,bold:true,children:" \u25C8 Agent Filter"}),jsxs(Text,{color:e.dim,children:[fe," ",R,"/",n.length," selected"]})]}),jsx(Text,{color:e.ghost,children:je.repeat(36)}),_.map((C,z)=>{let B=z+L===m,H=S.size===0||S.has(C.id),G=s.get(C.id)??e.silver,W=r.get(C.id)??0;return jsxs(Box,{gap:0,children:[jsx(Text,{color:B?e.amber:e.ghost,children:B?" \u25B8 ":" "}),jsx(Text,{color:H?e.green:e.ghost,children:H?"[\u2713]":"[ ]"}),jsxs(Text,{color:B?G:H?e.silver:e.dim,bold:B,children:[" ",C.name]}),W>0&&jsxs(Text,{color:e.dim,children:[" ",fe,W]})]},C.id)}),n.length>v&&jsxs(Text,{color:e.ghost,children:[" ",L>0?"\u2191":" "," ",L+v<n.length?"\u2193":" "," ",m+1,"/",n.length]}),jsx(Text,{color:e.ghost,children:je.repeat(36)}),jsxs(Text,{color:e.dim,children:[" Space toggle"," ",fe," ","a all"," ",fe," ","Enter confirm"," ",fe," ","Esc cancel"]})]})});var vc={system:"\u2666",lifecycle:"\u25B6",output:"\u2502",tool:"\u2699",result:"\u2190",error:"\u2715",file:"\u270E",info:"\u2502"},_c={system:"System",lifecycle:"Lifecycle",output:"Output",tool:"Tool calls",result:"Results",error:"Errors",file:"Files",info:"Info"},Mc={system:e.purple,lifecycle:e.cyan,output:e.white,tool:e.blue,result:e.green,error:e.red,file:e.purple,info:e.silver},St=["system","lifecycle","output","tool","result","error","file","info"],wi=[{key:"1",label:"all",types:St},{key:"2",label:"text",types:["output"]},{key:"3",label:"tools",types:["tool","result","file"]},{key:"4",label:"errors",types:["error"]},{key:"5",label:"events",types:["lifecycle","system"]}],Si=uo.memo(function({selected:n,typeCounts:o,onConfirm:r,onCancel:s}){let[f,h]=useState(0),[y,m]=useState(()=>new Set(n)),T=useMemo(()=>y.size===St.length||St.every(I=>y.has(I)),[y]);useInput((I,M)=>{if(M.upArrow){h(v=>v>0?v-1:St.length-1);return}if(M.downArrow){h(v=>v<St.length-1?v+1:0);return}if(I===" "){let v=St[f];if(!v)return;m(L=>{let _=new Set(L);return _.has(v)?_.delete(v):_.add(v),_});return}if(I==="a"||I==="A"){m(v=>v.size===St.length?new Set:new Set(St));return}for(let v of wi)if(I===v.key){m(new Set(v.types));return}if(M.return){let v=y.size===0?new Set(St):new Set(y);r(v);return}if(M.escape){s();return}});let S=T?St.length:y.size;return jsxs(Box,{flexDirection:"column",borderStyle:"round",borderColor:e.amber,paddingX:1,children:[jsxs(Box,{gap:1,children:[jsx(Text,{color:e.amber,bold:true,children:" \u25C8 Type Filter"}),jsxs(Text,{color:e.dim,children:[fe," ",S,"/",St.length," selected"]})]}),jsx(Text,{color:e.ghost,children:je.repeat(36)}),St.map((I,M)=>{let v=M===f,L=y.has(I),_=o[I]??0,R=Mc[I];return jsxs(Box,{gap:0,children:[jsx(Text,{color:v?e.amber:e.ghost,children:v?" \u25B8 ":" "}),jsx(Text,{color:L?e.green:e.ghost,children:L?"[\u2713]":"[ ]"}),jsxs(Text,{color:v?R:e.dim,children:[" ",vc[I]," "]}),jsx(Text,{color:v?R:L?e.silver:e.dim,bold:v,children:_c[I]}),_>0&&jsxs(Text,{color:e.dim,children:[" ",fe,_]})]},I)}),jsx(Text,{color:e.ghost,children:je.repeat(36)}),jsxs(Box,{gap:0,children:[jsx(Text,{color:e.dim,children:" "}),wi.map((I,M)=>jsxs(uo.Fragment,{children:[M>0&&jsxs(Text,{color:e.ghost,children:[" ",fe," "]}),jsx(Text,{color:e.amberDim,children:I.key}),jsxs(Text,{color:e.dim,children:["=",I.label]})]},I.key))]}),jsxs(Text,{color:e.dim,children:[" Space toggle"," ",fe," ","a all"," ",fe," ","Enter confirm"," ",fe," ","Esc cancel"]})]})});var qo="\u256D",Ko="\u256E",Yo="\u2570",Zo="\u256F",Ie="\u2502";function on({children:t,cw:n}){return jsxs(Text,{children:[jsx(Text,{color:e.ghost,children:Ie}),jsxs(Text,{children:[" ",t.padEnd(n)," "]}),jsx(Text,{color:e.ghost,children:Ie})]})}function Xo({cw:t}){return jsx(on,{cw:t,children:""})}function ki({width:t,height:n}){let o=Math.min(t-4,50),r=o-6,s=Te(o-2);return jsxs(Box,{flexDirection:"column",paddingX:2,marginTop:1,children:[jsxs(Text,{color:e.ghost,children:[qo,s,Ko]}),jsx(on,{cw:r,children:""}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.amber,children:jt}),jsx(Text,{color:e.white,bold:true,children:" Welcome to Orch"}),jsx(Text,{children:" ".repeat(Math.max(0,r-15-2))}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(on,{cw:r,children:""}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.silver,children:"Press N to create your first task".padEnd(r)}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(on,{cw:r,children:""}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.amber,children:"N"}),jsx(Text,{color:e.gray,children:" new task"}),jsx(Text,{children:" ".repeat(Math.max(0,r-1-1-8))}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(on,{cw:r,children:""}),jsxs(Text,{color:e.ghost,children:[Yo,s,Zo]})]})}function Ci({step:t,width:n}){let o=Math.min(n-4,50),r=o-6,s=Te(o-2),f,h=null;if(t==="task_created")f="Press R to run task",h={key:"R",label:"run task"};else if(t==="run_started")f="Agent is running your task...";else return null;return jsxs(Box,{flexDirection:"column",paddingX:2,marginTop:1,children:[jsxs(Text,{color:e.ghost,children:[qo,s,Ko]}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.amber,children:jt}),jsxs(Text,{color:e.silver,children:[" ",f.padEnd(h?r-2-h.key.length-1-h.label.length-2:r-2)]}),h&&jsxs(Fragment,{children:[jsxs(Text,{color:e.amber,children:[" ",h.key]}),jsxs(Text,{color:e.gray,children:[" ",h.label]})]}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsxs(Text,{color:e.ghost,children:[Yo,s,Zo]})]})}function Ii({width:t}){let n=Math.min(t-4,50),o=n-6,r=Te(n-2);return jsxs(Box,{flexDirection:"column",paddingX:2,marginTop:1,children:[jsxs(Text,{color:e.ghost,children:[qo,r,Ko]}),jsx(on,{cw:o,children:""}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.green,bold:true,children:"First task completed!"}),jsx(Text,{children:" ".repeat(Math.max(0,o-21))}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(on,{cw:o,children:""}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.silver,children:"Type / to see all commands".padEnd(o)}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(on,{cw:o,children:""}),jsxs(Text,{color:e.ghost,children:[Yo,r,Zo]})]})}function Jo({count:t,config:n,width:o}){if(t>=3)return null;let r=Math.min((o??44)-4,50),s=r-6,f=Te(r-2),h=jsxs(Text,{color:e.ghost,children:[qo,f,Ko]}),y=jsxs(Text,{color:e.ghost,children:[Yo,f,Zo]});if(t>0){let T=n.hints[0],S=T?` ${T.key} ${T.label}`:"";return jsxs(Box,{flexDirection:"column",paddingX:2,marginTop:1,children:[h,jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.amber,children:jt}),jsxs(Text,{color:e.silver,children:[" ",n.nudge.padEnd(s-2-S.length)]}),T&&jsxs(Fragment,{children:[jsxs(Text,{color:e.amber,children:[" ",T.key]}),jsxs(Text,{color:e.gray,children:[" ",T.label]})]}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),y]})}let m=n.hints.reduce((T,S,I)=>T+S.key.length+1+S.label.length+(I>0?3:0),0);return jsxs(Box,{flexDirection:"column",paddingX:2,marginTop:1,children:[h,jsx(Xo,{cw:s}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.amber,children:jt}),jsxs(Text,{color:e.white,bold:true,children:[" ",n.title]}),jsx(Text,{children:" ".repeat(Math.max(0,s-n.title.length-2))}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(Xo,{cw:s}),n.description.map((T,S)=>jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.silver,children:T.padEnd(s)}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]},S)),jsx(Xo,{cw:s}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),n.hints.map((T,S)=>jsxs(uo.Fragment,{children:[S>0&&jsx(Text,{color:e.ghost,children:" "}),jsx(Text,{color:e.amber,children:T.key}),jsxs(Text,{color:e.gray,children:[" ",T.label]})]},S)),jsx(Text,{children:" ".repeat(Math.max(0,s-m))}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(Xo,{cw:s}),y]})}var _i={title:"Goals",description:["Define what your team should achieve.","The orchestrator breaks goals into tasks","and assigns them to agents automatically."],hints:[{key:"N",label:"new goal"},{key:"/",label:"commands"}],nudge:"Add more goals to keep your team focused."},Mi={title:"Tasks",description:["Units of work dispatched to agents.","Create them manually or let goals","generate them automatically."],hints:[{key:"N",label:"new task"},{key:"W",label:"start orchestrator"}],nudge:"Add more tasks to keep agents busy."},Ri={title:"Agents",description:["AI workers that execute your tasks.","Each agent uses an adapter (claude,","codex, opencode, cursor, pi, shell)."],hints:[{key:"N",label:"new agent"},{key:"W",label:"start orchestrator"}],nudge:"Add more agents to increase parallelism."};var Ac=2,Bi=360,$c={done:4e3,failed:8e3,review:6e3},Bc={done:"\u2713",failed:"\u2715",review:Zt},Ec={done:e.green,failed:e.red,review:e.blue},Oc={done:e.successBg,failed:e.errorBg,review:e.infoBg};function Lc(t){let n=t.agentName??"Agent";switch(t.type){case "done":return `Task completed by ${n}`;case "failed":return "Task failed \u2014 press Enter for details";case "review":return "Task ready for review \u2014 press A to approve"}}var Pc=uo.memo(function({toast:n,onDismiss:o}){let[r,s]=useState(true),[f,h]=useState(false);useEffect(()=>{let v=setTimeout(()=>s(false),Bi);return ()=>clearTimeout(v)},[]),useEffect(()=>{let v=$c[n.type],L=setTimeout(()=>h(true),v),_=setTimeout(()=>o(n.id),v+Bi);return ()=>{clearTimeout(L),clearTimeout(_);}},[n.id,n.type,o]);let y=r||f,m=Bc[n.type],T=Ec[n.type],S=Oc[n.type],I=Lc(n),M=n.title.length>40?n.title.slice(0,39)+"\u2026":n.title;return jsx(Box,{children:jsxs(Text,{backgroundColor:S,children:[jsxs(Text,{color:y?e.dim:T,children:[" ",m," "]}),jsx(Text,{color:y?e.dim:e.white,bold:!y,children:M}),jsxs(Text,{color:y?e.dim:e.silver,children:[" ",I," "]})]})})}),Li=uo.memo(function({toasts:n,onDismiss:o}){let r=n.slice(0,Ac);return r.length===0?null:jsx(Box,{flexDirection:"column",children:r.map(s=>jsx(Pc,{toast:s,onDismiss:o},s.id))})});var Fc="\u256D",Wc="\u256E",Gc="\u2570",zc="\u256F",dt="\u2502",zr=[{key:"\u2191\u2193/j/k",label:"Navigate"},{key:"Tab/\u2190\u2192",label:"Switch tabs"},{key:"Enter",label:"Detail view"},{key:"G",label:"Goals tab"},{key:"T",label:"Tasks tab"},{key:"A",label:"Agents tab"},{key:"L",label:"Logs tab"}],Vr=[{key:"N",label:"New item"},{key:"E",label:"Edit"},{key:"D",label:"Delete"},{key:"R",label:"Run task"},{key:"S",label:"Show / Stop"},{key:"C",label:"Cancel"},{key:"A",label:"Approve"},{key:"X",label:"Reject"},{key:"U",label:"Autonomous"},{key:"Z",label:"Undo delete"}],jr=[{key:"/",label:"Command mode"},{key:"/task add",label:"Create task"},{key:"/run",label:"Execute"},{key:"/watch",label:"Auto-dispatch"},{key:"/config",label:"Settings"},{key:"/help",label:"Help"},{key:"/quit",label:"Exit"}],Vn=10,Xt=22;function Hr(t){let n=Math.max(0,Math.floor((Xt-t.length-2)/2)),o=Math.max(0,Xt-n-t.length-2);return Te(n)+" "+t+" "+Te(o)}var Pi=uo.memo(function({width:n,height:o}){let r=Xt*3+3+3+2,s=r+2,f=Te(s-2),h="KEYBOARD SHORTCUTS",y=Math.max(0,Math.floor((r-h.length)/2)),m=Math.max(0,r-y-h.length),T="Press any key to dismiss",S=Math.max(0,Math.floor((r-T.length)/2)),I=Math.max(0,r-S-T.length),M=Math.max(zr.length,Vr.length,jr.length),v=M+10,L=Math.max(0,Math.floor((o-v)/2)),_=[];for(let B=0;B<M;B++){let H=B<zr.length?zr[B]:null,G=B<Vr.length?Vr[B]:null,W=B<jr.length?jr[B]:null;_.push(jsxs(Text,{children:[jsx(Text,{color:e.amber,children:dt}),jsx(Text,{children:" "}),H?jsxs(Fragment,{children:[jsx(Text,{color:e.amber,bold:true,children:H.key.padEnd(Vn)}),jsx(Text,{color:e.silver,children:H.label.padEnd(Xt-Vn)})]}):jsx(Text,{children:" ".repeat(Xt)}),jsxs(Text,{color:e.dim,children:[" ",dt," "]}),G?jsxs(Fragment,{children:[jsx(Text,{color:e.amber,bold:true,children:G.key.padEnd(Vn)}),jsx(Text,{color:e.silver,children:G.label.padEnd(Xt-Vn)})]}):jsx(Text,{children:" ".repeat(Xt)}),jsxs(Text,{color:e.dim,children:[" ",dt," "]}),W?jsxs(Fragment,{children:[jsx(Text,{color:e.amber,bold:true,children:W.key.padEnd(Vn)}),jsx(Text,{color:e.silver,children:W.label.padEnd(Xt-Vn)})]}):jsx(Text,{children:" ".repeat(Xt)}),jsx(Text,{children:" "}),jsx(Text,{color:e.amber,children:dt})]},`r${B}`));}let R=B=>jsxs(Text,{children:[jsx(Text,{color:e.amber,children:dt}),jsx(Text,{children:" ".repeat(r)}),jsx(Text,{color:e.amber,children:dt})]},B),C=Hr("NAVIGATION"),z=Hr("ACTIONS"),P=Hr("COMMANDS");return jsxs(Box,{flexDirection:"column",paddingX:Math.max(0,Math.floor((n-s)/2)),marginTop:L,children:[jsxs(Text,{color:e.amber,children:[Fc,f,Wc]}),R("e1"),jsxs(Text,{children:[jsx(Text,{color:e.amber,children:dt}),jsx(Text,{children:" ".repeat(y)}),jsx(Text,{color:e.amber,bold:true,children:h}),jsx(Text,{children:" ".repeat(m)}),jsx(Text,{color:e.amber,children:dt})]}),R("e2"),jsxs(Text,{children:[jsx(Text,{color:e.amber,children:dt}),jsx(Text,{children:" "}),jsx(Text,{color:e.dim,children:C}),jsxs(Text,{color:e.dim,children:[" ",dt," "]}),jsx(Text,{color:e.dim,children:z}),jsxs(Text,{color:e.dim,children:[" ",dt," "]}),jsx(Text,{color:e.dim,children:P}),jsx(Text,{children:" "}),jsx(Text,{color:e.amber,children:dt})]}),R("e3"),_,R("e4"),jsxs(Text,{children:[jsx(Text,{color:e.amber,children:dt}),jsx(Text,{children:" ".repeat(S)}),jsx(Text,{color:e.dim,children:T}),jsx(Text,{children:" ".repeat(I)}),jsx(Text,{color:e.amber,children:dt})]}),R("e5"),jsxs(Text,{color:e.amber,children:[Gc,f,zc]})]})});var Fi=[{value:"claude-opus-4-6",label:"Claude Opus 4.6",hint:"most capable"},{value:"claude-sonnet-4-6",label:"Claude Sonnet 4.6",hint:"fast, balanced"},{value:"claude-haiku-4-6",label:"Claude Haiku 4.6",hint:"fastest, cheapest"},{value:"claude-sonnet-4-5-20250929",label:"Claude Sonnet 4.5",hint:"extended thinking"},{value:"claude-haiku-4-5-20251001",label:"Claude Haiku 4.5",hint:"legacy"}],Wi=[{value:"gpt-5.3-codex",label:"GPT-5.3 Codex",hint:"default, balanced"},{value:"gpt-5.4",label:"GPT-5.4",hint:"latest"},{value:"gpt-5",label:"GPT-5",hint:"capable"},{value:"gpt-5.3-codex-spark",label:"GPT-5.3 Codex Spark",hint:"fast"},{value:"o3",label:"o3",hint:"reasoning"},{value:"o4-mini",label:"o4-mini",hint:"fast reasoning"},{value:"gpt-5-mini",label:"GPT-5 Mini",hint:"light"},{value:"gpt-5-nano",label:"GPT-5 Nano",hint:"cheapest"},{value:"codex-mini-latest",label:"Codex Mini",hint:"legacy"}],Gi=[{value:"auto",label:"Auto",hint:"let Cursor decide"},{value:"composer-1.5",label:"Composer 1.5",hint:"latest agent"},{value:"composer-1",label:"Composer 1",hint:"stable agent"},{value:"gpt-5.3-codex",label:"GPT-5.3 Codex",hint:"OpenAI"},{value:"claude-sonnet-4-6",label:"Claude Sonnet 4.6",hint:"Anthropic"}],zi=[{value:"",label:"Default",hint:"use model configured in opencode"},{value:"openrouter/anthropic/claude-sonnet-4.6",label:"Claude Sonnet 4.6",hint:"fast, balanced"},{value:"openrouter/anthropic/claude-opus-4.6",label:"Claude Opus 4.6",hint:"most capable"},{value:"openrouter/google/gemini-2.5-pro",label:"Gemini 2.5 Pro",hint:"Google"},{value:"openrouter/google/gemini-2.5-flash",label:"Gemini 2.5 Flash",hint:"Google, fast"},{value:"openrouter/deepseek/deepseek-v3.2",label:"DeepSeek V3.2",hint:"open-source"},{value:"openrouter/deepseek/deepseek-r1:free",label:"DeepSeek R1",hint:"reasoning, free"},{value:"opencode/big-pickle",label:"Big Pickle",hint:"opencode native"}],Vi=[{value:"openai-codex/gpt-5.5",label:"GPT-5.5",hint:"Pi OpenAI Codex provider"},{value:"openai-codex/gpt-5.4",label:"GPT-5.4",hint:"Pi OpenAI Codex provider"},{value:"openai-codex/gpt-5.3-codex",label:"GPT-5.3 Codex",hint:"Pi OpenAI Codex provider"},{value:"",label:"Default",hint:"use Pi configured default"}],ji=[{value:"",label:"Default",hint:"use shell adapter default"}],Hi=[{value:"",label:"Default",hint:"no override \u2014 use model default"},{value:"high",label:"High",hint:"deepest reasoning, best quality, slowest"},{value:"medium",label:"Medium",hint:"balanced speed and quality"},{value:"low",label:"Low",hint:"fastest responses, minimal reasoning"}],Ui=new Set(["claude","pi"]),Vc=[{value:"claude",label:"Claude",hint:"Claude Code CLI"},{value:"opencode",label:"OpenCode",hint:"OpenCode \u2014 multi-provider"},{value:"codex",label:"Codex",hint:"OpenAI Codex CLI"},{value:"cursor",label:"Cursor",hint:"Cursor Agent CLI"},{value:"pi",label:"Pi",hint:"Pi coding agent RPC"},{value:"shell",label:"Shell",hint:"custom shell command"}],Xi=[{value:"1",label:"P1 Critical",hint:"urgent, do first"},{value:"2",label:"P2 High",hint:"important"},{value:"3",label:"P3 Medium",hint:"default priority"},{value:"4",label:"P4 Low",hint:"nice to have"}],Ni=60;function qi(t){return t.filter(n=>n.status!=="disabled").map(n=>{let o=(n.role??"").split(`
9
+ `):[""];R(ue),z(ue.length-1),B(ue[ue.length-1].length);}else if(ne.type==="multiselect"){G(0);let ae=I[ne.id];Ct(ae?new Set(ae.split(",")):new Set);}else {let ae=ne.getOptions?.(I)??ne.options??[],ue=I[ne.id],ce=ae.findIndex(Kt=>Kt.value===ue);G(ce>=0?ce:0);}};if(useInput((D,O)=>{if(w){if(O.escape){T===0?r():an();return}if((O.ctrl||O.meta)&&(D==="v"||D==="i")&&h&&(w.type==="text"||w.type==="textarea")){h();return}if(w.type==="text"){if(gt&&zt.length>0){if(O.upArrow){qt<=0?mt(false):Ze($=>$-1);return}if(O.downArrow){Ze($=>Math.min(zt.length-1,$+1));return}if(O.return){let $=zt[qt];$&&m&&m($.value);return}mt(false);}if(O.return||O.tab){let $=L.trim();if(w.required&&!$){Ce(true);return}if(Wt!==null){Ce(true),Je(true),Xe.current&&clearTimeout(Xe.current),Xe.current=setTimeout(()=>Je(false),2e3);return}sn($);return}if(O.downArrow&&w.suggestions&&zt.length>0){mt(true),Ze(0);return}if((O.backspace||O.delete)&&v.cursor.isEmpty&&T>0){an();return}v.handleInput(D,O)&&(Ce(true),mt(false),Ze(0));return}if(w.type==="textarea"){if(O.return&&(O.ctrl||O.meta)||O.tab){let N=_.join(`
10
+ `).trim();if(w.required&&!N){Ce(true);return}if(Wt!==null){Ce(true),Je(true),Xe.current&&clearTimeout(Xe.current),Xe.current=setTimeout(()=>Je(false),2e3);return}sn(N);return}if(O.return){Ce(true),R(N=>{let $=N[C]??"",q=$.slice(0,P),ne=$.slice(P),_e=[...N];return _e.splice(C,1,q,ne),_e}),z(N=>N+1),B(0);return}if(O.ctrl&&D==="a"){B(0);return}if(O.ctrl&&D==="e"){B((_[C]??"").length);return}if(O.ctrl&&D==="k"){Ce(true),R(N=>{let $=[...N];return $[C]=($[C]??"").slice(0,P),$});return}if(O.ctrl&&D==="u"){Ce(true),R(N=>{let $=[...N];return $[C]=($[C]??"").slice(P),$}),B(0);return}if(O.ctrl&&D==="w"){Ce(true);let N=C,$=P,q=_[N]??"",ne=fi(q,$);R(_e=>{let ae=[..._e];return ae[N]=q.slice(0,ne)+q.slice($),ae}),B(ne);return}if(O.meta&&(O.leftArrow||D==="b")){B(fi(_[C]??"",P));return}if(O.meta&&(O.rightArrow||D==="f")){B(yc(_[C]??"",P));return}if(O.upArrow){if(Ge>0){let N=We[Ge],$=We[Ge-1],q=P-(N?.startCol??0),ne=Math.min($.startCol+q,$.startCol+$.text.length);z($.logicalRow),B(ne);}return}if(O.downArrow){if(Ge<We.length-1){let N=We[Ge],$=We[Ge+1],q=P-(N?.startCol??0),ne=Math.min($.startCol+q,$.startCol+$.text.length);z($.logicalRow),B(ne);}return}if(O.leftArrow){P>0?B(N=>N-1):C>0&&(z(N=>N-1),B((_[C-1]??"").length));return}if(O.rightArrow){let N=(_[C]??"").length;P<N?B($=>$+1):C<_.length-1&&(z($=>$+1),B(0));return}if(O.backspace||O.delete){if(P===0&&C===0)return;if(P>0)R(N=>{let $=[...N],q=$[C]??"";return $[C]=q.slice(0,P-1)+q.slice(P),$}),B(N=>N-1);else {let N=(_[C-1]??"").length;R($=>{let q=[...$],ne=q[C-1]??"",_e=q[C]??"";return q.splice(C-1,2,ne+_e),q}),B(N),z($=>$-1);}return}if(D&&!O.ctrl&&!O.meta&&!O.escape){Ce(true);let N=D.split(/\r?\n/);if(N.length===1)R($=>{let q=[...$],ne=q[C]??"";return q[C]=ne.slice(0,P)+D+ne.slice(P),q}),B($=>$+D.length);else {let $=C,q=P;R(ne=>{let _e=[...ne],ae=_e[$]??"",ue=ae.slice(0,q),ce=ae.slice(q),Kt=N[0]??"",de=N[N.length-1]??"",dr=[ue+Kt,...N.slice(1,-1),de+ce];return _e.splice($,1,...dr),_e}),z($+N.length-1),B((N[N.length-1]??"").length);}}return}if(w.type==="select"||w.type==="multiselect"){if(O.upArrow||D==="k"){G(N=>Math.max(0,N-1));return}if(O.downArrow||D==="j"){G(N=>Math.min($t.length-1,N+1));return}if(O.backspace||O.delete){an();return}if(w.type==="select"){if(O.return||O.tab){let N=$t[Gt];if(N){if(w.validate){let $=w.validate(N.value);if($!==null){Ce(true),It($),Je(true),Xe.current&&clearTimeout(Xe.current),Xe.current=setTimeout(()=>Je(false),2e3);return}}sn(N.value);}return}if(D>="1"&&D<="9"){let N=parseInt(D,10)-1;if(N<$t.length){let $=$t[N];$&&sn($.value);}return}}else {if(D===" "){let N=$t[Gt];N&&Ct($=>{let q=new Set($);return q.has(N.value)?q.delete(N.value):q.add(N.value),q});return}if(O.return||O.tab){let N=Array.from(ut).join(",");sn(N);return}}}}}),!w)return null;let vt=ft?Wt:null,wn=Math.max(20,s-6),Un=`${T+1}/${U}`,ln=Math.max(2,f-4),rt=0;Gt>=ln&&(rt=Gt-ln+1);let cn=$t.slice(rt,rt+ln);return jsxs(Box,{flexDirection:"column",paddingX:2,children:[jsxs(Box,{children:[jsx(Text,{color:e.amber,bold:true,children:t}),jsxs(Text,{color:e.ghost,children:[" ",je,je," "]}),jsxs(Text,{color:e.dim,children:["step ",Un]})]}),jsxs(Box,{children:[jsx(Text,{children:" "}),W.map((D,O)=>jsxs(Text,{color:O===T?e.amber:O<T?e.green:e.ghost,children:[O===T?"\u25CF":O<T?"\u2713":"\u25CB"," "]},D.id))]}),jsxs(Box,{marginTop:0,children:[jsxs(Text,{color:e.white,bold:true,children:[" ",w.label]}),w.required&&jsx(Text,{color:e.red,children:" *"}),!w.required&&jsxs(Text,{color:e.dim,children:[" (optional, ",w.type==="textarea"?`${Fr}+Enter/Tab`:"Enter/Tab"," to skip)"]})]}),w.description&&jsx(Box,{children:jsxs(Text,{color:e.dim,children:[" ",w.description]})}),w.type==="text"&&jsxs(Box,{flexDirection:"column",paddingLeft:2,children:[jsx(Ho,{cursor:v.cursor,width:wn-4,prefix:"> ",placeholder:w.placeholder,hasError:!!vt}),vt&&jsxs(Text,{color:e.red,dimColor:true,children:[" ",vt]}),ht&&jsx(Text,{color:e.red,children:" Fix the error above"})]}),w.type==="text"&&w.suggestions&&zt.length>0&&(()=>{let D=Math.max(2,f-6),O=0;gt&&qt>=D&&(O=qt-D+1);let N=zt.slice(O,O+D);return jsxs(Box,{flexDirection:"column",children:[jsxs(Text,{color:e.ghost,children:[" ",je,je,je," or browse templates ",je.repeat(Math.max(0,wn-28))]}),N.map(($,q)=>{let ne=q+O,_e=gt&&ne===qt;return jsxs(Box,{children:[jsx(Text,{color:_e?e.amber:e.ghost,children:_e?" \u25B8 ":" "}),jsx(Text,{color:_e?e.white:e.silver,bold:_e,children:$.label}),$.hint&&jsxs(Text,{color:e.dim,wrap:"truncate",children:[" ",je," ",$.hint.replace(/\n/g," ")]})]},$.value)})]})})(),w.type==="textarea"&&(()=>{let D=Math.max(3,f-6),O=0;Ge>=D&&(O=Ge-D+1);let N=We.slice(O,O+D);return jsxs(Box,{flexDirection:"column",children:[jsxs(Box,{flexDirection:"column",borderStyle:vt?"round":void 0,borderColor:vt?e.red:void 0,children:[N.map(($,q)=>{let ne=q+O,_e=$.isFirst?String($.logicalRow+1).padStart(oe," "):"".padStart(oe," "),ae=ne===Ge,ue=P-$.startCol;return jsxs(Box,{children:[jsxs(Text,{color:e.dim,children:[" ",_e," "]}),jsxs(Text,{color:e.ghost,children:["\u2502"," "]}),ae?jsxs(Fragment,{children:[jsx(Text,{color:e.white,children:$.text.slice(0,ue)}),jsx(Text,{color:e.amber,children:bc}),jsx(Text,{color:e.white,children:$.text.slice(ue)})]}):jsx(Text,{color:e.silver,children:$.text||($.isFirst?" ":"")})]},`${$.logicalRow}-${$.startCol}`)}),_.length===1&&_[0]===""&&w.placeholder&&jsx(Box,{children:jsxs(Text,{color:e.dim,children:[" ","".padStart(oe," ")," ",w.placeholder]})})]}),vt&&jsxs(Text,{color:e.red,dimColor:true,children:[" ",vt]}),ht&&jsx(Text,{color:e.red,children:" Fix the error above"})]})})(),w.type==="select"&&jsxs(Box,{flexDirection:"column",children:[cn.map((D,O)=>{let N=O+rt,$=N===Gt,q=String(N+1).padStart($t.length>=10?2:1);return jsxs(Box,{children:[jsx(Text,{color:$?e.amber:e.ghost,children:$?" \u25B8 ":` ${q} `}),jsx(Text,{color:$?e.white:e.silver,bold:$,children:D.label}),D.hint&&jsxs(Text,{color:e.dim,wrap:"truncate",children:[" ",je," ",D.hint.replace(/\n/g," ")]})]},D.value)}),vt&&jsxs(Text,{color:e.red,dimColor:true,children:[" ",vt]}),ht&&jsx(Text,{color:e.red,children:" Fix the error above"})]}),w.type==="multiselect"&&jsxs(Box,{flexDirection:"column",children:[cn.map((D,O)=>{let $=O+rt===Gt,q=ut.has(D.value);return jsxs(Box,{children:[jsx(Text,{color:$?e.amber:e.ghost,children:$?" \u25B8 ":" "}),jsx(Text,{color:q?e.green:e.dim,children:q?"[\u2713]":"[ ]"}),jsxs(Text,{color:$?e.white:e.silver,bold:$,children:[" ",D.label]}),D.hint&&jsxs(Text,{color:e.dim,wrap:"truncate",children:[" ",je," ",D.hint.replace(/\n/g," ")]})]},D.value)}),ut.size>0&&jsx(Box,{children:jsxs(Text,{color:e.dim,children:[" ","\u2514"," ",ut.size," selected"]})})]}),jsxs(Box,{marginTop:0,children:[jsxs(Text,{color:e.ghost,children:[" ",w.type==="select"?"\u2191\u2193 select Enter/Tab confirm":w.type==="multiselect"?"\u2191\u2193 move Space toggle Enter/Tab confirm":w.type==="textarea"?`Enter newline ${Fr}+Enter/Tab confirm \u2190\u2191\u2192\u2193 navigate`:gt?"\u2191\u2193 browse Enter select Tab confirm \u2191 back to input":w.suggestions?"\u2190\u2192 move Enter/Tab confirm \u2193 browse templates":"\u2190\u2192 move Enter/Tab confirm",h&&(w.type==="text"||w.type==="textarea")?` ${Fr}+V paste image`:""," Esc ",T>0?"back":"cancel"]}),y&&jsxs(Text,{color:e.amber,children:[" ",y]})]})]})}var bi=uo.memo(function({agents:n,selected:o,msgCounts:r,colorMap:s,maxHeight:f,onConfirm:h,onCancel:y}){let [m,T]=useState(0),[S,I]=useState(()=>new Set(o));useMemo(()=>S.size===0||S.size===n.length,[S.size,n.length]);let v=Math.max(3,f-5),L=useMemo(()=>{if(n.length<=v)return 0;let C=Math.floor(v/2),z=n.length-v;return Math.min(z,Math.max(0,m-C))},[m,n.length,v]),_=n.slice(L,L+v);useInput((C,z)=>{if(z.upArrow){T(P=>P>0?P-1:n.length-1);return}if(z.downArrow){T(P=>P<n.length-1?P+1:0);return}if(C===" "){let P=n[m];if(!P)return;I(B=>{let H=new Set(B);return H.has(P.id)?H.delete(P.id):H.add(P.id),H});return}if(C==="a"||C==="A"){I(P=>new Set);return}if(z.return){h(new Set(S));return}if(z.escape){y();return}});let R=S.size===0?n.length:S.size;return jsxs(Box,{flexDirection:"column",borderStyle:"round",borderColor:e.amber,paddingX:1,children:[jsxs(Box,{gap:1,children:[jsx(Text,{color:e.amber,bold:true,children:" \u25C8 Agent Filter"}),jsxs(Text,{color:e.dim,children:[fe," ",R,"/",n.length," selected"]})]}),jsx(Text,{color:e.ghost,children:je.repeat(36)}),_.map((C,z)=>{let B=z+L===m,H=S.size===0||S.has(C.id),G=s.get(C.id)??e.silver,W=r.get(C.id)??0;return jsxs(Box,{gap:0,children:[jsx(Text,{color:B?e.amber:e.ghost,children:B?" \u25B8 ":" "}),jsx(Text,{color:H?e.green:e.ghost,children:H?"[\u2713]":"[ ]"}),jsxs(Text,{color:B?G:H?e.silver:e.dim,bold:B,children:[" ",C.name]}),W>0&&jsxs(Text,{color:e.dim,children:[" ",fe,W]})]},C.id)}),n.length>v&&jsxs(Text,{color:e.ghost,children:[" ",L>0?"\u2191":" "," ",L+v<n.length?"\u2193":" "," ",m+1,"/",n.length]}),jsx(Text,{color:e.ghost,children:je.repeat(36)}),jsxs(Text,{color:e.dim,children:[" Space toggle"," ",fe," ","a all"," ",fe," ","Enter confirm"," ",fe," ","Esc cancel"]})]})});var vc={system:"\u2666",lifecycle:"\u25B6",output:"\u2502",tool:"\u2699",result:"\u2190",error:"\u2715",file:"\u270E",info:"\u2502"},_c={system:"System",lifecycle:"Lifecycle",output:"Output",tool:"Tool calls",result:"Results",error:"Errors",file:"Files",info:"Info"},Mc={system:e.purple,lifecycle:e.cyan,output:e.white,tool:e.blue,result:e.green,error:e.red,file:e.purple,info:e.silver},St=["system","lifecycle","output","tool","result","error","file","info"],wi=[{key:"1",label:"all",types:St},{key:"2",label:"text",types:["output"]},{key:"3",label:"tools",types:["tool","result","file"]},{key:"4",label:"errors",types:["error"]},{key:"5",label:"events",types:["lifecycle","system"]}],Si=uo.memo(function({selected:n,typeCounts:o,onConfirm:r,onCancel:s}){let[f,h]=useState(0),[y,m]=useState(()=>new Set(n)),T=useMemo(()=>y.size===St.length||St.every(I=>y.has(I)),[y]);useInput((I,M)=>{if(M.upArrow){h(v=>v>0?v-1:St.length-1);return}if(M.downArrow){h(v=>v<St.length-1?v+1:0);return}if(I===" "){let v=St[f];if(!v)return;m(L=>{let _=new Set(L);return _.has(v)?_.delete(v):_.add(v),_});return}if(I==="a"||I==="A"){m(v=>v.size===St.length?new Set:new Set(St));return}for(let v of wi)if(I===v.key){m(new Set(v.types));return}if(M.return){let v=y.size===0?new Set(St):new Set(y);r(v);return}if(M.escape){s();return}});let S=T?St.length:y.size;return jsxs(Box,{flexDirection:"column",borderStyle:"round",borderColor:e.amber,paddingX:1,children:[jsxs(Box,{gap:1,children:[jsx(Text,{color:e.amber,bold:true,children:" \u25C8 Type Filter"}),jsxs(Text,{color:e.dim,children:[fe," ",S,"/",St.length," selected"]})]}),jsx(Text,{color:e.ghost,children:je.repeat(36)}),St.map((I,M)=>{let v=M===f,L=y.has(I),_=o[I]??0,R=Mc[I];return jsxs(Box,{gap:0,children:[jsx(Text,{color:v?e.amber:e.ghost,children:v?" \u25B8 ":" "}),jsx(Text,{color:L?e.green:e.ghost,children:L?"[\u2713]":"[ ]"}),jsxs(Text,{color:v?R:e.dim,children:[" ",vc[I]," "]}),jsx(Text,{color:v?R:L?e.silver:e.dim,bold:v,children:_c[I]}),_>0&&jsxs(Text,{color:e.dim,children:[" ",fe,_]})]},I)}),jsx(Text,{color:e.ghost,children:je.repeat(36)}),jsxs(Box,{gap:0,children:[jsx(Text,{color:e.dim,children:" "}),wi.map((I,M)=>jsxs(uo.Fragment,{children:[M>0&&jsxs(Text,{color:e.ghost,children:[" ",fe," "]}),jsx(Text,{color:e.amberDim,children:I.key}),jsxs(Text,{color:e.dim,children:["=",I.label]})]},I.key))]}),jsxs(Text,{color:e.dim,children:[" Space toggle"," ",fe," ","a all"," ",fe," ","Enter confirm"," ",fe," ","Esc cancel"]})]})});var qo="\u256D",Ko="\u256E",Yo="\u2570",Zo="\u256F",Ie="\u2502";function on({children:t,cw:n}){return jsxs(Text,{children:[jsx(Text,{color:e.ghost,children:Ie}),jsxs(Text,{children:[" ",t.padEnd(n)," "]}),jsx(Text,{color:e.ghost,children:Ie})]})}function Xo({cw:t}){return jsx(on,{cw:t,children:""})}function ki({width:t,height:n}){let o=Math.min(t-4,50),r=o-6,s=Te(o-2);return jsxs(Box,{flexDirection:"column",paddingX:2,marginTop:1,children:[jsxs(Text,{color:e.ghost,children:[qo,s,Ko]}),jsx(on,{cw:r,children:""}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.amber,children:jt}),jsx(Text,{color:e.white,bold:true,children:" Welcome to Orch"}),jsx(Text,{children:" ".repeat(Math.max(0,r-15-2))}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(on,{cw:r,children:""}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.silver,children:"Press N to create your first task".padEnd(r)}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(on,{cw:r,children:""}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.amber,children:"N"}),jsx(Text,{color:e.gray,children:" new task"}),jsx(Text,{children:" ".repeat(Math.max(0,r-1-1-8))}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(on,{cw:r,children:""}),jsxs(Text,{color:e.ghost,children:[Yo,s,Zo]})]})}function Ci({step:t,width:n}){let o=Math.min(n-4,50),r=o-6,s=Te(o-2),f,h=null;if(t==="task_created")f="Press R to run task",h={key:"R",label:"run task"};else if(t==="run_started")f="Agent is running your task...";else return null;return jsxs(Box,{flexDirection:"column",paddingX:2,marginTop:1,children:[jsxs(Text,{color:e.ghost,children:[qo,s,Ko]}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.amber,children:jt}),jsxs(Text,{color:e.silver,children:[" ",f.padEnd(h?r-2-h.key.length-1-h.label.length-2:r-2)]}),h&&jsxs(Fragment,{children:[jsxs(Text,{color:e.amber,children:[" ",h.key]}),jsxs(Text,{color:e.gray,children:[" ",h.label]})]}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsxs(Text,{color:e.ghost,children:[Yo,s,Zo]})]})}function Ii({width:t}){let n=Math.min(t-4,50),o=n-6,r=Te(n-2);return jsxs(Box,{flexDirection:"column",paddingX:2,marginTop:1,children:[jsxs(Text,{color:e.ghost,children:[qo,r,Ko]}),jsx(on,{cw:o,children:""}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.green,bold:true,children:"First task completed!"}),jsx(Text,{children:" ".repeat(Math.max(0,o-21))}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(on,{cw:o,children:""}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.silver,children:"Type / to see all commands".padEnd(o)}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(on,{cw:o,children:""}),jsxs(Text,{color:e.ghost,children:[Yo,r,Zo]})]})}function Jo({count:t,config:n,width:o}){if(t>=3)return null;let r=Math.min((o??44)-4,50),s=r-6,f=Te(r-2),h=jsxs(Text,{color:e.ghost,children:[qo,f,Ko]}),y=jsxs(Text,{color:e.ghost,children:[Yo,f,Zo]});if(t>0){let T=n.hints[0],S=T?` ${T.key} ${T.label}`:"";return jsxs(Box,{flexDirection:"column",paddingX:2,marginTop:1,children:[h,jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.amber,children:jt}),jsxs(Text,{color:e.silver,children:[" ",n.nudge.padEnd(s-2-S.length)]}),T&&jsxs(Fragment,{children:[jsxs(Text,{color:e.amber,children:[" ",T.key]}),jsxs(Text,{color:e.gray,children:[" ",T.label]})]}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),y]})}let m=n.hints.reduce((T,S,I)=>T+S.key.length+1+S.label.length+(I>0?3:0),0);return jsxs(Box,{flexDirection:"column",paddingX:2,marginTop:1,children:[h,jsx(Xo,{cw:s}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.amber,children:jt}),jsxs(Text,{color:e.white,bold:true,children:[" ",n.title]}),jsx(Text,{children:" ".repeat(Math.max(0,s-n.title.length-2))}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(Xo,{cw:s}),n.description.map((T,S)=>jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.silver,children:T.padEnd(s)}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]},S)),jsx(Xo,{cw:s}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),n.hints.map((T,S)=>jsxs(uo.Fragment,{children:[S>0&&jsx(Text,{color:e.ghost,children:" "}),jsx(Text,{color:e.amber,children:T.key}),jsxs(Text,{color:e.gray,children:[" ",T.label]})]},S)),jsx(Text,{children:" ".repeat(Math.max(0,s-m))}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(Xo,{cw:s}),y]})}var _i={title:"Goals",description:["Define what your team should achieve.","The orchestrator breaks goals into tasks","and assigns them to agents automatically."],hints:[{key:"N",label:"new goal"},{key:"/",label:"commands"}],nudge:"Add more goals to keep your team focused."},Mi={title:"Tasks",description:["Units of work dispatched to agents.","Create them manually or let goals","generate them automatically."],hints:[{key:"N",label:"new task"},{key:"W",label:"start orchestrator"}],nudge:"Add more tasks to keep agents busy."},Ri={title:"Agents",description:["AI workers that execute your tasks.","Each agent uses an adapter (claude,","codex, opencode, cursor, pi, shell)."],hints:[{key:"N",label:"new agent"},{key:"W",label:"start orchestrator"}],nudge:"Add more agents to increase parallelism."};var Ac=2,Bi=360,$c={done:4e3,failed:8e3,review:6e3},Bc={done:"\u2713",failed:"\u2715",review:Zt},Ec={done:e.green,failed:e.red,review:e.blue},Oc={done:e.successBg,failed:e.errorBg,review:e.infoBg};function Lc(t){let n=t.agentName??"Agent";switch(t.type){case "done":return `Task completed by ${n}`;case "failed":return "Task failed \u2014 press Enter for details";case "review":return "Task ready for review \u2014 press A to approve"}}var Pc=uo.memo(function({toast:n,onDismiss:o}){let[r,s]=useState(true),[f,h]=useState(false);useEffect(()=>{let v=setTimeout(()=>s(false),Bi);return ()=>clearTimeout(v)},[]),useEffect(()=>{let v=$c[n.type],L=setTimeout(()=>h(true),v),_=setTimeout(()=>o(n.id),v+Bi);return ()=>{clearTimeout(L),clearTimeout(_);}},[n.id,n.type,o]);let y=r||f,m=Bc[n.type],T=Ec[n.type],S=Oc[n.type],I=Lc(n),M=n.title.length>40?n.title.slice(0,39)+"\u2026":n.title;return jsx(Box,{children:jsxs(Text,{backgroundColor:S,children:[jsxs(Text,{color:y?e.dim:T,children:[" ",m," "]}),jsx(Text,{color:y?e.dim:e.white,bold:!y,children:M}),jsxs(Text,{color:y?e.dim:e.silver,children:[" ",I," "]})]})})}),Li=uo.memo(function({toasts:n,onDismiss:o}){let r=n.slice(0,Ac);return r.length===0?null:jsx(Box,{flexDirection:"column",children:r.map(s=>jsx(Pc,{toast:s,onDismiss:o},s.id))})});var Fc="\u256D",Wc="\u256E",Gc="\u2570",zc="\u256F",dt="\u2502",zr=[{key:"\u2191\u2193/j/k",label:"Navigate"},{key:"Tab/\u2190\u2192",label:"Switch tabs"},{key:"Enter",label:"Detail view"},{key:"G",label:"Goals tab"},{key:"T",label:"Tasks tab"},{key:"A",label:"Agents tab"},{key:"L",label:"Logs tab"}],Vr=[{key:"N",label:"New item"},{key:"E",label:"Edit"},{key:"D",label:"Delete"},{key:"R",label:"Run task"},{key:"S",label:"Show / Stop"},{key:"C",label:"Cancel"},{key:"A",label:"Approve"},{key:"X",label:"Reject"},{key:"U",label:"Autonomous"},{key:"Z",label:"Undo delete"}],jr=[{key:"/",label:"Command mode"},{key:"/task add",label:"Create task"},{key:"/run",label:"Execute"},{key:"/watch",label:"Auto-dispatch"},{key:"/config",label:"Settings"},{key:"/help",label:"Help"},{key:"/quit",label:"Exit"}],Vn=10,Xt=22;function Hr(t){let n=Math.max(0,Math.floor((Xt-t.length-2)/2)),o=Math.max(0,Xt-n-t.length-2);return Te(n)+" "+t+" "+Te(o)}var Pi=uo.memo(function({width:n,height:o}){let r=Xt*3+3+3+2,s=r+2,f=Te(s-2),h="KEYBOARD SHORTCUTS",y=Math.max(0,Math.floor((r-h.length)/2)),m=Math.max(0,r-y-h.length),T="Press any key to dismiss",S=Math.max(0,Math.floor((r-T.length)/2)),I=Math.max(0,r-S-T.length),M=Math.max(zr.length,Vr.length,jr.length),v=M+10,L=Math.max(0,Math.floor((o-v)/2)),_=[];for(let B=0;B<M;B++){let H=B<zr.length?zr[B]:null,G=B<Vr.length?Vr[B]:null,W=B<jr.length?jr[B]:null;_.push(jsxs(Text,{children:[jsx(Text,{color:e.amber,children:dt}),jsx(Text,{children:" "}),H?jsxs(Fragment,{children:[jsx(Text,{color:e.amber,bold:true,children:H.key.padEnd(Vn)}),jsx(Text,{color:e.silver,children:H.label.padEnd(Xt-Vn)})]}):jsx(Text,{children:" ".repeat(Xt)}),jsxs(Text,{color:e.dim,children:[" ",dt," "]}),G?jsxs(Fragment,{children:[jsx(Text,{color:e.amber,bold:true,children:G.key.padEnd(Vn)}),jsx(Text,{color:e.silver,children:G.label.padEnd(Xt-Vn)})]}):jsx(Text,{children:" ".repeat(Xt)}),jsxs(Text,{color:e.dim,children:[" ",dt," "]}),W?jsxs(Fragment,{children:[jsx(Text,{color:e.amber,bold:true,children:W.key.padEnd(Vn)}),jsx(Text,{color:e.silver,children:W.label.padEnd(Xt-Vn)})]}):jsx(Text,{children:" ".repeat(Xt)}),jsx(Text,{children:" "}),jsx(Text,{color:e.amber,children:dt})]},`r${B}`));}let R=B=>jsxs(Text,{children:[jsx(Text,{color:e.amber,children:dt}),jsx(Text,{children:" ".repeat(r)}),jsx(Text,{color:e.amber,children:dt})]},B),C=Hr("NAVIGATION"),z=Hr("ACTIONS"),P=Hr("COMMANDS");return jsxs(Box,{flexDirection:"column",paddingX:Math.max(0,Math.floor((n-s)/2)),marginTop:L,children:[jsxs(Text,{color:e.amber,children:[Fc,f,Wc]}),R("e1"),jsxs(Text,{children:[jsx(Text,{color:e.amber,children:dt}),jsx(Text,{children:" ".repeat(y)}),jsx(Text,{color:e.amber,bold:true,children:h}),jsx(Text,{children:" ".repeat(m)}),jsx(Text,{color:e.amber,children:dt})]}),R("e2"),jsxs(Text,{children:[jsx(Text,{color:e.amber,children:dt}),jsx(Text,{children:" "}),jsx(Text,{color:e.dim,children:C}),jsxs(Text,{color:e.dim,children:[" ",dt," "]}),jsx(Text,{color:e.dim,children:z}),jsxs(Text,{color:e.dim,children:[" ",dt," "]}),jsx(Text,{color:e.dim,children:P}),jsx(Text,{children:" "}),jsx(Text,{color:e.amber,children:dt})]}),R("e3"),_,R("e4"),jsxs(Text,{children:[jsx(Text,{color:e.amber,children:dt}),jsx(Text,{children:" ".repeat(S)}),jsx(Text,{color:e.dim,children:T}),jsx(Text,{children:" ".repeat(I)}),jsx(Text,{color:e.amber,children:dt})]}),R("e5"),jsxs(Text,{color:e.amber,children:[Gc,f,zc]})]})});var Fi=[{value:"claude-opus-4-6",label:"Claude Opus 4.6",hint:"most capable"},{value:"claude-sonnet-4-6",label:"Claude Sonnet 4.6",hint:"fast, balanced"},{value:"claude-haiku-4-6",label:"Claude Haiku 4.6",hint:"fastest, cheapest"},{value:"claude-sonnet-4-5-20250929",label:"Claude Sonnet 4.5",hint:"extended thinking"},{value:"claude-haiku-4-5-20251001",label:"Claude Haiku 4.5",hint:"legacy"}],Wi=[{value:"gpt-5.3-codex",label:"GPT-5.3 Codex",hint:"default, balanced"},{value:"gpt-5.4",label:"GPT-5.4",hint:"latest"},{value:"gpt-5",label:"GPT-5",hint:"capable"},{value:"gpt-5.3-codex-spark",label:"GPT-5.3 Codex Spark",hint:"fast"},{value:"o3",label:"o3",hint:"reasoning"},{value:"o4-mini",label:"o4-mini",hint:"fast reasoning"},{value:"gpt-5-mini",label:"GPT-5 Mini",hint:"light"},{value:"gpt-5-nano",label:"GPT-5 Nano",hint:"cheapest"},{value:"codex-mini-latest",label:"Codex Mini",hint:"legacy"}],Gi=[{value:"auto",label:"Auto",hint:"let Cursor decide"},{value:"composer-1.5",label:"Composer 1.5",hint:"latest agent"},{value:"composer-1",label:"Composer 1",hint:"stable agent"},{value:"gpt-5.3-codex",label:"GPT-5.3 Codex",hint:"OpenAI"},{value:"claude-sonnet-4-6",label:"Claude Sonnet 4.6",hint:"Anthropic"}],zi=[{value:"",label:"Default",hint:"use model configured in opencode"},{value:"openrouter/anthropic/claude-sonnet-4.6",label:"Claude Sonnet 4.6",hint:"fast, balanced"},{value:"openrouter/anthropic/claude-opus-4.6",label:"Claude Opus 4.6",hint:"most capable"},{value:"openrouter/google/gemini-2.5-pro",label:"Gemini 2.5 Pro",hint:"Google"},{value:"openrouter/google/gemini-2.5-flash",label:"Gemini 2.5 Flash",hint:"Google, fast"},{value:"openrouter/deepseek/deepseek-v3.2",label:"DeepSeek V3.2",hint:"open-source"},{value:"openrouter/deepseek/deepseek-r1:free",label:"DeepSeek R1",hint:"reasoning, free"},{value:"opencode/big-pickle",label:"Big Pickle",hint:"opencode native"}],Vi=[{value:"openai-codex/gpt-5.5",label:"GPT-5.5",hint:"Pi OpenAI Codex provider"},{value:"openai-codex/gpt-5.4",label:"GPT-5.4",hint:"Pi OpenAI Codex provider"},{value:"openai-codex/gpt-5.3-codex",label:"GPT-5.3 Codex",hint:"Pi OpenAI Codex provider"},{value:"",label:"Default",hint:"use Pi configured default"}],ji=[{value:"",label:"Default",hint:"use shell adapter default"}],Hi=[{value:"",label:"Default",hint:"no override \u2014 use model default"},{value:"high",label:"High",hint:"deepest reasoning, best quality, slowest"},{value:"medium",label:"Medium",hint:"balanced speed and quality"},{value:"low",label:"Low",hint:"fastest responses, minimal reasoning"}],Ui=new Set(["claude","pi"]),Vc=[{value:"claude",label:"Claude",hint:"Claude Code CLI"},{value:"opencode",label:"OpenCode",hint:"OpenCode \u2014 multi-provider"},{value:"codex",label:"Codex",hint:"OpenAI Codex CLI"},{value:"cursor",label:"Cursor",hint:"Cursor Agent CLI"},{value:"pi",label:"Pi",hint:"Pi coding agent RPC"},{value:"shell",label:"Shell",hint:"custom shell command"}],Xi=[{value:"1",label:"P1 Critical",hint:"urgent, do first"},{value:"2",label:"P2 High",hint:"important"},{value:"3",label:"P3 Medium",hint:"default priority"},{value:"4",label:"P4 Low",hint:"nice to have"}],Ni=60;function qi(t){return t.filter(n=>n.status!=="disabled").map(n=>{let o=(n.role??"").split(`
11
11
  `)[0].trim(),r=o.length>Ni?o.slice(0,Ni-1)+"\u2026":o,s=r?`[${n.adapter}] ${r}`:n.adapter;return {value:n.id,label:n.name,hint:s}})}function tr(t,n="Auto-assign",o="orchestrator picks the best agent"){return [{value:"",label:n,hint:o},...qi(t)]}var Xr=[{value:"",label:"Skip",hint:"no role description"},{value:"Full-stack developer",label:"Full-stack developer",hint:"general purpose"},{value:"Frontend developer",label:"Frontend developer",hint:"React, CSS, UI"},{value:"Backend developer",label:"Backend developer",hint:"APIs, databases, services"},{value:"DevOps engineer",label:"DevOps engineer",hint:"CI/CD, infra, deploys"},{value:"QA / Test engineer",label:"QA / Test engineer",hint:"testing, quality"},{value:"Code reviewer",label:"Code reviewer",hint:"review PRs, find bugs"},{value:"Technical writer",label:"Technical writer",hint:"docs, READMEs"},{value:"__custom__",label:"Custom...",hint:"type your own"}];function Ki(t){return [{value:"",label:"None",hint:"no team"},...(t??[]).filter(n=>n.status==="active").map(n=>({value:n.id,label:n.name,hint:`${n.members.length} members`}))]}function Yi(){return [{id:"shop_template",label:"Agent Shop \u2014 choose a template",type:"select",options:a$2.map(t=>({value:t.key,label:t.name,hint:t.description}))}]}function qr(t,n,o){let r=a$3(o,n.tier);return t.map(s=>{switch(s.id){case "name":return {...s,defaultValue:n.name};case "adapter":return {...s,defaultValue:o};case "model":return {...s,defaultValue:r};case "role":return {...s,defaultValue:"__custom__"};case "role_custom":return {...s,defaultValue:n.role,skip:void 0};case "skills":{let f=o==="claude"?n.skills:n.skills.filter(h=>!a$4(h));return {...s,defaultValue:f.join(", ")}}case "approval_policy":return {...s,defaultValue:n.approval_policy};default:return s}})}function nr(t,n){let o=Ki(n);return [{id:"name",label:"Agent name",type:"text",placeholder:"e.g. alpha, frontend-bot, reviewer",required:true,validate:r=>r.trim()?t?.some(s=>s.name===r.trim())?"Agent with this name already exists":null:"Name is required",suggestions:a$2.map(r=>({value:r.key,label:r.name,hint:r.description}))},{id:"adapter",label:"Provider",type:"select",options:Vc},{id:"model",label:"Model",type:"select",getOptions:r=>r.adapter==="opencode"?zi:r.adapter==="codex"?Wi:r.adapter==="cursor"?Gi:r.adapter==="pi"?Vi:r.adapter==="shell"?ji:Fi},{id:"effort",label:"Reasoning effort",type:"select",options:Hi,skip:r=>!Ui.has(r.adapter??"")},{id:"role",label:"Role / specialization",type:"select",options:Xr},{id:"role_custom",label:"Describe the role",type:"textarea",placeholder:"e.g. Specialist in React and TypeScript",skip:r=>r.role!=="__custom__"},{id:"skills",label:"Skills (comma-separated)",type:"text",placeholder:"e.g. feature-dev:feature-dev, testing-suite:generate-tests"},{id:"approval_policy",label:"Approval policy",type:"text",skip:()=>true},{id:"team",label:"Join team",type:"select",options:o,skip:()=>o.length<=1}]}function Zi(t,n="claude"){let o=t.role==="__custom__"?t.role_custom||void 0:t.role||void 0,r=t.skills?t.skills.split(",").map(h=>h.trim()).filter(Boolean):void 0,s=t.approval_policy||"auto",f=t.effort||void 0;return {name:t.name,adapter:t.adapter||n,role:o,model:t.model||void 0,effort:f,approval_policy:s,skills:r,team_id:t.team||void 0}}function Ji(t,n){let o=qi(t);return [{id:"name",label:"Team name",type:"text",placeholder:"e.g. frontend, backend, qa",required:true,validate:r=>r.trim()?n?.some(s=>s.name===r.trim())?"Team with this name already exists":null:"Name is required"},{id:"lead",label:"Team lead",type:"select",options:o},{id:"members",label:"Team members",type:"multiselect",getOptions:r=>o.filter(s=>s.value!==r.lead),skip:r=>!o.some(s=>s.value!==r.lead)},{id:"description",label:"Description",type:"textarea",placeholder:"Optional team purpose..."}]}function Qi(t){let n=t.members?t.members.split(",").filter(Boolean):[];return {name:t.name,lead_agent_id:t.lead,member_agent_ids:n.length>0?n:void 0,description:t.description||void 0}}function ea(t){let n=tr(t);return [{id:"title",label:"Task title",type:"text",placeholder:"What needs to be done?",required:true,validate:o=>o.trim()?null:"Title is required"},{id:"priority",label:"Priority",type:"select",options:Xi,defaultValue:"3",validate:o=>{let r=Number(o);return !Number.isInteger(r)||r<1||r>4?"Priority must be 1-4":null}},{id:"assignee",label:"Assignee",type:"select",options:n,skip:()=>n.length<=1},{id:"description",label:"Description",type:"textarea",placeholder:"Optional details, context, acceptance criteria..."}]}function ta(t){return {title:t.title,priority:t.priority?parseInt(t.priority,10):void 0,assignee:t.assignee||void 0,description:t.description||void 0}}function na(t,n){let o=tr(n,"None / Auto","remove assignee");return [{id:"title",label:"Task title",type:"text",defaultValue:t.title,required:true,validate:r=>r.trim()?null:"Title is required"},{id:"priority",label:"Priority",type:"select",options:Xi,defaultValue:String(t.priority),validate:r=>{let s=Number(r);return !Number.isInteger(s)||s<1||s>4?"Priority must be 1-4":null}},{id:"assignee",label:"Assignee",type:"select",options:o,defaultValue:t.assignee??"",skip:()=>o.length<=1},{id:"description",label:"Description",type:"textarea",defaultValue:t.description||"",placeholder:"Optional details..."}]}function oa(t){return {title:t.title,priority:t.priority?parseInt(t.priority,10):void 0,assignee:t.assignee||void 0,description:t.description??""}}function ra(t,n,o){let r=Xr.find(m=>m.value===t.role),s=r?t.role:t.role?"__custom__":"",f=t.adapter==="opencode"?zi:t.adapter==="codex"?Wi:t.adapter==="cursor"?Gi:t.adapter==="pi"?Vi:t.adapter==="shell"?ji:Fi,h=Ki(o),y=o?.find(m=>m.members.some(T=>T.agent_id===t.id))?.id;return [{id:"name",label:"Agent name",type:"text",defaultValue:t.name,required:true,validate:m=>m.trim()?n?.some(T=>T.id!==t.id&&T.name===m.trim())?"Agent with this name already exists":null:"Name is required"},{id:"model",label:"Model",type:"select",options:f,defaultValue:t.config.model??""},{id:"effort",label:"Reasoning effort",type:"select",options:Hi,defaultValue:t.config.effort??"",skip:()=>!Ui.has(t.adapter)},{id:"role",label:"Role / specialization",type:"select",options:Xr,defaultValue:s},{id:"role_custom",label:"Describe the role",type:"textarea",defaultValue:t.role&&!r?t.role:"",placeholder:"e.g. Specialist in React and TypeScript",skip:m=>m.role!=="__custom__"},{id:"team",label:"Team",type:"select",options:h,defaultValue:y??"",skip:()=>h.length<=1}]}var jc=[{value:"1",label:"1 agent",hint:"~0.5 GB RAM, 1 subprocess"},{value:"2",label:"2 agents",hint:"~1 GB RAM, 2 subprocesses"},{value:"3",label:"3 agents",hint:"~1.5 GB RAM, 3 subprocesses"},{value:"4",label:"4 agents",hint:"~2 GB RAM, 4 subprocesses"},{value:"6",label:"6 agents",hint:"~3 GB RAM, 6 subprocesses"},{value:"8",label:"8 agents",hint:"~4 GB RAM, 8 subprocesses"},{value:"10",label:"10 agents",hint:"~5 GB RAM, 10 subprocesses"}],Hc=[{value:"all",label:"All",hint:"show everything"},{value:"text",label:"Text",hint:"agent output only"},{value:"tools",label:"Tools",hint:"tool calls, results, files"},{value:"errors",label:"Errors",hint:"errors only"},{value:"events",label:"Events",hint:"lifecycle, system events"}],Di=[{value:"true",label:"On"},{value:"false",label:"Off"}];function sa(t,n,o){let r=o??{toast:true,bell:false};return [{id:"activity_filter",label:"Activity filter preset",type:"select",options:Hc,defaultValue:t},{id:"max_concurrent",label:"Max concurrent agents",type:"select",options:jc,defaultValue:String(n)},{id:"notifications_toast",label:"Toast notifications",type:"select",options:Di,defaultValue:String(r.toast)},{id:"notifications_bell",label:"Bell on completion",type:"select",options:Di,defaultValue:String(r.bell)}]}function ia(t){let n=t.role==="__custom__"?t.role_custom||void 0:t.role||void 0,o=t.effort||void 0;return {name:t.name,role:n,model:t.model||void 0,effort:o,team_id:t.team||void 0}}function or(t){let n=tr(t,"Any agent","auto-assign to autonomous agents");return [{id:"title",label:"Goal title",type:"text",placeholder:'e.g. "Implement OAuth2 login with Google and GitHub"',description:"Be specific \u2014 agents work better with clear, measurable objectives",required:true,validate:o=>o.trim()?null:"Title is required"},{id:"assignee",label:"Assignee",type:"select",description:"Assigned agent gets autonomous mode \u2014 it will plan and execute without prompts",options:n,skip:()=>n.length<=1},{id:"description",label:"Description",type:"textarea",placeholder:"Success criteria, constraints, technical context...",description:'Context matters \u2014 include tech stack, constraints, and what "done" looks like'}]}function aa(t){return {title:t.title,assignee:t.assignee||void 0,description:t.description||void 0}}function la(t,n){let o=tr(n,"Any agent","auto-assign");return [{id:"title",label:"Goal title",type:"text",defaultValue:t.title,description:"Be specific \u2014 agents work better with clear, measurable objectives",required:true,validate:r=>r.trim()?null:"Title is required"},{id:"assignee",label:"Assignee",type:"select",description:"Assigned agent gets autonomous mode \u2014 it will plan and execute without prompts",options:o,defaultValue:t.assignee??"",skip:()=>o.length<=1},{id:"description",label:"Description",type:"textarea",defaultValue:t.description||"",placeholder:"Success criteria, constraints, technical context...",description:'Context matters \u2014 include tech stack, constraints, and what "done" looks like'}]}function ca(t){return {title:t.title,assignee:t.assignee||void 0,description:t.description??""}}var da=10,ua=500,cr=2048,yn=500,ga=5,Kr=new Set(["todo","failed","cancelled"]),ma=5e3,pa=0;function jg(){pa=0;}var ha=/^\[[\w_]+\]$/;function xa(t){return ha.test(t)?{msgType:"lifecycle",color:e.dim}:t.startsWith("\u2699")?{msgType:"tool",color:e.dim}:t.startsWith("\u2190")?{msgType:"result",color:e.dim}:t.startsWith("\u2713")?{msgType:"lifecycle",color:e.dim}:t.startsWith("\u23F3")?{msgType:"info",color:e.silver}:{msgType:"output",color:e.silver}}var Jr=["#5faf87","#5fafd7","#af87ff","#d7af00","#5fd7d7","#d787af","#afaf5f","#d7875f"],Kc=" ".repeat(9),Hn={system:"\u2666",lifecycle:"\u25B6",output:"\u2502",tool:"\u2699",result:"\u2190",error:"\u2715",file:"\u270E",info:"\u2502"},ar=["system","lifecycle","output","tool","result","error","file","info"],jn=[{label:"all",types:ar},{label:"text",types:["output"]},{label:"tools",types:["tool","result","file"]},{label:"errors",types:["error"]},{label:"events",types:["lifecycle","system"]}];function Yr(t){let o=(jn.findIndex(r=>r.types.length===t.size&&r.types.every(s=>t.has(s)))+1)%jn.length;return jn[o]}function Zr(t,n){if(t.length!==n.length)return true;for(let o=0;o<t.length;o++)if(t[o].id!==n[o].id||t[o].updated_at!==n[o].updated_at)return true;return false}function Hg({projectName:t,tasks:n,agents:o=[],state:r,onRunTask:s,onCreateTask:f,onCancelTask:h,onRetryTask:y,onAssignTask:m,onRunAll:T,onDisableAgent:S,onEnableAgent:I,onSubscribeEvents:M,onRefreshTasks:v,onRefreshAgents:L,onRefreshState:_,onLoadHistory:R,onAddAgent:C,onDeleteAgent:z,onApproveTask:P,onRejectTask:B,onDeleteTask:H,onUpdateTask:G,onUpdateAgent:W,onForceStopAgent:w,onCreateTeam:U,onListTeams:ie,onJoinTeam:oe,onLeaveTeam:we,onDisbandTeam:We,onSetTeamLead:Ge,onStartWatch:ut,onStopWatch:Ct,onToggleAutonomous:gt,onRefreshGoals:mt,onCreateGoal:Ye,onUpdateGoal:Ze,onUpdateGoalStatus:ft,onDeleteGoal:Ce,onGetGoalProgress:Wt,onCompleteOnboarding:It,initialWatchActive:ht,observerMode:Je,watchError:ot,messageBatchMs:Xe=process.env.VITEST?0:80,initialActivityFilter:po="all",onSaveActivityFilter:rn,initialMaxConcurrent:$t=a.scheduling.max_concurrent_agents,onSaveMaxConcurrent:Gt,initialNotifications:zt,onSaveNotifications:qt,version:sn,latestVersion:an,onCheckUpdate:vt,onBackgroundInstall:wn,defaultAdapter:Un="claude"}){let{exit:ln}=useApp(),{stdout:rt}=useStdout(),[cn,D]=useState(an),O=useRef(vt);useEffect(()=>{if(an||!O.current)return;let i=setTimeout(()=>{O.current?.().then(x=>{x&&D(x);}).catch(()=>{});},5e3);return ()=>clearTimeout(i)},[an]);let[N,$]=useState(false),q=useRef(false);useEffect(()=>{!cn||!wn||q.current||N||(q.current=true,wn(cn).then(i=>{i&&$(true);}).catch(()=>{}));},[cn,wn,N]);let[ne,_e]=useState({w:rt?.columns??80,h:rt?.rows??24});useEffect(()=>{if(!rt)return;let i=()=>_e({w:rt.columns,h:rt.rows});return rt.on("resize",i),()=>{rt.off("resize",i);}},[rt]);let ae=ne.w,ue=ne.h,[ce,Kt]=useState(n),[de,dr]=useState(o),[ze,ka]=useState(r),[ho,ur]=useState(ht??!!r.pid),[Xn,Qr]=useState([]),[Ca,es]=useState(void 0),[Yt,xo]=useState(()=>r.onboardingCompleted||(r.stats?.total_tasks_completed??0)>0?"dismissed":Object.keys(r.running??{}).length>0?"run_started":n.length>0?"task_created":"welcome");useEffect(()=>{if(Yt!=="completed")return;let i=setTimeout(()=>{xo("dismissed"),It?.().catch(()=>{});},5e3);return ()=>clearTimeout(i)},[Yt,It]);let[E,Sn]=useState("tasks"),[bo,qn]=useState(0),[gr,ts]=useState(0),[mr,ns]=useState(0),[Ae,Kn]=useState(false),[Ve,os]=useState([]),[Pe,Ee]=useState("none"),xt=jo(),dn=xt.value,[bt,Qe]=useState(null),[un,Yn]=useState([]),[Bt,fr]=useState(false),[rs,Ia]=useState(()=>new Set),[kn,pr]=useState(false),[Zn,hr]=useState(false),[ss,is]=useState(()=>new Set(ar)),[Jn,xr]=useState(-1),[va,Qn]=useState(0),[Cn,br]=useState(()=>{let i=jn.find(x=>x.label===po);return new Set(i?.types??ar)}),To=useMemo(()=>jn.find(x=>x.types.length===Cn.size&&x.types.every(l=>Cn.has(l)))?.label??"all",[Cn]),Tr=useMemo(()=>Cn.size>=ar.length?Ve:Ve.filter(i=>Cn.has(i.msgType??"info")),[Ve,Cn]),[as,_a]=useState($t),[yo,Ma]=useState(zt??{toast:true,bell:false}),[Ra,ls]=useState([]),Aa=useRef(0),[yr,cs]=useState(),ds=useRef(E);ds.current=E;let us=useRef(ce);us.current=ce;let gs=useRef(de);gs.current=de;let wo=useRef(yo);wo.current=yo;let So=useCallback((i,x)=>{if(!wo.current.toast)return;let l=us.current.find(b=>b.id===x),c=l?.title??x,u=l?.assignee?gs.current.find(b=>b.id===l.assignee):void 0;ls(b=>{let g=[...b,{id:`toast_${Aa.current++}`,type:i,title:c,agentName:u?.name,ts:Date.now()}];return g.length>ga?g.slice(g.length-ga):g}),wo.current.bell&&(i==="failed"||i==="review")&&process.stdout.write("\x07");},[]),$a=useCallback(i=>{ls(x=>x.filter(l=>l.id!==i));},[]),ko=uo.useRef(new Go).current,[Ba,In]=useState(0),[ms,fs]=useState(false),[eo,Ea]=useState(false),[Oa,wr]=useState(0),[La,Sr]=useState(0),[kr,vn]=useState(0),[Co,Cr]=useState(false),[Pa,to]=useState(0),[Io,gn]=useState(0),[Vt,ps]=useState([]),[_n,Ir]=useState([]),Mn=useRef(Vt);Mn.current=Vt;let hs=useRef(0),K=useCallback(async i=>{hs.current=Date.now();let[x,l,c,u,b]=await Promise.all([v?.()??Promise.resolve(ce),L?.()??Promise.resolve(de),_?.()??Promise.resolve(ze),i?.includeTeams?ie?.()??Promise.resolve(Mn.current):Promise.resolve(null),mt?.()??Promise.resolve(Xn)]);Kt(g=>Zr(g,x)?x:g),dr(g=>Zr(g,l)?l:g),ka(c),u!==null&&ps(u),Qr(g=>Zr(g,b)?b:g),ht&&ur(!!c.pid);},[v,L,_,ie,mt,ht]),Rn=useMemo(()=>{let i=new Map;for(let x of Xn)i.set(x.id,x);return i},[Xn]),Oe=useMemo(()=>{let i=[...ce].sort((b,g)=>(ao[b.status]??9)-(ao[g.status]??9));if(!eo)return i;let x=[],l=[],c=[],u=new Map;for(let b of i)b.goalId&&Rn.has(b.goalId)?(u.has(b.goalId)||(c.push(b.goalId),u.set(b.goalId,[])),u.get(b.goalId).push(b)):l.push(b);for(let b of c)x.push(...u.get(b));return [...x,...l]},[ce,eo,Rn]),Et=ms?Oe:Oe.slice(0,da),An=Oe.length-Et.length,j=Oe[bo],no=useMemo(()=>{let i=new Map;for(let x of ce)i.set(x.id,x.title);return i},[ce]),mn=useMemo(()=>{let i=new Map;for(let x of de)i.set(x.id,x.name);return i},[de]),Na=useMemo(()=>{let i=new Map;for(let x of ce)if(x.goalId){let l=i.get(x.goalId);l||(l=[],i.set(x.goalId,l)),l.push(x);}return i},[ce]),vo=useMemo(()=>{let i=new Map;for(let x=0;x<de.length;x++)i.set(de[x].id,Jr[x%Jr.length]);return i},[de]),xs=useMemo(()=>{let i=new Map;for(let x of Ve)x.agentId&&i.set(x.agentId,(i.get(x.agentId)??0)+1);return i},[Ve]),Da=useMemo(()=>{let i={};for(let x of Ve){let l=x.msgType??"info";i[l]=(i[l]??0)+1;}return i},[Ve]),{agentTeamMap:$n,activeTeamCount:oo,teamLeadSet:Fa}=useMemo(()=>{let i=new Map,x=new Set,l=0;for(let c of Vt)if(c.status==="active"){l++,x.add(c.lead_agent_id);for(let u of c.members)i.set(u.agent_id,c.name);}return {agentTeamMap:i,activeTeamCount:l,teamLeadSet:x}},[Vt]),Ne=useMemo(()=>{let i=[...de];return i.sort((x,l)=>{let c=$n.get(x.id),u=$n.get(l.id);return c&&!u?-1:!c&&u?1:c&&u&&c!==u?c.localeCompare(u):(Lr[x.status]??9)-(Lr[l.status]??9)}),i},[de,$n]),Z=Ne[gr],pt=useMemo(()=>[...Xn].sort((i,x)=>(c[i.status]??9)-(c[x.status]??9)),[Xn]),Q=pt[mr],Wa=useMemo(()=>Q?ce.filter(i=>i.goalId===Q.id):[],[Q,ce]),vr=useRef(Wt);vr.current=Wt,useEffect(()=>{if(!Q||!vr.current){es(void 0);return}let i=false;return vr.current(Q.id).then(x=>{i||es(x);}).catch(()=>{}),()=>{i=true;}},[Q?.id]);let fn=useRef(new Map),_o=useRef(new Map);useEffect(()=>{for(let[i,x]of Object.entries(ze.running))fn.current.set(x.run_id,x.agent_id),_o.current.set(x.run_id,i);if(fn.current.size>ua){let i=fn.current.size-ua,x=0;for(let l of fn.current.keys()){if(x++>=i)break;fn.current.delete(l),_o.current.delete(l);}}},[ze.running]);let pn=useRef([]),ro=useRef(null),_r=useCallback(()=>{if(ro.current=null,pn.current.length===0)return;let i=pn.current;pn.current=[],os(x=>{if(i.length>=yn)return i.slice(-yn);let l=yn-i.length;return (x.length>l?x.slice(-l):x).concat(i)});},[]);useEffect(()=>()=>{ro.current&&clearTimeout(ro.current);},[]);let a=useCallback((i,x,l)=>{let c=new Date,u=c.toLocaleTimeString("en-US",{hour12:false,hour:"2-digit",minute:"2-digit",second:"2-digit"}),b=l?.detail&&l.detail.length>cr?l.detail.slice(0,cr)+"\u2026[truncated]":l?.detail;pn.current.push({text:i,color:x,time:u,ts:c.getTime(),...l,detail:b}),pn.current.length>yn&&(pn.current=pn.current.slice(-yn)),Xe===0?_r():ro.current||(ro.current=setTimeout(_r,Xe));},[_r]);useEffect(()=>{Je?a("Observer mode: watching external orchestrator via disk polling.",e.amber):ot&&a(`Watch mode failed: ${ot}. Tasks will not auto-dispatch.`,e.red);},[]),useEffect(()=>{let i=Je?3e3:5e3,x=setInterval(()=>{Date.now()-hs.current>=i&&K().catch(()=>{});},i);return ()=>clearInterval(x)},[Je,K]);let Bn=useCallback((i,x,l,c)=>{let u={key:++pa,entityType:i,entityId:x,entityName:l,expiresAt:Date.now()+ma,needsForceStop:c?.needsForceStop};Ir(b=>[...b,u]),a(`\u2717 "${l}" will be deleted in ${Math.round(ma/1e3)}s \u2014 press Z to undo`,e.yellow);},[a]),Ga=useCallback(()=>{Ir(i=>{if(i.length===0)return i;let x=i[i.length-1];return a(`\u21B6 Undo: "${x.entityName}" restored`,e.green),i.slice(0,-1)});},[a]),bs=useCallback(async i=>{try{i.entityType==="task"&&H?await H(i.entityId):i.entityType==="agent"?(i.needsForceStop&&w&&await w(i.entityId),z&&await z(i.entityId)):i.entityType==="goal"&&Ce&&await Ce(i.entityId),a(`\u2713 Deleted "${i.entityName}"`,e.green),K();}catch(x){a(`Failed to delete "${i.entityName}": ${x instanceof Error?x.message:String(x)}`,e.red);}},[H,z,Ce,w,a,K]),Ts=useRef(bs);Ts.current=bs,useEffect(()=>{if(_n.length===0)return;let i=setInterval(()=>{let x=Date.now(),l=[];Ir(c=>{let u=c.filter(b=>b.expiresAt<=x?(l.push(b),false):true);return l.length>0?u:c});for(let c of l)Ts.current(c);},1e3);return ()=>clearInterval(i)},[_n.length>0]),useEffect(()=>{if(!R)return;let i=x=>{let l=new Date(x.timestamp).toLocaleTimeString("en-US",{hour12:false,hour:"2-digit",minute:"2-digit",second:"2-digit"}),c=typeof x.data=="string"?x.data:JSON.stringify(x.data),u,b=e.silver,g="output";if(x.type==="error")u=typeof x.data=="string"?x.data:JSON.stringify(x.data),u=u.slice(0,200),b=e.red,g="error";else if(x.type==="file_changed")u=String(x.data),b=e.purple,g="file";else if(x.type==="done")u="Completed",b=e.green,g="lifecycle";else if(x.type==="tool_call")u=`\u2699 ${x.data?.name??"tool"}()`,b=e.cyan,g="tool";else {let{summary:k}=Sa(c);if(!k)return null;u=k;let Y=xa(u);g=Y.msgType,b=Y.color;}return {text:u,color:b,time:l,ts:new Date(x.timestamp).getTime(),agentId:x.agentId,taskId:x.taskId,msgType:g}};R(x=>{if(x.length===0)return;let l=x.map(i).filter(c=>c!==null);os(c=>{let u=[...l,...c];return u.length>yn?u.slice(-yn):u});}).catch(x=>{process.stderr.write(`[TUI] onLoadHistory error: ${x instanceof Error?x.stack??x.message:String(x)}
12
12
  `);});},[]),useEffect(()=>{ie?.().then(ps).catch(()=>{}),mt?.().then(Qr).catch(()=>{});},[]);let Mo=useCallback(()=>{Qe({title:"NEW AGENT",steps:nr(de,Mn.current),kind:"agent"}),Ee("wizard");},[de]),ys=useCallback(()=>{Qe({title:"AGENT SHOP",steps:Yi(),kind:"agent_shop"}),Ee("wizard");},[]),Ro=useCallback(()=>{Yn([]),Qe({title:"NEW TASK",steps:ea(de),kind:"task"}),Ee("wizard");},[de]),za=useCallback(async()=>{try{let{detectClipboardType:i,getClipboardImage:x}=await import('./clipboard-service-AJTJG2DJ.js'),l=await i();if(l!=="image")return a(l==="text"?"Clipboard has text, not image":"Clipboard is empty",e.dim),l;let c=await x();if(!c)return a("Failed to read clipboard image",e.red),"empty";let{mkdtemp:u,writeFile:b}=await import('fs/promises'),{tmpdir:g}=await import('os'),{join:k}=await import('path'),Y=await u(k(g(),"orch-paste-")),Lt=k(Y,`clipboard-${Date.now()}.${c.ext}`);return await b(Lt,c.data),Yn(hn=>[...hn,Lt]),a(`\u{1F4CE} Image attached (${Math.round(c.data.length/1024)}KB)`,e.green),"image"}catch{return a("Clipboard paste failed",e.red),"empty"}},[a]),Va=useCallback(i=>{Qe({title:"EDIT TASK",steps:na(i,de),kind:"edit_task",targetId:i.id}),Ee("wizard");},[de]),ws=useCallback(()=>{Qe({title:"NEW TEAM",steps:Ji(de,Vt),kind:"team"}),Ee("wizard");},[de]),ja=useCallback(i=>{Qe({title:"EDIT AGENT",steps:ra(i,de,Vt),kind:"edit_agent",targetId:i.id}),Ee("wizard");},[Vt]),Ss=useCallback(()=>{Qe({title:"SETTINGS",steps:sa(To,as,yo),kind:"config"}),Ee("wizard");},[To,as]),Ha=useCallback(i=>{Ee("none");let x=bt?.kind,l=bt?.targetId;if(Qe(null),x==="agent_shop"){let c=i.shop_template,u=c?b(c):void 0;if(u){let b=nr(de,Mn.current),g=qr(b,u,Un);Qe({title:`NEW AGENT \u2014 ${u.name}`,steps:g,kind:"agent_from_shop"}),Ee("wizard");}else a("No template selected",e.yellow);return}if((x==="agent"||x==="agent_from_shop")&&C){let c=Zi(i,Un);a(`Creating agent "${c.name}"...`,e.amber),C(c.name,c.adapter,{model:c.model,effort:c.effort,role:c.role,approval_policy:c.approval_policy,skills:c.skills}).then(u=>{a(`\u2713 Created agent "${u.name}" (${u.id}, ${u.adapter})`,e.green),c.team_id&&oe?oe(c.team_id,u.id).then(b=>{a(`\u2713 Joined team "${b.name}"`,e.green),K({includeTeams:true});},b=>a(`Failed to join team: ${b instanceof Error?b.message:String(b)}`,e.red)):K();},u=>a(`Failed: ${u instanceof Error?u.message:String(u)}`,e.red));}else if(x==="team"&&U){let c=Qi(i);a(`Creating team "${c.name}"...`,e.amber),U(c).then(u=>{a(`\u2713 Created team "${u.name}" (${u.id}, ${u.members.length} members)`,e.green),K({includeTeams:true});},u=>a(`Failed: ${u instanceof Error?u.message:String(u)}`,e.red));}else if(x==="task"&&f){let c=ta(i),u=un.length>0?[...un]:void 0;Yn([]),a(`Creating "${c.title}"...`,e.amber),f(c.title,{priority:c.priority,description:c.description,attachments:u}).then(b=>{a(`\u2713 Created "${b.title}" (${b.id})${u?` \u{1F4CE}${u.length}`:""}`,e.green),c.assignee&&m&&m(b.id,c.assignee).catch(()=>{}),K();},b=>a(`Failed: ${b instanceof Error?b.message:String(b)}`,e.red));}else if(x==="edit_task"&&l&&G){let c=oa(i),u=un.length>0?[...un]:void 0;Yn([]),a("Updating task...",e.amber),G(l,{...c,attachments:u}).then(b=>{a(`\u2713 Updated "${b.title}"${u?` \u{1F4CE}${u.length}`:""}`,e.green),c.assignee&&m&&m(l,c.assignee).catch(()=>{}),K();},b=>a(`Failed: ${b instanceof Error?b.message:String(b)}`,e.red));}else if(x==="edit_agent"&&l&&W){let c=ia(i),u=c.team_id??"",b=Vt.find(g=>g.members.some(k=>k.agent_id===l))?.id??"";a("Updating agent...",e.amber),W(l,{name:c.name,role:c.role,model:c.model,effort:c.effort}).then(g=>{a(`\u2713 Updated agent "${g.name}"`,e.green);let k=[];b&&b!==u&&we&&k.push(we(b,l).then(Y=>a(`\u2713 Left team "${Y.name}"`,e.green),Y=>a(`Failed to leave team: ${Y instanceof Error?Y.message:String(Y)}`,e.red))),u&&u!==b&&oe&&k.push(oe(u,l).then(Y=>a(`\u2713 Joined team "${Y.name}"`,e.green),Y=>a(`Failed to join team: ${Y instanceof Error?Y.message:String(Y)}`,e.red))),Promise.all(k).then(()=>K({includeTeams:k.length>0}));},g=>a(`Failed: ${g instanceof Error?g.message:String(g)}`,e.red));}else if(x==="config"){if(i.activity_filter){let g=jn.find(k=>k.label===i.activity_filter);g&&(br(new Set(g.types)),rn?.(g.label));}if(i.max_concurrent){let g=parseInt(i.max_concurrent,10);g>0&&(_a(g),Gt?.(g));}let c=i.notifications_toast==="true",u=i.notifications_bell==="true",b={toast:c,bell:u};Ma(b),qt?.(b),a("Settings saved",e.green);}else if(x==="goal"&&Ye){let c=aa(i);a(`Creating goal "${c.title}"...`,e.amber),Ye(c).then(u=>{a(`\u2713 Created goal "${u.title}" (${u.id})`,e.green),K();},u=>a(`Failed: ${u instanceof Error?u.message:String(u)}`,e.red));}else if(x==="edit_goal"&&l&&Ze){let c=ca(i);a("Updating goal...",e.amber),Ze(l,c).then(u=>{a(`\u2713 Updated goal "${u.title}"`,e.green),K();},u=>a(`Failed: ${u instanceof Error?u.message:String(u)}`,e.red));}},[bt,C,f,U,oe,we,m,G,W,gt,Ye,Ze,a,K,rn,Gt,yo,qt,Vt,un]),Ua=useCallback(()=>{Ee("none"),Qe(null),Yn([]);},[]),Xa=useCallback(i=>{let x=b(i);if(!x)return;let l=nr(de,Mn.current),c=qr(l,x,Un);Qe({title:`NEW AGENT \u2014 ${x.name}`,steps:c,kind:"agent_from_shop"}),Ee("wizard");},[]);useEffect(()=>{if(!M)return;let i=null,x=()=>{i||(i=setTimeout(()=>{i=null,K().catch(()=>{});},150));},l=M(c=>{if(c.type==="agent:started"&&(fn.current.set(c.runId,c.agentId),_o.current.set(c.runId,c.taskId)),md(c,a,fn.current,_o.current),c.type==="task:created"?xo(u=>u==="welcome"?"task_created":u):c.type==="agent:started"?xo(u=>u==="task_created"?"run_started":u):c.type==="task:status_changed"&&c.to==="done"&&xo(u=>u==="run_started"?"completed":u),c.type==="task:status_changed"&&(c.to==="done"?So("done",c.taskId):c.to==="failed"?So("failed",c.taskId):c.to==="review"&&So("review",c.taskId),wo.current.toast&&ds.current!=="tasks")){let u=c.to==="done"?e.green:c.to==="failed"?e.red:c.to==="review"?e.blue:void 0;u&&cs({tab:"tasks",color:u});}(c.type==="task:status_changed"||c.type==="task:created"||c.type==="task:assigned"||c.type==="agent:started"||c.type==="agent:completed"||c.type==="run:retry"||c.type==="goal:created"||c.type==="goal:status_changed"||c.type==="goal:updated"||c.type==="goal:deleted")&&x();});return ()=>{l(),i&&clearTimeout(i);}},[M,a,K,So]);let Mr=Je?"observing":ho?"watching":"idle",qa=ze.started_at?g(ze.started_at):void 0,ks=ze.stats.total_tokens.total,Cs=useMemo(()=>{let i={running:0,retrying:0,review:0,todo:0,done:0,failed:0,cancelled:0};for(let x of ce)x.status==="in_progress"?i.running++:x.status==="retrying"?i.retrying++:x.status==="review"?i.review++:x.status==="todo"?i.todo++:x.status==="done"?i.done++:x.status==="failed"?i.failed++:x.status==="cancelled"&&i.cancelled++;return {...i,teams:oo}},[ce,oo]);Cs.running;let Ka=useMemo(()=>({input:ze.stats.total_tokens.input??0,output:ze.stats.total_tokens.output??0,reasoning:ze.stats.total_tokens.reasoning??0,total:ks,cache_read:ze.stats.total_tokens.cache_read??0,cache_write:ze.stats.total_tokens.cache_write??0}),[ze.stats.total_tokens,ks]),_t=Math.max(4,ue-9),Ya=$n.size,Za=de.length>Ya,Ja=oo>0?oo+(Za?1:0):0,Qa=useMemo(()=>{if(!eo||Rn.size===0)return 0;let i=0,x=new Set,l=false;for(let c of Et)c.goalId&&Rn.has(c.goalId)?x.has(c.goalId)||(x.add(c.goalId),i++):l=true;return l&&i++,i},[eo,Rn,Et]),el=E==="goals"?pt.length+1:E==="tasks"?Et.length+1+(An>0?1:0)+Qa:E==="agents"?de.length+1+Ja:0,tl=Math.min(el+1,Math.ceil(_t*.5)),nl=E==="logs"?_t:Math.max(2,Math.min(tl,_t-4)),Se,Ot;if(E==="logs")Se=_t,Ot=0;else if(Co)Se=0,Ot=Math.max(1,_t);else {let i=Math.max(3,Math.min(nl+kr,_t-4));Se=i,Ot=Math.max(1,_t-i);}let Me=Math.max(10,ae-2),Mt=useMemo(()=>Pe==="command"?oi(dn):[],[Pe,dn]),En=_t-4-3;useEffect(()=>{kr>En&&vn(En),kr<-En&&vn(-En);},[_t]),useEffect(()=>{In(i=>Math.min(i,Math.max(0,Et.length-Se)));},[Et.length,Se]),useEffect(()=>{wr(i=>Math.min(i,Math.max(0,Ne.length-Se)));},[Ne.length,Se]),useEffect(()=>{Sr(i=>Math.min(i,Math.max(0,pt.length-Se)));},[pt.length,Se]);let ol=useCallback(i=>{let l=i.trim().replace(/^\//,"").split(/\s+/),c=l[0]?.toLowerCase();if(!c)return;let u=b=>b instanceof Error?b.message:String(b);switch(c){case "cancel":{if(!j){a("No task selected",e.yellow);return}if(!h)return;a(`Cancelling "${j.title}"...`,e.amber),h(j.id).then(()=>{a(`\u2713 Cancelled "${j.title}"`,e.green),K();},b=>a(`Failed: ${u(b)}`,e.red));return}case "retry":{if(!j){a("No task selected",e.yellow);return}if(!y)return;a(`Retrying "${j.title}"...`,e.amber),y(j.id).then(()=>{a(`\u2713 Retried "${j.title}"`,e.green),K();},b=>a(`Failed: ${u(b)}`,e.red));return}case "assign":{if(!j){a("No task selected",e.yellow);return}if(!m||!l[1]){a("Usage: assign <agent>",e.yellow);return}a(`Assigning "${j.title}" to ${l[1]}...`,e.amber),m(j.id,l[1]).then(()=>{a(`\u2713 Assigned "${j.title}" to ${l[1]}`,e.green),K();},b=>a(`Failed: ${u(b)}`,e.red));return}case "task":{let b=l[1]?.toLowerCase();if(b==="add"){let g=l.slice(2).join(" ");if(!g){Ro();return}if(!f){a("Create not available",e.yellow);return}a(`Creating "${g}"...`,e.amber),f(g).then(k=>{a(`\u2713 Created "${k.title}" (${k.id})`,e.green),K();},k=>a(`Failed: ${u(k)}`,e.red));}else if(b==="list"){let g=Oe.map(k=>` ${k.id} ${k.status.padEnd(11)} ${k.title}`);if(g.length===0)a("No tasks",e.dim);else for(let k of g)a(k,e.cyan);}else if(b==="show"){let g=l[2]?Oe.find(k=>k.id===l[2]):j;if(!g){a("No task selected or id given",e.yellow);return}a(`${g.id} ${g.status} P${g.priority} "${g.title}"`,e.cyan),g.assignee&&a(` agent: ${g.assignee}`,e.dim),g.description&&a(` ${g.description.slice(0,100)}`,e.dim);}else if(b==="cancel"){let g=l[2]?Oe.find(k=>k.id===l[2]):j;if(!g){a("No task selected or id given",e.yellow);return}if(!h)return;a(`Cancelling "${g.title}"...`,e.amber),h(g.id).then(()=>{a(`\u2713 Cancelled "${g.title}"`,e.green),K();},k=>a(`Failed: ${u(k)}`,e.red));}else if(b==="retry"){let g=l[2]?Oe.find(k=>k.id===l[2]):j;if(!g){a("No task selected or id given",e.yellow);return}if(!y)return;a(`Retrying "${g.title}"...`,e.amber),y(g.id).then(()=>{a(`\u2713 Retried "${g.title}"`,e.green),K();},k=>a(`Failed: ${u(k)}`,e.red));}else if(b==="assign"){let g=l[2]?Oe.find(Lt=>Lt.id===l[2]):void 0,k=g??j,Y=g?l[3]:l[2];if(!k){a("No task selected or id given",e.yellow);return}if(!Y){a("Usage: /task assign [id] <agent>",e.yellow);return}if(!m)return;a(`Assigning "${k.title}" to ${Y}...`,e.amber),m(k.id,Y).then(()=>{a(`\u2713 Assigned "${k.title}" to ${Y}`,e.green),K();},Lt=>a(`Failed: ${u(Lt)}`,e.red));}else if(b==="approve"){let g=l[2]?Oe.find(k=>k.id===l[2]):j;if(!g){a("No task selected or id given",e.yellow);return}if(g.status!=="review"){a(`Cannot approve \u2014 status is ${g.status}`,e.yellow);return}if(!P)return;a(`Approving "${g.title}"...`,e.amber),P(g.id).then(()=>{a(`\u2713 Approved "${g.title}"`,e.green),K();},k=>a(`Failed: ${u(k)}`,e.red));}else if(b==="reject"){let g=l[2]?Oe.find(Y=>Y.id===l[2]):j;if(!g){a("No task selected or id given",e.yellow);return}if(g.status!=="review"){a(`Cannot reject \u2014 status is ${g.status}`,e.yellow);return}if(!B)return;let k=l.slice(l[2]&&Oe.find(Y=>Y.id===l[2])?3:2).join(" ").trim()||void 0;a(`Rejecting "${g.title}"${k?" with feedback":""}...`,e.amber),B(g.id,k).then(()=>{a(`\u2713 Rejected "${g.title}" \u2192 todo`,e.green),K();},Y=>a(`Failed: ${u(Y)}`,e.red));}else if(b==="delete"){let g=l[2]?Oe.find(k=>k.id===l[2]):j;if(!g){a("No task selected or id given",e.yellow);return}if(g.status==="in_progress"){a("Cannot delete \u2014 task is running",e.yellow);return}if(!H)return;Bn("task",g.id,g.title);}else a("Usage: /task add|list|show|cancel|retry|assign|approve|reject|delete",e.yellow);return}case "agent":{let b=l[1]?.toLowerCase();if(b==="add"){let g=l[2];if(!g){Mo();return}if(!C){a("Agent creation not available",e.yellow);return}let k=l[3];a(`Creating agent "${g}"...`,e.amber),C(g,k).then(Y=>{a(`\u2713 Created agent "${Y.name}" (${Y.id}, ${Y.adapter})`,e.green),K();},Y=>a(`Failed: ${u(Y)}`,e.red));}else if(b==="list"){let g=Ne.map(k=>` ${k.id} ${k.status.padEnd(8)} ${k.name} (${k.adapter})`);if(g.length===0)a("No agents",e.dim);else for(let k of g)a(k,e.cyan);}else if(b==="disable"){let g=l[2]?Ne.find(k=>k.id===l[2]||k.name===l[2]):Z;if(!g){a("No agent selected or id given",e.yellow);return}if(!S)return;a(`Disabling ${g.name}...`,e.amber),S(g.id).then(()=>{a(`\u2713 Disabled ${g.name}`,e.green),K();},k=>a(`Failed: ${u(k)}`,e.red));}else if(b==="enable"){let g=l[2]?Ne.find(k=>k.id===l[2]||k.name===l[2]):Z;if(!g){a("No agent selected or id given",e.yellow);return}if(!I)return;a(`Enabling ${g.name}...`,e.amber),I(g.id).then(()=>{a(`\u2713 Enabled ${g.name}`,e.green),K();},k=>a(`Failed: ${u(k)}`,e.red));}else if(b==="delete"||b==="remove"){let g=l[2]?Ne.find(k=>k.id===l[2]||k.name===l[2]):Z;if(!g){a("No agent selected or id given",e.yellow);return}if(g.status==="running"){a("Cannot delete \u2014 agent is running",e.yellow);return}if(!z){a("Agent deletion not available",e.yellow);return}Bn("agent",g.id,g.name);}else if(b==="autonomous"||b==="auto"){let g=l[2]?Ne.find(k=>k.id===l[2]||k.name===l[2]):Z;if(!g){a("No agent selected or id given",e.yellow);return}if(!gt){a("Autonomous toggle not available",e.yellow);return}g.autonomous?(a(`Disabling autonomous mode for "${g.name}"...`,e.amber),gt(g.id,false).then(()=>{a(`${xn} ${g.name} autonomous OFF`,e.cyan),K();},k=>a(`Failed: ${u(k)}`,e.red))):(a(`Enabling autonomous mode for "${g.name}"...`,e.amber),gt(g.id,true).then(()=>{a(`${xn} ${g.name} autonomous ON`,e.cyan),K();},k=>a(`Failed: ${u(k)}`,e.red)));}else b==="shop"?ys():a("Usage: /agent add|list|disable|enable|delete|autonomous|shop",e.yellow);return}case "team":{let b=l[1]?.toLowerCase();if(b==="create"||b==="add")ws();else if(b==="list"){let g=Mn.current;if(g.length===0)a("No teams",e.dim);else for(let k of g)a(` ${k.id} ${k.status.padEnd(8)} ${k.name} (${k.members.length} members)`,e.cyan);}else if(b==="join"){if(!oe){a("Join not available",e.yellow);return}let g=l[2],k=l[3]??Z?.id;if(!g||!k){a("Usage: /team join <teamId> [agentId]",e.yellow);return}a(`Joining team ${g}...`,e.amber),oe(g,k).then(Y=>{a(`\u2713 Agent joined team "${Y.name}"`,e.green),K({includeTeams:true});},Y=>a(`Failed: ${u(Y)}`,e.red));}else if(b==="leave"){if(!we){a("Leave not available",e.yellow);return}let g=l[2],k=l[3]??Z?.id;if(!g||!k){a("Usage: /team leave <teamId> [agentId]",e.yellow);return}a(`Leaving team ${g}...`,e.amber),we(g,k).then(Y=>{a(`\u2713 Agent left team "${Y.name}"`,e.green),K({includeTeams:true});},Y=>a(`Failed: ${u(Y)}`,e.red));}else if(b==="disband"){if(!We){a("Disband not available",e.yellow);return}let g=l[2];if(!g){a("Usage: /team disband <teamId>",e.yellow);return}a(`Disbanding team ${g}...`,e.amber),We(g).then(()=>{a("\u2713 Team disbanded",e.green),K({includeTeams:true});},k=>a(`Failed: ${u(k)}`,e.red));}else if(b==="set-lead"){if(!Ge){a("Set-lead not available",e.yellow);return}let g=l[2],k=l[3];if(!g||!k){a("Usage: /team set-lead <teamId> <agentId>",e.yellow);return}a(`Setting lead for team ${g}...`,e.amber),Ge(g,k).then(Y=>{a(`\u2713 New lead for team "${Y.name}"`,e.green),K({includeTeams:true});},Y=>a(`Failed: ${u(Y)}`,e.red));}else a("Usage: /team create|list|join|leave|disband|set-lead",e.yellow);return}case "goal":{let b=l[1]?.toLowerCase();if(b==="add"||b==="create"){let g=l.slice(2).join(" ").trim();if(!g){let k=or(de);Qe({title:"New Goal",steps:k,kind:"goal"}),Ee("wizard");return}if(!Ye){a("Goal creation not available",e.yellow);return}a(`Creating goal "${g}"...`,e.amber),Ye({title:g}).then(k=>{a(`\u2713 Created goal "${k.title}" (${k.id})`,e.green),K();},k=>a(`Failed: ${u(k)}`,e.red));}else if(b==="list"){let g=pt.map(k=>` ${k.id} ${k.status.padEnd(8)} ${k.title}`);if(g.length===0)a("No goals",e.dim);else for(let k of g)a(k,e.cyan);}else if(b==="show"){let g=l[2]?pt.find(k=>k.id===l[2]):Q;if(!g){a("No goal selected or id given",e.yellow);return}a(`${g.id} ${g.status} "${g.title}"`,e.cyan),g.description&&a(` ${g.description.slice(0,100)}`,e.dim);}else if(b==="status"){let g=l[2]?pt.find(hn=>hn.id===l[2]):void 0,k=g??Q;if(!k){a("No goal selected or id given",e.yellow);return}let Y=l[g?3:2];if(!Y||!a$1.includes(Y)){a("Usage: /goal status [id] <active|paused|achieved|abandoned>",e.yellow);return}let Lt=Y;if(!ft){a("Status update not available",e.yellow);return}a(`Updating goal status to ${Lt}...`,e.amber),ft(k.id,Lt).then(hn=>{a(`\u2713 Goal "${hn.title}" \u2192 ${Lt}`,e.green),K();},hn=>a(`Failed: ${u(hn)}`,e.red));}else if(b==="delete"){let g=l[2]?pt.find(k=>k.id===l[2]):Q;if(!g){a("No goal selected or id given",e.yellow);return}if(!Ce){a("Goal deletion not available",e.yellow);return}Bn("goal",g.id,g.title);}else a("Usage: /goal add|list|show|status|delete",e.yellow);return}case "run":{let b=l[1]??j?.id;if(!b){a("No task selected or id given",e.yellow);return}if(!s){a("Run not available",e.yellow);return}let g=Oe.find(k=>k.id===b);if(g&&!Kr.has(g.status)){a(`Cannot run \u2014 status is ${g.status}`,e.yellow);return}a(`Running ${b}...`,e.amber),s(b).then(()=>{a(`\u2713 Dispatched ${b}`,e.green),K();},k=>a(`Failed: ${u(k)}`,e.red));return}case "run-all":{if(!T){a("Run-all not available",e.yellow);return}a("Running all todo tasks...",e.amber),T().then(()=>{a("\u2713 Dispatched all todo tasks",e.green),K();},b=>a(`Failed: ${u(b)}`,e.red));return}case "watch":{if(ho){a("Watch mode already active",e.yellow);return}if(!ut){a("Watch not available",e.yellow);return}a("Starting watch mode...",e.amber),ut().then(()=>{ur(true),a("\u2713 Watch mode started",e.green);},b=>a(`Failed: ${u(b)}`,e.red));return}case "pause":{if(!ho){a("Watch mode not active",e.yellow);return}if(!Ct){a("Pause not available",e.yellow);return}a("Pausing watch mode...",e.amber),Ct().then(()=>{ur(false),a("\u2713 Watch mode paused",e.green);},b=>a(`Failed: ${u(b)}`,e.red));return}case "config":{l[1]?.toLowerCase()==="activity-filter"?br(g=>{let k=Yr(g);return rn?.(k.label),a(`Activity filter: ${k.label}`,e.amber),new Set(k.types)}):Ss();return}case "status":{let b=ce.filter(g=>g.status==="in_progress").length;a(`${Mr} ${b} running ${ce.length} tasks ${Ne.length} agents`,e.cyan);return}case "help":{for(let[b,g]of Object.entries(bn)){let k=g.sub?" "+g.sub.join("|"):g.args?" "+g.args:"";a(` /${b}${k} \u2014 ${g.help}`,e.silver);}return}case "quit":{ln();return}case "disable":{if(!Z){a("No agent selected",e.yellow);return}if(!S)return;a(`Disabling ${Z.name}...`,e.amber),S(Z.id).then(()=>{a(`\u2713 Disabled ${Z.name}`,e.green),K();},b=>a(`Failed: ${u(b)}`,e.red));return}case "enable":{if(!Z){a("No agent selected",e.yellow);return}if(!I)return;a(`Enabling ${Z.name}...`,e.amber),I(Z.id).then(()=>{a(`\u2713 Enabled ${Z.name}`,e.green),K();},b=>a(`Failed: ${u(b)}`,e.red));return}default:a(`Unknown: ${c}. Type /help for commands`,e.yellow);}},[j,Z,Oe,Ne,ce,Mr,ho,h,y,m,T,s,f,S,I,C,P,B,H,oe,we,We,Ge,ut,Ct,a,ln,K,Ro,Mo,ws,Ss]);useInput((i,x)=>{if(!(Bt&&(fr(false),i==="?"||x.escape||i==="\x1BOP"))&&!kn){if((x.ctrl||x.meta)&&i==="s"&&Pe==="wizard"&&bt?.kind==="agent"){ys();return}if(Pe!=="none"){if(x.escape){Ee("none"),xt.reset(""),ko.reset();return}if(x.return){let c=dn.trim();if(!c)return;if(Pe==="new_task"){if(!f)return;Ee("none"),xt.reset(""),a(`Creating "${c}"...`,e.amber),f(c).then(u=>{a(`\u2713 Created "${u.title}" (${u.id})`,e.green),K();},u=>a(`Failed to create: ${u instanceof Error?u.message:String(u)}`,e.red));}else if(Pe==="command"){let u=c;if(Mt.length>0&&Mt[Io]){let b=Mt[Io],g=b.cmd.replace(/\s+\[.*\]$/,"");if((g.startsWith(c)||c==="/")&&(u=g),b.subs&&!g.includes(" ")){xt.setValue(g+" "),gn(0);return}}Ee("none"),xt.reset(""),gn(0),ko.push(u),ol(u);}return}if(x.tab&&Pe==="command"){if(Mt.length>0){let c=Mt[Io];if(c){let u=c.cmd.replace(/\s+\[.*\]$/,"");xt.setValue(u+(c.subs?" ":"")),gn(0);}}else {let c=Nr(dn);c&&xt.setValue(dn+c);}return}if(x.upArrow&&Pe==="command"){if(Mt.length>0)gn(c=>Math.max(0,c-1));else {let c=ko.prev();c!==null&&xt.setValue(c);}return}if(x.downArrow&&Pe==="command"){if(Mt.length>0)gn(c=>Math.min(Mt.length-1,c+1));else {let c=ko.next();xt.setValue(c??"");}return}xt.handleInput(i,x)&&gn(0);return}if(i.toLowerCase()==="q"){ln();return}if(x.escape){if(Ae){Kn(false),to(0);return}if(E==="logs"&&Jn>=0){xr(-1),Qn(0);return}return}if((i==="+"||i==="=")&&E!=="logs"){Co?(Cr(false),vn(-Math.floor(_t/2))):vn(l=>Math.max(-En,l-3));return}if(i==="-"&&E!=="logs"){Co?(Cr(false),vn(Math.floor(_t/2))):vn(l=>Math.min(En,l+3));return}if(i==="M"&&E!=="logs"){Cr(l=>!l);return}if(i==="?"){fr(true);return}if(i==="\x1BOP"){fr(true);return}if(i==="/"&&!Ae){Ee("command"),xt.setValue("/"),gn(0);return}if((i==="a"||i==="A")&&E==="logs"&&!Ae&&!kn&&!Zn){pr(true);return}if(i==="f"&&E==="logs"&&!Ae&&!kn&&!Zn){hr(true);return}if(i==="F"&&E==="logs"&&!Ae&&!kn&&!Zn){is(l=>new Set(Yr(l).types));return}if((i==="z"||i==="Z")&&_n.length>0){Ga();return}if((i==="f"||i==="F")&&(E==="tasks"||E==="agents"||E==="goals")&&!Ae){br(l=>{let c=Yr(l);return rn?.(c.label),new Set(c.types)});return}if((i==="n"||i==="N")&&E==="tasks"&&!Ae&&f){Ro();return}if((i==="n"||i==="N")&&E==="agents"&&!Ae&&C){Mo();return}if((i==="n"||i==="N")&&E==="goals"&&!Ae&&Ye){let l=or(de);Qe({title:"New Goal",steps:l,kind:"goal"}),Ee("wizard");return}if((i==="e"||i==="E")&&E==="goals"&&Q&&Ze){let l=la(Q,de);Qe({title:`Edit Goal: ${Q.title}`,steps:l,kind:"edit_goal",targetId:Q.id}),Ee("wizard");return}if((i==="d"||i==="D")&&E==="goals"&&Q&&Ce){Bn("goal",Q.id,Q.title);return}if((i==="c"||i==="C")&&E==="goals"&&Q&&ft){(Q.status==="active"||Q.status==="paused")&&(a(`Marking goal "${Q.title}" as achieved (pending tasks will be cancelled)...`,e.amber),ft(Q.id,"achieved",{force:true}).then(()=>{a(`\u2713 Goal "${Q.title}" achieved`,e.green),K();},l=>a(`Failed: ${l instanceof Error?l.message:String(l)}`,e.red)));return}if((i==="x"||i==="X")&&E==="goals"&&Q&&ft){(Q.status==="active"||Q.status==="paused")&&(a(`Abandoning goal "${Q.title}"...`,e.amber),ft(Q.id,"abandoned").then(()=>{a(`\u2713 Goal "${Q.title}" abandoned`,e.dim),K();},l=>a(`Failed: ${l instanceof Error?l.message:String(l)}`,e.red)));return}if((i==="p"||i==="P")&&E==="goals"&&Q&&ft){let l=Q.status==="paused"?"active":"paused";(Q.status==="active"||Q.status==="paused")&&ft(Q.id,l).then(()=>{a(`Goal "${Q.title}" ${l}`,e.cyan),K();},c=>a(`Failed: ${c instanceof Error?c.message:String(c)}`,e.red));return}if((i==="a"||i==="A")&&E==="tasks"&&j?.status==="review"&&P){a(`Approving "${j.title}"...`,e.amber),P(j.id).then(()=>{a(`\u2713 Approved "${j.title}"`,e.green),K();},l=>a(`Failed: ${l instanceof Error?l.message:String(l)}`,e.red));return}if((i==="x"||i==="X")&&E==="tasks"&&j?.status==="review"&&B){a(`Rejecting "${j.title}"...`,e.amber),B(j.id).then(()=>{a(`\u2713 Rejected "${j.title}" \u2192 todo`,e.green),K();},l=>a(`Failed: ${l instanceof Error?l.message:String(l)}`,e.red));return}if((i==="c"||i==="C")&&E==="tasks"&&j&&h){if(j.status==="done"||j.status==="failed"||j.status==="cancelled"){a(`Cannot cancel \u2014 status is ${j.status}`,e.yellow);return}a(`Cancelling "${j.title}"...`,e.amber),h(j.id).then(()=>{a(`\u2713 Cancelled "${j.title}"`,e.green),K();},l=>a(`Failed: ${l instanceof Error?l.message:String(l)}`,e.red));return}if((i==="e"||i==="E")&&E==="tasks"&&j&&G){Va(j);return}if((i==="e"||i==="E")&&E==="agents"&&Z&&W){ja(Z);return}if((i==="s"||i==="S")&&E==="tasks"){fs(l=>!l),qn(0),In(0);return}if((i==="g"||i==="G")&&E==="tasks"&&!Ae){Ea(l=>!l),qn(0),In(0);return}if((i==="s"||i==="S")&&E==="agents"&&Z&&w){if(!Object.values(ze.running).some(c=>c.agent_id===Z.id)&&Z.status!=="running"){a(`Agent "${Z.name}" is not running`,e.yellow);return}a(`Force-stopping agent "${Z.name}"...`,e.amber),w(Z.id).then(()=>{a(`\u2713 Stopped agent "${Z.name}"`,e.green),K();},c=>a(`Failed: ${c instanceof Error?c.message:String(c)}`,e.red));return}if((i==="d"||i==="D")&&E==="tasks"&&j&&j.status!=="in_progress"&&H){Bn("task",j.id,j.title);return}if((i==="d"||i==="D")&&E==="agents"&&Z&&z){let l=Object.values(ze.running).some(c=>c.agent_id===Z.id);if(l&&!w){a(`Cannot delete \u2014 agent "${Z.name}" is running. Press S to stop first.`,e.yellow);return}Bn("agent",Z.id,Z.name,{needsForceStop:l});return}if((i==="u"||i==="U")&&E==="agents"&&Z&&gt){let l=!Z.autonomous;a(`${l?"Enabling":"Disabling"} autonomous mode for "${Z.name}"...`,e.amber),gt(Z.id,l).then(()=>{a(`${xn} ${Z.name} autonomous ${l?"ON":"OFF"}`,e.cyan),K();},c=>a(`Failed: ${c instanceof Error?c.message:String(c)}`,e.red));return}if(!Ae){if(i==="g"||i==="G"){Sn("goals");return}if(i==="t"||i==="T"){Sn("tasks");return}if(i==="a"||i==="A"){Sn("agents");return}if(i==="l"||i==="L"){Sn("logs");return}}if(!Ae){let l=Do.map(u=>u.id),c=l.indexOf(E);if(x.tab||x.rightArrow){Sn(l[(c+1)%l.length]);return}if(x.leftArrow){Sn(l[(c+l.length-1)%l.length]);return}}if(x.return){let l=An>0?Et.length:-1;if(E==="tasks"&&bo===l){fs(u=>!u),qn(0),In(0);return}let c=Et.length+(An>0?1:0);if(E==="tasks"&&bo===c&&f){Ro();return}if(E==="goals"&&mr===pt.length&&Ye){let u=or(de);Qe({title:"New Goal",steps:u,kind:"goal"}),Ee("wizard");return}if(E==="agents"&&gr===Ne.length&&C){Mo();return}if(E==="goals"&&Q){Kn(u=>!u),to(0);return}if(E==="tasks"&&j){Kn(u=>!u);return}if(E==="agents"&&Z){Kn(u=>!u);return}if(E==="logs"&&Jn>=0){Kn(u=>!u);return}}if((i==="r"||i==="R")&&E==="tasks"&&j&&s){if(!Kr.has(j.status)){a(`Cannot run "${j.title}" \u2014 status is ${j.status}`,e.yellow);return}a(`Running "${j.title}"...`,e.green),s(j.id).then(()=>{a(`Dispatched "${j.title}"`,e.green),K();},l=>a(`Failed to run: ${l instanceof Error?l.message:String(l)}`,e.red));return}if(x.upArrow||i==="k"){if(E==="goals"&&Ae){to(l=>Math.max(0,l-1));return}E==="goals"?ns(l=>{let c=Math.max(0,l-1);return Sr(u=>c<u?c:u),c}):E==="tasks"?qn(l=>{let c=Math.max(0,l-1);return In(u=>c<u?c:u),c}):E==="agents"?ts(l=>{let c=Math.max(0,l-1);return wr(u=>c<u?c:u),c}):E==="logs"&&xr(l=>{if(l===-1){let u=Ve.length-1;return Qn(Math.max(0,u-Se+2)),Math.max(0,u)}let c=Math.max(0,l-1);return Qn(u=>c<u?c:u),c});}if(x.downArrow||i==="j"){if(E==="goals"&&Ae){to(l=>l+1);return}if(E==="goals"){let l=pt.length+(Ye?1:0)-1;ns(c=>{let u=Math.min(Math.max(0,l),c+1);return Sr(b=>u>=b+Se?u-Se+1:b),u});}else if(E==="tasks"){let l=Et.length+(f?1:0)+(An>0?1:0)-1;qn(c=>{let u=Math.min(Math.max(0,l),c+1);return In(b=>u>=b+Se?u-Se+1:b),u});}else if(E==="agents"){let l=Ne.length+(C?1:0)-1;ts(c=>{let u=Math.min(Math.max(0,l),c+1);return wr(b=>u>=b+Se?u-Se+1:b),u});}else E==="logs"&&xr(l=>{if(l===-1)return -1;let c=Ve.length-1;if(l>=c)return Qn(0),-1;let u=l+1;return Qn(b=>u>=b+Se-1?u-Se+2:b),u});}}});let st=Pe!=="none",Is=Jn>=0?Ve[Jn]:void 0,Ao=Co?"+/- exit max":"+/- resize \u2502 M max",vs=!st&&Ae&&E==="tasks"&&j,_s=!st&&Ae&&E==="agents"&&Z,Ms=!st&&Ae&&E==="goals"&&Q,rl=!st&&Ae&&E==="logs"&&Is,Rr=j?.id,sl=useMemo(()=>Rr?Ve.filter(i=>i.taskId===Rr):[],[Ve,Rr]),il=!st&&E==="tasks"&&j&&Kr.has(j.status)&&!!s,al=!st&&!Ae&&(E==="goals"&&!!Ye||E==="tasks"&&!!f||E==="agents"&&!!C),ll=!st&&E==="tasks"&&j?.status==="review"&&!!P,cl=!st&&E==="tasks"&&j?.status==="review"&&!!B,dl=Z?Object.values(ze.running).some(i=>i.agent_id===Z.id):false,ul=!st&&(E==="goals"&&Q&&!!Ce||E==="tasks"&&j&&j.status!=="in_progress"&&!!H||E==="agents"&&Z&&!!z),gl=!st&&!Ae&&(E==="goals"&&!!Q&&!!Ze||E==="tasks"&&!!j&&!!G||E==="agents"&&!!Z&&!!W),ml=!st&&E==="agents"&&Z&&(dl||Z.status==="running")&&!!w,fl=!st&&E==="agents"&&!!Z&&!!gt,pl=!st&&E==="goals"&&!!Q&&(Q.status==="active"||Q.status==="paused")&&!!ft,hl=!st&&_n.length>0,Rs=Pe==="command"&&Mt.length>0,As=bt?.kind==="task"||bt?.kind==="edit_task";return jsxs(Box,{flexDirection:"column",width:ae,height:ue,children:[jsx(ni,{projectName:t,activeView:E,mode:Mr,stats:Cs,tokens:Ka,uptime:qa,width:ae,version:sn,latestVersion:cn,updateInstalled:N,taskBadge:An>0?Oe.length:void 0,flashTab:yr?.tab,flashColor:yr?.color,onFlashComplete:yr?()=>cs(void 0):void 0}),jsx(Box,{height:1}),Bt&&jsx(Pi,{width:ae,height:ue-7}),!Bt&&Yt==="welcome"&&E==="tasks"&&jsx(ki,{width:ae,height:ue}),!Bt&&E==="goals"&&jsx(Jc,{goals:pt,selectedIndex:mr,scrollOffset:La,height:Se,width:Me,showAddRow:!!Ye,agentNameMap:mn,tasksByGoalMap:Na}),!Bt&&Yt!=="welcome"&&E==="tasks"&&jsx(ed,{tasks:Et,selectedIndex:bo,scrollOffset:Ba,height:Se,width:Me,showAddRow:!!f,agentNameMap:mn,hiddenCount:An,goalMap:Rn,groupByGoal:eo}),!Bt&&E==="tasks"&&(Yt==="task_created"||Yt==="run_started")&&jsx(Ci,{step:Yt,width:ae}),!Bt&&E==="tasks"&&Yt==="completed"&&jsx(Ii,{width:ae}),!Bt&&E==="agents"&&jsx(td,{agents:Ne,selectedIndex:gr,scrollOffset:Oa,height:Se,width:Me,state:ze,taskTitleMap:no,showAddRow:!!C,agentTeamMap:$n,teamLeadSet:Fa,activeTeamCount:oo}),!Bt&&E==="logs"&&jsxs(Fragment,{children:[jsx(od,{messages:Ve,height:kn||Zn?Math.max(3,Se-16):Se,agents:Ne,logAgentFilter:rs,logTypeFilter:ss,selectedIndex:Jn,scrollOffset:va,agentNameMap:mn,agentColorMap:vo,agentMsgCounts:xs,taskTitleMap:no,width:Me}),kn&&jsx(Box,{paddingX:2,children:jsx(bi,{agents:Ne,selected:rs,msgCounts:xs,colorMap:vo,maxHeight:Math.min(Se-4,18),onConfirm:i=>{Ia(i),pr(false);},onCancel:()=>pr(false)})}),Zn&&jsx(Box,{paddingX:2,children:jsx(Si,{selected:ss,typeCounts:Da,onConfirm:i=>{is(i),hr(false);},onCancel:()=>hr(false)})})]}),jsx(Box,{height:1}),Bt?null:Pe==="wizard"&&bt?jsx(pi,{title:bt.title,steps:bt.steps,onComplete:Ha,onCancel:Ua,width:Me,height:Ot,onPasteImage:As?za:void 0,onSuggestionSelected:bt.kind==="agent"?Xa:void 0,footerExtra:un.length>0&&As?`\u{1F4CE}${un.length}`:void 0},`${bt.kind}-${bt.title}`):Rs?jsxs(Fragment,{children:[jsx(rr,{label:"COMMANDS",width:Me}),jsx(Zc,{suggestions:Mt,selectedIndex:Io,height:Math.min(Mt.length,Ot),width:Me})]}):Pe==="new_task"?jsxs(Fragment,{children:[jsx(dd,{mode:Pe,width:Me}),jsx(ud,{mode:Pe,cursor:xt.cursor,width:Me})]}):vs?jsxs(Fragment,{children:[jsx(id,{task:j,width:Me,resizeHint:Ao}),jsx(Qs,{task:j,height:Ot,width:Me,taskLogs:sl,agentNameMap:mn,taskTitleMap:no})]}):Ms?jsxs(Fragment,{children:[jsx(rr,{label:`GOAL: ${Q.title}`,width:Me,suffixLen:Ao.length+2,suffix:jsxs(Text,{color:e.dim,children:[" ",Ao," "]})}),jsx(Qc,{goal:Q,height:Ot,width:Me,agentNameMap:mn,tasks:Wa,progressReport:Ca,scrollOffset:Pa,onClampScroll:to})]}):_s?jsxs(Fragment,{children:[jsx(ad,{agent:Z,width:Me,resizeHint:Ao}),jsx(ld,{agent:Z,height:Ot,state:ze,taskTitleMap:no,teamName:$n.get(Z.id)})]}):rl?jsxs(Fragment,{children:[jsx(rr,{label:"LOG",width:Me}),jsx(sd,{message:Is,height:Ot,width:Me,agents:Ne,agentNameMap:mn,agentColorMap:vo,taskTitleMap:no})]}):Ve.length>0&&E!=="logs"?jsxs(Fragment,{children:[(()=>{let i=` F:${To.toUpperCase()} \u2502 ${Tr.length}/${Ve.length}`;return jsx(rr,{label:"ACTIVITY",width:Me,suffixLen:i.length,suffix:jsxs(Fragment,{children:[jsx(Text,{color:e.dim,children:" F:"}),jsx(Text,{color:e.amber,children:To.toUpperCase()}),jsxs(Text,{color:e.ghost,children:[" ","\u2502"," ",Tr.length,"/",Ve.length]})]})})})(),jsx(rd,{messages:Tr,height:Math.max(1,Ot-1),width:Me,agents:Ne,agentNameMap:mn,agentColorMap:vo})]}):E==="goals"?jsx(Jo,{count:pt.length,config:_i,width:Me}):E==="tasks"?jsx(Jo,{count:Oe.length,config:Mi,width:Me}):E==="agents"?jsx(Jo,{count:Ne.length,config:Ri,width:Me}):null,jsx(Box,{flexGrow:1}),jsx(Li,{toasts:Ra,onDismiss:$a}),_n.length>0&&jsx(Yc,{deletions:_n,width:ae}),jsx(ri,{mode:Pe==="command"?"command":"navigate",value:Pe==="command"?dn:"",completion:Pe==="command"?Nr(dn):null,activeView:E,canRun:!!il,canNew:!!al,canApprove:!!ll,canReject:!!cl,canCancel:E==="tasks"&&!!j&&j.status==="in_progress"&&!!h,canDelete:!!ul,canUndo:!!hl,canEdit:!!gl,canForceStop:!!ml,canToggleAuto:!!fl,autoActive:Z?.autonomous,canPause:!!pl,isPaused:Q?.status==="paused",canToggleShowAll:E==="tasks"&&Oe.length>da,showAllActive:ms,hasDetail:!!(vs||_s||Ms),itemCount:E==="goals"?pt.length:E==="tasks"?Oe.length:E==="agents"?de.length:Ve.length,itemLabel:E==="goals"?"goals":E==="tasks"?"tasks":E==="agents"?"agents":"events",width:ae,hasSuggestions:Rs,onboardingCompleted:r.onboardingCompleted})]})}var Yc=uo.memo(function({deletions:n,width:o}){let[,r]=useState(0);useEffect(()=>{let f=setInterval(()=>r(h=>h+1),1e3);return ()=>clearInterval(f)},[]);let s=Date.now();return jsx(Box,{flexDirection:"column",width:o,children:n.map(f=>{let h=Math.max(0,Math.ceil((f.expiresAt-s)/1e3)),y=Math.max(0,o-4),m=f.entityType==="task"?"Task":f.entityType==="agent"?"Agent":"Goal",T=Math.max(10,y-m.length-30),S=f.entityName.length>T?f.entityName.slice(0,T-1)+"\u2026":f.entityName;return jsx(Box,{paddingX:2,children:jsxs(Text,{color:e.yellow,children:["\u2717 ",jsx(Text,{bold:true,children:m}),` "${S}" \u2014 `,jsxs(Text,{color:e.amber,bold:true,children:[h,"s"]}),jsx(Text,{color:e.dim,children:" \u2502 "}),jsx(Text,{color:e.gray,bold:true,children:"Z"}),jsx(Text,{color:e.dim,children:" undo"})]})},f.key)})})});function Zc({suggestions:t,selectedIndex:n,height:o,width:r}){let s=o,f=0;n>=s&&(f=n-s+1);let h=t.slice(f,f+s);return jsx(Box,{flexDirection:"column",paddingX:2,children:h.map((y,m)=>{let T=m+f,S=T===n,I=S?"\u25B6":" ",M=Math.min(20,Math.max(14,...t.map(C=>C.cmd.length+1))),v=y.cmd.padEnd(M),L=y.subs?` ${y.subs}`:"",_=Math.max(4,r-M-L.length-8),R=y.desc.length>_?y.desc.slice(0,_-1)+"\u2026":y.desc;return jsxs(Text,{wrap:"truncate",children:[jsx(Text,{color:S?e.amber:e.ghost,children:` ${I} `}),jsx(Text,{color:S?e.white:e.silver,bold:S,children:v}),jsx(Text,{color:e.dim,children:R}),L&&jsx(Text,{color:e.ghost,children:L})]},T)})})}function Jc({goals:t,selectedIndex:n,scrollOffset:o=0,height:r,width:s,showAddRow:f,agentNameMap:h,tasksByGoalMap:y}){let m=t.length,T=t.slice(o,o+r),S=f&&m>=o&&m<o+r;return jsxs(Box,{flexDirection:"column",height:r,children:[T.map((I,M)=>jsx(Box,{paddingX:2,children:jsx(Js,{goal:I,selected:M+o===n,width:s-2,agentNameMap:h,tasksByGoal:y?.get(I.id)})},I.id)),S&&jsx(Box,{paddingX:2,children:jsxs(Text,{color:n===m?e.amber:e.ghost,children:[n===m?" \u25B8 ":" ",jsx(Text,{color:n===m?e.amber:e.dim,children:"+ add goal..."})]})},"__add__")]})}function Qc({goal:t,height:n,width:o,agentNameMap:r,tasks:s,progressReport:f,scrollOffset:h=0,onClampScroll:y}){let T=uo.useMemo(()=>{let _=s??[],R=t.assignee?r?.get(t.assignee)??t.assignee:"\u2014",C=Math.max(20,o-6),z=(w,U)=>{if(w.length<=U)return [w];let ie=[];for(let oe=0;oe<w.length;oe+=U)ie.push(w.slice(oe,oe+U));return ie},P=Or(f)?.split(`
13
13
  `).flatMap(w=>z(w,C))??[],B=Or(t.description)?.split(`
package/dist/cli.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import {a as a$1,b,i}from'./chunk-64WUDYEM.js';import {a as a$3,e}from'./chunk-6E6DC7OE.js';import {k as k$1}from'./chunk-ZMLF5HI5.js';import {a as a$2,b as b$1}from'./chunk-LRYVT4D4.js';import R from'path';import {Command}from'commander';function l(o){let t=o.noColor||"NO_COLOR"in process.env||false,i=o.ascii||process.env.TERM==="dumb"||false;return {projectRoot:e(),json:o.json??false,quiet:o.quiet??false,noColor:t,ascii:i}}var d={task:async(o,t)=>{(await import('./task-YMPSU6YE.js')).registerTaskCommand(o,t);},agent:async(o,t)=>{(await import('./agent-6PI3NNZ5.js')).registerAgentCommand(o,t);},status:async(o,t)=>{(await import('./status-NYHZ7Q5G.js')).registerStatusCommand(o,t);},logs:async(o,t)=>{(await import('./logs-EUOQ2UZL.js')).registerLogsCommand(o,t);},config:async(o,t)=>{(await import('./config-OOB7QEKM.js')).registerConfigCommand(o,t);},context:async(o,t)=>{(await import('./context-FXRERFSP.js')).registerContextCommand(o,t);},msg:async(o,t)=>{(await import('./msg-4ELI7Q52.js')).registerMsgCommand(o,t);},goal:async(o,t)=>{(await import('./goal-KQ4XOSRH.js')).registerGoalCommand(o,t);},team:async(o,t)=>{(await import('./team-VCJSUDWX.js')).registerTeamCommand(o,t);},org:async(o,t)=>{(await import('./org-RL6SBZI4.js')).registerOrgCommand(o,t);}},m={run:async(o,t)=>{(await import('./run-PX7O3ILN.js')).registerRunCommand(o,t);},doctor:async(o,t)=>{(await import('./doctor-DEGM2HCD.js')).registerDoctorCommand(o,t);},tui:async(o,t)=>{(await import('./tui-QU4MGY6B.js')).registerTuiCommand(o,t);},serve:async(o,t)=>{(await import('./serve-DE7ES7Q5.js')).registerServeCommand(o,t);}},a=new Command;a.name("orchestry").description("Agents Organizations \u2014 CLI orchestrator for AI agents").version("1.0.24").option("--json","Output as JSON").option("--quiet","Minimal output (IDs only)").option("--no-color","Disable colors").option("--ascii","ASCII-only output (no Unicode)").hook("preAction",async o=>{let t=o.opts();t.ascii&&a$1(true),t.color===false&&b(true);});var x=[["task","Manage tasks"],["agent","Manage agents"],["status","Show orchestrator status"],["logs","View run logs"],["config","Manage configuration"],["context","Shared context store for inter-agent data exchange"],["msg","Inter-agent messaging"],["goal","Manage goals"],["team","Manage teams"],["org","Pre-built AI companies"],["run","Run tasks"],["doctor","Check adapters and dependencies"],["tui","Launch TUI dashboard"],["serve","Headless daemon mode with structured logs"],["init","Initialize project"],["update","Check for updates"]],L=new Set(x.map(([o])=>o));async function k(){a.parseOptions(process.argv);let o=a.opts(),t=process.argv.slice(2).find(e=>!e.startsWith("-")),i$1=t!==void 0&&L.has(t);if((process.argv.includes("--help")||process.argv.includes("-h")||process.argv.includes("--version")||process.argv.includes("-V"))&&!i$1){for(let[e,n]of x)a.command(e).description(n);await a.parseAsync(process.argv);return}if(t==="init"){let{registerInitCommand:e}=await import('./init-4D6QMPQL.js');e(a);}else if(t==="update"){let{registerUpdateCommand:e}=await import('./update-W54LAATS.js');e(a);}let g=process.argv.length<=2;if(g&&!await k$1(R.join(process.cwd(),a$3))){let{runInit:e}=await import('./init-4D6QMPQL.js');await e();let n=l({json:o.json,quiet:o.quiet,noColor:o.color===false,ascii:o.ascii}),{buildFullContainer:s}=await import('./container-KJNQCG2C.js'),p=await s(n);await m.tui(a,p),await a.parseAsync([...process.argv,"tui"]);return}let u=l({json:o.json,quiet:o.quiet,noColor:o.color===false,ascii:o.ascii}),j=!t||t in m,{buildFullContainer:A,buildLightContainer:M}=await import('./container-KJNQCG2C.js');try{if(j){let e=await A(u),n=t?m[t]:void 0;n?await n(a,e):await Promise.all(Object.values(m).map(p=>p(a,e)));let s=t?d[t]:void 0;s&&await s(a,e);}else {let e=await M(u),n=d[t];n?await n(a,e):await Promise.all(Object.values(d).map(s=>s(a,e)));}}catch(e){if(e instanceof b$1){if(t==="doctor"){let{registerDoctorCommand:n}=await import('./doctor-DEGM2HCD.js');n(a);}if(t==="init"||t==="doctor"||t==="update"){await a.parseAsync(process.argv);return}i(e.message,e.hint),process.exit(e.exitCode);}throw e}g&&process.argv.push("tui");let r,f=t==="tui"||t==="update"||t==="serve",S=f?Promise.resolve(null):import('./update-check-R5ABF6HE.js').then(e=>(r=e,e.checkForUpdateSWR(a.version()??"0.0.0")));if(await a.parseAsync(process.argv),!f){let e=await S;e&&r&&(r.printUpdateNotification(e),e.updateAvailable&&r.backgroundInstall(e.latest).catch(()=>{}));}}k().catch(o=>{o instanceof a$2&&(i(o.message,o.hint),process.exit(o.exitCode)),i(o instanceof Error?o.message:String(o)),process.env.ORCHESTRY_DEBUG&&console.error(o),process.exit(1);});
2
+ import {a as a$1,b,i}from'./chunk-64WUDYEM.js';import {a as a$3,e}from'./chunk-6E6DC7OE.js';import {k as k$1}from'./chunk-ZMLF5HI5.js';import {a as a$2,b as b$1}from'./chunk-LRYVT4D4.js';import R from'path';import {Command}from'commander';function l(o){let t=o.noColor||"NO_COLOR"in process.env||false,i=o.ascii||process.env.TERM==="dumb"||false;return {projectRoot:e(),json:o.json??false,quiet:o.quiet??false,noColor:t,ascii:i}}var d={task:async(o,t)=>{(await import('./task-YMPSU6YE.js')).registerTaskCommand(o,t);},agent:async(o,t)=>{(await import('./agent-6PI3NNZ5.js')).registerAgentCommand(o,t);},status:async(o,t)=>{(await import('./status-NYHZ7Q5G.js')).registerStatusCommand(o,t);},logs:async(o,t)=>{(await import('./logs-EUOQ2UZL.js')).registerLogsCommand(o,t);},config:async(o,t)=>{(await import('./config-OOB7QEKM.js')).registerConfigCommand(o,t);},context:async(o,t)=>{(await import('./context-FXRERFSP.js')).registerContextCommand(o,t);},msg:async(o,t)=>{(await import('./msg-4ELI7Q52.js')).registerMsgCommand(o,t);},goal:async(o,t)=>{(await import('./goal-KQ4XOSRH.js')).registerGoalCommand(o,t);},team:async(o,t)=>{(await import('./team-VCJSUDWX.js')).registerTeamCommand(o,t);},org:async(o,t)=>{(await import('./org-RL6SBZI4.js')).registerOrgCommand(o,t);}},m={run:async(o,t)=>{(await import('./run-PX7O3ILN.js')).registerRunCommand(o,t);},doctor:async(o,t)=>{(await import('./doctor-DEGM2HCD.js')).registerDoctorCommand(o,t);},tui:async(o,t)=>{(await import('./tui-NZ55TCHU.js')).registerTuiCommand(o,t);},serve:async(o,t)=>{(await import('./serve-DE7ES7Q5.js')).registerServeCommand(o,t);}},a=new Command;a.name("orchestry").description("Agents Organizations \u2014 CLI orchestrator for AI agents").version("1.0.25").option("--json","Output as JSON").option("--quiet","Minimal output (IDs only)").option("--no-color","Disable colors").option("--ascii","ASCII-only output (no Unicode)").hook("preAction",async o=>{let t=o.opts();t.ascii&&a$1(true),t.color===false&&b(true);});var x=[["task","Manage tasks"],["agent","Manage agents"],["status","Show orchestrator status"],["logs","View run logs"],["config","Manage configuration"],["context","Shared context store for inter-agent data exchange"],["msg","Inter-agent messaging"],["goal","Manage goals"],["team","Manage teams"],["org","Pre-built AI companies"],["run","Run tasks"],["doctor","Check adapters and dependencies"],["tui","Launch TUI dashboard"],["serve","Headless daemon mode with structured logs"],["init","Initialize project"],["update","Check for updates"]],L=new Set(x.map(([o])=>o));async function k(){a.parseOptions(process.argv);let o=a.opts(),t=process.argv.slice(2).find(e=>!e.startsWith("-")),i$1=t!==void 0&&L.has(t);if((process.argv.includes("--help")||process.argv.includes("-h")||process.argv.includes("--version")||process.argv.includes("-V"))&&!i$1){for(let[e,n]of x)a.command(e).description(n);await a.parseAsync(process.argv);return}if(t==="init"){let{registerInitCommand:e}=await import('./init-4D6QMPQL.js');e(a);}else if(t==="update"){let{registerUpdateCommand:e}=await import('./update-W54LAATS.js');e(a);}let g=process.argv.length<=2;if(g&&!await k$1(R.join(process.cwd(),a$3))){let{runInit:e}=await import('./init-4D6QMPQL.js');await e();let n=l({json:o.json,quiet:o.quiet,noColor:o.color===false,ascii:o.ascii}),{buildFullContainer:s}=await import('./container-KJNQCG2C.js'),p=await s(n);await m.tui(a,p),await a.parseAsync([...process.argv,"tui"]);return}let u=l({json:o.json,quiet:o.quiet,noColor:o.color===false,ascii:o.ascii}),j=!t||t in m,{buildFullContainer:A,buildLightContainer:M}=await import('./container-KJNQCG2C.js');try{if(j){let e=await A(u),n=t?m[t]:void 0;n?await n(a,e):await Promise.all(Object.values(m).map(p=>p(a,e)));let s=t?d[t]:void 0;s&&await s(a,e);}else {let e=await M(u),n=d[t];n?await n(a,e):await Promise.all(Object.values(d).map(s=>s(a,e)));}}catch(e){if(e instanceof b$1){if(t==="doctor"){let{registerDoctorCommand:n}=await import('./doctor-DEGM2HCD.js');n(a);}if(t==="init"||t==="doctor"||t==="update"){await a.parseAsync(process.argv);return}i(e.message,e.hint),process.exit(e.exitCode);}throw e}g&&process.argv.push("tui");let r,f=t==="tui"||t==="update"||t==="serve",S=f?Promise.resolve(null):import('./update-check-R5ABF6HE.js').then(e=>(r=e,e.checkForUpdateSWR(a.version()??"0.0.0")));if(await a.parseAsync(process.argv),!f){let e=await S;e&&r&&(r.printUpdateNotification(e),e.updateAvailable&&r.backgroundInstall(e.latest).catch(()=>{}));}}k().catch(o=>{o instanceof a$2&&(i(o.message,o.hint),process.exit(o.exitCode)),i(o instanceof Error?o.message:String(o)),process.env.ORCHESTRY_DEBUG&&console.error(o),process.exit(1);});
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- function ct(d,e){d.command("tui").description("Launch interactive TUI dashboard").action(async()=>{let S=await e.taskService.list(),w=await e.agentService.list(),h=await e.stateStore.read(),{render:k}=await import('ink'),{createElement:T}=await import('react'),{App:b}=await import('./App-QHBW3KHL.js'),A=async t=>{await e.orchestrator.runTask(t);},R=async(t,s)=>e.taskService.create({title:t,priority:s?.priority,description:s?.description,attachments:s?.attachments}),C=async t=>{await e.orchestrator.cancelTask(t);},_=async t=>{await e.taskService.retry(t);},E=async(t,s)=>{await e.taskService.assign(t,s);},j=async()=>{await e.orchestrator.runAll();},D=async t=>{await e.agentService.disable(t);},U=async t=>{await e.agentService.enable(t);},m=t=>e.eventBus.onAny(t),P=async()=>e.taskService.list(),G=async()=>e.agentService.list(),x=async()=>e.stateStore.read(),I=async(t,s,a)=>e.agentService.create({name:t,adapter:s??e.config.defaults.agent.adapter,model:a?.model||void 0,effort:a?.effort||void 0,role:a?.role||void 0,approval_policy:a?.approval_policy||void 0,skills:a?.skills||void 0}),L=async t=>{await e.agentService.remove(t);},F=async t=>{await e.taskService.delete(t);},H=async t=>{await e.taskService.updateStatus(t,"done");},O=async(t,s)=>{await e.taskService.reject(t,s);},W=async(t,s)=>e.taskService.update(t,s),N=async(t,s)=>e.agentService.update(t,{...s,effort:s.effort,approval_policy:s.approval_policy}),B=async t=>{await e.orchestrator.forceStopAgent(t);},M=async(t,s)=>e.agentService.setAutonomous(t,s),V=async t=>{let s=await e.runService.listAll();s.sort((n,i)=>new Date(i.started_at).getTime()-new Date(n.started_at).getTime());let a=s.filter(n=>n.status==="succeeded"||n.status==="failed"),u=3,ot=10,y=a.slice(0,u),v=a.slice(u,ot),f=async n=>(await e.runService.readEventsTail(n.id,30)).map(r=>({timestamp:r.timestamp,agentId:n.agent_id,taskId:n.task_id,type:r.type,data:r.data}));if(y.length>0){let n=(await Promise.all(y.map(f))).flat();n.sort((i,r)=>new Date(i.timestamp).getTime()-new Date(r.timestamp).getTime()),t(n.slice(-200));}if(v.length>0){let n=(await Promise.all(v.map(f))).flat();n.sort((i,r)=>new Date(i.timestamp).getTime()-new Date(r.timestamp).getTime()),t(n.slice(-200));}},J=async t=>e.teamService.create(t),K=async()=>e.teamService.list(),q=async(t,s)=>e.teamService.join(t,s),z=async(t,s)=>e.teamService.leave(t,s),Q=async t=>{await e.teamService.disband(t);},X=async(t,s)=>e.teamService.setLead(t,s),Y=async()=>e.goalService.list(),Z=async t=>e.goalService.create(t),$=async(t,s)=>e.goalService.update(t,s),tt=async(t,s,a)=>e.goalService.updateStatus(t,s,a),et=async t=>{await e.goalService.delete(t);},st=async t=>e.goalService.getProgressReport(t),at=async()=>{await e.orchestrator.startWatch();},nt=async()=>{await e.orchestrator.stop();},c=d.version()??"0.0.0",rt=import('./update-check-R5ABF6HE.js').then(t=>t.checkForUpdateSWR(c)).catch(()=>null),l=false,p,g=false,o;try{await e.orchestrator.startWatch(),l=!0;}catch(t){p=t instanceof Error?t.message:String(t);let{DiskObserver:s}=await import('./disk-observer-B3NOZ2QA.js');o=new s({paths:e.paths,stateStore:e.stateStore}),g=true,m=a=>o.subscribe(a);}let{waitUntilExit:it}=k(T(b,{projectName:e.config.project.name,tasks:S,agents:w,state:h,onRunTask:A,onCreateTask:R,onCancelTask:C,onRetryTask:_,onAssignTask:E,onRunAll:j,onDisableAgent:D,onEnableAgent:U,onSubscribeEvents:m,onRefreshTasks:P,onRefreshAgents:G,onRefreshState:x,onLoadHistory:V,onAddAgent:I,onDeleteAgent:L,onApproveTask:H,onRejectTask:O,onDeleteTask:F,onUpdateTask:W,onUpdateAgent:N,onForceStopAgent:B,onToggleAutonomous:M,onRefreshGoals:Y,onCreateGoal:Z,onUpdateGoal:$,onUpdateGoalStatus:tt,onDeleteGoal:et,onGetGoalProgress:st,onCreateTeam:J,onListTeams:K,onJoinTeam:q,onLeaveTeam:z,onDisbandTeam:Q,onSetTeamLead:X,onStartWatch:at,onStopWatch:nt,initialWatchActive:l,observerMode:g,watchError:g?void 0:p,version:c,latestVersion:void 0,onCheckUpdate:async()=>{let t=await rt;if(t?.updateAvailable)return t.latest;let a=await(await import('./update-check-R5ABF6HE.js')).checkForUpdateNow(c);return a?.updateAvailable?a.latest:void 0},onBackgroundInstall:async t=>(await import('./update-check-R5ABF6HE.js')).backgroundInstall(t),initialActivityFilter:e.globalConfig.tui.activity_filter,onSaveActivityFilter:async t=>{await e.globalConfigStore.set("activity_filter",t);},initialNotifications:e.globalConfig.tui.notifications,onSaveNotifications:async t=>{await e.globalConfigStore.set("notifications",t);},initialMaxConcurrent:e.config.scheduling.max_concurrent_agents,onSaveMaxConcurrent:async t=>{await e.configStore.set("scheduling.max_concurrent_agents",t),e.config.scheduling.max_concurrent_agents=t;},onCompleteOnboarding:async()=>{let t=await e.stateStore.read();t.onboardingCompleted=true,await e.stateStore.write(t);},defaultAdapter:e.config.defaults.agent.adapter}),{incrementalRendering:true,kittyKeyboard:{mode:"auto",flags:["disambiguateEscapeCodes"]}});await it(),l&&await e.orchestrator.stop().catch(()=>{}),o&&o.stop(),e.eventBus.clear();});}export{ct as registerTuiCommand};
2
+ function ct(d,e){d.command("tui").description("Launch interactive TUI dashboard").action(async()=>{let S=await e.taskService.list(),w=await e.agentService.list(),h=await e.stateStore.read(),{render:k}=await import('ink'),{createElement:T}=await import('react'),{App:b}=await import('./App-IC2HLH6T.js'),A=async t=>{await e.orchestrator.runTask(t);},R=async(t,s)=>e.taskService.create({title:t,priority:s?.priority,description:s?.description,attachments:s?.attachments}),C=async t=>{await e.orchestrator.cancelTask(t);},_=async t=>{await e.taskService.retry(t);},E=async(t,s)=>{await e.taskService.assign(t,s);},j=async()=>{await e.orchestrator.runAll();},D=async t=>{await e.agentService.disable(t);},U=async t=>{await e.agentService.enable(t);},m=t=>e.eventBus.onAny(t),P=async()=>e.taskService.list(),G=async()=>e.agentService.list(),x=async()=>e.stateStore.read(),I=async(t,s,a)=>e.agentService.create({name:t,adapter:s??e.config.defaults.agent.adapter,model:a?.model||void 0,effort:a?.effort||void 0,role:a?.role||void 0,approval_policy:a?.approval_policy||void 0,skills:a?.skills||void 0}),L=async t=>{await e.agentService.remove(t);},F=async t=>{await e.taskService.delete(t);},H=async t=>{await e.taskService.updateStatus(t,"done");},O=async(t,s)=>{await e.taskService.reject(t,s);},W=async(t,s)=>e.taskService.update(t,s),N=async(t,s)=>e.agentService.update(t,{...s,effort:s.effort,approval_policy:s.approval_policy}),B=async t=>{await e.orchestrator.forceStopAgent(t);},M=async(t,s)=>e.agentService.setAutonomous(t,s),V=async t=>{let s=await e.runService.listAll();s.sort((n,i)=>new Date(i.started_at).getTime()-new Date(n.started_at).getTime());let a=s.filter(n=>n.status==="succeeded"||n.status==="failed"),u=3,ot=10,y=a.slice(0,u),v=a.slice(u,ot),f=async n=>(await e.runService.readEventsTail(n.id,30)).map(r=>({timestamp:r.timestamp,agentId:n.agent_id,taskId:n.task_id,type:r.type,data:r.data}));if(y.length>0){let n=(await Promise.all(y.map(f))).flat();n.sort((i,r)=>new Date(i.timestamp).getTime()-new Date(r.timestamp).getTime()),t(n.slice(-200));}if(v.length>0){let n=(await Promise.all(v.map(f))).flat();n.sort((i,r)=>new Date(i.timestamp).getTime()-new Date(r.timestamp).getTime()),t(n.slice(-200));}},J=async t=>e.teamService.create(t),K=async()=>e.teamService.list(),q=async(t,s)=>e.teamService.join(t,s),z=async(t,s)=>e.teamService.leave(t,s),Q=async t=>{await e.teamService.disband(t);},X=async(t,s)=>e.teamService.setLead(t,s),Y=async()=>e.goalService.list(),Z=async t=>e.goalService.create(t),$=async(t,s)=>e.goalService.update(t,s),tt=async(t,s,a)=>e.goalService.updateStatus(t,s,a),et=async t=>{await e.goalService.delete(t);},st=async t=>e.goalService.getProgressReport(t),at=async()=>{await e.orchestrator.startWatch();},nt=async()=>{await e.orchestrator.stop();},c=d.version()??"0.0.0",rt=import('./update-check-R5ABF6HE.js').then(t=>t.checkForUpdateSWR(c)).catch(()=>null),l=false,p,g=false,o;try{await e.orchestrator.startWatch(),l=!0;}catch(t){p=t instanceof Error?t.message:String(t);let{DiskObserver:s}=await import('./disk-observer-B3NOZ2QA.js');o=new s({paths:e.paths,stateStore:e.stateStore}),g=true,m=a=>o.subscribe(a);}let{waitUntilExit:it}=k(T(b,{projectName:e.config.project.name,tasks:S,agents:w,state:h,onRunTask:A,onCreateTask:R,onCancelTask:C,onRetryTask:_,onAssignTask:E,onRunAll:j,onDisableAgent:D,onEnableAgent:U,onSubscribeEvents:m,onRefreshTasks:P,onRefreshAgents:G,onRefreshState:x,onLoadHistory:V,onAddAgent:I,onDeleteAgent:L,onApproveTask:H,onRejectTask:O,onDeleteTask:F,onUpdateTask:W,onUpdateAgent:N,onForceStopAgent:B,onToggleAutonomous:M,onRefreshGoals:Y,onCreateGoal:Z,onUpdateGoal:$,onUpdateGoalStatus:tt,onDeleteGoal:et,onGetGoalProgress:st,onCreateTeam:J,onListTeams:K,onJoinTeam:q,onLeaveTeam:z,onDisbandTeam:Q,onSetTeamLead:X,onStartWatch:at,onStopWatch:nt,initialWatchActive:l,observerMode:g,watchError:g?void 0:p,version:c,latestVersion:void 0,onCheckUpdate:async()=>{let t=await rt;if(t?.updateAvailable)return t.latest;let a=await(await import('./update-check-R5ABF6HE.js')).checkForUpdateNow(c);return a?.updateAvailable?a.latest:void 0},onBackgroundInstall:async t=>(await import('./update-check-R5ABF6HE.js')).backgroundInstall(t),initialActivityFilter:e.globalConfig.tui.activity_filter,onSaveActivityFilter:async t=>{await e.globalConfigStore.set("activity_filter",t);},initialNotifications:e.globalConfig.tui.notifications,onSaveNotifications:async t=>{await e.globalConfigStore.set("notifications",t);},initialMaxConcurrent:e.config.scheduling.max_concurrent_agents,onSaveMaxConcurrent:async t=>{await e.configStore.set("scheduling.max_concurrent_agents",t),e.config.scheduling.max_concurrent_agents=t;},onCompleteOnboarding:async()=>{let t=await e.stateStore.read();t.onboardingCompleted=true,await e.stateStore.write(t);},defaultAdapter:e.config.defaults.agent.adapter}),{incrementalRendering:true,kittyKeyboard:{mode:"auto",flags:["disambiguateEscapeCodes"]}});await it(),l&&await e.orchestrator.stop().catch(()=>{}),o&&o.stop(),e.eventBus.clear();});}export{ct as registerTuiCommand};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxgeneral/orch",
3
- "version": "1.0.24",
3
+ "version": "1.0.25",
4
4
  "description": "AI agent runtime — orchestrate Claude, Cursor, Codex & OpenCode as one team. Multi-agent task automation with state machine, auto-retry, inter-agent messaging, goals and teams. Zero-config CLI + programmatic API.",
5
5
  "type": "module",
6
6
  "engines": {