@runfusion/fusion 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/README.md +13 -0
  2. package/dist/bin.js +1707 -610
  3. package/dist/client/assets/AgentDetailView-CBFUveyO.js +18 -0
  4. package/dist/client/assets/AgentsView-DPezXQ-U.js +522 -0
  5. package/dist/client/assets/{AgentsView-Bkk-uBij.css → AgentsView-V5GhlBYu.css} +1 -1
  6. package/dist/client/assets/ChatView-5N4-EuhD.js +1 -0
  7. package/dist/client/assets/{DevServerView-DQrVLbK5.js → DevServerView-Daft4YFc.js} +1 -1
  8. package/dist/client/assets/{DirectoryPicker-DVmy6sLM.js → DirectoryPicker-rew1y6qO.js} +1 -1
  9. package/dist/client/assets/{DocumentsView-DHEv-Q2a.js → DocumentsView-i72qJzwd.js} +1 -1
  10. package/dist/client/assets/{InsightsView-ByyY7GX7.js → InsightsView-BL5eZJ0a.js} +3 -3
  11. package/dist/client/assets/{MemoryView-Udiu0u8R.js → MemoryView-pl8Cdg_p.js} +2 -2
  12. package/dist/client/assets/{NodesView-CupS-GGc.js → NodesView-D6eJ15zc.js} +4 -4
  13. package/dist/client/assets/PiExtensionsManager-ExInwXWP.js +11 -0
  14. package/dist/client/assets/PluginManager-CYhtxHun.js +1 -0
  15. package/dist/client/assets/{ResearchView-BG9Feaeb.js → ResearchView-B_QPUEjB.js} +1 -1
  16. package/dist/client/assets/{RoadmapsView-BTJtmBnF.js → RoadmapsView-DBNLaEsK.js} +2 -2
  17. package/dist/client/assets/SettingsModal-1ET586M3.js +31 -0
  18. package/dist/client/assets/{SettingsModal-eNCZiHa6.js → SettingsModal-CL_gWmOj.js} +1 -1
  19. package/dist/client/assets/SettingsModal-D_AFkDJa.css +1 -0
  20. package/dist/client/assets/{SetupWizardModal-yf79TN1L.js → SetupWizardModal-CLkY9HFL.js} +1 -1
  21. package/dist/client/assets/{SkillMultiselect-DOj5vX4U.js → SkillMultiselect-B0qi32SQ.js} +1 -1
  22. package/dist/client/assets/{SkillsView-CgnCnikX.js → SkillsView-umVjRq6o.js} +1 -1
  23. package/dist/client/assets/TodoView-CFifSvrD.js +6 -0
  24. package/dist/client/assets/TodoView-SeO9o7km.css +1 -0
  25. package/dist/client/assets/{folder-open-D11gjHGK.js → folder-open-nYPrL1W3.js} +1 -1
  26. package/dist/client/assets/index-Bc8nfKeH.js +661 -0
  27. package/dist/client/assets/index-C1prPuSl.css +1 -0
  28. package/dist/client/assets/{list-checks-CBzPc3GA.js → list-checks-sK8xJeH_.js} +1 -1
  29. package/dist/client/assets/{star-BWcRk8nt.js → star-BRtXbYkB.js} +1 -1
  30. package/dist/client/assets/{upload-91TM4ljC.js → upload-BP60eBwN.js} +1 -1
  31. package/dist/client/assets/{users-BAsI___L.js → users-qSGAX2Pf.js} +1 -1
  32. package/dist/client/index.html +2 -2
  33. package/dist/client/sw.js +6 -0
  34. package/dist/client/version.json +1 -1
  35. package/dist/droid-cli/index.ts +127 -0
  36. package/dist/droid-cli/package.json +37 -0
  37. package/dist/droid-cli/src/__tests__/control-handler.test.ts +164 -0
  38. package/dist/droid-cli/src/__tests__/event-bridge.test.ts +1318 -0
  39. package/dist/droid-cli/src/__tests__/mcp-config.test.ts +310 -0
  40. package/dist/droid-cli/src/__tests__/process-manager.test.ts +818 -0
  41. package/dist/droid-cli/src/__tests__/prompt-builder.test.ts +1206 -0
  42. package/dist/droid-cli/src/__tests__/provider.test.ts +1894 -0
  43. package/dist/droid-cli/src/__tests__/setup-test-isolation.test.ts +32 -0
  44. package/dist/droid-cli/src/__tests__/setup-test-isolation.ts +14 -0
  45. package/dist/droid-cli/src/__tests__/stream-parser.test.ts +188 -0
  46. package/dist/droid-cli/src/__tests__/thinking-config.test.ts +141 -0
  47. package/dist/droid-cli/src/__tests__/tool-mapping.test.ts +253 -0
  48. package/dist/droid-cli/src/control-handler.ts +82 -0
  49. package/dist/droid-cli/src/event-bridge.ts +397 -0
  50. package/dist/droid-cli/src/mcp-config.ts +144 -0
  51. package/dist/droid-cli/src/mcp-schema-server.cjs +49 -0
  52. package/dist/droid-cli/src/process-manager.ts +358 -0
  53. package/dist/droid-cli/src/prompt-builder.ts +629 -0
  54. package/dist/droid-cli/src/provider.ts +447 -0
  55. package/dist/droid-cli/src/stream-parser.ts +37 -0
  56. package/dist/droid-cli/src/thinking-config.ts +83 -0
  57. package/dist/droid-cli/src/tool-mapping.ts +147 -0
  58. package/dist/droid-cli/src/types.ts +87 -0
  59. package/dist/extension.js +542 -141
  60. package/dist/pi-claude-cli/package.json +1 -1
  61. package/dist/pi-claude-cli/src/__tests__/prompt-builder.test.ts +36 -0
  62. package/dist/pi-claude-cli/src/prompt-builder.ts +19 -28
  63. package/package.json +2 -1
  64. package/dist/client/assets/AgentDetailView-B20ApPe1.js +0 -18
  65. package/dist/client/assets/AgentsView-ChN1tgQ0.js +0 -522
  66. package/dist/client/assets/ChatView-oPMFwmoc.js +0 -1
  67. package/dist/client/assets/PiExtensionsManager-DXs2xI8K.js +0 -11
  68. package/dist/client/assets/PluginManager-BCpiZf4_.js +0 -1
  69. package/dist/client/assets/SettingsModal-9HS8MnmW.css +0 -1
  70. package/dist/client/assets/SettingsModal-DZ_LaEhd.js +0 -31
  71. package/dist/client/assets/TodoView-67BMyICY.js +0 -6
  72. package/dist/client/assets/TodoView-C1g65hJo.css +0 -1
  73. package/dist/client/assets/index-BLn1R7Ob.css +0 -1
  74. package/dist/client/assets/index-CLAHcGnI.js +0 -656
