tarsk 0.5.72 → 0.5.73

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 (80) hide show
  1. package/dist/index.js +5505 -2902
  2. package/dist/public/assets/{account-view-C_WBVXA3.js → account-view-DKQdyGPK.js} +1 -1
  3. package/dist/public/assets/{alert-dialog-FQ5_FqBX.js → alert-dialog-Cb1PEgra.js} +1 -1
  4. package/dist/public/assets/api-BMo_Lz8f.js +2 -0
  5. package/dist/public/assets/{async-error-boundary-DCDTsNTO.js → async-error-boundary-J8P6NVvc.js} +1 -1
  6. package/dist/public/assets/{async-loading-fallback-C173aA9v.js → async-loading-fallback-B_JNgWJR.js} +1 -1
  7. package/dist/public/assets/browser-tab-D_GXZ93G.js +12 -0
  8. package/dist/public/assets/{button-sfGyFWfz.js → button-DeNw35VZ.js} +1 -1
  9. package/dist/public/assets/{card-D5k0GHxM.js → card-B4eI0NI-.js} +1 -1
  10. package/dist/public/assets/{chat-dock-context-DIyMsJHM.js → chat-dock-context-BXoAs38w.js} +1 -1
  11. package/dist/public/assets/{commit-dialog-Bmh1QdHK.js → commit-dialog-DDLaQVzY.js} +1 -1
  12. package/dist/public/assets/{commit-error-dialog-Dpu8C-0w.js → commit-error-dialog-Cp0Aic7I.js} +1 -1
  13. package/dist/public/assets/{commit-method-fields-CYzy7rmY.js → commit-method-fields-CD3PTIox.js} +1 -1
  14. package/dist/public/assets/{context-menu-Bo0OMC7-.js → context-menu-Dx5Jy21w.js} +1 -1
  15. package/dist/public/assets/{conversation-history-view-COFXqD0e.js → conversation-history-view-JymxZFJ2.js} +1 -1
  16. package/dist/public/assets/{create-project-dialog-DQ4AbwQP.js → create-project-dialog-qbwqSqGU.js} +2 -2
  17. package/dist/public/assets/{create-project-workspace-BiRMezO9.js → create-project-workspace-BcIx6FNf.js} +1 -1
  18. package/dist/public/assets/{create-repo-dialog-CYiCHWgi.js → create-repo-dialog-DcvSMy3g.js} +1 -1
  19. package/dist/public/assets/{delete-confirm-dialog-B99gEJN8.js → delete-confirm-dialog-C9NASyh6.js} +1 -1
  20. package/dist/public/assets/{dialog-CP2cYR59.js → dialog-Do98zzAW.js} +1 -1
  21. package/dist/public/assets/{diff-view-Cnuntc3l.js → diff-view-ePD0sdsW.js} +2 -2
  22. package/dist/public/assets/dist-BWuYHVi8.js +2 -0
  23. package/dist/public/assets/{dist-DrpdKPSI.js → dist-CjhvxqFU.js} +1 -1
  24. package/dist/public/assets/{explorer-tab-view-BoCoREoE.js → explorer-tab-view-D6hsKrXY.js} +2 -2
  25. package/dist/public/assets/{explorer-tree-DvD1-WW3.js → explorer-tree-BG8ShRwn.js} +1 -1
  26. package/dist/public/assets/{explorer-view-B4WJUy7s.js → explorer-view-BZcNnLd9.js} +2 -2
  27. package/dist/public/assets/{git-history-dialog-DHdzijZS.js → git-history-dialog-DWhJ1-ba.js} +1 -1
  28. package/dist/public/assets/index-DhOeeft5.css +1 -0
  29. package/dist/public/assets/index-DjaVbFDB.js +3386 -0
  30. package/dist/public/assets/{markdown-renderer-Dx9-Ljv0.js → markdown-renderer-qLede1zH.js} +4 -4
  31. package/dist/public/assets/{mcp-server-card-DPNG9Up7.js → mcp-server-card-zm-ss-7h.js} +1 -1
  32. package/dist/public/assets/{merged-pr-dialog-CEvS2z8D.js → merged-pr-dialog-Due9WdB4.js} +1 -1
  33. package/dist/public/assets/{model-list-controls-ChoemIJa.js → model-list-controls-D86_87E4.js} +1 -1
  34. package/dist/public/assets/{onboarding-dialog-DCull5p_.js → onboarding-dialog-DlqbPvG0.js} +1 -1
  35. package/dist/public/assets/{project-env-vars-view-DTGwl4wr.js → project-env-vars-view-N1Io1Pau.js} +1 -1
  36. package/dist/public/assets/{project-model-aliases-view-CEDz_6NW.js → project-model-aliases-view-B4FEze4g.js} +1 -1
  37. package/dist/public/assets/{project-settings-view-DniUno1i.js → project-settings-view-BalZ6Fe1.js} +1 -1
  38. package/dist/public/assets/{project-tools-view-DknCaJu_.js → project-tools-view-OnCN0jKz.js} +1 -1
  39. package/dist/public/assets/{providers-list-view-D_n1Ai6S.js → providers-list-view-DXvcxXDM.js} +1 -1
  40. package/dist/public/assets/pull-request-dialog-BeeTNIN_.js +1 -0
  41. package/dist/public/assets/{pull-with-changes-dialog-rKmqSi73.js → pull-with-changes-dialog-B9y2_lt_.js} +1 -1
  42. package/dist/public/assets/{push-before-pr-dialog-BeEx6Po_.js → push-before-pr-dialog-D3pMFe9A.js} +1 -1
  43. package/dist/public/assets/{settings-general-view-CVHlxpTM.js → settings-general-view-CAYlYs3J.js} +1 -1
  44. package/dist/public/assets/{settings-instructions-view-Bpx_dUaJ.js → settings-instructions-view-GjQivhLy.js} +1 -1
  45. package/dist/public/assets/{settings-list-PMi8ZniW.js → settings-list-DU82HNPX.js} +1 -1
  46. package/dist/public/assets/{settings-logs-view-64Aq1hEw.js → settings-logs-view-DnQ_4O9b.js} +4 -4
  47. package/dist/public/assets/{settings-mcp-servers-view-B84c4h47.js → settings-mcp-servers-view-C6OZHR3K.js} +1 -1
  48. package/dist/public/assets/{settings-models-view-DdRC4YXo.js → settings-models-view-CTjnBd74.js} +1 -1
  49. package/dist/public/assets/{settings-rules-view-CGLh95Ta.js → settings-rules-view-DiTC-cBE.js} +1 -1
  50. package/dist/public/assets/settings-skills-view-DHoSorOw.js +3 -0
  51. package/dist/public/assets/{settings-slack-view-OFNrG_DW.js → settings-slack-view-CiuJZ-9i.js} +1 -1
  52. package/dist/public/assets/{settings-slash-commands-view-DOo0BimH.js → settings-slash-commands-view-CnXff39A.js} +1 -1
  53. package/dist/public/assets/{settings-statistics-view-DpaSoVqG.js → settings-statistics-view-D8SvAGE_.js} +1 -1
  54. package/dist/public/assets/{settings-storage-view-DlyXWB__.js → settings-storage-view-CUsa7Lwv.js} +1 -1
  55. package/dist/public/assets/{settings-subagents-view-D7o69YzB.js → settings-subagents-view-B4HugfzU.js} +1 -1
  56. package/dist/public/assets/{settings-system-prompt-view-BFGfrXfe.js → settings-system-prompt-view-DNQKxcFg.js} +1 -1
  57. package/dist/public/assets/{settings-view-Dw1Zh2Qn.js → settings-view-DoZmXguf.js} +2 -2
  58. package/dist/public/assets/store-BaMSfYoJ.js +9 -0
  59. package/dist/public/assets/{table-B2TDbGGl.js → table-B3fLagUj.js} +1 -1
  60. package/dist/public/assets/tasks-view-BaMd8ZM0.js +2 -0
  61. package/dist/public/assets/{terminal-panel-DBZpuMz9.js → terminal-panel-BjD6z-3y.js} +2 -2
  62. package/dist/public/assets/{toggle-group-BiUqOiP6.js → toggle-group-5tREtjoW.js} +1 -1
  63. package/dist/public/assets/{use-active-dock-panel-instance-CcCdDHzX.js → use-active-dock-panel-instance-BSch6-Fx.js} +1 -1
  64. package/dist/public/assets/{use-installed-ai-files-BNrsyACe.js → use-installed-ai-files-E4BAFIPG.js} +1 -1
  65. package/dist/public/assets/{use-open-chat-dock-panel-D1D5bnsL.js → use-open-chat-dock-panel-Cr1bQYOH.js} +1 -1
  66. package/dist/public/assets/{web-C5UYr_H-.js → web-BKpP7kYB.js} +1 -1
  67. package/dist/public/assets/{web-DaSLtaQ7.js → web-CtDn8Ggo.js} +1 -1
  68. package/dist/public/assets/{web-Rx_XWVAQ.js → web-DaiDQ9WA.js} +1 -1
  69. package/dist/public/assets/{web-iwWEZ1P2.js → web-W5CC9Cq4.js} +1 -1
  70. package/dist/public/index.html +14 -14
  71. package/package.json +2 -1
  72. package/dist/public/assets/api-ODizoHnY.js +0 -2
  73. package/dist/public/assets/browser-tab-Cl9d7ESj.js +0 -12
  74. package/dist/public/assets/dist-ZlK7I-y-.js +0 -2
  75. package/dist/public/assets/index-Bmkj1Qwa.js +0 -3380
  76. package/dist/public/assets/index-DPMRI86E.css +0 -1
  77. package/dist/public/assets/pull-request-dialog-BkQBaJkw.js +0 -1
  78. package/dist/public/assets/settings-skills-view-DeVnXDl-.js +0 -3
  79. package/dist/public/assets/store-Be_7VK0D.js +0 -8
  80. package/dist/public/assets/tasks-view-FR7c1qFr.js +0 -2
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/api-ODizoHnY.js","assets/rolldown-runtime-aKtaBQYM.js","assets/dist-ZlK7I-y-.js"])))=>i.map(i=>d[i]);
2
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,r,t as i}from"./react-vendor-Ee0-5T4I.js";import{A as a,F as o,M as s,O as c,_ as l,at as u,f as d,j as f,k as p,o as m,s as h,u as g,x as _}from"./dist-ZlK7I-y-.js";import{J as v,n as y,r as b}from"./store-Be_7VK0D.js";import{$ as x,A as S,An as C,D as w,Et as T,dn as E,ot as ee,pn as D,q as te,rt as ne,y as O}from"./dist-DIjomljy.js";import{t as k}from"./utils-CT-Dw22R.js";import{t as A}from"./button-sfGyFWfz.js";import{C as re,Tt as ie,f as ae,qt as oe,vt as j}from"./api-ODizoHnY.js";import{i as se,n as M,t as N}from"./tooltip-B6ziVyTv.js";import{n as P}from"./async-loading-fallback-C173aA9v.js";import{n as ce}from"./scroll-area-nbNFO91g.js";import{a as le,o as ue,r as de,s as fe,t as pe}from"./dialog-CP2cYR59.js";import{n as F}from"./chat-dock-context-DIyMsJHM.js";import{n as me,t as I}from"./suspense-resource-DnYnmTbs.js";import{t as he}from"./use-suspense-resource-Dkz6ddFN.js";import{$t as ge,At as L,Ft as R,Gt as _e,Ht as ve,J as ye,Jt as be,K as xe,Kt as Se,Mt as Ce,Nt as we,Ot as Te,Pt as z,Qt as Ee,Tn as De,Ut as B,V as Oe,Vt as ke,Wt as Ae,Xt as je,Y as Me,Yt as Ne,Zt as Pe,_n as Fe,cn as Ie,en as Le,gn as Re,in as ze,kt as Be,ln as Ve,nn as V,q as He,qt as Ue,rn as We,sn as Ge,tn as Ke,vn as qe,xn as Je,yn as H}from"./index-Bmkj1Qwa.js";import{n as U,t as Ye}from"./toggle-group-BiUqOiP6.js";import{n as W,t as Xe}from"./commit-method-fields-CYzy7rmY.js";import{t as G}from"./async-error-boundary-DCDTsNTO.js";var K=t(),q=e(n(),1),J=i();function Ze({task:e,disabled:t=!1,onImplementInNewThread:n,onImplementInThisThread:r,onMarkDone:i,onRunNow:a}){let[o,s]=(0,q.useState)(!1),c=Se(e),l=e.status!==`Done`,u=Ue(e),d=t||o||!c&&!l&&!u;async function f(e){s(!0);try{await e()}finally{s(!1)}}return(0,J.jsxs)(Re,{children:[(0,J.jsx)(De,{asChild:!0,children:(0,J.jsxs)(A,{variant:`ghost`,size:`icon`,className:k(`h-8 w-8 shrink-0`,e.working&&`text-primary`),disabled:d,children:[o||e.working?(0,J.jsx)(T,{className:`h-4 w-4 animate-spin`}):(0,J.jsx)(D,{className:`h-4 w-4`}),(0,J.jsx)(`span`,{className:`sr-only`,children:`Task actions`})]})}),(0,J.jsxs)(qe,{align:`end`,children:[c&&(0,J.jsx)(H,{onClick:()=>void f(()=>r(e)),children:`Do This`}),u&&(0,J.jsx)(H,{onClick:()=>void f(()=>a(e)),children:`Run Now`}),c&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Je,{}),(0,J.jsx)(H,{onClick:()=>void f(()=>n(e)),children:`Do this in a new workspace`})]}),l&&(0,J.jsx)(H,{onClick:()=>void f(()=>i(e)),children:`Mark as Done`})]})]})}function Qe(e){let t=(0,K.c)(14),{tag:n,onRemove:r,className:i}=e,a;t[0]===i?a=t[1]:(a=k(u.compact,`inline-flex items-center gap-1 rounded-full border border-border/50 bg-background px-2 py-0.5`,i),t[0]=i,t[1]=a);let o;t[2]===n.color?o=t[3]:(o=(0,J.jsx)(`span`,{className:`h-2 w-2 shrink-0 rounded-full`,style:{backgroundColor:n.color}}),t[2]=n.color,t[3]=o);let s;t[4]===n.name?s=t[5]:(s=(0,J.jsx)(`span`,{className:`truncate`,children:n.name}),t[4]=n.name,t[5]=s);let c;t[6]!==r||t[7]!==n.name?(c=r&&(0,J.jsx)(`button`,{type:`button`,className:`ml-0.5 shrink-0 rounded-full opacity-60 hover:opacity-100`,onClick:e=>{e.stopPropagation(),r()},"aria-label":`Remove ${n.name}`,children:(0,J.jsxs)(`svg`,{className:`h-3 w-3`,viewBox:`0 0 12 12`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,children:[(0,J.jsx)(`line`,{x1:`3`,y1:`3`,x2:`9`,y2:`9`}),(0,J.jsx)(`line`,{x1:`9`,y1:`3`,x2:`3`,y2:`9`})]})}),t[6]=r,t[7]=n.name,t[8]=c):c=t[8];let l;return t[9]!==a||t[10]!==o||t[11]!==s||t[12]!==c?(l=(0,J.jsxs)(`span`,{className:a,children:[o,s,c]}),t[9]=a,t[10]=o,t[11]=s,t[12]=c,t[13]=l):l=t[13],l}var $e={Plan:`#EAB308`,Build:`#3B82F6`,Test:`#8B5CF6`,Review:`#F97316`,Done:`#22C55E`};function et(e){let t=(0,K.c)(10),{status:n,className:r}=e,i;t[0]===r?i=t[1]:(i=k(u.compact,`inline-flex items-center gap-1 rounded-full border border-border/50 bg-background px-2 py-0.5`,r),t[0]=r,t[1]=i);let a=$e[n],o;t[2]===a?o=t[3]:(o=(0,J.jsx)(`span`,{className:`h-2 w-2 shrink-0 rounded-full`,style:{backgroundColor:a}}),t[2]=a,t[3]=o);let s;t[4]===n?s=t[5]:(s=(0,J.jsx)(`span`,{className:`truncate`,children:n}),t[4]=n,t[5]=s);let c;return t[6]!==i||t[7]!==o||t[8]!==s?(c=(0,J.jsxs)(`span`,{className:i,children:[o,s]}),t[6]=i,t[7]=o,t[8]=s,t[9]=c):c=t[9],c}function tt({selectedTags:e,existingTags:t,onChange:n,placeholder:r=`Add tags...`,allowCreate:i=!0}){let[o,l]=(0,q.useState)(``),[d,m]=(0,q.useState)(!1),[h,g]=(0,q.useState)(0),_=(0,q.useRef)(null),v=(0,q.useMemo)(()=>new Set(e.map(e=>a(e.name))),[e]),y=e.length>=10,b=(0,q.useMemo)(()=>{let e=o.trim(),n=e.toLowerCase(),r=new Map;for(let e of t){let t=a(e.name);v.has(t)||r.set(t,{name:e.name,color:e.color})}for(let e of c){let t=a(e);!v.has(t)&&!r.has(t)&&r.set(t,{name:e,color:p(t)})}let l=(n?[...r.values()].filter(e=>e.name.toLowerCase().includes(n)):[...r.values()]).map(e=>({name:e.name,color:e.color,isCreate:!1}));if(e&&i&&!y){let t=f(e),n=a(t),i=v.has(n)||r.has(n),o=!s(t);!i&&o&&l.push({name:t,color:p(n),isCreate:!0})}return l},[o,t,v,y]);(0,q.useEffect)(()=>{g(0)},[o]),(0,q.useEffect)(function(){if(!d||y)return;let e=requestAnimationFrame(function(){_.current?.focus()});return function(){cancelAnimationFrame(e)}},[d,y]);function x(r){if(y)return;let i=f(r),o=a(i);if(v.has(o))return;let s=t.find(e=>a(e.name)===o)??{id:`new:${o}`,name:i,color:p(o)};n([...e,s]),l(``)}function S(t){n(e.filter(e=>e.id!==t.id))}function C(t){if(t.key===`ArrowDown`)t.preventDefault(),d||m(!0),g(e=>(e+1)%Math.max(b.length,1));else if(t.key===`ArrowUp`)t.preventDefault(),g(e=>(e-1+b.length)%Math.max(b.length,1));else if(t.key===`Enter`){t.preventDefault();let e=b[h];e&&x(e.name)}else t.key===`Backspace`&&!o&&e.length>0?S(e[e.length-1]):t.key===`Escape`&&(m(!1),_.current?.blur())}return(0,J.jsxs)(Ge,{open:d,onOpenChange:function(e){m(e),e||l(``)},children:[(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[e.map(function(e){return(0,J.jsx)(Qe,{tag:e,onRemove:()=>S(e)},e.id)}),(0,J.jsx)(Ve,{asChild:!0,children:(0,J.jsx)(A,{type:`button`,variant:`outline`,size:`icon-xs`,disabled:y,"aria-label":y?`Max 10 tags`:`Add tag`,className:k(`h-6 w-6 rounded-full border-dashed text-muted-foreground`,y&&`opacity-50`),children:(0,J.jsx)(ne,{className:`h-3 w-3`})})})]}),(0,J.jsxs)(Ie,{align:`start`,className:`w-72 p-0`,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,J.jsx)(`div`,{className:`border-b border-border p-2`,children:(0,J.jsx)(`input`,{ref:_,type:`text`,value:o,onChange:function(e){l(e.target.value)},onKeyDown:C,placeholder:y?`Max 10 tags`:r,disabled:y,className:k(u.body,`w-full rounded-md border border-input bg-background px-3 py-2 outline-none placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`)})}),(0,J.jsx)(`div`,{className:`overflow-y-auto overscroll-contain`,style:{maxHeight:220},children:b.length===0?(0,J.jsx)(`p`,{className:k(u.bodyMuted,`px-3 py-4 text-center`),children:y?`Tag limit reached`:`No tags found`}):b.map(function(e,t){return(0,J.jsxs)(`button`,{type:`button`,className:k(u.body,`flex w-full items-center gap-2 px-3 py-2 text-left hover:bg-accent`,h===t&&`bg-accent`),onClick:function(){x(e.name),_.current?.focus()},children:[(0,J.jsx)(`span`,{className:`h-2 w-2 shrink-0 rounded-full`,style:{backgroundColor:e.color}}),e.isCreate?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`span`,{className:`text-muted-foreground`,children:`Create`}),(0,J.jsx)(`span`,{className:`truncate font-medium`,children:e.name})]}):(0,J.jsx)(`span`,{className:`truncate`,children:e.name})]},e.isCreate?`create:${e.name}`:e.name)})})]})]})}function nt({open:e,onOpenChange:t,projectId:n,tags:r,onTagsChanged:i}){let[a,o]=(0,q.useState)(null),[s,c]=(0,q.useState)(``),[l,d]=(0,q.useState)(``),[f,p]=(0,q.useState)(!1),[m,h]=(0,q.useState)(!1),[g,_]=(0,q.useState)(null),[v,y]=(0,q.useState)(null);function b(e){o(e.id),c(e.name),_(null)}function x(){o(null),c(``),_(null)}async function S(){let e=l.trim();if(e){h(!0),_(null);try{let t=await je(n,e);i([...r,t]),d(``)}catch(e){_(e instanceof Error?e.message:`Failed to create tag`)}finally{h(!1)}}}async function E(e){let t=s.trim();if(t){p(!0),_(null);try{let a=await V(n,e,t);i(r.map(e=>e.id===a.id?{...e,name:a.name,color:a.color}:e)),x()}catch(e){_(e instanceof Error?e.message:`Failed to rename tag`)}finally{p(!1)}}}async function ee(e){p(!0),_(null);try{await Ee(n,e),i(r.filter(t=>t.id!==e)),y(null),a===e&&x()}catch(e){_(e instanceof Error?e.message:`Failed to delete tag`)}finally{p(!1)}}return(0,J.jsx)(pe,{open:e,onOpenChange:t,children:(0,J.jsxs)(de,{className:`flex max-h-[min(36rem,85vh)] flex-col sm:max-w-md`,children:[(0,J.jsx)(ue,{children:(0,J.jsx)(fe,{children:`Manage Tags`})}),(0,J.jsxs)(`div`,{className:`flex items-center gap-2 py-2`,children:[(0,J.jsx)(R,{value:l,onChange:e=>d(e.target.value),onKeyDown:e=>{e.key===`Enter`&&S(),e.key===`Escape`&&d(``)},placeholder:`New tag name...`,className:`h-8 flex-1`,disabled:m}),(0,J.jsx)(A,{size:`sm`,className:`h-8 shrink-0 bg-foreground text-background hover:bg-foreground/90`,onClick:()=>void S(),disabled:m||!l.trim(),children:m?(0,J.jsx)(T,{className:`h-3.5 w-3.5 animate-spin`}):`Add`})]}),r.length===0?(0,J.jsx)(`p`,{className:k(u.bodyMuted,`py-4 text-center`),children:`No tags yet. Create one above to get started.`}):(0,J.jsx)(ce,{className:`min-h-0 flex-1`,children:(0,J.jsx)(`div`,{className:`space-y-1 py-2 pr-3`,children:r.map(e=>{let t=a===e.id,n=v===e.id;return(0,J.jsx)(`div`,{className:k(`group flex items-center gap-2 rounded-md px-2 py-1.5 hover:bg-accent/40`,!t&&!n&&!f&&`cursor-pointer`),onClick:()=>{!f&&!t&&!n&&b(e)},children:t?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(R,{value:s,onChange:e=>c(e.target.value),onKeyDown:t=>{t.key===`Enter`&&E(e.id),t.key===`Escape`&&x()},className:`h-8 flex-1 text-sm`,autoFocus:!0,disabled:f}),(0,J.jsx)(A,{variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0`,onClick:()=>void E(e.id),disabled:f||!s.trim(),children:f?(0,J.jsx)(T,{className:`h-4 w-4 animate-spin`}):(0,J.jsx)(C,{className:`h-4 w-4`})}),(0,J.jsx)(A,{variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0`,onClick:x,disabled:f,children:(0,J.jsx)(O,{className:`h-4 w-4`})})]}):n?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`span`,{className:k(u.body,`flex-1 truncate`),children:[`Delete `,e.name,`? Removes from `,e.taskCount,` `,e.taskCount===1?`task`:`tasks`,`.`]}),(0,J.jsx)(A,{variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0 text-destructive hover:text-destructive`,onClick:()=>void ee(e.id),disabled:f,children:f?(0,J.jsx)(T,{className:`h-4 w-4 animate-spin`}):(0,J.jsx)(C,{className:`h-4 w-4`})}),(0,J.jsx)(A,{variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0`,onClick:()=>y(null),disabled:f,children:(0,J.jsx)(O,{className:`h-4 w-4`})})]}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`span`,{className:`h-2.5 w-2.5 shrink-0 rounded-full`,style:{backgroundColor:e.color}}),(0,J.jsx)(`span`,{className:k(u.body,`min-w-0 flex-1 truncate`),children:e.name}),(0,J.jsxs)(`span`,{className:k(u.caption,`shrink-0 text-muted-foreground`),children:[e.taskCount,` `,e.taskCount===1?`task`:`tasks`]}),(0,J.jsx)(A,{variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0 text-destructive opacity-0 pointer-events-none transition-opacity can-hover:group-hover:opacity-100 can-hover:group-hover:pointer-events-auto focus-visible:opacity-100 focus-visible:pointer-events-auto can-hover:hover:text-destructive`,onClick:t=>{t.stopPropagation(),y(e.id)},disabled:f,"aria-label":`Delete ${e.name}`,children:(0,J.jsx)(w,{className:`h-3.5 w-3.5`})})]})},e.id)})})}),g&&(0,J.jsx)(`p`,{className:k(u.caption,`text-destructive`),children:g})]})})}var rt=`09:00`;function Y(e){return String(e).padStart(2,`0`)}function it(){let e=new Date(Date.now()+3600*1e3);return`${e.getFullYear()}-${Y(e.getMonth()+1)}-${Y(e.getDate())}T${Y(e.getHours())}:${Y(e.getMinutes())}`}function at(){return{kind:`manual`,scheduleMode:`once`,scheduledAtLocal:it(),preset:`daily`,presetTime:rt,dayOfWeek:new Date().getDay(),timezone:g(),enabled:!0,eventKey:``}}function ot(e){let t=at();if(e.triggerType===`schedule`){if(e.scheduleCron){let n=d(e.scheduleCron);return{kind:`schedule`,scheduleMode:`repeating`,scheduledAtLocal:t.scheduledAtLocal,preset:n?.preset??`daily`,presetTime:n?.time??rt,dayOfWeek:n?.dayOfWeek??new Date().getDay(),timezone:e.timezone??t.timezone,enabled:e.enabled!==!1,eventKey:``}}if(e.scheduledAt){let n=new Date(e.scheduledAt);return{kind:`schedule`,scheduleMode:`once`,scheduledAtLocal:Number.isNaN(n.getTime())?t.scheduledAtLocal:`${n.getFullYear()}-${Y(n.getMonth()+1)}-${Y(n.getDate())}T${Y(n.getHours())}:${Y(n.getMinutes())}`,preset:t.preset,presetTime:t.presetTime,dayOfWeek:t.dayOfWeek,timezone:e.timezone??t.timezone,enabled:e.enabled!==!1,eventKey:``}}}return e.triggerType===`event`?{...t,kind:`event`,enabled:e.enabled!==!1,eventKey:e.eventKey??``}:t}function st(e){let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toISOString()}function ct(e){return e.kind===`manual`?{triggerType:null,scheduledAt:null,scheduleCron:null,timezone:null,enabled:!0,eventKey:null}:e.kind===`event`?{triggerType:`event`,scheduledAt:null,scheduleCron:null,timezone:null,enabled:e.enabled,eventKey:e.eventKey.trim()||null}:e.scheduleMode===`once`?{triggerType:`schedule`,scheduledAt:st(e.scheduledAtLocal),scheduleCron:null,timezone:e.timezone,enabled:e.enabled,eventKey:null}:{triggerType:`schedule`,scheduledAt:null,scheduleCron:h(e.preset,e.presetTime,e.dayOfWeek),timezone:e.timezone,enabled:e.enabled,eventKey:null}}function lt(e){return e.kind!==`manual`}function ut(e){return e.kind===`manual`?null:m(ct(e))}function dt(e){return e.replace(/^eventKey is required for event triggers$/,`Event key is required`).replace(/^eventKey must be (\d+) characters or fewer$/,`Event key must be $1 characters or fewer`).replace(/^eventKey may only contain letters, numbers, dots, colons, underscores, and hyphens$/,`Event key may only contain letters, numbers, dots, colons, underscores, and hyphens`)}function X(e){return e.startsWith(`Event key`)}function ft(e,t){return JSON.stringify(e)===JSON.stringify(t)}var pt=[{value:`0`,label:`Sunday`},{value:`1`,label:`Monday`},{value:`2`,label:`Tuesday`},{value:`3`,label:`Wednesday`},{value:`4`,label:`Thursday`},{value:`5`,label:`Friday`},{value:`6`,label:`Saturday`}];function Z(e,t){return{...e,...t}}function mt(e){let t=(0,K.c)(42),{value:n,onChange:r,collapsed:i,onCollapsedChange:a,showCollapseControl:o,error:s}=e,c=i===void 0?!1:i,l=o===void 0?!1:o,d=s===void 0?null:s,f;t[0]!==r||t[1]!==n?(f=function(e){r(Z(n,{kind:e}))},t[0]=r,t[1]=n,t[2]=f):f=t[2];let p=f,m;t[3]!==r||t[4]!==n?(m=function(e){r(Z(n,{scheduleMode:e}))},t[3]=r,t[4]=n,t[5]=m):m=t[5];let h=m;if(l&&c){let e;return t[6]===a?e=t[7]:(e=(0,J.jsx)(`div`,{className:`mt-4`,children:(0,J.jsx)(A,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>a?.(!1),children:`Add schedule or event trigger`})}),t[6]=a,t[7]=e),e}let g;t[8]!==r||t[9]!==a||t[10]!==l||t[11]!==n?(g=l&&(0,J.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,J.jsx)(`p`,{className:k(u.label),children:`Trigger`}),(0,J.jsxs)(A,{type:`button`,variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0 text-muted-foreground`,onClick:()=>{r(Z(n,{kind:`manual`})),a?.(!0)},children:[(0,J.jsx)(O,{className:`h-4 w-4`}),(0,J.jsx)(`span`,{className:`sr-only`,children:`Remove trigger`})]})]}),t[8]=r,t[9]=a,t[10]=l,t[11]=n,t[12]=g):g=t[12];let _;t[13]===p?_=t[14]:(_=e=>{(e===`manual`||e===`schedule`||e===`event`)&&p(e)},t[13]=p,t[14]=_);let v;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,J.jsx)(U,{value:`manual`,"aria-label":`Manual`,className:k(u.body,W),children:`Manual`}),t[15]=v):v=t[15];let y;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,J.jsx)(U,{value:`schedule`,"aria-label":`Schedule`,className:k(u.body,W),children:`Schedule`}),t[16]=y):y=t[16];let b;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,J.jsx)(U,{value:`event`,"aria-label":`Event`,className:k(u.body,W),children:`Event`}),t[17]=b):b=t[17];let x;t[18]!==_||t[19]!==n.kind?(x=(0,J.jsxs)(Ye,{type:`single`,value:n.kind,onValueChange:_,"aria-label":`Trigger type`,className:Xe,children:[v,y,b]}),t[18]=_,t[19]=n.kind,t[20]=x):x=t[20];let S;t[21]!==r||t[22]!==h||t[23]!==n?(S=n.kind===`schedule`&&(0,J.jsxs)(`div`,{className:`space-y-4 border-t border-border pt-4`,children:[(0,J.jsxs)(Ye,{type:`single`,value:n.scheduleMode,onValueChange:e=>{(e===`once`||e===`repeating`)&&h(e)},"aria-label":`Schedule mode`,className:`inline-flex h-auto w-fit justify-start rounded-full border-0 bg-background p-1 text-muted-foreground`,children:[(0,J.jsx)(U,{value:`once`,"aria-label":`Once`,className:k(u.body,`h-auto min-h-0 min-w-0 rounded-full border-0 bg-background px-4 py-1.5 data-[state=on]:bg-foreground data-[state=on]:text-background data-[state=on]:shadow-sm hover:bg-background hover:text-muted-foreground data-[state=on]:hover:bg-foreground data-[state=on]:hover:text-background`),children:`Once`}),(0,J.jsx)(U,{value:`repeating`,"aria-label":`Repeating`,className:k(u.body,`h-auto min-h-0 min-w-0 rounded-full border-0 bg-background px-4 py-1.5 data-[state=on]:bg-foreground data-[state=on]:text-background data-[state=on]:shadow-sm hover:bg-background hover:text-muted-foreground data-[state=on]:hover:bg-foreground data-[state=on]:hover:text-background`),children:`Repeating`})]}),n.scheduleMode===`once`?(0,J.jsxs)(`div`,{className:`space-y-2`,children:[(0,J.jsx)(z,{htmlFor:`schedule-once-at`,children:`Run at`}),(0,J.jsx)(R,{id:`schedule-once-at`,type:`datetime-local`,value:n.scheduledAtLocal,onChange:e=>r(Z(n,{scheduledAtLocal:e.target.value}))})]}):(0,J.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,J.jsxs)(`div`,{className:`space-y-2`,children:[(0,J.jsx)(z,{children:`Preset`}),(0,J.jsxs)(Te,{value:n.preset,onValueChange:e=>r(Z(n,{preset:e})),children:[(0,J.jsx)(Ce,{children:(0,J.jsx)(we,{})}),(0,J.jsxs)(Be,{children:[(0,J.jsx)(L,{value:`daily`,children:`Daily`}),(0,J.jsx)(L,{value:`weekdays`,children:`Weekdays`}),(0,J.jsx)(L,{value:`weekly`,children:`Weekly`})]})]})]}),n.preset===`weekly`&&(0,J.jsxs)(`div`,{className:`space-y-2`,children:[(0,J.jsx)(z,{children:`Day`}),(0,J.jsxs)(Te,{value:String(n.dayOfWeek),onValueChange:e=>r(Z(n,{dayOfWeek:Number(e)})),children:[(0,J.jsx)(Ce,{children:(0,J.jsx)(we,{})}),(0,J.jsx)(Be,{children:pt.map(function(e){return(0,J.jsx)(L,{value:e.value,children:e.label},e.value)})})]})]}),(0,J.jsxs)(`div`,{className:`space-y-2`,children:[(0,J.jsx)(z,{htmlFor:`schedule-time`,children:`Time`}),(0,J.jsx)(R,{id:`schedule-time`,type:`time`,value:n.presetTime,onChange:e=>r(Z(n,{presetTime:e.target.value}))})]})]}),(0,J.jsxs)(`p`,{className:k(u.caption,`text-muted-foreground`),children:[`Timezone: `,n.timezone]})]}),t[21]=r,t[22]=h,t[23]=n,t[24]=S):S=t[24];let C;t[25]!==d||t[26]!==r||t[27]!==n?(C=n.kind===`event`&&(0,J.jsxs)(`div`,{className:`space-y-2 border-t border-border pt-4`,children:[(0,J.jsx)(z,{htmlFor:`event-key`,children:`Event Key`}),(0,J.jsx)(R,{id:`event-key`,value:n.eventKey,placeholder:`door.opened`,"aria-invalid":!!(d&&X(d)),onChange:e=>r(Z(n,{eventKey:e.target.value}))}),d&&X(d)?(0,J.jsx)(`p`,{className:k(u.caption,`text-destructive`),children:d}):(0,J.jsxs)(`p`,{className:k(u.caption,`text-muted-foreground`),children:[`Test in chat with `,(0,J.jsxs)(`code`,{children:[`/send-event `,n.eventKey.trim()||`event.key`]})]})]}),t[25]=d,t[26]=r,t[27]=n,t[28]=C):C=t[28];let w;t[29]!==d||t[30]!==n.kind?(w=d&&n.kind!==`event`?(0,J.jsx)(`p`,{className:k(u.caption,`text-destructive`),children:d}):null,t[29]=d,t[30]=n.kind,t[31]=w):w=t[31];let T;t[32]!==r||t[33]!==n?(T=n.kind!==`manual`&&(0,J.jsxs)(`div`,{className:`space-y-2 border-t border-border pt-4`,children:[(0,J.jsx)(z,{children:`Status`}),(0,J.jsxs)(Ye,{type:`single`,value:n.enabled?`active`:`paused`,onValueChange:e=>{(e===`active`||e===`paused`)&&r(Z(n,{enabled:e===`active`}))},"aria-label":`Trigger status`,className:`inline-flex h-auto w-fit justify-start rounded-full border-0 bg-background p-1 text-muted-foreground`,children:[(0,J.jsx)(U,{value:`active`,"aria-label":`Active`,className:k(u.body,`h-auto min-h-0 min-w-0 rounded-full border-0 bg-background px-4 py-1.5 data-[state=on]:bg-foreground data-[state=on]:text-background data-[state=on]:shadow-sm hover:bg-background hover:text-muted-foreground data-[state=on]:hover:bg-foreground data-[state=on]:hover:text-background`),children:`Active`}),(0,J.jsx)(U,{value:`paused`,"aria-label":`Paused`,className:k(u.body,`h-auto min-h-0 min-w-0 rounded-full border-0 bg-background px-4 py-1.5 data-[state=on]:bg-foreground data-[state=on]:text-background data-[state=on]:shadow-sm hover:bg-background hover:text-muted-foreground data-[state=on]:hover:bg-foreground data-[state=on]:hover:text-background`),children:`Paused`})]})]}),t[32]=r,t[33]=n,t[34]=T):T=t[34];let E;return t[35]!==x||t[36]!==S||t[37]!==C||t[38]!==w||t[39]!==T||t[40]!==g?(E=(0,J.jsxs)(`div`,{className:`mt-4 space-y-4 rounded-lg border border-border p-4`,children:[g,x,S,C,w,T]}),t[35]=x,t[36]=S,t[37]=C,t[38]=w,t[39]=T,t[40]=g,t[41]=E):E=t[41],E}var Q=_(`app.task-list.ui`);function ht(e){let t=(0,K.c)(28),{onSearchTermChange:n}=e,[r,i]=(0,q.useState)(!1),[a,o]=(0,q.useState)(``),s;t[0]===n?s=t[1]:(s=function(e){o(e),n(e)},t[0]=n,t[1]=s);let c=s,l;t[2]===n?l=t[3]:(l=function(){o(``),n(``),i(!1)},t[2]=n,t[3]=l);let u=l,d;t[4]!==u||t[5]!==r?(d=()=>{r?u():i(!0)},t[4]=u,t[5]=r,t[6]=d):d=t[6];let f,p;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,J.jsx)(te,{className:`h-4 w-4`}),p=(0,J.jsx)(`span`,{className:`sr-only`,children:`Search tasks`}),t[7]=f,t[8]=p):(f=t[7],p=t[8]);let m;t[9]!==r||t[10]!==d?(m=(0,J.jsx)(se,{asChild:!0,children:(0,J.jsxs)(A,{type:`button`,variant:`ghost`,size:`icon-sm`,className:`text-muted-foreground`,onClick:d,"aria-expanded":r,children:[f,p]})}),t[9]=r,t[10]=d,t[11]=m):m=t[11];let h;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,J.jsx)(M,{children:`Search tasks`}),t[12]=h):h=t[12];let g;t[13]===m?g=t[14]:(g=(0,J.jsxs)(N,{children:[m,h]}),t[13]=m,t[14]=g);let _=r?`ml-1 w-44 opacity-100`:`w-0 opacity-0`,v;t[15]===_?v=t[16]:(v=k(`overflow-hidden transition-[width,opacity] duration-200`,_),t[15]=_,t[16]=v);let y;t[17]!==u||t[18]!==c||t[19]!==r||t[20]!==a?(y=r&&(0,J.jsx)(R,{type:`search`,value:a,onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Escape`&&u()},placeholder:`Search`,"aria-label":`Search tasks`,autoFocus:!0,className:`h-8 min-w-44 px-2`}),t[17]=u,t[18]=c,t[19]=r,t[20]=a,t[21]=y):y=t[21];let b;t[22]!==v||t[23]!==y?(b=(0,J.jsx)(`div`,{className:v,children:y}),t[22]=v,t[23]=y,t[24]=b):b=t[24];let x;return t[25]!==b||t[26]!==g?(x=(0,J.jsxs)(`div`,{className:`flex items-center`,children:[g,b]}),t[25]=b,t[26]=g,t[27]=x):x=t[27],x}function gt({projectId:e,onThreadSelect:t,initialTasks:n}){let r=y(),i=b(e=>e.projects),o=b(e=>e.selectedThreadId),s=b(e=>e.processingThreadIds),c=b(e=>e.pendingChatMessage),d=b(e=>e.queuedChatMessages),f=b(e=>e.projectModelSelections),p=i.find(t=>t.projectId===e),m=p?.threads.find(e=>e.threadId===o),h=o?f[o]:void 0,[g,_]=(0,q.useState)(n),[C,w]=(0,q.useState)(!1),[D,te]=(0,q.useState)(null),[O,j]=(0,q.useState)(``),[P,F]=(0,q.useState)(!1),[I,he]=(0,q.useState)([]),[L,R]=(0,q.useState)(new Set),[ve,Se]=(0,q.useState)(``),[Ce,we]=(0,q.useState)(!1),[Te,z]=(0,q.useState)(!1),[Ee,B]=(0,q.useState)([]),[je,Ie]=(0,q.useState)([]),[Be,Ve]=(0,q.useState)(at),[V,Ue]=(0,q.useState)(at),[Ge,U]=(0,q.useState)(!0),[Ye,W]=(0,q.useState)(null),[Xe,G]=(0,q.useState)(null);(0,q.useEffect)(()=>{Le(e).then(he).catch(e=>Q.error(`Failed to fetch project tags:`,e))},[e]);let{setActions:K}=Oe(),$e=(0,q.useCallback)(function(e){R(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),rt=(0,q.useCallback)(async function(){z(!0);try{await ae(e),_(await Ke(e)),Y(),$(),oe();let t=await ie();r({type:v.SetProjects,projects:t.projects,cloneRootPath:t.cloneRootPath})}catch(e){Q.error(`Failed to refresh project tasks:`,e)}finally{z(!1)}},[e,r]);(0,q.useEffect)(()=>(K((0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(ht,{onSearchTermChange:Se}),(0,J.jsxs)(N,{children:[(0,J.jsx)(se,{asChild:!0,children:(0,J.jsxs)(A,{type:`button`,variant:`ghost`,size:`icon-sm`,className:`text-muted-foreground`,onClick:()=>void rt(),disabled:Te,children:[(0,J.jsx)(x,{className:k(`h-4 w-4`,Te&&`animate-spin`)}),(0,J.jsx)(`span`,{className:`sr-only`,children:`Refresh tasks`})]})}),(0,J.jsx)(M,{children:`Refresh`})]}),(0,J.jsxs)(Re,{children:[(0,J.jsxs)(N,{children:[(0,J.jsx)(se,{asChild:!0,children:(0,J.jsx)(De,{asChild:!0,children:(0,J.jsxs)(A,{type:`button`,variant:`ghost`,size:`icon-sm`,className:`text-muted-foreground`,children:[(0,J.jsx)(S,{className:`h-4 w-4`}),(0,J.jsx)(`span`,{className:`sr-only`,children:`Filter and manage tags`})]})})}),(0,J.jsx)(M,{children:`Tags`})]}),(0,J.jsxs)(qe,{align:`end`,className:`max-h-[var(--radix-dropdown-menu-content-available-height)] w-56 overflow-y-auto`,children:[I.length===0?(0,J.jsx)(H,{disabled:!0,className:`text-muted-foreground`,children:`No tags yet`}):I.map(function(e){return(0,J.jsxs)(Fe,{checked:L.has(e.id),onCheckedChange:()=>$e(e.id),onSelect:e=>e.preventDefault(),children:[(0,J.jsx)(`span`,{className:`h-2 w-2 shrink-0 rounded-full`,style:{backgroundColor:e.color}}),(0,J.jsx)(`span`,{className:`truncate`,children:e.name})]},e.id)}),(0,J.jsx)(Je,{}),(0,J.jsxs)(H,{onClick:()=>we(!0),children:[(0,J.jsx)(ee,{className:`h-4 w-4`}),`Edit Tags`]})]})]})]})),()=>K(null)),[K,I,L,$e,Te,rt]);function Y(){me(`project-tasks:${e}:`)}let it=p?.tasksModifiedCount??0,st=(0,q.useRef)({});(0,q.useEffect)(()=>{let t=st.current[e]??0;if(it===0){st.current[e]=0;return}t!==it&&(st.current[e]=it,it>t&&rt())},[it,e,rt]),(0,q.useEffect)(()=>{if(!g.some(e=>e.working))return;let t=setInterval(async()=>{try{let n=await Ke(e);_(n),n.some(e=>e.working)||clearInterval(t)}catch(e){Q.error(`Failed to poll project tasks:`,e)}},2e3);return()=>clearInterval(t)},[g,e]),(0,q.useEffect)(()=>{_(n)},[n]),(0,q.useEffect)(()=>{C&&(j(``),B([]),Ve(at()),U(!0))},[C]),(0,q.useEffect)(()=>{D&&(Ie(D.task.tags??[]),Ue(ot(D.task)))},[D]);function X(e){_(t=>t.map(t=>t.id===e.id?e:t))}function pt(e){j(e.description),te({task:e}),G(null)}function Z(){te(null),j(``),G(null)}function gt(e,t){if(e)return null;let n=ut(t);return n?dt(n):null}async function _t(){if(!O.trim())return;let t=gt(Ge,Be);if(t){W(t);return}W(null),F(!0);try{let t=Ee.map(e=>e.name),n=Ge?{}:ct(Be),r=await Pe(e,O,{threadId:o??void 0,provider:h?.provider??m?.modelProvider,model:h?.id??m?.model,tags:t.length>0?t:void 0,...n});_(e=>[...e,r]),Y(),$(),w(!1),j(``),B([]),W(null)}catch(e){W(dt(e instanceof Error?e.message:`Failed to add task`)),Q.error(`Failed to add task:`,e)}finally{F(!1)}}async function vt(){if(!O.trim()||!D)return;let t=gt(!lt(V),V);if(t){G(t);return}G(null),F(!0);try{let t=O.trim(),n=t!==D.task.description.trim(),r=je.map(e=>e.name),i=new Set((D.task.tags??[]).map(e=>a(e.name))),s=new Set(r.map(e=>a(e))),c=i.size!==s.size||[...s].some(e=>!i.has(e)),l=!ft(ot(D.task),V),u=l?ct(V):{};if(!n&&!c&&!l){Z();return}let d=await ze(e,D.task.id,{description:n?t:void 0,threadId:o??void 0,provider:h?.provider??m?.modelProvider,model:h?.id??m?.model,tags:c?r:void 0,...u});_(e=>e.map(e=>e.id===d.id?d:e)),Y(),c&&$(),Z()}catch(e){G(dt(e instanceof Error?e.message:`Failed to save task`)),Q.error(`Failed to save task:`,e)}finally{F(!1)}}async function yt(){if(D){F(!0);try{await ge(e,D.task.id),_(e=>e.filter(e=>e.id!==D.task.id)),Y(),$(),Z()}catch(e){Q.error(`Failed to delete task:`,e)}finally{F(!1)}}}function $(){Le(e).then(he).catch(e=>Q.error(`Failed to refresh project tags:`,e))}function bt(t){let n=new Set(t.map(function(e){return e.id}));he(t),R(function(e){return new Set([...e].filter(e=>n.has(e)))}),Ke(e).then(_).catch(e=>Q.error(`Failed to refresh tasks after tag change:`,e))}async function xt(n){let i=await re(e);if(!i)return;let a=null,o=null,s=await ke(i,t=>{o||(o=t,r({type:v.AddCreatingThread,projectId:e,threadId:t,title:_e(p)}),r({type:v.AddProcessingThread,threadId:t})),ze(e,n.id,{status:`Build`,working:!0,threadId:t}).then(e=>{a=e,X(e)})});if(!s){o&&(r({type:v.RemoveCreatingThread,projectId:e,threadId:o}),r({type:v.RemoveProcessingThread,threadId:o}));return}r({type:v.RemoveProcessingThread,threadId:s});try{await Ae(r)}catch(e){Q.error(`Failed to refresh projects after task thread creation:`,e)}await He(e,n,`Build`,s,a,X);let c=await ye(e,s);if(!c){Q.error(`No model configuration found. Please configure a model and provider for this project first.`);return}xe(r,s,c.model,c.provider),t?await t(s):r({type:v.SelectThread,threadId:s,projectId:e}),r({type:v.SetPendingChatMessage,message:{threadId:s,message:n.description,model:c.model,provider:c.provider}})}async function St(n){if(!o){Q.error(`No selected thread found for project task implementation.`);return}let i=await ye(e,o);if(!i){Q.error(`No model configuration found. Please configure a model and provider for this project first.`);return}if(xe(r,o,i.model,i.provider),X(await ze(e,n.id,{status:`Build`,working:!0,threadId:o})),t?await t(o):r({type:v.SelectThread,threadId:o,projectId:e}),s.includes(o)||c?.threadId===o||d.some(e=>e.threadId===o)){r({type:v.EnqueueChatMessage,message:{id:l(),threadId:o,paneId:`primary`,message:n.description,model:i.model,attachments:[],provider:i.provider}});return}r({type:v.SetPendingChatMessage,message:{threadId:o,message:n.description,model:i.model,provider:i.provider}})}async function Ct(t){X(await We(e,t.id)),Y()}async function wt(t){X(await ze(e,t.id,{status:`Done`,working:!1})),Y()}let Tt=Ne(g).filter(function(e){return e.status!==`Done`}),Et=ve.trim().toLocaleLowerCase(),Dt=Tt.filter(e=>{let t=new Set((e.tags??[]).map(function(e){return e.id})),n=L.size===0||[...L].every(e=>t.has(e)),r=[e.title,e.description,...(e.tags??[]).map(function(e){return e.name})].join(` `).toLocaleLowerCase(),i=!Et||r.includes(Et);return n&&i});return(0,J.jsxs)(`div`,{className:`relative flex h-full min-h-0 min-w-0 flex-col overflow-hidden`,children:[(0,J.jsx)(ce,{className:`min-h-0 min-w-0 flex-1 overflow-hidden`,children:(0,J.jsx)(`div`,{className:`pb-14`,children:Tt.length===0?(0,J.jsx)(`p`,{className:k(u.bodyMuted,`px-4 py-8 text-center`),children:`No active tasks yet. Add one to get started.`}):Dt.length===0?(0,J.jsx)(`p`,{className:k(u.bodyMuted,`px-4 py-8 text-center`),children:`No tasks match the current filters.`}):(0,J.jsx)(`div`,{className:`min-w-0 w-full divide-y divide-border`,children:Dt.map(e=>(0,J.jsxs)(`div`,{className:`grid min-w-0 grid-cols-[minmax(0,1fr)_auto] grid-rows-[auto_auto] gap-x-2 gap-y-1 px-4 py-3 hover:bg-accent/40 sm:flex sm:items-start sm:gap-4`,children:[(0,J.jsxs)(`button`,{type:`button`,className:`col-start-1 row-start-1 block min-w-0 overflow-hidden text-left sm:flex-1`,onClick:()=>pt(e),children:[(0,J.jsx)(`p`,{className:k(u.label,`truncate leading-normal`),children:e.title}),(0,J.jsx)(`p`,{className:k(u.caption,`mt-1 line-clamp-2 break-all text-muted-foreground max-sm:hidden`),children:e.description}),be(e)&&(0,J.jsx)(`p`,{className:k(u.caption,`mt-1 text-muted-foreground`),children:be(e)}),(e.status!==`Ready`||(e.tags?.length??0)>0||e.modified)&&(0,J.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:[e.status!==`Ready`&&(0,J.jsx)(et,{status:e.status}),e.modified&&(0,J.jsx)(`span`,{className:`inline-flex items-center rounded-full bg-brand/15 px-2 py-0.5 text-[11px] font-medium leading-none text-brand`,children:`modified`}),e.tags?.map(function(e){return(0,J.jsx)(Qe,{tag:e},e.id)})]})]}),(0,J.jsx)(`button`,{type:`button`,className:`col-span-2 row-start-2 block min-w-0 overflow-hidden text-left sm:hidden`,onClick:()=>pt(e),children:(0,J.jsx)(`p`,{className:k(u.caption,`line-clamp-4 break-all text-muted-foreground`),children:e.description})}),(e.status!==`Ready`||(e.tags?.length??0)>0||e.modified)&&(0,J.jsxs)(`div`,{className:`col-span-2 row-start-3 flex min-w-0 flex-wrap gap-1 sm:hidden`,children:[e.status!==`Ready`&&(0,J.jsx)(et,{status:e.status}),e.modified&&(0,J.jsx)(`span`,{className:`inline-flex items-center rounded-full bg-brand/15 px-2 py-0.5 text-[11px] font-medium leading-none text-brand`,children:`modified`}),e.tags?.map(function(e){return(0,J.jsx)(Qe,{tag:e},e.id)})]}),(0,J.jsxs)(`div`,{className:`col-start-2 row-start-1 flex shrink-0 items-center gap-1.5 self-start`,children:[e.threadId&&t&&(0,J.jsxs)(N,{children:[(0,J.jsx)(se,{asChild:!0,children:(0,J.jsxs)(A,{variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0`,onClick:()=>t(e.threadId),children:[(0,J.jsx)(E,{className:`h-4 w-4`}),(0,J.jsx)(`span`,{className:`sr-only`,children:`Open thread`})]})}),(0,J.jsx)(M,{children:`Open thread`})]}),(0,J.jsx)(Ze,{task:e,onImplementInNewThread:xt,onImplementInThisThread:St,onMarkDone:wt,onRunNow:Ct})]})]},e.id))})})}),(0,J.jsxs)(N,{children:[(0,J.jsx)(se,{asChild:!0,children:(0,J.jsxs)(A,{size:`icon`,className:`absolute bottom-6 right-6 z-10 h-10 w-10 rounded-full shadow-lg`,onClick:()=>w(!0),children:[(0,J.jsx)(ne,{className:`h-5 w-5`}),(0,J.jsx)(`span`,{className:`sr-only`,children:`Add task`})]})}),(0,J.jsx)(M,{children:`Add task`})]}),(0,J.jsx)(pe,{open:C,onOpenChange:e=>{w(e),e||W(null)},children:(0,J.jsxs)(de,{className:`max-w-2xl flex-col max-md:top-[max(1rem,env(safe-area-inset-top,0px))] max-md:max-h-[calc(100dvh-2rem)] max-md:translate-y-0 max-md:overflow-y-auto max-md:data-[state=closed]:slide-out-to-top max-md:data-[state=open]:slide-in-from-top max-md:data-[state=closed]:slide-out-to-left-0 max-md:data-[state=open]:slide-in-from-left-0 max-md:data-[state=closed]:zoom-out-100 max-md:data-[state=open]:zoom-in-100 md:max-h-[calc(100svh-2rem)]`,children:[(0,J.jsx)(ue,{children:(0,J.jsxs)(N,{children:[(0,J.jsx)(se,{asChild:!0,children:(0,J.jsx)(fe,{className:`w-fit cursor-help`,children:`Add Task`})}),(0,J.jsx)(M,{side:`top`,className:`max-w-xs`,children:`A title will be generated automatically from your description.`})]})}),(0,J.jsxs)(`div`,{className:`py-2`,children:[(0,J.jsx)(Me,{placeholder:`Describe what needs to be done...`,value:O,onChange:e=>j(e.target.value),rows:12,className:`max-h-[min(16rem,40svh)] resize-none text-base sm:max-h-none`,autoFocus:!0,onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&_t()}}),(0,J.jsx)(`div`,{className:`mt-4`,children:(0,J.jsx)(tt,{selectedTags:Ee,existingTags:I,onChange:B,allowCreate:!1})}),(0,J.jsx)(mt,{value:Be,onChange:e=>{Ve(e),W(null)},collapsed:Ge,onCollapsedChange:U,showCollapseControl:!0,error:Ye})]}),(0,J.jsx)(le,{children:(0,J.jsx)(A,{onClick:()=>void _t(),disabled:P||!O.trim(),children:P?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(T,{className:`mr-1 h-3 w-3 animate-spin`}),`Generating title...`]}):`Add`})})]})}),(0,J.jsx)(pe,{open:D!==null,onOpenChange:e=>!e&&Z(),children:(0,J.jsxs)(de,{className:`max-w-2xl flex-col max-md:top-[max(1rem,env(safe-area-inset-top,0px))] max-md:max-h-[calc(100dvh-2rem)] max-md:translate-y-0 max-md:overflow-y-auto max-md:data-[state=closed]:slide-out-to-top max-md:data-[state=open]:slide-in-from-top max-md:data-[state=closed]:slide-out-to-left-0 max-md:data-[state=open]:slide-in-from-left-0 max-md:data-[state=closed]:zoom-out-100 max-md:data-[state=open]:zoom-in-100 md:max-h-[calc(100svh-2rem)]`,children:[(0,J.jsx)(ue,{children:(0,J.jsx)(fe,{children:`Edit Task`})}),(0,J.jsxs)(`div`,{className:`py-2`,children:[(0,J.jsx)(Me,{placeholder:`Describe what needs to be done...`,value:O,onChange:e=>j(e.target.value),rows:12,className:`max-h-[min(16rem,40svh)] resize-none text-base sm:max-h-none`,autoFocus:!0,onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&vt()}}),(0,J.jsx)(`div`,{className:`mt-4`,children:(0,J.jsx)(tt,{selectedTags:je,existingTags:I,onChange:Ie,allowCreate:!1})}),(0,J.jsx)(mt,{value:V,onChange:e=>{Ue(e),G(null)},showCollapseControl:!0,collapsed:!lt(V),onCollapsedChange:e=>{e&&Ue(at()),G(null)},error:Xe})]}),(0,J.jsxs)(le,{className:`flex-row justify-between gap-2 sm:gap-0`,children:[(0,J.jsx)(A,{variant:`destructive`,onClick:()=>void yt(),disabled:P,children:`Delete`}),(0,J.jsx)(A,{onClick:()=>void vt(),disabled:P||!O.trim(),className:`w-auto`,children:P?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(T,{className:`mr-1 h-3 w-3 animate-spin`}),`Saving...`]}):`Save`})]})]})}),(0,J.jsx)(nt,{open:Ce,onOpenChange:we,projectId:e,tags:I,onTagsChanged:bt})]})}function _t(e){let t=(0,K.c)(13),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({projectId:r,loadVersion:n,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a;t[4]!==n||t[5]!==r?(a=B(r,n),t[4]=n,t[5]=r,t[6]=a):a=t[6];let o;t[7]===r?o=t[8]:(o=()=>ve(r),t[7]=r,t[8]=o);let s=he(a,o),c;return t[9]!==s||t[10]!==r||t[11]!==i?(c=(0,J.jsx)(gt,{projectId:r,initialTasks:s,...i}),t[9]=s,t[10]=r,t[11]=i,t[12]=c):c=t[12],c}function vt(e){let t=(0,K.c)(18),n,r;t[0]===e?(n=t[1],r=t[2]):({refreshTrigger:r,...n}=e,t[0]=e,t[1]=n,t[2]=r);let i=r===void 0?0:r,[a,o]=(0,q.useState)(0),s,c;t[3]!==n.projectId||t[4]!==i?(s=()=>{i!==0&&o(e=>(I(B(n.projectId,e)),e+1))},c=[i,n.projectId],t[3]=n.projectId,t[4]=i,t[5]=s,t[6]=c):(s=t[5],c=t[6]),(0,q.useEffect)(s,c);let l;t[7]!==a||t[8]!==n.projectId?(l=function(){I(B(n.projectId,a)),o(yt)},t[7]=a,t[8]=n.projectId,t[9]=l):l=t[9];let u=l,d;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,J.jsx)(P,{className:`h-64`}),t[10]=d):d=t[10];let f=`${n.projectId}:${a}`,p;t[11]!==a||t[12]!==n||t[13]!==f?(p=(0,J.jsx)(q.Suspense,{fallback:d,children:(0,J.jsx)(_t,{...n,loadVersion:a},f)}),t[11]=a,t[12]=n,t[13]=f,t[14]=p):p=t[14];let m;return t[15]!==u||t[16]!==p?(m=(0,J.jsx)(G,{fallbackTitle:`Failed to load tasks`,onRetry:u,children:p}),t[15]=u,t[16]=p,t[17]=m):m=t[17],m}function yt(e){return e+1}var $=_(`app.tasks-view.ui`);function bt({projectId:e,refreshTrigger:t}){let n=y(),i=b(e=>e.projects),a=b(e=>e.selectedThreadId),s=b(e=>e.selectedProjectId),{expandWindow:c,hasOpenWindows:l}=F();(0,q.useEffect)(()=>{let e=!1;return(async()=>{try{let{getProjects:t,invalidateProjectsCache:i}=await r(async()=>{let{getProjects:e,invalidateProjectsCache:t}=await import(`./api-ODizoHnY.js`).then(e=>e.r);return{getProjects:e,invalidateProjectsCache:t}},__vite__mapDeps([0,1,2]));i();let a=await t();e||n({type:v.SetProjects,projects:a.projects,cloneRootPath:a.cloneRootPath})}catch(e){$.error(`Failed to refresh projects on tasks view mount:`,e)}})(),()=>{e=!0}},[n]);async function u(t){if(i.find(t=>t.projectId===e)){l&&c(o);try{let{getProjects:i,invalidateProjectsCache:o}=await r(async()=>{let{getProjects:e,invalidateProjectsCache:t}=await import(`./api-ODizoHnY.js`).then(e=>e.r);return{getProjects:e,invalidateProjectsCache:t}},__vite__mapDeps([0,1,2]));o();let c=await i();n({type:v.SetProjects,projects:c.projects,cloneRootPath:c.cloneRootPath});let l=c.projects.find(t=>t.projectId===e);if(l&&l.threads.find(e=>e.threadId===t)){(a!==t||s!==e)&&n({type:v.SelectThread,threadId:t,projectId:e});try{let e=await j();n({type:v.SetProcessingThreads,threadIds:e})}catch(e){$.error(`Failed to fetch processing threads after thread selection:`,e)}}}catch(r){$.error(`Failed to refresh projects for thread selection:`,r),(a!==t||s!==e)&&n({type:v.SelectThread,threadId:t,projectId:e});try{let e=await j();n({type:v.SetProcessingThreads,threadIds:e})}catch(e){$.error(`Failed to fetch processing threads after fallback thread selection:`,e)}}}}return(0,J.jsx)(`div`,{className:`relative flex h-full min-w-0 flex-col overflow-hidden`,children:(0,J.jsx)(`div`,{className:`min-w-0 flex-1 overflow-hidden`,children:(0,J.jsx)(vt,{projectId:e,refreshTrigger:t,onThreadSelect:u})})})}export{bt as TasksView};