@oxgeneral/orch 1.0.17 → 1.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/App-Q7J4JGDF.js +22 -0
  2. package/dist/agent-WLKP6WOR.js +9 -0
  3. package/dist/agent-factory-HJOS7FW3.js +2 -0
  4. package/dist/{agent-shop-JHDTCWCD.js → agent-shop-XWVUC3MK.js} +1 -1
  5. package/dist/{chunk-HWEMBO36.js → chunk-3YGXRXS7.js} +3 -3
  6. package/dist/{chunk-3AXNSYCM.js → chunk-6E6DC7OE.js} +1 -1
  7. package/dist/{chunk-J7ITYXE6.js → chunk-6JQDY3PP.js} +3 -3
  8. package/dist/{chunk-J7ITYXE6.js.map → chunk-6JQDY3PP.js.map} +1 -1
  9. package/dist/chunk-C7C7Q7XO.js +4 -0
  10. package/dist/{chunk-JM2WRI46.js → chunk-DEHFYICU.js} +1 -1
  11. package/dist/chunk-EWRVHOUA.js +2 -0
  12. package/dist/{chunk-NLQAJ7TW.js → chunk-IESAV453.js} +14 -4
  13. package/dist/chunk-IESAV453.js.map +1 -0
  14. package/dist/chunk-ITMAWW3J.js +3 -0
  15. package/dist/chunk-LRYVT4D4.js +2 -0
  16. package/dist/{chunk-TWEMIPRN.js → chunk-RFN447MA.js} +3 -3
  17. package/dist/{chunk-TWEMIPRN.js.map → chunk-RFN447MA.js.map} +1 -1
  18. package/dist/{chunk-XJ6KTO3E.js → chunk-WM64PSY4.js} +12 -6
  19. package/dist/chunk-WM64PSY4.js.map +1 -0
  20. package/dist/chunk-XMKCAUEH.js +2 -0
  21. package/dist/{claude-EMBYYPW4.js → claude-KZMCTMDP.js} +4 -4
  22. package/dist/{claude-EMBYYPW4.js.map → claude-KZMCTMDP.js.map} +1 -1
  23. package/dist/claude-PH7LT3OH.js +2 -0
  24. package/dist/cli.js +1 -1
  25. package/dist/{clipboard-service-WVON5ZN4.js → clipboard-service-AJTJG2DJ.js} +1 -1
  26. package/dist/{codex-WQ3LU3MM.js → codex-UR7Q22OV.js} +4 -4
  27. package/dist/{codex-WQ3LU3MM.js.map → codex-UR7Q22OV.js.map} +1 -1
  28. package/dist/codex-URQN4JLZ.js +2 -0
  29. package/dist/container-4VRJ7G6U.js +4 -0
  30. package/dist/{cursor-M3EJ432K.js → cursor-EMX3ECDY.js} +1 -1
  31. package/dist/{cursor-TKV5FFCN.js → cursor-O6M6XOMT.js} +4 -4
  32. package/dist/{cursor-TKV5FFCN.js.map → cursor-O6M6XOMT.js.map} +1 -1
  33. package/dist/{doctor-SKIWAKHW.js → doctor-5HTCX6K7.js} +1 -1
  34. package/dist/goal-KQ4XOSRH.js +8 -0
  35. package/dist/index.d.ts +87 -2
  36. package/dist/index.js +588 -14
  37. package/dist/index.js.map +1 -1
  38. package/dist/init-GVM7EYPO.js +74 -0
  39. package/dist/{logs-CU3NC24O.js → logs-EUOQ2UZL.js} +1 -1
  40. package/dist/{opencode-YWT3M4NX.js → opencode-HOX5TCMD.js} +4 -4
  41. package/dist/{opencode-YWT3M4NX.js.map → opencode-HOX5TCMD.js.map} +1 -1
  42. package/dist/opencode-K22RCQ5C.js +2 -0
  43. package/dist/orchestrator-53KIAROT.js +6 -0
  44. package/dist/{orchestrator-FWROY4JD.js.map → orchestrator-53KIAROT.js.map} +1 -1
  45. package/dist/orchestrator-Z6C5OE4A.js +17 -0
  46. package/dist/org-WCEBMHLR.js +3 -0
  47. package/dist/{shell-PMLIRG3N.js → shell-C2J4AIAV.js} +4 -4
  48. package/dist/{shell-PMLIRG3N.js.map → shell-C2J4AIAV.js.map} +1 -1
  49. package/dist/shell-NPNTWDMU.js +2 -0
  50. package/dist/shop-picker-2HA2CDKS.js +5 -0
  51. package/dist/{task-2LI5CMI4.js → task-IVKKK22G.js} +1 -1
  52. package/dist/tui-IWCCSBDD.js +2 -0
  53. package/dist/{workspace-manager-KUU7UMMC.js → workspace-manager-QH27FF55.js} +4 -4
  54. package/dist/{workspace-manager-KUU7UMMC.js.map → workspace-manager-QH27FF55.js.map} +1 -1
  55. package/dist/{workspace-manager-DG4IFFG3.js → workspace-manager-ZI5SVXJU.js} +2 -2
  56. package/package.json +1 -1
  57. package/dist/App-2CW2WICK.js +0 -22
  58. package/dist/agent-TU6OC7ZT.js +0 -9
  59. package/dist/chunk-FQ5YUP4J.js +0 -4
  60. package/dist/chunk-IKNBPOQL.js +0 -2
  61. package/dist/chunk-LOJ26OVK.js +0 -3
  62. package/dist/chunk-NLQAJ7TW.js.map +0 -1
  63. package/dist/chunk-XJ6KTO3E.js.map +0 -1
  64. package/dist/claude-GIGROCH5.js +0 -2
  65. package/dist/codex-AZD52UPS.js +0 -2
  66. package/dist/container-RFWMXKD6.js +0 -4
  67. package/dist/goal-RNNZYMNR.js +0 -8
  68. package/dist/init-6OVZBN6B.js +0 -73
  69. package/dist/opencode-4G7VAZGY.js +0 -2
  70. package/dist/orchestrator-FWROY4JD.js +0 -6
  71. package/dist/orchestrator-YZHLOVJO.js +0 -17
  72. package/dist/org-KLYK6MMJ.js +0 -3
  73. package/dist/shell-JC2WDWBR.js +0 -2
  74. package/dist/shop-picker-LE3SKFOX.js +0 -5
  75. package/dist/tui-24NBO5U6.js +0 -2
  76. package/scripts/demo.sh +0 -202
  77. /package/dist/{serve-JOIPYKKG.js → serve-DE7ES7Q5.js} +0 -0
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env node
2
+ import {b,a as a$2}from'./chunk-3YGXRXS7.js';import {a as a$4}from'./chunk-EWRVHOUA.js';import {a as a$3}from'./chunk-XMKCAUEH.js';import {a}from'./chunk-N4OXN2HW.js';import {c,a as a$1}from'./chunk-HXOMNULD.js';import {f,h,g}from'./chunk-64WUDYEM.js';import {n}from'./chunk-LRYVT4D4.js';import io,{useState,useMemo,useEffect,useRef,useCallback}from'react';import {Box,Text,useInput,useApp,useStdout}from'ink';import {jsxs,jsx,Fragment}from'react/jsx-runtime';var e={amber:"#ffaf00",amberDim:"#af8700",green:"#5faf87",red:"#d75f5f",blue:"#5fafd7",yellow:"#d7af00",cyan:"#5fd7d7",purple:"#af87ff",white:"#eeeeee",silver:"#bcbcbc",gray:"#808080",dim:"#585858",ghost:"#3a3a3a",void:"#262626",errorBg:"#3d1515",warnBg:"#3d2e0a",successBg:"#0f2d1f",infoBg:"#1a1a22",toolBg:"#0f1f2d"},Ro="\u2501",Ve="\u2500",ge="\xB7",Qt="\u25C8",vr="\u2605",pn="\u27F3",Ht="\u25C6",Ao={in_progress:e.green,retrying:e.yellow,review:e.blue,todo:e.dim,done:e.green,failed:e.red,cancelled:e.dim},As=new Map,$s=new Map;function He(t){if(t<=0)return "";let n=As.get(t);return n||(n=Ro.repeat(t),As.set(t,n)),n}function be(t){if(t<=0)return "";let n=$s.get(t);return n||(n=Ve.repeat(t),$s.set(t,n)),n}function rt(t,n){return t.length>n?t.slice(0,n-1)+"\u2026":t}var el=1e4;function _r(t,n=el){if(t)return t.length>n?t.slice(0,n)+`
3
+ \u2026[truncated]`:t}var Bs={active:e.green,paused:e.dim,achieved:e.amber,abandoned:e.ghost};var ol=120,$o=0,no=null,Bo=new Set;function rl(){no||(no=setInterval(()=>{$o++;for(let t of Bo)t($o);},ol));}function sl(){no&&Bo.size===0&&(clearInterval(no),no=null);}function Bn(t=true){let[n,o]=useState($o);return useEffect(()=>{if(!t)return;o($o);let r=l=>o(l);return Bo.add(r),rl(),()=>{Bo.delete(r),sl();}},[t]),n}var Es=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function jt({color:t}){let n=Bn();return jsx(Text,{color:t,children:Es[n%Es.length]})}var oo={in_progress:0,retrying:1,review:2,todo:3,done:4,failed:5,cancelled:6};var cl="\u25CB",Ls="\u2713",Ps="\u2715",dl="\u21BB",ul="\u2500",gl="\u25B6",Pt={green:"#0f2d1f",blue:"#0f1f2d",yellow:"#2d2a0f",red:"#2d0f0f",neutral:"#1a1a22",amber:"#2d1f0a"},ml={in_progress:{icon:gl,label:"RUN",fg:e.green,bg:Pt.green,bold:true,spinner:true},retrying:{icon:dl,label:"RETRY",fg:e.yellow,bg:Pt.yellow,spinner:true},review:{icon:Qt,label:"REVIEW",fg:e.blue,bg:Pt.blue},todo:{icon:cl,label:"TODO",fg:e.dim,bg:Pt.neutral},done:{icon:Ls,label:"DONE",fg:e.green,bg:Pt.green},failed:{icon:Ps,label:"FAIL",fg:e.red,bg:Pt.red,bold:true},cancelled:{icon:ul,label:"OFF",fg:e.dim,bg:Pt.neutral}},fl={1:{color:e.red,label:"!!!"},2:{color:e.yellow,label:"!!"},3:{color:e.dim,label:"!"},4:{color:e.ghost,label:ge}};var hl=18,xl="#2d1f0a",Eo=io.memo(function({task:n,selected:o,width:r,agentNameMap:l,goalMap:f$1}){let x=ml[n.status],T=n.status==="in_progress"||n.status==="retrying",b=fl[n.priority]??{color:e.ghost,label:ge},y,C;if(n.status==="done")y=Ls,C=e.green;else if(n.status==="failed")y=Ps,C=e.red;else if(T){let E=Date.now()-new Date(n.updated_at).getTime();y=f(E),C=e.cyan;}else y="\u2014",C=void 0;let I=o?"\u25B8":" ",$=n.goalId?f$1?.get(n.goalId):void 0,S=!!$,H=10,V=4,F=14,P=S?hl:0,j=7,O=2+H+V+F+P+j,L=r?Math.max(10,r-O):40,N=n.assignee?l?.get(n.assignee)??n.assignee:void 0;return jsxs(Box,{children:[jsxs(Text,{color:o?e.amber:void 0,children:[I," "]}),jsx(Box,{width:H,children:jsx(Text,{backgroundColor:x.bg,color:x.fg,bold:x.bold,children:x.spinner?jsxs(Fragment,{children:[" ",jsx(jt,{color:x.fg})," ",x.label," "]}):jsxs(Fragment,{children:[" ",x.icon," ",x.label," "]})})}),jsx(Box,{width:V,children:jsx(Text,{color:b.color,bold:n.priority<=2,children:b.label})}),jsxs(Box,{width:L,children:[jsx(Text,{wrap:"truncate",bold:o||T,color:o?e.white:T?e.silver:void 0,children:n.title.length>L?n.title.slice(0,L-1)+"\u2026":n.title}),(n.attachments?.length??0)>0&&jsxs(Text,{color:e.dim,children:[" ","\u{1F4CE}",n.attachments.length]})]}),S&&jsx(Box,{width:P,children:jsxs(Text,{backgroundColor:xl,color:e.amberDim,wrap:"truncate",children:[" \u2295 ",rt($.title,13)," "]})}),jsx(Box,{width:F,children:N?jsxs(Text,{backgroundColor:Pt.green,color:e.green,wrap:"truncate",children:[" ",N.length>F-2?N.slice(0,F-3)+"\u2026":N," "]}):jsx(Text,{color:e.ghost,children:"\u2014"})}),jsx(Box,{width:j,justifyContent:"flex-end",children:jsx(Text,{color:C,dimColor:!C,children:y})})]})});var Ns="\u2295";function Ds({goalTitle:t,taskCount:n,doneCount:o,width:r}){let l=n>0?Math.round(o/n*100):0,f=` ${Ns} ${t.toUpperCase()} ${ge} ${n} task${n!==1?"s":""} ${ge} ${l}% done `,x=3,T=Math.max(0,r-x-f.length-4);return jsxs(Box,{paddingX:2,children:[jsx(Text,{color:e.ghost,children:be(x)}),jsx(Text,{backgroundColor:Pt.amber,color:e.amber,bold:true,children:f}),jsx(Text,{color:e.ghost,children:be(T)})]})}function Fs({taskCount:t,width:n}){let o=` ${Ns} UNGROUPED ${ge} ${t} task${t!==1?"s":""} `,r=3,l=Math.max(0,n-r-o.length-4);return jsxs(Box,{paddingX:2,children:[jsx(Text,{color:e.ghost,children:be(r)}),jsx(Text,{backgroundColor:Pt.neutral,color:e.dim,children:o}),jsx(Text,{color:e.ghost,children:be(l)})]})}var Tl="\u2715",Gs="\u25CB",yl="\u25B6",wl="\u2713",En={green:"#0f2d1f",red:"#2d0f0f",neutral:"#1a1a22",amber:"#2d1f0a"},Sl={running:{icon:yl,label:"ACTIVE",fg:e.green,bg:En.green,bold:true,spinner:true},idle:{icon:Gs,label:"IDLE",fg:e.dim,bg:En.neutral},error:{icon:Tl,label:"ERROR",fg:e.red,bg:En.red,bold:true},disabled:{icon:Gs,label:"OFF",fg:e.ghost,bg:En.neutral}},Rr={running:0,idle:1,error:2,disabled:3},zs=io.memo(function({agent:n$1,selected:o,width:r,runningEntry:l,currentTaskTitle:f$1,teamName:x,isLead:T}){let b=Sl[n$1.status],y=n$1.status==="running",C,I;if(y&&l){let N=Date.now()-new Date(l.started_at).getTime();C=f(N),I=e.cyan;}else n$1.stats.total_runs>0?(C=`${n$1.stats.tasks_completed}/${n$1.stats.total_runs}`,I=n$1.stats.tasks_completed>0?e.green:e.dim):(C="\u2014",I=void 0);let $=o?"\u25B8":" ",S=11,H=8,V=x?Math.min(x.length+2,12):0,F=10,P=2+S+H+V+F,j=r?Math.max(8,r-P):20,O=n$1.stats.total_runs>0,L=O?Math.round(n$1.stats.tasks_completed/n$1.stats.total_runs*100):0;return jsxs(Box,{children:[jsxs(Text,{color:o?e.amber:void 0,children:[$," "]}),jsx(Box,{width:S,children:jsx(Text,{backgroundColor:b.bg,color:b.fg,bold:b.bold,children:b.spinner?jsxs(Fragment,{children:[" ",jsx(jt,{color:b.fg})," ",b.label," "]}):jsxs(Fragment,{children:[" ",b.icon," ",b.label," "]})})}),jsx(Box,{width:j,children:jsxs(Text,{wrap:"truncate",bold:o||y,color:o?e.white:y?e.green:e.silver,children:[n$1.autonomous&&jsxs(Text,{color:e.cyan,children:[pn," "]}),T&&jsxs(Text,{color:e.amber,children:[vr," "]}),n$1.name,y&&f$1&&jsxs(Text,{color:e.dim,children:[" ",ge," ",f$1]}),n$1.status==="error"&&n$1.last_error&&jsxs(Text,{color:e.red,children:[" ",ge," ",rt(n[n$1.last_error.kind]?.message??n$1.last_error.message,30)]})]})}),jsx(Box,{width:H,children:jsx(Text,{color:e.dim,children:n$1.adapter})}),x&&jsx(Box,{width:V,children:jsx(Text,{color:e.amber,wrap:"truncate",children:x})}),jsx(Box,{width:F,justifyContent:"flex-end",children:O&&!y?jsxs(Text,{color:L>=80?e.green:L>=50?e.yellow:e.red,children:[C," ",wl]}):jsx(Text,{color:I,dimColor:!I,children:C})})]})});function Vs({teamName:t,memberCount:n,leadName:o,width:r}){let l=`${n} agent${n!==1?"s":""}`,f=o?` ${ge} ${vr} ${o}`:"",x=` ${Qt} ${t.toUpperCase()} ${ge} ${l}${f} `,T=3,b=Math.max(0,r-T-x.length-4);return jsxs(Box,{paddingX:2,children:[jsx(Text,{color:e.ghost,children:be(T)}),jsx(Text,{backgroundColor:En.amber,color:e.amber,bold:true,children:x}),jsx(Text,{color:e.ghost,children:be(b)})]})}var kl="\u25C7";function Hs({memberCount:t,width:n}){let o=`${t} agent${t!==1?"s":""}`,r=` ${kl} UNASSIGNED ${ge} ${o} `,l=3,f=Math.max(0,n-l-r.length-4);return jsxs(Box,{paddingX:2,children:[jsx(Text,{color:e.ghost,children:be(l)}),jsx(Text,{backgroundColor:En.neutral,color:e.dim,children:r}),jsx(Text,{color:e.ghost,children:be(f)})]})}var js="\u2713",Us="\u2715",Il="\u2016",Ml="\u25C9",so={green:"#0f2d1f",amber:"#2d1f0a",neutral:"#1a1a22"},vl={active:{icon:Ml,label:"ACTIVE",fg:e.green,bg:so.green,bold:true},paused:{icon:Il,label:"PAUSED",fg:e.dim,bg:so.neutral},achieved:{icon:js,label:"DONE",fg:e.amber,bg:so.amber,bold:true},abandoned:{icon:Us,label:"DROP",fg:e.ghost,bg:so.neutral}},_l="\u2588",Rl="\u2591",Al=14,Xs=io.memo(function({goal:n,selected:o,width:r,agentNameMap:l,tasksByGoal:f}){let x=vl[n.status],T=o?"\u25B8":" ",b=f?.length??0,y=f?.filter(L=>L.status==="done").length??0,C=b>0,I=11,$=C?Al:0,S=14,H=7,V=2+I+$+S+H,F=r?Math.max(10,r-V):40,P=n.assignee?l?.get(n.assignee)??n.assignee:void 0,j,O;if(n.status==="achieved")j=js,O=e.amber;else if(n.status==="abandoned")j=Us,O=e.ghost;else {let L=Date.now()-new Date(n.created_at).getTime(),N=Math.floor(L/864e5);j=N>0?`${N}d`:"<1d",O=e.dim;}return jsxs(Box,{children:[jsxs(Text,{color:o?e.amber:void 0,children:[T," "]}),jsx(Box,{width:I,children:jsxs(Text,{backgroundColor:x.bg,color:x.fg,bold:x.bold,children:[" ",x.icon," ",x.label," "]})}),jsx(Box,{width:F,children:jsx(Text,{wrap:"truncate",bold:o||n.status==="active",color:o?e.white:n.status==="active"?e.silver:void 0,children:n.title.length>F?n.title.slice(0,F-1)+"\u2026":n.title})}),C&&(()=>{let N=b>0?Math.round(y/b*6):0,E=6-N;return jsxs(Box,{width:$,children:[jsx(Text,{color:e.green,children:_l.repeat(N)}),jsx(Text,{color:e.ghost,children:Rl.repeat(E)}),jsx(Text,{color:e.dim,children:` ${y}/${b}`})]})})(),jsx(Box,{width:S,children:P?jsxs(Text,{backgroundColor:so.green,color:e.green,wrap:"truncate",children:[" ",P.length>S-2?P.slice(0,S-3)+"\u2026":P," "]}):jsx(Text,{color:e.ghost,children:"\u2014"})}),jsx(Box,{width:H,justifyContent:"flex-end",children:jsx(Text,{color:O,dimColor:!O,children:j})})]})});var $l={system:"\u2666",lifecycle:"\u25B6",output:"\u2502",tool:"\u2699",result:"\u2190",error:"\u2715",file:"\u270E",info:"\u2502"};function Pn({label:t,width:n,color:o}){let r=n-4,l=` ${t} `,f=3,x=Math.max(0,r-f-l.length);return jsxs(Text,{color:o??e.ghost,children:[" ",be(f),l,be(x)]})}function qs({task:t,height:n,width:o,taskLogs:r,agentNameMap:l,taskTitleMap:f}){let x=Ao[t.status]??e.dim,T=t.priority<=2?t.priority===1?e.red:e.yellow:void 0,b=24,y=!!t.description?.trim(),C=!!t.proof?.agent_summary,I=(t.proof?.files_changed?.length??0)>0,$=(r?.length??0)>0,S=(t.attachments?.length??0)>0,H=y?t.description.split(`
4
+ `):[],V=C?t.proof.agent_summary.split(`
5
+ `):[],F=3;S&&(F+=2+t.attachments.length),y?(F+=1,F+=Math.min(H.length,Math.max(1,Math.ceil((n-10)*.3)))):C||(F+=2),C&&(F+=2),I&&(F+=1),$&&(F+=2);let P=Math.max(0,n-F),j=0,O=0;C&&$?(j=Math.max(1,Math.floor(P*.4)),O=Math.max(1,P-j)):C?j=P:$&&(O=P);let L=y?H.slice(0,Math.max(1,Math.ceil((n-10)*.3))):[],N=V.slice(0,j);return jsxs(Box,{flexDirection:"column",paddingX:2,children:[jsxs(Box,{children:[jsxs(Box,{width:b,children:[jsx(Text,{color:e.dim,children:" status "}),jsx(Text,{color:x,children:t.status})]}),jsxs(Box,{children:[jsx(Text,{color:e.dim,children:" assignee "}),jsx(Text,{color:t.assignee?e.green:e.dim,children:t.assignee?l?.get(t.assignee)??t.assignee:"\u2014"})]})]}),jsxs(Box,{children:[jsxs(Box,{width:b,children:[jsx(Text,{color:e.dim,children:" priority "}),jsxs(Text,{color:T,bold:t.priority<=2,children:["P",t.priority]})]}),jsxs(Box,{children:[jsx(Text,{color:e.dim,children:" attempts "}),jsxs(Text,{children:[t.attempts,"/",t.max_attempts]})]})]}),jsxs(Box,{children:[jsxs(Box,{width:b,children:[jsx(Text,{color:e.dim,children:" labels "}),jsx(Text,{color:e.purple,children:t.labels.length>0?t.labels.join(", "):"\u2014"})]}),jsxs(Box,{children:[jsx(Text,{color:e.dim,children:" depends "}),jsx(Text,{dimColor:true,children:t.depends_on.length>0?t.depends_on.map(E=>f?.get(E)??E).join(", "):"\u2014"})]})]}),S&&jsxs(Fragment,{children:[jsx(Text,{children:" "}),jsx(Pn,{label:`attachments (${t.attachments.length})`,width:o,color:e.dim}),t.attachments.map((E,W)=>jsxs(Text,{color:e.cyan,wrap:"truncate",children:[" ",E]},`a${W}`))]}),y&&jsxs(Fragment,{children:[jsx(Text,{children:" "}),L.map((E,W)=>jsxs(Text,{color:e.silver,wrap:"truncate",children:[" ",rt(E,o-8)]},`d${W}`))]}),!y&&!C&&jsxs(Fragment,{children:[jsx(Text,{children:" "}),jsx(Text,{color:e.dim,children:" No description."})]}),C&&jsxs(Fragment,{children:[jsx(Text,{children:" "}),jsx(Pn,{label:"result",width:o,color:e.dim}),N.map((E,W)=>jsxs(Text,{color:e.white,wrap:"truncate",children:[" ",rt(E,o-8)]},`r${W}`))]}),I&&jsxs(Box,{children:[jsx(Text,{color:e.dim,children:" files "}),jsx(Text,{color:e.cyan,children:t.proof.files_changed.length}),jsx(Text,{color:e.dim,children:" changed"}),t.proof.branch&&jsxs(Fragment,{children:[jsxs(Text,{color:e.dim,children:[" ","\xB7"," "]}),jsx(Text,{color:e.cyan,children:t.proof.branch})]})]}),$&&jsxs(Fragment,{children:[jsx(Text,{children:" "}),jsx(Pn,{label:"activity",width:o,color:e.dim}),r.slice(-O).map((E,W)=>{let z=E.msgType??"info",X=$l[z]??"\u2502",_=E.color;z==="tool"?_=e.cyan:z==="file"?_=e.purple:z==="error"?_=e.red:z==="lifecycle"?_=e.green:z==="system"&&(_=e.dim);let le=Math.max(10,o-12),Ee=rt(E.text,le);return jsxs(Box,{children:[jsxs(Text,{color:e.ghost,children:[" ",E.time," "]}),jsxs(Text,{color:z==="error"?e.red:e.dim,children:[X," "]}),jsx(Text,{color:_,bold:z==="lifecycle",children:Ee})]},W)})]})]})}var Oo=[{key:"G",id:"goals",label:"GOALS"},{key:"T",id:"tasks",label:"TASKS"},{key:"A",id:"agents",label:"AGENTS"},{key:"L",id:"logs",label:"ACTIONS"}];var Ks="\u25CF",Ys="\u25CB",Bl="\u2713",El="\u2715",Ol="\u2191",Ll="\u2193",Pl="\u03A3",Nl="\u25B6",Dl="\u21BB",Fl="\u{1F9E0}",Ar=[" ","\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587","\u2588"],Qe={green:"#0f2d1f",blue:"#0f1f2d",yellow:"#2d2a0f",red:"#2d0f0f",neutral:"#1a1a22",amber:"#2d1f0a"};function Gl({active:t}){let n=Bn(t),o=!t||Math.floor(n/10)%2===0;return jsx(Text,{color:o?e.amber:e.amberDim,bold:true,children:Ht})}function Wl({width:t,active:n}){let o=Math.max(4,Math.floor(t*.08)),r=2,l=Bn(n),f=Math.ceil((t+o)/r),x=n?l%(f*2):0;if(!n)return jsx(Box,{paddingX:1,children:jsx(Text,{color:e.ghost,children:He(t)})});let T=x<f?x*r:(f*2-x)*r,b=Math.max(0,T-o),y=Math.min(t,T),C=b,I=Math.max(0,y-b),$=Math.max(0,t-y);return jsxs(Box,{paddingX:1,children:[jsx(Text,{color:e.ghost,children:He(C)}),jsx(Text,{color:e.amber,children:He(I)}),jsx(Text,{color:e.ghost,children:He($)})]})}function zl({data:t,width:n,color:o}){if(t.length===0)return null;let r=t.slice(-n),l=Math.max(...r,1),f=r.map(x=>{let T=Math.round(x/l*(Ar.length-1));return Ar[T]??Ar[0]}).join("");return jsx(Text,{color:o,children:f})}function Vl({tab:t,flashColor:n,onComplete:o,badge:r}){let l=Bn(),f=io.useRef(l),x=io.useRef(false),T=l-f.current,b=2,y=6*b;return io.useEffect(()=>{T>=y&&!x.current&&(x.current=true,o());},[T,o]),Math.floor(T/b)%2===0&&T<y?jsxs(Text,{backgroundColor:n,color:"#0a0a0c",bold:true,children:[" ",t.key," ",t.label,r," "]}):jsxs(Box,{gap:0,children:[jsx(Text,{color:e.ghost,children:t.key}),jsxs(Text,{color:e.dim,children:[" ",t.label.toLowerCase(),r]})]})}function Hl({projectName:t,activeView:n,mode:o,stats:r,uptime:l,width:f,version:x,latestVersion:T,updateInstalled:b,taskBadge:y,flashTab:C,flashColor:I,onFlashComplete:$}){return jsxs(Box,{paddingX:1,justifyContent:"space-between",width:f,children:[jsxs(Box,{gap:0,children:[jsx(Gl,{active:r.running>0}),jsx(Text,{color:e.amber,bold:true,children:" ORCH"}),x&&jsxs(Text,{color:e.ghost,children:[" ",x]}),T&&T!==x&&(b?jsxs(Text,{backgroundColor:Qe.green,color:e.green,bold:true,children:[" v",T," INSTALLED \u2014 RESTART TO APPLY "]}):jsxs(Text,{backgroundColor:Qe.green,color:e.green,bold:true,children:[" UPDATE ",T," "]})),jsxs(Text,{color:e.ghost,children:[" ",ge," "]}),jsx(Text,{color:e.silver,children:t})]}),jsx(Box,{gap:0,children:Oo.map((S,H)=>{let V=n===S.id,F=S.id==="tasks"&&y!=null&&y>0?` (${y})`:"",P=!V&&C===S.id&&I&&$;return jsxs(io.Fragment,{children:[H>0&&jsx(Text,{children:" "}),V?jsxs(Text,{backgroundColor:e.amber,color:"#0a0a0c",bold:true,children:[" ",S.key," ",S.label,F," "]}):P?jsx(Vl,{tab:S,flashColor:I,onComplete:$,badge:F}):jsxs(Box,{gap:0,children:[jsx(Text,{color:e.ghost,children:S.key}),jsxs(Text,{color:e.dim,children:[" ",S.label.toLowerCase(),F]})]})]},S.id)})}),jsxs(Box,{gap:0,children:[o==="watching"?jsxs(Text,{backgroundColor:Qe.green,color:e.green,bold:true,children:[" ",Ks," WATCHING"," "]}):o==="observing"?jsxs(Text,{backgroundColor:Qe.amber,color:e.amber,bold:true,children:[" ",Ks," OBSERVING"," "]}):jsxs(Text,{backgroundColor:Qe.neutral,color:e.dim,children:[" ",Ys," IDLE"," "]}),r.running>0&&jsxs(Fragment,{children:[jsx(Text,{children:" "}),jsxs(Text,{backgroundColor:Qe.green,color:e.green,children:[" ",jsx(jt,{color:e.green})," ",r.running," active"," "]})]}),l&&jsxs(Text,{color:e.ghost,children:[" ",l]})]})]})}function jl({stats:t,tokens:n,width:o,sparklineData:r}){let f=[{icon:Nl,label:"RUN",count:t.running,fg:e.green,bg:Qe.green,bold:true,spinner:true,show:t.running>0},{icon:Dl,label:"RETRY",count:t.retrying,fg:e.yellow,bg:Qe.yellow,show:t.retrying>0},{icon:Qt,label:"REVIEW",count:t.review,fg:e.blue,bg:Qe.blue,show:t.review>0},{icon:Ys,label:"TODO",count:t.todo,fg:e.dim,bg:Qe.neutral,show:t.todo>0},{icon:Bl,label:"DONE",count:t.done,fg:e.green,bg:Qe.green,show:t.done>0},{icon:El,label:"FAIL",count:t.failed,fg:e.red,bg:Qe.red,bold:true,show:t.failed>0},{icon:Ht,label:"TEAMS",count:t.teams,fg:e.amber,bg:Qe.amber,show:t.teams>0}].filter(b=>b.show),x=n.total>0,T=r&&r.length>0?Math.min(16,r.length):0;return jsxs(Box,{paddingX:1,justifyContent:"space-between",width:o,children:[jsxs(Box,{gap:1,children:[f.map(b=>jsx(Text,{backgroundColor:b.bg,color:b.fg,bold:b.bold,children:b.spinner?jsxs(Fragment,{children:[" ",jsx(jt,{color:b.fg})," ",b.count," ",b.label," "]}):jsxs(Fragment,{children:[" ",b.icon," ",b.count," ",b.label," "]})},b.label)),f.length===0&&jsxs(Text,{backgroundColor:Qe.neutral,color:e.dim,children:[" ","NO TASKS"," "]})]}),jsxs(Box,{gap:0,children:[T>0&&r&&jsxs(Fragment,{children:[jsx(zl,{data:r,width:T,color:e.amberDim}),jsx(Text,{children:" "})]}),x&&jsxs(Text,{backgroundColor:Qe.amber,color:e.cyan,children:[" ",Ol,h(n.input)," ",Ll,h(n.output),n.reasoning>0?` ${Fl}${h(n.reasoning)}`:""," ",ge," ",Pl,h(n.total)," "]})]})]})}var Zs=io.memo(function(n){let o=Math.max(10,n.width-2),r=n.stats.running>0;return jsxs(Box,{flexDirection:"column",children:[jsx(Box,{height:1}),jsx(Hl,{projectName:n.projectName,activeView:n.activeView,mode:n.mode,stats:n.stats,uptime:n.uptime,width:n.width,version:n.version,latestVersion:n.latestVersion,updateInstalled:n.updateInstalled,taskBadge:n.taskBadge,flashTab:n.flashTab,flashColor:n.flashColor,onFlashComplete:n.onFlashComplete}),jsx(Box,{height:1}),jsx(jl,{stats:n.stats,tokens:n.tokens,width:n.width,sparklineData:n.sparklineData}),jsx(Wl,{width:o,active:r})]})});var ao="\u0423\u041F\u0420\u0410\u0412\u041B\u0415\u041D\u0418\u0415",Nn="\u041C\u041E\u041D\u0418\u0422\u041E\u0420\u0418\u041D\u0413",Po="\u041D\u0410\u0421\u0422\u0420\u041E\u0419\u041A\u0418",hn={task:{sub:["add","list","show","cancel","retry","assign","approve","reject","delete"],help:"Manage tasks",category:ao},agent:{sub:["add","list","disable","enable","delete","autonomous","shop"],help:"Manage agents",category:ao},team:{sub:["create","list","join","leave","disband","set-lead"],help:"Manage teams",category:ao},goal:{sub:["add","list","show","status","delete"],help:"Manage goals",category:ao},run:{args:"[id]",help:"Run task (or selected)",category:Nn},"run-all":{help:"Run all todo tasks",category:Nn},watch:{help:"Start watch mode (auto-dispatch)",category:Nn},pause:{help:"Pause watch mode",category:Nn},status:{help:"Show orchestrator status",category:Nn},config:{sub:["activity-filter","max-concurrent"],help:"TUI settings",category:Po},help:{help:"List all commands",category:Po},quit:{help:"Exit the TUI",category:Po}};function $r(t){if(!t.startsWith("/"))return null;let n=t.slice(1),o=n.indexOf(" ");if(o===-1){let T=n;if(!T)return null;let b=Object.keys(hn).find(y=>y.startsWith(T)&&y!==T);return b?b.slice(T.length):null}let r=n.slice(0,o),l=hn[r];if(!l?.sub)return null;let f=n.slice(o+1);if(!f)return null;let x=l.sub.find(T=>T.startsWith(f)&&T!==f);return x?x.slice(f.length):null}function Js(t){if(!t.startsWith("/"))return [];let n=t.slice(1),o=n.indexOf(" ");if(o===-1){let T=n.toLowerCase(),b=[];if(!T){let y=[ao,Nn,Po];for(let C of y){b.push({cmd:"",desc:`\u2500\u2500 ${C} \u2500\u2500`});for(let[I,$]of Object.entries(hn))if($.category===C){let S=$.args?` ${$.args}`:"";b.push({cmd:`/${I}${S}`,desc:$.help,subs:$.sub?.join(" \xB7 ")});}}return b}for(let[y,C]of Object.entries(hn))if(y.startsWith(T)){let I=C.args?` ${C.args}`:"";if(b.push({cmd:`/${y}${I}`,desc:C.help,subs:C.sub?.join(" \xB7 ")}),y===T&&C.sub)for(let $ of C.sub)b.push({cmd:`/${y} ${$}`,desc:`${C.help}: ${$}`});}return b}let r=n.slice(0,o),l=hn[r];if(!l?.sub)return [];let f=n.slice(o+1).toLowerCase(),x=[];for(let T of l.sub)(!f||T.startsWith(f))&&x.push({cmd:`/${r} ${T}`,desc:`${l.help}: ${T}`});return x}var No=class{entries=[];cursor=0;push(n){n&&(this.entries[this.entries.length-1]!==n&&(this.entries.push(n),this.entries.length>100&&this.entries.shift()),this.cursor=this.entries.length);}prev(){return this.entries.length===0?null:(this.cursor>0&&this.cursor--,this.entries[this.cursor]??null)}next(){return this.cursor<this.entries.length-1?(this.cursor++,this.entries[this.cursor]??null):(this.cursor=this.entries.length,null)}reset(){this.cursor=this.entries.length;}};var Xl="\u2588",Qs=io.memo(function({mode:n,value:o,completion:r,activeView:l,canRun:f,canNew:x,canApprove:T,canReject:b,canCancel:y,canDelete:C,canUndo:I,canEdit:$,canForceStop:S,canToggleAuto:H,autoActive:V,canPause:F,isPaused:P,canToggleShowAll:j,showAllActive:O,hasDetail:L,itemCount:N,itemLabel:E,width:W,hasSuggestions:z,onboardingCompleted:X}){if(n==="command"){let _=z?" \u2191\u2193 select Tab fill Esc \u2715":" Enter exec \u2191\u2193 history Tab complete Esc \u2715",le=Math.max(4,W-6-_.length-(r?.length??0)-1),Ee=o.length>le?"\u2026"+o.slice(-(le-1)):o;return jsx(Box,{paddingX:2,justifyContent:"space-between",width:W,children:jsxs(Box,{children:[jsx(Text,{color:e.amber,children:"/ "}),jsx(Text,{color:e.white,children:Ee}),r&&jsx(Text,{color:e.ghost,children:r}),jsx(Text,{color:e.amber,children:Xl}),jsx(Text,{color:e.dim,children:_})]})})}return jsxs(Box,{paddingX:2,justifyContent:"space-between",width:W,children:[jsxs(Text,{color:e.dim,children:[jsx(Text,{bold:true,color:e.gray,children:"\u2191\u2193"})," ",jsx(Text,{bold:true,color:e.gray,children:"Tab"}),"/",jsx(Text,{bold:true,color:e.gray,children:"\u2190\u2192"})," ",jsx(Text,{bold:true,color:e.gray,children:"/"})," cmd",x&&jsxs(Fragment,{children:[" ",jsx(Text,{bold:true,color:e.gray,children:"N"})," new"]}),f&&jsxs(Fragment,{children:[" ",jsx(Text,{bold:true,color:e.gray,children:"R"})," run"]}),y&&jsxs(Fragment,{children:[" ",jsx(Text,{bold:true,color:e.amber,children:"C"})," cancel"]}),T&&jsxs(Fragment,{children:[" ",jsx(Text,{bold:true,color:e.green,children:"A"})," approve"]}),b&&jsxs(Fragment,{children:[" ",jsx(Text,{bold:true,color:e.red,children:"X"})," reject"]}),$&&jsxs(Fragment,{children:[" ",jsx(Text,{bold:true,color:e.cyan,children:"E"})," edit"]}),S&&jsxs(Fragment,{children:[" ",jsx(Text,{bold:true,color:e.red,children:"S"})," stop"]}),F&&jsxs(Fragment,{children:[" ",jsx(Text,{bold:true,color:e.amber,children:"P"}),P?" resume":" pause"]}),H&&jsxs(Fragment,{children:[" ",jsx(Text,{bold:true,color:e.cyan,children:"U"}),V?" auto off":" auto on"]}),j&&jsxs(Fragment,{children:[" ",jsx(Text,{bold:true,color:e.gray,children:"S"}),O?" collapse":" show all"]}),C&&!T&&jsxs(Fragment,{children:[" ",jsx(Text,{bold:true,color:e.gray,children:"D"})," delete"]}),I&&jsxs(Fragment,{children:[" ",jsx(Text,{bold:true,color:e.yellow,children:"Z"})," undo"]}),L&&jsxs(Fragment,{children:[" ",jsx(Text,{bold:true,color:e.gray,children:"Esc"})," close"]}),!L&&(l==="tasks"||l==="agents"||l==="goals")&&jsxs(Fragment,{children:[" ",jsx(Text,{bold:true,color:e.gray,children:"Enter"})," detail"]})," ",jsx(Text,{bold:true,color:e.gray,children:"Q"})," quit"," ",jsx(Text,{bold:true,color:X===false?e.amber:e.gray,children:"?"}),jsx(Text,{color:X===false?e.amber:void 0,children:" help"})]}),N>0&&jsxs(Text,{color:e.dim,children:[N," ",E]})]})});var Do="\u2588",Er=process.platform==="darwin"?"\u2318":"Ctrl";function Yl(t,n){if(n<=0||t.length<=n)return [t];let o=[];for(let r=0;r<t.length;r+=n)o.push(t.slice(r,r+n));return o}function Fo(t,n){if(n<=0)return 0;let o=n-1;for(;o>0&&t[o-1]===" ";)o--;for(;o>0&&t[o-1]!==" ";)o--;return o}function ni(t,n){if(n>=t.length)return t.length;let o=n;for(;o<t.length&&t[o]!==" ";)o++;for(;o<t.length&&t[o]===" ";)o++;return o}function oi({title:t,steps:n,onComplete:o,onCancel:r,width:l,height:f,onPasteImage:x,footerExtra:T,onSuggestionSelected:b}){let [y,C]=useState(0),[I,$]=useState({}),[S,H]=useState(()=>{let R=n.find(M=>!M.skip?.({}));return R?.type==="text"&&R.defaultValue?R.defaultValue:""}),[V,F]=useState(()=>{let R=n.find(M=>!M.skip?.({}));return R?.type==="text"&&R.defaultValue?R.defaultValue.length:0}),[P,j]=useState(()=>{let R=n.find(M=>!M.skip?.({}));return R?.type==="textarea"&&R.defaultValue?R.defaultValue.split(`
6
+ `):[""]}),[O,L]=useState(0),[N,E]=useState(0),[W,z]=useState(()=>{let R=n.find(M=>!M.skip?.({}));if(R?.type==="select"&&R.defaultValue){let k=(R.getOptions?.({})??R.options??[]).findIndex(B=>B.value===R.defaultValue);return k>=0?k:0}return 0}),X=useMemo(()=>n.filter(R=>!R.skip?.(I)),[n,I]),_=X[y],le=X.length,{taLineNumWidth:Ft,taContentWidth:dt}=useMemo(()=>{let R=String(P.length).length;return {taLineNumWidth:R,taContentWidth:Math.max(1,l-R-4)}},[P.length,l]),Ae=useMemo(()=>{if(!_||_.type!=="textarea")return [];let R=[];for(let M=0;M<P.length;M++){let k=Yl(P[M]??"",dt);for(let B=0;B<k.length;B++)R.push({logicalRow:M,startCol:B*dt,text:k[B],isFirst:B===0});}return R},[_?.id,_?.type,P,dt]),Ke=useMemo(()=>{for(let R=0;R<Ae.length;R++){let M=Ae[R];if(M.logicalRow===O&&(N>=M.startCol&&N<M.startCol+dt||N>=M.startCol&&(R+1>=Ae.length||Ae[R+1].logicalRow!==O)))return R}return 0},[Ae,O,N,dt]),[ut,pt]=useState(new Set),[De,Ye]=useState(false),[gt,Ze]=useState(0),[rn,Ce]=useState(false),[ht,xt]=useState(null),[qt,mt]=useState(false),kt=useRef(null),Ue=useRef(null),uo=useMemo(()=>_?_.type==="text"?S:_.type==="textarea"?P.join(`
7
+ `):"":"",[_,S,P]),Gn=useCallback((R,M)=>{if(kt.current&&clearTimeout(kt.current),!M){xt(null);return}kt.current=setTimeout(()=>{xt(M(R));},300);},[]);useEffect(()=>(_&&_.validate&&(_.type==="text"||_.type==="textarea")&&Gn(uo,_.validate),()=>{kt.current&&clearTimeout(kt.current);}),[uo,_,Gn]),useEffect(()=>()=>{Ue.current&&clearTimeout(Ue.current);},[]);let Rt=useMemo(()=>!_||_.type!=="select"&&_.type!=="multiselect"?[]:_.getOptions?.(I)??_.options??[],[_,I]),Gt=Math.min(W,Math.max(0,Rt.length-1)),Wt=useMemo(()=>{if(!_?.suggestions)return [];if(!S.trim())return _.suggestions;let R=S.toLowerCase();return _.suggestions.filter(M=>M.label.toLowerCase().includes(R)||(M.hint??"").toLowerCase().includes(R))},[_?.suggestions,S]),zt=Math.min(gt,Math.max(0,Wt.length-1)),sn=R=>{let M={...I,[_.id]:R};$(M),H(""),F(0),j([""]),L(0),E(0),z(0),pt(new Set),Ye(false),Ze(0),Ce(false),xt(null),mt(false),kt.current&&clearTimeout(kt.current);let k=_.id,Z=n.findIndex(K=>K.id===k)+1;for(;Z<n.length;){let K=n[Z];if(K&&!K.skip?.(M))break;Z++;}if(Z>=n.length)o(M);else {let K=n[Z].id,ne=n.filter(Q=>!Q.skip?.(M)).findIndex(Q=>Q.id===K);C(ne>=0?ne:0);let pe=n[Z];if(pe.type==="text"){let Q=pe.defaultValue??"";H(Q),F(Q.length);}else if(pe.type==="textarea"){let Q=pe.defaultValue?pe.defaultValue.split(`
8
+ `):[""];j(Q),L(Q.length-1),E(Q[Q.length-1].length);}else if(pe.type==="select"){let Q=pe.getOptions?.(M)??pe.options??[];if(pe.defaultValue){let Yt=Q.findIndex(ve=>ve.value===pe.defaultValue);z(Yt>=0?Yt:0);}else z(0);}else pe.type==="multiselect"&&(z(0),pe.defaultValue?pt(new Set(pe.defaultValue.split(","))):pt(new Set));}},an=()=>{if(y===0){r();return}let R=_.id,k=n.findIndex(ne=>ne.id===R)-1;for(;k>=0;){let ne=n[k];if(ne&&!ne.skip?.(I))break;k--;}if(k<0){r();return}let B=n[k].id,Z=X.findIndex(ne=>ne.id===B);C(Z>=0?Z:0),Ye(false),Ze(0),Ce(false),xt(null),mt(false),kt.current&&clearTimeout(kt.current);let K=n[k];if(I[K.id]&&Ce(true),K.type==="text"){let ne=I[K.id]??K.defaultValue??"";H(ne),F(ne.length);}else if(K.type==="textarea"){let ne=I[K.id]??K.defaultValue??"",pe=ne?ne.split(`
9
+ `):[""];j(pe),L(pe.length-1),E(pe[pe.length-1].length);}else if(K.type==="multiselect"){z(0);let ne=I[K.id];pt(ne?new Set(ne.split(",")):new Set);}else {let ne=K.getOptions?.(I)??K.options??[],pe=I[K.id],Q=ne.findIndex(Yt=>Yt.value===pe);z(Q>=0?Q:0);}};if(useInput((R,M)=>{if(_){if(M.escape){y===0?r():an();return}if((M.ctrl||M.meta)&&(R==="v"||R==="i")&&x&&(_.type==="text"||_.type==="textarea")){x();return}if(_.type==="text"){if(De&&Wt.length>0){if(M.upArrow){zt<=0?Ye(false):Ze(k=>k-1);return}if(M.downArrow){Ze(k=>Math.min(Wt.length-1,k+1));return}if(M.return){let k=Wt[zt];k&&b&&b(k.value);return}Ye(false);}if(M.return){let k=S.trim();if(_.required&&!k){Ce(true);return}if(ht!==null){Ce(true),mt(true),Ue.current&&clearTimeout(Ue.current),Ue.current=setTimeout(()=>mt(false),2e3);return}sn(k);return}if(M.downArrow&&_.suggestions&&Wt.length>0){Ye(true),Ze(0);return}if(M.ctrl&&R==="a"){F(0);return}if(M.ctrl&&R==="e"){F(S.length);return}if(M.ctrl&&R==="k"){Ce(true),H(k=>k.slice(0,V));return}if(M.ctrl&&R==="u"){Ce(true),H(k=>k.slice(V)),F(0);return}if(M.ctrl&&R==="w"){Ce(true);let k=Fo(S,V);H(B=>B.slice(0,k)+B.slice(V)),F(k);return}if(M.meta&&(M.leftArrow||R==="b")){F(Fo(S,V));return}if(M.meta&&(M.rightArrow||R==="f")){F(ni(S,V));return}if(M.leftArrow){F(k=>Math.max(0,k-1));return}if(M.rightArrow){F(k=>Math.min(S.length,k+1));return}if(M.backspace||M.delete){if(V===0&&S.length===0&&y>0){an();return}V>0&&(H(k=>k.slice(0,V-1)+k.slice(V)),F(k=>k-1));return}R&&!M.ctrl&&!M.meta&&!M.escape&&(Ce(true),Ye(false),Ze(0),H(k=>k.slice(0,V)+R+k.slice(V)),F(k=>k+R.length));return}if(_.type==="textarea"){if(M.return&&(M.ctrl||M.meta)){let k=P.join(`
10
+ `).trim();if(_.required&&!k){Ce(true);return}if(ht!==null){Ce(true),mt(true),Ue.current&&clearTimeout(Ue.current),Ue.current=setTimeout(()=>mt(false),2e3);return}sn(k);return}if(M.return){Ce(true),j(k=>{let B=k[O]??"",Z=B.slice(0,N),K=B.slice(N),ye=[...k];return ye.splice(O,1,Z,K),ye}),L(k=>k+1),E(0);return}if(M.ctrl&&R==="a"){E(0);return}if(M.ctrl&&R==="e"){E((P[O]??"").length);return}if(M.ctrl&&R==="k"){Ce(true),j(k=>{let B=[...k];return B[O]=(B[O]??"").slice(0,N),B});return}if(M.ctrl&&R==="u"){Ce(true),j(k=>{let B=[...k];return B[O]=(B[O]??"").slice(N),B}),E(0);return}if(M.ctrl&&R==="w"){Ce(true);let k=O,B=N;j(Z=>{let K=Z[k]??"",ye=Fo(K,B),ne=[...Z];return ne[k]=K.slice(0,ye)+K.slice(B),E(ye),ne});return}if(M.meta&&(M.leftArrow||R==="b")){E(Fo(P[O]??"",N));return}if(M.meta&&(M.rightArrow||R==="f")){E(ni(P[O]??"",N));return}if(M.upArrow){if(Ke>0){let k=Ae[Ke],B=Ae[Ke-1],Z=N-(k?.startCol??0),K=Math.min(B.startCol+Z,B.startCol+B.text.length);L(B.logicalRow),E(K);}return}if(M.downArrow){if(Ke<Ae.length-1){let k=Ae[Ke],B=Ae[Ke+1],Z=N-(k?.startCol??0),K=Math.min(B.startCol+Z,B.startCol+B.text.length);L(B.logicalRow),E(K);}return}if(M.leftArrow){N>0?E(k=>k-1):O>0&&(L(k=>k-1),E((P[O-1]??"").length));return}if(M.rightArrow){let k=(P[O]??"").length;N<k?E(B=>B+1):O<P.length-1&&(L(B=>B+1),E(0));return}if(M.backspace||M.delete){if(N===0&&O===0)return;if(N>0)j(k=>{let B=[...k],Z=B[O]??"";return B[O]=Z.slice(0,N-1)+Z.slice(N),B}),E(k=>k-1);else {let k=(P[O-1]??"").length;j(B=>{let Z=[...B],K=Z[O-1]??"",ye=Z[O]??"";return Z.splice(O-1,2,K+ye),Z}),E(k),L(B=>B-1);}return}if(R&&!M.ctrl&&!M.meta&&!M.escape){Ce(true);let k=R.split(/\r?\n/);if(k.length===1)j(B=>{let Z=[...B],K=Z[O]??"";return Z[O]=K.slice(0,N)+R+K.slice(N),Z}),E(B=>B+R.length);else {let B=O,Z=N;j(K=>{let ye=[...K],ne=ye[B]??"",pe=ne.slice(0,Z),Q=ne.slice(Z),Yt=k[0]??"",ve=k[k.length-1]??"",rr=[pe+Yt,...k.slice(1,-1),ve+Q];return ye.splice(B,1,...rr),ye}),L(B+k.length-1),E((k[k.length-1]??"").length);}}return}if(_.type==="select"||_.type==="multiselect"){if(M.upArrow||R==="k"){z(k=>Math.max(0,k-1));return}if(M.downArrow||R==="j"){z(k=>Math.min(Rt.length-1,k+1));return}if(M.backspace||M.delete){an();return}if(_.type==="select"){if(M.return||M.tab){let k=Rt[Gt];if(k){if(_.validate){let B=_.validate(k.value);if(B!==null){Ce(true),xt(B),mt(true),Ue.current&&clearTimeout(Ue.current),Ue.current=setTimeout(()=>mt(false),2e3);return}}sn(k.value);}return}if(R>="1"&&R<="9"){let k=parseInt(R,10)-1;if(k<Rt.length){let B=Rt[k];B&&sn(B.value);}return}}else {if(R===" "){let k=Rt[Gt];k&&pt(B=>{let Z=new Set(B);return Z.has(k.value)?Z.delete(k.value):Z.add(k.value),Z});return}if(M.return){let k=Array.from(ut).join(",");sn(k);return}}}}}),!_)return null;let nt=rn?ht:null,Wn=Math.max(20,l-6),At=`${y+1}/${le}`,Kt=Math.max(2,f-4),ln=0;Gt>=Kt&&(ln=Gt-Kt+1);let zn=Rt.slice(ln,ln+Kt);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:[" ",Ve,Ve," "]}),jsxs(Text,{color:e.dim,children:["step ",At]})]}),jsxs(Box,{children:[jsx(Text,{children:" "}),X.map((R,M)=>jsxs(Text,{color:M===y?e.amber:M<y?e.green:e.ghost,children:[M===y?"\u25CF":M<y?"\u2713":"\u25CB"," "]},R.id))]}),jsxs(Box,{marginTop:0,children:[jsxs(Text,{color:e.white,bold:true,children:[" ",_.label]}),_.required&&jsx(Text,{color:e.red,children:" *"}),!_.required&&jsxs(Text,{color:e.dim,children:[" (optional, ",_.type==="textarea"?`${Er}+Enter`:"Enter"," to skip)"]})]}),_.description&&jsx(Box,{children:jsxs(Text,{color:e.dim,children:[" ",_.description]})}),_.type==="text"&&jsxs(Box,{flexDirection:"column",children:[jsxs(Box,{borderStyle:nt?"round":void 0,borderColor:nt?e.red:void 0,children:[jsxs(Text,{color:e.amber,children:[" ",">"," "]}),S.length>0?jsxs(Fragment,{children:[jsx(Text,{color:e.white,children:S.slice(0,V)}),jsx(Text,{color:e.amber,children:Do}),jsx(Text,{color:e.white,children:S.slice(V)})]}):_.placeholder?jsxs(Fragment,{children:[jsx(Text,{color:e.ghost,children:_.placeholder}),jsx(Text,{color:e.amber,children:Do})]}):jsx(Text,{color:e.amber,children:Do})]}),nt&&jsxs(Text,{color:e.red,dimColor:true,children:[" ",nt]}),qt&&jsx(Text,{color:e.red,children:" Fix the error above"})]}),_.type==="text"&&_.suggestions&&Wt.length>0&&(()=>{let R=Math.max(2,f-6),M=0;De&&zt>=R&&(M=zt-R+1);let k=Wt.slice(M,M+R);return jsxs(Box,{flexDirection:"column",children:[jsxs(Text,{color:e.ghost,children:[" ",Ve,Ve,Ve," or browse templates ",Ve.repeat(Math.max(0,Wn-28))]}),k.map((B,Z)=>{let K=Z+M,ye=De&&K===zt;return jsxs(Box,{children:[jsx(Text,{color:ye?e.amber:e.ghost,children:ye?" \u25B8 ":" "}),jsx(Text,{color:ye?e.white:e.silver,bold:ye,children:B.label}),B.hint&&jsxs(Text,{color:e.dim,wrap:"truncate",children:[" ",Ve," ",B.hint.replace(/\n/g," ")]})]},B.value)})]})})(),_.type==="textarea"&&(()=>{let R=Math.max(3,f-6),M=0;Ke>=R&&(M=Ke-R+1);let k=Ae.slice(M,M+R);return jsxs(Box,{flexDirection:"column",children:[jsxs(Box,{flexDirection:"column",borderStyle:nt?"round":void 0,borderColor:nt?e.red:void 0,children:[k.map((B,Z)=>{let K=Z+M,ye=B.isFirst?String(B.logicalRow+1).padStart(Ft," "):"".padStart(Ft," "),ne=K===Ke,pe=N-B.startCol;return jsxs(Box,{children:[jsxs(Text,{color:e.dim,children:[" ",ye," "]}),jsxs(Text,{color:e.ghost,children:["\u2502"," "]}),ne?jsxs(Fragment,{children:[jsx(Text,{color:e.white,children:B.text.slice(0,pe)}),jsx(Text,{color:e.amber,children:Do}),jsx(Text,{color:e.white,children:B.text.slice(pe)})]}):jsx(Text,{color:e.silver,children:B.text||(B.isFirst?" ":"")})]},`${B.logicalRow}-${B.startCol}`)}),P.length===1&&P[0]===""&&_.placeholder&&jsx(Box,{children:jsxs(Text,{color:e.dim,children:[" ","".padStart(Ft," ")," ",_.placeholder]})})]}),nt&&jsxs(Text,{color:e.red,dimColor:true,children:[" ",nt]}),qt&&jsx(Text,{color:e.red,children:" Fix the error above"})]})})(),_.type==="select"&&jsxs(Box,{flexDirection:"column",children:[zn.map((R,M)=>{let k=M+ln,B=k===Gt,Z=String(k+1).padStart(Rt.length>=10?2:1);return jsxs(Box,{children:[jsx(Text,{color:B?e.amber:e.ghost,children:B?" \u25B8 ":` ${Z} `}),jsx(Text,{color:B?e.white:e.silver,bold:B,children:R.label}),R.hint&&jsxs(Text,{color:e.dim,wrap:"truncate",children:[" ",Ve," ",R.hint.replace(/\n/g," ")]})]},R.value)}),nt&&jsxs(Text,{color:e.red,dimColor:true,children:[" ",nt]}),qt&&jsx(Text,{color:e.red,children:" Fix the error above"})]}),_.type==="multiselect"&&jsxs(Box,{flexDirection:"column",children:[zn.map((R,M)=>{let B=M+ln===Gt,Z=ut.has(R.value);return jsxs(Box,{children:[jsx(Text,{color:B?e.amber:e.ghost,children:B?" \u25B8 ":" "}),jsx(Text,{color:Z?e.green:e.dim,children:Z?"[\u2713]":"[ ]"}),jsxs(Text,{color:B?e.white:e.silver,bold:B,children:[" ",R.label]}),R.hint&&jsxs(Text,{color:e.dim,wrap:"truncate",children:[" ",Ve," ",R.hint.replace(/\n/g," ")]})]},R.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:[" ",_.type==="select"?"\u2191\u2193 select Enter confirm":_.type==="multiselect"?"\u2191\u2193 move Space toggle Enter confirm":_.type==="textarea"?`Enter newline ${Er}+Enter confirm \u2190\u2191\u2192\u2193 navigate`:De?"\u2191\u2193 browse Enter select \u2191 back to input":_.suggestions?"\u2190\u2192 move Enter confirm \u2193 browse templates":"\u2190\u2192 move Enter confirm",x&&(_.type==="text"||_.type==="textarea")?` ${Er}+V paste image`:""," Esc ",y>0?"back":"cancel"]}),T&&jsxs(Text,{color:e.amber,children:[" ",T]})]})]})}var ii=io.memo(function({agents:n,selected:o,msgCounts:r,colorMap:l,maxHeight:f,onConfirm:x,onCancel:T}){let [b,y]=useState(0),[C,I]=useState(()=>new Set(o));useMemo(()=>C.size===0||C.size===n.length,[C.size,n.length]);let S=Math.max(3,f-5),H=useMemo(()=>{if(n.length<=S)return 0;let P=Math.floor(S/2),j=n.length-S;return Math.min(j,Math.max(0,b-P))},[b,n.length,S]),V=n.slice(H,H+S);useInput((P,j)=>{if(j.upArrow){y(O=>O>0?O-1:n.length-1);return}if(j.downArrow){y(O=>O<n.length-1?O+1:0);return}if(P===" "){let O=n[b];if(!O)return;I(L=>{let N=new Set(L);return N.has(O.id)?N.delete(O.id):N.add(O.id),N});return}if(P==="a"||P==="A"){I(O=>new Set);return}if(j.return){x(new Set(C));return}if(j.escape){T();return}});let F=C.size===0?n.length:C.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:[ge," ",F,"/",n.length," selected"]})]}),jsx(Text,{color:e.ghost,children:Ve.repeat(36)}),V.map((P,j)=>{let L=j+H===b,N=C.size===0||C.has(P.id),E=l.get(P.id)??e.silver,W=r.get(P.id)??0;return jsxs(Box,{gap:0,children:[jsx(Text,{color:L?e.amber:e.ghost,children:L?" \u25B8 ":" "}),jsx(Text,{color:N?e.green:e.ghost,children:N?"[\u2713]":"[ ]"}),jsxs(Text,{color:L?E:N?e.silver:e.dim,bold:L,children:[" ",P.name]}),W>0&&jsxs(Text,{color:e.dim,children:[" ",ge,W]})]},P.id)}),n.length>S&&jsxs(Text,{color:e.ghost,children:[" ",H>0?"\u2191":" "," ",H+S<n.length?"\u2193":" "," ",b+1,"/",n.length]}),jsx(Text,{color:e.ghost,children:Ve.repeat(36)}),jsxs(Text,{color:e.dim,children:[" Space toggle"," ",ge," ","a all"," ",ge," ","Enter confirm"," ",ge," ","Esc cancel"]})]})});var tc={system:"\u2666",lifecycle:"\u25B6",output:"\u2502",tool:"\u2699",result:"\u2190",error:"\u2715",file:"\u270E",info:"\u2502"},nc={system:"System",lifecycle:"Lifecycle",output:"Output",tool:"Tool calls",result:"Results",error:"Errors",file:"Files",info:"Info"},oc={system:e.purple,lifecycle:e.cyan,output:e.white,tool:e.blue,result:e.green,error:e.red,file:e.purple,info:e.silver},wt=["system","lifecycle","output","tool","result","error","file","info"],ci=[{key:"1",label:"all",types:wt},{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"]}],di=io.memo(function({selected:n,typeCounts:o,onConfirm:r,onCancel:l}){let[f,x]=useState(0),[T,b]=useState(()=>new Set(n)),y=useMemo(()=>T.size===wt.length||wt.every(I=>T.has(I)),[T]);useInput((I,$)=>{if($.upArrow){x(S=>S>0?S-1:wt.length-1);return}if($.downArrow){x(S=>S<wt.length-1?S+1:0);return}if(I===" "){let S=wt[f];if(!S)return;b(H=>{let V=new Set(H);return V.has(S)?V.delete(S):V.add(S),V});return}if(I==="a"||I==="A"){b(S=>S.size===wt.length?new Set:new Set(wt));return}for(let S of ci)if(I===S.key){b(new Set(S.types));return}if($.return){let S=T.size===0?new Set(wt):new Set(T);r(S);return}if($.escape){l();return}});let C=y?wt.length:T.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:[ge," ",C,"/",wt.length," selected"]})]}),jsx(Text,{color:e.ghost,children:Ve.repeat(36)}),wt.map((I,$)=>{let S=$===f,H=T.has(I),V=o[I]??0,F=oc[I];return jsxs(Box,{gap:0,children:[jsx(Text,{color:S?e.amber:e.ghost,children:S?" \u25B8 ":" "}),jsx(Text,{color:H?e.green:e.ghost,children:H?"[\u2713]":"[ ]"}),jsxs(Text,{color:S?F:e.dim,children:[" ",tc[I]," "]}),jsx(Text,{color:S?F:H?e.silver:e.dim,bold:S,children:nc[I]}),V>0&&jsxs(Text,{color:e.dim,children:[" ",ge,V]})]},I)}),jsx(Text,{color:e.ghost,children:Ve.repeat(36)}),jsxs(Box,{gap:0,children:[jsx(Text,{color:e.dim,children:" "}),ci.map((I,$)=>jsxs(io.Fragment,{children:[$>0&&jsxs(Text,{color:e.ghost,children:[" ",ge," "]}),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"," ",ge," ","a all"," ",ge," ","Enter confirm"," ",ge," ","Esc cancel"]})]})});var zo="\u256D",Vo="\u256E",Ho="\u2570",jo="\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 Wo({cw:t}){return jsx(on,{cw:t,children:""})}function ui({width:t,height:n}){let o=Math.min(t-4,50),r=o-6,l=be(o-2);return jsxs(Box,{flexDirection:"column",paddingX:2,marginTop:1,children:[jsxs(Text,{color:e.ghost,children:[zo,l,Vo]}),jsx(on,{cw:r,children:""}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.amber,children:Ht}),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:[Ho,l,jo]})]})}function gi({step:t,width:n}){let o=Math.min(n-4,50),r=o-6,l=be(o-2),f,x=null;if(t==="task_created")f="Press R to run task",x={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:[zo,l,Vo]}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.amber,children:Ht}),jsxs(Text,{color:e.silver,children:[" ",f.padEnd(x?r-2-x.key.length-1-x.label.length-2:r-2)]}),x&&jsxs(Fragment,{children:[jsxs(Text,{color:e.amber,children:[" ",x.key]}),jsxs(Text,{color:e.gray,children:[" ",x.label]})]}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsxs(Text,{color:e.ghost,children:[Ho,l,jo]})]})}function mi({width:t}){let n=Math.min(t-4,50),o=n-6,r=be(n-2);return jsxs(Box,{flexDirection:"column",paddingX:2,marginTop:1,children:[jsxs(Text,{color:e.ghost,children:[zo,r,Vo]}),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:[Ho,r,jo]})]})}function Uo({count:t,config:n,width:o}){if(t>=3)return null;let r=Math.min((o??44)-4,50),l=r-6,f=be(r-2),x=jsxs(Text,{color:e.ghost,children:[zo,f,Vo]}),T=jsxs(Text,{color:e.ghost,children:[Ho,f,jo]});if(t>0){let y=n.hints[0],C=y?` ${y.key} ${y.label}`:"";return jsxs(Box,{flexDirection:"column",paddingX:2,marginTop:1,children:[x,jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.amber,children:Ht}),jsxs(Text,{color:e.silver,children:[" ",n.nudge.padEnd(l-2-C.length)]}),y&&jsxs(Fragment,{children:[jsxs(Text,{color:e.amber,children:[" ",y.key]}),jsxs(Text,{color:e.gray,children:[" ",y.label]})]}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),T]})}let b=n.hints.reduce((y,C,I)=>y+C.key.length+1+C.label.length+(I>0?3:0),0);return jsxs(Box,{flexDirection:"column",paddingX:2,marginTop:1,children:[x,jsx(Wo,{cw:l}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.amber,children:Ht}),jsxs(Text,{color:e.white,bold:true,children:[" ",n.title]}),jsx(Text,{children:" ".repeat(Math.max(0,l-n.title.length-2))}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(Wo,{cw:l}),n.description.map((y,C)=>jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),jsx(Text,{color:e.silver,children:y.padEnd(l)}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]},C)),jsx(Wo,{cw:l}),jsxs(Text,{children:[jsxs(Text,{color:e.ghost,children:[Ie," "]}),n.hints.map((y,C)=>jsxs(io.Fragment,{children:[C>0&&jsx(Text,{color:e.ghost,children:" "}),jsx(Text,{color:e.amber,children:y.key}),jsxs(Text,{color:e.gray,children:[" ",y.label]})]},C)),jsx(Text,{children:" ".repeat(Math.max(0,l-b))}),jsx(Text,{children:" "}),jsx(Text,{color:e.ghost,children:Ie})]}),jsx(Wo,{cw:l}),T]})}var sc=2,xi=360,ic={done:4e3,failed:8e3,review:6e3},ac={done:"\u2713",failed:"\u2715",review:Qt},lc={done:e.green,failed:e.red,review:e.blue},cc={done:e.successBg,failed:e.errorBg,review:e.infoBg};function dc(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 uc=io.memo(function({toast:n,onDismiss:o}){let[r,l]=useState(true),[f,x]=useState(false);useEffect(()=>{let S=setTimeout(()=>l(false),xi);return ()=>clearTimeout(S)},[]),useEffect(()=>{let S=ic[n.type],H=setTimeout(()=>x(true),S),V=setTimeout(()=>o(n.id),S+xi);return ()=>{clearTimeout(H),clearTimeout(V);}},[n.id,n.type,o]);let T=r||f,b=ac[n.type],y=lc[n.type],C=cc[n.type],I=dc(n),$=n.title.length>40?n.title.slice(0,39)+"\u2026":n.title;return jsx(Box,{children:jsxs(Text,{backgroundColor:C,children:[jsxs(Text,{color:T?e.dim:y,children:[" ",b," "]}),jsx(Text,{color:T?e.dim:e.white,bold:!T,children:$}),jsxs(Text,{color:T?e.dim:e.silver,children:[" ",I," "]})]})})}),yi=io.memo(function({toasts:n,onDismiss:o}){let r=n.slice(0,sc);return r.length===0?null:jsx(Box,{flexDirection:"column",children:r.map(l=>jsx(uc,{toast:l,onDismiss:o},l.id))})});var fc="\u256D",pc="\u256E",hc="\u2570",xc="\u256F",ct="\u2502",Nr=[{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"}],Dr=[{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"}],Fr=[{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"}],Dn=10,Xt=22;function Gr(t){let n=Math.max(0,Math.floor((Xt-t.length-2)/2)),o=Math.max(0,Xt-n-t.length-2);return be(n)+" "+t+" "+be(o)}var wi=io.memo(function({width:n,height:o}){let r=Xt*3+3+3+2,l=r+2,f=be(l-2),x="KEYBOARD SHORTCUTS",T=Math.max(0,Math.floor((r-x.length)/2)),b=Math.max(0,r-T-x.length),y="Press any key to dismiss",C=Math.max(0,Math.floor((r-y.length)/2)),I=Math.max(0,r-C-y.length),$=Math.max(Nr.length,Dr.length,Fr.length),S=$+10,H=Math.max(0,Math.floor((o-S)/2)),V=[];for(let L=0;L<$;L++){let N=L<Nr.length?Nr[L]:null,E=L<Dr.length?Dr[L]:null,W=L<Fr.length?Fr[L]:null;V.push(jsxs(Text,{children:[jsx(Text,{color:e.amber,children:ct}),jsx(Text,{children:" "}),N?jsxs(Fragment,{children:[jsx(Text,{color:e.amber,bold:true,children:N.key.padEnd(Dn)}),jsx(Text,{color:e.silver,children:N.label.padEnd(Xt-Dn)})]}):jsx(Text,{children:" ".repeat(Xt)}),jsxs(Text,{color:e.dim,children:[" ",ct," "]}),E?jsxs(Fragment,{children:[jsx(Text,{color:e.amber,bold:true,children:E.key.padEnd(Dn)}),jsx(Text,{color:e.silver,children:E.label.padEnd(Xt-Dn)})]}):jsx(Text,{children:" ".repeat(Xt)}),jsxs(Text,{color:e.dim,children:[" ",ct," "]}),W?jsxs(Fragment,{children:[jsx(Text,{color:e.amber,bold:true,children:W.key.padEnd(Dn)}),jsx(Text,{color:e.silver,children:W.label.padEnd(Xt-Dn)})]}):jsx(Text,{children:" ".repeat(Xt)}),jsx(Text,{children:" "}),jsx(Text,{color:e.amber,children:ct})]},`r${L}`));}let F=L=>jsxs(Text,{children:[jsx(Text,{color:e.amber,children:ct}),jsx(Text,{children:" ".repeat(r)}),jsx(Text,{color:e.amber,children:ct})]},L),P=Gr("NAVIGATION"),j=Gr("ACTIONS"),O=Gr("COMMANDS");return jsxs(Box,{flexDirection:"column",paddingX:Math.max(0,Math.floor((n-l)/2)),marginTop:H,children:[jsxs(Text,{color:e.amber,children:[fc,f,pc]}),F("e1"),jsxs(Text,{children:[jsx(Text,{color:e.amber,children:ct}),jsx(Text,{children:" ".repeat(T)}),jsx(Text,{color:e.amber,bold:true,children:x}),jsx(Text,{children:" ".repeat(b)}),jsx(Text,{color:e.amber,children:ct})]}),F("e2"),jsxs(Text,{children:[jsx(Text,{color:e.amber,children:ct}),jsx(Text,{children:" "}),jsx(Text,{color:e.dim,children:P}),jsxs(Text,{color:e.dim,children:[" ",ct," "]}),jsx(Text,{color:e.dim,children:j}),jsxs(Text,{color:e.dim,children:[" ",ct," "]}),jsx(Text,{color:e.dim,children:O}),jsx(Text,{children:" "}),jsx(Text,{color:e.amber,children:ct})]}),F("e3"),V,F("e4"),jsxs(Text,{children:[jsx(Text,{color:e.amber,children:ct}),jsx(Text,{children:" ".repeat(C)}),jsx(Text,{color:e.dim,children:y}),jsx(Text,{children:" ".repeat(I)}),jsx(Text,{color:e.amber,children:ct})]}),F("e5"),jsxs(Text,{color:e.amber,children:[hc,f,xc]})]})});var Ci=[{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"}],Ii=[{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"}],Mi=[{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"}],vi=[{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"}],_i=[{value:"",label:"Default",hint:"use shell adapter default"}],Ri=[{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"}],Ai=new Set(["claude"]),bc=[{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:"shell",label:"Shell",hint:"custom shell command"}],$i=[{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"}],Si=60;function Bi(t){return t.filter(n=>n.status!=="disabled").map(n=>{let o=(n.role??"").split(`
11
+ `)[0].trim(),r=o.length>Si?o.slice(0,Si-1)+"\u2026":o,l=r?`[${n.adapter}] ${r}`:n.adapter;return {value:n.id,label:n.name,hint:l}})}function Ko(t,n="Auto-assign",o="orchestrator picks the best agent"){return [{value:"",label:n,hint:o},...Bi(t)]}var zr=[{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 Ei(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 Oi(){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 Vr(t,n,o){let r=a$3(o,n.tier);return t.map(l=>{switch(l.id){case "name":return {...l,defaultValue:n.name};case "adapter":return {...l,defaultValue:o};case "model":return {...l,defaultValue:r};case "role":return {...l,defaultValue:"__custom__"};case "role_custom":return {...l,defaultValue:n.role,skip:void 0};case "skills":{let f=o==="claude"?n.skills:n.skills.filter(x=>!a$4(x));return {...l,defaultValue:f.join(", ")}}case "approval_policy":return {...l,defaultValue:n.approval_policy};default:return l}})}function Yo(t,n){let o=Ei(n);return [{id:"name",label:"Agent name",type:"text",placeholder:"e.g. alpha, frontend-bot, reviewer",required:true,validate:r=>r.trim()?t?.some(l=>l.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:bc},{id:"model",label:"Model",type:"select",getOptions:r=>r.adapter==="opencode"?vi:r.adapter==="codex"?Ii:r.adapter==="cursor"?Mi:r.adapter==="shell"?_i:Ci},{id:"effort",label:"Reasoning effort",type:"select",options:Ri,skip:r=>!Ai.has(r.adapter??"")},{id:"role",label:"Role / specialization",type:"select",options:zr},{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 Li(t,n="claude"){let o=t.role==="__custom__"?t.role_custom||void 0:t.role||void 0,r=t.skills?t.skills.split(",").map(x=>x.trim()).filter(Boolean):void 0,l=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:l,skills:r,team_id:t.team||void 0}}function Pi(t,n){let o=Bi(t);return [{id:"name",label:"Team name",type:"text",placeholder:"e.g. frontend, backend, qa",required:true,validate:r=>r.trim()?n?.some(l=>l.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(l=>l.value!==r.lead),skip:r=>!o.some(l=>l.value!==r.lead)},{id:"description",label:"Description",type:"textarea",placeholder:"Optional team purpose..."}]}function Ni(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 Di(t){let n=Ko(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:$i,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 Fi(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 Gi(t,n){let o=Ko(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:$i,defaultValue:String(t.priority),validate:r=>{let l=Number(r);return !Number.isInteger(l)||l<1||l>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 Wi(t){return {title:t.title,priority:t.priority?parseInt(t.priority,10):void 0,assignee:t.assignee||void 0,description:t.description??""}}function zi(t,n,o){let r=zr.find(b=>b.value===t.role),l=r?t.role:t.role?"__custom__":"",f=t.adapter==="opencode"?vi:t.adapter==="codex"?Ii:t.adapter==="cursor"?Mi:t.adapter==="shell"?_i:Ci,x=Ei(o),T=o?.find(b=>b.members.some(y=>y.agent_id===t.id))?.id;return [{id:"name",label:"Agent name",type:"text",defaultValue:t.name,required:true,validate:b=>b.trim()?n?.some(y=>y.id!==t.id&&y.name===b.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:Ri,defaultValue:t.config.effort??"",skip:()=>!Ai.has(t.adapter)},{id:"role",label:"Role / specialization",type:"select",options:zr,defaultValue:l},{id:"role_custom",label:"Describe the role",type:"textarea",defaultValue:t.role&&!r?t.role:"",placeholder:"e.g. Specialist in React and TypeScript",skip:b=>b.role!=="__custom__"},{id:"team",label:"Team",type:"select",options:x,defaultValue:T??"",skip:()=>x.length<=1}]}var Tc=[{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"}],yc=[{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"}],ki=[{value:"true",label:"On"},{value:"false",label:"Off"}];function Vi(t,n,o){let r=o??{toast:true,bell:false};return [{id:"activity_filter",label:"Activity filter preset",type:"select",options:yc,defaultValue:t},{id:"max_concurrent",label:"Max concurrent agents",type:"select",options:Tc,defaultValue:String(n)},{id:"notifications_toast",label:"Toast notifications",type:"select",options:ki,defaultValue:String(r.toast)},{id:"notifications_bell",label:"Bell on completion",type:"select",options:ki,defaultValue:String(r.bell)}]}function Hi(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 Zo(t){let n=Ko(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 ji(t){return {title:t.title,assignee:t.assignee||void 0,description:t.description||void 0}}function Ui(t,n){let o=Ko(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 Xi(t){return {title:t.title,assignee:t.assignee||void 0,description:t.description??""}}var qi=10,Ki=500,nr=2048,bn=500,Yi=5,Hr=new Set(["todo","failed","cancelled"]),Cc={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."},Ic={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."},Mc={title:"Agents",description:["AI workers that execute your tasks.","Each agent uses an adapter (claude, codex,","cursor, shell) and has its own role."],hints:[{key:"N",label:"new agent"},{key:"W",label:"start orchestrator"}],nudge:"Add more agents to increase parallelism."},Zi=5e3,Qi=0;function lg(){Qi=0;}var ea=/^\[[\w_]+\]$/;function ta(t){return ea.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 Xr=["#5faf87","#5fafd7","#af87ff","#d7af00","#5fd7d7","#d787af","#afaf5f","#d7875f"],vc=" ".repeat(9),or={system:"\u2666",lifecycle:"\u25B6",output:"\u2502",tool:"\u2699",result:"\u2190",error:"\u2715",file:"\u270E",info:"\u2502"},er=["system","lifecycle","output","tool","result","error","file","info"],Fn=[{label:"all",types:er},{label:"text",types:["output"]},{label:"tools",types:["tool","result","file"]},{label:"errors",types:["error"]},{label:"events",types:["lifecycle","system"]}];function jr(t){let o=(Fn.findIndex(r=>r.types.length===t.size&&r.types.every(l=>t.has(l)))+1)%Fn.length;return Fn[o]}function Ur(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 cg({projectName:t,tasks:n,agents:o=[],state:r,onRunTask:l,onCreateTask:f,onCancelTask:x,onRetryTask:T,onAssignTask:b$1,onRunAll:y,onDisableAgent:C,onEnableAgent:I,onSubscribeEvents:$,onRefreshTasks:S,onRefreshAgents:H,onRefreshState:V,onLoadHistory:F,onAddAgent:P,onDeleteAgent:j,onApproveTask:O,onRejectTask:L,onDeleteTask:N,onUpdateTask:E,onUpdateAgent:W,onForceStopAgent:z,onCreateTeam:X,onListTeams:_,onJoinTeam:le,onLeaveTeam:Ee,onDisbandTeam:Ft,onSetTeamLead:dt,onStartWatch:Ae,onStopWatch:Ke,onToggleAutonomous:ut,onRefreshGoals:pt,onCreateGoal:De,onUpdateGoal:Ye,onUpdateGoalStatus:gt,onDeleteGoal:Ze,onGetGoalProgress:rn,onCompleteOnboarding:Ce,initialWatchActive:ht,observerMode:xt,watchError:qt,messageBatchMs:mt=process.env.VITEST?0:80,initialActivityFilter:kt="all",onSaveActivityFilter:Ue,initialMaxConcurrent:uo=a.scheduling.max_concurrent_agents,onSaveMaxConcurrent:Gn,initialNotifications:Rt,onSaveNotifications:Gt,version:Wt,latestVersion:zt,onCheckUpdate:sn,onBackgroundInstall:an,defaultAdapter:nt="claude"}){let{exit:Wn}=useApp(),{stdout:At}=useStdout(),[Kt,ln]=useState(zt),zn=useRef(sn);useEffect(()=>{if(zt||!zn.current)return;let i=setTimeout(()=>{zn.current?.().then(p=>{p&&ln(p);}).catch(()=>{});},5e3);return ()=>clearTimeout(i)},[zt]);let[R,M]=useState(false),k=useRef(false);useEffect(()=>{!Kt||!an||k.current||R||(k.current=true,an(Kt).then(i=>{i&&M(true);}).catch(()=>{}));},[Kt,an,R]);let[B,Z]=useState({w:At?.columns??80,h:At?.rows??24});useEffect(()=>{if(!At)return;let i=()=>Z({w:At.columns,h:At.rows});return At.on("resize",i),()=>{At.off("resize",i);}},[At]);let K=B.w,ye=B.h,[ne,pe]=useState(n),[Q,Yt]=useState(o),[ve,rr]=useState(r),[go,sr]=useState(ht??!!r.pid),[Vn,qr]=useState([]),[aa,Kr]=useState(void 0),[Zt,mo]=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(Zt!=="completed")return;let i=setTimeout(()=>{mo("dismissed"),Ce?.().catch(()=>{});},5e3);return ()=>clearTimeout(i)},[Zt,Ce]);let[A,Tn]=useState("tasks"),[fo,Hn]=useState(0),[ir,Yr]=useState(0),[ar,Zr]=useState(0),[$e,jn]=useState(false),[ze,Jr]=useState([]),[Fe,Oe]=useState("none"),[cn,Ct]=useState(""),[bt,Je]=useState(null),[dn,Un]=useState([]),[$t,lr]=useState(false),[Qr,la]=useState(()=>new Set),[yn,cr]=useState(false),[Xn,dr]=useState(false),[es,ts]=useState(()=>new Set(er)),[qn,ur]=useState(-1),[ca,Kn]=useState(0),[wn,gr]=useState(()=>{let i=Fn.find(p=>p.label===kt);return new Set(i?.types??er)}),po=useMemo(()=>Fn.find(p=>p.types.length===wn.size&&p.types.every(s=>wn.has(s)))?.label??"all",[wn]),mr=useMemo(()=>wn.size>=er.length?ze:ze.filter(i=>wn.has(i.msgType??"info")),[ze,wn]),[ns,da]=useState(uo),[ho,ua]=useState(Rt??{toast:true,bell:false}),[ga,os]=useState([]),ma=useRef(0),[fr,rs]=useState(),ss=useRef(A);ss.current=A;let is=useRef(ne);is.current=ne;let as=useRef(Q);as.current=Q;let xo=useRef(ho);xo.current=ho;let bo=useCallback((i,p)=>{if(!xo.current.toast)return;let s=is.current.find(h=>h.id===p),d=s?.title??p,g=s?.assignee?as.current.find(h=>h.id===s.assignee):void 0;os(h=>{let u=[...h,{id:`toast_${ma.current++}`,type:i,title:d,agentName:g?.name,ts:Date.now()}];return u.length>Yi?u.slice(u.length-Yi):u}),xo.current.bell&&(i==="failed"||i==="review")&&process.stdout.write("\x07");},[]),fa=useCallback(i=>{os(p=>p.filter(s=>s.id!==i));},[]),To=io.useRef(new No).current,[pa,Sn]=useState(0),[ls,cs]=useState(false),[Yn,ha]=useState(false),[xa,pr]=useState(0),[ba,hr]=useState(0),[xr,kn]=useState(0),[yo,br]=useState(false),[Ta,Zn]=useState(0),[wo,Jt]=useState(0),[Vt,ds]=useState([]),[Cn,Tr]=useState([]),In=useRef(Vt);In.current=Vt;let us=useRef(0),Y=useCallback(async i=>{us.current=Date.now();let[p,s,d,g,h]=await Promise.all([S?.()??Promise.resolve(ne),H?.()??Promise.resolve(Q),V?.()??Promise.resolve(ve),i?.includeTeams?_?.()??Promise.resolve(In.current):Promise.resolve(null),pt?.()??Promise.resolve(Vn)]);pe(u=>Ur(u,p)?p:u),Yt(u=>Ur(u,s)?s:u),rr(d),g!==null&&ds(g),qr(u=>Ur(u,h)?h:u),ht&&sr(!!d.pid);},[S,H,V,_,pt,ht]),Mn=useMemo(()=>{let i=new Map;for(let p of Vn)i.set(p.id,p);return i},[Vn]),Le=useMemo(()=>{let i=[...ne].sort((h,u)=>(oo[h.status]??9)-(oo[u.status]??9));if(!Yn)return i;let p=[],s=[],d=[],g=new Map;for(let h of i)h.goalId&&Mn.has(h.goalId)?(g.has(h.goalId)||(d.push(h.goalId),g.set(h.goalId,[])),g.get(h.goalId).push(h)):s.push(h);for(let h of d)p.push(...g.get(h));return [...p,...s]},[ne,Yn,Mn]),Bt=ls?Le:Le.slice(0,qi),vn=Le.length-Bt.length,U=Le[fo],Jn=useMemo(()=>{let i=new Map;for(let p of ne)i.set(p.id,p.title);return i},[ne]),un=useMemo(()=>{let i=new Map;for(let p of Q)i.set(p.id,p.name);return i},[Q]),ya=useMemo(()=>{let i=new Map;for(let p of ne)if(p.goalId){let s=i.get(p.goalId);s||(s=[],i.set(p.goalId,s)),s.push(p);}return i},[ne]),So=useMemo(()=>{let i=new Map;for(let p=0;p<Q.length;p++)i.set(Q[p].id,Xr[p%Xr.length]);return i},[Q]),gs=useMemo(()=>{let i=new Map;for(let p of ze)p.agentId&&i.set(p.agentId,(i.get(p.agentId)??0)+1);return i},[ze]),wa=useMemo(()=>{let i={};for(let p of ze){let s=p.msgType??"info";i[s]=(i[s]??0)+1;}return i},[ze]),{agentTeamMap:_n,activeTeamCount:Qn,teamLeadSet:Sa}=useMemo(()=>{let i=new Map,p=new Set,s=0;for(let d of Vt)if(d.status==="active"){s++,p.add(d.lead_agent_id);for(let g of d.members)i.set(g.agent_id,d.name);}return {agentTeamMap:i,activeTeamCount:s,teamLeadSet:p}},[Vt]),Ge=useMemo(()=>{let i=[...Q];return i.sort((p,s)=>{let d=_n.get(p.id),g=_n.get(s.id);return d&&!g?-1:!d&&g?1:d&&g&&d!==g?d.localeCompare(g):(Rr[p.status]??9)-(Rr[s.status]??9)}),i},[Q,_n]),ee=Ge[ir],ft=useMemo(()=>[...Vn].sort((i,p)=>(c[i.status]??9)-(c[p.status]??9)),[Vn]),re=ft[ar],ka=useMemo(()=>re?ne.filter(i=>i.goalId===re.id):[],[re,ne]),yr=useRef(rn);yr.current=rn,useEffect(()=>{if(!re||!yr.current){Kr(void 0);return}let i=false;return yr.current(re.id).then(p=>{i||Kr(p);}).catch(()=>{}),()=>{i=true;}},[re?.id]);let gn=useRef(new Map),ko=useRef(new Map);useEffect(()=>{for(let[i,p]of Object.entries(ve.running))gn.current.set(p.run_id,p.agent_id),ko.current.set(p.run_id,i);if(gn.current.size>Ki){let i=gn.current.size-Ki,p=0;for(let s of gn.current.keys()){if(p++>=i)break;gn.current.delete(s),ko.current.delete(s);}}},[ve.running]);let mn=useRef([]),eo=useRef(null),wr=useCallback(()=>{if(eo.current=null,mn.current.length===0)return;let i=mn.current;mn.current=[],Jr(p=>{if(i.length>=bn)return i.slice(-bn);let s=bn-i.length;return (p.length>s?p.slice(-s):p).concat(i)});},[]);useEffect(()=>()=>{eo.current&&clearTimeout(eo.current);},[]);let a=useCallback((i,p,s)=>{let d=new Date,g=d.toLocaleTimeString("en-US",{hour12:false,hour:"2-digit",minute:"2-digit",second:"2-digit"}),h=s?.detail&&s.detail.length>nr?s.detail.slice(0,nr)+"\u2026[truncated]":s?.detail;mn.current.push({text:i,color:p,time:g,ts:d.getTime(),...s,detail:h}),mn.current.length>bn&&(mn.current=mn.current.slice(-bn)),mt===0?wr():eo.current||(eo.current=setTimeout(wr,mt));},[wr]);useEffect(()=>{xt?a("Observer mode: watching external orchestrator via disk polling.",e.amber):qt&&a(`Watch mode failed: ${qt}. Tasks will not auto-dispatch.`,e.red);},[]),useEffect(()=>{let i=xt?3e3:5e3,p=setInterval(()=>{Date.now()-us.current>=i&&Y().catch(()=>{});},i);return ()=>clearInterval(p)},[xt,Y]);let Rn=useCallback((i,p,s,d)=>{let g={key:++Qi,entityType:i,entityId:p,entityName:s,expiresAt:Date.now()+Zi,needsForceStop:d?.needsForceStop};Tr(h=>[...h,g]),a(`\u2717 "${s}" will be deleted in ${Math.round(Zi/1e3)}s \u2014 press Z to undo`,e.yellow);},[a]),Ca=useCallback(()=>{Tr(i=>{if(i.length===0)return i;let p=i[i.length-1];return a(`\u21B6 Undo: "${p.entityName}" restored`,e.green),i.slice(0,-1)});},[a]),ms=useCallback(async i=>{try{i.entityType==="task"&&N?await N(i.entityId):i.entityType==="agent"?(i.needsForceStop&&z&&await z(i.entityId),j&&await j(i.entityId)):i.entityType==="goal"&&Ze&&await Ze(i.entityId),a(`\u2713 Deleted "${i.entityName}"`,e.green),Y();}catch(p){a(`Failed to delete "${i.entityName}": ${p instanceof Error?p.message:String(p)}`,e.red);}},[N,j,Ze,z,a,Y]),fs=useRef(ms);fs.current=ms,useEffect(()=>{if(Cn.length===0)return;let i=setInterval(()=>{let p=Date.now(),s=[];Tr(d=>{let g=d.filter(h=>h.expiresAt<=p?(s.push(h),false):true);return s.length>0?g:d});for(let d of s)fs.current(d);},1e3);return ()=>clearInterval(i)},[Cn.length>0]),useEffect(()=>{if(!F)return;let i=p=>{let s=new Date(p.timestamp).toLocaleTimeString("en-US",{hour12:false,hour:"2-digit",minute:"2-digit",second:"2-digit"}),d=typeof p.data=="string"?p.data:JSON.stringify(p.data),g,h=e.silver,u="output";if(p.type==="error")g=typeof p.data=="string"?p.data:JSON.stringify(p.data),g=g.slice(0,200),h=e.red,u="error";else if(p.type==="file_changed")g=String(p.data),h=e.purple,u="file";else if(p.type==="done")g="Completed",h=e.green,u="lifecycle";else if(p.type==="tool_call")g=`\u2699 ${p.data?.name??"tool"}()`,h=e.cyan,u="tool";else {let{summary:w}=ia(d);if(!w)return null;g=w;let J=ta(g);u=J.msgType,h=J.color;}return {text:g,color:h,time:s,ts:new Date(p.timestamp).getTime(),agentId:p.agentId,taskId:p.taskId,msgType:u}};F(p=>{if(p.length===0)return;let s=p.map(i).filter(d=>d!==null);Jr(d=>{let g=[...s,...d];return g.length>bn?g.slice(-bn):g});}).catch(p=>{process.stderr.write(`[TUI] onLoadHistory error: ${p instanceof Error?p.stack??p.message:String(p)}
12
+ `);});},[]),useEffect(()=>{_?.().then(ds).catch(()=>{}),pt?.().then(qr).catch(()=>{});},[]);let Co=useCallback(()=>{Je({title:"NEW AGENT",steps:Yo(Q,In.current),kind:"agent"}),Oe("wizard");},[Q]),ps=useCallback(()=>{Je({title:"AGENT SHOP",steps:Oi(),kind:"agent_shop"}),Oe("wizard");},[]),Io=useCallback(()=>{Un([]),Je({title:"NEW TASK",steps:Di(Q),kind:"task"}),Oe("wizard");},[Q]),Ia=useCallback(async()=>{try{let{detectClipboardType:i,getClipboardImage:p}=await import('./clipboard-service-AJTJG2DJ.js'),s=await i();if(s!=="image")return a(s==="text"?"Clipboard has text, not image":"Clipboard is empty",e.dim),s;let d=await p();if(!d)return a("Failed to read clipboard image",e.red),"empty";let{mkdtemp:g,writeFile:h}=await import('fs/promises'),{tmpdir:u}=await import('os'),{join:w}=await import('path'),J=await g(w(u(),"orch-paste-")),Ot=w(J,`clipboard-${Date.now()}.${d.ext}`);return await h(Ot,d.data),Un(fn=>[...fn,Ot]),a(`\u{1F4CE} Image attached (${Math.round(d.data.length/1024)}KB)`,e.green),"image"}catch{return a("Clipboard paste failed",e.red),"empty"}},[a]),Ma=useCallback(i=>{Je({title:"EDIT TASK",steps:Gi(i,Q),kind:"edit_task",targetId:i.id}),Oe("wizard");},[Q]),hs=useCallback(()=>{Je({title:"NEW TEAM",steps:Pi(Q,Vt),kind:"team"}),Oe("wizard");},[Q]),va=useCallback(i=>{Je({title:"EDIT AGENT",steps:zi(i,Q,Vt),kind:"edit_agent",targetId:i.id}),Oe("wizard");},[Vt]),xs=useCallback(()=>{Je({title:"SETTINGS",steps:Vi(po,ns,ho),kind:"config"}),Oe("wizard");},[po,ns]),_a=useCallback(i=>{Oe("none");let p=bt?.kind,s=bt?.targetId;if(Je(null),p==="agent_shop"){let d=i.shop_template,g=d?b(d):void 0;if(g){let h=Yo(Q,In.current),u=Vr(h,g,nt);Je({title:`NEW AGENT \u2014 ${g.name}`,steps:u,kind:"agent_from_shop"}),Oe("wizard");}else a("No template selected",e.yellow);return}if((p==="agent"||p==="agent_from_shop")&&P){let d=Li(i,nt);a(`Creating agent "${d.name}"...`,e.amber),P(d.name,d.adapter,{model:d.model,effort:d.effort,role:d.role,approval_policy:d.approval_policy,skills:d.skills}).then(g=>{a(`\u2713 Created agent "${g.name}" (${g.id}, ${g.adapter})`,e.green),d.team_id&&le?le(d.team_id,g.id).then(h=>{a(`\u2713 Joined team "${h.name}"`,e.green),Y({includeTeams:true});},h=>a(`Failed to join team: ${h instanceof Error?h.message:String(h)}`,e.red)):Y();},g=>a(`Failed: ${g instanceof Error?g.message:String(g)}`,e.red));}else if(p==="team"&&X){let d=Ni(i);a(`Creating team "${d.name}"...`,e.amber),X(d).then(g=>{a(`\u2713 Created team "${g.name}" (${g.id}, ${g.members.length} members)`,e.green),Y({includeTeams:true});},g=>a(`Failed: ${g instanceof Error?g.message:String(g)}`,e.red));}else if(p==="task"&&f){let d=Fi(i),g=dn.length>0?[...dn]:void 0;Un([]),a(`Creating "${d.title}"...`,e.amber),f(d.title,{priority:d.priority,description:d.description,attachments:g}).then(h=>{a(`\u2713 Created "${h.title}" (${h.id})${g?` \u{1F4CE}${g.length}`:""}`,e.green),d.assignee&&b$1&&b$1(h.id,d.assignee).catch(()=>{}),Y();},h=>a(`Failed: ${h instanceof Error?h.message:String(h)}`,e.red));}else if(p==="edit_task"&&s&&E){let d=Wi(i),g=dn.length>0?[...dn]:void 0;Un([]),a("Updating task...",e.amber),E(s,{...d,attachments:g}).then(h=>{a(`\u2713 Updated "${h.title}"${g?` \u{1F4CE}${g.length}`:""}`,e.green),d.assignee&&b$1&&b$1(s,d.assignee).catch(()=>{}),Y();},h=>a(`Failed: ${h instanceof Error?h.message:String(h)}`,e.red));}else if(p==="edit_agent"&&s&&W){let d=Hi(i),g=d.team_id??"",h=Vt.find(u=>u.members.some(w=>w.agent_id===s))?.id??"";a("Updating agent...",e.amber),W(s,{name:d.name,role:d.role,model:d.model,effort:d.effort}).then(u=>{a(`\u2713 Updated agent "${u.name}"`,e.green);let w=[];h&&h!==g&&Ee&&w.push(Ee(h,s).then(J=>a(`\u2713 Left team "${J.name}"`,e.green),J=>a(`Failed to leave team: ${J instanceof Error?J.message:String(J)}`,e.red))),g&&g!==h&&le&&w.push(le(g,s).then(J=>a(`\u2713 Joined team "${J.name}"`,e.green),J=>a(`Failed to join team: ${J instanceof Error?J.message:String(J)}`,e.red))),Promise.all(w).then(()=>Y({includeTeams:w.length>0}));},u=>a(`Failed: ${u instanceof Error?u.message:String(u)}`,e.red));}else if(p==="config"){if(i.activity_filter){let u=Fn.find(w=>w.label===i.activity_filter);u&&(gr(new Set(u.types)),Ue?.(u.label));}if(i.max_concurrent){let u=parseInt(i.max_concurrent,10);u>0&&(da(u),Gn?.(u));}let d=i.notifications_toast==="true",g=i.notifications_bell==="true",h={toast:d,bell:g};ua(h),Gt?.(h),a("Settings saved",e.green);}else if(p==="goal"&&De){let d=ji(i);a(`Creating goal "${d.title}"...`,e.amber),De(d).then(g=>{a(`\u2713 Created goal "${g.title}" (${g.id})`,e.green),Y();},g=>a(`Failed: ${g instanceof Error?g.message:String(g)}`,e.red));}else if(p==="edit_goal"&&s&&Ye){let d=Xi(i);a("Updating goal...",e.amber),Ye(s,d).then(g=>{a(`\u2713 Updated goal "${g.title}"`,e.green),Y();},g=>a(`Failed: ${g instanceof Error?g.message:String(g)}`,e.red));}},[bt,P,f,X,le,Ee,b$1,E,W,ut,De,Ye,a,Y,Ue,Gn,ho,Gt,Vt,dn]),Ra=useCallback(()=>{Oe("none"),Je(null),Un([]);},[]),Aa=useCallback(i=>{let p=b(i);if(!p)return;let s=Yo(Q,In.current),d=Vr(s,p,nt);Je({title:`NEW AGENT \u2014 ${p.name}`,steps:d,kind:"agent_from_shop"}),Oe("wizard");},[]);useEffect(()=>{if(!$)return;let i=null,p=()=>{i||(i=setTimeout(()=>{i=null,Y().catch(()=>{});},150));},s=$(d=>{if(d.type==="agent:started"&&(gn.current.set(d.runId,d.agentId),ko.current.set(d.runId,d.taskId)),Uc(d,a,gn.current,ko.current),d.type==="task:created"?mo(g=>g==="welcome"?"task_created":g):d.type==="agent:started"?mo(g=>g==="task_created"?"run_started":g):d.type==="task:status_changed"&&d.to==="done"&&mo(g=>g==="run_started"?"completed":g),d.type==="task:status_changed"&&(d.to==="done"?bo("done",d.taskId):d.to==="failed"?bo("failed",d.taskId):d.to==="review"&&bo("review",d.taskId),xo.current.toast&&ss.current!=="tasks")){let g=d.to==="done"?e.green:d.to==="failed"?e.red:d.to==="review"?e.blue:void 0;g&&rs({tab:"tasks",color:g});}(d.type==="task:status_changed"||d.type==="task:created"||d.type==="task:assigned"||d.type==="agent:started"||d.type==="agent:completed"||d.type==="run:retry"||d.type==="goal:created"||d.type==="goal:status_changed"||d.type==="goal:updated"||d.type==="goal:deleted")&&p();});return ()=>{s(),i&&clearTimeout(i);}},[$,a,Y,bo]);let Sr=xt?"observing":go?"watching":"idle",$a=ve.started_at?g(ve.started_at):void 0,bs=ve.stats.total_tokens.total,Ts=useMemo(()=>{let i={running:0,retrying:0,review:0,todo:0,done:0,failed:0,cancelled:0};for(let p of ne)p.status==="in_progress"?i.running++:p.status==="retrying"?i.retrying++:p.status==="review"?i.review++:p.status==="todo"?i.todo++:p.status==="done"?i.done++:p.status==="failed"?i.failed++:p.status==="cancelled"&&i.cancelled++;return {...i,teams:Qn}},[ne,Qn]);Ts.running;let Ba=useMemo(()=>({input:ve.stats.total_tokens.input??0,output:ve.stats.total_tokens.output??0,reasoning:ve.stats.total_tokens.reasoning??0,total:bs,cache_read:ve.stats.total_tokens.cache_read??0,cache_write:ve.stats.total_tokens.cache_write??0}),[ve.stats.total_tokens,bs]),It=Math.max(4,ye-9),Ea=_n.size,Oa=Q.length>Ea,La=Qn>0?Qn+(Oa?1:0):0,Pa=useMemo(()=>{if(!Yn||Mn.size===0)return 0;let i=0,p=new Set,s=false;for(let d of Bt)d.goalId&&Mn.has(d.goalId)?p.has(d.goalId)||(p.add(d.goalId),i++):s=true;return s&&i++,i},[Yn,Mn,Bt]),Na=A==="goals"?ft.length+1:A==="tasks"?Bt.length+1+(vn>0?1:0)+Pa:A==="agents"?Q.length+1+La:0,Da=Math.min(Na+1,Math.ceil(It*.5)),Fa=A==="logs"?It:Math.max(2,Math.min(Da,It-4)),Se,Et;if(A==="logs")Se=It,Et=0;else if(yo)Se=0,Et=Math.max(1,It);else {let i=Math.max(3,Math.min(Fa+xr,It-4));Se=i,Et=Math.max(1,It-i);}let _e=Math.max(10,K-2),Mt=useMemo(()=>Fe==="command"?Js(cn):[],[Fe,cn]),An=It-4-3;useEffect(()=>{xr>An&&kn(An),xr<-An&&kn(-An);},[It]),useEffect(()=>{Sn(i=>Math.min(i,Math.max(0,Bt.length-Se)));},[Bt.length,Se]),useEffect(()=>{pr(i=>Math.min(i,Math.max(0,Ge.length-Se)));},[Ge.length,Se]),useEffect(()=>{hr(i=>Math.min(i,Math.max(0,ft.length-Se)));},[ft.length,Se]);let Ga=useCallback(i=>{let s=i.trim().replace(/^\//,"").split(/\s+/),d=s[0]?.toLowerCase();if(!d)return;let g=h=>h instanceof Error?h.message:String(h);switch(d){case "cancel":{if(!U){a("No task selected",e.yellow);return}if(!x)return;a(`Cancelling "${U.title}"...`,e.amber),x(U.id).then(()=>{a(`\u2713 Cancelled "${U.title}"`,e.green),Y();},h=>a(`Failed: ${g(h)}`,e.red));return}case "retry":{if(!U){a("No task selected",e.yellow);return}if(!T)return;a(`Retrying "${U.title}"...`,e.amber),T(U.id).then(()=>{a(`\u2713 Retried "${U.title}"`,e.green),Y();},h=>a(`Failed: ${g(h)}`,e.red));return}case "assign":{if(!U){a("No task selected",e.yellow);return}if(!b$1||!s[1]){a("Usage: assign <agent>",e.yellow);return}a(`Assigning "${U.title}" to ${s[1]}...`,e.amber),b$1(U.id,s[1]).then(()=>{a(`\u2713 Assigned "${U.title}" to ${s[1]}`,e.green),Y();},h=>a(`Failed: ${g(h)}`,e.red));return}case "task":{let h=s[1]?.toLowerCase();if(h==="add"){let u=s.slice(2).join(" ");if(!u){Io();return}if(!f){a("Create not available",e.yellow);return}a(`Creating "${u}"...`,e.amber),f(u).then(w=>{a(`\u2713 Created "${w.title}" (${w.id})`,e.green),Y();},w=>a(`Failed: ${g(w)}`,e.red));}else if(h==="list"){let u=Le.map(w=>` ${w.id} ${w.status.padEnd(11)} ${w.title}`);if(u.length===0)a("No tasks",e.dim);else for(let w of u)a(w,e.cyan);}else if(h==="show"){let u=s[2]?Le.find(w=>w.id===s[2]):U;if(!u){a("No task selected or id given",e.yellow);return}a(`${u.id} ${u.status} P${u.priority} "${u.title}"`,e.cyan),u.assignee&&a(` agent: ${u.assignee}`,e.dim),u.description&&a(` ${u.description.slice(0,100)}`,e.dim);}else if(h==="cancel"){let u=s[2]?Le.find(w=>w.id===s[2]):U;if(!u){a("No task selected or id given",e.yellow);return}if(!x)return;a(`Cancelling "${u.title}"...`,e.amber),x(u.id).then(()=>{a(`\u2713 Cancelled "${u.title}"`,e.green),Y();},w=>a(`Failed: ${g(w)}`,e.red));}else if(h==="retry"){let u=s[2]?Le.find(w=>w.id===s[2]):U;if(!u){a("No task selected or id given",e.yellow);return}if(!T)return;a(`Retrying "${u.title}"...`,e.amber),T(u.id).then(()=>{a(`\u2713 Retried "${u.title}"`,e.green),Y();},w=>a(`Failed: ${g(w)}`,e.red));}else if(h==="assign"){let u=s[2]?Le.find(Ot=>Ot.id===s[2]):void 0,w=u??U,J=u?s[3]:s[2];if(!w){a("No task selected or id given",e.yellow);return}if(!J){a("Usage: /task assign [id] <agent>",e.yellow);return}if(!b$1)return;a(`Assigning "${w.title}" to ${J}...`,e.amber),b$1(w.id,J).then(()=>{a(`\u2713 Assigned "${w.title}" to ${J}`,e.green),Y();},Ot=>a(`Failed: ${g(Ot)}`,e.red));}else if(h==="approve"){let u=s[2]?Le.find(w=>w.id===s[2]):U;if(!u){a("No task selected or id given",e.yellow);return}if(u.status!=="review"){a(`Cannot approve \u2014 status is ${u.status}`,e.yellow);return}if(!O)return;a(`Approving "${u.title}"...`,e.amber),O(u.id).then(()=>{a(`\u2713 Approved "${u.title}"`,e.green),Y();},w=>a(`Failed: ${g(w)}`,e.red));}else if(h==="reject"){let u=s[2]?Le.find(J=>J.id===s[2]):U;if(!u){a("No task selected or id given",e.yellow);return}if(u.status!=="review"){a(`Cannot reject \u2014 status is ${u.status}`,e.yellow);return}if(!L)return;let w=s.slice(s[2]&&Le.find(J=>J.id===s[2])?3:2).join(" ").trim()||void 0;a(`Rejecting "${u.title}"${w?" with feedback":""}...`,e.amber),L(u.id,w).then(()=>{a(`\u2713 Rejected "${u.title}" \u2192 todo`,e.green),Y();},J=>a(`Failed: ${g(J)}`,e.red));}else if(h==="delete"){let u=s[2]?Le.find(w=>w.id===s[2]):U;if(!u){a("No task selected or id given",e.yellow);return}if(u.status==="in_progress"){a("Cannot delete \u2014 task is running",e.yellow);return}if(!N)return;Rn("task",u.id,u.title);}else a("Usage: /task add|list|show|cancel|retry|assign|approve|reject|delete",e.yellow);return}case "agent":{let h=s[1]?.toLowerCase();if(h==="add"){let u=s[2];if(!u){Co();return}if(!P){a("Agent creation not available",e.yellow);return}let w=s[3];a(`Creating agent "${u}"...`,e.amber),P(u,w).then(J=>{a(`\u2713 Created agent "${J.name}" (${J.id}, ${J.adapter})`,e.green),Y();},J=>a(`Failed: ${g(J)}`,e.red));}else if(h==="list"){let u=Ge.map(w=>` ${w.id} ${w.status.padEnd(8)} ${w.name} (${w.adapter})`);if(u.length===0)a("No agents",e.dim);else for(let w of u)a(w,e.cyan);}else if(h==="disable"){let u=s[2]?Ge.find(w=>w.id===s[2]||w.name===s[2]):ee;if(!u){a("No agent selected or id given",e.yellow);return}if(!C)return;a(`Disabling ${u.name}...`,e.amber),C(u.id).then(()=>{a(`\u2713 Disabled ${u.name}`,e.green),Y();},w=>a(`Failed: ${g(w)}`,e.red));}else if(h==="enable"){let u=s[2]?Ge.find(w=>w.id===s[2]||w.name===s[2]):ee;if(!u){a("No agent selected or id given",e.yellow);return}if(!I)return;a(`Enabling ${u.name}...`,e.amber),I(u.id).then(()=>{a(`\u2713 Enabled ${u.name}`,e.green),Y();},w=>a(`Failed: ${g(w)}`,e.red));}else if(h==="delete"||h==="remove"){let u=s[2]?Ge.find(w=>w.id===s[2]||w.name===s[2]):ee;if(!u){a("No agent selected or id given",e.yellow);return}if(u.status==="running"){a("Cannot delete \u2014 agent is running",e.yellow);return}if(!j){a("Agent deletion not available",e.yellow);return}Rn("agent",u.id,u.name);}else if(h==="autonomous"||h==="auto"){let u=s[2]?Ge.find(w=>w.id===s[2]||w.name===s[2]):ee;if(!u){a("No agent selected or id given",e.yellow);return}if(!ut){a("Autonomous toggle not available",e.yellow);return}u.autonomous?(a(`Disabling autonomous mode for "${u.name}"...`,e.amber),ut(u.id,false).then(()=>{a(`${pn} ${u.name} autonomous OFF`,e.cyan),Y();},w=>a(`Failed: ${g(w)}`,e.red))):(a(`Enabling autonomous mode for "${u.name}"...`,e.amber),ut(u.id,true).then(()=>{a(`${pn} ${u.name} autonomous ON`,e.cyan),Y();},w=>a(`Failed: ${g(w)}`,e.red)));}else h==="shop"?ps():a("Usage: /agent add|list|disable|enable|delete|autonomous|shop",e.yellow);return}case "team":{let h=s[1]?.toLowerCase();if(h==="create"||h==="add")hs();else if(h==="list"){let u=In.current;if(u.length===0)a("No teams",e.dim);else for(let w of u)a(` ${w.id} ${w.status.padEnd(8)} ${w.name} (${w.members.length} members)`,e.cyan);}else if(h==="join"){if(!le){a("Join not available",e.yellow);return}let u=s[2],w=s[3]??ee?.id;if(!u||!w){a("Usage: /team join <teamId> [agentId]",e.yellow);return}a(`Joining team ${u}...`,e.amber),le(u,w).then(J=>{a(`\u2713 Agent joined team "${J.name}"`,e.green),Y({includeTeams:true});},J=>a(`Failed: ${g(J)}`,e.red));}else if(h==="leave"){if(!Ee){a("Leave not available",e.yellow);return}let u=s[2],w=s[3]??ee?.id;if(!u||!w){a("Usage: /team leave <teamId> [agentId]",e.yellow);return}a(`Leaving team ${u}...`,e.amber),Ee(u,w).then(J=>{a(`\u2713 Agent left team "${J.name}"`,e.green),Y({includeTeams:true});},J=>a(`Failed: ${g(J)}`,e.red));}else if(h==="disband"){if(!Ft){a("Disband not available",e.yellow);return}let u=s[2];if(!u){a("Usage: /team disband <teamId>",e.yellow);return}a(`Disbanding team ${u}...`,e.amber),Ft(u).then(()=>{a("\u2713 Team disbanded",e.green),Y({includeTeams:true});},w=>a(`Failed: ${g(w)}`,e.red));}else if(h==="set-lead"){if(!dt){a("Set-lead not available",e.yellow);return}let u=s[2],w=s[3];if(!u||!w){a("Usage: /team set-lead <teamId> <agentId>",e.yellow);return}a(`Setting lead for team ${u}...`,e.amber),dt(u,w).then(J=>{a(`\u2713 New lead for team "${J.name}"`,e.green),Y({includeTeams:true});},J=>a(`Failed: ${g(J)}`,e.red));}else a("Usage: /team create|list|join|leave|disband|set-lead",e.yellow);return}case "goal":{let h=s[1]?.toLowerCase();if(h==="add"||h==="create"){let u=s.slice(2).join(" ").trim();if(!u){let w=Zo(Q);Je({title:"New Goal",steps:w,kind:"goal"}),Oe("wizard");return}if(!De){a("Goal creation not available",e.yellow);return}a(`Creating goal "${u}"...`,e.amber),De({title:u}).then(w=>{a(`\u2713 Created goal "${w.title}" (${w.id})`,e.green),Y();},w=>a(`Failed: ${g(w)}`,e.red));}else if(h==="list"){let u=ft.map(w=>` ${w.id} ${w.status.padEnd(8)} ${w.title}`);if(u.length===0)a("No goals",e.dim);else for(let w of u)a(w,e.cyan);}else if(h==="show"){let u=s[2]?ft.find(w=>w.id===s[2]):re;if(!u){a("No goal selected or id given",e.yellow);return}a(`${u.id} ${u.status} "${u.title}"`,e.cyan),u.description&&a(` ${u.description.slice(0,100)}`,e.dim);}else if(h==="status"){let u=s[2]?ft.find(fn=>fn.id===s[2]):void 0,w=u??re;if(!w){a("No goal selected or id given",e.yellow);return}let J=s[u?3:2];if(!J||!a$1.includes(J)){a("Usage: /goal status [id] <active|paused|achieved|abandoned>",e.yellow);return}let Ot=J;if(!gt){a("Status update not available",e.yellow);return}a(`Updating goal status to ${Ot}...`,e.amber),gt(w.id,Ot).then(fn=>{a(`\u2713 Goal "${fn.title}" \u2192 ${Ot}`,e.green),Y();},fn=>a(`Failed: ${g(fn)}`,e.red));}else if(h==="delete"){let u=s[2]?ft.find(w=>w.id===s[2]):re;if(!u){a("No goal selected or id given",e.yellow);return}if(!Ze){a("Goal deletion not available",e.yellow);return}Rn("goal",u.id,u.title);}else a("Usage: /goal add|list|show|status|delete",e.yellow);return}case "run":{let h=s[1]??U?.id;if(!h){a("No task selected or id given",e.yellow);return}if(!l){a("Run not available",e.yellow);return}let u=Le.find(w=>w.id===h);if(u&&!Hr.has(u.status)){a(`Cannot run \u2014 status is ${u.status}`,e.yellow);return}a(`Running ${h}...`,e.amber),l(h).then(()=>{a(`\u2713 Dispatched ${h}`,e.green),Y();},w=>a(`Failed: ${g(w)}`,e.red));return}case "run-all":{if(!y){a("Run-all not available",e.yellow);return}a("Running all todo tasks...",e.amber),y().then(()=>{a("\u2713 Dispatched all todo tasks",e.green),Y();},h=>a(`Failed: ${g(h)}`,e.red));return}case "watch":{if(go){a("Watch mode already active",e.yellow);return}if(!Ae){a("Watch not available",e.yellow);return}a("Starting watch mode...",e.amber),Ae().then(()=>{sr(true),a("\u2713 Watch mode started",e.green);},h=>a(`Failed: ${g(h)}`,e.red));return}case "pause":{if(!go){a("Watch mode not active",e.yellow);return}if(!Ke){a("Pause not available",e.yellow);return}a("Pausing watch mode...",e.amber),Ke().then(()=>{sr(false),a("\u2713 Watch mode paused",e.green);},h=>a(`Failed: ${g(h)}`,e.red));return}case "config":{s[1]?.toLowerCase()==="activity-filter"?gr(u=>{let w=jr(u);return Ue?.(w.label),a(`Activity filter: ${w.label}`,e.amber),new Set(w.types)}):xs();return}case "status":{let h=ne.filter(u=>u.status==="in_progress").length;a(`${Sr} ${h} running ${ne.length} tasks ${Ge.length} agents`,e.cyan);return}case "help":{for(let[h,u]of Object.entries(hn)){let w=u.sub?" "+u.sub.join("|"):u.args?" "+u.args:"";a(` /${h}${w} \u2014 ${u.help}`,e.silver);}return}case "quit":{Wn();return}case "disable":{if(!ee){a("No agent selected",e.yellow);return}if(!C)return;a(`Disabling ${ee.name}...`,e.amber),C(ee.id).then(()=>{a(`\u2713 Disabled ${ee.name}`,e.green),Y();},h=>a(`Failed: ${g(h)}`,e.red));return}case "enable":{if(!ee){a("No agent selected",e.yellow);return}if(!I)return;a(`Enabling ${ee.name}...`,e.amber),I(ee.id).then(()=>{a(`\u2713 Enabled ${ee.name}`,e.green),Y();},h=>a(`Failed: ${g(h)}`,e.red));return}default:a(`Unknown: ${d}. Type /help for commands`,e.yellow);}},[U,ee,Le,Ge,ne,Sr,go,x,T,b$1,y,l,f,C,I,P,O,L,N,le,Ee,Ft,dt,Ae,Ke,a,Wn,Y,Io,Co,hs,xs]);useInput((i,p)=>{if(!($t&&(lr(false),i==="?"||p.escape||i==="\x1BOP"))&&!yn){if((p.ctrl||p.meta)&&i==="s"&&Fe==="wizard"&&bt?.kind==="agent"){ps();return}if(Fe!=="none"){if(p.escape){Oe("none"),Ct(""),To.reset();return}if(p.return){let s=cn.trim();if(!s)return;if(Fe==="new_task"){if(!f)return;Oe("none"),Ct(""),a(`Creating "${s}"...`,e.amber),f(s).then(d=>{a(`\u2713 Created "${d.title}" (${d.id})`,e.green),Y();},d=>a(`Failed to create: ${d instanceof Error?d.message:String(d)}`,e.red));}else if(Fe==="command"){let d=s;if(Mt.length>0&&Mt[wo]){let g=Mt[wo],h=g.cmd.replace(/\s+\[.*\]$/,"");if((h.startsWith(s)||s==="/")&&(d=h),g.subs&&!h.includes(" ")){Ct(h+" "),Jt(0);return}}Oe("none"),Ct(""),Jt(0),To.push(d),Ga(d);}return}if(p.tab&&Fe==="command"){if(Mt.length>0){let s=Mt[wo];if(s){let d=s.cmd.replace(/\s+\[.*\]$/,"");Ct(d+(s.subs?" ":"")),Jt(0);}}else {let s=$r(cn);s&&Ct(d=>d+s);}return}if(p.upArrow&&Fe==="command"){if(Mt.length>0)Jt(s=>Math.max(0,s-1));else {let s=To.prev();s!==null&&Ct(s);}return}if(p.downArrow&&Fe==="command"){if(Mt.length>0)Jt(s=>Math.min(Mt.length-1,s+1));else {let s=To.next();Ct(s??"");}return}if(p.backspace||p.delete){Ct(s=>s.slice(0,-1)),Jt(0);return}i&&!p.ctrl&&!p.meta&&(Ct(s=>s+i),Jt(0));return}if(i.toLowerCase()==="q"){Wn();return}if(p.escape){if($e){jn(false),Zn(0);return}if(A==="logs"&&qn>=0){ur(-1),Kn(0);return}return}if((i==="+"||i==="=")&&A!=="logs"){yo?(br(false),kn(-Math.floor(It/2))):kn(s=>Math.max(-An,s-3));return}if(i==="-"&&A!=="logs"){yo?(br(false),kn(Math.floor(It/2))):kn(s=>Math.min(An,s+3));return}if(i==="M"&&A!=="logs"){br(s=>!s);return}if(i==="?"){lr(true);return}if(i==="\x1BOP"){lr(true);return}if(i==="/"&&!$e){Oe("command"),Ct("/"),Jt(0);return}if((i==="a"||i==="A")&&A==="logs"&&!$e&&!yn&&!Xn){cr(true);return}if(i==="f"&&A==="logs"&&!$e&&!yn&&!Xn){dr(true);return}if(i==="F"&&A==="logs"&&!$e&&!yn&&!Xn){ts(s=>new Set(jr(s).types));return}if((i==="z"||i==="Z")&&Cn.length>0){Ca();return}if((i==="f"||i==="F")&&(A==="tasks"||A==="agents"||A==="goals")&&!$e){gr(s=>{let d=jr(s);return Ue?.(d.label),new Set(d.types)});return}if((i==="n"||i==="N")&&A==="tasks"&&!$e&&f){Io();return}if((i==="n"||i==="N")&&A==="agents"&&!$e&&P){Co();return}if((i==="n"||i==="N")&&A==="goals"&&!$e&&De){let s=Zo(Q);Je({title:"New Goal",steps:s,kind:"goal"}),Oe("wizard");return}if((i==="e"||i==="E")&&A==="goals"&&re&&Ye){let s=Ui(re,Q);Je({title:`Edit Goal: ${re.title}`,steps:s,kind:"edit_goal",targetId:re.id}),Oe("wizard");return}if((i==="d"||i==="D")&&A==="goals"&&re&&Ze){Rn("goal",re.id,re.title);return}if((i==="c"||i==="C")&&A==="goals"&&re&&gt){(re.status==="active"||re.status==="paused")&&(a(`Marking goal "${re.title}" as achieved...`,e.amber),gt(re.id,"achieved").then(()=>{a(`\u2713 Goal "${re.title}" achieved`,e.green),Y();},s=>a(`Failed: ${s instanceof Error?s.message:String(s)}`,e.red)));return}if((i==="x"||i==="X")&&A==="goals"&&re&&gt){(re.status==="active"||re.status==="paused")&&(a(`Abandoning goal "${re.title}"...`,e.amber),gt(re.id,"abandoned").then(()=>{a(`\u2713 Goal "${re.title}" abandoned`,e.dim),Y();},s=>a(`Failed: ${s instanceof Error?s.message:String(s)}`,e.red)));return}if((i==="p"||i==="P")&&A==="goals"&&re&&gt){let s=re.status==="paused"?"active":"paused";(re.status==="active"||re.status==="paused")&&gt(re.id,s).then(()=>{a(`Goal "${re.title}" ${s}`,e.cyan),Y();},d=>a(`Failed: ${d instanceof Error?d.message:String(d)}`,e.red));return}if((i==="a"||i==="A")&&A==="tasks"&&U?.status==="review"&&O){a(`Approving "${U.title}"...`,e.amber),O(U.id).then(()=>{a(`\u2713 Approved "${U.title}"`,e.green),Y();},s=>a(`Failed: ${s instanceof Error?s.message:String(s)}`,e.red));return}if((i==="x"||i==="X")&&A==="tasks"&&U?.status==="review"&&L){a(`Rejecting "${U.title}"...`,e.amber),L(U.id).then(()=>{a(`\u2713 Rejected "${U.title}" \u2192 todo`,e.green),Y();},s=>a(`Failed: ${s instanceof Error?s.message:String(s)}`,e.red));return}if((i==="c"||i==="C")&&A==="tasks"&&U&&x){if(U.status==="done"||U.status==="failed"||U.status==="cancelled"){a(`Cannot cancel \u2014 status is ${U.status}`,e.yellow);return}a(`Cancelling "${U.title}"...`,e.amber),x(U.id).then(()=>{a(`\u2713 Cancelled "${U.title}"`,e.green),Y();},s=>a(`Failed: ${s instanceof Error?s.message:String(s)}`,e.red));return}if((i==="e"||i==="E")&&A==="tasks"&&U&&E){Ma(U);return}if((i==="e"||i==="E")&&A==="agents"&&ee&&W){va(ee);return}if((i==="s"||i==="S")&&A==="tasks"){cs(s=>!s),Hn(0),Sn(0);return}if((i==="g"||i==="G")&&A==="tasks"&&!$e){ha(s=>!s),Hn(0),Sn(0);return}if((i==="s"||i==="S")&&A==="agents"&&ee&&z){if(!Object.values(ve.running).some(d=>d.agent_id===ee.id)&&ee.status!=="running"){a(`Agent "${ee.name}" is not running`,e.yellow);return}a(`Force-stopping agent "${ee.name}"...`,e.amber),z(ee.id).then(()=>{a(`\u2713 Stopped agent "${ee.name}"`,e.green),Y();},d=>a(`Failed: ${d instanceof Error?d.message:String(d)}`,e.red));return}if((i==="d"||i==="D")&&A==="tasks"&&U&&U.status!=="in_progress"&&N){Rn("task",U.id,U.title);return}if((i==="d"||i==="D")&&A==="agents"&&ee&&j){let s=Object.values(ve.running).some(d=>d.agent_id===ee.id);if(s&&!z){a(`Cannot delete \u2014 agent "${ee.name}" is running. Press S to stop first.`,e.yellow);return}Rn("agent",ee.id,ee.name,{needsForceStop:s});return}if((i==="u"||i==="U")&&A==="agents"&&ee&&ut){let s=!ee.autonomous;a(`${s?"Enabling":"Disabling"} autonomous mode for "${ee.name}"...`,e.amber),ut(ee.id,s).then(()=>{a(`${pn} ${ee.name} autonomous ${s?"ON":"OFF"}`,e.cyan),Y();},d=>a(`Failed: ${d instanceof Error?d.message:String(d)}`,e.red));return}if(!$e){if(i==="g"||i==="G"){Tn("goals");return}if(i==="t"||i==="T"){Tn("tasks");return}if(i==="a"||i==="A"){Tn("agents");return}if(i==="l"||i==="L"){Tn("logs");return}}if(!$e){let s=Oo.map(g=>g.id),d=s.indexOf(A);if(p.tab||p.rightArrow){Tn(s[(d+1)%s.length]);return}if(p.leftArrow){Tn(s[(d+s.length-1)%s.length]);return}}if(p.return){let s=vn>0?Bt.length:-1;if(A==="tasks"&&fo===s){cs(g=>!g),Hn(0),Sn(0);return}let d=Bt.length+(vn>0?1:0);if(A==="tasks"&&fo===d&&f){Io();return}if(A==="goals"&&ar===ft.length&&De){let g=Zo(Q);Je({title:"New Goal",steps:g,kind:"goal"}),Oe("wizard");return}if(A==="agents"&&ir===Ge.length&&P){Co();return}if(A==="goals"&&re){jn(g=>!g),Zn(0);return}if(A==="tasks"&&U){jn(g=>!g);return}if(A==="agents"&&ee){jn(g=>!g);return}if(A==="logs"&&qn>=0){jn(g=>!g);return}}if((i==="r"||i==="R")&&A==="tasks"&&U&&l){if(!Hr.has(U.status)){a(`Cannot run "${U.title}" \u2014 status is ${U.status}`,e.yellow);return}a(`Running "${U.title}"...`,e.green),l(U.id).then(()=>{a(`Dispatched "${U.title}"`,e.green),Y();},s=>a(`Failed to run: ${s instanceof Error?s.message:String(s)}`,e.red));return}if(p.upArrow||i==="k"){if(A==="goals"&&$e){Zn(s=>Math.max(0,s-1));return}A==="goals"?Zr(s=>{let d=Math.max(0,s-1);return hr(g=>d<g?d:g),d}):A==="tasks"?Hn(s=>{let d=Math.max(0,s-1);return Sn(g=>d<g?d:g),d}):A==="agents"?Yr(s=>{let d=Math.max(0,s-1);return pr(g=>d<g?d:g),d}):A==="logs"&&ur(s=>{if(s===-1){let g=ze.length-1;return Kn(Math.max(0,g-Se+2)),Math.max(0,g)}let d=Math.max(0,s-1);return Kn(g=>d<g?d:g),d});}if(p.downArrow||i==="j"){if(A==="goals"&&$e){Zn(s=>s+1);return}if(A==="goals"){let s=ft.length+(De?1:0)-1;Zr(d=>{let g=Math.min(Math.max(0,s),d+1);return hr(h=>g>=h+Se?g-Se+1:h),g});}else if(A==="tasks"){let s=Bt.length+(f?1:0)+(vn>0?1:0)-1;Hn(d=>{let g=Math.min(Math.max(0,s),d+1);return Sn(h=>g>=h+Se?g-Se+1:h),g});}else if(A==="agents"){let s=Ge.length+(P?1:0)-1;Yr(d=>{let g=Math.min(Math.max(0,s),d+1);return pr(h=>g>=h+Se?g-Se+1:h),g});}else A==="logs"&&ur(s=>{if(s===-1)return -1;let d=ze.length-1;if(s>=d)return Kn(0),-1;let g=s+1;return Kn(h=>g>=h+Se-1?g-Se+2:h),g});}}});let ot=Fe!=="none",ys=qn>=0?ze[qn]:void 0,Mo=yo?"+/- exit max":"+/- resize \u2502 M max",ws=!ot&&$e&&A==="tasks"&&U,Ss=!ot&&$e&&A==="agents"&&ee,ks=!ot&&$e&&A==="goals"&&re,Wa=!ot&&$e&&A==="logs"&&ys,kr=U?.id,za=useMemo(()=>kr?ze.filter(i=>i.taskId===kr):[],[ze,kr]),Va=!ot&&A==="tasks"&&U&&Hr.has(U.status)&&!!l,Ha=!ot&&!$e&&(A==="goals"&&!!De||A==="tasks"&&!!f||A==="agents"&&!!P),ja=!ot&&A==="tasks"&&U?.status==="review"&&!!O,Ua=!ot&&A==="tasks"&&U?.status==="review"&&!!L,Xa=ee?Object.values(ve.running).some(i=>i.agent_id===ee.id):false,qa=!ot&&(A==="goals"&&re&&!!Ze||A==="tasks"&&U&&U.status!=="in_progress"&&!!N||A==="agents"&&ee&&!!j),Ka=!ot&&!$e&&(A==="goals"&&!!re&&!!Ye||A==="tasks"&&!!U&&!!E||A==="agents"&&!!ee&&!!W),Ya=!ot&&A==="agents"&&ee&&(Xa||ee.status==="running")&&!!z,Za=!ot&&A==="agents"&&!!ee&&!!ut,Ja=!ot&&A==="goals"&&!!re&&(re.status==="active"||re.status==="paused")&&!!gt,Qa=!ot&&Cn.length>0,Cs=Fe==="command"&&Mt.length>0,Is=bt?.kind==="task"||bt?.kind==="edit_task";return jsxs(Box,{flexDirection:"column",width:K,height:ye,children:[jsx(Zs,{projectName:t,activeView:A,mode:Sr,stats:Ts,tokens:Ba,uptime:$a,width:K,version:Wt,latestVersion:Kt,updateInstalled:R,taskBadge:vn>0?Le.length:void 0,flashTab:fr?.tab,flashColor:fr?.color,onFlashComplete:fr?()=>rs(void 0):void 0}),jsx(Box,{height:1}),$t&&jsx(wi,{width:K,height:ye-7}),!$t&&Zt==="welcome"&&A==="tasks"&&jsx(ui,{width:K,height:ye}),!$t&&A==="goals"&&jsx(Ac,{goals:ft,selectedIndex:ar,scrollOffset:ba,height:Se,width:_e,showAddRow:!!De,agentNameMap:un,tasksByGoalMap:ya}),!$t&&Zt!=="welcome"&&A==="tasks"&&jsx(Bc,{tasks:Bt,selectedIndex:fo,scrollOffset:pa,height:Se,width:_e,showAddRow:!!f,agentNameMap:un,hiddenCount:vn,goalMap:Mn,groupByGoal:Yn}),!$t&&A==="tasks"&&(Zt==="task_created"||Zt==="run_started")&&jsx(gi,{step:Zt,width:K}),!$t&&A==="tasks"&&Zt==="completed"&&jsx(mi,{width:K}),!$t&&A==="agents"&&jsx(Ec,{agents:Ge,selectedIndex:ir,scrollOffset:xa,height:Se,width:_e,state:ve,taskTitleMap:Jn,showAddRow:!!P,agentTeamMap:_n,teamLeadSet:Sa,activeTeamCount:Qn}),!$t&&A==="logs"&&jsxs(Fragment,{children:[jsx(Lc,{messages:ze,height:yn||Xn?Math.max(3,Se-16):Se,agents:Ge,logAgentFilter:Qr,logTypeFilter:es,selectedIndex:qn,scrollOffset:ca,agentNameMap:un,agentColorMap:So,agentMsgCounts:gs,taskTitleMap:Jn,width:_e}),yn&&jsx(Box,{paddingX:2,children:jsx(ii,{agents:Ge,selected:Qr,msgCounts:gs,colorMap:So,maxHeight:Math.min(Se-4,18),onConfirm:i=>{la(i),cr(false);},onCancel:()=>cr(false)})}),Xn&&jsx(Box,{paddingX:2,children:jsx(di,{selected:es,typeCounts:wa,onConfirm:i=>{ts(i),dr(false);},onCancel:()=>dr(false)})})]}),jsx(Box,{height:1}),$t?null:Fe==="wizard"&&bt?jsx(oi,{title:bt.title,steps:bt.steps,onComplete:_a,onCancel:Ra,width:_e,height:Et,onPasteImage:Is?Ia:void 0,onSuggestionSelected:bt.kind==="agent"?Aa:void 0,footerExtra:dn.length>0&&Is?`\u{1F4CE}${dn.length}`:void 0},`${bt.kind}-${bt.title}`):Cs?jsxs(Fragment,{children:[jsx(Jo,{label:"COMMANDS",width:_e}),jsx(Rc,{suggestions:Mt,selectedIndex:wo,height:Math.min(Mt.length,Et),width:_e})]}):Fe==="new_task"?jsxs(Fragment,{children:[jsx(Vc,{mode:Fe,width:_e}),jsx(Hc,{mode:Fe,value:cn,width:_e})]}):ws?jsxs(Fragment,{children:[jsx(Dc,{task:U,width:_e,resizeHint:Mo}),jsx(qs,{task:U,height:Et,width:_e,taskLogs:za,agentNameMap:un,taskTitleMap:Jn})]}):ks?jsxs(Fragment,{children:[jsx(Jo,{label:`GOAL: ${re.title}`,width:_e,suffixLen:Mo.length+2,suffix:jsxs(Text,{color:e.dim,children:[" ",Mo," "]})}),jsx($c,{goal:re,height:Et,width:_e,agentNameMap:un,tasks:ka,progressReport:aa,scrollOffset:Ta,onClampScroll:Zn})]}):Ss?jsxs(Fragment,{children:[jsx(Fc,{agent:ee,width:_e,resizeHint:Mo}),jsx(Gc,{agent:ee,height:Et,state:ve,taskTitleMap:Jn,teamName:_n.get(ee.id)})]}):Wa?jsxs(Fragment,{children:[jsx(Jo,{label:"LOG",width:_e}),jsx(Nc,{message:ys,height:Et,width:_e,agents:Ge,agentNameMap:un,agentColorMap:So,taskTitleMap:Jn})]}):ze.length>0&&A!=="logs"?jsxs(Fragment,{children:[(()=>{let i=` F:${po.toUpperCase()} \u2502 ${mr.length}/${ze.length}`;return jsx(Jo,{label:"ACTIVITY",width:_e,suffixLen:i.length,suffix:jsxs(Fragment,{children:[jsx(Text,{color:e.dim,children:" F:"}),jsx(Text,{color:e.amber,children:po.toUpperCase()}),jsxs(Text,{color:e.ghost,children:[" ","\u2502"," ",mr.length,"/",ze.length]})]})})})(),jsx(Pc,{messages:mr,height:Math.max(1,Et-1),width:_e,agents:Ge,agentNameMap:un,agentColorMap:So})]}):A==="goals"?jsx(Uo,{count:ft.length,config:Cc,width:_e}):A==="tasks"?jsx(Uo,{count:Le.length,config:Ic,width:_e}):A==="agents"?jsx(Uo,{count:Ge.length,config:Mc,width:_e}):null,jsx(Box,{flexGrow:1}),jsx(yi,{toasts:ga,onDismiss:fa}),Cn.length>0&&jsx(_c,{deletions:Cn,width:K}),jsx(Qs,{mode:Fe==="command"?"command":"navigate",value:Fe==="command"?cn:"",completion:Fe==="command"?$r(cn):null,activeView:A,canRun:!!Va,canNew:!!Ha,canApprove:!!ja,canReject:!!Ua,canCancel:A==="tasks"&&!!U&&U.status==="in_progress"&&!!x,canDelete:!!qa,canUndo:!!Qa,canEdit:!!Ka,canForceStop:!!Ya,canToggleAuto:!!Za,autoActive:ee?.autonomous,canPause:!!Ja,isPaused:re?.status==="paused",canToggleShowAll:A==="tasks"&&Le.length>qi,showAllActive:ls,hasDetail:!!(ws||Ss||ks),itemCount:A==="goals"?ft.length:A==="tasks"?Le.length:A==="agents"?Q.length:ze.length,itemLabel:A==="goals"?"goals":A==="tasks"?"tasks":A==="agents"?"agents":"events",width:K,hasSuggestions:Cs,onboardingCompleted:r.onboardingCompleted})]})}var _c=io.memo(function({deletions:n,width:o}){let[,r]=useState(0);useEffect(()=>{let f=setInterval(()=>r(x=>x+1),1e3);return ()=>clearInterval(f)},[]);let l=Date.now();return jsx(Box,{flexDirection:"column",width:o,children:n.map(f=>{let x=Math.max(0,Math.ceil((f.expiresAt-l)/1e3)),T=Math.max(0,o-4),b=f.entityType==="task"?"Task":f.entityType==="agent"?"Agent":"Goal",y=Math.max(10,T-b.length-30),C=f.entityName.length>y?f.entityName.slice(0,y-1)+"\u2026":f.entityName;return jsx(Box,{paddingX:2,children:jsxs(Text,{color:e.yellow,children:["\u2717 ",jsx(Text,{bold:true,children:b}),` "${C}" \u2014 `,jsxs(Text,{color:e.amber,bold:true,children:[x,"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 Rc({suggestions:t,selectedIndex:n,height:o,width:r}){let l=o,f=0;n>=l&&(f=n-l+1);let x=t.slice(f,f+l);return jsx(Box,{flexDirection:"column",paddingX:2,children:x.map((T,b)=>{let y=b+f,C=y===n,I=C?"\u25B6":" ",$=Math.min(20,Math.max(14,...t.map(P=>P.cmd.length+1))),S=T.cmd.padEnd($),H=T.subs?` ${T.subs}`:"",V=Math.max(4,r-$-H.length-8),F=T.desc.length>V?T.desc.slice(0,V-1)+"\u2026":T.desc;return jsxs(Text,{wrap:"truncate",children:[jsx(Text,{color:C?e.amber:e.ghost,children:` ${I} `}),jsx(Text,{color:C?e.white:e.silver,bold:C,children:S}),jsx(Text,{color:e.dim,children:F}),H&&jsx(Text,{color:e.ghost,children:H})]},y)})})}function Ac({goals:t,selectedIndex:n,scrollOffset:o=0,height:r,width:l,showAddRow:f,agentNameMap:x,tasksByGoalMap:T}){let b=t.length,y=t.slice(o,o+r),C=f&&b>=o&&b<o+r;return jsxs(Box,{flexDirection:"column",height:r,children:[y.map((I,$)=>jsx(Box,{paddingX:2,children:jsx(Xs,{goal:I,selected:$+o===n,width:l-2,agentNameMap:x,tasksByGoal:T?.get(I.id)})},I.id)),C&&jsx(Box,{paddingX:2,children:jsxs(Text,{color:n===b?e.amber:e.ghost,children:[n===b?" \u25B8 ":" ",jsx(Text,{color:n===b?e.amber:e.dim,children:"+ add goal..."})]})},"__add__")]})}function $c({goal:t,height:n,width:o,agentNameMap:r,tasks:l,progressReport:f,scrollOffset:x=0,onClampScroll:T}){let y=io.useMemo(()=>{let V=l??[],F=t.assignee?r?.get(t.assignee)??t.assignee:"\u2014",P=Math.max(20,o-6),j=(z,X)=>{if(z.length<=X)return [z];let _=[];for(let le=0;le<z.length;le+=X)_.push(z.slice(le,le+X));return _},O=_r(f)?.split(`
13
+ `).flatMap(z=>j(z,P))??[],L=_r(t.description)?.split(`
14
+ `).flatMap(z=>j(z,P))??[],N=Bs[t.status]??e.dim,E=new Map;for(let z of V)E.set(z.status,(E.get(z.status)??0)+1);let W=[];if(W.push({key:"row-status",node:jsxs(Box,{children:[jsxs(Box,{width:24,children:[jsx(Text,{color:e.dim,children:" status "}),jsx(Text,{color:N,bold:true,children:t.status})]}),jsxs(Box,{children:[jsx(Text,{color:e.dim,children:" assignee "}),jsx(Text,{color:t.assignee?e.green:e.dim,children:F})]})]})}),W.push({key:"row-id",node:jsxs(Box,{children:[jsxs(Box,{width:24,children:[jsx(Text,{color:e.dim,children:" id "}),jsx(Text,{color:e.dim,children:t.id})]}),jsxs(Box,{children:[jsx(Text,{color:e.dim,children:" created "}),jsx(Text,{children:t.created_at.slice(0,10)})]})]})}),t.updated_at&&t.updated_at!==t.created_at&&W.push({key:"row-updated",node:jsxs(Box,{children:[jsx(Box,{width:24,children:jsxs(Text,{color:e.dim,children:[" "," "]})}),jsxs(Box,{children:[jsx(Text,{color:e.dim,children:" Updated "}),jsx(Text,{children:t.updated_at.slice(0,10)})]})]})}),V.length>0){let z=[];for(let[X,_]of E)z.push(`${_} ${X}`);W.push({key:"row-tasks-summary",node:jsxs(Box,{children:[jsxs(Box,{width:24,children:[jsx(Text,{color:e.dim,children:" tasks "}),jsx(Text,{color:e.cyan,children:V.length})]}),jsxs(Box,{children:[jsx(Text,{color:e.dim,children:" "}),jsx(Text,{color:e.dim,children:z.join(" \xB7 ")})]})]})});}if(L.length>0){W.push({key:"desc-gap",node:jsx(Text,{children:" "})});for(let z=0;z<L.length;z++)W.push({key:`desc-${z}`,node:jsxs(Text,{color:e.silver,wrap:"truncate",children:[" ",L[z]]})});}else W.push({key:"desc-gap",node:jsx(Text,{children:" "})}),W.push({key:"desc-empty",node:jsx(Text,{color:e.dim,children:" No description."})});if(O.length>0){W.push({key:"prog-gap",node:jsx(Text,{children:" "})}),W.push({key:"prog-div",node:jsx(Pn,{label:"progress",width:o})});for(let z=0;z<O.length;z++)W.push({key:`prog-${z}`,node:jsxs(Text,{color:e.white,wrap:"truncate",children:[" ",O[z]]})});}if(V.length>0){W.push({key:"tasks-gap",node:jsx(Text,{children:" "})}),W.push({key:"tasks-div",node:jsx(Pn,{label:`tasks (${V.length})`,width:o})});for(let z of V){let X=Ao[z.status]??e.dim;W.push({key:`task-${z.id}`,node:jsxs(Text,{color:e.silver,wrap:"truncate",children:[" ",jsx(Text,{color:X,children:z.status.padEnd(12)}),z.title.slice(0,Math.max(10,o-22))]})});}}return W},[t,l,f,o,r]),C=Math.max(0,y.length-n),I=Math.min(x,C);io.useEffect(()=>{T&&I!==x&&T(I);},[I,x,T]);let $=y.length>n&&I<C,S=$?n-1:n,H=y.slice(I,I+S);return jsxs(Box,{flexDirection:"column",height:n,paddingX:2,children:[H.map(V=>jsx(Box,{children:V.node},V.key)),$&&jsxs(Text,{color:e.ghost,children:[" ","\u2193"," ",y.length-I-S," more ","\u2014"," ","\u2191","\u2193"," to scroll"]})]})}function Bc({tasks:t,selectedIndex:n,scrollOffset:o=0,height:r,width:l,showAddRow:f,agentNameMap:x,hiddenCount:T=0,goalMap:b,groupByGoal:y=false}){let C=T>0,I=C?t.length:-1,$=t.length+(C?1:0),S=t.slice(o,o+r),H=C&&I>=o&&I<o+r,V=f&&$>=o&&$<o+r,F=useMemo(()=>{if(!y||!b||b.size===0)return null;let N=new Map;for(let E of t)if(E.goalId&&b.has(E.goalId)){let W=N.get(E.goalId)??{total:0,done:0};W.total++,E.status==="done"&&W.done++,N.set(E.goalId,W);}return N},[t,y,b]),P=y&&b?t.filter(N=>!N.goalId||!b.has(N.goalId)).length:0,j=y&&b&&b.size>0&&F&&F.size>0,O=[],L=o>0?t[o-1]?.goalId??null:void 0;for(let N=0;N<S.length&&O.length<r;N++){let E=S[N],W=E.goalId&&b?.has(E.goalId)?E.goalId:null;if(j){if(W&&W!==L){let z=b.get(W),X=F.get(W)??{total:0,done:0};if(O.push(jsx(Ds,{goalTitle:z.title,taskCount:X.total,doneCount:X.done,width:l},`gh_${W}`)),O.length>=r)break}if(!W&&L!==null&&L!==void 0&&(O.push(jsx(Fs,{taskCount:P,width:l},"__ungrouped__")),O.length>=r))break}L=W,O.push(jsx(Box,{paddingX:2,children:jsx(Eo,{task:E,selected:N+o===n,width:l-2,agentNameMap:x,goalMap:b})},E.id));}return H&&O.length<r&&O.push(jsx(Box,{paddingX:2,children:jsxs(Text,{color:n===I?e.amber:e.ghost,children:[n===I?" \u25B8 ":" ",jsxs(Text,{color:n===I?e.amber:e.dim,children:["\u25BC"," Show all (",T," more) \u2014 press ",jsx(Text,{bold:true,color:e.gray,children:"S"})]})]})},"__show_all__")),V&&O.length<r&&O.push(jsx(Box,{paddingX:2,children:jsxs(Text,{color:n===$?e.amber:e.ghost,children:[n===$?" \u25B8 ":" ",jsx(Text,{color:n===$?e.amber:e.dim,children:"+ add task..."})]})},"__add__")),jsx(Box,{flexDirection:"column",height:r,children:O})}function Ec({agents:t,selectedIndex:n,scrollOffset:o=0,height:r,width:l,state:f,taskTitleMap:x,showAddRow:T,agentTeamMap:b,teamLeadSet:y,activeTeamCount:C}){let I=new Map;for(let E of Object.values(f.running))I.set(E.agent_id,E);let $=new Map;if(C&&C>0)for(let E of t){let W=b?.get(E.id);W&&$.set(W,($.get(W)??0)+1);}let S=t.length,H=t.slice(o,o+r),V=T&&S>=o&&S<o+r,F=C!=null&&C>0,P=new Map;if(F&&y&&b){for(let E of t)if(y.has(E.id)){let W=b.get(E.id);W&&P.set(W,E.name);}}let j=0;for(let E of $.values())j+=E;let O=t.length-j,L=[],N=o>0?b?.get(t[o-1]?.id??""):void 0;for(let E=0;E<H.length&&L.length<r;E++){let W=H[E],z=b?.get(W.id);if(F&&z&&z!==N&&(L.push(jsx(Vs,{teamName:z,memberCount:$.get(z)??0,leadName:P.get(z),width:l},`ts-${z}`)),L.length>=r)||F&&!z&&N&&(L.push(jsx(Hs,{memberCount:O,width:l},"ts-unassigned")),L.length>=r))break;N=z,L.push(jsx(Box,{paddingX:2,children:jsx(zs,{agent:W,selected:E+o===n,width:l-2,runningEntry:I.get(W.id),currentTaskTitle:W.current_task?x.get(W.current_task):void 0,teamName:z,isLead:y?.has(W.id)})},W.id));}return V&&L.length<r&&L.push(jsx(Box,{paddingX:2,children:jsxs(Text,{color:n===S?e.amber:e.ghost,children:[n===S?" \u25B8 ":" ",jsx(Text,{color:n===S?e.amber:e.dim,children:"+ add agent..."})]})},"__add__")),jsx(Box,{flexDirection:"column",height:r,children:L})}function na(t=5e3){let[n,o]=useState(Date.now());return useEffect(()=>{let r=setInterval(()=>o(Date.now()),t);return ()=>clearInterval(r)},[t]),n}function oa(t,n){let o=Math.max(0,n-t);return o<3e3?"now":o<6e4?`${Math.floor(o/1e3)}s`:o<36e5?`${Math.floor(o/6e4)}m`:`${Math.floor(o/36e5)}h`}function Oc(t){if(t==="error")return e.errorBg}function ra(t,n){switch(t){case "output":return e.white;case "tool":return e.dim;case "result":return e.dim;case "file":return e.gray;case "error":return e.red;case "lifecycle":return e.dim;case "system":return e.dim;default:return n}}function Lc({messages:t,height:n,agents:o,logAgentFilter:r,logTypeFilter:l,selectedIndex:f,scrollOffset:x,agentNameMap:T,agentColorMap:b,agentMsgCounts:y,taskTitleMap:C,width:I}){let $=na(),S=useMemo(()=>t.filter(X=>{if(r.size>0&&X.agentId&&!r.has(X.agentId))return false;let _=X.msgType??"info";return l.has(_)}),[t,r,l]);useMemo(()=>{let X={};for(let _ of t){let le=_.msgType??"info";X[le]=(X[le]??0)+1;}return X},[t]);let V=l.size>=8?"all":l.size===1&&l.has("output")?"text":l.size===1&&l.has("error")?"errors":l.has("tool")&&!l.has("output")?"tools":l.has("lifecycle")&&!l.has("output")?"events":`${l.size} types`,F=r.size>0,P=n-2,j=f===-1?S.slice(-P):S.slice(x,x+P),O=f===-1?-1:f-x,L=Math.min(10,Math.max(6,...o.map(X=>X.name.length))),N=11+L,E=X=>{if(X===0)return true;let _=j[X],le=j[X-1];return _.agentId!==le.agentId?true:_.agentId?_.ts-le.ts>3e4:false},W=Math.max(4,Math.floor((I-20)/Math.max(1,o.length))-1),z=Math.min(W,10);return jsxs(Box,{flexDirection:"column",paddingX:1,children:[jsxs(Box,{gap:0,justifyContent:"space-between",width:I,children:[jsxs(Box,{gap:0,children:[f===-1?jsxs(Box,{gap:0,children:[jsx(Text,{backgroundColor:e.successBg,color:e.green,children:" "}),jsx(Text,{backgroundColor:e.successBg,color:e.green,children:jsx(jt,{color:e.green})}),jsx(Text,{backgroundColor:e.successBg,color:e.green,children:" LIVE "})]}):jsxs(Text,{backgroundColor:e.warnBg,color:e.amber,children:[" \u2191\u2193 ",f+1,"/",S.length," "]}),jsxs(Text,{color:e.dim,children:[" ",S.length," events"]}),V!=="all"&&jsxs(Text,{color:e.amber,children:[" f:",V]}),F&&jsxs(Text,{color:e.cyan,children:[" ",r.size,"/",o.length," agents"]})]}),jsxs(Box,{gap:0,children:[jsx(Text,{color:e.amber,bold:true,children:"a"}),jsx(Text,{color:e.dim,children:" filter "}),jsx(Text,{color:e.amber,bold:true,children:"f"}),jsx(Text,{color:e.dim,children:" type "}),jsx(Text,{color:e.amber,bold:true,children:"F"}),jsx(Text,{color:e.dim,children:" cycle"})]})]}),jsx(Box,{gap:0,children:o.map(X=>{let _=b.get(X.id)??Xr[0],le=r.size===0||r.has(X.id),Ee=X.name.length>z?X.name.slice(0,z-1)+"\u2026":X.name;return jsxs(Text,{color:le?_:e.ghost,bold:le,children:[" ",Ee]},X.id)})}),j.length===0?jsxs(Box,{flexDirection:"column",paddingX:2,paddingTop:1,children:[jsx(Text,{color:e.dim,children:t.length===0?" \u256D\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256E":"No events for current filter."}),t.length===0&&jsxs(Fragment,{children:[jsx(Text,{color:e.dim,children:" \u2502 \u2502"}),jsxs(Text,{color:e.dim,children:[" \u2502 ",jsx(Text,{color:e.ghost,children:"\u25C7"}),jsx(Text,{color:e.gray,children:" Waiting for activity "}),"\u2502"]}),jsxs(Text,{color:e.dim,children:[" \u2502 ",jsx(Text,{color:e.ghost,children:"\u2502"}),jsx(Text,{color:e.dim,children:" Run tasks or start "}),"\u2502"]}),jsxs(Text,{color:e.dim,children:[" \u2502 ",jsx(Text,{color:e.ghost,children:"\u2502"}),jsx(Text,{color:e.dim,children:" the orchestrator "}),"\u2502"]}),jsxs(Text,{color:e.dim,children:[" \u2502 ",jsx(Text,{color:e.ghost,children:"\u25C7"}),jsx(Text,{color:e.dim,children:" "}),"\u2502"]}),jsx(Text,{color:e.dim,children:" \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256F"})]})]}):j.map((X,_)=>{let le=_===O,Ee=X.msgType??"info",Ft=or[Ee]??"\u2502",dt=X.agentId?T.get(X.agentId)??X.agentId.slice(0,8):void 0,Ae=X.agentId?b.get(X.agentId):void 0,Ke=E(_),pt=(_>0?j[_-1]:void 0)?.agentId===X.agentId&&!!X.agentId,De=!pt&&!!dt,Ye=pt&&!!dt,gt=ra(Ee,X.color),Ze=le?e.infoBg:Ee==="error"?e.errorBg:void 0,rn=X.taskId?C.get(X.taskId):void 0,Ce=oa(X.ts,$),ht=rn&&I>80?`#${rn.slice(0,20)}`:"",xt=ht?ht.length+3:0,qt=Math.max(10,I-2-N-xt),mt=rt(X.text,qt);return jsxs(Box,{backgroundColor:Ze,children:[jsx(Text,{color:Ae??e.ghost,children:Ke&&De?"\u250C":Ye?"\u2502":" "}),jsx(Text,{color:le?e.amber:void 0,children:le?"\u25B8":" "}),jsx(Box,{width:5,children:jsx(Text,{color:Ce==="now"?e.green:le?e.silver:e.ghost,children:Ce.padStart(4)})}),jsx(Box,{width:L+1,children:De?jsxs(Text,{color:Ae,bold:true,children:[" ",dt.slice(0,L).padEnd(L)]}):Ye?jsxs(Text,{color:Ae??e.ghost,children:[" ","\xB7".padEnd(L)]}):jsxs(Text,{color:e.ghost,children:[" "," ".padEnd(L)]})}),jsxs(Text,{color:Ee==="error"?e.red:Ae??e.dim,children:[" ",Ft," "]}),jsx(Text,{color:le?e.white:gt,bold:le||Ee==="lifecycle",children:mt}),ht&&jsxs(Text,{color:e.ghost,children:[" ",jsx(Text,{color:e.dim,backgroundColor:e.void,children:` ${ht} `})]})]},_)})]})}function Pc({messages:t,height:n,width:o,agents:r,agentNameMap:l,agentColorMap:f}){let x=na(),T=t.slice(-n),b=Math.max(10,o-2-17),y=Math.max(0,n-T.length),C=0,I=[];for(let $=0;$<T.length;$++)$>0&&T[$].agentId!==T[$-1].agentId&&C++,I.push(C);return jsxs(Box,{flexDirection:"column",paddingX:1,children:[y>0&&jsx(Box,{height:y}),T.map(($,S)=>{let H=$.agentId?l.get($.agentId)??$.agentId.slice(0,8):void 0,V=$.agentId?f.get($.agentId):void 0,F=$.msgType??"info",P=or[F]??"\u2502",j=ra(F,$.color),L=(S>0?T[S-1]:void 0)?.agentId===$.agentId&&!!$.agentId,N=(I[S]&1)===1,E=Oc(F)??(N?"#1a1a1a":void 0),W=oa($.ts,x),z=rt($.text,b);return jsxs(Box,{backgroundColor:E,children:[jsx(Text,{color:V??e.ghost,children:!L&&H?"\u258D":L?"\u258F":" "}),jsx(Box,{width:5,children:jsx(Text,{color:L?e.ghost:W==="now"?e.green:e.dim,children:L?" ":W.padStart(4)})}),jsx(Box,{width:9,children:H&&!L?jsxs(Text,{color:V,bold:true,children:[" ",H.slice(0,8)]}):jsx(Text,{color:e.ghost,children:vc})}),jsxs(Text,{color:F==="error"?e.red:L?e.ghost:V??e.dim,children:[P," "]}),jsx(Text,{color:j,children:z})]},S)})]})}function Nc({message:t,height:n,width:o,agents:r,agentNameMap:l,agentColorMap:f,taskTitleMap:x}){let T=t.detail??t.text,b=t.msgType??"info",y=t.agentId?l.get(t.agentId)??t.agentId.slice(0,8):void 0,C=t.agentId?f.get(t.agentId):e.dim,I=t.taskId?x.get(t.taskId):void 0,$,S=false;try{let P=JSON.parse(T);$=JSON.stringify(P,null,2),S=!0;}catch{$=T;}let H=Math.max(4,o-6),V=Math.max(1,n-4),F=$.split(`
15
+ `).slice(0,V);return jsxs(Box,{flexDirection:"column",paddingX:1,children:[jsx(Box,{children:jsxs(Text,{color:e.ghost,children:["\u256D",be(H+2),"\u256E"]})}),jsxs(Box,{children:[jsx(Text,{color:e.ghost,children:"\u2502 "}),jsx(Text,{color:e.dim,children:t.time}),jsx(Text,{color:e.ghost,children:" \u2502 "}),y&&jsx(Text,{color:C,bold:true,children:y}),y&&jsx(Text,{color:e.ghost,children:" \u2502 "}),jsxs(Text,{color:or[b]?b==="error"?e.red:e.dim:e.dim,children:[or[b]??"\u2502"," ",b]}),I&&jsxs(Fragment,{children:[jsx(Text,{color:e.ghost,children:" \u2502 "}),jsxs(Text,{color:e.dim,children:["#",I.slice(0,30)]})]})]}),jsxs(Box,{children:[jsx(Text,{color:e.ghost,children:"\u2502 "}),jsx(Text,{color:t.color,bold:true,wrap:"truncate",children:t.text.slice(0,H)})]}),jsx(Box,{children:jsxs(Text,{color:e.ghost,children:["\u251C",be(H+2),"\u2524"]})}),F.map((P,j)=>jsxs(Box,{children:[jsx(Text,{color:e.ghost,children:"\u2502 "}),S&&jsxs(Text,{color:e.ghost,children:[String(j+1).padStart(3)," "]}),jsx(Text,{wrap:"truncate",color:S&&P.includes('"')?e.cyan:S&&/^\s*[}\]]/.test(P)?e.ghost:P.startsWith("error")||P.startsWith("Error")?e.red:e.silver,children:P.slice(0,S?H-4:H)})]},j)),jsx(Box,{children:jsxs(Text,{color:e.ghost,children:["\u2570",be(H+2),"\u256F"]})})]})}function Jo({label:t,width:n,suffix:o,suffixLen:r=0}){let l=` ${t} `,f=3,x=f+l.length+2;if(!o){let y=Math.max(0,n-x);return jsxs(Box,{paddingX:1,children:[jsx(Text,{color:e.ghost,children:He(f)}),jsx(Text,{backgroundColor:"#1a1a22",color:e.dim,bold:true,children:l}),jsx(Text,{color:e.ghost,children:He(y)})]})}let T=2,b=Math.max(0,n-x-T-r);return jsxs(Box,{paddingX:1,children:[jsx(Text,{color:e.ghost,children:He(f)}),jsx(Text,{backgroundColor:"#1a1a22",color:e.dim,bold:true,children:l}),jsx(Text,{color:e.ghost,children:He(T)}),o,jsx(Text,{color:e.ghost,children:He(b)})]})}function Dc({task:t,width:n,resizeHint:o}){let r=" DETAIL ",l=o?` ${o} `:"",f=n-r.length-l.length-10,x=t.title.length>f?t.title.slice(0,f-3)+"...":t.title,T=Math.max(0,n-3-r.length-x.length-l.length-4);return jsxs(Box,{paddingX:1,children:[jsx(Text,{color:e.ghost,children:He(3)}),jsx(Text,{backgroundColor:"#2d1f0a",color:e.amber,bold:true,children:r}),jsxs(Text,{color:e.ghost,children:[Ro," "]}),jsx(Text,{color:e.white,bold:true,children:x}),jsxs(Text,{color:e.ghost,children:[" ",He(Math.max(0,T))]}),l?jsx(Text,{color:e.dim,children:l}):null]})}function Fc({agent:t,width:n,resizeHint:o}){let r=" AGENT ",l=o?` ${o} `:"",f=n-r.length-l.length-10,x=t.name.length>f?t.name.slice(0,f-3)+"...":t.name,T=Math.max(0,n-3-r.length-x.length-l.length-4);return jsxs(Box,{paddingX:1,children:[jsx(Text,{color:e.ghost,children:He(3)}),jsx(Text,{backgroundColor:"#0f2d1f",color:e.green,bold:true,children:r}),jsxs(Text,{color:e.ghost,children:[Ro," "]}),jsx(Text,{color:e.green,bold:true,children:x}),jsxs(Text,{color:e.ghost,children:[" ",He(Math.max(0,T))]}),l?jsx(Text,{color:e.dim,children:l}):null]})}function Gc({agent:t,height:n$1,state:o,taskTitleMap:r,teamName:l}){let f=Wc[t.status]??e.dim;Object.values(o.running).find(y=>y.agent_id===t.id);let T=t.current_task?r.get(t.current_task):void 0,b=24;return jsxs(Box,{flexDirection:"column",paddingX:2,children:[jsxs(Box,{children:[jsxs(Box,{width:b,children:[jsx(Text,{color:e.dim,children:" status "}),jsx(Text,{color:f,children:t.status})]}),jsxs(Box,{children:[jsx(Text,{color:e.dim,children:" adapter "}),jsx(Text,{color:e.cyan,children:t.adapter})]})]}),jsxs(Box,{children:[jsxs(Box,{width:b,children:[jsx(Text,{color:e.dim,children:" model "}),jsx(Text,{children:t.config.model??"\u2014"})]}),jsxs(Box,{children:[jsx(Text,{color:e.dim,children:" task "}),jsx(Text,{color:T?e.white:e.dim,children:T??"\u2014"})]})]}),jsxs(Box,{children:[jsxs(Box,{width:b,children:[jsx(Text,{color:e.dim,children:" runs "}),jsx(Text,{children:t.stats.total_runs}),jsx(Text,{color:e.dim,children:" ("}),jsx(Text,{color:e.green,children:t.stats.tasks_completed}),jsx(Text,{color:e.dim,children:"/"}),jsx(Text,{color:t.stats.tasks_failed>0?e.red:e.dim,children:t.stats.tasks_failed}),jsx(Text,{color:e.dim,children:")"})]}),jsxs(Box,{children:[jsx(Text,{color:e.dim,children:" team "}),jsx(Text,{color:l?e.amber:e.dim,children:l??"\u2014"})]})]}),t.autonomous&&jsx(Box,{children:jsxs(Box,{width:b,children:[jsx(Text,{color:e.dim,children:" auto "}),jsxs(Text,{color:e.cyan,children:[pn," ON"]})]})}),t.config.skills&&t.config.skills.length>0&&jsxs(Box,{children:[jsx(Text,{color:e.dim,children:" skills "}),jsx(Text,{color:e.cyan,wrap:"truncate",children:rt(t.config.skills.join(", "),500)})]}),t.last_error&&(()=>{let y=t.last_error.kind,C=n[y],I=!C||y==="unknown",$=t.last_error.timestamp,S=$?g($)+" ago":"";return jsxs(Fragment,{children:[jsx(Text,{children:" "}),jsxs(Box,{flexDirection:"column",borderStyle:"single",borderColor:e.red,paddingX:1,children:[jsxs(Text,{color:e.red,bold:true,children:["\u26A0"," \u041E\u0448\u0438\u0431\u043A\u0430"]}),C&&jsx(Text,{color:e.white,children:C.message}),C&&jsx(Text,{color:e.cyan,children:C.fix}),C?.doctorHint&&jsx(Text,{color:e.yellow,children:"\u0414\u0438\u0430\u0433\u043D\u043E\u0441\u0442\u0438\u043A\u0430: orch doctor"}),I&&t.last_error.message&&jsx(Text,{color:e.dim,children:rt(t.last_error.message,120)}),S&&jsx(Text,{color:e.dim,children:S})]})]})})(),jsx(Text,{children:" "}),t.role?t.role.split(`
16
+ `).slice(0,Math.max(1,n$1-(t.last_error?10:4))).map((y,C)=>jsxs(Text,{color:e.silver,wrap:"truncate",children:[" ",rt(y,500)]},C)):jsx(Text,{color:e.dim,children:" No role description."})]})}var Wc={idle:e.dim,running:e.green,error:e.red,disabled:e.ghost},zc="\u2588";function Vc({mode:t,width:n}){let r=` ${t==="command"?"COMMAND":"NEW TASK"} `,l=Math.max(0,n-3-r.length-2);return jsxs(Box,{paddingX:1,children:[jsx(Text,{color:e.ghost,children:He(3)}),jsx(Text,{backgroundColor:"#2d1f0a",color:e.amber,bold:true,children:r}),jsx(Text,{color:e.ghost,children:He(l)})]})}function Hc({mode:t,value:n,width:o}){let r=t==="command"?"/":"\u25B8",l=Math.max(10,o-8),f=n.length>l?n.slice(-l):n;return jsxs(Box,{paddingX:2,children:[jsxs(Text,{color:e.amber,children:[r," "]}),jsx(Text,{color:e.white,children:f}),jsx(Text,{color:e.amber,children:zc})]})}function sa(t,n){if(!n||typeof n!="object")return "";let o=n;if(o.file_path&&typeof o.file_path=="string")return o.file_path.split("/").slice(-2).join("/");if(o.command&&typeof o.command=="string")return o.command.slice(0,60);if(o.pattern&&typeof o.pattern=="string")return `"${o.pattern.slice(0,40)}"`;if(o.glob&&typeof o.glob=="string")return o.glob.slice(0,40);let r=JSON.stringify(o);return r.length>80?r.slice(0,77)+"...":r}function Qo(t,n=200){if(typeof t=="string")return t.slice(0,n);if(!Array.isArray(t))return null;let o=[],r=0;for(let l of t){if(r>=n)break;if(l?.type==="text"&&typeof l.text=="string"){let f=l.text.split(`
17
+ `).find(x=>x.trim().length>0)??"";o.push(f.slice(0,n-r)),r+=f.length;}else if(l?.type==="tool_use"){let f=sa(l.name??"tool",l.input),x=`\u2699 ${l.name??"tool"}(${f})`;o.push(x),r+=x.length;}else if(l?.type==="tool_result")o.push("\u2190 (result)"),r+=10;else if(l?.type==="thinking"&&typeof l.thinking=="string"){let f=l.thinking.slice(0,60).split(`
18
+ `)[0]??"";o.push(`\u{1F4AD} ${f}`),r+=f.length+3;}}return o.length>0?o.join(" "):null}function Ji(t){if(typeof t=="string"){let o=t.split(`
19
+ `).length,r=t.split(`
20
+ `).find(l=>l.trim().length>0)??"";return o>3?`${r.slice(0,80)}... (${o} lines)`:r.slice(0,120)}if(!Array.isArray(t))return "(result)";let n=[];for(let o of t)if(o?.type==="tool_result"){o.tool_use_id?o.tool_use_id.slice(0,8):"";let l=o.is_error,f=typeof o.content=="string"?o.content:"",x=f.split(`
21
+ `).length;l?n.push(`\u2715 error: ${f.slice(0,60)}`):x>3?n.push(`\u2713 ${x} lines`):n.push(`\u2713 ${f.slice(0,80)}`);}else o?.type==="text"&&typeof o.text=="string"&&n.push(o.text.split(`
22
+ `)[0]?.slice(0,80)??"");return n.join(" ")||"(result)"}function ia(t){let n=()=>t.length>nr?t.slice(0,nr)+"\u2026":t;if(ea.test(t.trim()))return {summary:t.trim(),detail:n()};try{let o=JSON.parse(t);if(o.type==="message"&&o.role==="assistant"){let r=Qo(o.content);return r?{summary:r.slice(0,200),detail:n()}:{summary:null,detail:""}}if(o.type==="assistant"||o.role==="assistant"){let r=o.message?.content??o.content,l=Qo(r);return l?{summary:l.slice(0,200),detail:n()}:{summary:null,detail:""}}if(o.type==="user"||o.role==="user"){let r=o.message?.content??o.content;return {summary:`\u2190 ${Ji(r).slice(0,180)}`,detail:n()}}if(o.type==="tool_use"||typeof o.name=="string"&&"input"in o){let r=o.name??"tool",l=sa(r,o.input);return {summary:`\u2699 ${r}(${l})`,detail:n()}}if(o.type==="tool_result")return {summary:`\u2190 ${Ji(o.content).slice(0,180)}`,detail:n()};if(o.type==="result"){let r=typeof o.result=="string"?o.result:null;return {summary:r?`\u2713 ${r.slice(0,180)}`:"\u2713 Agent finished",detail:n()}}if(o.type==="rate_limit_event")return {summary:`\u23F3 Rate limited (${o.rate_limit_info?.rateLimitType??"unknown"})`,detail:n()};if(o.subtype){if(o.message){let r=o.message.content??o.message,l=Qo(r);if(l)return {summary:l.slice(0,200),detail:n()}}return {summary:`[${o.subtype}]`,detail:n()}}if(o.content){let r=Qo(o.content);if(r)return {summary:r.slice(0,200),detail:n()}}return o.type?{summary:`[${o.type}]`,detail:n()}:{summary:t.slice(0,150),detail:n()}}catch{return {summary:jc(t),detail:n()}}}function jc(t){let n=t.match(/"subtype"\s*:\s*"([^"]+)"/);if(n)return `[${n[1]}]`;let o=t.match(/"type"\s*:\s*"([^"]+)"/),r=t.match(/"role"\s*:\s*"([^"]+)"/),l=o?.[1],f=r?.[1];if(!l&&!f)return t.slice(0,200);if(l==="assistant"||l==="message"||f==="assistant"){let x=t.match(/"text"\s*:\s*"((?:[^"\\]|\\.)*)"/);if(x)try{return JSON.parse(`"${x[1]}"`).slice(0,200)}catch{}return "\u{1F4AC} (assistant)"}if(l==="user"||l==="tool_result"||f==="user")return "\u2190 (tool result)";if(l==="tool_use")return `\u2699 ${t.match(/"name"\s*:\s*"([^"]+)"/)?.[1]??"tool"}()`;if(l==="result"){let x=t.match(/"result"\s*:\s*"((?:[^"\\]|\\.)*)"/);if(x)try{return `\u2713 ${JSON.parse(`"${x[1]}"`).slice(0,180)}`}catch{}return "\u2713 Agent finished"}return l==="rate_limit_event"?"\u23F3 Rate limited":`[${l??f}]`}function Uc(t,n,o,r){let l=f=>r?.get(f);switch(t.type){case "agent:started":n("Started task",e.green,{agentId:t.agentId,taskId:t.taskId,msgType:"lifecycle"});break;case "agent:output":{let{summary:f,detail:x}=ia(t.data);if(f){let T=ta(f);n(f,T.color,{agentId:t.agentId,taskId:l(t.runId),detail:x,msgType:T.msgType});}break}case "agent:file_changed":n(`${t.path}`,e.purple,{agentId:t.agentId,taskId:l(t.runId),msgType:"file"});break;case "agent:completed":n(t.success?"Completed successfully":"Failed",t.success?e.green:e.red,{agentId:t.agentId,taskId:l(t.runId),msgType:"lifecycle"});break;case "agent:error":n(`${t.error.slice(0,150)}`,e.red,{agentId:t.agentId,taskId:l(t.runId),detail:t.error,msgType:"error"});break;case "task:status_changed":n(`${t.from} \u2192 ${t.to}`,e.cyan,{taskId:t.taskId,msgType:"system"});break;case "task:assigned":n(`Assigned \u2192 ${t.agentId}`,e.cyan,{taskId:t.taskId,msgType:"system"});break;case "task:created":n(`Created: ${t.task.title}`,e.amber,{taskId:t.task.id,msgType:"system"});break;case "run:retry":n(`Retry #${t.attempt} (${Math.round(t.delay_ms/1e3)}s delay)`,e.yellow,{agentId:o?.get(t.runId),taskId:l(t.runId),msgType:"lifecycle"});break;case "orchestrator:tick":(t.running>0||t.queued>0)&&n(`${t.running} running \xB7 ${t.queued} queued`,e.ghost,{msgType:"system"});break;case "orchestrator:stall_detected":n("Stall detected",e.yellow,{agentId:o?.get(t.runId),taskId:l(t.runId),msgType:"error"});break;case "task:cascade_failed":n(`Cascade failed (dep: ${t.failedDependencyId})`,e.red,{taskId:t.taskId,detail:t.reason,msgType:"error"});break}}export{cg as App,lg as _resetPendingDeletionSeq};
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ import {j,o,l,q,d,h,m}from'./chunk-64WUDYEM.js';function y(w,n){let l$1=w.command("agent").description("Manage agents");l$1.command("add <name>").description("Add a new agent").requiredOption("--adapter <adapter>","Adapter type: claude, opencode, codex, cursor, shell").option("--role <role>","Agent role description").option("--command <cmd>","Shell command (for shell adapter)").option("--model <model>","Model name (for AI adapters)").option("--effort <level>","Reasoning effort: low, medium, high").option("--max-turns <n>","Max turns per run").option("--timeout <ms>","Timeout in ms").option("--approval-policy <policy>","suggest|auto|manual").option("--workspace-mode <mode>","shared|worktree|isolated").option("--skills <skills>","Comma-separated list of agent skills").option("-e, --edit","Open $EDITOR to write the role description").action(async(t,e)=>{let a=e.role;if(e.edit){let{openInEditor:o,agentToEditorContent:c,agentFromEditorContent:p}=await import('./editor-7IFRWVTL.js'),r=c({name:t,model:e.model,role:a}),s=await o(r),m=p(s);m.name&&(t=m.name),m.model&&(e.model=m.model),m.role&&(a=m.role);}let i=await n.agentService.create({name:t,adapter:e.adapter,role:a,command:e.command,model:e.model,effort:e.effort,max_turns:e.maxTurns?parseInt(e.maxTurns,10):void 0,timeout_ms:e.timeout?parseInt(e.timeout,10):void 0,approval_policy:e.approvalPolicy,workspace_mode:e.workspaceMode,skills:e.skills?e.skills.split(",").map(o=>o.trim()):void 0});n.context.json?console.log(JSON.stringify(i,null,2)):n.context.quiet?console.log(i.id):j(`Added agent ${o(i.name)} (${i.adapter}) \u2192 ${i.id}`);}),l$1.command("shop").description("Browse and install pre-built agent templates").option("--list","Print all templates (non-interactive)").action(async t=>{let{AGENT_SHOP_TEMPLATES:e}=await import('./agent-shop-XWVUC3MK.js');if(t.list||!process.stdout.isTTY){l(["Key","Name","Tier","Skills"],e.map(s=>[s.key,s.name,s.tier,s.skills.slice(0,2).join(", ")]));return}let{pickFromShop:a}=await import('./shop-picker-2HA2CDKS.js'),i=await a(e);if(!i){console.log(" Cancelled.");return}let{templateToAgentInput:o$1}=await import('./agent-factory-HJOS7FW3.js'),c=n.config.defaults.agent.adapter,p=o$1(i,c),r=await n.agentService.create(p);j(`Added agent ${o(r.name)} (${r.adapter}) \u2192 ${r.id}`);}),l$1.command("list").description("List all agents").action(async()=>{let t=await n.agentService.list();if(n.context.json){console.log(JSON.stringify(t,null,2));return}if(n.context.quiet){t.forEach(o=>console.log(o.id));return}if(t.length===0){console.log(`
3
+ No agents. Add one: ${q("orch agent add <name> --adapter <adapter>")}
4
+ `);return}let e=["STATUS","AGENT","ADAPTER","TASK","TIME"],a=t.map(o$1=>[`${d(o$1.status)} ${o$1.status}`,o(o$1.name),o$1.adapter,o$1.current_task??q("\u2014"),q("\u2014")]);console.log(),l(e,a);let i=t.filter(o=>o.status==="running").length;console.log(`
5
+ ${t.length} agents \xB7 ${i} running \xB7 ${h(t.reduce((o,c)=>o+(c.stats.tokens_used??0),0))} tokens total
6
+ `);}),l$1.command("status <id>").description("Show agent details").action(async t=>{let e=await n.agentService.get(t);if(n.context.json){console.log(JSON.stringify(e,null,2));return}console.log(`
7
+ ${e.name}`),console.log(` ${"\u2550".repeat(42)}`),console.log();let a=[["Adapter",`${e.adapter}${e.config.model?` (${e.config.model})`:""}`],["Status",`${d(e.status)} ${e.status}`],["Effort",e.config.effort??"default"],["Policy",e.config.approval_policy??"auto"]];e.current_task&&a.push(["Task",e.current_task]),e.role&&a.push(["Role",e.role]),e.config.skills?.length&&a.push(["Skills",e.config.skills.join(", ")]),m(a),console.log(`
8
+ Stats
9
+ ${"\u2500".repeat(42)}`),m([["Tasks completed",String(e.stats.tasks_completed)],["Tasks failed",String(e.stats.tasks_failed)],["Total runs",String(e.stats.total_runs)],["Tokens used",h(e.stats.tokens_used??0)]]),console.log();}),l$1.command("edit <id>").description("Edit an agent in $EDITOR").action(async t=>{let e=await n.agentService.get(t),{openInEditor:a,agentToEditorContent:i,agentFromEditorContent:o$1}=await import('./editor-7IFRWVTL.js'),c=i({name:e.name,model:e.config.model,role:e.role}),p=await a(c),r=o$1(p),s=await n.agentService.update(t,{name:r.name,role:r.role,model:r.model});n.context.json?console.log(JSON.stringify(s,null,2)):n.context.quiet?console.log(s.id):j(`Updated agent ${o(s.name)} (${s.id})`);}),l$1.command("remove <id>").description("Remove an agent").action(async t=>{await n.agentService.remove(t),j(`Removed agent ${t}`);}),l$1.command("disable <id>").description("Disable an agent").action(async t=>{await n.agentService.disable(t),j(`Disabled agent ${t}`);}),l$1.command("enable <id>").description("Enable an agent").action(async t=>{await n.agentService.enable(t),j(`Enabled agent ${t}`);}),l$1.command("autonomous <id>").description("Toggle autonomous mode for an agent").option("--on","Enable autonomous mode").option("--off","Disable autonomous mode").action(async(t,e)=>{let a=await n.agentService.get(t),i=e.on?true:e.off?false:!a.autonomous,o$1=await n.agentService.setAutonomous(t,i);n.context.json?console.log(JSON.stringify(o$1,null,2)):n.context.quiet?console.log(o$1.id):j(`Autonomous mode ${i?"enabled":"disabled"} for agent ${o(o$1.name)} (${o$1.id})`);});}export{y as registerAgentCommand};
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export{a as isMcpSkill,b as templateToAgentInput}from'./chunk-EWRVHOUA.js';import'./chunk-XMKCAUEH.js';
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- export{a as AGENT_SHOP_TEMPLATES,b as getShopTemplateByKey}from'./chunk-HWEMBO36.js';
2
+ export{a as AGENT_SHOP_TEMPLATES,b as getShopTemplateByKey}from'./chunk-3YGXRXS7.js';
@@ -18,7 +18,7 @@ var n=`Backend engineer \u2014 builds APIs, services, database layers, and serve
18
18
  - Every public function must have at least one test.
19
19
  - Never store secrets or credentials in code \u2014 use environment variables.
20
20
  - Keep functions under 40 lines; extract helpers when complexity grows.
21
- - If the task is ambiguous, set context with your questions before coding.`,a=`Frontend engineer \u2014 builds React UI components, pages, styles, and client-side interactions.
21
+ - If the task is ambiguous, set context with your questions before coding.`,i=`Frontend engineer \u2014 builds React UI components, pages, styles, and client-side interactions.
22
22
 
23
23
  ## WORKFLOW
24
24
 
@@ -37,7 +37,7 @@ var n=`Backend engineer \u2014 builds APIs, services, database layers, and serve
37
37
  - Use semantic HTML elements (nav, main, section, button) \u2014 not div soup.
38
38
  - Keep components under 150 lines; extract sub-components when they grow.
39
39
  - Never hardcode colors or spacing \u2014 use design tokens / theme variables.
40
- - Ensure keyboard navigation and ARIA labels for interactive elements.`,i=`QA engineer \u2014 writes tests, analyzes coverage, and ensures code quality across the project.
40
+ - Ensure keyboard navigation and ARIA labels for interactive elements.`,a=`QA engineer \u2014 writes tests, analyzes coverage, and ensures code quality across the project.
41
41
 
42
42
  Uses the \`qa\` library skill for full QA methodology including browser testing, health scoring, bug triage, and fix loops. For report-only mode without auto-fixes, add \`qa-only\` skill instead.
43
43
 
@@ -334,4 +334,4 @@ Uses \`review\` for self-review of diffs before transitioning, and \`design-revi
334
334
  - Keep frontend and backend changes in the same branch for atomic features.
335
335
  - Follow each layer's conventions independently \u2014 backend patterns for backend, frontend patterns for frontend.
336
336
  - Handle every error state in the UI \u2014 users should never see a blank screen.
337
- - If a task is too large to deliver end-to-end, split it and communicate the dependency.`,y=[{key:"backend-dev",name:"Backend Developer",description:"APIs, databases, backend services",adapter:"claude",model:"claude-sonnet-4-6",approval_policy:"auto",skills:["review","careful","feature-dev:feature-dev","feature-dev:code-explorer"],role:n},{key:"frontend-dev",name:"Frontend Developer",description:"React, UI components, CSS, responsive design",adapter:"claude",model:"claude-sonnet-4-6",approval_policy:"auto",skills:["design-review","review","feature-dev:feature-dev","feature-dev:code-explorer"],role:a},{key:"qa-engineer",name:"QA Engineer",description:"Test writing, coverage analysis, quality assurance, browser testing",adapter:"claude",model:"claude-sonnet-4-6",approval_policy:"auto",skills:["qa","testing-suite:generate-tests","testing-suite:test-coverage"],role:i},{key:"code-reviewer",name:"Code Reviewer",description:"PR review with auto-fix, adversarial review, security checks",adapter:"claude",model:"claude-opus-4-6",approval_policy:"suggest",skills:["review","careful","feature-dev:code-reviewer","feature-dev:code-explorer"],role:r},{key:"architect",name:"Architect",description:"System design, architecture decisions, tech leadership",adapter:"claude",model:"claude-opus-4-6",approval_policy:"suggest",skills:["plan-eng-review","office-hours","feature-dev:code-architect","feature-dev:code-explorer"],role:o},{key:"devops-engineer",name:"DevOps Engineer",description:"CI/CD, infrastructure, deployment, monitoring",adapter:"claude",model:"claude-sonnet-4-6",approval_policy:"auto",skills:["ship","canary","devops-automation:cloud-architect"],role:s},{key:"bug-hunter",name:"Bug Hunter",description:"Systematic debugging, root cause analysis, minimal fixes",adapter:"claude",model:"claude-sonnet-4-6",approval_policy:"auto",skills:["investigate","careful","feature-dev:feature-dev","feature-dev:code-explorer"],role:c},{key:"tech-writer",name:"Technical Writer",description:"Documentation, READMEs, API docs, release notes",adapter:"claude",model:"claude-sonnet-4-6",approval_policy:"auto",skills:["document-release","review","feature-dev:code-explorer"],role:d},{key:"marketer",name:"Marketer",description:"Marketing strategy, positioning, copy, campaigns",adapter:"claude",model:"claude-sonnet-4-6",approval_policy:"auto",skills:["office-hours"],role:l},{key:"content-creator",name:"Content Creator",description:"Blog posts, articles, social media content",adapter:"claude",model:"claude-sonnet-4-6",approval_policy:"auto",skills:["office-hours"],role:p},{key:"growth-hacker",name:"Growth Hacker",description:"Growth experiments, analytics, user acquisition",adapter:"claude",model:"claude-sonnet-4-6",approval_policy:"auto",skills:["office-hours","feature-dev:feature-dev"],role:u},{key:"security-auditor",name:"Security Auditor",description:"Security scanning, vulnerability analysis, OWASP, guardrails",adapter:"claude",model:"claude-opus-4-6",approval_policy:"suggest",skills:["review","careful","guard","feature-dev:code-reviewer"],role:h},{key:"performance-engineer",name:"Performance Engineer",description:"Optimization, profiling, benchmarks, load testing",adapter:"claude",model:"claude-sonnet-4-6",approval_policy:"auto",skills:["benchmark","investigate","feature-dev:feature-dev","feature-dev:code-explorer"],role:m},{key:"data-engineer",name:"Data Engineer",description:"Data pipelines, ETL, analytics, SQL",adapter:"claude",model:"claude-sonnet-4-6",approval_policy:"auto",skills:["careful","feature-dev:feature-dev","feature-dev:code-explorer"],role:g},{key:"fullstack-dev",name:"Full-Stack Developer",description:"End-to-end development, frontend and backend",adapter:"claude",model:"claude-sonnet-4-6",approval_policy:"auto",skills:["review","design-review","feature-dev:feature-dev","feature-dev:code-explorer"],role:f}];function v(e){return y.find(t=>t.key===e)}export{y as a,v as b};
337
+ - If a task is too large to deliver end-to-end, split it and communicate the dependency.`,y=[{key:"backend-dev",name:"Backend Developer",description:"APIs, databases, backend services",tier:"balanced",approval_policy:"auto",skills:["review","careful","feature-dev:feature-dev","feature-dev:code-explorer"],role:n},{key:"frontend-dev",name:"Frontend Developer",description:"React, UI components, CSS, responsive design",tier:"balanced",approval_policy:"auto",skills:["design-review","review","feature-dev:feature-dev","feature-dev:code-explorer"],role:i},{key:"qa-engineer",name:"QA Engineer",description:"Test writing, coverage analysis, quality assurance, browser testing",tier:"balanced",approval_policy:"auto",skills:["qa","testing-suite:generate-tests","testing-suite:test-coverage"],role:a},{key:"code-reviewer",name:"Code Reviewer",description:"PR review with auto-fix, adversarial review, security checks",tier:"capable",approval_policy:"suggest",skills:["review","careful","feature-dev:code-reviewer","feature-dev:code-explorer"],role:r},{key:"architect",name:"Architect",description:"System design, architecture decisions, tech leadership",tier:"capable",approval_policy:"suggest",skills:["plan-eng-review","office-hours","feature-dev:code-architect","feature-dev:code-explorer"],role:o},{key:"devops-engineer",name:"DevOps Engineer",description:"CI/CD, infrastructure, deployment, monitoring",tier:"balanced",approval_policy:"auto",skills:["ship","canary","devops-automation:cloud-architect"],role:s},{key:"bug-hunter",name:"Bug Hunter",description:"Systematic debugging, root cause analysis, minimal fixes",tier:"balanced",approval_policy:"auto",skills:["investigate","careful","feature-dev:feature-dev","feature-dev:code-explorer"],role:c},{key:"tech-writer",name:"Technical Writer",description:"Documentation, READMEs, API docs, release notes",tier:"balanced",approval_policy:"auto",skills:["document-release","review","feature-dev:code-explorer"],role:d},{key:"marketer",name:"Marketer",description:"Marketing strategy, positioning, copy, campaigns",tier:"balanced",approval_policy:"auto",skills:["office-hours"],role:l},{key:"content-creator",name:"Content Creator",description:"Blog posts, articles, social media content",tier:"balanced",approval_policy:"auto",skills:["office-hours"],role:p},{key:"growth-hacker",name:"Growth Hacker",description:"Growth experiments, analytics, user acquisition",tier:"balanced",approval_policy:"auto",skills:["office-hours","feature-dev:feature-dev"],role:u},{key:"security-auditor",name:"Security Auditor",description:"Security scanning, vulnerability analysis, OWASP, guardrails",tier:"capable",approval_policy:"suggest",skills:["review","careful","guard","feature-dev:code-reviewer"],role:h},{key:"performance-engineer",name:"Performance Engineer",description:"Optimization, profiling, benchmarks, load testing",tier:"balanced",approval_policy:"auto",skills:["benchmark","investigate","feature-dev:feature-dev","feature-dev:code-explorer"],role:m},{key:"data-engineer",name:"Data Engineer",description:"Data pipelines, ETL, analytics, SQL",tier:"balanced",approval_policy:"auto",skills:["careful","feature-dev:feature-dev","feature-dev:code-explorer"],role:g},{key:"fullstack-dev",name:"Full-Stack Developer",description:"End-to-end development, frontend and backend",tier:"balanced",approval_policy:"auto",skills:["review","design-review","feature-dev:feature-dev","feature-dev:code-explorer"],role:f}];function v(e){return y.find(t=>t.key===e)}export{y as a,v as b};
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import {k}from'./chunk-ZMLF5HI5.js';import {b}from'./chunk-IKNBPOQL.js';import t from'path';import {accessSync}from'fs';var l=".orchestry",j=/^[A-Za-z0-9._-]+$/,h=class{constructor(r){this.projectRoot=r;}get root(){return t.join(this.projectRoot,l)}get configPath(){return t.join(this.root,"config.yml")}get statePath(){return t.join(this.root,"state.json")}get lockPath(){return t.join(this.root,"orchestry.lock")}get tasksDir(){return t.join(this.root,"tasks")}get agentsDir(){return t.join(this.root,"agents")}get runsDir(){return t.join(this.root,"runs")}get templatesDir(){return t.join(this.root,"templates")}get logsDir(){return t.join(this.root,"logs")}get contextDir(){return t.join(this.root,"context")}contextPath(r){return t.join(this.contextDir,`${s(r)}.json`)}get messagesDir(){return t.join(this.root,"messages")}messagePath(r){return t.join(this.messagesDir,`${s(r)}.json`)}get goalsDir(){return t.join(this.root,"goals")}goalPath(r){return t.join(this.goalsDir,`${s(r)}.yml`)}get teamsDir(){return t.join(this.root,"teams")}get attachmentsDir(){return t.join(this.root,"attachments")}taskAttachmentsDir(r){return t.join(this.attachmentsDir,s(r))}teamPath(r){return t.join(this.teamsDir,`${s(r)}.yml`)}get gitignorePath(){return t.join(this.root,".gitignore")}get workspaceExcludePath(){return t.join(this.root,"workspace-exclude")}taskPath(r){return t.join(this.tasksDir,`${s(r)}.yml`)}agentPath(r){return t.join(this.agentsDir,`${s(r)}.yml`)}runPath(r){return t.join(this.runsDir,`${s(r)}.json`)}runEventsPath(r){return t.join(this.runsDir,`${s(r)}.jsonl`)}defaultTemplatePath(){return t.join(this.templatesDir,"default.md")}async isInitialized(){return k(this.root)}async requireInit(){if(!await this.isInitialized())throw new b}};function s(n){if(!j.test(n))throw new Error(`Invalid identifier: "${n}"`);return n}function f(n,r){let o=t.resolve(n),i=t.resolve(r);if(!o.startsWith(i+t.sep)&&o!==i)throw new Error(`Workspace path "${n}" is outside project root`)}var e=new Map;function P(n=process.cwd()){let r=t.resolve(n),o=e.get(r);if(o!==void 0)return o;let i=r,c=t.parse(i).root;for(;i!==c;){try{return accessSync(t.join(i,".orchestry")),e.set(r,i),i}catch{}i=t.dirname(i);}return e.set(r,r),r}export{l as a,h as b,s as c,f as d,P as e};
2
+ import {k}from'./chunk-ZMLF5HI5.js';import {b}from'./chunk-LRYVT4D4.js';import t from'path';import {accessSync}from'fs';var l=".orchestry",j=/^[A-Za-z0-9._-]+$/,h=class{constructor(r){this.projectRoot=r;}get root(){return t.join(this.projectRoot,l)}get configPath(){return t.join(this.root,"config.yml")}get statePath(){return t.join(this.root,"state.json")}get lockPath(){return t.join(this.root,"orchestry.lock")}get tasksDir(){return t.join(this.root,"tasks")}get agentsDir(){return t.join(this.root,"agents")}get runsDir(){return t.join(this.root,"runs")}get templatesDir(){return t.join(this.root,"templates")}get logsDir(){return t.join(this.root,"logs")}get contextDir(){return t.join(this.root,"context")}contextPath(r){return t.join(this.contextDir,`${s(r)}.json`)}get messagesDir(){return t.join(this.root,"messages")}messagePath(r){return t.join(this.messagesDir,`${s(r)}.json`)}get goalsDir(){return t.join(this.root,"goals")}goalPath(r){return t.join(this.goalsDir,`${s(r)}.yml`)}get teamsDir(){return t.join(this.root,"teams")}get attachmentsDir(){return t.join(this.root,"attachments")}taskAttachmentsDir(r){return t.join(this.attachmentsDir,s(r))}teamPath(r){return t.join(this.teamsDir,`${s(r)}.yml`)}get gitignorePath(){return t.join(this.root,".gitignore")}get workspaceExcludePath(){return t.join(this.root,"workspace-exclude")}taskPath(r){return t.join(this.tasksDir,`${s(r)}.yml`)}agentPath(r){return t.join(this.agentsDir,`${s(r)}.yml`)}runPath(r){return t.join(this.runsDir,`${s(r)}.json`)}runEventsPath(r){return t.join(this.runsDir,`${s(r)}.jsonl`)}defaultTemplatePath(){return t.join(this.templatesDir,"default.md")}async isInitialized(){return k(this.root)}async requireInit(){if(!await this.isInitialized())throw new b}};function s(n){if(!j.test(n))throw new Error(`Invalid identifier: "${n}"`);return n}function f(n,r){let o=t.resolve(n),i=t.resolve(r);if(!o.startsWith(i+t.sep)&&o!==i)throw new Error(`Workspace path "${n}" is outside project root`)}var e=new Map;function P(n=process.cwd()){let r=t.resolve(n),o=e.get(r);if(o!==void 0)return o;let i=r,c=t.parse(i).root;for(;i!==c;){try{return accessSync(t.join(i,".orchestry")),e.set(r,i),i}catch{}i=t.dirname(i);}return e.set(r,r),r}export{l as a,h as b,s as c,f as d,P as e};
@@ -1,5 +1,5 @@
1
1
  import { pathExists } from './chunk-W3J7CURM.js';
2
- import { NotInitializedError } from './chunk-NLQAJ7TW.js';
2
+ import { NotInitializedError } from './chunk-IESAV453.js';
3
3
  import path from 'path';
4
4
  import 'fs';
5
5
 
@@ -112,5 +112,5 @@ function validateWorkspacePath(workspacePath, projectRoot) {
112
112
  }
113
113
 
114
114
  export { Paths, sanitizeId, validateWorkspacePath };
115
- //# sourceMappingURL=chunk-J7ITYXE6.js.map
116
- //# sourceMappingURL=chunk-J7ITYXE6.js.map
115
+ //# sourceMappingURL=chunk-6JQDY3PP.js.map
116
+ //# sourceMappingURL=chunk-6JQDY3PP.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/infrastructure/storage/paths.ts"],"names":[],"mappings":"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","file":"chunk-J7ITYXE6.js","sourcesContent":["/**\n * Path resolution for .orchestry/ directory.\n *\n * All path construction goes through this module.\n * Validates initialization state and sanitizes identifiers.\n */\n\nimport path from 'node:path';\nimport { accessSync } from 'node:fs';\nimport { NotInitializedError } from '../../domain/errors.js';\nimport { pathExists } from './fs-utils.js';\n\nexport const ORCHESTRY_DIR = '.orchestry';\nconst ID_PATTERN = /^[A-Za-z0-9._-]+$/;\n\nexport class Paths {\n constructor(private readonly projectRoot: string) {}\n\n /** Root .orchestry/ directory */\n get root(): string {\n return path.join(this.projectRoot, ORCHESTRY_DIR);\n }\n\n get configPath(): string {\n return path.join(this.root, 'config.yml');\n }\n\n get statePath(): string {\n return path.join(this.root, 'state.json');\n }\n\n get lockPath(): string {\n return path.join(this.root, 'orchestry.lock');\n }\n\n get tasksDir(): string {\n return path.join(this.root, 'tasks');\n }\n\n get agentsDir(): string {\n return path.join(this.root, 'agents');\n }\n\n get runsDir(): string {\n return path.join(this.root, 'runs');\n }\n\n get templatesDir(): string {\n return path.join(this.root, 'templates');\n }\n\n get logsDir(): string {\n return path.join(this.root, 'logs');\n }\n\n get contextDir(): string {\n return path.join(this.root, 'context');\n }\n\n contextPath(key: string): string {\n return path.join(this.contextDir, `${sanitizeId(key)}.json`);\n }\n\n get messagesDir(): string {\n return path.join(this.root, 'messages');\n }\n\n messagePath(id: string): string {\n return path.join(this.messagesDir, `${sanitizeId(id)}.json`);\n }\n\n get goalsDir(): string {\n return path.join(this.root, 'goals');\n }\n\n goalPath(id: string): string {\n return path.join(this.goalsDir, `${sanitizeId(id)}.yml`);\n }\n\n get teamsDir(): string {\n return path.join(this.root, 'teams');\n }\n\n get attachmentsDir(): string {\n return path.join(this.root, 'attachments');\n }\n\n taskAttachmentsDir(taskId: string): string {\n return path.join(this.attachmentsDir, sanitizeId(taskId));\n }\n\n teamPath(id: string): string {\n return path.join(this.teamsDir, `${sanitizeId(id)}.yml`);\n }\n\n get gitignorePath(): string {\n return path.join(this.root, '.gitignore');\n }\n\n get workspaceExcludePath(): string {\n return path.join(this.root, 'workspace-exclude');\n }\n\n taskPath(id: string): string {\n return path.join(this.tasksDir, `${sanitizeId(id)}.yml`);\n }\n\n agentPath(id: string): string {\n return path.join(this.agentsDir, `${sanitizeId(id)}.yml`);\n }\n\n runPath(id: string): string {\n return path.join(this.runsDir, `${sanitizeId(id)}.json`);\n }\n\n runEventsPath(id: string): string {\n return path.join(this.runsDir, `${sanitizeId(id)}.jsonl`);\n }\n\n defaultTemplatePath(): string {\n return path.join(this.templatesDir, 'default.md');\n }\n\n async isInitialized(): Promise<boolean> {\n return pathExists(this.root);\n }\n\n async requireInit(): Promise<void> {\n if (!(await this.isInitialized())) {\n throw new NotInitializedError();\n }\n }\n}\n\n/**\n * Validate an identifier for use in file paths.\n * Only allows [A-Za-z0-9._-] characters.\n * Rejects identifiers containing forbidden characters (path separators, etc.)\n * to prevent path traversal attacks.\n */\nexport function sanitizeId(id: string): string {\n if (!ID_PATTERN.test(id)) {\n throw new Error(`Invalid identifier: \"${id}\"`);\n }\n return id;\n}\n\n/**\n * Validate that a workspace path is within the project root.\n * Prevents path traversal attacks.\n */\nexport function validateWorkspacePath(workspacePath: string, projectRoot: string): void {\n const resolved = path.resolve(workspacePath);\n const root = path.resolve(projectRoot);\n\n if (!resolved.startsWith(root + path.sep) && resolved !== root) {\n throw new Error(`Workspace path \"${workspacePath}\" is outside project root`);\n }\n}\n\n/**\n * Module-level cache for findProjectRoot().\n * Key: resolved startDir, Value: found project root.\n * Avoids repeated accessSync() traversals on every CLI invocation.\n */\nconst projectRootCache = new Map<string, string>();\n\n/**\n * Resolve project root by walking up from cwd looking for .orchestry/.\n * Returns cwd if not found (for init command).\n *\n * Results are cached per startDir to avoid redundant filesystem traversals.\n */\nexport function findProjectRoot(startDir: string = process.cwd()): string {\n const resolvedStart = path.resolve(startDir);\n const cached = projectRootCache.get(resolvedStart);\n if (cached !== undefined) return cached;\n\n let dir = resolvedStart;\n const root = path.parse(dir).root;\n\n while (dir !== root) {\n try {\n accessSync(path.join(dir, '.orchestry'));\n projectRootCache.set(resolvedStart, dir);\n return dir;\n } catch {\n // Not found, go up\n }\n dir = path.dirname(dir);\n }\n\n // Not found — return resolved dir (for init command)\n projectRootCache.set(resolvedStart, resolvedStart);\n return resolvedStart;\n}\n\n/**\n * Clear the findProjectRoot cache.\n * Useful in tests or after `orch init` changes the project structure.\n */\nexport function clearProjectRootCache(): void {\n projectRootCache.clear();\n}\n"]}
1
+ {"version":3,"sources":["../src/infrastructure/storage/paths.ts"],"names":[],"mappings":"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","file":"chunk-6JQDY3PP.js","sourcesContent":["/**\n * Path resolution for .orchestry/ directory.\n *\n * All path construction goes through this module.\n * Validates initialization state and sanitizes identifiers.\n */\n\nimport path from 'node:path';\nimport { accessSync } from 'node:fs';\nimport { NotInitializedError } from '../../domain/errors.js';\nimport { pathExists } from './fs-utils.js';\n\nexport const ORCHESTRY_DIR = '.orchestry';\nconst ID_PATTERN = /^[A-Za-z0-9._-]+$/;\n\nexport class Paths {\n constructor(private readonly projectRoot: string) {}\n\n /** Root .orchestry/ directory */\n get root(): string {\n return path.join(this.projectRoot, ORCHESTRY_DIR);\n }\n\n get configPath(): string {\n return path.join(this.root, 'config.yml');\n }\n\n get statePath(): string {\n return path.join(this.root, 'state.json');\n }\n\n get lockPath(): string {\n return path.join(this.root, 'orchestry.lock');\n }\n\n get tasksDir(): string {\n return path.join(this.root, 'tasks');\n }\n\n get agentsDir(): string {\n return path.join(this.root, 'agents');\n }\n\n get runsDir(): string {\n return path.join(this.root, 'runs');\n }\n\n get templatesDir(): string {\n return path.join(this.root, 'templates');\n }\n\n get logsDir(): string {\n return path.join(this.root, 'logs');\n }\n\n get contextDir(): string {\n return path.join(this.root, 'context');\n }\n\n contextPath(key: string): string {\n return path.join(this.contextDir, `${sanitizeId(key)}.json`);\n }\n\n get messagesDir(): string {\n return path.join(this.root, 'messages');\n }\n\n messagePath(id: string): string {\n return path.join(this.messagesDir, `${sanitizeId(id)}.json`);\n }\n\n get goalsDir(): string {\n return path.join(this.root, 'goals');\n }\n\n goalPath(id: string): string {\n return path.join(this.goalsDir, `${sanitizeId(id)}.yml`);\n }\n\n get teamsDir(): string {\n return path.join(this.root, 'teams');\n }\n\n get attachmentsDir(): string {\n return path.join(this.root, 'attachments');\n }\n\n taskAttachmentsDir(taskId: string): string {\n return path.join(this.attachmentsDir, sanitizeId(taskId));\n }\n\n teamPath(id: string): string {\n return path.join(this.teamsDir, `${sanitizeId(id)}.yml`);\n }\n\n get gitignorePath(): string {\n return path.join(this.root, '.gitignore');\n }\n\n get workspaceExcludePath(): string {\n return path.join(this.root, 'workspace-exclude');\n }\n\n taskPath(id: string): string {\n return path.join(this.tasksDir, `${sanitizeId(id)}.yml`);\n }\n\n agentPath(id: string): string {\n return path.join(this.agentsDir, `${sanitizeId(id)}.yml`);\n }\n\n runPath(id: string): string {\n return path.join(this.runsDir, `${sanitizeId(id)}.json`);\n }\n\n runEventsPath(id: string): string {\n return path.join(this.runsDir, `${sanitizeId(id)}.jsonl`);\n }\n\n defaultTemplatePath(): string {\n return path.join(this.templatesDir, 'default.md');\n }\n\n async isInitialized(): Promise<boolean> {\n return pathExists(this.root);\n }\n\n async requireInit(): Promise<void> {\n if (!(await this.isInitialized())) {\n throw new NotInitializedError();\n }\n }\n}\n\n/**\n * Validate an identifier for use in file paths.\n * Only allows [A-Za-z0-9._-] characters.\n * Rejects identifiers containing forbidden characters (path separators, etc.)\n * to prevent path traversal attacks.\n */\nexport function sanitizeId(id: string): string {\n if (!ID_PATTERN.test(id)) {\n throw new Error(`Invalid identifier: \"${id}\"`);\n }\n return id;\n}\n\n/**\n * Validate that a workspace path is within the project root.\n * Prevents path traversal attacks.\n */\nexport function validateWorkspacePath(workspacePath: string, projectRoot: string): void {\n const resolved = path.resolve(workspacePath);\n const root = path.resolve(projectRoot);\n\n if (!resolved.startsWith(root + path.sep) && resolved !== root) {\n throw new Error(`Workspace path \"${workspacePath}\" is outside project root`);\n }\n}\n\n/**\n * Module-level cache for findProjectRoot().\n * Key: resolved startDir, Value: found project root.\n * Avoids repeated accessSync() traversals on every CLI invocation.\n */\nconst projectRootCache = new Map<string, string>();\n\n/**\n * Resolve project root by walking up from cwd looking for .orchestry/.\n * Returns cwd if not found (for init command).\n *\n * Results are cached per startDir to avoid redundant filesystem traversals.\n */\nexport function findProjectRoot(startDir: string = process.cwd()): string {\n const resolvedStart = path.resolve(startDir);\n const cached = projectRootCache.get(resolvedStart);\n if (cached !== undefined) return cached;\n\n let dir = resolvedStart;\n const root = path.parse(dir).root;\n\n while (dir !== root) {\n try {\n accessSync(path.join(dir, '.orchestry'));\n projectRootCache.set(resolvedStart, dir);\n return dir;\n } catch {\n // Not found, go up\n }\n dir = path.dirname(dir);\n }\n\n // Not found — return resolved dir (for init command)\n projectRootCache.set(resolvedStart, resolvedStart);\n return resolvedStart;\n}\n\n/**\n * Clear the findProjectRoot cache.\n * Useful in tests or after `orch init` changes the project structure.\n */\nexport function clearProjectRootCache(): void {\n projectRootCache.clear();\n}\n"]}
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import {a}from'./chunk-P4JTJBWO.js';import {o}from'./chunk-LRYVT4D4.js';import {b as b$1}from'./chunk-6MJ7V6VY.js';function b(n,s){return n?n+`
3
+
4
+ `+s:s}function y(n,s){let e=n.usage;if(!e&&s?.statsFallback&&(e=n.stats?.usage),e&&typeof e.input_tokens=="number"){let i=e.input_tokens,u=typeof e.output_tokens=="number"?e.output_tokens:0,a$1=typeof e.reasoning_tokens=="number"?e.reasoning_tokens:0,o=typeof e.cache_read_input_tokens=="number"?e.cache_read_input_tokens:0,c=typeof e.cache_creation_input_tokens=="number"?e.cache_creation_input_tokens:0;return a(i,u,{reasoning:a$1,cache_read:o,cache_write:c})}}function w(n,s,e,i){async function*u(){let a=false,o$1=null,c=null,g=new Promise(r=>{n.on("close",t=>{o$1=t,r();}),n.on("error",t=>{c=t,r();});});if(n.stdout)try{for await(let r of b$1(n.stdout)){if(i?.aborted)break;let t=s(r);t&&(t.type==="done"&&(a=!0),yield t);}}finally{n.stdout.destroy();}if(await g,c&&!i?.aborted&&!a){let r=c,t=o(r.message,o$1??void 0);throw Object.assign(new Error(r.message),{errorKind:t})}if(o$1!==0&&o$1!==null&&!i?.aborted&&!a){let r=`${e} process exited with code ${o$1}`,t=o(r,o$1);throw Object.assign(new Error(r),{errorKind:t})}}return u()}export{b as a,y as b,w as c};
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import {c,b}from'./chunk-FQ5YUP4J.js';import {n}from'./chunk-IKNBPOQL.js';import {execFile}from'child_process';import {promisify}from'util';var m=promisify(execFile),i=class{constructor(e){this.processManager=e;}kind="claude";async test(){try{let{stdout:e}=await m("claude",["--version"]);return {ok:!0,version:e.trim()}}catch(e){let t=e instanceof Error?e.message:String(e);return {ok:false,error:"Claude Code CLI not found. Install: npm i -g @anthropic-ai/claude-code",errorKind:n(t)}}}execute(e){let t=["--print","--output-format","stream-json","--max-turns",String(e.config.max_turns??50),"--verbose","--dangerously-skip-permissions"];e.config.model&&t.push("--model",e.config.model),e.config.effort&&t.push("--effort",e.config.effort);let r=e.systemPrompt??e.config.system_prompt;r&&t.push("--system-prompt",r),t.push(e.prompt);let{process:o,pid:u}=this.processManager.spawn("claude",t,{cwd:e.workspace,env:{...process.env,...e.env},signal:e.signal}),p=c(o,f,"Claude",e.signal);return {pid:u,events:p}}async stop(e){await this.processManager.killWithGrace(e);}};function f(s){if(!s.trim())return null;try{let e=JSON.parse(s),t=new Date().toISOString();switch(e.type){case "assistant":return {type:"output",timestamp:t,data:e.message??e};case "tool_use":return {type:"tool_call",timestamp:t,data:e};case "tool_result":return {type:"output",timestamp:t,data:e};case "error":{let r=e.error??e,o=typeof r=="string"?r:JSON.stringify(r);return {type:"error",timestamp:t,data:r,errorKind:n(o)}}case "result":{let r=b(e,{statsFallback:!0});return {type:"done",timestamp:t,data:e,tokens:r}}default:return {type:"output",timestamp:t,data:e}}}catch{return {type:"output",timestamp:new Date().toISOString(),data:s}}}export{i as a};
2
+ import {c,b}from'./chunk-C7C7Q7XO.js';import {o}from'./chunk-LRYVT4D4.js';import {execFile}from'child_process';import {promisify}from'util';var m=promisify(execFile),i=class{constructor(e){this.processManager=e;}kind="claude";async test(){try{let{stdout:e}=await m("claude",["--version"]);return {ok:!0,version:e.trim()}}catch(e){let t=e instanceof Error?e.message:String(e);return {ok:false,error:"Claude Code CLI not found. Install: npm i -g @anthropic-ai/claude-code",errorKind:o(t)}}}execute(e){let t=["--print","--output-format","stream-json","--max-turns",String(e.config.max_turns??50),"--verbose","--dangerously-skip-permissions"];e.config.model&&t.push("--model",e.config.model),e.config.effort&&t.push("--effort",e.config.effort);let r=e.systemPrompt??e.config.system_prompt;r&&t.push("--system-prompt",r),t.push(e.prompt);let{process:o,pid:u}=this.processManager.spawn("claude",t,{cwd:e.workspace,env:{...process.env,...e.env},signal:e.signal}),p=c(o,f,"Claude",e.signal);return {pid:u,events:p}}async stop(e){await this.processManager.killWithGrace(e);}};function f(s){if(!s.trim())return null;try{let e=JSON.parse(s),t=new Date().toISOString();switch(e.type){case "assistant":return {type:"output",timestamp:t,data:e.message??e};case "tool_use":return {type:"tool_call",timestamp:t,data:e};case "tool_result":return {type:"output",timestamp:t,data:e};case "error":{let r=e.error??e,o$1=typeof r=="string"?r:JSON.stringify(r);return {type:"error",timestamp:t,data:r,errorKind:o(o$1)}}case "result":{let r=b(e,{statsFallback:!0});return {type:"done",timestamp:t,data:e,tokens:r}}default:return {type:"output",timestamp:t,data:e}}}catch{return {type:"output",timestamp:new Date().toISOString(),data:s}}}export{i as a};
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import {a}from'./chunk-XMKCAUEH.js';function l(o){return o.includes(":")}function s(o,n){let r=a(n,o.tier),t=n==="claude"?o.skills:o.skills.filter(i=>!l(i));return {name:o.name,adapter:n,model:r||void 0,role:o.role,skills:t,approval_policy:o.approval_policy}}export{l as a,s as b};