@@ -1,6 +0,0 @@
1
- import{r as d,j as e}from"./vendor-react-K0fH_qHe.js";import{c as kt,c1 as It,c2 as Nt,c3 as wt,c4 as Ct,c5 as St,c6 as At,c7 as Et,c8 as $t,y as Dt,i as Ft,E as q,c9 as rt,L as Tt,M as zt,bn as G,X as H,aJ as ct,Y as lt,af as Mt,_ as Ot,B as ut}from"./index-CLAHcGnI.js";import{L as mt}from"./list-checks-CBzPc3GA.js";import"./vendor-xterm-DzcZoU0P.js";/**
2
- * @license lucide-react v1.7.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const Rt=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]],Pt=kt("circle-plus",Rt);function _t(k){const{items:l,...h}=k;return h}function bt(k){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?`${k}-${crypto.randomUUID()}`:`${k}-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function Ut(k={}){const{projectId:l,addToast:h}=k,[N,I]=d.useState([]),[L,f]=d.useState([]),[V,_]=d.useState(!0),[X,v]=d.useState(null),[$,D]=d.useState(null),[j,x]=d.useState([]),w=d.useRef($);w.current=$,d.useEffect(()=>{let n=!1;async function o(){_(!0),v(null);try{const u=await $t(l);if(n)return;x(u),I(u.map(_t));const r=w.current&&u.some(c=>c.id===w.current)?w.current:u[0]?.id??null;D(r),f(r?u.find(c=>c.id===r)?.items??[]:[])}catch(u){if(n)return;x([]),I([]),f([]),D(null),v(u instanceof Error?u.message:"Failed to load todo lists")}finally{n||_(!1)}}return o(),()=>{n=!0}},[l]),d.useEffect(()=>{if(!$){f([]);return}const n=j.find(o=>o.id===$);f(n?.items??[])},[j,$]);const z=d.useCallback(async n=>{const o=N,u=j,r=new Date().toISOString(),c={id:bt("temp-list"),projectId:l??"",title:n,createdAt:r,updatedAt:r};v(null),I(s=>[...s,c]),x(s=>[...s,{...c,items:[]}]);try{const s=await It(n,l);I(i=>i.map(a=>a.id===c.id?s:a)),x(i=>i.map(a=>a.id===c.id?{...s,items:[]}:a)),w.current||D(s.id)}catch(s){I(o),x(u),v(s instanceof Error?s.message:"Failed to create list"),h?.("Failed to create todo list","error")}},[h,j,N,l]),C=d.useCallback(async(n,o)=>{const u=N,r=j;v(null),I(c=>c.map(s=>s.id===n?{...s,title:o}:s)),x(c=>c.map(s=>s.id===n?{...s,title:o}:s));try{const c=await Nt(n,o,l);I(s=>s.map(i=>i.id===n?c:i)),x(s=>s.map(i=>i.id===n?{...c,items:i.items}:i))}catch(c){I(u),x(r),v(c instanceof Error?c.message:"Failed to rename list"),h?.("Failed to rename todo list","error")}},[h,j,N,l]),U=d.useCallback(async n=>{const o=N,u=j,r=w.current,c=r===n?N.find(s=>s.id!==n)?.id??null:r;v(null),I(s=>s.filter(i=>i.id!==n)),x(s=>s.filter(i=>i.id!==n)),r===n&&D(c);try{await wt(n,l)}catch(s){I(o),x(u),D(r),v(s instanceof Error?s.message:"Failed to delete list"),h?.("Failed to delete todo list","error")}},[h,j,N,l]),S=d.useCallback(async n=>{const o=w.current;if(!o)return;const u=L,r=j,c=new Date().toISOString(),s=L.reduce((a,b)=>Math.max(a,b.sortOrder),-1),i={id:bt("temp-item"),listId:o,text:n,completed:!1,completedAt:null,createdAt:c,updatedAt:c,sortOrder:s+1};v(null),f(a=>[...a,i]),x(a=>a.map(b=>b.id===o?{...b,items:[...b.items,i]}:b));try{const a=await Ct(o,n,l);f(b=>b.map(g=>g.id===i.id?a:g)),x(b=>b.map(g=>g.id===o?{...g,items:g.items.map(E=>E.id===i.id?a:E)}:g))}catch(a){f(u),x(r),v(a instanceof Error?a.message:"Failed to create item"),h?.("Failed to create todo item","error")}},[h,L,j,l]),T=d.useCallback(async(n,o)=>{const u=L.find(a=>a.id===n);if(!u)return;const r=L,c=j,s=o.completed??u.completed,i={...u,...o,completed:s,completedAt:s?u.completedAt??new Date().toISOString():null,updatedAt:new Date().toISOString()};v(null),f(a=>a.map(b=>b.id===n?i:b)),x(a=>a.map(b=>b.id===i.listId?{...b,items:b.items.map(g=>g.id===n?i:g)}:b));try{const a=await St(n,o,l);f(b=>b.map(g=>g.id===n?a:g)),x(b=>b.map(g=>g.id===a.listId?{...g,items:g.items.map(E=>E.id===n?a:E)}:g))}catch(a){f(r),x(c),v(a instanceof Error?a.message:"Failed to update item"),h?.("Failed to update todo item","error")}},[h,L,j,l]),F=d.useCallback(async n=>{const o=L.find(u=>u.id===n);o&&await T(n,{completed:!o.completed})},[L,T]),K=d.useCallback(async n=>{const o=L,u=j;v(null),f(r=>r.filter(c=>c.id!==n)),x(r=>r.map(c=>({...c,items:c.items.filter(s=>s.id!==n)})));try{await At(n,l)}catch(r){f(o),x(u),v(r instanceof Error?r.message:"Failed to delete item"),h?.("Failed to delete todo item","error")}},[h,L,j,l]),A=d.useCallback(async n=>{const o=w.current;if(!o)return;const u=L,r=j,c=new Map(L.map(i=>[i.id,i])),s=n.map((i,a)=>{const b=c.get(i);return b?{...b,sortOrder:a}:null}).filter(i=>i!==null);v(null),f(s),x(i=>i.map(a=>a.id===o?{...a,items:s}:a));try{await Et(o,n,l)}catch(i){f(u),x(r),v(i instanceof Error?i.message:"Failed to reorder items"),h?.("Failed to reorder todo items","error")}},[h,L,j,l]);return{lists:N,items:L,loading:V,error:X,selectedListId:$,setSelectedListId:D,createList:z,renameList:C,deleteList:U,createItem:S,updateItem:T,toggleItem:F,deleteItem:K,reorderItems:A}}function Kt(k){return[...k].sort((l,h)=>l.sortOrder-h.sortOrder)}function Yt({projectId:k,addToast:l}){const{lists:h,items:N,loading:I,error:L,selectedListId:f,setSelectedListId:V,createList:_,renameList:X,deleteList:v,createItem:$,updateItem:D,toggleItem:j,deleteItem:x,reorderItems:w}=Ut({projectId:k,addToast:(t,p)=>{if(p==="success"||p==="error"||p==="info"||p===void 0){l(t,p);return}l(t,"info")}}),[z,C]=d.useState(null),[U,S]=d.useState(""),[T,F]=d.useState(null),[K,A]=d.useState(""),[n,o]=d.useState(""),[u,r]=d.useState(!1),[c,s]=d.useState(""),[i,a]=d.useState([]),[b,g]=d.useState(!1),[E,M]=d.useState(!1),[Q,O]=d.useState(null),Y=d.useRef(null),{confirm:pt}=Dt(),W=d.useMemo(()=>h.find(t=>t.id===f)??null,[h,f]),B=d.useMemo(()=>Kt(N.filter(t=>t.listId===f)),[N,f]);function Z(){C(null),S(""),o(""),r(!1)}function J(){F(null),A(""),s("")}function ht(t){Z(),J(),V(t)}const ft=d.useCallback(async()=>{g(!0);try{const t=await Ft(void 0,k);a(t),M(!0)}catch(t){l(`Failed to load agents: ${q(t)}`,"error"),M(!1),O(null)}finally{g(!1)}},[k,l]);d.useEffect(()=>{C(null),S(""),o(""),r(!1),F(null),A(""),s(""),M(!1),O(null)},[f]),d.useEffect(()=>{if(!E)return;const t=p=>{Y.current&&!Y.current.contains(p.target)&&(M(!1),O(null))};return document.addEventListener("mousedown",t),()=>{document.removeEventListener("mousedown",t)}},[E]);function xt(t){J(),C(t.id),S(t.title),r(!1)}async function tt(){if(!z)return;const t=U.trim();if(!t){C(null),S("");return}await X(z,t),C(null),S("")}function et(){C(null),S("")}function st(t){Z(),F(t.id),A(t.text)}async function nt(){if(!T)return;const t=K.trim();if(!t){F(null),A("");return}await D(T,{text:t}),F(null),A("")}function it(){F(null),A("")}async function at(){const t=n.trim();t&&(await _(t),o(""),r(!1))}async function ot(){if(!f)return;const t=c.trim();t&&(await $(t),s(""))}async function gt(t){await pt({title:"Delete List",message:"Delete this list and all its items?",danger:!0})&&await v(t)}async function vt(t){await x(t)}async function dt(t,p){const y=B.map(P=>P.id),m=y.findIndex(P=>P===t);if(m<0)return;const R=p==="up"?m-1:m+1;R<0||R>=y.length||([y[m],y[R]]=[y[R],y[m]],await w(y))}const jt=d.useCallback(async t=>{try{const p={description:t.text,column:"triage",source:{sourceType:"dashboard_ui"}},y=await rt(p,k);l(`Created ${y.id} from todo`,"success")}catch(p){l(`Failed to create task: ${q(p)}`,"error")}},[k,l]),yt=d.useCallback(async(t,p)=>{try{const y={description:t.text,column:"triage",assignedAgentId:p,source:{sourceType:"dashboard_ui"}},m=await rt(y,k),P=i.find(Lt=>Lt.id===p)?.name??p;l(`Created ${m.id} and assigned to ${P}`,"success"),M(!1),O(null)}catch(y){l(`Failed to create and assign task: ${q(y)}`,"error")}},[k,l,i]);return I?e.jsx("div",{className:"todo-view",children:e.jsxs("div",{className:"todo-loading",children:[e.jsx(Tt,{className:"todo-loading-icon","aria-hidden":"true"}),e.jsx("p",{children:"Loading todos..."})]})}):e.jsxs("div",{className:"todo-view",children:[e.jsx("div",{className:"todo-view-header",children:e.jsxs("div",{children:[e.jsx("h2",{children:"Todos"}),e.jsx("p",{className:"todo-view-description",children:"Manage reusable todo lists for your project."})]})}),e.jsxs("div",{className:"todo-view-layout",children:[e.jsxs("aside",{className:"todo-view-sidebar","aria-label":"Todo lists sidebar",children:[e.jsxs("div",{className:"todo-sidebar-header",children:[e.jsx("h3",{className:"todo-sidebar-title",children:"Lists"}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-add-list-btn",onClick:()=>{J(),r(!0),C(null)},"aria-label":"Add list","data-testid":"add-list-button",children:e.jsx(zt,{size:14})})]}),u&&e.jsxs("div",{className:"todo-list-item",children:[e.jsx("input",{className:"input todo-inline-edit-input",placeholder:"New list title",value:n,onChange:t=>o(t.target.value),onKeyDown:t=>{t.key==="Enter"&&at(),t.key==="Escape"&&(o(""),r(!1))},autoFocus:!0,"data-testid":"new-list-input"}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{at()},"aria-label":"Save list",children:e.jsx(G,{size:14})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{o(""),r(!1)},"aria-label":"Cancel list",children:e.jsx(H,{size:14})})]}),h.length===0&&!u?e.jsxs("div",{className:"todo-empty-state",children:[e.jsx(mt,{"aria-hidden":"true"}),e.jsx("p",{children:"No todo lists yet. Create one to get started."}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>{J(),r(!0)},children:"Create List"})]}):e.jsx("div",{className:"todo-list-items",role:"list","aria-label":"Todo lists",children:h.map(t=>{const p=t.id===f,y=t.id===z;return e.jsx("div",{className:`todo-list-item${p?" todo-list-item--active":""}`,role:"listitem",children:y?e.jsxs(e.Fragment,{children:[e.jsx("input",{className:"input todo-inline-edit-input",value:U,onChange:m=>S(m.target.value),onKeyDown:m=>{m.key==="Enter"&&tt(),m.key==="Escape"&&et()},autoFocus:!0,"data-testid":`rename-list-input-${t.id}`}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{tt()},"aria-label":"Save list rename",children:e.jsx(G,{size:14})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:et,"aria-label":"Cancel list rename",children:e.jsx(H,{size:14})})]}):e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"todo-list-select-btn",onClick:()=>ht(t.id),"aria-label":`Select list ${t.title}`,"aria-current":p?"true":void 0,"data-testid":`todo-list-${t.id}`,children:e.jsx("span",{className:"todo-list-item-name",children:t.title})}),e.jsxs("div",{className:"todo-list-item-actions",children:[e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{xt(t)},"aria-label":`Rename ${t.title}`,"data-testid":`rename-list-button-${t.id}`,children:e.jsx(ct,{size:14})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon btn-danger todo-icon-btn",onClick:()=>{gt(t.id)},"aria-label":`Delete ${t.title}`,"data-testid":`delete-list-button-${t.id}`,children:e.jsx(lt,{size:14})})]})]})},t.id)})})]}),e.jsxs("section",{className:"todo-view-main","aria-label":"Todo items",children:[L&&e.jsxs("div",{className:"todo-error-banner",role:"alert",children:[e.jsx("span",{className:"todo-error-message",children:L}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>window.location.reload(),children:"Retry"})]}),W?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"todo-items-header",children:e.jsx("h3",{children:W.title})}),e.jsxs("div",{className:"todo-add-item-row",children:[e.jsx("input",{className:"input",placeholder:"Add a todo item",value:c,onChange:t=>s(t.target.value),onKeyDown:t=>{t.key==="Enter"&&ot(),t.key==="Escape"&&s("")},"data-testid":"new-item-input"}),e.jsx("button",{type:"button",className:"btn btn-primary",onClick:()=>{ot()},children:"Add"})]}),B.length===0?e.jsx("div",{className:"todo-empty-state",children:e.jsx("p",{children:"No items in this list. Add one above."})}):e.jsx("div",{className:"todo-items-list",children:B.map((t,p)=>{const y=t.id===T;return e.jsxs("div",{className:"todo-item","data-testid":`todo-item-${t.id}`,children:[e.jsx("input",{type:"checkbox",checked:t.completed,onChange:()=>{j(t.id)},className:"todo-item-checkbox","aria-label":`Toggle ${t.text}`,"data-testid":`toggle-item-${t.id}`}),y?e.jsx("input",{className:"input todo-inline-edit-input",value:K,onChange:m=>A(m.target.value),onKeyDown:m=>{m.key==="Enter"&&nt(),m.key==="Escape"&&it()},autoFocus:!0,"data-testid":`edit-item-input-${t.id}`}):e.jsx("button",{type:"button",className:`todo-item-text${t.completed?" todo-item-text--completed":""}`,onClick:()=>st(t),children:t.text}),e.jsx("div",{className:"todo-item-actions",children:y?e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{nt()},"aria-label":"Save item edit",children:e.jsx(G,{size:14})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:it,"aria-label":"Cancel item edit",children:e.jsx(H,{size:14})})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"todo-item-reorder-btns",children:[e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-item-reorder-btn",onClick:()=>{dt(t.id,"up")},disabled:p===0,"aria-label":`Move ${t.text} up`,"data-testid":`move-up-${t.id}`,children:e.jsx(Mt,{size:14})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-item-reorder-btn",onClick:()=>{dt(t.id,"down")},disabled:p===B.length-1,"aria-label":`Move ${t.text} down`,"data-testid":`move-down-${t.id}`,children:e.jsx(Ot,{size:14})})]}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{jt(t)},"aria-label":`Create task from ${t.text}`,"data-testid":`create-task-from-${t.id}`,children:e.jsx(Pt,{size:14})}),e.jsxs("div",{className:"todo-agent-picker-trigger",ref:Q===t.id?Y:void 0,children:[e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{O(t.id),ft()},"aria-label":`Assign ${t.text} to agent`,"data-testid":`assign-agent-for-${t.id}`,children:e.jsx(ut,{size:14})}),E&&Q===t.id&&e.jsx("div",{className:"todo-agent-picker-dropdown",onMouseDown:m=>{m.preventDefault()},children:b?e.jsx("div",{className:"todo-agent-picker-loading",children:"Loading agents..."}):i.filter(m=>m.state!=="terminated").length>0?i.filter(m=>m.state!=="terminated").map(m=>e.jsxs("button",{type:"button",className:"todo-agent-picker-item",onClick:()=>{yt(t,m.id)},children:[e.jsx(ut,{size:14}),e.jsx("span",{children:m.name}),e.jsx("span",{className:"todo-agent-picker-role",children:m.role})]},m.id)):e.jsx("div",{className:"todo-agent-picker-empty",children:"No agents available"})})]}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>st(t),"aria-label":`Edit ${t.text}`,"data-testid":`edit-item-${t.id}`,children:e.jsx(ct,{size:14})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon btn-danger todo-icon-btn",onClick:()=>{vt(t.id)},"aria-label":`Delete ${t.text}`,"data-testid":`delete-item-${t.id}`,children:e.jsx(lt,{size:14})})]})})]},t.id)})})]}):e.jsxs("div",{className:"todo-empty-state",children:[e.jsx(mt,{"aria-hidden":"true"}),e.jsx("p",{children:"Select a list from the sidebar"})]})]})]})]})}export{Yt as TodoView};
@@ -1 +0,0 @@
1
- .todo-view{display:flex;flex-direction:column;height:100%;overflow:hidden}.todo-view-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:var(--space-lg) var(--space-xl);border-bottom:1px solid var(--border);background:var(--surface);gap:var(--space-md);flex-shrink:0}.todo-view-header h2{font-size:1rem;font-weight:600;color:var(--text);margin:0;display:flex;align-items:center;gap:var(--space-sm)}.todo-view-description{color:var(--text-muted);font-size:.8125rem;margin:2px 0 0}.todo-view-layout{display:flex;flex-direction:row;flex:1;overflow:hidden;gap:var(--space-lg);padding:var(--space-lg)}.todo-view-sidebar{width:calc(var(--space-2xl) * 7 + var(--space-sm));border-right:calc(var(--space-xs) / 4) solid var(--border);padding-right:var(--space-lg);overflow-y:auto;flex-shrink:0;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--text-muted) 45%,transparent) transparent}.todo-view-main{flex:1;overflow-y:auto;display:flex;flex-direction:column;min-width:0;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--text-muted) 45%,transparent) transparent}.todo-view-sidebar::-webkit-scrollbar,.todo-view-main::-webkit-scrollbar{width:var(--space-sm);height:var(--space-sm)}.todo-view-sidebar::-webkit-scrollbar-thumb,.todo-view-main::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--text-muted) 45%,transparent);border-radius:var(--radius-pill)}.todo-view-sidebar::-webkit-scrollbar-track,.todo-view-main::-webkit-scrollbar-track{background:transparent}.todo-sidebar-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;margin-bottom:var(--space-md)}.todo-sidebar-title{font-size:calc(var(--space-md) + (var(--space-xs) / 4));color:var(--text-muted);text-transform:uppercase;letter-spacing:calc(var(--space-xs) / 8);margin:0}.todo-add-list-btn{min-height:calc(var(--space-2xl) + var(--space-xs));min-width:calc(var(--space-2xl) + var(--space-xs))}.todo-list-items{display:flex;flex-direction:column;gap:var(--space-xs)}.todo-list-item{display:flex;flex-direction:row;align-items:center;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);gap:var(--space-sm);color:var(--text-muted);transition:background var(--transition-fast),color var(--transition-fast)}.todo-list-item:hover{background:var(--card-hover);color:var(--text)}.todo-list-select-btn{flex:1;min-width:0;border:0;background:none;color:inherit;text-align:left;cursor:pointer;padding:0}.todo-list-select-btn:focus-visible{outline:none;border-radius:var(--radius-sm);box-shadow:var(--focus-ring)}.todo-list-item--active{background:var(--surface);color:var(--text);font-weight:500}.todo-list-item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:calc(var(--space-md) + (var(--space-xs) / 4))}.todo-list-item-actions{display:flex;flex-direction:row;gap:var(--space-xs);opacity:0;transition:opacity var(--transition-fast)}.todo-list-item:hover .todo-list-item-actions,.todo-list-item:focus-within .todo-list-item-actions,.todo-list-item--active .todo-list-item-actions{opacity:1}.todo-icon-btn{min-height:calc(var(--space-lg) + var(--space-sm));min-width:calc(var(--space-lg) + var(--space-sm))}.todo-inline-edit-input{flex:1;font-size:calc(var(--space-md) + (var(--space-xs) / 4))}.todo-items-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;margin-bottom:var(--space-md);gap:var(--space-sm)}.todo-items-header h3{margin:0;font-size:calc(var(--space-md) + (var(--space-xs) / 2));font-weight:500;color:var(--text)}.todo-add-item-row{display:flex;flex-direction:row;gap:var(--space-sm);margin-bottom:var(--space-lg)}.todo-add-item-row .input{flex:1}.todo-items-list{display:flex;flex-direction:column}.todo-item{position:relative;display:flex;flex-direction:row;align-items:center;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);gap:var(--space-sm);border-bottom:calc(var(--space-xs) / 4) solid var(--border);transition:background var(--transition-fast)}.todo-item:hover{background:var(--card-hover)}.todo-item-checkbox{margin:0;width:var(--space-lg);height:var(--space-lg);accent-color:var(--todo);cursor:pointer}.todo-item-text{flex:1;font-size:calc(var(--space-md) + (var(--space-xs) / 4));color:var(--text);cursor:pointer;word-break:break-word;background:none;border:0;padding:0;text-align:left}.todo-item-text:focus-visible{outline:none;border-radius:var(--radius-sm);box-shadow:var(--focus-ring-strong)}.todo-item-text--completed{text-decoration:line-through;color:var(--text-muted)}.todo-item-actions{display:flex;flex-direction:row;gap:var(--space-xs);opacity:0;transition:opacity var(--transition-fast)}.todo-item:hover .todo-item-actions,.todo-item:focus-within .todo-item-actions{opacity:1}.todo-item-reorder-btns{display:flex;flex-direction:row;gap:0}.todo-item-reorder-btn{min-height:var(--space-xl);min-width:var(--space-xl)}.todo-agent-picker-trigger{position:relative}.todo-agent-picker-dropdown{position:absolute;right:0;top:100%;z-index:50;display:flex;flex-direction:column;gap:var(--space-xs);margin-top:var(--space-xs);min-width:calc(var(--space-2xl) * 6 + var(--space-md));max-height:calc(var(--space-2xl) * 7 + var(--space-md));overflow-y:auto;padding:var(--space-xs);border:calc(var(--space-xs) / 4) solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-lg)}.todo-agent-picker-item{width:100%;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text);padding:var(--space-sm);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-sm);text-align:left;cursor:pointer;transition:background var(--transition-fast)}.todo-agent-picker-item:hover{background:var(--card-hover)}.todo-agent-picker-item:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.todo-agent-picker-role{color:var(--text-muted);font-size:calc(var(--space-md) - (var(--space-xs) / 4));text-transform:uppercase;letter-spacing:calc(var(--space-xs) / 8)}.todo-agent-picker-loading,.todo-agent-picker-empty{color:var(--text-muted);padding:var(--space-sm);font-size:calc(var(--space-md) + (var(--space-xs) / 8))}.todo-error-banner{border:calc(var(--space-xs) / 4) solid color-mix(in srgb,var(--color-error) 35%,transparent);background:color-mix(in srgb,var(--color-error) 10%,transparent);color:var(--color-error);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-md);display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.todo-error-message{font-size:calc(var(--space-md) + (var(--space-xs) / 4))}.todo-empty-state,.todo-loading{color:var(--text-muted);padding:var(--space-2xl);text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);flex:1}.todo-loading-icon{animation:spin calc(var(--transition-slow) * 4) linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(max-width:768px){.todo-view{padding:var(--space-md)}.todo-view-layout{flex-direction:column}.todo-view-sidebar{width:100%;border-right:none;border-bottom:calc(var(--space-xs) / 4) solid var(--border);padding-right:0;padding-bottom:var(--space-md);max-height:calc(var(--space-2xl) * 6 + var(--space-sm))}.todo-view-main{width:100%}.todo-list-item,.todo-list-select-btn,.todo-add-list-btn,.todo-icon-btn,.todo-item,.todo-item-reorder-btn,.todo-add-item-row .btn{min-height:calc(var(--space-2xl) + var(--space-xs))}.todo-add-item-row{flex-wrap:wrap}.todo-add-item-row .btn{width:100%}.todo-list-item-actions,.todo-item-actions{opacity:1}.todo-item-checkbox{width:calc(var(--space-2xl) + var(--space-xs));height:calc(var(--space-2xl) + var(--space-xs))}.todo-agent-picker-trigger{position:static}.todo-agent-picker-dropdown{left:0;right:0;min-width:100%;max-height:calc(var(--space-2xl) * 8)}.todo-agent-picker-item{min-height:calc(var(--space-2xl) + var(--space-xs))}}