tarsk 0.6.85 → 0.6.86

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 (92) hide show
  1. package/dist/index.js +2596 -1250
  2. package/dist/public/assets/{account-view-0Y8-BC99.js → account-view-CmZrZmJf.js} +1 -1
  3. package/dist/public/assets/{alert-dialog-Cf2bArEP.js → alert-dialog-CJ403H9_.js} +1 -1
  4. package/dist/public/assets/api-Cho1mlFq.js +2 -0
  5. package/dist/public/assets/{async-error-boundary-DjDqZUsh.js → async-error-boundary-BIrTHWz-.js} +1 -1
  6. package/dist/public/assets/{browser-tab-BMlFSd3G.js → browser-tab-BJOfxs_k.js} +2 -2
  7. package/dist/public/assets/{button-BvwSd5oT.js → button-Djzr1B_4.js} +1 -1
  8. package/dist/public/assets/{card-BQvbp3oN.js → card-B0sh3Qvx.js} +1 -1
  9. package/dist/public/assets/{chat-dock-context-DuJCw4sJ.js → chat-dock-context-C-oyjLpB.js} +1 -1
  10. package/dist/public/assets/{commit-dialog-C7HjZNiu.js → commit-dialog-Dpz9gCzR.js} +1 -1
  11. package/dist/public/assets/{commit-error-dialog-4ZKRthpk.js → commit-error-dialog-CaPz12sp.js} +1 -1
  12. package/dist/public/assets/{commit-method-fields-CT7UxiA5.js → commit-method-fields-Cp9zzEl4.js} +1 -1
  13. package/dist/public/assets/{conversation-history-view-BMfQxAZo.js → conversation-history-view-9kBUV0vM.js} +1 -1
  14. package/dist/public/assets/{create-project-dialog-DALmTfiX.js → create-project-dialog-DbrfdrCG.js} +2 -2
  15. package/dist/public/assets/{create-project-workspace-BsVL5md0.js → create-project-workspace-BXawjzKi.js} +2 -2
  16. package/dist/public/assets/{create-repo-dialog-epoRQwy-.js → create-repo-dialog-Bq8doRpR.js} +1 -1
  17. package/dist/public/assets/{delete-confirm-dialog-DYplAaw1.js → delete-confirm-dialog-Bcy-0viP.js} +1 -1
  18. package/dist/public/assets/{diff-view-zH5WmZmx.js → diff-view-DdhUoX_0.js} +1 -1
  19. package/dist/public/assets/{dist-T3Rfl3KQ.js → dist-67Q0Rzil.js} +1 -1
  20. package/dist/public/assets/{dist-COaJwOux.js → dist-BGhGR6wN.js} +1 -1
  21. package/dist/public/assets/{dist-CK_gsqZm.js → dist-BnsVdica.js} +1 -1
  22. package/dist/public/assets/{dist-CjfjtFqY.js → dist-CRbBwZ5Q.js} +1 -1
  23. package/dist/public/assets/{dist-D4L066Cn.js → dist-D3LcCYeO.js} +1 -1
  24. package/dist/public/assets/dist-DQEC_JS0.js +2 -0
  25. package/dist/public/assets/{dist-DxHDUXDv.js → dist-DkiU4lhK.js} +1 -1
  26. package/dist/public/assets/{dist-CcZPa1gi.js → dist-DwfbSihk.js} +1 -1
  27. package/dist/public/assets/{es2015-C5AR6Xgu.js → es2015-BDTYd1CN.js} +1 -1
  28. package/dist/public/assets/{explorer-monaco-editor-bFm3QJ-c.js → explorer-monaco-editor-xuJXC2xI.js} +1 -1
  29. package/dist/public/assets/{explorer-tab-view-DuwN2R4l.js → explorer-tab-view-DQBB5FyG.js} +2 -2
  30. package/dist/public/assets/{explorer-tree-BOmePXZu.js → explorer-tree-CY3lMVK7.js} +1 -1
  31. package/dist/public/assets/{explorer-view-7TKT07h_.js → explorer-view-rQCB_a3U.js} +3 -3
  32. package/dist/public/assets/{git-history-dialog-DWYho36A.js → git-history-dialog-4KNkUR0v.js} +1 -1
  33. package/dist/public/assets/{index-B1RuOyec.css → index-BPQfGy4n.css} +1 -1
  34. package/dist/public/assets/index-BlkYPP7B.js +113 -0
  35. package/dist/public/assets/{model-list-controls-fxMZD0mL.js → model-list-controls-CB81yfmg.js} +1 -1
  36. package/dist/public/assets/{onboarding-dialog-C1LKCH1z.js → onboarding-dialog-Cn4uHVaE.js} +1 -1
  37. package/dist/public/assets/{pill-tabs-CwuYHztp.js → pill-tabs-B9CkWUiW.js} +1 -1
  38. package/dist/public/assets/{progress-indicator-Bub-larq.js → progress-indicator-Dr2oM_0d.js} +1 -1
  39. package/dist/public/assets/{project-coding-view-B3RYNFx_.js → project-coding-view-DO5x6ijQ.js} +1 -1
  40. package/dist/public/assets/{project-danger-zone-view-CDLOltuo.js → project-danger-zone-view-Dn2Sek-x.js} +1 -1
  41. package/dist/public/assets/{project-env-vars-view-C1mVjLa-.js → project-env-vars-view-DmzuX_8z.js} +1 -1
  42. package/dist/public/assets/{project-model-aliases-view-Brgx0_x-.js → project-model-aliases-view-Btu6AABR.js} +1 -1
  43. package/dist/public/assets/project-settings-view-9ZbeSiSn.js +1 -0
  44. package/dist/public/assets/{project-tools-view-B2BWonsn.js → project-tools-view-BJFer5bm.js} +1 -1
  45. package/dist/public/assets/providers-list-view-CBvNXPMw.js +1 -0
  46. package/dist/public/assets/{pull-request-dialog-CiNuslCp.js → pull-request-dialog-f3w4LdrS.js} +1 -1
  47. package/dist/public/assets/{pull-with-changes-dialog-C34UMAcq.js → pull-with-changes-dialog-a8yG_wvB.js} +1 -1
  48. package/dist/public/assets/{push-before-pr-dialog-FoUo055j.js → push-before-pr-dialog-C8dK-r1y.js} +1 -1
  49. package/dist/public/assets/{scroll-area-qgDSyMlD.js → scroll-area-BTSuUr9o.js} +1 -1
  50. package/dist/public/assets/{settings-general-tabs-view-YvyL4wXy.js → settings-general-tabs-view-Cp2LBtQE.js} +2 -2
  51. package/dist/public/assets/{settings-general-view-MkCRhx2w.js → settings-general-view-CEtewYl1.js} +1 -1
  52. package/dist/public/assets/{settings-list-ur331vXO.js → settings-list-mil_4_AR.js} +1 -1
  53. package/dist/public/assets/{settings-logs-view-B-T372j8.js → settings-logs-view-CYBWy-aN.js} +3 -3
  54. package/dist/public/assets/{settings-mcp-servers-view-CCtQniUl.js → settings-mcp-servers-view-BgP_PRL-.js} +2 -2
  55. package/dist/public/assets/{settings-models-view-HtJlfsQ0.js → settings-models-view-CVujPn9N.js} +1 -1
  56. package/dist/public/assets/{settings-plugins-view-C0t1Lsqr.js → settings-plugins-view-DGpw6oP7.js} +2 -2
  57. package/dist/public/assets/{settings-providers-view-DKV-MltK.js → settings-providers-view-CrBsp3JT.js} +2 -2
  58. package/dist/public/assets/{settings-remote-machines-view-hrC3HhoE.js → settings-remote-machines-view--F2JyEob.js} +1 -1
  59. package/dist/public/assets/{settings-setup-view-iBGLRzYS.js → settings-setup-view-CrYnDkWP.js} +2 -2
  60. package/dist/public/assets/{settings-skills-view-DDHClBVo.js → settings-skills-view-Cky2XWQ3.js} +2 -2
  61. package/dist/public/assets/{settings-slack-view-NHh-36q_.js → settings-slack-view-CpWvaF6m.js} +1 -1
  62. package/dist/public/assets/{settings-slash-commands-view-BxBHz5ya.js → settings-slash-commands-view-BjM6ze37.js} +1 -1
  63. package/dist/public/assets/{settings-statistics-view-DrwjDQrK.js → settings-statistics-view-C-qsV5R3.js} +1 -1
  64. package/dist/public/assets/{settings-storage-view-ImCMtn2t.js → settings-storage-view-BWR6CZ3o.js} +1 -1
  65. package/dist/public/assets/{settings-subagents-view-DHHymb-n.js → settings-subagents-view-CCxLCJAB.js} +1 -1
  66. package/dist/public/assets/{settings-system-prompt-view-tzbE0lD7.js → settings-system-prompt-view-DoB9R-el.js} +1 -1
  67. package/dist/public/assets/{settings-tab-bar-gGaC6MfY.js → settings-tab-bar-BCv1dBl8.js} +1 -1
  68. package/dist/public/assets/{settings-view-Dpza57LM.js → settings-view-DBeTJ7yv.js} +2 -2
  69. package/dist/public/assets/{slug-utils-D7Y0Xtis.js → slug-utils-DQA1OvXq.js} +1 -1
  70. package/dist/public/assets/store-D151firE.js +8 -0
  71. package/dist/public/assets/{table-GKMBZepT.js → table-BXRLirbI.js} +1 -1
  72. package/dist/public/assets/{tasks-view-CPIBCDSQ.js → tasks-view-zG5dsHgF.js} +1 -1
  73. package/dist/public/assets/{terminal-panel-hERoQQC7.js → terminal-panel-DdCyImne.js} +1 -1
  74. package/dist/public/assets/{toggle-group-DpK_U8jx.js → toggle-group-D3YTdr2u.js} +1 -1
  75. package/dist/public/assets/{tooltip-CqktA8Zq.js → tooltip-CXREivps.js} +1 -1
  76. package/dist/public/assets/{use-account-settings-query-R4H9qmd3.js → use-account-settings-query-DVhIle0W.js} +1 -1
  77. package/dist/public/assets/{use-active-dock-panel-instance-hpa6hhuw.js → use-active-dock-panel-instance-DDpytbsn.js} +1 -1
  78. package/dist/public/assets/{use-git-check-D6llSExJ.js → use-git-check-D5_upppc.js} +1 -1
  79. package/dist/public/assets/{use-installed-ai-files-B4-NTX_g.js → use-installed-ai-files-CD4qXZcA.js} +1 -1
  80. package/dist/public/assets/{utils-BHAZna1O.js → utils-DfZXN5fy.js} +1 -1
  81. package/dist/public/assets/{web-BRXrtee5.js → web--nZYyGWI.js} +1 -1
  82. package/dist/public/assets/{web-Do-1UIKE.js → web-CBqrNztZ.js} +1 -1
  83. package/dist/public/assets/{web-DiVO7QnD.js → web-CNrJjhVi.js} +1 -1
  84. package/dist/public/assets/{web-DNlXzk7q.js → web-MHSO59is.js} +1 -1
  85. package/dist/public/index.html +22 -22
  86. package/package.json +1 -1
  87. package/dist/public/assets/api-DS1qgAo_.js +0 -2
  88. package/dist/public/assets/dist-PhNKneni.js +0 -2
  89. package/dist/public/assets/index-SP0wF0IN.js +0 -113
  90. package/dist/public/assets/project-settings-view-BeGFajVJ.js +0 -1
  91. package/dist/public/assets/providers-list-view-CtgtT08O.js +0 -1
  92. package/dist/public/assets/store-DdiKV6YO.js +0 -8
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{s as i}from"./chunk-QFMPRPBF-COsSkB7x.js";import{ln as a}from"./dist-PhNKneni.js";import{r as o}from"./store-DdiKV6YO.js";import{t as s}from"./utils-BHAZna1O.js";import{at as c,d as l,in as u,u as d,xn as f}from"./lucide-react-BFzs_X2U.js";import{t as p}from"./button-BvwSd5oT.js";import{O as m,an as h,hn as g,li as _,tt as v}from"./api-DS1qgAo_.js";import{t as y}from"./use-toast-xpb5jNtN.js";import{At as b,Ht as x,fr as S,jt as C}from"./index-SP0wF0IN.js";import{t as w}from"./delete-confirm-dialog-DYplAaw1.js";var T=t(),E=e(n(),1),D=r(),O=500;function k(e){let t=(0,T.c)(6),{title:n,description:r,children:i}=e,a;t[0]!==r||t[1]!==n?(a=(0,D.jsx)(C,{title:n,description:r,sticky:!1}),t[0]=r,t[1]=n,t[2]=a):a=t[2];let o;return t[3]!==i||t[4]!==a?(o=(0,D.jsxs)(x,{children:[a,i]}),t[3]=i,t[4]=a,t[5]=o):o=t[5],o}function A(){let e=(0,T.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,D.jsxs)(`div`,{className:`flex-1 space-y-2 rounded-xl border bg-card p-5`,children:[(0,D.jsx)(S,{className:`h-4 w-20`}),(0,D.jsx)(S,{className:`h-9 w-28`})]}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,D.jsxs)(`div`,{className:`flex gap-4 px-6 pb-6 pt-6`,children:[t,(0,D.jsxs)(`div`,{className:`flex-1 space-y-3 rounded-xl border bg-card p-5`,children:[(0,D.jsx)(S,{className:`h-4 w-24`}),(0,D.jsx)(S,{className:`h-6 w-32`}),(0,D.jsx)(S,{className:`h-4 w-full`})]})]}),e[1]=n):n=e[1],n}function j(){let e=(0,T.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-4 px-6 py-5`,children:[(0,D.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[(0,D.jsx)(S,{className:`h-5 w-28`}),(0,D.jsx)(S,{className:`h-4 w-64`})]}),(0,D.jsx)(S,{className:`h-9 w-28 shrink-0`})]}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,D.jsxs)(`div`,{className:`divide-y divide-table-border`,children:[t,(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-4 px-6 py-5`,children:[(0,D.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[(0,D.jsx)(S,{className:`h-5 w-36`}),(0,D.jsx)(S,{className:`h-4 w-56`}),(0,D.jsx)(S,{className:`h-4 w-32`})]}),(0,D.jsx)(S,{className:`h-9 w-24 shrink-0`})]})]}),e[1]=n):n=e[1],n}function M(e){let t=(0,T.c)(20),{isPro:n,promptsRemaining:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,D.jsxs)(`div`,{className:s(a.label,`flex items-center gap-2 text-muted-foreground`),children:[(0,D.jsx)(c,{className:`h-4 w-4`}),`Balance`]}),t[0]=i):i=t[0];let o;t[1]!==n||t[2]!==r?(o=(0,D.jsxs)(`div`,{className:`flex-1 space-y-2 rounded-xl border bg-card p-5`,children:[i,(0,D.jsx)(`div`,{className:`flex items-end gap-2`,children:n?(0,D.jsx)(`span`,{className:a.stat,children:`Unlimited`}):(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`span`,{className:a.stat,children:r.toLocaleString()}),(0,D.jsx)(`span`,{className:`${a.caption} mb-1`,children:`prompts remaining`})]})})]}),t[1]=n,t[2]=r,t[3]=o):o=t[3];let l;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,D.jsxs)(`div`,{className:s(a.label,`flex items-center gap-2 text-muted-foreground`),children:[(0,D.jsx)(u,{className:`h-4 w-4`}),`Current Plan`]}),t[4]=l):l=t[4];let d=n?`Unlimited Pro`:`Pay as you go`,f;t[5]===d?f=t[6]:(f=(0,D.jsx)(`span`,{className:a.label,children:d}),t[5]=d,t[6]=f);let p;t[7]===n?p=t[8]:(p=n?(0,D.jsx)(`span`,{className:s(a.compact,`rounded-full bg-primary/10 px-2 py-0.5 font-medium text-primary`),children:`Active`}):null,t[7]=n,t[8]=p);let m;t[9]!==f||t[10]!==p?(m=(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[f,p]}),t[9]=f,t[10]=p,t[11]=m):m=t[11];let h=n?`You have unlimited prompts with no restrictions.`:`Purchase prompts as needed. Upgrade to Pro for unlimited access.`,g;t[12]===h?g=t[13]:(g=(0,D.jsx)(`p`,{className:a.bodyMuted,children:h}),t[12]=h,t[13]=g);let _;t[14]!==m||t[15]!==g?(_=(0,D.jsxs)(`div`,{className:`flex-1 space-y-3 rounded-xl border bg-card p-5`,children:[l,m,g]}),t[14]=m,t[15]=g,t[16]=_):_=t[16];let v;return t[17]!==_||t[18]!==o?(v=(0,D.jsxs)(`div`,{className:`flex gap-4 px-6 pb-6 pt-6`,children:[o,_]}),t[17]=_,t[18]=o,t[19]=v):v=t[19],v}function N(e){let t=(0,T.c)(13),{onPurchasePrompts:n,onUpgradeToPro:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,D.jsxs)(`div`,{className:`space-y-1`,children:[(0,D.jsx)(`span`,{className:a.label,children:`1,000 Prompts`}),(0,D.jsx)(`p`,{className:a.bodyMuted,children:`Top up your balance with 1,000 additional prompts for $5.`})]}),t[0]=i):i=t[0];let o;t[1]===n?o=t[2]:(o=(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-4 px-6 py-5`,children:[i,(0,D.jsx)(p,{onClick:n,className:`shrink-0`,children:`Top Up Balance`})]}),t[1]=n,t[2]=o);let c,l,d;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(u,{className:`h-4 w-4 text-primary`}),(0,D.jsx)(`span`,{className:a.label,children:`Unlimited Pro Plan`})]}),l=(0,D.jsx)(`p`,{className:a.bodyMuted,children:`Unlimited prompts for $100 and lifetime access to Tarsk.`}),d=s(a.bodyMuted,`space-y-0.5`),t[3]=c,t[4]=l,t[5]=d):(c=t[3],l=t[4],d=t[5]);let m;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,D.jsxs)(`li`,{className:`flex items-center gap-1.5`,children:[(0,D.jsx)(f,{className:`h-3 w-3 text-primary`}),`Unlimited prompts`]}),t[6]=m):m=t[6];let h;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,D.jsxs)(`div`,{className:`space-y-1`,children:[c,l,(0,D.jsxs)(`ul`,{className:d,children:[m,(0,D.jsxs)(`li`,{className:`flex items-center gap-1.5`,children:[(0,D.jsx)(f,{className:`h-3 w-3 text-primary`}),`Priority access`]})]})]}),t[7]=h):h=t[7];let g;t[8]===r?g=t[9]:(g=(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-4 px-6 py-5`,children:[h,(0,D.jsx)(p,{onClick:r,className:`shrink-0`,children:`Purchase`})]}),t[8]=r,t[9]=g);let _;return t[10]!==o||t[11]!==g?(_=(0,D.jsxs)(`div`,{className:`divide-y divide-table-border`,children:[o,g]}),t[10]=o,t[11]=g,t[12]=_):_=t[12],_}function P(){let[e,t]=(0,E.useState)(null),[n,r]=(0,E.useState)(!0),[s,c]=(0,E.useState)(!1),[u,f]=(0,E.useState)(!1),x=i(),S=o(e=>e.projects),C=(0,E.useRef)(!1),T=(0,E.useMemo)(()=>S.reduce((e,t)=>e+t.threads.length,0),[S]);(0,E.useEffect)(()=>{P();let e=0;function t(){if(document.visibilityState!==`visible`)return;let t=Date.now();t-e<O||(e=t,P())}return document.addEventListener(`visibilitychange`,t),window.addEventListener(`focus`,t),()=>{document.removeEventListener(`visibilitychange`,t),window.removeEventListener(`focus`,t)}},[]);async function P(){if(!C.current){C.current=!0,r(!0);try{t(await v())}catch(e){y({title:`Error`,description:e instanceof Error?e.message:`Failed to load account info`,variant:`destructive`})}finally{C.current=!1,r(!1)}}}function F(){h(`https://buy.stripe.com/14AcN6feK0Jjbheb2H3Nm03?client_reference_id=${e?.clientReferenceId??``}`)}function I(){h(`https://buy.stripe.com/9B67sMd6CgIh70Y0o33Nm04?client_reference_id=${e?.clientReferenceId??``}`)}async function L(){f(!0);try{if(await m(),_())try{await g()}catch{}window.close()}catch(e){f(!1),c(!1),y({title:`Error`,description:e instanceof Error?e.message:`Failed to delete account`,variant:`destructive`})}}let R=e?.plan===`unlimited-pro`,z=n&&e===null,B=e===null?n:!R;return(0,D.jsxs)(`div`,{className:`frosted-scrollbar flex h-full min-h-0 flex-col overflow-auto`,children:[(0,D.jsxs)(`div`,{className:`divide-y divide-table-border [&>*]:rounded-none`,children:[(0,D.jsx)(k,{title:`Account`,description:`Manage your Tarsk plan and prompt balance.`,children:z?(0,D.jsx)(A,{}):(0,D.jsx)(M,{isPro:R,promptsRemaining:e?.promptsRemaining??0})}),B?(0,D.jsx)(k,{title:`Add Prompts`,description:`Top up your balance or upgrade to Pro for unlimited access.`,children:z?(0,D.jsx)(j,{}):(0,D.jsx)(N,{onPurchasePrompts:F,onUpgradeToPro:I})}):null,(0,D.jsx)(k,{title:`Delete Account`,description:`Permanently delete the Tarsk database and any logs on this device.`,children:(0,D.jsxs)(`div`,{className:`space-y-4 px-6 pb-6 pt-6`,children:[T>0?(0,D.jsxs)(b,{variant:`error`,children:[(0,D.jsxs)(`span`,{className:`flex items-start gap-2`,children:[(0,D.jsx)(d,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,D.jsxs)(`span`,{children:[`You have `,T,` workspace`,` `,T===1?`folder`:`folders`,` listed in Storage. Clear`,` `,T===1?`it`:`them`,` first under Storage — deleting your account does not remove those folders.`]})]}),(0,D.jsx)(`div`,{className:`mt-3`,children:(0,D.jsx)(p,{variant:`outline`,size:`sm`,onClick:()=>x(`/settings/storage`),children:`Go to Storage`})})]}):null,(0,D.jsx)(`p`,{className:a.bodyMuted,children:`This removes the Tarsk database and any logs on this machine and cannot be undone.`}),(0,D.jsxs)(p,{variant:`destructive`,onClick:()=>c(!0),children:[(0,D.jsx)(l,{className:`h-4 w-4`}),`Delete Account`]})]})})]}),(0,D.jsx)(w,{open:s,onOpenChange:e=>{!e&&!u&&c(!1)},title:`Delete account?`,description:`This permanently deletes the Tarsk database and any logs on this device. The app will close and you can relaunch it. This action cannot be undone.`,onConfirm:()=>void L(),confirming:u,confirmLabel:`Delete Account`,confirmingLabel:`Deleting...`})]})}export{P as default};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{s as i}from"./chunk-QFMPRPBF-COsSkB7x.js";import{fn as a}from"./dist-DQEC_JS0.js";import{r as o}from"./store-D151firE.js";import{t as s}from"./utils-DfZXN5fy.js";import{at as c,d as l,in as u,u as d,xn as f}from"./lucide-react-BFzs_X2U.js";import{t as p}from"./button-Djzr1B_4.js";import{O as m,in as h,li as g,mn as _,tt as v}from"./api-Cho1mlFq.js";import{t as y}from"./use-toast-xpb5jNtN.js";import{At as b,Ht as x,fr as S,jt as C}from"./index-BlkYPP7B.js";import{t as w}from"./delete-confirm-dialog-Bcy-0viP.js";var T=t(),E=e(n(),1),D=r(),O=500;function k(e){let t=(0,T.c)(6),{title:n,description:r,children:i}=e,a;t[0]!==r||t[1]!==n?(a=(0,D.jsx)(C,{title:n,description:r,sticky:!1}),t[0]=r,t[1]=n,t[2]=a):a=t[2];let o;return t[3]!==i||t[4]!==a?(o=(0,D.jsxs)(x,{children:[a,i]}),t[3]=i,t[4]=a,t[5]=o):o=t[5],o}function A(){let e=(0,T.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,D.jsxs)(`div`,{className:`flex-1 space-y-2 rounded-xl border bg-card p-5`,children:[(0,D.jsx)(S,{className:`h-4 w-20`}),(0,D.jsx)(S,{className:`h-9 w-28`})]}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,D.jsxs)(`div`,{className:`flex gap-4 px-6 pb-6 pt-6`,children:[t,(0,D.jsxs)(`div`,{className:`flex-1 space-y-3 rounded-xl border bg-card p-5`,children:[(0,D.jsx)(S,{className:`h-4 w-24`}),(0,D.jsx)(S,{className:`h-6 w-32`}),(0,D.jsx)(S,{className:`h-4 w-full`})]})]}),e[1]=n):n=e[1],n}function j(){let e=(0,T.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-4 px-6 py-5`,children:[(0,D.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[(0,D.jsx)(S,{className:`h-5 w-28`}),(0,D.jsx)(S,{className:`h-4 w-64`})]}),(0,D.jsx)(S,{className:`h-9 w-28 shrink-0`})]}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,D.jsxs)(`div`,{className:`divide-y divide-table-border`,children:[t,(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-4 px-6 py-5`,children:[(0,D.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[(0,D.jsx)(S,{className:`h-5 w-36`}),(0,D.jsx)(S,{className:`h-4 w-56`}),(0,D.jsx)(S,{className:`h-4 w-32`})]}),(0,D.jsx)(S,{className:`h-9 w-24 shrink-0`})]})]}),e[1]=n):n=e[1],n}function M(e){let t=(0,T.c)(20),{isPro:n,promptsRemaining:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,D.jsxs)(`div`,{className:s(a.label,`flex items-center gap-2 text-muted-foreground`),children:[(0,D.jsx)(c,{className:`h-4 w-4`}),`Balance`]}),t[0]=i):i=t[0];let o;t[1]!==n||t[2]!==r?(o=(0,D.jsxs)(`div`,{className:`flex-1 space-y-2 rounded-xl border bg-card p-5`,children:[i,(0,D.jsx)(`div`,{className:`flex items-end gap-2`,children:n?(0,D.jsx)(`span`,{className:a.stat,children:`Unlimited`}):(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`span`,{className:a.stat,children:r.toLocaleString()}),(0,D.jsx)(`span`,{className:`${a.caption} mb-1`,children:`prompts remaining`})]})})]}),t[1]=n,t[2]=r,t[3]=o):o=t[3];let l;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,D.jsxs)(`div`,{className:s(a.label,`flex items-center gap-2 text-muted-foreground`),children:[(0,D.jsx)(u,{className:`h-4 w-4`}),`Current Plan`]}),t[4]=l):l=t[4];let d=n?`Unlimited Pro`:`Pay as you go`,f;t[5]===d?f=t[6]:(f=(0,D.jsx)(`span`,{className:a.label,children:d}),t[5]=d,t[6]=f);let p;t[7]===n?p=t[8]:(p=n?(0,D.jsx)(`span`,{className:s(a.compact,`rounded-full bg-primary/10 px-2 py-0.5 font-medium text-primary`),children:`Active`}):null,t[7]=n,t[8]=p);let m;t[9]!==f||t[10]!==p?(m=(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[f,p]}),t[9]=f,t[10]=p,t[11]=m):m=t[11];let h=n?`You have unlimited prompts with no restrictions.`:`Purchase prompts as needed. Upgrade to Pro for unlimited access.`,g;t[12]===h?g=t[13]:(g=(0,D.jsx)(`p`,{className:a.bodyMuted,children:h}),t[12]=h,t[13]=g);let _;t[14]!==m||t[15]!==g?(_=(0,D.jsxs)(`div`,{className:`flex-1 space-y-3 rounded-xl border bg-card p-5`,children:[l,m,g]}),t[14]=m,t[15]=g,t[16]=_):_=t[16];let v;return t[17]!==_||t[18]!==o?(v=(0,D.jsxs)(`div`,{className:`flex gap-4 px-6 pb-6 pt-6`,children:[o,_]}),t[17]=_,t[18]=o,t[19]=v):v=t[19],v}function N(e){let t=(0,T.c)(13),{onPurchasePrompts:n,onUpgradeToPro:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,D.jsxs)(`div`,{className:`space-y-1`,children:[(0,D.jsx)(`span`,{className:a.label,children:`1,000 Prompts`}),(0,D.jsx)(`p`,{className:a.bodyMuted,children:`Top up your balance with 1,000 additional prompts for $5.`})]}),t[0]=i):i=t[0];let o;t[1]===n?o=t[2]:(o=(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-4 px-6 py-5`,children:[i,(0,D.jsx)(p,{onClick:n,className:`shrink-0`,children:`Top Up Balance`})]}),t[1]=n,t[2]=o);let c,l,d;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(u,{className:`h-4 w-4 text-primary`}),(0,D.jsx)(`span`,{className:a.label,children:`Unlimited Pro Plan`})]}),l=(0,D.jsx)(`p`,{className:a.bodyMuted,children:`Unlimited prompts for $100 and lifetime access to Tarsk.`}),d=s(a.bodyMuted,`space-y-0.5`),t[3]=c,t[4]=l,t[5]=d):(c=t[3],l=t[4],d=t[5]);let m;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,D.jsxs)(`li`,{className:`flex items-center gap-1.5`,children:[(0,D.jsx)(f,{className:`h-3 w-3 text-primary`}),`Unlimited prompts`]}),t[6]=m):m=t[6];let h;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,D.jsxs)(`div`,{className:`space-y-1`,children:[c,l,(0,D.jsxs)(`ul`,{className:d,children:[m,(0,D.jsxs)(`li`,{className:`flex items-center gap-1.5`,children:[(0,D.jsx)(f,{className:`h-3 w-3 text-primary`}),`Priority access`]})]})]}),t[7]=h):h=t[7];let g;t[8]===r?g=t[9]:(g=(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-4 px-6 py-5`,children:[h,(0,D.jsx)(p,{onClick:r,className:`shrink-0`,children:`Purchase`})]}),t[8]=r,t[9]=g);let _;return t[10]!==o||t[11]!==g?(_=(0,D.jsxs)(`div`,{className:`divide-y divide-table-border`,children:[o,g]}),t[10]=o,t[11]=g,t[12]=_):_=t[12],_}function P(){let[e,t]=(0,E.useState)(null),[n,r]=(0,E.useState)(!0),[s,c]=(0,E.useState)(!1),[u,f]=(0,E.useState)(!1),x=i(),S=o(e=>e.projects),C=(0,E.useRef)(!1),T=(0,E.useMemo)(()=>S.reduce((e,t)=>e+t.threads.length,0),[S]);(0,E.useEffect)(()=>{P();let e=0;function t(){if(document.visibilityState!==`visible`)return;let t=Date.now();t-e<O||(e=t,P())}return document.addEventListener(`visibilitychange`,t),window.addEventListener(`focus`,t),()=>{document.removeEventListener(`visibilitychange`,t),window.removeEventListener(`focus`,t)}},[]);async function P(){if(!C.current){C.current=!0,r(!0);try{t(await v())}catch(e){y({title:`Error`,description:e instanceof Error?e.message:`Failed to load account info`,variant:`destructive`})}finally{C.current=!1,r(!1)}}}function F(){h(`https://buy.stripe.com/14AcN6feK0Jjbheb2H3Nm03?client_reference_id=${e?.clientReferenceId??``}`)}function I(){h(`https://buy.stripe.com/9B67sMd6CgIh70Y0o33Nm04?client_reference_id=${e?.clientReferenceId??``}`)}async function L(){f(!0);try{if(await m(),g())try{await _()}catch{}window.close()}catch(e){f(!1),c(!1),y({title:`Error`,description:e instanceof Error?e.message:`Failed to delete account`,variant:`destructive`})}}let R=e?.plan===`unlimited-pro`,z=n&&e===null,B=e===null?n:!R;return(0,D.jsxs)(`div`,{className:`frosted-scrollbar flex h-full min-h-0 flex-col overflow-auto`,children:[(0,D.jsxs)(`div`,{className:`divide-y divide-table-border [&>*]:rounded-none`,children:[(0,D.jsx)(k,{title:`Account`,description:`Manage your Tarsk plan and prompt balance.`,children:z?(0,D.jsx)(A,{}):(0,D.jsx)(M,{isPro:R,promptsRemaining:e?.promptsRemaining??0})}),B?(0,D.jsx)(k,{title:`Add Prompts`,description:`Top up your balance or upgrade to Pro for unlimited access.`,children:z?(0,D.jsx)(j,{}):(0,D.jsx)(N,{onPurchasePrompts:F,onUpgradeToPro:I})}):null,(0,D.jsx)(k,{title:`Delete Account`,description:`Permanently delete the Tarsk database and any logs on this device.`,children:(0,D.jsxs)(`div`,{className:`space-y-4 px-6 pb-6 pt-6`,children:[T>0?(0,D.jsxs)(b,{variant:`error`,children:[(0,D.jsxs)(`span`,{className:`flex items-start gap-2`,children:[(0,D.jsx)(d,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,D.jsxs)(`span`,{children:[`You have `,T,` workspace`,` `,T===1?`folder`:`folders`,` listed in Storage. Clear`,` `,T===1?`it`:`them`,` first under Storage — deleting your account does not remove those folders.`]})]}),(0,D.jsx)(`div`,{className:`mt-3`,children:(0,D.jsx)(p,{variant:`outline`,size:`sm`,onClick:()=>x(`/settings/storage`),children:`Go to Storage`})})]}):null,(0,D.jsx)(`p`,{className:a.bodyMuted,children:`This removes the Tarsk database and any logs on this machine and cannot be undone.`}),(0,D.jsxs)(p,{variant:`destructive`,onClick:()=>c(!0),children:[(0,D.jsx)(l,{className:`h-4 w-4`}),`Delete Account`]})]})})]}),(0,D.jsx)(w,{open:s,onOpenChange:e=>{!e&&!u&&c(!1)},title:`Delete account?`,description:`This permanently deletes the Tarsk database and any logs on this device. The app will close and you can relaunch it. This action cannot be undone.`,onConfirm:()=>void L(),confirming:u,confirmLabel:`Delete Account`,confirmingLabel:`Deleting...`})]})}export{P as default};
@@ -1,4 +1,4 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{ln as i}from"./dist-PhNKneni.js";import{s as a,t as o}from"./utils-BHAZna1O.js";import{n as s}from"./button-BvwSd5oT.js";import{g as c,h as l,p as u}from"./dist-T3Rfl3KQ.js";import{a as d,c as ee,i as te,l as ne,n as re,o as ie,r as f,s as ae,t as p,u as m}from"./dist-CcZPa1gi.js";import{n as oe}from"./use-browser-overlay-block-DyprQSIG.js";var h=t(),g=e(n(),1),_=r(),v=`AlertDialog`,[se,ce]=l(v,[m]),y=m(),b=e=>{let{__scopeAlertDialog:t,...n}=e,r=y(t);return(0,_.jsx)(ie,{...r,...n,modal:!0})};b.displayName=v;var x=`AlertDialogTrigger`,S=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=y(n);return(0,_.jsx)(ee,{...i,...r,ref:t})});S.displayName=x;var C=`AlertDialogPortal`,w=e=>{let{__scopeAlertDialog:t,...n}=e,r=y(t);return(0,_.jsx)(d,{...r,...n})};w.displayName=C;var T=`AlertDialogOverlay`,E=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=y(n);return(0,_.jsx)(te,{...i,...r,ref:t})});E.displayName=T;var D=`AlertDialogContent`,[le,ue]=se(D),de=u(`AlertDialogContent`),O=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,children:r,...i}=e,o=y(n),s=g.useRef(null),l=a(t,s),u=g.useRef(null);return(0,_.jsx)(ne,{contentName:D,titleName:k,docsSlug:`alert-dialog`,children:(0,_.jsx)(le,{scope:n,cancelRef:u,children:(0,_.jsxs)(re,{role:`alertdialog`,...o,...i,ref:l,onOpenAutoFocus:c(i.onOpenAutoFocus,e=>{e.preventDefault(),u.current?.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,_.jsx)(de,{children:r}),(0,_.jsx)(I,{contentRef:s})]})})})});O.displayName=D;var k=`AlertDialogTitle`,A=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=y(n);return(0,_.jsx)(ae,{...i,...r,ref:t})});A.displayName=k;var j=`AlertDialogDescription`,M=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=y(n);return(0,_.jsx)(f,{...i,...r,ref:t})});M.displayName=j;var fe=`AlertDialogAction`,N=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=y(n);return(0,_.jsx)(p,{...i,...r,ref:t})});N.displayName=fe;var P=`AlertDialogCancel`,F=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,{cancelRef:i}=ue(P,n),o=y(n),s=a(t,i);return(0,_.jsx)(p,{...o,...r,ref:s})});F.displayName=P;var I=({contentRef:e})=>{let t=`\`${D}\` requires a description for the component to be accessible for screen reader users.
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{fn as i}from"./dist-DQEC_JS0.js";import{s as a,t as o}from"./utils-DfZXN5fy.js";import{n as s}from"./button-Djzr1B_4.js";import{g as c,h as l,p as u}from"./dist-67Q0Rzil.js";import{a as d,c as ee,i as te,l as ne,n as re,o as ie,r as f,s as ae,t as p,u as m}from"./dist-DwfbSihk.js";import{n as oe}from"./use-browser-overlay-block-DyprQSIG.js";var h=t(),g=e(n(),1),_=r(),v=`AlertDialog`,[se,ce]=l(v,[m]),y=m(),b=e=>{let{__scopeAlertDialog:t,...n}=e,r=y(t);return(0,_.jsx)(ie,{...r,...n,modal:!0})};b.displayName=v;var x=`AlertDialogTrigger`,S=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=y(n);return(0,_.jsx)(ee,{...i,...r,ref:t})});S.displayName=x;var C=`AlertDialogPortal`,w=e=>{let{__scopeAlertDialog:t,...n}=e,r=y(t);return(0,_.jsx)(d,{...r,...n})};w.displayName=C;var T=`AlertDialogOverlay`,E=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=y(n);return(0,_.jsx)(te,{...i,...r,ref:t})});E.displayName=T;var D=`AlertDialogContent`,[le,ue]=se(D),de=u(`AlertDialogContent`),O=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,children:r,...i}=e,o=y(n),s=g.useRef(null),l=a(t,s),u=g.useRef(null);return(0,_.jsx)(ne,{contentName:D,titleName:k,docsSlug:`alert-dialog`,children:(0,_.jsx)(le,{scope:n,cancelRef:u,children:(0,_.jsxs)(re,{role:`alertdialog`,...o,...i,ref:l,onOpenAutoFocus:c(i.onOpenAutoFocus,e=>{e.preventDefault(),u.current?.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,_.jsx)(de,{children:r}),(0,_.jsx)(I,{contentRef:s})]})})})});O.displayName=D;var k=`AlertDialogTitle`,A=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=y(n);return(0,_.jsx)(ae,{...i,...r,ref:t})});A.displayName=k;var j=`AlertDialogDescription`,M=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=y(n);return(0,_.jsx)(f,{...i,...r,ref:t})});M.displayName=j;var fe=`AlertDialogAction`,N=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=y(n);return(0,_.jsx)(p,{...i,...r,ref:t})});N.displayName=fe;var P=`AlertDialogCancel`,F=g.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,{cancelRef:i}=ue(P,n),o=y(n),s=a(t,i);return(0,_.jsx)(p,{...o,...r,ref:s})});F.displayName=P;var I=({contentRef:e})=>{let t=`\`${D}\` requires a description for the component to be accessible for screen reader users.
2
2
 
3
3
  You can add a description to the \`${D}\` by passing a \`${j}\` component as a child, which also benefits sighted users by adding visible context to the dialog.
4
4
 
@@ -0,0 +1,2 @@
1
+ import{C as e,E as t,In as n,Nn as r,S as i,T as a,gn as o,mn as s,mt as c,pt as l,q as u,st as d,tr as f}from"./dist-DQEC_JS0.js";var p=function(e){return e.PACKAGE_MANAGER=`tarsk.create-project.packageManager`,e.COMMIT_METHOD=`tarsk.create-project.commitMethod`,e.TEMPLATE_ID=`tarsk.create-project.templateId`,e.CREATE_BRANCH_AFTER_PR=`createBranchAfterPR`,e.CREATE_WORKSPACE_AFTER_PR=`createWorkspaceAfterPR`,e.PRIVATE_REPOSITORY_DEFAULT=`privateRepositoryDefault`,e.NEW_CHAT_ON_NEW_BRANCH=`newChatOnNewBranch`,e.FONT_SCALE=`tarsk.general.fontScale`,e.FROSTED_PANEL_OPACITY=`tarsk.general.frostedPanelOpacity`,e.IMAGE_BACKGROUND=`tarsk.general.imageBackground`,e.WALLPAPER_MODE=`tarsk.general.wallpaperMode`,e.WALLPAPER_COLOR=`tarsk.general.wallpaperColor`,e.BRAND_COLOR=`tarsk.general.brandColor`,e.OPEN_WITH_PROGRAM=`tarsk.general.openWithProgram`,e.SERVER_URL=`tarsk.server.url`,e.SERVER_BIND_MODE=`tarsk.general.serverBindMode`,e.HISTORY_COLUMNS=`tarsk.settings.historyColumns`,e.TASK_LIST_VIEW_MODE=`tarsk.tasks.viewMode`,e.AUTOMATION_LIST_VIEW_MODE=`tarsk.automations.viewMode`,e.LAST_TASK_TAG=`tarsk.tasks.lastTag`,e.CONVERSATION_LEVEL=`tarsk.general.conversationLevel`,e}({}),m=function(e){return e.MESSAGE_HISTORY=`chat_message_history`,e.BASH_COMMAND_DURATIONS=`tarsk.bash-command-durations`,e.SKILL_CATALOG_PREFIX=`tarsk.skills.catalog.`,e.SKILL_SOURCE_SELECTION=`tarsk.skills.selectedSource`,e.PROJECT_SESSION_OPEN_PREFIX=`tarsk.project-session-open.`,e}({});function h(e){return typeof localStorage>`u`?null:localStorage.getItem(e)}function g(e,t){typeof localStorage>`u`||localStorage.setItem(e,t)}function _(e){return typeof sessionStorage>`u`?null:sessionStorage.getItem(e)}function v(e,t){typeof sessionStorage>`u`||sessionStorage.setItem(e,t)}function y(e=`npm`){return h(p.PACKAGE_MANAGER)??e}function b(e){g(p.PACKAGE_MANAGER,e)}function ee(e=`pull-request`){return h(p.COMMIT_METHOD)??e}function te(e){g(p.COMMIT_METHOD,e)}function ne(e=``){return h(p.TEMPLATE_ID)??e}function re(e){g(p.TEMPLATE_ID,e)}function ie(e=!1){let t=h(p.CREATE_BRANCH_AFTER_PR);return t===null?e:t===`true`}function ae(e){g(p.CREATE_BRANCH_AFTER_PR,e.toString())}function oe(e=!1){let t=h(p.CREATE_WORKSPACE_AFTER_PR);return t===null?e:t===`true`}function se(e){g(p.CREATE_WORKSPACE_AFTER_PR,e.toString())}function ce(e=!1){let t=h(p.PRIVATE_REPOSITORY_DEFAULT);return t===null?e:t===`true`}function le(e){g(p.PRIVATE_REPOSITORY_DEFAULT,e.toString())}function ue(e=!1){let t=h(p.NEW_CHAT_ON_NEW_BRANCH);return t===null?e:t===`true`}function de(e){g(p.NEW_CHAT_ON_NEW_BRANCH,e.toString())}function x(){let e=_(m.MESSAGE_HISTORY);return e?JSON.parse(e):[]}function fe(e){let t=x();e.trim()&&t[t.length-1]!==e&&(t.push(e),v(m.MESSAGE_HISTORY,JSON.stringify(t)))}function S(e){return typeof sessionStorage>`u`?null:sessionStorage.getItem(e)}function C(e,t){typeof sessionStorage>`u`||sessionStorage.setItem(e,t)}function pe(e=`default`){return S(m.SKILL_SOURCE_SELECTION)??e}function me(e){C(m.SKILL_SOURCE_SELECTION,e)}function w(e){return`${m.SKILL_CATALOG_PREFIX}${e}`}function he(e){let t=S(w(e));if(!t)return null;try{return JSON.parse(t)}catch{return null}}function ge(e,t){C(w(e),JSON.stringify(t))}function _e(e){typeof sessionStorage>`u`||sessionStorage.removeItem(w(e))}var ve=`tarsk.skills.customSources`;function ye(){if(typeof localStorage>`u`)return[];let e=localStorage.getItem(ve);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.id==`string`&&typeof e.title==`string`&&typeof e.url==`string`):[]}catch{return[]}}function be(){typeof localStorage>`u`||localStorage.removeItem(ve)}var T=new Set;function xe(){return h(p.CONVERSATION_LEVEL)===`minimal`?`minimal`:`full`}function Se(e){g(p.CONVERSATION_LEVEL,e);for(let t of T)t(e)}function Ce(e){return T.add(e),function(){T.delete(e)}}function we(e=100){let t=h(p.FONT_SCALE);if(t!==null){let e=Number(t);if(Number.isFinite(e)&&e>=50&&e<=300)return e}return e}function Te(e){g(p.FONT_SCALE,String(e))}function Ee(e=80){let t=h(p.FROSTED_PANEL_OPACITY);if(t!==null){let e=Number(t);if(Number.isFinite(e)&&e>=60&&e<=100)return e}return e}function De(e){g(p.FROSTED_PANEL_OPACITY,String(e))}var Oe=new Set([`image`,`background`,`color`]),E=/^#[0-9a-fA-F]{6}$/,ke=`#1f2937`,Ae=`#82c309`;function je(e){return e!==null&&Oe.has(e)}function Me(e=`background`){let t=h(p.WALLPAPER_MODE);if(je(t))return t;if(t===`brand`)return`background`;let n=h(p.IMAGE_BACKGROUND);return n===`false`?`background`:n===`true`?`image`:e}function Ne(e){g(p.WALLPAPER_MODE,e)}function Pe(e=ke){let t=h(p.WALLPAPER_COLOR);return t!==null&&E.test(t)?t:e}function Fe(e){E.test(e)&&g(p.WALLPAPER_COLOR,e.toLowerCase())}function Ie(e=Ae){let t=h(p.BRAND_COLOR);return t!==null&&E.test(t)?t:e}function Le(e){E.test(e)&&g(p.BRAND_COLOR,e.toLowerCase())}var Re=new Set([`summary`,`list`]);function D(e){return e===`automations`?p.AUTOMATION_LIST_VIEW_MODE:p.TASK_LIST_VIEW_MODE}function ze(e){let t=h(D(e));return t!==null&&Re.has(t)?t:null}function Be(e=`tasks`,t=`summary`){let n=ze(e);return n===null?e===`automations`?ze(`tasks`)??t:t:n}function Ve(e,t){g(D(e),t)}function He(){return h(p.LAST_TASK_TAG)}function Ue(e){g(p.LAST_TASK_TAG,e)}function We(e=`VS Code`){return h(p.OPEN_WITH_PROGRAM)??e}function Ge(e){g(p.OPEN_WITH_PROGRAM,e)}function Ke(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.fetchedAt==`number`&&(t.serverBindMode===`local`||t.serverBindMode===`network`)&&Array.isArray(t.networkAddresses)&&t.networkAddresses.every(e=>typeof e==`string`)}function qe(){let e=h(p.SERVER_BIND_MODE);if(!e)return null;try{let t=JSON.parse(e);return Ke(t)?t:null}catch{return null}}function Je(e){g(p.SERVER_BIND_MODE,JSON.stringify({...e,fetchedAt:e.fetchedAt??Date.now()}))}var Ye=`641`;function Xe(){return typeof window>`u`?null:window.Capacitor?.getPlatform?.()??null}function Ze(){return O()&&Xe()===`ios`}function Qe(){return h(p.SERVER_URL)}function $e(e){g(p.SERVER_URL,e)}function et(e){try{return new URL(e).hostname}catch{return``}}function tt(n){let r=n.trim();if(!r)return``;let o=/^https?:\/\//i.test(r)?r:`https://${r}`;try{let n=new URL(o);if(i(n.hostname))return``;if(e(n.hostname)){let e=a(n.hostname);return e?t(e)??``:``}}catch{return``}if(/^https?:\/\//i.test(r))try{let e=new URL(r);return e.protocol!==`http:`&&e.protocol!==`https:`||!e.hostname?``:e.origin}catch{return``}let s=(r.split(`/`)[0]??``).replace(/:\d+$/,``);return s?`http://${s}:${Ye}`:``}function O(){if(typeof window>`u`)return!1;if(window.Capacitor?.isNativePlatform?.())return!0;let e=window.location.protocol;return e===`capacitor:`||e===`ionic:`||e===`file:`}function nt(){let e=Qe();if(e){let t=et(e);if(t)return t}return O()?``:document.location.hostname}async function rt(e){try{return(await fetch(`${e.replace(/\/$/,``)}/health`,{method:`GET`})).ok}catch{return!1}}function it(e){let t=tt(e);if(t){if(O()){$e(t),window.location.reload();return}window.location.assign(t)}}function k(){return typeof window<`u`&&`__electrobunWebviewId`in window}function at(){return typeof document<`u`&&document.location.port===`8100`}function A(){if(typeof document>`u`)return null;let{protocol:n,hostname:r,port:i,host:o,origin:s}=document.location;if(n!==`http:`&&n!==`https:`)return null;if(s&&r&&e(r)){let e=a(r);if(e)return t(e)??s}return s||`${n}//${o??(i?`${r}:${i}`:r)}`}function j(){if(typeof document>`u`)return`http://localhost:641`;let{hostname:e,port:t}=document.location;return t===`8100`?`http://${e}:462`:A()||`http://${e}:641`}function M(){if(k()){let e=A();if(e)return e}if(!O())return j();let e=Qe();return e?e.replace(/\/$/,``):j()}function N(e){let t=e.startsWith(`/`)?e:`/${e}`;return`${M()}${t}`}function P(e){if(!e)return`Unknown error`;if(typeof e.message==`string`&&e.message.trim())return e.message.trim();if(typeof e.error==`string`)return e.error.trim()||`Unknown error`;if(e.error&&typeof e.error==`object`){let t=e.error.message;if(typeof t==`string`&&t.trim())return t.trim();let n=e.error.details;return typeof n==`string`&&n.trim()?n.trim():`Unknown error`}return`Unknown error`}async function F(e){try{return P(await e.json())}catch{}return e.statusText||`Unknown error`}function I(e,t,n){let r=Error(e);return n?.error&&typeof n.error==`object`&&(r.details=n.error.details,r.code=n.error.code),r}async function ot(e){let t;try{t=await e.json()}catch{}throw I(P(t)||e.statusText||`Unknown error`,e,t)}async function L(e,t,n,r){let i=await fetch(N(t),{...r,method:e,headers:{"Content-Type":`application/json`,...r?.headers},body:n?JSON.stringify(n):void 0});if(!i.ok){let e=await F(i);throw Error(e)}return i}async function R(e,t){let n=await fetch(N(e),{...t,method:`GET`});if(!n.ok){let e=await F(n);throw Error(e)}return n.blob()}async function z(e,t){let n=await fetch(N(e),{...t,method:`GET`});if(!n.ok){let e=await F(n);throw Error(e)}return n.json()}async function B(e,t,n){return(await L(`POST`,e,t,n)).json()}async function st(e,t,n){return(await L(`POST`,e,t,n)).blob()}async function ct(e,t,n){let r=await fetch(N(e),{...n,method:`POST`,headers:{"Content-Type":`application/octet-stream`,...n?.headers},body:t});if(!r.ok){let e=await F(r);throw Error(e)}return r.json()}async function V(e,t,n){return(await L(`PUT`,e,t,n)).json()}async function H(e,t,n){return(await L(`PATCH`,e,t,n)).json()}async function lt(e,t,n){return(await L(`PUT`,e,t,n)).body}async function U(e,t){let n=await fetch(N(e),{...t,method:`DELETE`});if(!n.ok){let e=await F(n);throw Error(e)}if(n.status!==204)return n.json()}async function ut(e,t){let n=await fetch(N(e),{...t,method:`DELETE`});if(!n.ok){let e=await F(n);throw Error(e)}return n.body}async function W(e,t,n){let r=await fetch(N(e),{...n,method:`POST`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0,signal:n?.signal});return r.ok||await ot(r),r.body}async function G(e,t){let n=await fetch(N(e),{...t,method:`GET`});return n.ok||await ot(n),n.body}async function K(e,t,n){let r=await fetch(N(e),{...n,method:`POST`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0});if(!r.ok){let e;try{e=await r.json()}catch{}throw I(P(e)||r.statusText||`Unknown error`,r,e)}return r.json()}async function dt(e,t,n){let r=await fetch(N(e),{...n,method:`PUT`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0});if(!r.ok){let e;try{e=await r.json()}catch{}throw I(P(e)||r.statusText||`Unknown error`,r,e)}return r.json()}function q(...e){return e.map(e=>encodeURIComponent(String(e))).join(`/`)}var J=d(`gitops.ttl-cache`),Y=new class{cache=new Map;inFlightRequests=new Map;generations=new Map;async get(e,t,n){let r=e.startsWith(`unified-git-status-`),i=r?performance.now():0,a=this.inFlightRequests.get(e);if(a)return r&&J.debug(`in-flight-reuse`,{key:e}),a;let o=this.cache.get(e);if(o&&Date.now()<o.expires){if(r){let t=Math.round(performance.now()-i);J.debug(`cache hit`,{key:e,duration:t})}return o.data}r&&J.debug(`cache miss, fetching`,{key:e});let s=this.generations.get(e)??0,c=t().then(t=>{if((this.generations.get(e)??0)===s){if(this.cache.set(e,{data:t,expires:Date.now()+n}),r){let t=Math.round(performance.now()-i);J.debug(`stored in cache`,{key:e,duration:t})}}else r&&J.debug(`skipped stale cache write`,{key:e});return t}).finally(()=>{this.inFlightRequests.get(e)===c&&this.inFlightRequests.delete(e)});return this.inFlightRequests.set(e,c),c}getSync(e){let t=this.cache.get(e);if(t&&Date.now()<t.expires)return t.data}bumpGeneration(e){this.generations.set(e,(this.generations.get(e)??0)+1)}invalidate(e){this.cache.delete(e),this.inFlightRequests.delete(e),this.bumpGeneration(e)}invalidatePattern(e){let t=[];for(let n of this.cache.keys())e.test(n)&&t.push(n);for(let n of this.inFlightRequests.keys())e.test(n)&&!t.includes(n)&&t.push(n);for(let e of t)this.cache.delete(e),this.inFlightRequests.delete(e),this.bumpGeneration(e)}clear(){for(let e of new Set([...this.cache.keys(),...this.inFlightRequests.keys(),...this.generations.keys()]))this.bumpGeneration(e);this.cache.clear(),this.inFlightRequests.clear()}};function ft(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.rel=`noopener`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}function pt(e,t=`image/png`){let n=atob(e),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return new Blob([r],{type:t})}function mt(e){let t=e.indexOf(`,`),n=e.slice(0,t);return pt(e.slice(t+1),n.match(/^data:([^;]+)/)?.[1]??`image/png`)}async function ht(e){if(e.imageData)return pt(e.imageData);if(e.imageUrl){if(e.imageUrl.startsWith(`data:`))return mt(e.imageUrl);let t=o(e.imageUrl,M()),n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch image: ${n.status}`);return n.blob()}throw Error(`imageUrl or imageData is required`)}function gt(e){return!e.imageUrl||s(e.imageUrl)?e:{...e,imageUrl:o(e.imageUrl,M())}}async function _t(e){let t=e.filename??`generated-image-${Date.now()}.png`;try{return ft(await ht(e),t),{path:t}}catch{if(!e.imageUrl||e.imageUrl.startsWith(`data:`))throw Error(`imageUrl or imageData is required`);let n=document.createElement(`a`);return n.href=e.imageUrl,n.download=t,n.target=`_blank`,n.rel=`noopener noreferrer`,document.body.appendChild(n),n.click(),document.body.removeChild(n),{path:t}}}async function vt(e){let t=await ht(e);if(!navigator.clipboard?.write)throw Error(`Clipboard API not available`);let n=t.type||`image/png`,r=t.type?t:new Blob([t],{type:n});await navigator.clipboard.write([new ClipboardItem({[n]:r})])}async function yt(e){return k()?B(`api/image/save`,gt(e)):_t(e)}async function bt(e){if(k()){await B(`api/image/clipboard`,gt(e));return}await vt(e)}function xt(e){let t=e.trim().toLowerCase();return t===`load failed`||t===`stream ended without a completion frame`||t.includes(`failed to fetch`)||t.includes(`network error`)||t.includes(`network connection was lost`)||t.includes(`networkrequestfailed`)||t.includes(`networkrequest failed`)||t.includes(`socket is not connected`)}function St(e){if(e instanceof Error&&`code`in e&&typeof e.code==`string`)return e.code}function Ct(e){if(St(e)===`THREAD_BUSY`)return!0;if(!(e instanceof Error))return!1;let t=e.message.toLowerCase();return t.includes(`already processing a message`)||t.includes(`already being processed`)||t.includes(`multiple chat windows are processing`)}function wt(e,t){return Ct(e)?t?.trim()?!0:e instanceof Error?!e.message.toLowerCase().includes(`multiple chat windows`):!1:!1}var Tt=50;function Et(e,t,n,r,i){let a=e.getReader(),o=!1;function s(){o=!0,a.cancel().catch(()=>{})}let c=new TextDecoder,l=``,d=0;function f(e){let t=e.content?.trim();if(t)return u(t);let n=e.error?.message?.trim();if(n)return u(n);let r=e.message?.trim();return r?u(r):`Unknown error`}function p(e){if(!e)return!1;let t=e.trim();return t.length>200?!1:[/^Cannot read properties/i,/^Error:/i,/^TypeError:/i,/^ReferenceError:/i,/^SyntaxError:/i,/^failed to/i,/^error:/i,/^forbidden/i,/^unauthorized/i].some(e=>e.test(t))}async function m(){d+=1,!(d<Tt)&&(d=0,await new Promise(e=>{setTimeout(e,0)}))}async function h(e){return e.type===`ping`?`continue`:e.type===`error`?(r(f(e)),n(),`stop`):e.type===`message`?(i?.({role:e.role??`assistant`,content:e.content??``,isThinking:e.isThinking}),`continue`):e.type===`complete`?(n(),`stop`):e.type===`result`&&p(e.content)?(r(u(e.content??`Unknown error`)),n(),`stop`):(t(e),await m(),`continue`)}async function g(){if(!l.trim())return`continue`;try{return await h(JSON.parse(l))}catch{return l.trim()&&t({type:`result`,content:l}),`continue`}}async function _(e){let t=e.trim();if(!t)return`continue`;try{return await h(JSON.parse(t))}catch{return`continue`}}async function v(){return o||await g()===`stop`?`stop`:(r(`Stream ended without a completion frame`),n(),`stop`)}async function y(e){l+=c.decode(e,{stream:!0});let t=l.split(`
2
+ `);l=t.pop()??``;for(let e of t)if(o||await _(e)===`stop`)return`stop`;return`continue`}async function b(){try{for(;!o;){let{done:e,value:t}=await a.read();if(e||o){e&&await v();break}if(await y(t)===`stop`)return}}catch(e){o||(r(e instanceof Error?e.message:`Stream error`),n())}}return b(),s}var Dt=d(`gitops.api`);async function Ot(e,t=!1,n=!1){let r=new URLSearchParams;t&&r.set(`fresh`,`true`),n&&r.set(`asyncRefresh`,`true`);let i=r.toString(),a=i?`api/git/unified-status/${q(e)}?${i}`:`api/git/unified-status/${q(e)}`,o=performance.now();Dt.debug(`getUnifiedGitStatus start`,{threadId:e,fresh:t});try{return await z(a)}finally{let n=Math.round(performance.now()-o);Dt.debug(`getUnifiedGitStatus end`,{threadId:e,fresh:t,duration:n})}}async function kt(e,t,n){return(await B(`api/git/generate-commit-message/${q(e)}`,{model:t,provider:n})).message}async function At(e,t){await B(`api/git/commit/${q(e)}`,{message:t})}async function jt(e){await B(`api/git/push/${q(e)}`)}async function Mt(e){await B(`api/git/pull/${q(e)}`)}async function Nt(e){return B(`api/git/sync-branch/${q(e)}`,{})}async function Pt(e,t,n){return B(`api/git/generate-pr-info/${q(e)}`,{model:t,provider:n})}async function Ft(e,t,n,r){return B(`api/git/create-pr/${q(e)}`,{title:t,description:n,baseBranch:r})}async function It(e){await B(`api/git/fetch/${q(e)}`)}async function Lt(e,t,n){return B(`api/git/create-branch/${q(e)}`,{baseBranch:t,branchName:n})}async function Rt(e,t){return B(`api/git/revert-file/${q(e)}`,{filePath:t})}async function zt(e,t=50){return(await z(`api/git/log/${q(e)}?limit=${t}`)).commits}async function Bt(e){return z(`api/git/pr-status/${q(e)}`)}async function Vt(e,t,n,r){return B(`api/git/create-repo/${q(e)}`,{repoName:t,description:n,isPrivate:r})}async function Ht(e,t){return B(`api/git/checkpoint/${q(e)}`,{messageId:t})}async function Ut(e,t){return B(`api/git/checkpoint-restore/${q(e)}`,{checkpointRef:t})}async function Wt(e){return z(`api/git/diff/${q(e)}`)}async function Gt(e,t,n){return R(`api/git/media/${q(e)}?path=${encodeURIComponent(t)}&version=${n}`)}async function Kt(e){return B(`api/git/cleanup-deleted-branches/${q(e)}`)}async function qt(e){return Y.get(`workspace-changes-${e}`,async()=>z(`api/git/workspace-changes/${q(e)}`),1e4)}async function Jt(){return(await z(`api/skills/popular`)).skills??[]}async function Yt(){return(await z(`api/skills/sources`)).sources??[]}async function Xt(e){return(await z(`api/skills/catalog?${new URLSearchParams({sourceId:e}).toString()}`)).skills??[]}async function Zt(e,t){return B(`api/skills/sources/verify`,{title:e,url:t})}async function Qt(e,t,n){return V(`api/skills/sources/${q(e)}`,{title:t,url:n})}async function $t(e){await U(`api/skills/sources/${q(e)}`)}async function en(e){return(await B(`api/skills/sources/import`,{sources:e})).sources??[]}async function tn(e,t){return z(`api/skills/catalog/files?${new URLSearchParams({sourceId:e,skillId:t}).toString()}`)}async function nn(e,t,n){return z(`api/skills/catalog/file?${new URLSearchParams({sourceId:e,skillId:t,relativePath:n}).toString()}`)}async function rn(){return(await z(`api/agents/popular`)).agents??[]}async function an(){return(await z(`api/slash-commands/popular`)).commands??[]}async function on(e,t,n,r,i){return B(`api/threads/${q(e)}/ai-files/github-folder`,{gitHubRepo:t,gitHubFolder:n,destPath:r,gitHubRef:i})}async function sn(e,t,n,r){return B(`api/threads/${q(e)}/ai-files/catalog-skill`,{sourceId:t,skillId:n,destPath:r})}var cn=d(`gitops.api`),X=class extends Error{constructor(){super(`No prompts remaining`),this.name=`EmptyBalanceError`}},ln=50;async function un(){let{plan:e,promptsRemaining:t}=await En();return e===`unlimited-pro`?{isEmpty:!1,isLow:!1,promptsRemaining:-1}:{isEmpty:t<=0,isLow:t>0&&t<=ln,promptsRemaining:t}}var dn=null,Z=!1;function fn(e){dn=e}function Q(e){Z||(Z=!0,dn?.(e))}async function pn(){return z(`api/scaffold/templates`)}async function mn(){return(await z(`api/scaffold/check-vp`)).installed}async function hn(){return B(`api/scaffold/install-vp`,{})}async function gn(e,t,n,r){return W(`api/scaffold`,{projectName:e,templateId:t,packageManager:n},{signal:r})}async function _n(){return Y.get(`providers`,async()=>z(`api/providers`),6e4)}function vn(e){return`${M()}/api/providers/${q(e)}/logo`}function yn(e){return`https://models.tarsk.io/svg/${q(e)}.svg`}async function bn(e){return Y.get(`provider-credits-${e}`,async()=>z(`api/providers/${q(e)}/credits`),3e4)}async function xn(){return(await z(`api/providers/openrouter/oauth/start`)).url}async function Sn(e,t){await B(`api/providers/keys`,{providerName:e,apiKey:t}),Y.invalidate(`providers`)}async function Cn(e){await B(`api/providers/env`,{values:e}),Y.invalidate(`providers`)}function wn(e){return typeof window>`u`?!1:window.open(e,`_blank`,`noopener,noreferrer`)!==null}async function Tn(e){if(typeof window<`u`&&!k()){wn(e);return}try{await B(`api/providers/open-external`,{url:e})}catch(t){if(wn(e))return;throw t instanceof Error?t:Error(`Failed to open URL`)}}async function En(){return z(`api/account/info`)}async function Dn(){return B(`api/account/delete`,{})}async function On(){return B(`api/account/quit`,{})}async function kn(){return z(`api/account/spend`)}async function An(){return z(`api/account/statistics`)}async function jn(){return U(`api/account/statistics`)}async function Mn(){return z(`api/account/settings`)}async function Nn(){return z(`api/slack/settings`)}async function Pn(){await U(`api/logs`)}async function Fn(e){return G(`api/logs/stream`,e)}async function In(e){try{await B(`api/logs`,e)}catch(e){cn.debug(`Failed to post client log entry`,e)}}async function Ln(){return z(`api/slack/manifest`)}async function Rn(e){return V(`api/slack/tokens`,e)}async function zn(){await U(`api/slack/tokens`)}async function Bn(e){return B(`api/slack/bindings`,e)}async function Vn(e,t){await U(`api/slack/bindings/${q(e)}/${q(t)}`)}async function Hn(e){return V(`api/account/settings`,e)}async function Un(){return z(`api/account/remote-machines`)}async function Wn(e){return K(`api/account/remote-machines`,{address:e})}async function Gn(e,t){return H(`api/account/remote-machines/${q(e)}`,{machineName:t})}async function Kn(e){return U(`api/account/remote-machines/${q(e)}`)}async function qn(){return z(`api/voice-model/status`)}async function Jn(e,t){return(await B(`api/voice-model/process-transcript`,{text:e,threadId:t?.threadId,provider:t?.provider,model:t?.model})).text}async function Yn(){return Y.get(`available-programs`,async()=>(await z(`api/programs`)).programs??[],3e5)}async function Xn(){return(await z(`api/processes`)).processes}async function Zn(e){await B(`api/processes/${q(e)}/kill`)}async function Qn(){return Y.get(`processing-threads`,async()=>{let e=await z(`api/threads/processing`);return{processingThreadIds:e.processingThreadIds??[],processingRuns:e.processingRuns??[],unavailableThreadIds:e.unavailableThreadIds??[]}},0)}async function $n(e){let t=new URLSearchParams({since:e.since});return e.ids&&t.set(`ids`,e.ids),Y.get(`processing-roster:${t.toString()}`,async()=>(await z(`api/conversations/processing-roster?${t.toString()}`)).conversations??[],0)}async function er(){return z(`api/git/auth-status`)}async function tr(){return Y.get(`git-user`,async()=>{try{let e=await z(`api/git/user`);return{name:e.name??``,email:e.email??``}}catch{return{name:``,email:``}}},6e5)}async function nr(){return(await tr()).name}async function rr(){return Y.get(`projects`,async()=>{let e=await z(`api/projects`),t=Array.isArray(e)?e:e.projects??[],n=Array.isArray(e)?null:e.cloneRootPath??null;return{projects:(t||[]).map(e=>{let t=e;return{projectId:t.projectId??t.id,name:t.name,gitUrl:t.gitUrl,projectPath:t.projectPath??t.path,threads:t.threads??[],commands:t.commands??[],setupScript:t.setupScript,runCommand:t.runCommand,planPrompt:t.planPrompt,testPrompt:t.testPrompt,reviewPrompt:t.reviewPrompt,customSystemPrompt:t.customSystemPrompt,useCustomSystemPrompt:!!t.useCustomSystemPrompt,allowAllCommands:t.allowAllCommands!==!1,allowedCommandPatterns:t.allowedCommandPatterns??[],defaultChatMode:f(t.defaultChatMode)?t.defaultChatMode:void 0,disabledTools:t.disabledTools??void 0,useBuiltInBrowser:t.useBuiltInBrowser!==!1,projectIcon:t.projectIcon,tasksModifiedCount:Number(t.tasksModifiedCount)||0,type:t.type===`bot`?`bot`:`standard`,builtIn:t.builtIn===!0}}).map(e=>{let t=(e.threads||[]).map(e=>{let t=e,n=t.threadId??t.id;return{threadId:n,title:t.title??n,path:t.path??``,currentBranch:t.currentBranch??``,remoteMachineId:t.remoteMachineId,remoteMachineName:t.remoteMachineName,remotePublicUrl:t.remotePublicUrl,remoteUnavailable:t.remoteUnavailable===!0,currentConversationId:t.currentConversationId,chatTitles:t.chatTitles,conversationModels:t.conversationModels,hasUnreadAutomatedChat:t.hasUnreadAutomatedChat===!0,isSelected:!!t.isSelected,model:t.model??void 0,modelProvider:t.modelProvider??void 0,gitStatusDot:l(t.gitStatusDot),prNumber:c(t.prNumber)}});return{...e,threads:t}}),cloneRootPath:n}},3e4)}async function ir(){let e=await z(`api/projects/remote-snapshots`);return(Array.isArray(e.snapshots)?e.snapshots:[]).map(function(e){let t=e;return{threadId:t.threadId??``,remoteMachineName:t.remoteMachineName,remoteUnavailable:t.remoteUnavailable===!0,currentBranch:t.currentBranch??``,gitStatusDot:t.gitStatusDot===void 0?void 0:l(t.gitStatusDot),prNumber:t.prNumber===null?null:c(t.prNumber),currentConversationId:t.currentConversationId===null?null:t.currentConversationId,chatTitles:t.chatTitles===null?null:t.chatTitles,conversationModels:t.conversationModels===null?null:t.conversationModels,model:t.model===null?null:t.model??void 0,modelProvider:t.modelProvider===null?null:t.modelProvider??void 0,hasUnreadAutomatedChat:t.hasUnreadAutomatedChat===!0}})}async function ar(e){await B(`api/projects/${q(e)}/tasks/clear-modifications`)}async function or(e,t,n){return W(`api/projects`,{gitUrl:e,commitMethod:t},{signal:n})}async function sr(e,t){await B(`api/projects/git-auth/${encodeURIComponent(e)}`,t)}async function cr(e){return W(`api/projects/open-folder`,{},{signal:e})}async function lr(e,t){return W(`api/projects/open-path`,{path:e},{signal:t})}async function ur(e,t){return W(`api/projects/new-folder`,{projectName:e},{signal:t})}async function dr(e,t){return W(`api/projects/new-bot`,{projectName:e},{signal:t})}function fr(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{let e=typeof r.result==`string`?r.result:``,n=e.indexOf(`,`);t(n>=0?e.slice(n+1):e)},r.onerror=()=>n(r.error),r.readAsDataURL(e)})}async function pr(e,t,n,r){return W(`api/projects/from-zip`,{data:await fr(e),name:t,overrideProjectId:n},{signal:r})}async function mr(e){return Y.get(`project-${e}`,async()=>{let t=await z(`api/projects/${q(e)}`);return{...t,projectPath:t.projectPath??t.path}},3e4)}async function hr(e){return z(`api/projects/${q(e)}/env-vars`)}async function gr(e){return(await z(`api/projects/${q(e)}/window-state`)).state}async function _r(e,t){await dt(`api/projects/${q(e)}/window-state`,{state:t})}async function vr(e,t,n){return B(`api/projects/${q(e)}/replace-unique-text`,{oldText:t,newText:n})}async function yr(e,t){await V(`api/projects/${q(e)}/env-vars`,{vars:t})}async function br(e){await U(`api/projects/${q(e)}`),Y.invalidate(`projects`)}function xr(e){Y.invalidate(`projects`),e&&Y.invalidate(`project-${e}`)}async function Sr(e,t,n){return W(`api/threads`,{projectId:e,title:t,sourceThreadId:n?.sourceThreadId,remoteMachineId:n?.remoteMachineId},{signal:n?.signal})}async function Cr(e,t){let n=await ut(`api/threads/${q(t)}?stream=true`);return Y.invalidate(`projects`),n}async function wr(e,t){await H(`api/threads/${q(e)}`,t),Y.invalidate(`thread-${e}`),(`model`in t||`modelProvider`in t||`chatTitles`in t||`diffComments`in t)&&Y.invalidate(`projects`)}async function Tr(e,t,n){return(await B(`api/threads/${q(e)}/generate-title`,{prompt:t,provider:n?.provider,model:n?.model})).title}async function Er(e,t){return B(`api/threads/${q(e)}/fix-comments`,{comments:t})}async function Dr(e,t){await B(`api/threads/${q(t)}/select`)}function Or(e,t,n){let r=new URLSearchParams;t&&r.set(`conversationId`,t),n===`minimal`?r.set(`view`,`final`):r.set(`events`,`recent`);let i=r.toString(),a=`api/threads/${q(e)}/messages`;return i.length>0?`${a}?${i}`:a}async function kr(e,t){return{threadId:e,messages:await z(Or(e,t,xe()))}}async function Ar(e,t,n=1,i=r){let a=new URLSearchParams({offset:String(n),limit:String(i)});return z(`api/threads/${q(e)}/observations/${q(t)}?${a}`)}async function jr(e){return(await z(`api/threads/${q(e)}/conversation-folder-path`)).path}async function Mr(e,t,n,r=[],i,a,o,s,c,l,u,d,f,p,m){i?.throwIfAborted();let{isEmpty:h,isLow:g,promptsRemaining:_}=await un();if(i?.throwIfAborted(),h)throw new X;return g?Q(_):Z=!1,W(`api/chat`,{threadId:e,content:t,model:n,provider:a,planMode:o,ralphMode:s,orchestrateMode:u,autoRoute:d,checkpointRef:c,conversationId:l,goal:f,idempotencyKey:m,perfTraceId:p?.traceId,perfSubmitMs:p?.submitMs,attachments:r.map(e=>({name:e.fileName,content:e.content.split(`,`)[1]||e.content,size:0,mimeType:e.mimeType||`application/octet-stream`}))},{signal:i})}async function Nr(e,t,n,r=[],i,a,o,s,c){let{isEmpty:l,isLow:u,promptsRemaining:d}=await un();if(l)throw new X;return u?Q(d):Z=!1,B(`api/chat`,{threadId:e,content:t,model:n,provider:i,planMode:a,ralphMode:o,orchestrateMode:s,autoRoute:c,runInBackground:!0,attachments:r.map(e=>({name:e.fileName,content:e.content.split(`,`)[1]||e.content,size:0,mimeType:e.mimeType||`application/octet-stream`}))})}async function Pr(e,t,n,r,i,a){await B(`api/chat/${q(e)}/steer`,{messageId:t,content:n,conversationId:r,model:i,attachments:a.map(e=>({name:e.fileName,content:e.content.split(`,`)[1]||e.content,size:0,mimeType:e.mimeType||`application/octet-stream`}))})}async function Fr(e,t,n){let r=new URLSearchParams({replay:`compact`}),i=n?.trim();return i&&r.set(`conversationId`,i),G(`api/chat/subscribe/${q(e)}?${r.toString()}`,{signal:t})}async function Ir(e){let t=await U(`api/chat/${q(e)}`);return Y.invalidate(`thread-${e}`),t?.conversationId||``}async function Lr(e,t,n){return B(`api/chat/${q(e)}/agent-note`,{content:t,...n})}async function Rr(e,t){return K(`api/chat/${q(e)}/compact`,t)}async function zr(e,t){let n=await B(`api/chat/${q(e)}/workspace-handoff`,t);return typeof n.brief==`string`?n.brief:``}async function Br(e,t){let n=new URLSearchParams,r=t?.conversationId?.trim();r&&n.set(`conversationId`,r),t?.runId&&n.set(`runId`,t.runId),t?.all&&n.set(`all`,`1`);let i=n.size>0?`?${n.toString()}`:``,a=await K(`api/chat/stop/${q(e)}${i}`);if(a.success!==!0)throw Error(a.message||`Backend did not acknowledge stopping the run`)}async function $(e,t){return t.runNow&&t.setupScript?lt(`api/projects/${q(e)}`,t):(await dt(`api/projects/${q(e)}`,t),xr(e),null)}async function Vr(e,t){await K(`api/projects/${q(e)}/open`,{program:t})}async function Hr(e,t){await K(`api/threads/${q(e)}/open`,{program:t})}async function Ur(e,t){await $(e,{program:t})}async function Wr(e,t,n){return $(e,{setupScript:t,runNow:n})}async function Gr(e,t){await $(e,{name:t})}async function Kr(e,t){let n=new URLSearchParams({provider:e});t!==void 0&&n.set(`supportedTools`,t?`true`:`false`),n.set(`useCase`,`coding`);let r=`available-models-${n.toString()}`;return Y.get(r,async()=>{let e=await z(`api/models?${n.toString()}`);return{models:e.models??[],enabledModelIds:e.enabledModelIds??[]}},12e4)}async function qr(e){let t=new URLSearchParams({useCase:e}),n=`available-models-all-${e}`;return Y.get(n,async()=>(await z(`api/models/all?${t.toString()}`)).providers??{},12e4)}async function Jr(e,t){await B(`api/models/${q(e,t)}/enable`),Y.invalidate(`enabled-models`),Y.invalidatePattern(/^available-models-/),Y.invalidatePattern(/^available-image-models-/)}async function Yr(e,t){await B(`api/models/${q(e,t)}/disable`),Y.invalidate(`enabled-models`),Y.invalidatePattern(/^available-models-/),Y.invalidatePattern(/^available-image-models-/)}async function Xr(e,t,n){await B(`api/models/${q(e,t)}/settings`,n),Y.invalidatePattern(/^available-models-/),Y.invalidate(`enabled-models`)}async function Zr(){return Y.get(`enabled-models`,async()=>(await z(`api/models/enabled?useCase=coding`)).enabledModels??{},12e4)}async function Qr(e){let t=new URLSearchParams({provider:e,useCase:`image`}),n=`available-image-models-${e}`;return Y.get(n,async()=>{let e=await z(`api/models?${t.toString()}`);return{models:e.models??[],enabledModelIds:e.enabledModelIds??[]}},12e4)}async function $r(){return Y.get(`enabled-image-models`,async()=>(await z(`api/models/enabled?useCase=image`)).enabledModels??{},12e4)}async function ei(e,t){await B(`api/models/${q(e,t)}/enable?useCase=image`),Y.invalidate(`enabled-image-models`),Y.invalidatePattern(/^available-models-/),Y.invalidatePattern(/^available-image-models-/)}async function ti(e,t){await B(`api/models/${q(e,t)}/disable?useCase=image`),Y.invalidate(`enabled-image-models`),Y.invalidatePattern(/^available-models-/),Y.invalidatePattern(/^available-image-models-/)}async function ni(e,t,n,r,i,a,o=crypto.randomUUID()){function s(){r&&Br(r,{conversationId:i,runId:o}).catch(function(){})}a?.addEventListener(`abort`,s,{once:!0});try{a?.aborted&&(s(),a.throwIfAborted());let c=await B(`api/image/generate`,{prompt:e,model:t,provider:n,threadId:r,conversationId:i,runId:o},{signal:a});return a?.throwIfAborted(),c}finally{a?.removeEventListener(`abort`,s)}}async function ri(e){await bt(e)}async function ii(e){return yt(e)}async function ai(e,t){return st(`api/projects/${q(e)}/plugin-export`,t)}async function oi(e,t){return B(`api/projects/${q(e)}/plugin-import/preview`,{url:t})}async function si(e,t){return B(`api/projects/${q(e)}/plugin-import`,t)}async function ci(e,t){return B(`api/projects/${q(e)}/plugin-upload`,t)}async function li(e){let t=await B(`api/models/${q(e)}/refresh`);return Y.invalidatePattern(/^available-models-/),Y.invalidatePattern(/^available-image-models-/),Y.invalidate(`enabled-models`),Y.invalidate(`enabled-image-models`),t.modelCount??0}async function ui(e,t){await B(`api/projects/${q(e)}/commands`,t)}async function di(e,t){await U(`api/projects/${q(e)}/commands/${q(t)}`)}async function fi(e){return z(`api/projects/${q(e)}/package-scripts`)}async function pi(e){return z(`api/threads/${q(e)}/files`)}async function mi(e){return(await z(`api/threads/${q(e)}/project-scripts`)).scripts}async function hi(e,t,n,r){let{relativeFolder:i,...a}=r??{},o={scriptName:t,command:n};return i&&(o.relativeFolder=i),W(`api/threads/${q(e)}/project-scripts/run`,o,a)}async function gi(e,t){return B(`api/threads/${q(e)}/project-scripts/stop`,{scriptName:t})}async function _i(e){return Y.get(`thread-${e}`,async()=>z(`api/threads/${e}`),45e3)}async function vi(e){return B(`api/projects/${q(e)}/run-suggest`,{})}async function yi(e){return B(`api/projects/${q(e)}/setup-suggest`,{})}async function bi(e,t,n){return cn.info(`Start dev server requested`,{projectId:e,threadId:t}),Y.invalidate(`dev-server-running-${e}${t?`-${t}`:``}`),W(`api/projects/${q(e)}/run`,{threadId:t},{signal:n})}async function xi(e,t){return Y.invalidate(`dev-server-running-${e}${t?`-${t}`:``}`),B(`api/projects/${q(e)}/stop`,t?{threadId:t}:{})}async function Si(e,t,n){return B(`api/projects/${q(e)}/free-port`,{port:t,...n?{threadId:n}:{}})}async function Ci(e,t){return Y.get(`dev-server-running-${e}${t?`-${t}`:``}`,async()=>z(`api/projects/${q(e)}/running${t?`?threadId=${encodeURIComponent(t)}`:``}`),3e3)}async function wi(e){return z(`api/projects/${q(e)}/system-prompt`)}async function Ti(){return z(`api/onboarding/status`)}async function Ei(){return z(`api/onboarding/git-check`)}async function Di(){return B(`api/onboarding/complete`,{})}async function Oi(){return B(`api/onboarding/reset`,{})}async function ki(){return z(`api/onboarding/recommended-models`)}async function Ai(e){return(await z(`api/slash-commands?threadId=${q(e)}`)).commands??[]}async function ji(e){let t=await z(`api/slash-commands?threadId=${q(e)}`);return{commands:t.commands??[],skills:t.skills??[],bundledSkills:t.bundledSkills??[]}}async function Mi(e,t,n,r,i){return B(`api/slash-commands`,{name:e,content:t,metadata:n,scope:r,threadId:i})}async function Ni(e,t){let n=await fetch(`http://localhost:641/api/slash-commands`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e,threadId:t})});if(!n.ok)throw Error(`Failed to delete slash command: ${n.statusText}`);return n.json()}async function Pi(e){let t=new URLSearchParams;e?.threadId?t.set(`threadId`,e.threadId):e?.projectId&&t.set(`projectId`,e.projectId);let n=t.toString();await U(`api/conversations${n?`?${n}`:``}`)}async function Fi(e=20,t=0,r,i){return z(`api/conversations/recent?limit=${Math.min(Math.max(e,1),100)}&offset=${Math.max(t,0)}${r?`&projectId=${encodeURIComponent(r)}`:``}${i?.unreadOnly?`&unreadOnly=1`:``}${i?.archivedOnly?`&archivedOnly=1`:``}&${n}=${i?.order??`updated`}`)}async function Ii(e,t){await K(`api/conversations/${q(e)}/${q(t)}/read`,{})}async function Li(e){return(await z(`api/conversations/${q(e)}/completions`)).conversationIds??[]}async function Ri(e){await U(`api/conversations/${q(e)}/complete`)}async function zi(e){await B(`api/git/scan-merged-prs/${q(e)}`,{})}async function Bi(e,t){await U(`api/conversations/${q(e)}/${q(t)}/read`)}async function Vi(e,t){await K(`api/conversations/${q(e)}/${q(t)}/archive`,{})}async function Hi(e,t){return(await z(`api/conversations/${q(e)}/${q(t)}/sibling`)).hasSibling}async function Ui(e,t,n){await H(`api/conversations/${q(e)}/${q(t)}/title`,{title:n})}async function Wi(e,t,n){await H(`api/conversations/${q(e)}/${q(t)}/model`,{model:n.model,modelProvider:n.modelProvider})}async function Gi(e,t){let n=new URLSearchParams({conversationId:e});return t&&n.set(`threadId`,t),z(`api/goals?${n}`)}async function Ki(e,t){return B(`api/goals/${q(e)}/pause`,t?{threadId:t}:{})}async function qi(e,t){return B(`api/goals/${q(e)}/resume`,t?{threadId:t}:{})}async function Ji(e,t){return B(`api/goals/${q(e)}/end`,t?{threadId:t}:{})}async function Yi(e,t){return z(`api/conversations/${q(e)}/${q(t)}/usage`)}async function Xi(e,t,n){let r=`context-breakdown-${e}-${t}`;return n?.forceRefresh&&Y.invalidate(r),Y.get(r,async()=>z(`api/conversations/${q(e)}/${q(t)}/context`),45e3)}async function Zi(e,t){return z(`api/conversations/${q(e)}/${q(t)}/context/tool-definitions`)}async function Qi(){try{return await z(`api/update/check`)}catch{return{updateAvailable:!1,supported:!1}}}async function $i(){return B(`api/update/apply`)}async function ea(e){return(await z(`api/ask-user/pending${e?`?threadId=${encodeURIComponent(e)}`:``}`)).questions??[]}async function ta(e,t,n){await B(`api/ask-user/respond`,{...typeof t==`string`?{toolCallId:e,answer:t}:{toolCallId:e,answers:t},...n?{threadId:n}:{}})}async function na(e){await B(`api/ask-user/credentials`,e)}async function ra(e,t,n){await B(`api/shell-permission/respond`,{toolCallId:e,decision:t,pattern:n?.pattern,projectId:n?.projectId,...n?.threadId?{threadId:n.threadId}:{}})}async function ia(e,t,n){await B(`api/shell-permission/respond`,{toolCallId:e,escalationScope:t===`skip`?void 0:t,escalationDecision:t===`skip`?`skip`:void 0,...n?{threadId:n}:{}})}async function aa(e,t,n){await B(`api/web-fetch-permission/respond`,{toolCallId:e,decision:t,...n?{threadId:n}:{}})}async function oa(e,t){await B(`api/browser/ready`,{toolCallId:e,webviewId:t})}async function sa(e,t,n){await B(`api/browser/action-result`,{toolCallId:e,result:t,...n?{threadId:n}:{}})}async function ca(e){return z(`api/mcp/config?projectPath=${encodeURIComponent(e)}`)}async function la(e,t,n){return V(`api/mcp/config`,{projectPath:e,serverName:t,serverConfig:n})}async function ua(e,t){return U(`api/mcp/config/${q(t)}?projectPath=${encodeURIComponent(e)}`)}async function da(e,t){return B(`api/mcp/discover`,{projectPath:e,serverName:t})}async function fa(){return(await z(`api/mcp/popular`)).servers??[]}async function pa(e,t){return B(`api/mcp/oauth/authorize`,{projectPath:e,serverName:t})}async function ma(e,t){return z(`api/mcp/oauth/status?projectPath=${encodeURIComponent(e)}&serverName=${encodeURIComponent(t)}`)}async function ha(e,t){return U(`api/mcp/oauth?projectPath=${encodeURIComponent(e)}&serverName=${encodeURIComponent(t)}`)}async function ga(e){return(await z(`api/projects/${q(e)}/ai-files`)).nodes??[]}async function _a(e,t){return U(`api/projects/${q(e)}/ai-file?path=${encodeURIComponent(t)}`)}async function va(e,t){return z(`api/projects/${q(e)}/ai-file?path=${encodeURIComponent(t)}`)}async function ya(e,t,n){return V(`api/projects/${q(e)}/ai-file`,{path:t,content:n})}async function ba(e,t,n){return V(`api/projects/${q(e)}/ai-files/skill/model-invocation`,{name:t,disableModelInvocation:n})}async function xa(e){return(await z(`api/threads/${q(e)}/ai-files`)).nodes??[]}async function Sa(e,t,n){return V(`api/threads/${q(e)}/ai-file`,{path:t,content:n})}async function Ca(e,t,n){return B(`api/threads/${q(e)}/ai-files/skill`,{name:t,description:n})}async function wa(e,t,n){return V(`api/threads/${q(e)}/ai-files/skill/model-invocation`,{name:t,disableModelInvocation:n})}async function Ta(e,t,n,r){return B(`api/threads/${q(e)}/ai-files/agent`,{name:t,description:n,tools:r})}async function Ea(e,t){return U(`api/threads/${q(e)}/ai-file?path=${encodeURIComponent(t)}`)}export{Tr as $,De as $i,ia as $n,U as $r,xr as $t,ua as A,Ee as Ai,ya as An,kt as Ar,gr as At,da as B,qe as Bi,fn as Bn,Lt as Br,Ln as Bt,Bn as C,_e as Ci,qi as Cn,en as Cr,Qn as Ct,Ca as D,ie as Di,ii as Dn,Zt as Dr,hr as Dt,Ta as E,xe as Ei,ui as En,Qt as Er,ga as Et,Ni as F,ue as Fi,zi as Fn,Bt as Fr,_n as Ft,qr as G,Pe as Gi,xn as Gn,Rt as Gr,_i as Gt,Jr as H,he as Hi,Rn as Hn,It as Hr,Ai as Ht,Cr as I,y as Ii,Dr as In,qt as Ir,Fi as It,Li as J,te as Ji,xi as Jn,xt as Jr,Zi as Jt,Qr as K,Me as Ki,Pr as Kn,Nt as Kr,xa as Kt,Ea as L,We as Li,Mr as Ln,Ot as Lr,ki as Lt,_a as M,ye as Mi,Cn as Mn,Wt as Mr,bn as Mt,Kn as N,h as Ni,Sn as Nn,zt as Nr,yn as Nt,Dn as O,oe as Oi,la as On,Ht as Or,mi as Ot,Vn as P,x as Pi,Sa as Pn,Gt as Pr,vn as Pt,ni as Q,Te as Qi,na as Qn,Y as Qr,hn as Qt,ti as R,ce as Ri,Nr as Rn,Kt as Rr,ir as Rt,gn as S,be as Si,sr as Sn,Yt as Sr,$n as St,Sr as T,ee as Ti,hi as Tn,on as Tr,va as Tt,Ji as U,Be as Ui,wa as Un,Mt as Ur,ji as Ut,ei as V,_ as Vi,ba as Vn,Ft as Vr,Nn as Vt,ai as W,ne as Wi,bi as Wn,jt as Wr,kn as Wt,Er as X,ae as Xi,Fn as Xn,wt as Xr,Hi as Xt,ea as Y,Se as Yi,gi as Yn,Et as Yr,qn as Yt,Si as Z,se as Zi,ta as Zn,ft as Zr,si as Zt,ri as _,Ae as _i,vr as _n,tn as _r,ma as _t,pa as a,le as aa,B as ai,cr as an,yr as ar,Yn as at,or as b,m as bi,jn as bn,an as br,fi as bt,mn as c,v as ca,at as ci,Hr as cn,$ as cr,Xi as ct,Pn as d,re as da,it as di,In as dn,Wr as dr,er as dt,Ue as ea,q as ei,Ci as en,ra as er,zr as et,ar as f,Fe as fa,nt as fi,oi as fn,Gn as fr,tr as ft,Di as g,rt as gi,Ui as gn,nn as gr,ca as gt,Rr as h,O as hi,li as hn,$t as hr,An as ht,Vi as i,Ge as ia,H as ii,Tn as in,yi as ir,Zr as it,br as j,He as ji,_r as jn,Pt as jr,rr as jt,di as k,we as ki,Xr as kn,Vt as kr,wi as kt,Ir as l,ge as la,k as li,Ki as ln,Gr as lr,jr as lt,Ri as m,Ce as ma,Ze as mi,On as mn,ci as mr,Gi as mt,Wn as n,de as na,M as ni,Un as nn,Fr as nr,Mn as nt,Qi as o,me as oa,ct as oi,lr as on,Bi as or,kr as ot,zn as p,Ne as pa,Xe as pi,Jn as pn,wr as pr,nr as pt,Kr as q,Le as qi,Br as qn,Ut as qr,pi as qt,$i as r,b as ra,R as ri,Ii as rn,vi as rr,$r as rt,Ei as s,Je as sa,V as si,Vr as sn,Hn as sr,Xn as st,X as t,g as ta,z as ti,Zn as tn,aa as tr,En as tt,Pi as u,Ve as ua,tt as ui,Lr as un,Ur as ur,Yi as ut,dr as v,ke as vi,sa as vn,rn as vr,Ar as vt,Mi as w,Ie as wi,ha as wn,sn as wr,mr as wt,pr as x,fe as xi,Oi as xn,Xt as xr,fa as xt,ur as y,p as yi,oa as yn,Jt as yr,Ti as yt,Yr as z,pe as zi,Wi as zn,At as zr,pn as zt};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{o as t,t as n}from"./react-vendor-Ee0-5T4I.js";import{ln as r,ot as i}from"./dist-PhNKneni.js";import{t as a}from"./button-BvwSd5oT.js";import{fn as o}from"./api-DS1qgAo_.js";import{i as s,n as c,r as l,t as u}from"./card-BQvbp3oN.js";var d=e(t(),1),f=n(),p=i(`app.async-error-boundary.ui`),m=class extends d.Component{state={error:null};static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){p.error(`AsyncErrorBoundary caught an error`,{error:e,info:t}),o({level:`ERROR`,context:`app.async-error-boundary.ui`,message:`AsyncErrorBoundary caught an error`,data:{message:e.message,stack:e.stack,componentStack:t.componentStack}})}handleRetry=()=>{this.setState({error:null}),this.props.onRetry?.()};render(){let{error:e}=this.state;return e?this.props.renderFallback?this.props.renderFallback(e,this.handleRetry):(0,f.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,f.jsxs)(u,{className:`max-w-md`,children:[(0,f.jsx)(l,{children:(0,f.jsx)(s,{className:`text-destructive`,children:this.props.fallbackTitle??`Something went wrong`})}),(0,f.jsxs)(c,{className:`space-y-4`,children:[(0,f.jsx)(`p`,{className:r.body,children:e.message}),(0,f.jsx)(a,{variant:`outline`,onClick:this.handleRetry,children:`Retry`})]})]})}):this.props.children}};export{m as t};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{o as t,t as n}from"./react-vendor-Ee0-5T4I.js";import{fn as r,st as i}from"./dist-DQEC_JS0.js";import{t as a}from"./button-Djzr1B_4.js";import{dn as o}from"./api-Cho1mlFq.js";import{i as s,n as c,r as l,t as u}from"./card-B0sh3Qvx.js";var d=e(t(),1),f=n(),p=i(`app.async-error-boundary.ui`),m=class extends d.Component{state={error:null};static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){p.error(`AsyncErrorBoundary caught an error`,{error:e,info:t}),o({level:`ERROR`,context:`app.async-error-boundary.ui`,message:`AsyncErrorBoundary caught an error`,data:{message:e.message,stack:e.stack,componentStack:t.componentStack}})}handleRetry=()=>{this.setState({error:null}),this.props.onRetry?.()};render(){let{error:e}=this.state;return e?this.props.renderFallback?this.props.renderFallback(e,this.handleRetry):(0,f.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,f.jsxs)(u,{className:`max-w-md`,children:[(0,f.jsx)(l,{children:(0,f.jsx)(s,{className:`text-destructive`,children:this.props.fallbackTitle??`Something went wrong`})}),(0,f.jsxs)(c,{className:`space-y-4`,children:[(0,f.jsx)(`p`,{className:r.body,children:e.message}),(0,f.jsx)(a,{variant:`outline`,onClick:this.handleRetry,children:`Retry`})]})]})}):this.props.children}};export{m as t};
@@ -1,4 +1,4 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{ln as i,ot as a}from"./dist-PhNKneni.js";import{$ as o,n as s,r as c}from"./store-DdiKV6YO.js";import{t as l}from"./utils-BHAZna1O.js";import{$ as u,On as d,P as f,Qt as p,S as m,h,kn as g,l as _,tt as v}from"./lucide-react-BFzs_X2U.js";import{t as y}from"./button-BvwSd5oT.js";import{i as b,n as x,r as S,t as C}from"./tooltip-CqktA8Zq.js";import{an as w,li as T,vn as E}from"./api-DS1qgAo_.js";import{i as D,r as O}from"./browser-overlay-block-CiDtkfup.js";import{n as k}from"./chat-dock-context-DuJCw4sJ.js";import{t as A}from"./use-toast-xpb5jNtN.js";import{$t as j,A as M,C as N,D as P,E as F,G as I,Lr as L,O as R,S as z,T as B,V,en as H,j as U,k as W,l as G,ln as K,nn as q,u as J,w as Y}from"./index-SP0wF0IN.js";import{t as ee}from"./use-active-dock-panel-instance-hpa6hhuw.js";var X=e(n(),1),Z=t();async function te(e){let{projectId:t,oldText:n,newText:r,selection:i,replaceUnique:a=E}=e;if(n===r)return{kind:`unchanged`};try{let e=await a(t,n,r);if(e.applied&&e.path)return{kind:`replaced`,path:e.path}}catch{}return{kind:`prompt`,prompt:B(i,n,r)}}var Q=r();function ne(e){let t=(0,Z.c)(43),{onCommit:n,onCancelPreview:r}=e,i=s(),a=c(ae),l=c(ie),u=c(re),d;t[0]===a?d=t[1]:(d=e=>a?e.projectModelSelections[a]:void 0,t[0]=a,t[1]=d);let f=c(d),{selectedBrowserElement:p,setSelectedBrowserElement:m,setIsEditModeEnabled:h,setBrowserAgentProcessingThreadId:g}=U(),{handleSend:_}=H(),{paneId:v,conversationId:b}=j(),[x,S]=(0,X.useState)(!1),C;if(t[2]!==u||t[3]!==l){let e;t[5]===l?e=t[6]:(e=e=>e.projectId===l,t[5]=l,t[6]=e),C=u.find(e),t[2]=u,t[3]=l,t[4]=C}else C=t[4];let w=C,T;t[7]===p?T=t[8]:(T=P(p),t[7]=p,t[8]=T);let E=T,D;t[9]!==h||t[10]!==m?(D=()=>{S(!1),h(!1),m(null)},t[9]=h,t[10]=m,t[11]=D):D=t[11];let O=D,k;t[12]!==b||t[13]!==i||t[14]!==O||t[15]!==_||t[16]!==v||t[17]!==w?.lastSelectedModel||t[18]!==w?.lastSelectedModelProvider||t[19]!==l||t[20]!==a||t[21]!==g||t[22]!==f?.id||t[23]!==f?.provider?(k=async e=>{if(!l){A({title:`No project selected`,description:`Open a project to apply text edits.`,variant:`destructive`}),O();return}S(!0);let t=await te({projectId:l,oldText:e.originalText,newText:e.currentText,selection:e.selection});if(t.kind===`unchanged`){A({title:`No text changes detected`}),O();return}if(t.kind===`replaced`){A({title:`Text updated`,description:`Replaced in ${t.path}`}),O();return}let n=f?.id??w?.lastSelectedModel,r=f?.provider??w?.lastSelectedModelProvider;if(!a||!n){A({title:`Could not apply text change`,description:`Select a chat thread and model to send this change as a prompt.`,variant:`destructive`}),S(!1);return}_(v,b,t.prompt,n,[],r),i({type:o.SetChatInputDraft,threadId:v===`primary`?a:`${a}:${v}`,draft:``}),g(a),O()},t[12]=b,t[13]=i,t[14]=O,t[15]=_,t[16]=v,t[17]=w?.lastSelectedModel,t[18]=w?.lastSelectedModelProvider,t[19]=l,t[20]=a,t[21]=g,t[22]=f?.id,t[23]=f?.provider,t[24]=k):k=t[24],w?.lastSelectedModel,w?.lastSelectedModelProvider,f?.id,f?.provider;let M=k,N,I;t[25]===E?(N=t[26],I=t[27]):(N=()=>{E||S(!1)},I=[E],t[25]=E,t[26]=N,t[27]=I),(0,X.useEffect)(N,I);let L,B;t[28]===M?(L=t[29],B=t[30]):(L=()=>{let e=function(e){let t=e.detail;F(t)&&M(t)},t=function(e){let t=R(e.data);t&&M(t)};return window.addEventListener(z,e),window.addEventListener(`message`,t),function(){window.removeEventListener(z,e),window.removeEventListener(`message`,t)}},B=[M],t[28]=M,t[29]=L,t[30]=B),(0,X.useEffect)(L,B);let V;t[31]!==O||t[32]!==r?(V=function(){r(),O()},t[31]=O,t[32]=r,t[33]=V):V=t[33];let W=V;if(!E)return null;let G;t[34]!==x||t[35]!==n?(G=(0,Q.jsx)(y,{type:`button`,size:`sm`,onClick:n,disabled:x,children:`Apply Changes`}),t[34]=x,t[35]=n,t[36]=G):G=t[36];let K;t[37]!==W||t[38]!==x?(K=(0,Q.jsx)(y,{type:`button`,size:`sm`,variant:`outline`,onClick:W,disabled:x,children:`Cancel`}),t[37]=W,t[38]=x,t[39]=K):K=t[39];let q;return t[40]!==G||t[41]!==K?(q=(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center justify-center gap-2 border-b border-border px-3 py-2`,children:[G,K]}),t[40]=G,t[41]=K,t[42]=q):q=t[42],q}function re(e){return e.projects}function ie(e){return e.selectedProjectId}function ae(e){return e.selectedThreadId}function oe(e){let t=e.trim();return t?(!t.startsWith(`http://`)&&!t.startsWith(`https://`)&&(t=`http://${t}`),t):``}function se(e){return typeof e==`string`?e:typeof e==`object`&&e&&`url`in e&&typeof e.url==`string`?e.url:``}function ce(e){return e?e.querySelector(`electrobun-webview`):null}function le(e){e.webviewId!=null&&(e.toggleHidden(!0),e.togglePassthrough(!0))}function ue(e){e.webviewId!=null&&(e.toggleHidden(!1),e.togglePassthrough(!1),e.syncDimensions(!0))}function de(e,t){if(t){ue(e);return}le(e)}function fe(e){return e!=null&&e.getClientRects().length>0}function pe(e,t,n){let r=!1,i=0;function a(){if(!r){if(e.webviewId==null){i=requestAnimationFrame(a);return}t&&e.getAttribute(`src`)!==t&&e.loadURL(t),de(e,n())}}return i=requestAnimationFrame(a),function(){r=!0,cancelAnimationFrame(i)}}function me(e){let t=(0,Z.c)(8),{useNativeWebview:n,shouldRenderNativeWebview:r,currentUrl:i,resolveWebview:a}=e,[o,s]=(0,X.useState)(r),c;t[0]!==a||t[1]!==r||t[2]!==n?(c=()=>{if(!n)return;if(r){s(!0);return}let e=a();e&&le(e);let t=requestAnimationFrame(()=>{s(!1)});return function(){cancelAnimationFrame(t)}},t[0]=a,t[1]=r,t[2]=n,t[3]=c):c=t[3];let l;return t[4]!==i||t[5]!==r||t[6]!==n?(l=[r,n,i],t[4]=i,t[5]=r,t[6]=n,t[7]=l):l=t[7],(0,X.useLayoutEffect)(c,l),o}var he=a(`browser.preview-scripting`);function ge(e,t=!1,n=`select`){return`(function () {
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{fn as i,st as a}from"./dist-DQEC_JS0.js";import{$ as o,n as s,r as c}from"./store-D151firE.js";import{t as l}from"./utils-DfZXN5fy.js";import{$ as u,On as d,P as f,Qt as p,S as m,h,kn as g,l as _,tt as v}from"./lucide-react-BFzs_X2U.js";import{t as y}from"./button-Djzr1B_4.js";import{i as b,n as x,r as S,t as C}from"./tooltip-CXREivps.js";import{_n as w,in as T,li as E}from"./api-Cho1mlFq.js";import{i as D,r as O}from"./browser-overlay-block-CiDtkfup.js";import{n as k}from"./chat-dock-context-C-oyjLpB.js";import{t as A}from"./use-toast-xpb5jNtN.js";import{$t as j,A as M,C as N,D as P,E as F,G as I,Lr as L,O as R,S as z,T as B,V,en as H,j as U,k as W,l as G,ln as K,nn as q,u as J,w as Y}from"./index-BlkYPP7B.js";import{t as ee}from"./use-active-dock-panel-instance-DDpytbsn.js";var X=e(n(),1),Z=t();async function te(e){let{projectId:t,oldText:n,newText:r,selection:i,replaceUnique:a=w}=e;if(n===r)return{kind:`unchanged`};try{let e=await a(t,n,r);if(e.applied&&e.path)return{kind:`replaced`,path:e.path}}catch{}return{kind:`prompt`,prompt:B(i,n,r)}}var Q=r();function ne(e){let t=(0,Z.c)(43),{onCommit:n,onCancelPreview:r}=e,i=s(),a=c(ae),l=c(ie),u=c(re),d;t[0]===a?d=t[1]:(d=e=>a?e.projectModelSelections[a]:void 0,t[0]=a,t[1]=d);let f=c(d),{selectedBrowserElement:p,setSelectedBrowserElement:m,setIsEditModeEnabled:h,setBrowserAgentProcessingThreadId:g}=U(),{handleSend:_}=H(),{paneId:v,conversationId:b}=j(),[x,S]=(0,X.useState)(!1),C;if(t[2]!==u||t[3]!==l){let e;t[5]===l?e=t[6]:(e=e=>e.projectId===l,t[5]=l,t[6]=e),C=u.find(e),t[2]=u,t[3]=l,t[4]=C}else C=t[4];let w=C,T;t[7]===p?T=t[8]:(T=P(p),t[7]=p,t[8]=T);let E=T,D;t[9]!==h||t[10]!==m?(D=()=>{S(!1),h(!1),m(null)},t[9]=h,t[10]=m,t[11]=D):D=t[11];let O=D,k;t[12]!==b||t[13]!==i||t[14]!==O||t[15]!==_||t[16]!==v||t[17]!==w?.lastSelectedModel||t[18]!==w?.lastSelectedModelProvider||t[19]!==l||t[20]!==a||t[21]!==g||t[22]!==f?.id||t[23]!==f?.provider?(k=async e=>{if(!l){A({title:`No project selected`,description:`Open a project to apply text edits.`,variant:`destructive`}),O();return}S(!0);let t=await te({projectId:l,oldText:e.originalText,newText:e.currentText,selection:e.selection});if(t.kind===`unchanged`){A({title:`No text changes detected`}),O();return}if(t.kind===`replaced`){A({title:`Text updated`,description:`Replaced in ${t.path}`}),O();return}let n=f?.id??w?.lastSelectedModel,r=f?.provider??w?.lastSelectedModelProvider;if(!a||!n){A({title:`Could not apply text change`,description:`Select a chat thread and model to send this change as a prompt.`,variant:`destructive`}),S(!1);return}_(v,b,t.prompt,n,[],r),i({type:o.SetChatInputDraft,threadId:v===`primary`?a:`${a}:${v}`,draft:``}),g(a),O()},t[12]=b,t[13]=i,t[14]=O,t[15]=_,t[16]=v,t[17]=w?.lastSelectedModel,t[18]=w?.lastSelectedModelProvider,t[19]=l,t[20]=a,t[21]=g,t[22]=f?.id,t[23]=f?.provider,t[24]=k):k=t[24],w?.lastSelectedModel,w?.lastSelectedModelProvider,f?.id,f?.provider;let M=k,N,I;t[25]===E?(N=t[26],I=t[27]):(N=()=>{E||S(!1)},I=[E],t[25]=E,t[26]=N,t[27]=I),(0,X.useEffect)(N,I);let L,B;t[28]===M?(L=t[29],B=t[30]):(L=()=>{let e=function(e){let t=e.detail;F(t)&&M(t)},t=function(e){let t=R(e.data);t&&M(t)};return window.addEventListener(z,e),window.addEventListener(`message`,t),function(){window.removeEventListener(z,e),window.removeEventListener(`message`,t)}},B=[M],t[28]=M,t[29]=L,t[30]=B),(0,X.useEffect)(L,B);let V;t[31]!==O||t[32]!==r?(V=function(){r(),O()},t[31]=O,t[32]=r,t[33]=V):V=t[33];let W=V;if(!E)return null;let G;t[34]!==x||t[35]!==n?(G=(0,Q.jsx)(y,{type:`button`,size:`sm`,onClick:n,disabled:x,children:`Apply Changes`}),t[34]=x,t[35]=n,t[36]=G):G=t[36];let K;t[37]!==W||t[38]!==x?(K=(0,Q.jsx)(y,{type:`button`,size:`sm`,variant:`outline`,onClick:W,disabled:x,children:`Cancel`}),t[37]=W,t[38]=x,t[39]=K):K=t[39];let q;return t[40]!==G||t[41]!==K?(q=(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center justify-center gap-2 border-b border-border px-3 py-2`,children:[G,K]}),t[40]=G,t[41]=K,t[42]=q):q=t[42],q}function re(e){return e.projects}function ie(e){return e.selectedProjectId}function ae(e){return e.selectedThreadId}function oe(e){let t=e.trim();return t?(!t.startsWith(`http://`)&&!t.startsWith(`https://`)&&(t=`http://${t}`),t):``}function se(e){return typeof e==`string`?e:typeof e==`object`&&e&&`url`in e&&typeof e.url==`string`?e.url:``}function ce(e){return e?e.querySelector(`electrobun-webview`):null}function le(e){e.webviewId!=null&&(e.toggleHidden(!0),e.togglePassthrough(!0))}function ue(e){e.webviewId!=null&&(e.toggleHidden(!1),e.togglePassthrough(!1),e.syncDimensions(!0))}function de(e,t){if(t){ue(e);return}le(e)}function fe(e){return e!=null&&e.getClientRects().length>0}function pe(e,t,n){let r=!1,i=0;function a(){if(!r){if(e.webviewId==null){i=requestAnimationFrame(a);return}t&&e.getAttribute(`src`)!==t&&e.loadURL(t),de(e,n())}}return i=requestAnimationFrame(a),function(){r=!0,cancelAnimationFrame(i)}}function me(e){let t=(0,Z.c)(8),{useNativeWebview:n,shouldRenderNativeWebview:r,currentUrl:i,resolveWebview:a}=e,[o,s]=(0,X.useState)(r),c;t[0]!==a||t[1]!==r||t[2]!==n?(c=()=>{if(!n)return;if(r){s(!0);return}let e=a();e&&le(e);let t=requestAnimationFrame(()=>{s(!1)});return function(){cancelAnimationFrame(t)}},t[0]=a,t[1]=r,t[2]=n,t[3]=c):c=t[3];let l;return t[4]!==i||t[5]!==r||t[6]!==n?(l=[r,n,i],t[4]=i,t[5]=r,t[6]=n,t[7]=l):l=t[7],(0,X.useLayoutEffect)(c,l),o}var he=a(`browser.preview-scripting`);function ge(e,t=!1,n=`select`){return`(function () {
2
2
  const api = window.__tarskBrowserPreview;
3
3
  if (!api || typeof api.setSelectMode !== "function") {
4
4
  log.error("[browser-preview] selection API is not available");
@@ -9,4 +9,4 @@ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}f
9
9
  const api = window.__tarskBrowserPreview;
10
10
  if (!api || typeof api.${t} !== "function") return;
11
11
  api.${t}();
12
- })();`}function ve(e,t,n=!1,r=`select`){if(typeof e.executeJavascript!=`function`)throw Error(`Browser preview webview JS execution is not available`);try{e.executeJavascript(ge(t,n,r))}catch(i){throw he.error(`[browser-preview] Failed to toggle native preview selection mode`,{enabled:t,preserveSelection:n,interaction:r,src:e.src,webview_id:e.webviewId,error:i instanceof Error?i.message:String(i),stack:i instanceof Error?i.stack:void 0}),i}}function ye(e,t){if(typeof e.executeJavascript!=`function`)throw Error(`Browser preview webview JS execution is not available`);e.executeJavascript(t)}function be(e,t,n=!1,r=`select`){let i=e.contentWindow;if(!i)throw Error(`Browser preview frame is not ready`);let a=i.__tarskBrowserPreview;if(!a?.setSelectMode)throw Error(`Browser preview selection API is not available in iframe preview`);a.setSelectMode(t,n,r)}function xe(e,t){let n=e.contentWindow?.__tarskBrowserPreview;if(!n||typeof n[t===`commit`?`commitTextEdit`:`cancelTextEdit`]!=`function`){he.warn(`[browser-preview] Preview text-edit API unavailable; action ignored`,{action:t,src:e.src});return}if(t===`commit`){n.commitTextEdit?.();return}n.cancelTextEdit?.()}var Se=a(`app.browser-tab.ui`),Ce=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`,`Home`,`End`]),we=new Set([`INPUT`,`TEXTAREA`,`SELECT`]),Te=new Set([`combobox`,`listbox`,`menu`,`menubar`,`menuitem`,`option`,`radiogroup`,`tablist`,`tab`,`grid`,`slider`,`spinbutton`]);function Ee(e){if(we.has(e.tagName)||e.isContentEditable)return!0;let t=e.getAttribute(`role`);return t!==null&&Te.has(t)}function De(e){return e instanceof HTMLElement&&Ee(e)}function Oe(e,t,n){let[r,i]=(0,X.useState)(!0),a=(0,X.useSyncExternalStore)(J,G),o=(0,X.useSyncExternalStore)(D,O),s=t&&(r&&!o||a),c=(0,X.useRef)(s);c.current=s;let l=(0,X.useCallback)(function(){return c.current},[]),u=(0,X.useCallback)(function(){i(fe(e.current))},[]);return(0,X.useLayoutEffect)(u),(0,X.useEffect)(()=>{let t=e.current;if(!t)return;let n=new ResizeObserver(u);return n.observe(t),function(){n.disconnect()}},[u,n]),{shouldShowWebview:s,readWebviewVisibility:l}}function ke({devServerUrl:e,devServerStopped:t,isBrowserActive:n,currentUrl:r,browserResetTrigger:i,webviewRef:a,iframeRef:o,setCurrentUrl:s,setPendingUrl:c,setInputUrl:l,setSelectionModeError:u,setIsSelectModeEnabled:d,setIsEditModeEnabled:f,setSelectedBrowserElement:p,setIsSelectionPromptOpen:m,setBrowserAgentProcessingThreadId:h}){let g=(0,X.useRef)(r),_=(0,X.useRef)(null);g.current=r,(0,X.useEffect)(()=>{s(``),c(``),l(``),u(null),d(!1),f(!1),p(null),m(!1),h(null);let e=a.current;e&&(e.src=``),o.current&&(o.current.src=``)},[i,h,d,f,m,p]),(0,X.useEffect)(()=>{if(t&&!e){s(``),c(``),l(``),u(null),n&&(d(!1),f(!1),p(null),m(!1),h(null));let e=a.current;e&&(e.src=``),o.current&&(o.current.src=``);return}if(!e)return;let r=oe(e);l(r),(!g.current||g.current===_.current)&&(s(r),c(r),_.current=r),u(null),n&&(d(!1),f(!1),p(null),m(!1),h(null))},[e,t,n,h,d,f,m,p])}function Ae(e,t,n,r){let i=(0,Z.c)(9),a;i[0]!==n||i[1]!==e||i[2]!==r||i[3]!==t?(a=()=>{if(!e||!t)return;let i=function(e){Ce.has(e.key)&&(De(e.target)||r.current?.contains(e.target)||(e.preventDefault(),n()))};return document.addEventListener(`keydown`,i,!0),function(){document.removeEventListener(`keydown`,i,!0)}},i[0]=n,i[1]=e,i[2]=r,i[3]=t,i[4]=a):a=i[4];let o;i[5]!==n||i[6]!==e||i[7]!==t?(o=[e,t,n],i[5]=n,i[6]=e,i[7]=t,i[8]=o):o=i[8],(0,X.useEffect)(a,o)}function je(e){let t=(0,Z.c)(13),{useNativeWebview:n,nativeWebviewMounted:r,currentUrl:i,resolveWebview:a,setCurrentUrl:o,setPendingUrl:s,setInputUrl:c,setSelectionModeError:l}=e,u;t[0]!==i||t[1]!==r||t[2]!==a||t[3]!==o||t[4]!==c||t[5]!==s||t[6]!==l||t[7]!==n?(u=()=>{let e=a();if(!n||!e||!r)return;let t=function(e){let t=typeof e.detail==`string`?e.detail:i;t&&(o(t),s(``),c(t))},u=function(e){let t=typeof e.detail==`string`?e.detail:i;t&&(o(t),c(t))},d=function(e){let t=se(e.detail);t&&w(t)},f=function(e){let t=M(e.detail);if(t){Y(t);return}let n=W(e.detail);n&&(l(null),N(n))};return e.on(`did-navigate`,t),e.on(`did-navigate-in-page`,u),e.on(`new-window-open`,d),e.on(`host-message`,f),function(){e.off(`did-navigate`,t),e.off(`did-navigate-in-page`,u),e.off(`new-window-open`,d),e.off(`host-message`,f)}},t[0]=i,t[1]=r,t[2]=a,t[3]=o,t[4]=c,t[5]=s,t[6]=l,t[7]=n,t[8]=u):u=t[8];let d;t[9]!==i||t[10]!==r||t[11]!==n?(d=[i,n,r],t[9]=i,t[10]=r,t[11]=n,t[12]=d):d=t[12],(0,X.useEffect)(u,d)}function Me(e){let t=(0,Z.c)(23),{useNativeWebview:n,nativeWebviewMounted:r,currentUrl:i,deviceMode:a,shouldShowWebview:o,pendingUrl:s,readWebviewVisibility:c,resolveWebview:l}=e,u;t[0]!==r||t[1]!==l||t[2]!==o||t[3]!==n?(u=()=>{if(!n||!r)return;let e=l();!e||e.webviewId==null||de(e,o)},t[0]=r,t[1]=l,t[2]=o,t[3]=n,t[4]=u):u=t[4];let d;t[5]!==i||t[6]!==a||t[7]!==r||t[8]!==o||t[9]!==n?(d=[r,n,i,a,o],t[5]=i,t[6]=a,t[7]=r,t[8]=o,t[9]=n,t[10]=d):d=t[10],(0,X.useLayoutEffect)(u,d);let f;t[11]!==r||t[12]!==s||t[13]!==c||t[14]!==l||t[15]!==n?(f=()=>{let e=l();if(!(!n||!e||!s||!r))return pe(e,s,c)},t[11]=r,t[12]=s,t[13]=c,t[14]=l,t[15]=n,t[16]=f):f=t[16];let p;t[17]!==i||t[18]!==r||t[19]!==s||t[20]!==c||t[21]!==n?(p=[s,n,i,r,c],t[17]=i,t[18]=r,t[19]=s,t[20]=c,t[21]=n,t[22]=p):p=t[22],(0,X.useEffect)(f,p)}function Ne(e){let t=(0,Z.c)(23),{isBrowserActive:n,currentUrl:r,isSelectModeEnabled:i,isEditModeEnabled:a,isSelectionPromptOpen:o,nativeWebviewMounted:s,useNativeWebview:c,resolveWebview:l,iframeRef:u,setIsSelectModeEnabled:d,setIsEditModeEnabled:f,setSelectionModeError:p}=e,m;t[0]!==r||t[1]!==u||t[2]!==n||t[3]!==a||t[4]!==i||t[5]!==o||t[6]!==s||t[7]!==l||t[8]!==f||t[9]!==d||t[10]!==p||t[11]!==c?(m=()=>{if(!n)return;if(!r){i&&d(!1),a&&f(!1);return}let e=!1,t=i||a,m=a?`edit`:`select`,h=!t&&o;return(function(){try{if(c){let e=l();if(!e||e.webviewId==null||!s)return;ve(e,t,h,m);return}let e=u.current;if(!e)return;be(e,t,h,m)}catch(n){let r=n;if(e||!t)return;let i=r instanceof Error?r.message:`Could not enable element selection.`;Se.error(`Failed to toggle browser selection mode:`,r),p(i),d(!1),f(!1),A({title:`Selection mode unavailable`,description:i,variant:`destructive`})}})(),function(){e=!0}},t[0]=r,t[1]=u,t[2]=n,t[3]=a,t[4]=i,t[5]=o,t[6]=s,t[7]=l,t[8]=f,t[9]=d,t[10]=p,t[11]=c,t[12]=m):m=t[12];let h;t[13]!==r||t[14]!==n||t[15]!==a||t[16]!==i||t[17]!==o||t[18]!==s||t[19]!==f||t[20]!==d||t[21]!==c?(h=[r,n,a,i,o,s,f,d,c],t[13]=r,t[14]=n,t[15]=a,t[16]=i,t[17]=o,t[18]=s,t[19]=f,t[20]=d,t[21]=c,t[22]=h):h=t[22],(0,X.useEffect)(m,h)}function Pe(e){let t=(0,Z.c)(23),n=ee(e,`browser`),{devServerUrl:r,devServerStopped:i}=I(),{browserResetTrigger:a,browserDeviceMode:o,setBrowserDeviceMode:s,isSelectModeEnabled:l,setIsSelectModeEnabled:u,isEditModeEnabled:d,setIsEditModeEnabled:f,selectedBrowserElement:p,setSelectedBrowserElement:m,setIsSelectionPromptOpen:h,isSelectionPromptOpen:g,setBrowserAgentProcessingThreadId:_}=U(),v=c(Ie),y=c(Fe),b;if(t[0]!==y||t[1]!==v){let e;t[3]===v?e=t[4]:(e=e=>e.projectId===v,t[3]=v,t[4]=e),b=y.find(e),t[0]=y,t[1]=v,t[2]=b}else b=t[2];let x=b,S;return t[5]!==o||t[6]!==a||t[7]!==i||t[8]!==r||t[9]!==n||t[10]!==d||t[11]!==l||t[12]!==g||t[13]!==p||t[14]!==x||t[15]!==v||t[16]!==_||t[17]!==s||t[18]!==f||t[19]!==u||t[20]!==h||t[21]!==m?(S={isBrowserActive:n,devServerUrl:r,devServerStopped:i,browserResetTrigger:a,browserDeviceMode:o,setBrowserDeviceMode:s,isSelectModeEnabled:l,setIsSelectModeEnabled:u,isEditModeEnabled:d,setIsEditModeEnabled:f,selectedBrowserElement:p,setSelectedBrowserElement:m,setIsSelectionPromptOpen:h,isSelectionPromptOpen:g,setBrowserAgentProcessingThreadId:_,selectedProjectId:v,selectedProject:x},t[5]=o,t[6]=a,t[7]=i,t[8]=r,t[9]=n,t[10]=d,t[11]=l,t[12]=g,t[13]=p,t[14]=x,t[15]=v,t[16]=_,t[17]=s,t[18]=f,t[19]=u,t[20]=h,t[21]=m,t[22]=S):S=t[22],S}function Fe(e){return e.projects}function Ie(e){return e.selectedProjectId}function Le(e){let t=(0,Z.c)(33),n=Pe(e),r=Ve(n),i=n.selectedProject?.runCommand,a;t[0]!==n.isEditModeEnabled||t[1]!==n.selectedBrowserElement?(a=n.isEditModeEnabled||P(n.selectedBrowserElement),t[0]=n.isEditModeEnabled,t[1]=n.selectedBrowserElement,t[2]=a):a=t[2];let o=n.isSelectModeEnabled||n.isEditModeEnabled,s;t[3]===r.currentUrl?s=t[4]:(s=()=>void w(r.currentUrl),t[3]=r.currentUrl,t[4]=s);let c;return t[5]!==r.currentUrl||t[6]!==r.deviceMode||t[7]!==r.handleWebviewRef||t[8]!==r.iframeRef||t[9]!==r.inputUrl||t[10]!==r.nativeWebviewMounted||t[11]!==r.previewActions.goBack||t[12]!==r.previewActions.goForward||t[13]!==r.previewActions.handleKeyDown||t[14]!==r.previewActions.refresh||t[15]!==r.previewActions.runPreviewTextEdit||t[16]!==r.previewActions.toggleEditMode||t[17]!==r.previewActions.toggleSelectMode||t[18]!==r.previewActions.updateDeviceMode||t[19]!==r.previewContainerRef||t[20]!==r.previewRpcPreload||t[21]!==r.selectionModeError||t[22]!==r.setInputUrl||t[23]!==r.useNativeWebview||t[24]!==n.devServerStopped||t[25]!==n.isBrowserActive||t[26]!==n.isSelectModeEnabled||t[27]!==n.selectedProjectId||t[28]!==i||t[29]!==a||t[30]!==o||t[31]!==s?(c={isBrowserActive:n.isBrowserActive,devServerStopped:n.devServerStopped,selectedProjectId:n.selectedProjectId,runCommand:i,currentUrl:r.currentUrl,inputUrl:r.inputUrl,setInputUrl:r.setInputUrl,handleKeyDown:r.previewActions.handleKeyDown,deviceMode:r.deviceMode,updateDeviceMode:r.previewActions.updateDeviceMode,selectionModeError:r.selectionModeError,isSelectModeEnabled:n.isSelectModeEnabled,isEditModeActive:a,isSurfaceSelectInteraction:o,toggleSelectMode:r.previewActions.toggleSelectMode,toggleEditMode:r.previewActions.toggleEditMode,refresh:r.previewActions.refresh,goBack:r.previewActions.goBack,goForward:r.previewActions.goForward,openExternal:s,runPreviewTextEdit:r.previewActions.runPreviewTextEdit,previewContainerRef:r.previewContainerRef,iframeRef:r.iframeRef,handleWebviewRef:r.handleWebviewRef,useNativeWebview:r.useNativeWebview,nativeWebviewMounted:r.nativeWebviewMounted,previewRpcPreload:r.previewRpcPreload},t[5]=r.currentUrl,t[6]=r.deviceMode,t[7]=r.handleWebviewRef,t[8]=r.iframeRef,t[9]=r.inputUrl,t[10]=r.nativeWebviewMounted,t[11]=r.previewActions.goBack,t[12]=r.previewActions.goForward,t[13]=r.previewActions.handleKeyDown,t[14]=r.previewActions.refresh,t[15]=r.previewActions.runPreviewTextEdit,t[16]=r.previewActions.toggleEditMode,t[17]=r.previewActions.toggleSelectMode,t[18]=r.previewActions.updateDeviceMode,t[19]=r.previewContainerRef,t[20]=r.previewRpcPreload,t[21]=r.selectionModeError,t[22]=r.setInputUrl,t[23]=r.useNativeWebview,t[24]=n.devServerStopped,t[25]=n.isBrowserActive,t[26]=n.isSelectModeEnabled,t[27]=n.selectedProjectId,t[28]=i,t[29]=a,t[30]=o,t[31]=s,t[32]=c):c=t[32],c}function Re(e,t,n){return(0,X.useCallback)(function(){if(e){t()?.focus();return}n.current?.contentWindow?.focus()},[e])}function ze(e,t,n){return(0,X.useCallback)(function(r){e.current=r,r&&pe(r,t.current,n)},[n])}function Be(e){let[t,n]=(0,X.useState)(``),[r,i]=(0,X.useState)(``),[a,o]=(0,X.useState)(``),[s,c]=(0,X.useState)(e),[l,u]=(0,X.useState)(null),d=(0,X.useRef)(null),f=(0,X.useRef)(a),p=(0,X.useRef)(null),m=(0,X.useRef)(null);return f.current=a,(0,X.useEffect)(()=>{c(e)},[e]),{inputUrl:t,setInputUrl:n,currentUrl:r,setCurrentUrl:i,pendingUrl:a,setPendingUrl:o,deviceMode:s,setDeviceMode:c,selectionModeError:l,setSelectionModeError:u,webviewRef:d,pendingUrlRef:f,iframeRef:p,previewContainerRef:m}}function Ve(e){let t=(0,Z.c)(80),{isBrowserActive:n,devServerUrl:r,devServerStopped:i,browserResetTrigger:a,browserDeviceMode:o,setBrowserDeviceMode:s,isSelectModeEnabled:c,setIsSelectModeEnabled:l,isEditModeEnabled:u,setIsEditModeEnabled:d,selectedBrowserElement:f,setSelectedBrowserElement:p,setIsSelectionPromptOpen:m,isSelectionPromptOpen:h,setBrowserAgentProcessingThreadId:g}=e,{inputUrl:_,setInputUrl:v,currentUrl:y,setCurrentUrl:b,pendingUrl:x,setPendingUrl:S,deviceMode:C,setDeviceMode:w,selectionModeError:E,setSelectionModeError:D,webviewRef:O,pendingUrlRef:k,iframeRef:A,previewContainerRef:j}=Be(o),M;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(M=T(),t[0]=M):M=t[0];let N=M,P;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(P=q(),t[1]=P):P=t[1];let F=P,I=N&&!!y,L;t[2]!==j||t[3]!==O?(L=function(){return O.current??ce(j.current)},t[2]=j,t[3]=O,t[4]=L):L=t[4];let R=L,{shouldShowWebview:z,readWebviewVisibility:B}=Oe(j,n,y),V;t[5]!==y||t[6]!==R||t[7]!==I?(V={useNativeWebview:N,shouldRenderNativeWebview:I,currentUrl:y,resolveWebview:R},t[5]=y,t[6]=R,t[7]=I,t[8]=V):V=t[8];let H=me(V),U;t[9]!==a||t[10]!==y||t[11]!==i||t[12]!==r||t[13]!==A||t[14]!==n||t[15]!==g||t[16]!==b||t[17]!==v||t[18]!==d||t[19]!==l||t[20]!==m||t[21]!==S||t[22]!==p||t[23]!==D||t[24]!==O?(U={devServerUrl:r,devServerStopped:i,isBrowserActive:n,currentUrl:y,browserResetTrigger:a,webviewRef:O,iframeRef:A,setCurrentUrl:b,setPendingUrl:S,setInputUrl:v,setSelectionModeError:D,setIsSelectModeEnabled:l,setIsEditModeEnabled:d,setSelectedBrowserElement:p,setIsSelectionPromptOpen:m,setBrowserAgentProcessingThreadId:g},t[9]=a,t[10]=y,t[11]=i,t[12]=r,t[13]=A,t[14]=n,t[15]=g,t[16]=b,t[17]=v,t[18]=d,t[19]=l,t[20]=m,t[21]=S,t[22]=p,t[23]=D,t[24]=O,t[25]=U):U=t[25],ke(U),Ae(n,N,Re(N,R,A),j);let W;t[26]!==y||t[27]!==H||t[28]!==R||t[29]!==b||t[30]!==v||t[31]!==S||t[32]!==D?(W={useNativeWebview:N,nativeWebviewMounted:H,currentUrl:y,resolveWebview:R,setCurrentUrl:b,setPendingUrl:S,setInputUrl:v,setSelectionModeError:D},t[26]=y,t[27]=H,t[28]=R,t[29]=b,t[30]=v,t[31]=S,t[32]=D,t[33]=W):W=t[33],je(W);let G;t[34]!==y||t[35]!==C||t[36]!==H||t[37]!==x||t[38]!==B||t[39]!==R||t[40]!==z?(G={useNativeWebview:N,nativeWebviewMounted:H,currentUrl:y,deviceMode:C,shouldShowWebview:z,pendingUrl:x,readWebviewVisibility:B,resolveWebview:R},t[34]=y,t[35]=C,t[36]=H,t[37]=x,t[38]=B,t[39]=R,t[40]=z,t[41]=G):G=t[41],Me(G);let K;t[42]!==y||t[43]!==A||t[44]!==n||t[45]!==u||t[46]!==c||t[47]!==h||t[48]!==H||t[49]!==R||t[50]!==d||t[51]!==l||t[52]!==D?(K={isBrowserActive:n,currentUrl:y,isSelectModeEnabled:c,isEditModeEnabled:u,isSelectionPromptOpen:h,nativeWebviewMounted:H,useNativeWebview:N,resolveWebview:R,iframeRef:A,setIsSelectModeEnabled:l,setIsEditModeEnabled:d,setSelectionModeError:D},t[42]=y,t[43]=A,t[44]=n,t[45]=u,t[46]=c,t[47]=h,t[48]=H,t[49]=R,t[50]=d,t[51]=l,t[52]=D,t[53]=K):K=t[53],Ne(K);let J=ze(O,k,B),Y;t[54]!==A||t[55]!==_||t[56]!==R||t[57]!==f||t[58]!==s||t[59]!==b||t[60]!==w||t[61]!==v||t[62]!==d||t[63]!==l||t[64]!==m||t[65]!==S||t[66]!==p||t[67]!==D?(Y={useNativeWebview:N,inputUrl:_,selectedBrowserElement:f,resolveWebview:R,iframeRef:A,setDeviceMode:w,setBrowserDeviceMode:s,setSelectionModeError:D,setIsSelectModeEnabled:l,setIsEditModeEnabled:d,setSelectedBrowserElement:p,setIsSelectionPromptOpen:m,setInputUrl:v,setCurrentUrl:b,setPendingUrl:S},t[54]=A,t[55]=_,t[56]=R,t[57]=f,t[58]=s,t[59]=b,t[60]=w,t[61]=v,t[62]=d,t[63]=l,t[64]=m,t[65]=S,t[66]=p,t[67]=D,t[68]=Y):Y=t[68];let ee=He(Y),X;return t[69]!==y||t[70]!==C||t[71]!==J||t[72]!==A||t[73]!==_||t[74]!==H||t[75]!==ee||t[76]!==j||t[77]!==E||t[78]!==v?(X={currentUrl:y,inputUrl:_,setInputUrl:v,deviceMode:C,selectionModeError:E,previewContainerRef:j,iframeRef:A,handleWebviewRef:J,useNativeWebview:N,nativeWebviewMounted:H,previewRpcPreload:F,previewActions:ee},t[69]=y,t[70]=C,t[71]=J,t[72]=A,t[73]=_,t[74]=H,t[75]=ee,t[76]=j,t[77]=E,t[78]=v,t[79]=X):X=t[79],X}function He({useNativeWebview:e,inputUrl:t,selectedBrowserElement:n,resolveWebview:r,iframeRef:i,setDeviceMode:a,setBrowserDeviceMode:o,setSelectionModeError:s,setIsSelectModeEnabled:c,setIsEditModeEnabled:l,setSelectedBrowserElement:u,setIsSelectionPromptOpen:d,setInputUrl:f,setCurrentUrl:p,setPendingUrl:m}){function h(e){a(e),o(e)}function g(){s(null),c(!1),l(!1),u(null),d(!1)}function _(t){try{if(e){let e=r();if(!e)return;ye(e,_e(t));return}let n=i.current;if(!n)return;xe(n,t)}catch(e){Se.error(`Failed to run preview text edit action:`,e)}}function v(e){let t=oe(e);t&&(f(t),p(t),m(t),g())}function y(e){e.key===`Enter`&&v(t)}function b(){if(g(),e){let e=r();e&&e.reload();return}let t=i.current;if(!t)return;let n=t.src;t.src=``,requestAnimationFrame(()=>{t.src=n})}function x(){if(g(),e){let e=r();e&&e.executeJavascript(`history.back()`);return}C(-1)}function S(){if(g(),e){let e=r();e&&e.executeJavascript(`history.forward()`);return}C(1)}function C(e){let t=i.current;if(!(!t||!t.contentWindow))try{e<0?t.contentWindow.history.back():t.contentWindow.history.forward()}catch{}}function w(){s(null),l(!1),P(n)&&(_(`cancel`),u(null)),c(e=>!e)}function T(){if(s(null),c(!1),d(!1),P(n)){_(`cancel`),u(null),l(!1);return}l(e=>!e)}return{handleKeyDown:y,updateDeviceMode:h,toggleSelectMode:w,toggleEditMode:T,refresh:b,goBack:x,goForward:S,runPreviewTextEdit:_}}var Ue={desktop:{width:`100%`,height:`100%`},tablet:{width:`768px`,height:`1024px`},mobile:{width:`375px`,height:`667px`}};function We(e){let t=(0,Z.c)(7),{useNativeWebview:n,nativeWebviewMounted:r,currentUrl:i,previewRpcPreload:a,handleWebviewRef:o,iframeRef:s}=e;if(n){if(!r)return null;let e;return t[0]!==i||t[1]!==o||t[2]!==a?(e=(0,X.createElement)(`electrobun-webview`,{ref:o,src:i,preload:a,renderer:`native`,className:`block h-full w-full bg-background`}),t[0]=i,t[1]=o,t[2]=a,t[3]=e):e=t[3],e}let c;return t[4]!==i||t[5]!==s?(c=(0,Q.jsx)(`iframe`,{ref:s,src:i,className:`h-full w-full border-none`,title:`Browser`,sandbox:`allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads`}),t[4]=i,t[5]=s,t[6]=c):c=t[6],c}function Ge(e){let t=(0,Z.c)(18),{selectionModeError:n,isSelectModeEnabled:r,deviceMode:i,currentDeviceConfig:a,previewContainerRef:o,children:s}=e,c;t[0]===n?c=t[1]:(c=n&&(0,Q.jsxs)(`div`,{className:`border-b border-destructive/20 bg-destructive/5 px-3 py-2 text-sm text-destructive`,children:[`Element selection is unavailable: `,n]}),t[0]=n,t[1]=c);let u=r&&`cursor-crosshair`,d;t[2]===u?d=t[3]:(d=l(`flex min-h-0 flex-1 items-center justify-center bg-background`,u),t[2]=u,t[3]=d);let f=`overflow-hidden border border-border bg-background shadow-sm ${i===`desktop`?`h-full w-full rounded-none border-0 shadow-none`:`rounded-lg`}`,p;t[4]!==a.height||t[5]!==a.width?(p={width:a.width,height:a.height,maxWidth:`100%`,maxHeight:`100%`},t[4]=a.height,t[5]=a.width,t[6]=p):p=t[6];let m;t[7]!==s||t[8]!==f||t[9]!==p?(m=(0,Q.jsx)(`div`,{className:f,style:p,children:s}),t[7]=s,t[8]=f,t[9]=p,t[10]=m):m=t[10];let h;t[11]!==o||t[12]!==d||t[13]!==m?(h=(0,Q.jsx)(`div`,{ref:o,className:d,children:m}),t[11]=o,t[12]=d,t[13]=m,t[14]=h):h=t[14];let g;return t[15]!==c||t[16]!==h?(g=(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col bg-background`,children:[c,h]}),t[15]=c,t[16]=h,t[17]=g):g=t[17],g}function $(e){let t=(0,Z.c)(16),{onClick:n,label:r,children:i,isActive:a,disabled:o,activeStyle:s}=e,c=a===void 0?!1:a,u=o===void 0?!1:o,d=s===void 0?`elevated`:s,f=u&&`cursor-not-allowed text-muted-foreground/50`,p=!u&&!c&&`text-muted-foreground hover:bg-background/50 hover:text-foreground`,m=!u&&c&&d===`depressed`&&`bg-muted text-primary shadow-[inset_0_2px_4px_rgba(0,0,0,0.14)] ring-1 ring-inset ring-border/80 dark:shadow-[inset_0_2px_4px_rgba(0,0,0,0.35)]`,h=!u&&c&&d===`elevated`&&`bg-background text-foreground shadow-sm`,g;t[0]!==f||t[1]!==p||t[2]!==m||t[3]!==h?(g=l(`rounded p-1.5 transition-all`,f,p,m,h),t[0]=f,t[1]=p,t[2]=m,t[3]=h,t[4]=g):g=t[4];let _;t[5]!==i||t[6]!==u||t[7]!==c||t[8]!==n||t[9]!==g?(_=(0,Q.jsx)(b,{asChild:!0,children:(0,Q.jsx)(`button`,{type:`button`,onClick:n,disabled:u,"aria-pressed":c,className:g,children:i})}),t[5]=i,t[6]=u,t[7]=c,t[8]=n,t[9]=g,t[10]=_):_=t[10];let v;t[11]===r?v=t[12]:(v=(0,Q.jsx)(x,{children:r}),t[11]=r,t[12]=v);let y;return t[13]!==v||t[14]!==_?(y=(0,Q.jsxs)(C,{children:[_,v]}),t[13]=v,t[14]=_,t[15]=y):y=t[15],y}function Ke(e){let t=(0,Z.c)(43),{controller:n,urlInputRef:r}=e,{currentUrl:i,inputUrl:a,setInputUrl:o,handleKeyDown:s,goBack:c,goForward:y,refresh:b,toggleSelectMode:x,toggleEditMode:S,openExternal:C,updateDeviceMode:w,selectionModeError:T,isSelectModeEnabled:E,isEditModeActive:D,deviceMode:O}=n,k;t[0]!==i||t[1]!==c?(k=i&&(0,Q.jsx)($,{onClick:c,label:`Back`,children:(0,Q.jsx)(g,{size:15})}),t[0]=i,t[1]=c,t[2]=k):k=t[2];let A;t[3]!==i||t[4]!==y?(A=i&&(0,Q.jsx)($,{onClick:y,label:`Forward`,children:(0,Q.jsx)(d,{size:15})}),t[3]=i,t[4]=y,t[5]=A):A=t[5];let j;t[6]===o?j=t[7]:(j=e=>o(e.target.value),t[6]=o,t[7]=j);let M;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(M=l(`flex-1 rounded-full bg-muted font-mono`),t[8]=M):M=t[8];let N;t[9]!==s||t[10]!==a||t[11]!==j||t[12]!==r?(N=(0,Q.jsx)(L,{ref:r,type:`text`,value:a,onChange:j,onKeyDown:s,placeholder:`Enter URL...`,className:M,spellCheck:!1}),t[9]=s,t[10]=a,t[11]=j,t[12]=r,t[13]=N):N=t[13];let P;t[14]!==i||t[15]!==b?(P=i&&(0,Q.jsx)($,{onClick:b,label:`Refresh page`,children:(0,Q.jsx)(f,{size:15})}),t[14]=i,t[15]=b,t[16]=P):P=t[16];let F;t[17]!==i||t[18]!==E||t[19]!==T||t[20]!==x?(F=i&&(0,Q.jsx)($,{onClick:x,label:T?`Select element unavailable: ${T}`:E?`Exit element selection`:`Select element from preview`,isActive:E,activeStyle:`depressed`,children:(0,Q.jsx)(u,{size:15})}),t[17]=i,t[18]=E,t[19]=T,t[20]=x,t[21]=F):F=t[21];let I;t[22]!==i||t[23]!==D||t[24]!==T||t[25]!==S?(I=i&&(0,Q.jsx)($,{onClick:S,label:T?`Edit text unavailable: ${T}`:D?`Exit text editing`:`Edit text from preview`,isActive:D,activeStyle:`depressed`,children:(0,Q.jsx)(_,{size:15})}),t[22]=i,t[23]=D,t[24]=T,t[25]=S,t[26]=I):I=t[26];let R;t[27]!==i||t[28]!==O||t[29]!==w?(R=i&&(0,Q.jsxs)(`div`,{className:`flex items-center rounded-md bg-muted p-0.5`,children:[(0,Q.jsx)($,{onClick:()=>w(`desktop`),label:`Desktop view`,isActive:O===`desktop`,children:(0,Q.jsx)(v,{size:15})}),(0,Q.jsx)($,{onClick:()=>w(`tablet`),label:`Tablet view`,isActive:O===`tablet`,children:(0,Q.jsx)(h,{size:15})}),(0,Q.jsx)($,{onClick:()=>w(`mobile`),label:`Mobile view`,isActive:O===`mobile`,children:(0,Q.jsx)(m,{size:15})})]}),t[27]=i,t[28]=O,t[29]=w,t[30]=R):R=t[30];let z;t[31]!==i||t[32]!==C?(z=i&&(0,Q.jsx)($,{onClick:C,label:`Open in external browser`,children:(0,Q.jsx)(p,{size:15})}),t[31]=i,t[32]=C,t[33]=z):z=t[33];let B;return t[34]!==k||t[35]!==z||t[36]!==A||t[37]!==N||t[38]!==P||t[39]!==F||t[40]!==I||t[41]!==R?(B=(0,Q.jsx)(`div`,{className:`relative shrink-0 border-b border-border`,children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[k,A,N,P,F,I,R,z]})}),t[34]=k,t[35]=z,t[36]=A,t[37]=N,t[38]=P,t[39]=F,t[40]=I,t[41]=R,t[42]=B):B=t[42],B}function qe(e){let t=(0,Z.c)(6),{devServerStopped:n,selectedProjectId:r,runCommand:a}=e,o=K(),s=c(Je),l;return t[0]!==n||t[1]!==a||t[2]!==r||t[3]!==s||t[4]!==o?(l=(0,Q.jsx)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-6 text-muted-foreground`,children:n?(0,Q.jsx)(`p`,{className:i.body,children:`Dev server stopped`}):r&&s&&a&&!o?(0,Q.jsx)(V,{projectId:r,runCommand:a,large:!0}):(0,Q.jsx)(`p`,{className:i.body,children:`Enter a URL to browse`})}),t[0]=n,t[1]=a,t[2]=r,t[3]=s,t[4]=o,t[5]=l):l=t[5],l}function Je(e){return e.selectedThreadId}function Ye(e){let t=(0,Z.c)(24),{instanceId:n}=e,r=Le(n),i=Ue[r.deviceMode],{registerPanelFocus:a}=k(),o=(0,X.useRef)(null),s,c;t[0]!==n||t[1]!==a?(s=()=>a(n,()=>o.current?.focus()),c=[n,a],t[0]=n,t[1]=a,t[2]=s,t[3]=c):(s=t[2],c=t[3]),(0,X.useEffect)(s,c);let u;t[4]!==r.currentUrl||t[5]!==r.handleWebviewRef||t[6]!==r.iframeRef||t[7]!==r.nativeWebviewMounted||t[8]!==r.previewRpcPreload||t[9]!==r.useNativeWebview?(u=(0,Q.jsx)(We,{useNativeWebview:r.useNativeWebview,nativeWebviewMounted:r.nativeWebviewMounted,currentUrl:r.currentUrl,previewRpcPreload:r.previewRpcPreload,handleWebviewRef:r.handleWebviewRef,iframeRef:r.iframeRef}),t[4]=r.currentUrl,t[5]=r.handleWebviewRef,t[6]=r.iframeRef,t[7]=r.nativeWebviewMounted,t[8]=r.previewRpcPreload,t[9]=r.useNativeWebview,t[10]=u):u=t[10];let d=u,f=r.isBrowserActive?`flex h-full min-h-0 flex-col overflow-hidden`:`hidden`,p;t[11]===f?p=t[12]:(p=l(f),t[11]=f,t[12]=p);let m=!r.isBrowserActive,h;t[13]===r?h=t[14]:(h=r.isBrowserActive?(0,Q.jsx)(Ke,{controller:r,urlInputRef:o}):null,t[13]=r,t[14]=h);let g;t[15]!==r||t[16]!==i||t[17]!==d?(g=r.currentUrl?(0,Q.jsxs)(Q.Fragment,{children:[r.isBrowserActive?(0,Q.jsx)(ne,{onCommit:()=>r.runPreviewTextEdit(`commit`),onCancelPreview:()=>r.runPreviewTextEdit(`cancel`)}):null,(0,Q.jsx)(Ge,{selectionModeError:r.selectionModeError,isSelectModeEnabled:r.isSurfaceSelectInteraction,deviceMode:r.deviceMode,currentDeviceConfig:i,previewContainerRef:r.previewContainerRef,children:d})]}):r.isBrowserActive?(0,Q.jsx)(qe,{devServerStopped:r.devServerStopped,selectedProjectId:r.selectedProjectId,runCommand:r.runCommand}):null,t[15]=r,t[16]=i,t[17]=d,t[18]=g):g=t[18];let _;return t[19]!==p||t[20]!==m||t[21]!==h||t[22]!==g?(_=(0,Q.jsx)(S,{children:(0,Q.jsxs)(`div`,{className:p,"aria-hidden":m,children:[h,g]})}),t[19]=p,t[20]=m,t[21]=h,t[22]=g,t[23]=_):_=t[23],_}export{Ye as BrowserTab};
12
+ })();`}function ve(e,t,n=!1,r=`select`){if(typeof e.executeJavascript!=`function`)throw Error(`Browser preview webview JS execution is not available`);try{e.executeJavascript(ge(t,n,r))}catch(i){throw he.error(`[browser-preview] Failed to toggle native preview selection mode`,{enabled:t,preserveSelection:n,interaction:r,src:e.src,webview_id:e.webviewId,error:i instanceof Error?i.message:String(i),stack:i instanceof Error?i.stack:void 0}),i}}function ye(e,t){if(typeof e.executeJavascript!=`function`)throw Error(`Browser preview webview JS execution is not available`);e.executeJavascript(t)}function be(e,t,n=!1,r=`select`){let i=e.contentWindow;if(!i)throw Error(`Browser preview frame is not ready`);let a=i.__tarskBrowserPreview;if(!a?.setSelectMode)throw Error(`Browser preview selection API is not available in iframe preview`);a.setSelectMode(t,n,r)}function xe(e,t){let n=e.contentWindow?.__tarskBrowserPreview;if(!n||typeof n[t===`commit`?`commitTextEdit`:`cancelTextEdit`]!=`function`){he.warn(`[browser-preview] Preview text-edit API unavailable; action ignored`,{action:t,src:e.src});return}if(t===`commit`){n.commitTextEdit?.();return}n.cancelTextEdit?.()}var Se=a(`app.browser-tab.ui`),Ce=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`,`Home`,`End`]),we=new Set([`INPUT`,`TEXTAREA`,`SELECT`]),Te=new Set([`combobox`,`listbox`,`menu`,`menubar`,`menuitem`,`option`,`radiogroup`,`tablist`,`tab`,`grid`,`slider`,`spinbutton`]);function Ee(e){if(we.has(e.tagName)||e.isContentEditable)return!0;let t=e.getAttribute(`role`);return t!==null&&Te.has(t)}function De(e){return e instanceof HTMLElement&&Ee(e)}function Oe(e,t,n){let[r,i]=(0,X.useState)(!0),a=(0,X.useSyncExternalStore)(J,G),o=(0,X.useSyncExternalStore)(D,O),s=t&&(r&&!o||a),c=(0,X.useRef)(s);c.current=s;let l=(0,X.useCallback)(function(){return c.current},[]),u=(0,X.useCallback)(function(){i(fe(e.current))},[]);return(0,X.useLayoutEffect)(u),(0,X.useEffect)(()=>{let t=e.current;if(!t)return;let n=new ResizeObserver(u);return n.observe(t),function(){n.disconnect()}},[u,n]),{shouldShowWebview:s,readWebviewVisibility:l}}function ke({devServerUrl:e,devServerStopped:t,isBrowserActive:n,currentUrl:r,browserResetTrigger:i,webviewRef:a,iframeRef:o,setCurrentUrl:s,setPendingUrl:c,setInputUrl:l,setSelectionModeError:u,setIsSelectModeEnabled:d,setIsEditModeEnabled:f,setSelectedBrowserElement:p,setIsSelectionPromptOpen:m,setBrowserAgentProcessingThreadId:h}){let g=(0,X.useRef)(r),_=(0,X.useRef)(null);g.current=r,(0,X.useEffect)(()=>{s(``),c(``),l(``),u(null),d(!1),f(!1),p(null),m(!1),h(null);let e=a.current;e&&(e.src=``),o.current&&(o.current.src=``)},[i,h,d,f,m,p]),(0,X.useEffect)(()=>{if(t&&!e){s(``),c(``),l(``),u(null),n&&(d(!1),f(!1),p(null),m(!1),h(null));let e=a.current;e&&(e.src=``),o.current&&(o.current.src=``);return}if(!e)return;let r=oe(e);l(r),(!g.current||g.current===_.current)&&(s(r),c(r),_.current=r),u(null),n&&(d(!1),f(!1),p(null),m(!1),h(null))},[e,t,n,h,d,f,m,p])}function Ae(e,t,n,r){let i=(0,Z.c)(9),a;i[0]!==n||i[1]!==e||i[2]!==r||i[3]!==t?(a=()=>{if(!e||!t)return;let i=function(e){Ce.has(e.key)&&(De(e.target)||r.current?.contains(e.target)||(e.preventDefault(),n()))};return document.addEventListener(`keydown`,i,!0),function(){document.removeEventListener(`keydown`,i,!0)}},i[0]=n,i[1]=e,i[2]=r,i[3]=t,i[4]=a):a=i[4];let o;i[5]!==n||i[6]!==e||i[7]!==t?(o=[e,t,n],i[5]=n,i[6]=e,i[7]=t,i[8]=o):o=i[8],(0,X.useEffect)(a,o)}function je(e){let t=(0,Z.c)(13),{useNativeWebview:n,nativeWebviewMounted:r,currentUrl:i,resolveWebview:a,setCurrentUrl:o,setPendingUrl:s,setInputUrl:c,setSelectionModeError:l}=e,u;t[0]!==i||t[1]!==r||t[2]!==a||t[3]!==o||t[4]!==c||t[5]!==s||t[6]!==l||t[7]!==n?(u=()=>{let e=a();if(!n||!e||!r)return;let t=function(e){let t=typeof e.detail==`string`?e.detail:i;t&&(o(t),s(``),c(t))},u=function(e){let t=typeof e.detail==`string`?e.detail:i;t&&(o(t),c(t))},d=function(e){let t=se(e.detail);t&&T(t)},f=function(e){let t=M(e.detail);if(t){Y(t);return}let n=W(e.detail);n&&(l(null),N(n))};return e.on(`did-navigate`,t),e.on(`did-navigate-in-page`,u),e.on(`new-window-open`,d),e.on(`host-message`,f),function(){e.off(`did-navigate`,t),e.off(`did-navigate-in-page`,u),e.off(`new-window-open`,d),e.off(`host-message`,f)}},t[0]=i,t[1]=r,t[2]=a,t[3]=o,t[4]=c,t[5]=s,t[6]=l,t[7]=n,t[8]=u):u=t[8];let d;t[9]!==i||t[10]!==r||t[11]!==n?(d=[i,n,r],t[9]=i,t[10]=r,t[11]=n,t[12]=d):d=t[12],(0,X.useEffect)(u,d)}function Me(e){let t=(0,Z.c)(23),{useNativeWebview:n,nativeWebviewMounted:r,currentUrl:i,deviceMode:a,shouldShowWebview:o,pendingUrl:s,readWebviewVisibility:c,resolveWebview:l}=e,u;t[0]!==r||t[1]!==l||t[2]!==o||t[3]!==n?(u=()=>{if(!n||!r)return;let e=l();!e||e.webviewId==null||de(e,o)},t[0]=r,t[1]=l,t[2]=o,t[3]=n,t[4]=u):u=t[4];let d;t[5]!==i||t[6]!==a||t[7]!==r||t[8]!==o||t[9]!==n?(d=[r,n,i,a,o],t[5]=i,t[6]=a,t[7]=r,t[8]=o,t[9]=n,t[10]=d):d=t[10],(0,X.useLayoutEffect)(u,d);let f;t[11]!==r||t[12]!==s||t[13]!==c||t[14]!==l||t[15]!==n?(f=()=>{let e=l();if(!(!n||!e||!s||!r))return pe(e,s,c)},t[11]=r,t[12]=s,t[13]=c,t[14]=l,t[15]=n,t[16]=f):f=t[16];let p;t[17]!==i||t[18]!==r||t[19]!==s||t[20]!==c||t[21]!==n?(p=[s,n,i,r,c],t[17]=i,t[18]=r,t[19]=s,t[20]=c,t[21]=n,t[22]=p):p=t[22],(0,X.useEffect)(f,p)}function Ne(e){let t=(0,Z.c)(23),{isBrowserActive:n,currentUrl:r,isSelectModeEnabled:i,isEditModeEnabled:a,isSelectionPromptOpen:o,nativeWebviewMounted:s,useNativeWebview:c,resolveWebview:l,iframeRef:u,setIsSelectModeEnabled:d,setIsEditModeEnabled:f,setSelectionModeError:p}=e,m;t[0]!==r||t[1]!==u||t[2]!==n||t[3]!==a||t[4]!==i||t[5]!==o||t[6]!==s||t[7]!==l||t[8]!==f||t[9]!==d||t[10]!==p||t[11]!==c?(m=()=>{if(!n)return;if(!r){i&&d(!1),a&&f(!1);return}let e=!1,t=i||a,m=a?`edit`:`select`,h=!t&&o;return(function(){try{if(c){let e=l();if(!e||e.webviewId==null||!s)return;ve(e,t,h,m);return}let e=u.current;if(!e)return;be(e,t,h,m)}catch(n){let r=n;if(e||!t)return;let i=r instanceof Error?r.message:`Could not enable element selection.`;Se.error(`Failed to toggle browser selection mode:`,r),p(i),d(!1),f(!1),A({title:`Selection mode unavailable`,description:i,variant:`destructive`})}})(),function(){e=!0}},t[0]=r,t[1]=u,t[2]=n,t[3]=a,t[4]=i,t[5]=o,t[6]=s,t[7]=l,t[8]=f,t[9]=d,t[10]=p,t[11]=c,t[12]=m):m=t[12];let h;t[13]!==r||t[14]!==n||t[15]!==a||t[16]!==i||t[17]!==o||t[18]!==s||t[19]!==f||t[20]!==d||t[21]!==c?(h=[r,n,a,i,o,s,f,d,c],t[13]=r,t[14]=n,t[15]=a,t[16]=i,t[17]=o,t[18]=s,t[19]=f,t[20]=d,t[21]=c,t[22]=h):h=t[22],(0,X.useEffect)(m,h)}function Pe(e){let t=(0,Z.c)(23),n=ee(e,`browser`),{devServerUrl:r,devServerStopped:i}=I(),{browserResetTrigger:a,browserDeviceMode:o,setBrowserDeviceMode:s,isSelectModeEnabled:l,setIsSelectModeEnabled:u,isEditModeEnabled:d,setIsEditModeEnabled:f,selectedBrowserElement:p,setSelectedBrowserElement:m,setIsSelectionPromptOpen:h,isSelectionPromptOpen:g,setBrowserAgentProcessingThreadId:_}=U(),v=c(Ie),y=c(Fe),b;if(t[0]!==y||t[1]!==v){let e;t[3]===v?e=t[4]:(e=e=>e.projectId===v,t[3]=v,t[4]=e),b=y.find(e),t[0]=y,t[1]=v,t[2]=b}else b=t[2];let x=b,S;return t[5]!==o||t[6]!==a||t[7]!==i||t[8]!==r||t[9]!==n||t[10]!==d||t[11]!==l||t[12]!==g||t[13]!==p||t[14]!==x||t[15]!==v||t[16]!==_||t[17]!==s||t[18]!==f||t[19]!==u||t[20]!==h||t[21]!==m?(S={isBrowserActive:n,devServerUrl:r,devServerStopped:i,browserResetTrigger:a,browserDeviceMode:o,setBrowserDeviceMode:s,isSelectModeEnabled:l,setIsSelectModeEnabled:u,isEditModeEnabled:d,setIsEditModeEnabled:f,selectedBrowserElement:p,setSelectedBrowserElement:m,setIsSelectionPromptOpen:h,isSelectionPromptOpen:g,setBrowserAgentProcessingThreadId:_,selectedProjectId:v,selectedProject:x},t[5]=o,t[6]=a,t[7]=i,t[8]=r,t[9]=n,t[10]=d,t[11]=l,t[12]=g,t[13]=p,t[14]=x,t[15]=v,t[16]=_,t[17]=s,t[18]=f,t[19]=u,t[20]=h,t[21]=m,t[22]=S):S=t[22],S}function Fe(e){return e.projects}function Ie(e){return e.selectedProjectId}function Le(e){let t=(0,Z.c)(33),n=Pe(e),r=Ve(n),i=n.selectedProject?.runCommand,a;t[0]!==n.isEditModeEnabled||t[1]!==n.selectedBrowserElement?(a=n.isEditModeEnabled||P(n.selectedBrowserElement),t[0]=n.isEditModeEnabled,t[1]=n.selectedBrowserElement,t[2]=a):a=t[2];let o=n.isSelectModeEnabled||n.isEditModeEnabled,s;t[3]===r.currentUrl?s=t[4]:(s=()=>void T(r.currentUrl),t[3]=r.currentUrl,t[4]=s);let c;return t[5]!==r.currentUrl||t[6]!==r.deviceMode||t[7]!==r.handleWebviewRef||t[8]!==r.iframeRef||t[9]!==r.inputUrl||t[10]!==r.nativeWebviewMounted||t[11]!==r.previewActions.goBack||t[12]!==r.previewActions.goForward||t[13]!==r.previewActions.handleKeyDown||t[14]!==r.previewActions.refresh||t[15]!==r.previewActions.runPreviewTextEdit||t[16]!==r.previewActions.toggleEditMode||t[17]!==r.previewActions.toggleSelectMode||t[18]!==r.previewActions.updateDeviceMode||t[19]!==r.previewContainerRef||t[20]!==r.previewRpcPreload||t[21]!==r.selectionModeError||t[22]!==r.setInputUrl||t[23]!==r.useNativeWebview||t[24]!==n.devServerStopped||t[25]!==n.isBrowserActive||t[26]!==n.isSelectModeEnabled||t[27]!==n.selectedProjectId||t[28]!==i||t[29]!==a||t[30]!==o||t[31]!==s?(c={isBrowserActive:n.isBrowserActive,devServerStopped:n.devServerStopped,selectedProjectId:n.selectedProjectId,runCommand:i,currentUrl:r.currentUrl,inputUrl:r.inputUrl,setInputUrl:r.setInputUrl,handleKeyDown:r.previewActions.handleKeyDown,deviceMode:r.deviceMode,updateDeviceMode:r.previewActions.updateDeviceMode,selectionModeError:r.selectionModeError,isSelectModeEnabled:n.isSelectModeEnabled,isEditModeActive:a,isSurfaceSelectInteraction:o,toggleSelectMode:r.previewActions.toggleSelectMode,toggleEditMode:r.previewActions.toggleEditMode,refresh:r.previewActions.refresh,goBack:r.previewActions.goBack,goForward:r.previewActions.goForward,openExternal:s,runPreviewTextEdit:r.previewActions.runPreviewTextEdit,previewContainerRef:r.previewContainerRef,iframeRef:r.iframeRef,handleWebviewRef:r.handleWebviewRef,useNativeWebview:r.useNativeWebview,nativeWebviewMounted:r.nativeWebviewMounted,previewRpcPreload:r.previewRpcPreload},t[5]=r.currentUrl,t[6]=r.deviceMode,t[7]=r.handleWebviewRef,t[8]=r.iframeRef,t[9]=r.inputUrl,t[10]=r.nativeWebviewMounted,t[11]=r.previewActions.goBack,t[12]=r.previewActions.goForward,t[13]=r.previewActions.handleKeyDown,t[14]=r.previewActions.refresh,t[15]=r.previewActions.runPreviewTextEdit,t[16]=r.previewActions.toggleEditMode,t[17]=r.previewActions.toggleSelectMode,t[18]=r.previewActions.updateDeviceMode,t[19]=r.previewContainerRef,t[20]=r.previewRpcPreload,t[21]=r.selectionModeError,t[22]=r.setInputUrl,t[23]=r.useNativeWebview,t[24]=n.devServerStopped,t[25]=n.isBrowserActive,t[26]=n.isSelectModeEnabled,t[27]=n.selectedProjectId,t[28]=i,t[29]=a,t[30]=o,t[31]=s,t[32]=c):c=t[32],c}function Re(e,t,n){return(0,X.useCallback)(function(){if(e){t()?.focus();return}n.current?.contentWindow?.focus()},[e])}function ze(e,t,n){return(0,X.useCallback)(function(r){e.current=r,r&&pe(r,t.current,n)},[n])}function Be(e){let[t,n]=(0,X.useState)(``),[r,i]=(0,X.useState)(``),[a,o]=(0,X.useState)(``),[s,c]=(0,X.useState)(e),[l,u]=(0,X.useState)(null),d=(0,X.useRef)(null),f=(0,X.useRef)(a),p=(0,X.useRef)(null),m=(0,X.useRef)(null);return f.current=a,(0,X.useEffect)(()=>{c(e)},[e]),{inputUrl:t,setInputUrl:n,currentUrl:r,setCurrentUrl:i,pendingUrl:a,setPendingUrl:o,deviceMode:s,setDeviceMode:c,selectionModeError:l,setSelectionModeError:u,webviewRef:d,pendingUrlRef:f,iframeRef:p,previewContainerRef:m}}function Ve(e){let t=(0,Z.c)(80),{isBrowserActive:n,devServerUrl:r,devServerStopped:i,browserResetTrigger:a,browserDeviceMode:o,setBrowserDeviceMode:s,isSelectModeEnabled:c,setIsSelectModeEnabled:l,isEditModeEnabled:u,setIsEditModeEnabled:d,selectedBrowserElement:f,setSelectedBrowserElement:p,setIsSelectionPromptOpen:m,isSelectionPromptOpen:h,setBrowserAgentProcessingThreadId:g}=e,{inputUrl:_,setInputUrl:v,currentUrl:y,setCurrentUrl:b,pendingUrl:x,setPendingUrl:S,deviceMode:C,setDeviceMode:w,selectionModeError:T,setSelectionModeError:D,webviewRef:O,pendingUrlRef:k,iframeRef:A,previewContainerRef:j}=Be(o),M;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(M=E(),t[0]=M):M=t[0];let N=M,P;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(P=q(),t[1]=P):P=t[1];let F=P,I=N&&!!y,L;t[2]!==j||t[3]!==O?(L=function(){return O.current??ce(j.current)},t[2]=j,t[3]=O,t[4]=L):L=t[4];let R=L,{shouldShowWebview:z,readWebviewVisibility:B}=Oe(j,n,y),V;t[5]!==y||t[6]!==R||t[7]!==I?(V={useNativeWebview:N,shouldRenderNativeWebview:I,currentUrl:y,resolveWebview:R},t[5]=y,t[6]=R,t[7]=I,t[8]=V):V=t[8];let H=me(V),U;t[9]!==a||t[10]!==y||t[11]!==i||t[12]!==r||t[13]!==A||t[14]!==n||t[15]!==g||t[16]!==b||t[17]!==v||t[18]!==d||t[19]!==l||t[20]!==m||t[21]!==S||t[22]!==p||t[23]!==D||t[24]!==O?(U={devServerUrl:r,devServerStopped:i,isBrowserActive:n,currentUrl:y,browserResetTrigger:a,webviewRef:O,iframeRef:A,setCurrentUrl:b,setPendingUrl:S,setInputUrl:v,setSelectionModeError:D,setIsSelectModeEnabled:l,setIsEditModeEnabled:d,setSelectedBrowserElement:p,setIsSelectionPromptOpen:m,setBrowserAgentProcessingThreadId:g},t[9]=a,t[10]=y,t[11]=i,t[12]=r,t[13]=A,t[14]=n,t[15]=g,t[16]=b,t[17]=v,t[18]=d,t[19]=l,t[20]=m,t[21]=S,t[22]=p,t[23]=D,t[24]=O,t[25]=U):U=t[25],ke(U),Ae(n,N,Re(N,R,A),j);let W;t[26]!==y||t[27]!==H||t[28]!==R||t[29]!==b||t[30]!==v||t[31]!==S||t[32]!==D?(W={useNativeWebview:N,nativeWebviewMounted:H,currentUrl:y,resolveWebview:R,setCurrentUrl:b,setPendingUrl:S,setInputUrl:v,setSelectionModeError:D},t[26]=y,t[27]=H,t[28]=R,t[29]=b,t[30]=v,t[31]=S,t[32]=D,t[33]=W):W=t[33],je(W);let G;t[34]!==y||t[35]!==C||t[36]!==H||t[37]!==x||t[38]!==B||t[39]!==R||t[40]!==z?(G={useNativeWebview:N,nativeWebviewMounted:H,currentUrl:y,deviceMode:C,shouldShowWebview:z,pendingUrl:x,readWebviewVisibility:B,resolveWebview:R},t[34]=y,t[35]=C,t[36]=H,t[37]=x,t[38]=B,t[39]=R,t[40]=z,t[41]=G):G=t[41],Me(G);let K;t[42]!==y||t[43]!==A||t[44]!==n||t[45]!==u||t[46]!==c||t[47]!==h||t[48]!==H||t[49]!==R||t[50]!==d||t[51]!==l||t[52]!==D?(K={isBrowserActive:n,currentUrl:y,isSelectModeEnabled:c,isEditModeEnabled:u,isSelectionPromptOpen:h,nativeWebviewMounted:H,useNativeWebview:N,resolveWebview:R,iframeRef:A,setIsSelectModeEnabled:l,setIsEditModeEnabled:d,setSelectionModeError:D},t[42]=y,t[43]=A,t[44]=n,t[45]=u,t[46]=c,t[47]=h,t[48]=H,t[49]=R,t[50]=d,t[51]=l,t[52]=D,t[53]=K):K=t[53],Ne(K);let J=ze(O,k,B),Y;t[54]!==A||t[55]!==_||t[56]!==R||t[57]!==f||t[58]!==s||t[59]!==b||t[60]!==w||t[61]!==v||t[62]!==d||t[63]!==l||t[64]!==m||t[65]!==S||t[66]!==p||t[67]!==D?(Y={useNativeWebview:N,inputUrl:_,selectedBrowserElement:f,resolveWebview:R,iframeRef:A,setDeviceMode:w,setBrowserDeviceMode:s,setSelectionModeError:D,setIsSelectModeEnabled:l,setIsEditModeEnabled:d,setSelectedBrowserElement:p,setIsSelectionPromptOpen:m,setInputUrl:v,setCurrentUrl:b,setPendingUrl:S},t[54]=A,t[55]=_,t[56]=R,t[57]=f,t[58]=s,t[59]=b,t[60]=w,t[61]=v,t[62]=d,t[63]=l,t[64]=m,t[65]=S,t[66]=p,t[67]=D,t[68]=Y):Y=t[68];let ee=He(Y),X;return t[69]!==y||t[70]!==C||t[71]!==J||t[72]!==A||t[73]!==_||t[74]!==H||t[75]!==ee||t[76]!==j||t[77]!==T||t[78]!==v?(X={currentUrl:y,inputUrl:_,setInputUrl:v,deviceMode:C,selectionModeError:T,previewContainerRef:j,iframeRef:A,handleWebviewRef:J,useNativeWebview:N,nativeWebviewMounted:H,previewRpcPreload:F,previewActions:ee},t[69]=y,t[70]=C,t[71]=J,t[72]=A,t[73]=_,t[74]=H,t[75]=ee,t[76]=j,t[77]=T,t[78]=v,t[79]=X):X=t[79],X}function He({useNativeWebview:e,inputUrl:t,selectedBrowserElement:n,resolveWebview:r,iframeRef:i,setDeviceMode:a,setBrowserDeviceMode:o,setSelectionModeError:s,setIsSelectModeEnabled:c,setIsEditModeEnabled:l,setSelectedBrowserElement:u,setIsSelectionPromptOpen:d,setInputUrl:f,setCurrentUrl:p,setPendingUrl:m}){function h(e){a(e),o(e)}function g(){s(null),c(!1),l(!1),u(null),d(!1)}function _(t){try{if(e){let e=r();if(!e)return;ye(e,_e(t));return}let n=i.current;if(!n)return;xe(n,t)}catch(e){Se.error(`Failed to run preview text edit action:`,e)}}function v(e){let t=oe(e);t&&(f(t),p(t),m(t),g())}function y(e){e.key===`Enter`&&v(t)}function b(){if(g(),e){let e=r();e&&e.reload();return}let t=i.current;if(!t)return;let n=t.src;t.src=``,requestAnimationFrame(()=>{t.src=n})}function x(){if(g(),e){let e=r();e&&e.executeJavascript(`history.back()`);return}C(-1)}function S(){if(g(),e){let e=r();e&&e.executeJavascript(`history.forward()`);return}C(1)}function C(e){let t=i.current;if(!(!t||!t.contentWindow))try{e<0?t.contentWindow.history.back():t.contentWindow.history.forward()}catch{}}function w(){s(null),l(!1),P(n)&&(_(`cancel`),u(null)),c(e=>!e)}function T(){if(s(null),c(!1),d(!1),P(n)){_(`cancel`),u(null),l(!1);return}l(e=>!e)}return{handleKeyDown:y,updateDeviceMode:h,toggleSelectMode:w,toggleEditMode:T,refresh:b,goBack:x,goForward:S,runPreviewTextEdit:_}}var Ue={desktop:{width:`100%`,height:`100%`},tablet:{width:`768px`,height:`1024px`},mobile:{width:`375px`,height:`667px`}};function We(e){let t=(0,Z.c)(7),{useNativeWebview:n,nativeWebviewMounted:r,currentUrl:i,previewRpcPreload:a,handleWebviewRef:o,iframeRef:s}=e;if(n){if(!r)return null;let e;return t[0]!==i||t[1]!==o||t[2]!==a?(e=(0,X.createElement)(`electrobun-webview`,{ref:o,src:i,preload:a,renderer:`native`,className:`block h-full w-full bg-background`}),t[0]=i,t[1]=o,t[2]=a,t[3]=e):e=t[3],e}let c;return t[4]!==i||t[5]!==s?(c=(0,Q.jsx)(`iframe`,{ref:s,src:i,className:`h-full w-full border-none`,title:`Browser`,sandbox:`allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads`}),t[4]=i,t[5]=s,t[6]=c):c=t[6],c}function Ge(e){let t=(0,Z.c)(18),{selectionModeError:n,isSelectModeEnabled:r,deviceMode:i,currentDeviceConfig:a,previewContainerRef:o,children:s}=e,c;t[0]===n?c=t[1]:(c=n&&(0,Q.jsxs)(`div`,{className:`border-b border-destructive/20 bg-destructive/5 px-3 py-2 text-sm text-destructive`,children:[`Element selection is unavailable: `,n]}),t[0]=n,t[1]=c);let u=r&&`cursor-crosshair`,d;t[2]===u?d=t[3]:(d=l(`flex min-h-0 flex-1 items-center justify-center bg-background`,u),t[2]=u,t[3]=d);let f=`overflow-hidden border border-border bg-background shadow-sm ${i===`desktop`?`h-full w-full rounded-none border-0 shadow-none`:`rounded-lg`}`,p;t[4]!==a.height||t[5]!==a.width?(p={width:a.width,height:a.height,maxWidth:`100%`,maxHeight:`100%`},t[4]=a.height,t[5]=a.width,t[6]=p):p=t[6];let m;t[7]!==s||t[8]!==f||t[9]!==p?(m=(0,Q.jsx)(`div`,{className:f,style:p,children:s}),t[7]=s,t[8]=f,t[9]=p,t[10]=m):m=t[10];let h;t[11]!==o||t[12]!==d||t[13]!==m?(h=(0,Q.jsx)(`div`,{ref:o,className:d,children:m}),t[11]=o,t[12]=d,t[13]=m,t[14]=h):h=t[14];let g;return t[15]!==c||t[16]!==h?(g=(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col bg-background`,children:[c,h]}),t[15]=c,t[16]=h,t[17]=g):g=t[17],g}function $(e){let t=(0,Z.c)(16),{onClick:n,label:r,children:i,isActive:a,disabled:o,activeStyle:s}=e,c=a===void 0?!1:a,u=o===void 0?!1:o,d=s===void 0?`elevated`:s,f=u&&`cursor-not-allowed text-muted-foreground/50`,p=!u&&!c&&`text-muted-foreground hover:bg-background/50 hover:text-foreground`,m=!u&&c&&d===`depressed`&&`bg-muted text-primary shadow-[inset_0_2px_4px_rgba(0,0,0,0.14)] ring-1 ring-inset ring-border/80 dark:shadow-[inset_0_2px_4px_rgba(0,0,0,0.35)]`,h=!u&&c&&d===`elevated`&&`bg-background text-foreground shadow-sm`,g;t[0]!==f||t[1]!==p||t[2]!==m||t[3]!==h?(g=l(`rounded p-1.5 transition-all`,f,p,m,h),t[0]=f,t[1]=p,t[2]=m,t[3]=h,t[4]=g):g=t[4];let _;t[5]!==i||t[6]!==u||t[7]!==c||t[8]!==n||t[9]!==g?(_=(0,Q.jsx)(b,{asChild:!0,children:(0,Q.jsx)(`button`,{type:`button`,onClick:n,disabled:u,"aria-pressed":c,className:g,children:i})}),t[5]=i,t[6]=u,t[7]=c,t[8]=n,t[9]=g,t[10]=_):_=t[10];let v;t[11]===r?v=t[12]:(v=(0,Q.jsx)(x,{children:r}),t[11]=r,t[12]=v);let y;return t[13]!==v||t[14]!==_?(y=(0,Q.jsxs)(C,{children:[_,v]}),t[13]=v,t[14]=_,t[15]=y):y=t[15],y}function Ke(e){let t=(0,Z.c)(43),{controller:n,urlInputRef:r}=e,{currentUrl:i,inputUrl:a,setInputUrl:o,handleKeyDown:s,goBack:c,goForward:y,refresh:b,toggleSelectMode:x,toggleEditMode:S,openExternal:C,updateDeviceMode:w,selectionModeError:T,isSelectModeEnabled:E,isEditModeActive:D,deviceMode:O}=n,k;t[0]!==i||t[1]!==c?(k=i&&(0,Q.jsx)($,{onClick:c,label:`Back`,children:(0,Q.jsx)(g,{size:15})}),t[0]=i,t[1]=c,t[2]=k):k=t[2];let A;t[3]!==i||t[4]!==y?(A=i&&(0,Q.jsx)($,{onClick:y,label:`Forward`,children:(0,Q.jsx)(d,{size:15})}),t[3]=i,t[4]=y,t[5]=A):A=t[5];let j;t[6]===o?j=t[7]:(j=e=>o(e.target.value),t[6]=o,t[7]=j);let M;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(M=l(`flex-1 rounded-full bg-muted font-mono`),t[8]=M):M=t[8];let N;t[9]!==s||t[10]!==a||t[11]!==j||t[12]!==r?(N=(0,Q.jsx)(L,{ref:r,type:`text`,value:a,onChange:j,onKeyDown:s,placeholder:`Enter URL...`,className:M,spellCheck:!1}),t[9]=s,t[10]=a,t[11]=j,t[12]=r,t[13]=N):N=t[13];let P;t[14]!==i||t[15]!==b?(P=i&&(0,Q.jsx)($,{onClick:b,label:`Refresh page`,children:(0,Q.jsx)(f,{size:15})}),t[14]=i,t[15]=b,t[16]=P):P=t[16];let F;t[17]!==i||t[18]!==E||t[19]!==T||t[20]!==x?(F=i&&(0,Q.jsx)($,{onClick:x,label:T?`Select element unavailable: ${T}`:E?`Exit element selection`:`Select element from preview`,isActive:E,activeStyle:`depressed`,children:(0,Q.jsx)(u,{size:15})}),t[17]=i,t[18]=E,t[19]=T,t[20]=x,t[21]=F):F=t[21];let I;t[22]!==i||t[23]!==D||t[24]!==T||t[25]!==S?(I=i&&(0,Q.jsx)($,{onClick:S,label:T?`Edit text unavailable: ${T}`:D?`Exit text editing`:`Edit text from preview`,isActive:D,activeStyle:`depressed`,children:(0,Q.jsx)(_,{size:15})}),t[22]=i,t[23]=D,t[24]=T,t[25]=S,t[26]=I):I=t[26];let R;t[27]!==i||t[28]!==O||t[29]!==w?(R=i&&(0,Q.jsxs)(`div`,{className:`flex items-center rounded-md bg-muted p-0.5`,children:[(0,Q.jsx)($,{onClick:()=>w(`desktop`),label:`Desktop view`,isActive:O===`desktop`,children:(0,Q.jsx)(v,{size:15})}),(0,Q.jsx)($,{onClick:()=>w(`tablet`),label:`Tablet view`,isActive:O===`tablet`,children:(0,Q.jsx)(h,{size:15})}),(0,Q.jsx)($,{onClick:()=>w(`mobile`),label:`Mobile view`,isActive:O===`mobile`,children:(0,Q.jsx)(m,{size:15})})]}),t[27]=i,t[28]=O,t[29]=w,t[30]=R):R=t[30];let z;t[31]!==i||t[32]!==C?(z=i&&(0,Q.jsx)($,{onClick:C,label:`Open in external browser`,children:(0,Q.jsx)(p,{size:15})}),t[31]=i,t[32]=C,t[33]=z):z=t[33];let B;return t[34]!==k||t[35]!==z||t[36]!==A||t[37]!==N||t[38]!==P||t[39]!==F||t[40]!==I||t[41]!==R?(B=(0,Q.jsx)(`div`,{className:`relative shrink-0 border-b border-border`,children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[k,A,N,P,F,I,R,z]})}),t[34]=k,t[35]=z,t[36]=A,t[37]=N,t[38]=P,t[39]=F,t[40]=I,t[41]=R,t[42]=B):B=t[42],B}function qe(e){let t=(0,Z.c)(6),{devServerStopped:n,selectedProjectId:r,runCommand:a}=e,o=K(),s=c(Je),l;return t[0]!==n||t[1]!==a||t[2]!==r||t[3]!==s||t[4]!==o?(l=(0,Q.jsx)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-6 text-muted-foreground`,children:n?(0,Q.jsx)(`p`,{className:i.body,children:`Dev server stopped`}):r&&s&&a&&!o?(0,Q.jsx)(V,{projectId:r,runCommand:a,large:!0}):(0,Q.jsx)(`p`,{className:i.body,children:`Enter a URL to browse`})}),t[0]=n,t[1]=a,t[2]=r,t[3]=s,t[4]=o,t[5]=l):l=t[5],l}function Je(e){return e.selectedThreadId}function Ye(e){let t=(0,Z.c)(24),{instanceId:n}=e,r=Le(n),i=Ue[r.deviceMode],{registerPanelFocus:a}=k(),o=(0,X.useRef)(null),s,c;t[0]!==n||t[1]!==a?(s=()=>a(n,()=>o.current?.focus()),c=[n,a],t[0]=n,t[1]=a,t[2]=s,t[3]=c):(s=t[2],c=t[3]),(0,X.useEffect)(s,c);let u;t[4]!==r.currentUrl||t[5]!==r.handleWebviewRef||t[6]!==r.iframeRef||t[7]!==r.nativeWebviewMounted||t[8]!==r.previewRpcPreload||t[9]!==r.useNativeWebview?(u=(0,Q.jsx)(We,{useNativeWebview:r.useNativeWebview,nativeWebviewMounted:r.nativeWebviewMounted,currentUrl:r.currentUrl,previewRpcPreload:r.previewRpcPreload,handleWebviewRef:r.handleWebviewRef,iframeRef:r.iframeRef}),t[4]=r.currentUrl,t[5]=r.handleWebviewRef,t[6]=r.iframeRef,t[7]=r.nativeWebviewMounted,t[8]=r.previewRpcPreload,t[9]=r.useNativeWebview,t[10]=u):u=t[10];let d=u,f=r.isBrowserActive?`flex h-full min-h-0 flex-col overflow-hidden`:`hidden`,p;t[11]===f?p=t[12]:(p=l(f),t[11]=f,t[12]=p);let m=!r.isBrowserActive,h;t[13]===r?h=t[14]:(h=r.isBrowserActive?(0,Q.jsx)(Ke,{controller:r,urlInputRef:o}):null,t[13]=r,t[14]=h);let g;t[15]!==r||t[16]!==i||t[17]!==d?(g=r.currentUrl?(0,Q.jsxs)(Q.Fragment,{children:[r.isBrowserActive?(0,Q.jsx)(ne,{onCommit:()=>r.runPreviewTextEdit(`commit`),onCancelPreview:()=>r.runPreviewTextEdit(`cancel`)}):null,(0,Q.jsx)(Ge,{selectionModeError:r.selectionModeError,isSelectModeEnabled:r.isSurfaceSelectInteraction,deviceMode:r.deviceMode,currentDeviceConfig:i,previewContainerRef:r.previewContainerRef,children:d})]}):r.isBrowserActive?(0,Q.jsx)(qe,{devServerStopped:r.devServerStopped,selectedProjectId:r.selectedProjectId,runCommand:r.runCommand}):null,t[15]=r,t[16]=i,t[17]=d,t[18]=g):g=t[18];let _;return t[19]!==p||t[20]!==m||t[21]!==h||t[22]!==g?(_=(0,Q.jsx)(S,{children:(0,Q.jsxs)(`div`,{className:p,"aria-hidden":m,children:[h,g]})}),t[19]=p,t[20]=m,t[21]=h,t[22]=g,t[23]=_):_=t[23],_}export{Ye as BrowserTab};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{ln as i}from"./dist-PhNKneni.js";import{a,o,t as s}from"./utils-BHAZna1O.js";var c=t(),l=e(n(),1),u=r(),d=Symbol.for(`react.lazy`),f=l.use;function p(e){return typeof e==`object`&&!!e&&`then`in e}function m(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===d&&`_payload`in e&&p(e._payload)}function h(e){let t=_(e),n=l.forwardRef((e,n)=>{let{children:r,...i}=e;m(r)&&typeof f==`function`&&(r=f(r._payload));let a=l.Children.toArray(r),o=a.find(y);if(o){let e=o.props.children,r=a.map(t=>t===o?l.Children.count(e)>1?l.Children.only(null):l.isValidElement(e)?e.props.children:null:t);return(0,u.jsx)(t,{...i,ref:n,children:l.isValidElement(e)?l.cloneElement(e,void 0,r):null})}return(0,u.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}var g=h(`Slot`);function _(e){let t=l.forwardRef((e,t)=>{let{children:n,...r}=e;if(m(n)&&typeof f==`function`&&(n=f(n._payload)),l.isValidElement(n)){let e=x(n),i=b(r,n.props);return n.type!==l.Fragment&&(i.ref=t?o(t,e):e),l.cloneElement(n,i)}return l.Children.count(n)>1?l.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var v=Symbol(`radix.slottable`);function y(e){return l.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===v}function b(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function x(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var S=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,C=a,w=(e,t)=>n=>{if(t?.variants==null)return C(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=S(t)||S(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return C(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},T=w(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full ${i.body} font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,outline:`border border-input bg-background hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-foreground hover:text-background transition-colors`,action:`text-muted-foreground hover:bg-foreground hover:text-background transition-colors`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-10 px-6 py-3`,sm:`h-9 rounded-full px-4`,lg:`h-11 rounded-full px-10`,icon:`h-10 w-10 [&_svg]:size-5`,"icon-md":`h-8 w-8 [&_svg]:size-4`,"icon-sm":`h-7 w-7 [&_svg]:size-4`,"icon-xs":`h-5 w-5 [&_svg]:size-3`}},defaultVariants:{variant:`default`,size:`default`}}),E=l.forwardRef((e,t)=>{let n=(0,c.c)(15),r,i,a,o,l;n[0]===e?(r=n[1],i=n[2],a=n[3],o=n[4],l=n[5]):({className:r,variant:l,size:a,asChild:o,...i}=e,n[0]=e,n[1]=r,n[2]=i,n[3]=a,n[4]=o,n[5]=l);let d=o!==void 0&&o?g:`button`,f;n[6]!==r||n[7]!==a||n[8]!==l?(f=s(T({variant:l,size:a,className:r})),n[6]=r,n[7]=a,n[8]=l,n[9]=f):f=n[9];let p;return n[10]!==d||n[11]!==i||n[12]!==t||n[13]!==f?(p=(0,u.jsx)(d,{className:f,ref:t,...i}),n[10]=d,n[11]=i,n[12]=t,n[13]=f,n[14]=p):p=n[14],p});E.displayName=`Button`;export{h as a,g as i,T as n,w as r,E as t};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{fn as i}from"./dist-DQEC_JS0.js";import{a,o,t as s}from"./utils-DfZXN5fy.js";var c=t(),l=e(n(),1),u=r(),d=Symbol.for(`react.lazy`),f=l.use;function p(e){return typeof e==`object`&&!!e&&`then`in e}function m(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===d&&`_payload`in e&&p(e._payload)}function h(e){let t=_(e),n=l.forwardRef((e,n)=>{let{children:r,...i}=e;m(r)&&typeof f==`function`&&(r=f(r._payload));let a=l.Children.toArray(r),o=a.find(y);if(o){let e=o.props.children,r=a.map(t=>t===o?l.Children.count(e)>1?l.Children.only(null):l.isValidElement(e)?e.props.children:null:t);return(0,u.jsx)(t,{...i,ref:n,children:l.isValidElement(e)?l.cloneElement(e,void 0,r):null})}return(0,u.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}var g=h(`Slot`);function _(e){let t=l.forwardRef((e,t)=>{let{children:n,...r}=e;if(m(n)&&typeof f==`function`&&(n=f(n._payload)),l.isValidElement(n)){let e=x(n),i=b(r,n.props);return n.type!==l.Fragment&&(i.ref=t?o(t,e):e),l.cloneElement(n,i)}return l.Children.count(n)>1?l.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var v=Symbol(`radix.slottable`);function y(e){return l.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===v}function b(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function x(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var S=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,C=a,w=(e,t)=>n=>{if(t?.variants==null)return C(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=S(t)||S(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return C(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},T=w(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full ${i.body} font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,outline:`border border-input bg-background hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-foreground hover:text-background transition-colors`,action:`text-muted-foreground hover:bg-foreground hover:text-background transition-colors`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-10 px-6 py-3`,sm:`h-9 rounded-full px-4`,lg:`h-11 rounded-full px-10`,icon:`h-10 w-10 [&_svg]:size-5`,"icon-md":`h-8 w-8 [&_svg]:size-4`,"icon-sm":`h-7 w-7 [&_svg]:size-4`,"icon-xs":`h-5 w-5 [&_svg]:size-3`}},defaultVariants:{variant:`default`,size:`default`}}),E=l.forwardRef((e,t)=>{let n=(0,c.c)(15),r,i,a,o,l;n[0]===e?(r=n[1],i=n[2],a=n[3],o=n[4],l=n[5]):({className:r,variant:l,size:a,asChild:o,...i}=e,n[0]=e,n[1]=r,n[2]=i,n[3]=a,n[4]=o,n[5]=l);let d=o!==void 0&&o?g:`button`,f;n[6]!==r||n[7]!==a||n[8]!==l?(f=s(T({variant:l,size:a,className:r})),n[6]=r,n[7]=a,n[8]=l,n[9]=f):f=n[9];let p;return n[10]!==d||n[11]!==i||n[12]!==t||n[13]!==f?(p=(0,u.jsx)(d,{className:f,ref:t,...i}),n[10]=d,n[11]=i,n[12]=t,n[13]=f,n[14]=p):p=n[14],p});E.displayName=`Button`;export{h as a,g as i,T as n,w as r,E as t};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{ln as i}from"./dist-PhNKneni.js";import{t as a}from"./utils-BHAZna1O.js";var o=t(),s=e(n(),1),c=r(),l=s.forwardRef((e,t)=>{let n=(0,o.c)(9),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let s;n[3]===r?s=n[4]:(s=a(`rounded-lg border bg-card text-card-foreground shadow-sm`,r),n[3]=r,n[4]=s);let l;return n[5]!==i||n[6]!==t||n[7]!==s?(l=(0,c.jsx)(`div`,{ref:t,className:s,...i}),n[5]=i,n[6]=t,n[7]=s,n[8]=l):l=n[8],l});l.displayName=`Card`;var u=s.forwardRef((e,t)=>{let n=(0,o.c)(9),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let s;n[3]===r?s=n[4]:(s=a(`flex flex-col space-y-1.5 p-6`,r),n[3]=r,n[4]=s);let l;return n[5]!==i||n[6]!==t||n[7]!==s?(l=(0,c.jsx)(`div`,{ref:t,className:s,...i}),n[5]=i,n[6]=t,n[7]=s,n[8]=l):l=n[8],l});u.displayName=`CardHeader`;var d=s.forwardRef((e,t)=>{let n=(0,o.c)(9),r,s;n[0]===e?(r=n[1],s=n[2]):({className:r,...s}=e,n[0]=e,n[1]=r,n[2]=s);let l;n[3]===r?l=n[4]:(l=a(i.sectionTitle,`leading-none tracking-tight`,r),n[3]=r,n[4]=l);let u;return n[5]!==s||n[6]!==t||n[7]!==l?(u=(0,c.jsx)(`div`,{ref:t,className:l,...s}),n[5]=s,n[6]=t,n[7]=l,n[8]=u):u=n[8],u});d.displayName=`CardTitle`;var f=s.forwardRef((e,t)=>{let n=(0,o.c)(9),r,s;n[0]===e?(r=n[1],s=n[2]):({className:r,...s}=e,n[0]=e,n[1]=r,n[2]=s);let l;n[3]===r?l=n[4]:(l=a(i.bodyMuted,r),n[3]=r,n[4]=l);let u;return n[5]!==s||n[6]!==t||n[7]!==l?(u=(0,c.jsx)(`div`,{ref:t,className:l,...s}),n[5]=s,n[6]=t,n[7]=l,n[8]=u):u=n[8],u});f.displayName=`CardDescription`;var p=s.forwardRef((e,t)=>{let n=(0,o.c)(9),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let s;n[3]===r?s=n[4]:(s=a(`p-6 pt-0`,r),n[3]=r,n[4]=s);let l;return n[5]!==i||n[6]!==t||n[7]!==s?(l=(0,c.jsx)(`div`,{ref:t,className:s,...i}),n[5]=i,n[6]=t,n[7]=s,n[8]=l):l=n[8],l});p.displayName=`CardContent`;var m=s.forwardRef((e,t)=>{let n=(0,o.c)(9),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let s;n[3]===r?s=n[4]:(s=a(`flex items-center p-6 pt-0`,r),n[3]=r,n[4]=s);let l;return n[5]!==i||n[6]!==t||n[7]!==s?(l=(0,c.jsx)(`div`,{ref:t,className:s,...i}),n[5]=i,n[6]=t,n[7]=s,n[8]=l):l=n[8],l});m.displayName=`CardFooter`;export{d as i,p as n,u as r,l as t};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{fn as i}from"./dist-DQEC_JS0.js";import{t as a}from"./utils-DfZXN5fy.js";var o=t(),s=e(n(),1),c=r(),l=s.forwardRef((e,t)=>{let n=(0,o.c)(9),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let s;n[3]===r?s=n[4]:(s=a(`rounded-lg border bg-card text-card-foreground shadow-sm`,r),n[3]=r,n[4]=s);let l;return n[5]!==i||n[6]!==t||n[7]!==s?(l=(0,c.jsx)(`div`,{ref:t,className:s,...i}),n[5]=i,n[6]=t,n[7]=s,n[8]=l):l=n[8],l});l.displayName=`Card`;var u=s.forwardRef((e,t)=>{let n=(0,o.c)(9),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let s;n[3]===r?s=n[4]:(s=a(`flex flex-col space-y-1.5 p-6`,r),n[3]=r,n[4]=s);let l;return n[5]!==i||n[6]!==t||n[7]!==s?(l=(0,c.jsx)(`div`,{ref:t,className:s,...i}),n[5]=i,n[6]=t,n[7]=s,n[8]=l):l=n[8],l});u.displayName=`CardHeader`;var d=s.forwardRef((e,t)=>{let n=(0,o.c)(9),r,s;n[0]===e?(r=n[1],s=n[2]):({className:r,...s}=e,n[0]=e,n[1]=r,n[2]=s);let l;n[3]===r?l=n[4]:(l=a(i.sectionTitle,`leading-none tracking-tight`,r),n[3]=r,n[4]=l);let u;return n[5]!==s||n[6]!==t||n[7]!==l?(u=(0,c.jsx)(`div`,{ref:t,className:l,...s}),n[5]=s,n[6]=t,n[7]=l,n[8]=u):u=n[8],u});d.displayName=`CardTitle`;var f=s.forwardRef((e,t)=>{let n=(0,o.c)(9),r,s;n[0]===e?(r=n[1],s=n[2]):({className:r,...s}=e,n[0]=e,n[1]=r,n[2]=s);let l;n[3]===r?l=n[4]:(l=a(i.bodyMuted,r),n[3]=r,n[4]=l);let u;return n[5]!==s||n[6]!==t||n[7]!==l?(u=(0,c.jsx)(`div`,{ref:t,className:l,...s}),n[5]=s,n[6]=t,n[7]=l,n[8]=u):u=n[8],u});f.displayName=`CardDescription`;var p=s.forwardRef((e,t)=>{let n=(0,o.c)(9),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let s;n[3]===r?s=n[4]:(s=a(`p-6 pt-0`,r),n[3]=r,n[4]=s);let l;return n[5]!==i||n[6]!==t||n[7]!==s?(l=(0,c.jsx)(`div`,{ref:t,className:s,...i}),n[5]=i,n[6]=t,n[7]=s,n[8]=l):l=n[8],l});p.displayName=`CardContent`;var m=s.forwardRef((e,t)=>{let n=(0,o.c)(9),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let s;n[3]===r?s=n[4]:(s=a(`flex items-center p-6 pt-0`,r),n[3]=r,n[4]=s);let l;return n[5]!==i||n[6]!==t||n[7]!==s?(l=(0,c.jsx)(`div`,{ref:t,className:s,...i}),n[5]=i,n[6]=t,n[7]=s,n[8]=l):l=n[8],l});m.displayName=`CardFooter`;export{d as i,p as n,u as r,l as t};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{Ct as i,nt as a,ot as o}from"./dist-PhNKneni.js";import{$ as s,i as c,n as l,r as u}from"./store-DdiKV6YO.js";import{Mn as d,jt as f}from"./api-DS1qgAo_.js";var p=e(n(),1),m=t();function h({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n,threadIds:r,threadMultiPaneStates:i}){let a={};for(let e of r){let t=i[e];!t||Object.keys(t.extraChatPanes).length===0||(a[e]={focusedPaneId:t.focusedPane,panes:Object.entries(t.extraChatPanes).map(([e,t])=>({paneId:e,conversationId:t.conversationId}))})}return{version:1,nonChatWindows:e,layout:t===null?`grid`:`expanded`,expandedWindowId:t,selectedWindowId:n,chatPanesByThread:a}}function g(e,t){let n=new Set(t?e.chatPanesByThread[t]?.panes.map(e=>e.paneId)??[]:[]),r=new Set(e.nonChatWindows.map(e=>e.id)),a=n.size>0||r.size>0;function o(e){return e===`primary`||e!==null&&(n.has(e)||r.has(e))}let s=o(e.selectedWindowId)?e.selectedWindowId:i,c=null;return e.layout===`expanded`&&a&&(c=o(e.expandedWindowId)?e.expandedWindowId:i),{nonChatWindows:e.nonChatWindows,expandedWindowId:c,selectedWindowId:s}}var _=o(`app.window-state`);function v(e,t,n){return JSON.stringify({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n})}function y({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n,onReset:r,onHydrate:i}){let a=l(),o=u(e=>e.selectedProjectId),c=u(e=>e.projects),m=u(e=>e.threadMultiPaneStates),g=c.find(e=>e.projectId===o),y=(g?.threads.map(e=>e.threadId)??[]).join(`\0`),b=g!==void 0,[x,S]=(0,p.useState)(null),C=(0,p.useRef)(null),w=(0,p.useRef)(Promise.resolve()),T=(0,p.useRef)(null),E=(0,p.useRef)(0),D=(0,p.useRef)(v(e,t,n));D.current=v(e,t,n),(0,p.useEffect)(()=>{let e=T.current!==o;if(T.current=o,!o||!b){r(),S(null),C.current=null;return}e&&(r(),S(null),C.current=null);let t=o,n=y?y.split(`\0`):[],c=D.current,l=++E.current,u=!1;async function d(){try{let e=await f(t);if(u||l!==E.current)return;if(a({type:s.HydrateProjectChatPanes,threadIds:n,chatPanesByThread:e.chatPanesByThread}),D.current!==c){S(t);return}C.current=JSON.stringify(e),i(e),S(t)}catch(e){u||_.error(`Failed to restore project window state`,e)}}return d(),()=>{u=!0}},[a,b,i,r,y,o]),(0,p.useEffect)(()=>{if(!o||o!==x||!b)return;let r=h({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n,threadIds:y?y.split(`\0`):[],threadMultiPaneStates:m}),i=JSON.stringify(r);if(i===C.current)return;let a=o;C.current=i,w.current=w.current.catch(()=>void 0).then(()=>d(a,r)).catch(e=>{_.error(`Failed to save project window state`,e),C.current===i&&(C.current=null)})},[t,b,x,e,o,n,y,m])}var b=r(),x=(0,p.createContext)(null);function S(e){let t=(0,m.c)(19),{windows:n,extraChatPanes:r,primaryChatOpen:a,expandedWindowId:o,selectedWindowId:s,setExpandedWindowId:c,setSelectedWindowId:l}=e,u,d;t[0]!==o||t[1]!==r||t[2]!==a||t[3]!==c||t[4]!==n?(u=()=>{if(o){if(o===`primary`){if(a)return;c(n.length>0?n[0].id:null);return}!n.some(e=>e.id===o)&&!r[o]&&c(a?i:n[0]?.id??null)}},d=[o,r,a,n,c],t[0]=o,t[1]=r,t[2]=a,t[3]=c,t[4]=n,t[5]=u,t[6]=d):(u=t[5],d=t[6]),(0,p.useEffect)(u,d);let f,h;t[7]!==r||t[8]!==a||t[9]!==s||t[10]!==l||t[11]!==n?(f=()=>{if(s===`primary`){if(a||n.length===0)return;l(n[0].id);return}!n.some(e=>e.id===s)&&!r[s]&&l(a?i:n[0]?.id??`primary`)},h=[r,a,s,n,l],t[7]=r,t[8]=a,t[9]=s,t[10]=l,t[11]=n,t[12]=f,t[13]=h):(f=t[12],h=t[13]),(0,p.useEffect)(f,h);let g,_;t[14]!==o||t[15]!==c||t[16]!==n.length?(g=()=>{n.length===0&&o!==null&&c(null)},_=[o,n.length,c],t[14]=o,t[15]=c,t[16]=n.length,t[17]=g,t[18]=_):(g=t[17],_=t[18]),(0,p.useEffect)(g,_)}function C(e){return e.filter(e=>e.panelId!==`tasks`)}function w(e,t,n,r){t.panelId===`chat`?n({type:s.RemoveChatPane,paneId:e}):r(t=>t.filter(t=>t.id!==e))}function T(e,t,n,r){if(n.length===1)return null;if(e!==t)return e;let a=n.filter(e=>e.id!==t);return r?i:a[0]?.id??null}function E(e,t,n,r){if(e!==t)return e;let a=n.filter(e=>e.id!==t);return r?i:a[0]?.id??`primary`}function D(e,t,n){return t.length===0?null:e===`primary`?n:e}function O(e,t){return e===`primary`&&t?t:e}function k(){let e=(0,m.c)(24),t=u(N),n=u(M),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[],e[0]=r):r=e[0];let[a,o]=(0,p.useState)(r),[s,c]=(0,p.useState)(!0),[l,d]=(0,p.useState)(null),[f,h]=(0,p.useState)(`half`),[g,_]=(0,p.useState)(`tasks`),[v,y]=(0,p.useState)(i),[b,x]=(0,p.useState)(null),S;e[1]===n?S=e[2]:(S=Object.keys(n).map(j),e[1]=n,e[2]=S);let w=S,T;e[3]!==a||e[4]!==t?(T=t?C(a):a,e[3]=a,e[4]=t,e[5]=T):T=e[5];let E=T,D;e[6]!==w||e[7]!==E?(D=[...w,...E],e[6]=w,e[7]=E,e[8]=D):D=e[8];let O=D,k,P;e[9]===t?(k=e[10],P=e[11]):(k=()=>{t&&o(A)},P=[t],e[9]=t,e[10]=k,e[11]=P),(0,p.useEffect)(k,P);let F;return e[12]!==w||e[13]!==f||e[14]!==l||e[15]!==n||e[16]!==a||e[17]!==b||e[18]!==s||e[19]!==t||e[20]!==v||e[21]!==g||e[22]!==O?(F={selectedThreadId:t,extraChatPanes:n,nonChatWindows:a,setNonChatWindows:o,primaryChatOpen:s,setPrimaryChatOpen:c,expandedWindowId:l,setExpandedWindowId:d,columnWidth:f,setColumnWidth:h,tasksView:g,setTasksView:_,selectedWindowId:v,setSelectedWindowId:y,pendingScrollWindowId:b,setPendingScrollWindowId:x,chatWindows:w,windows:O},e[12]=w,e[13]=f,e[14]=l,e[15]=n,e[16]=a,e[17]=b,e[18]=s,e[19]=t,e[20]=v,e[21]=g,e[22]=O,e[23]=F):F=e[23],F}function A(e){let t=C(e);return t.length===e.length?e:t}function j(e){return{id:e,panelId:`chat`}}function M(e){return e.extraChatPanes}function N(e){return e.selectedThreadId}function P(e,t,n){let r=(0,m.c)(11),i=l(),a;r[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=new Map,r[0]=a):a=r[0];let o=(0,p.useRef)(a),c=(0,p.useRef)(null),u;r[1]===Symbol.for(`react.memo_cache_sentinel`)?(u=(e,t)=>(o.current.set(e,t),()=>{o.current.delete(e)}),r[1]=u):u=r[1];let d=u,f;r[2]!==i||r[3]!==e?(f=t=>{if(t===`primary`){i({type:s.SetFocusedPane,paneId:`primary`}),i({type:s.FocusChatInput});return}if(e.find(e=>e.id===t)?.panelId===`chat`){i({type:s.SetFocusedPane,paneId:t}),i({type:s.FocusChatInput});return}o.current.get(t)?.()},r[2]=i,r[3]=e,r[4]=f):f=r[4];let h=f,g,_;r[5]!==t||r[6]!==h||r[7]!==n?(g=()=>{let e=t??n;if(e===null)return;let r=c.current;c.current=e,!(r===null||r===e)&&h(e)},_=[t,n,h],r[5]=t,r[6]=h,r[7]=n,r[8]=g,r[9]=_):(g=r[8],_=r[9]),(0,p.useEffect)(g,_);let v;return r[10]===Symbol.for(`react.memo_cache_sentinel`)?(v={registerPanelFocus:d,prevActiveWindowRef:c},r[10]=v):v=r[10],v}function F(e){let t=(0,m.c)(53),{dispatch:n,selectedThreadId:r,windows:o,chatWindows:c,nonChatWindows:l,primaryChatOpen:u,setPrimaryChatOpen:d,setExpandedWindowId:f,setSelectedWindowId:p,setPendingScrollWindowId:h,setNonChatWindows:g}=e,_;t[0]===p?_=t[1]:(_=e=>{p(e)},t[0]=p,t[1]=_);let v=_,y;t[2]!==f||t[3]!==d||t[4]!==p?(y=e=>{e===`primary`&&d(!0),p(e),f(e)},t[2]=f,t[3]=d,t[4]=p,t[5]=y):y=t[5];let b=y,x;t[6]===f?x=t[7]:(x=()=>{f(null)},t[6]=f,t[7]=x);let S=x,C;t[8]!==u||t[9]!==f||t[10]!==h||t[11]!==d||t[12]!==o.length?(C=e=>{e===`primary`&&d(!0),f(t=>t===null&&o.length>0||t===null&&u&&e!==`primary`?null:e),h(e)},t[8]=u,t[9]=f,t[10]=h,t[11]=d,t[12]=o.length,t[13]=C):C=t[13];let k=C,A;t[14]===h?A=t[15]:(A=()=>{h(null)},t[14]=h,t[15]=A);let j=A,M;t[16]!==n||t[17]!==k||t[18]!==r||t[19]!==g?(M=e=>{let t=a();return e===`chat`?r?(n({type:s.AddChatPane,paneId:t,conversationId:a()}),k(t),t):t:(g(n=>[...n,{id:t,panelId:e}]),k(t),t)},t[16]=n,t[17]=k,t[18]=r,t[19]=g,t[20]=M):M=t[20];let N=M,P;t[21]!==n||t[22]!==u||t[23]!==f||t[24]!==g||t[25]!==d||t[26]!==p||t[27]!==o?(P=e=>{if(e===`primary`){d(!1);let e=o[0]?.id??null;f(t=>D(t,o,e)),p(t=>O(t,e));return}let t=o.find(t=>t.id===e);t&&(t.panelId===`chat`&&!u&&!o.some(t=>t.panelId===`chat`&&t.id!==e)||(w(e,t,n,g),f(t=>T(t,e,o,u)),p(t=>E(t,e,o,u))))},t[21]=n,t[22]=u,t[23]=f,t[24]=g,t[25]=d,t[26]=p,t[27]=o,t[28]=P):P=t[28];let F=P,L;t[29]!==n||t[30]!==f||t[31]!==g||t[32]!==d||t[33]!==p||t[34]!==o?(L=()=>{f(null),p(i),d(!0);for(let e of o)e.panelId===`chat`&&n({type:s.RemoveChatPane,paneId:e.id});g([])},t[29]=n,t[30]=f,t[31]=g,t[32]=d,t[33]=p,t[34]=o,t[35]=L):L=t[35];let R=L,z;t[36]!==c||t[37]!==l?(z=e=>e===`chat`?c[0]:l.find(t=>t.panelId===e),t[36]=c,t[37]=l,t[38]=z):z=t[38];let B=z,V;t[39]!==u||t[40]!==o?(V=e=>e===`chat`?u||o.some(I):o.some(t=>t.panelId===e),t[39]=u,t[40]=o,t[41]=V):V=t[41];let H=V,U;return t[42]!==N||t[43]!==j||t[44]!==R||t[45]!==F||t[46]!==S||t[47]!==b||t[48]!==B||t[49]!==H||t[50]!==k||t[51]!==v?(U={selectWindow:v,expandWindow:b,collapseLayout:S,revealWindow:k,clearPendingScrollWindow:j,addWindow:N,closeWindow:F,closeAllWindows:R,findWindowByPanel:B,isPanelOpen:H},t[42]=N,t[43]=j,t[44]=R,t[45]=F,t[46]=S,t[47]=b,t[48]=B,t[49]=H,t[50]=k,t[51]=v,t[52]=U):U=t[52],U}function I(e){return e.panelId===`chat`}function L(e){let t=(0,m.c)(3),{children:n}=e,r=R(),i;return t[0]!==n||t[1]!==r?(i=(0,b.jsx)(x.Provider,{value:r,children:n}),t[0]=n,t[1]=r,t[2]=i):i=t[2],i}function R(){let e=l(),t=c(),{selectedThreadId:n,extraChatPanes:r,nonChatWindows:a,setNonChatWindows:o,primaryChatOpen:s,setPrimaryChatOpen:u,expandedWindowId:d,setExpandedWindowId:f,columnWidth:m,setColumnWidth:h,tasksView:_,setTasksView:v,selectedWindowId:b,setSelectedWindowId:x,pendingScrollWindowId:w,setPendingScrollWindowId:T,chatWindows:E,windows:D}=k(),{registerPanelFocus:O,prevActiveWindowRef:A}=P(D,d,b);y({nonChatWindows:a,expandedWindowId:d,selectedWindowId:b,onReset:(0,p.useCallback)(()=>{A.current=i,o([]),u(!0),f(null),x(i),T(null)},[]),onHydrate:(0,p.useCallback)(e=>{let n=t.getState().selectedThreadId,r=g(e,n),a=n?C(r.nonChatWindows):r.nonChatWindows,s=new Set(r.nonChatWindows.filter(e=>e.panelId===`tasks`).map(e=>e.id)),c=n&&r.expandedWindowId&&s.has(r.expandedWindowId)?i:r.expandedWindowId,l=n&&s.has(r.selectedWindowId)?i:r.selectedWindowId;A.current=c??l,o(a),f(c),x(l),T(null)},[t])}),S({windows:D,extraChatPanes:r,primaryChatOpen:s,expandedWindowId:d,selectedWindowId:b,setExpandedWindowId:f,setSelectedWindowId:x});let{selectWindow:j,expandWindow:M,collapseLayout:N,revealWindow:I,clearPendingScrollWindow:L,addWindow:R,closeWindow:z,closeAllWindows:B,findWindowByPanel:V,isPanelOpen:H}=F({dispatch:e,selectedThreadId:n,windows:D,chatWindows:E,nonChatWindows:a,primaryChatOpen:s,setPrimaryChatOpen:u,setExpandedWindowId:f,setSelectedWindowId:x,setPendingScrollWindowId:T,setNonChatWindows:o}),U=D.length>0,W=d!==null;return(0,p.useMemo)(()=>({windows:D,addWindow:R,closeWindow:z,closeAllWindows:B,isPrimaryChatOpen:s,isPanelOpen:H,findWindowByPanel:V,hasOpenWindows:U,isLayoutExpanded:W,expandedWindowId:d,expandWindow:M,collapseLayout:N,columnWidth:m,setColumnWidth:h,selectedWindowId:b,selectWindow:j,revealWindow:I,pendingScrollWindowId:w,clearPendingScrollWindow:L,tasksView:_,setTasksView:v,registerPanelFocus:O}),[D,R,z,B,s,H,V,U,W,d,M,N,m,h,b,j,I,w,L,_,v,O])}function z(){let e=(0,p.useContext)(x);if(!e)throw Error(`useChatDock must be used within a ChatDockProvider`);return e}function B(){return(0,p.useContext)(x)}export{z as n,B as r,L as t};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{rt as i,st as a,wt as o}from"./dist-DQEC_JS0.js";import{$ as s,i as c,n as l,r as u}from"./store-D151firE.js";import{At as d,jn as f}from"./api-Cho1mlFq.js";var p=e(n(),1),m=t();function h({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n,threadIds:r,threadMultiPaneStates:i}){let a={};for(let e of r){let t=i[e];!t||Object.keys(t.extraChatPanes).length===0||(a[e]={focusedPaneId:t.focusedPane,panes:Object.entries(t.extraChatPanes).map(([e,t])=>({paneId:e,conversationId:t.conversationId}))})}return{version:1,nonChatWindows:e,layout:t===null?`grid`:`expanded`,expandedWindowId:t,selectedWindowId:n,chatPanesByThread:a}}function g(e,t){let n=new Set(t?e.chatPanesByThread[t]?.panes.map(e=>e.paneId)??[]:[]),r=new Set(e.nonChatWindows.map(e=>e.id)),i=n.size>0||r.size>0;function a(e){return e===`primary`||e!==null&&(n.has(e)||r.has(e))}let s=a(e.selectedWindowId)?e.selectedWindowId:o,c=null;return e.layout===`expanded`&&i&&(c=a(e.expandedWindowId)?e.expandedWindowId:o),{nonChatWindows:e.nonChatWindows,expandedWindowId:c,selectedWindowId:s}}var _=a(`app.window-state`);function v(e,t,n){return JSON.stringify({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n})}function y({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n,onReset:r,onHydrate:i}){let a=l(),o=u(e=>e.selectedProjectId),c=u(e=>e.projects),m=u(e=>e.threadMultiPaneStates),g=c.find(e=>e.projectId===o),y=(g?.threads.map(e=>e.threadId)??[]).join(`\0`),b=g!==void 0,[x,S]=(0,p.useState)(null),C=(0,p.useRef)(null),w=(0,p.useRef)(Promise.resolve()),T=(0,p.useRef)(null),E=(0,p.useRef)(0),D=(0,p.useRef)(v(e,t,n));D.current=v(e,t,n),(0,p.useEffect)(()=>{let e=T.current!==o;if(T.current=o,!o||!b){r(),S(null),C.current=null;return}e&&(r(),S(null),C.current=null);let t=o,n=y?y.split(`\0`):[],c=D.current,l=++E.current,u=!1;async function f(){try{let e=await d(t);if(u||l!==E.current)return;if(a({type:s.HydrateProjectChatPanes,threadIds:n,chatPanesByThread:e.chatPanesByThread}),D.current!==c){S(t);return}C.current=JSON.stringify(e),i(e),S(t)}catch(e){u||_.error(`Failed to restore project window state`,e)}}return f(),()=>{u=!0}},[a,b,i,r,y,o]),(0,p.useEffect)(()=>{if(!o||o!==x||!b)return;let r=h({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n,threadIds:y?y.split(`\0`):[],threadMultiPaneStates:m}),i=JSON.stringify(r);if(i===C.current)return;let a=o;C.current=i,w.current=w.current.catch(()=>void 0).then(()=>f(a,r)).catch(e=>{_.error(`Failed to save project window state`,e),C.current===i&&(C.current=null)})},[t,b,x,e,o,n,y,m])}var b=r(),x=(0,p.createContext)(null);function S(e){let t=(0,m.c)(19),{windows:n,extraChatPanes:r,primaryChatOpen:i,expandedWindowId:a,selectedWindowId:s,setExpandedWindowId:c,setSelectedWindowId:l}=e,u,d;t[0]!==a||t[1]!==r||t[2]!==i||t[3]!==c||t[4]!==n?(u=()=>{if(a){if(a===`primary`){if(i)return;c(n.length>0?n[0].id:null);return}!n.some(e=>e.id===a)&&!r[a]&&c(i?o:n[0]?.id??null)}},d=[a,r,i,n,c],t[0]=a,t[1]=r,t[2]=i,t[3]=c,t[4]=n,t[5]=u,t[6]=d):(u=t[5],d=t[6]),(0,p.useEffect)(u,d);let f,h;t[7]!==r||t[8]!==i||t[9]!==s||t[10]!==l||t[11]!==n?(f=()=>{if(s===`primary`){if(i||n.length===0)return;l(n[0].id);return}!n.some(e=>e.id===s)&&!r[s]&&l(i?o:n[0]?.id??`primary`)},h=[r,i,s,n,l],t[7]=r,t[8]=i,t[9]=s,t[10]=l,t[11]=n,t[12]=f,t[13]=h):(f=t[12],h=t[13]),(0,p.useEffect)(f,h);let g,_;t[14]!==a||t[15]!==c||t[16]!==n.length?(g=()=>{n.length===0&&a!==null&&c(null)},_=[a,n.length,c],t[14]=a,t[15]=c,t[16]=n.length,t[17]=g,t[18]=_):(g=t[17],_=t[18]),(0,p.useEffect)(g,_)}function C(e){return e.filter(e=>e.panelId!==`tasks`)}function w(e,t,n,r){t.panelId===`chat`?n({type:s.RemoveChatPane,paneId:e}):r(t=>t.filter(t=>t.id!==e))}function T(e,t,n,r){if(n.length===1)return null;if(e!==t)return e;let i=n.filter(e=>e.id!==t);return r?o:i[0]?.id??null}function E(e,t,n,r){if(e!==t)return e;let i=n.filter(e=>e.id!==t);return r?o:i[0]?.id??`primary`}function D(e,t,n){return t.length===0?null:e===`primary`?n:e}function O(e,t){return e===`primary`&&t?t:e}function k(){let e=(0,m.c)(24),t=u(N),n=u(M),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[],e[0]=r):r=e[0];let[i,a]=(0,p.useState)(r),[s,c]=(0,p.useState)(!0),[l,d]=(0,p.useState)(null),[f,h]=(0,p.useState)(`half`),[g,_]=(0,p.useState)(`tasks`),[v,y]=(0,p.useState)(o),[b,x]=(0,p.useState)(null),S;e[1]===n?S=e[2]:(S=Object.keys(n).map(j),e[1]=n,e[2]=S);let w=S,T;e[3]!==i||e[4]!==t?(T=t?C(i):i,e[3]=i,e[4]=t,e[5]=T):T=e[5];let E=T,D;e[6]!==w||e[7]!==E?(D=[...w,...E],e[6]=w,e[7]=E,e[8]=D):D=e[8];let O=D,k,P;e[9]===t?(k=e[10],P=e[11]):(k=()=>{t&&a(A)},P=[t],e[9]=t,e[10]=k,e[11]=P),(0,p.useEffect)(k,P);let F;return e[12]!==w||e[13]!==f||e[14]!==l||e[15]!==n||e[16]!==i||e[17]!==b||e[18]!==s||e[19]!==t||e[20]!==v||e[21]!==g||e[22]!==O?(F={selectedThreadId:t,extraChatPanes:n,nonChatWindows:i,setNonChatWindows:a,primaryChatOpen:s,setPrimaryChatOpen:c,expandedWindowId:l,setExpandedWindowId:d,columnWidth:f,setColumnWidth:h,tasksView:g,setTasksView:_,selectedWindowId:v,setSelectedWindowId:y,pendingScrollWindowId:b,setPendingScrollWindowId:x,chatWindows:w,windows:O},e[12]=w,e[13]=f,e[14]=l,e[15]=n,e[16]=i,e[17]=b,e[18]=s,e[19]=t,e[20]=v,e[21]=g,e[22]=O,e[23]=F):F=e[23],F}function A(e){let t=C(e);return t.length===e.length?e:t}function j(e){return{id:e,panelId:`chat`}}function M(e){return e.extraChatPanes}function N(e){return e.selectedThreadId}function P(e,t,n){let r=(0,m.c)(11),i=l(),a;r[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=new Map,r[0]=a):a=r[0];let o=(0,p.useRef)(a),c=(0,p.useRef)(null),u;r[1]===Symbol.for(`react.memo_cache_sentinel`)?(u=(e,t)=>(o.current.set(e,t),()=>{o.current.delete(e)}),r[1]=u):u=r[1];let d=u,f;r[2]!==i||r[3]!==e?(f=t=>{if(t===`primary`){i({type:s.SetFocusedPane,paneId:`primary`}),i({type:s.FocusChatInput});return}if(e.find(e=>e.id===t)?.panelId===`chat`){i({type:s.SetFocusedPane,paneId:t}),i({type:s.FocusChatInput});return}o.current.get(t)?.()},r[2]=i,r[3]=e,r[4]=f):f=r[4];let h=f,g,_;r[5]!==t||r[6]!==h||r[7]!==n?(g=()=>{let e=t??n;if(e===null)return;let r=c.current;c.current=e,!(r===null||r===e)&&h(e)},_=[t,n,h],r[5]=t,r[6]=h,r[7]=n,r[8]=g,r[9]=_):(g=r[8],_=r[9]),(0,p.useEffect)(g,_);let v;return r[10]===Symbol.for(`react.memo_cache_sentinel`)?(v={registerPanelFocus:d,prevActiveWindowRef:c},r[10]=v):v=r[10],v}function F(e){let t=(0,m.c)(53),{dispatch:n,selectedThreadId:r,windows:a,chatWindows:c,nonChatWindows:l,primaryChatOpen:u,setPrimaryChatOpen:d,setExpandedWindowId:f,setSelectedWindowId:p,setPendingScrollWindowId:h,setNonChatWindows:g}=e,_;t[0]===p?_=t[1]:(_=e=>{p(e)},t[0]=p,t[1]=_);let v=_,y;t[2]!==f||t[3]!==d||t[4]!==p?(y=e=>{e===`primary`&&d(!0),p(e),f(e)},t[2]=f,t[3]=d,t[4]=p,t[5]=y):y=t[5];let b=y,x;t[6]===f?x=t[7]:(x=()=>{f(null)},t[6]=f,t[7]=x);let S=x,C;t[8]!==u||t[9]!==f||t[10]!==h||t[11]!==d||t[12]!==a.length?(C=e=>{e===`primary`&&d(!0),f(t=>t===null&&a.length>0||t===null&&u&&e!==`primary`?null:e),h(e)},t[8]=u,t[9]=f,t[10]=h,t[11]=d,t[12]=a.length,t[13]=C):C=t[13];let k=C,A;t[14]===h?A=t[15]:(A=()=>{h(null)},t[14]=h,t[15]=A);let j=A,M;t[16]!==n||t[17]!==k||t[18]!==r||t[19]!==g?(M=e=>{let t=i();return e===`chat`?r?(n({type:s.AddChatPane,paneId:t,conversationId:i()}),k(t),t):t:(g(n=>[...n,{id:t,panelId:e}]),k(t),t)},t[16]=n,t[17]=k,t[18]=r,t[19]=g,t[20]=M):M=t[20];let N=M,P;t[21]!==n||t[22]!==u||t[23]!==f||t[24]!==g||t[25]!==d||t[26]!==p||t[27]!==a?(P=e=>{if(e===`primary`){d(!1);let e=a[0]?.id??null;f(t=>D(t,a,e)),p(t=>O(t,e));return}let t=a.find(t=>t.id===e);t&&(t.panelId===`chat`&&!u&&!a.some(t=>t.panelId===`chat`&&t.id!==e)||(w(e,t,n,g),f(t=>T(t,e,a,u)),p(t=>E(t,e,a,u))))},t[21]=n,t[22]=u,t[23]=f,t[24]=g,t[25]=d,t[26]=p,t[27]=a,t[28]=P):P=t[28];let F=P,L;t[29]!==n||t[30]!==f||t[31]!==g||t[32]!==d||t[33]!==p||t[34]!==a?(L=()=>{f(null),p(o),d(!0);for(let e of a)e.panelId===`chat`&&n({type:s.RemoveChatPane,paneId:e.id});g([])},t[29]=n,t[30]=f,t[31]=g,t[32]=d,t[33]=p,t[34]=a,t[35]=L):L=t[35];let R=L,z;t[36]!==c||t[37]!==l?(z=e=>e===`chat`?c[0]:l.find(t=>t.panelId===e),t[36]=c,t[37]=l,t[38]=z):z=t[38];let B=z,V;t[39]!==u||t[40]!==a?(V=e=>e===`chat`?u||a.some(I):a.some(t=>t.panelId===e),t[39]=u,t[40]=a,t[41]=V):V=t[41];let H=V,U;return t[42]!==N||t[43]!==j||t[44]!==R||t[45]!==F||t[46]!==S||t[47]!==b||t[48]!==B||t[49]!==H||t[50]!==k||t[51]!==v?(U={selectWindow:v,expandWindow:b,collapseLayout:S,revealWindow:k,clearPendingScrollWindow:j,addWindow:N,closeWindow:F,closeAllWindows:R,findWindowByPanel:B,isPanelOpen:H},t[42]=N,t[43]=j,t[44]=R,t[45]=F,t[46]=S,t[47]=b,t[48]=B,t[49]=H,t[50]=k,t[51]=v,t[52]=U):U=t[52],U}function I(e){return e.panelId===`chat`}function L(e){let t=(0,m.c)(3),{children:n}=e,r=R(),i;return t[0]!==n||t[1]!==r?(i=(0,b.jsx)(x.Provider,{value:r,children:n}),t[0]=n,t[1]=r,t[2]=i):i=t[2],i}function R(){let e=l(),t=c(),{selectedThreadId:n,extraChatPanes:r,nonChatWindows:i,setNonChatWindows:a,primaryChatOpen:s,setPrimaryChatOpen:u,expandedWindowId:d,setExpandedWindowId:f,columnWidth:m,setColumnWidth:h,tasksView:_,setTasksView:v,selectedWindowId:b,setSelectedWindowId:x,pendingScrollWindowId:w,setPendingScrollWindowId:T,chatWindows:E,windows:D}=k(),{registerPanelFocus:O,prevActiveWindowRef:A}=P(D,d,b);y({nonChatWindows:i,expandedWindowId:d,selectedWindowId:b,onReset:(0,p.useCallback)(()=>{A.current=o,a([]),u(!0),f(null),x(o),T(null)},[]),onHydrate:(0,p.useCallback)(e=>{let n=t.getState().selectedThreadId,r=g(e,n),i=n?C(r.nonChatWindows):r.nonChatWindows,s=new Set(r.nonChatWindows.filter(e=>e.panelId===`tasks`).map(e=>e.id)),c=n&&r.expandedWindowId&&s.has(r.expandedWindowId)?o:r.expandedWindowId,l=n&&s.has(r.selectedWindowId)?o:r.selectedWindowId;A.current=c??l,a(i),f(c),x(l),T(null)},[t])}),S({windows:D,extraChatPanes:r,primaryChatOpen:s,expandedWindowId:d,selectedWindowId:b,setExpandedWindowId:f,setSelectedWindowId:x});let{selectWindow:j,expandWindow:M,collapseLayout:N,revealWindow:I,clearPendingScrollWindow:L,addWindow:R,closeWindow:z,closeAllWindows:B,findWindowByPanel:V,isPanelOpen:H}=F({dispatch:e,selectedThreadId:n,windows:D,chatWindows:E,nonChatWindows:i,primaryChatOpen:s,setPrimaryChatOpen:u,setExpandedWindowId:f,setSelectedWindowId:x,setPendingScrollWindowId:T,setNonChatWindows:a}),U=D.length>0,W=d!==null;return(0,p.useMemo)(()=>({windows:D,addWindow:R,closeWindow:z,closeAllWindows:B,isPrimaryChatOpen:s,isPanelOpen:H,findWindowByPanel:V,hasOpenWindows:U,isLayoutExpanded:W,expandedWindowId:d,expandWindow:M,collapseLayout:N,columnWidth:m,setColumnWidth:h,selectedWindowId:b,selectWindow:j,revealWindow:I,pendingScrollWindowId:w,clearPendingScrollWindow:L,tasksView:_,setTasksView:v,registerPanelFocus:O}),[D,R,z,B,s,H,V,U,W,d,M,N,m,h,b,j,I,w,L,_,v,O])}function z(){let e=(0,p.useContext)(x);if(!e)throw Error(`useChatDock must be used within a ChatDockProvider`);return e}function B(){return(0,p.useContext)(x)}export{z as n,B as r,L as t};
@@ -1 +1 @@
1
- import{n as e,t}from"./react-vendor-Ee0-5T4I.js";import{x as n}from"./lucide-react-BFzs_X2U.js";import{t as r}from"./button-BvwSd5oT.js";import{i,n as a,r as o,t as s}from"./tooltip-CqktA8Zq.js";import{t as c}from"./progress-indicator-Bub-larq.js";import{Br as l,Hr as u,Ir as d,Rr as f,Ur as p,Vr as m,W as h,zr as g}from"./index-SP0wF0IN.js";var _=e(),v=t();function y(e){let t=(0,_.c)(41),{open:y,onOpenChange:b,commitMessage:x,onCommitMessageChange:S,isGeneratingMessage:C,isLoading:w,onGenerateMessage:T,onCommit:E,currentBranch:D}=e,O;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,v.jsx)(p,{children:`Commit Changes`}),t[0]=O):O=t[0];let k;t[1]===D?k=t[2]:(k=(0,v.jsxs)(u,{children:[O,(0,v.jsxs)(l,{children:[`Enter a commit message for your changes on branch `,D]})]}),t[1]=D,t[2]=k);let A;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,v.jsx)(d,{htmlFor:`commit-message`,children:`Commit Message`}),t[3]=A):A=t[3];let j;t[4]===S?j=t[5]:(j=e=>S(e.target.value),t[4]=S,t[5]=j);let M;t[6]!==x||t[7]!==C||t[8]!==j?(M=(0,v.jsx)(h,{id:`commit-message`,placeholder:`Enter commit message...`,value:x,onChange:j,disabled:C,className:`pr-10 h-full min-h-[14rem] resize-none`}),t[6]=x,t[7]=C,t[8]=j,t[9]=M):M=t[9];let N=C||w,P;t[10]===C?P=t[11]:(P=C?(0,v.jsx)(c,{}):(0,v.jsx)(n,{className:`h-3.5 w-3.5`}),t[10]=C,t[11]=P);let F;t[12]!==T||t[13]!==N||t[14]!==P?(F=(0,v.jsx)(i,{asChild:!0,children:(0,v.jsx)(r,{type:`button`,variant:`ghost`,size:`icon`,className:`absolute top-2 right-2 h-6 w-6`,onClick:T,disabled:N,children:P})}),t[12]=T,t[13]=N,t[14]=P,t[15]=F):F=t[15];let I=C?`Generating commit message...`:`Generate commit message with AI`,L;t[16]===I?L=t[17]:(L=(0,v.jsx)(a,{children:I}),t[16]=I,t[17]=L);let R;t[18]!==L||t[19]!==F?(R=(0,v.jsx)(o,{children:(0,v.jsxs)(s,{children:[F,L]})}),t[18]=L,t[19]=F,t[20]=R):R=t[20];let z;t[21]!==R||t[22]!==M?(z=(0,v.jsx)(`div`,{className:`grid gap-4 py-4 flex-1 min-h-0`,children:(0,v.jsxs)(`div`,{className:`grid gap-2 flex-1 min-h-0`,children:[A,(0,v.jsxs)(`div`,{className:`relative flex-1 min-h-0`,children:[M,R]})]})}),t[21]=R,t[22]=M,t[23]=z):z=t[23];let B;t[24]!==x||t[25]!==w?(B=w||!x.trim(),t[24]=x,t[25]=w,t[26]=B):B=t[26];let V;t[27]===w?V=t[28]:(V=w?(0,v.jsxs)(v.Fragment,{children:[`Commit`,(0,v.jsx)(c,{size:`sm`})]}):`Commit`,t[27]=w,t[28]=V);let H;t[29]!==E||t[30]!==B||t[31]!==V?(H=(0,v.jsx)(m,{className:`w-full items-center`,children:(0,v.jsx)(r,{className:`ml-auto`,onClick:E,disabled:B,children:V})}),t[29]=E,t[30]=B,t[31]=V,t[32]=H):H=t[32];let U;t[33]!==z||t[34]!==H||t[35]!==k?(U=(0,v.jsxs)(g,{className:`flex 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:h-[min(36rem,85dvh)]`,children:[k,z,H]}),t[33]=z,t[34]=H,t[35]=k,t[36]=U):U=t[36];let W;return t[37]!==b||t[38]!==y||t[39]!==U?(W=(0,v.jsx)(f,{open:y,onOpenChange:b,children:U}),t[37]=b,t[38]=y,t[39]=U,t[40]=W):W=t[40],W}export{y as CommitDialog};
1
+ import{n as e,t}from"./react-vendor-Ee0-5T4I.js";import{x as n}from"./lucide-react-BFzs_X2U.js";import{t as r}from"./button-Djzr1B_4.js";import{i,n as a,r as o,t as s}from"./tooltip-CXREivps.js";import{t as c}from"./progress-indicator-Dr2oM_0d.js";import{Br as l,Hr as u,Ir as d,Rr as f,Ur as p,Vr as m,W as h,zr as g}from"./index-BlkYPP7B.js";var _=e(),v=t();function y(e){let t=(0,_.c)(41),{open:y,onOpenChange:b,commitMessage:x,onCommitMessageChange:S,isGeneratingMessage:C,isLoading:w,onGenerateMessage:T,onCommit:E,currentBranch:D}=e,O;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,v.jsx)(p,{children:`Commit Changes`}),t[0]=O):O=t[0];let k;t[1]===D?k=t[2]:(k=(0,v.jsxs)(u,{children:[O,(0,v.jsxs)(l,{children:[`Enter a commit message for your changes on branch `,D]})]}),t[1]=D,t[2]=k);let A;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,v.jsx)(d,{htmlFor:`commit-message`,children:`Commit Message`}),t[3]=A):A=t[3];let j;t[4]===S?j=t[5]:(j=e=>S(e.target.value),t[4]=S,t[5]=j);let M;t[6]!==x||t[7]!==C||t[8]!==j?(M=(0,v.jsx)(h,{id:`commit-message`,placeholder:`Enter commit message...`,value:x,onChange:j,disabled:C,className:`pr-10 h-full min-h-[14rem] resize-none`}),t[6]=x,t[7]=C,t[8]=j,t[9]=M):M=t[9];let N=C||w,P;t[10]===C?P=t[11]:(P=C?(0,v.jsx)(c,{}):(0,v.jsx)(n,{className:`h-3.5 w-3.5`}),t[10]=C,t[11]=P);let F;t[12]!==T||t[13]!==N||t[14]!==P?(F=(0,v.jsx)(i,{asChild:!0,children:(0,v.jsx)(r,{type:`button`,variant:`ghost`,size:`icon`,className:`absolute top-2 right-2 h-6 w-6`,onClick:T,disabled:N,children:P})}),t[12]=T,t[13]=N,t[14]=P,t[15]=F):F=t[15];let I=C?`Generating commit message...`:`Generate commit message with AI`,L;t[16]===I?L=t[17]:(L=(0,v.jsx)(a,{children:I}),t[16]=I,t[17]=L);let R;t[18]!==L||t[19]!==F?(R=(0,v.jsx)(o,{children:(0,v.jsxs)(s,{children:[F,L]})}),t[18]=L,t[19]=F,t[20]=R):R=t[20];let z;t[21]!==R||t[22]!==M?(z=(0,v.jsx)(`div`,{className:`grid gap-4 py-4 flex-1 min-h-0`,children:(0,v.jsxs)(`div`,{className:`grid gap-2 flex-1 min-h-0`,children:[A,(0,v.jsxs)(`div`,{className:`relative flex-1 min-h-0`,children:[M,R]})]})}),t[21]=R,t[22]=M,t[23]=z):z=t[23];let B;t[24]!==x||t[25]!==w?(B=w||!x.trim(),t[24]=x,t[25]=w,t[26]=B):B=t[26];let V;t[27]===w?V=t[28]:(V=w?(0,v.jsxs)(v.Fragment,{children:[`Commit`,(0,v.jsx)(c,{size:`sm`})]}):`Commit`,t[27]=w,t[28]=V);let H;t[29]!==E||t[30]!==B||t[31]!==V?(H=(0,v.jsx)(m,{className:`w-full items-center`,children:(0,v.jsx)(r,{className:`ml-auto`,onClick:E,disabled:B,children:V})}),t[29]=E,t[30]=B,t[31]=V,t[32]=H):H=t[32];let U;t[33]!==z||t[34]!==H||t[35]!==k?(U=(0,v.jsxs)(g,{className:`flex 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:h-[min(36rem,85dvh)]`,children:[k,z,H]}),t[33]=z,t[34]=H,t[35]=k,t[36]=U):U=t[36];let W;return t[37]!==b||t[38]!==y||t[39]!==U?(W=(0,v.jsx)(f,{open:y,onOpenChange:b,children:U}),t[37]=b,t[38]=y,t[39]=U,t[40]=W):W=t[40],W}export{y as CommitDialog};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{ln as i}from"./dist-PhNKneni.js";import{t as a}from"./utils-BHAZna1O.js";import{on as o,st as s,xn as c}from"./lucide-react-BFzs_X2U.js";import{t as l}from"./button-BvwSd5oT.js";import{r as u}from"./scroll-area-qgDSyMlD.js";import{Br as d,Hr as f,Rr as p,Ur as m,Vr as h,zr as g}from"./index-SP0wF0IN.js";var _=t(),v=e(n(),1),y=r(),b=1500;function x(e){let t=(0,_.c)(41),{error:n,onDismiss:r,onFixInChat:x}=e,[S,C]=(0,v.useState)(!1),w=(0,v.useRef)(null),T,E;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(T=()=>()=>{w.current!==null&&(clearTimeout(w.current),w.current=null)},E=[],t[0]=T,t[1]=E):(T=t[0],E=t[1]),(0,v.useEffect)(T,E);let D;t[2]===r?D=t[3]:(D=function(e){e||r()},t[2]=r,t[3]=D);let O=D,k;t[4]===n.message?k=t[5]:(k=async function(){try{await navigator.clipboard.writeText(n.message)}catch{}C(!0),w.current!==null&&clearTimeout(w.current),w.current=setTimeout(()=>{C(!1),w.current=null},b)},t[4]=n.message,t[5]=k);let A=k,j;t[6]!==n||t[7]!==x?(j=function(){x(n)},t[6]=n,t[7]=x,t[8]=j):j=t[8];let M=j,N;t[9]===n.title?N=t[10]:(N=(0,y.jsx)(m,{children:n.title}),t[9]=n.title,t[10]=N);let P;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,y.jsx)(d,{children:`Git returned an error, so the commit was not created. Fix the issue below, then try again.`}),t[11]=P):P=t[11];let F;t[12]===N?F=t[13]:(F=(0,y.jsxs)(f,{children:[N,P]}),t[12]=N,t[13]=F);let I;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(I=a(i.compact,`whitespace-pre-wrap break-words p-3 font-mono text-foreground`),t[14]=I):I=t[14];let L;t[15]===n.message?L=t[16]:(L=(0,y.jsx)(u,{className:`max-h-56 rounded-md border bg-muted/40`,children:(0,y.jsx)(`pre`,{className:I,children:n.message})}),t[15]=n.message,t[16]=L);let R;t[17]===r?R=t[18]:(R=(0,y.jsx)(l,{variant:`outline`,onClick:r,children:`Close`}),t[17]=r,t[18]=R);let z;t[19]===A?z=t[20]:(z=()=>void A(),t[19]=A,t[20]=z);let B;t[21]===S?B=t[22]:(B=S?(0,y.jsx)(c,{className:`h-4 w-4`}):(0,y.jsx)(o,{className:`h-4 w-4`}),t[21]=S,t[22]=B);let V=S?`Copied`:`Copy`,H;t[23]!==z||t[24]!==B||t[25]!==V?(H=(0,y.jsxs)(l,{variant:`outline`,onClick:z,children:[B,V]}),t[23]=z,t[24]=B,t[25]=V,t[26]=H):H=t[26];let U;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,y.jsx)(s,{className:`h-4 w-4`}),t[27]=U):U=t[27];let W;t[28]===M?W=t[29]:(W=(0,y.jsxs)(l,{onClick:M,children:[U,`Fix in Chat`]}),t[28]=M,t[29]=W);let G;t[30]!==R||t[31]!==H||t[32]!==W?(G=(0,y.jsxs)(h,{className:`gap-2`,children:[R,H,W]}),t[30]=R,t[31]=H,t[32]=W,t[33]=G):G=t[33];let K;t[34]!==G||t[35]!==F||t[36]!==L?(K=(0,y.jsxs)(g,{className:`max-w-xl`,children:[F,L,G]}),t[34]=G,t[35]=F,t[36]=L,t[37]=K):K=t[37];let q;return t[38]!==O||t[39]!==K?(q=(0,y.jsx)(p,{open:!0,onOpenChange:O,children:K}),t[38]=O,t[39]=K,t[40]=q):q=t[40],q}export{x as CommitErrorDialog};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{fn as i}from"./dist-DQEC_JS0.js";import{t as a}from"./utils-DfZXN5fy.js";import{on as o,st as s,xn as c}from"./lucide-react-BFzs_X2U.js";import{t as l}from"./button-Djzr1B_4.js";import{r as u}from"./scroll-area-BTSuUr9o.js";import{Br as d,Hr as f,Rr as p,Ur as m,Vr as h,zr as g}from"./index-BlkYPP7B.js";var _=t(),v=e(n(),1),y=r(),b=1500;function x(e){let t=(0,_.c)(41),{error:n,onDismiss:r,onFixInChat:x}=e,[S,C]=(0,v.useState)(!1),w=(0,v.useRef)(null),T,E;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(T=()=>()=>{w.current!==null&&(clearTimeout(w.current),w.current=null)},E=[],t[0]=T,t[1]=E):(T=t[0],E=t[1]),(0,v.useEffect)(T,E);let D;t[2]===r?D=t[3]:(D=function(e){e||r()},t[2]=r,t[3]=D);let O=D,k;t[4]===n.message?k=t[5]:(k=async function(){try{await navigator.clipboard.writeText(n.message)}catch{}C(!0),w.current!==null&&clearTimeout(w.current),w.current=setTimeout(()=>{C(!1),w.current=null},b)},t[4]=n.message,t[5]=k);let A=k,j;t[6]!==n||t[7]!==x?(j=function(){x(n)},t[6]=n,t[7]=x,t[8]=j):j=t[8];let M=j,N;t[9]===n.title?N=t[10]:(N=(0,y.jsx)(m,{children:n.title}),t[9]=n.title,t[10]=N);let P;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,y.jsx)(d,{children:`Git returned an error, so the commit was not created. Fix the issue below, then try again.`}),t[11]=P):P=t[11];let F;t[12]===N?F=t[13]:(F=(0,y.jsxs)(f,{children:[N,P]}),t[12]=N,t[13]=F);let I;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(I=a(i.compact,`whitespace-pre-wrap break-words p-3 font-mono text-foreground`),t[14]=I):I=t[14];let L;t[15]===n.message?L=t[16]:(L=(0,y.jsx)(u,{className:`max-h-56 rounded-md border bg-muted/40`,children:(0,y.jsx)(`pre`,{className:I,children:n.message})}),t[15]=n.message,t[16]=L);let R;t[17]===r?R=t[18]:(R=(0,y.jsx)(l,{variant:`outline`,onClick:r,children:`Close`}),t[17]=r,t[18]=R);let z;t[19]===A?z=t[20]:(z=()=>void A(),t[19]=A,t[20]=z);let B;t[21]===S?B=t[22]:(B=S?(0,y.jsx)(c,{className:`h-4 w-4`}):(0,y.jsx)(o,{className:`h-4 w-4`}),t[21]=S,t[22]=B);let V=S?`Copied`:`Copy`,H;t[23]!==z||t[24]!==B||t[25]!==V?(H=(0,y.jsxs)(l,{variant:`outline`,onClick:z,children:[B,V]}),t[23]=z,t[24]=B,t[25]=V,t[26]=H):H=t[26];let U;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,y.jsx)(s,{className:`h-4 w-4`}),t[27]=U):U=t[27];let W;t[28]===M?W=t[29]:(W=(0,y.jsxs)(l,{onClick:M,children:[U,`Fix in Chat`]}),t[28]=M,t[29]=W);let G;t[30]!==R||t[31]!==H||t[32]!==W?(G=(0,y.jsxs)(h,{className:`gap-2`,children:[R,H,W]}),t[30]=R,t[31]=H,t[32]=W,t[33]=G):G=t[33];let K;t[34]!==G||t[35]!==F||t[36]!==L?(K=(0,y.jsxs)(g,{className:`max-w-xl`,children:[F,L,G]}),t[34]=G,t[35]=F,t[36]=L,t[37]=K):K=t[37];let q;return t[38]!==O||t[39]!==K?(q=(0,y.jsx)(p,{open:!0,onOpenChange:O,children:K}),t[38]=O,t[39]=K,t[40]=q):q=t[40],q}export{x as CommitErrorDialog};
@@ -1 +1 @@
1
- import{n as e,t}from"./react-vendor-Ee0-5T4I.js";import{Gn as n,ln as r}from"./dist-PhNKneni.js";import{t as i}from"./utils-BHAZna1O.js";import{Ir as a}from"./index-SP0wF0IN.js";import{n as o,t as s}from"./toggle-group-DpK_U8jx.js";var c=e(),l=t(),u=`inline-flex h-auto w-fit justify-start rounded-full border-0 bg-background p-1 text-muted-foreground`,d=`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`;function f(e){let t=(0,c.c)(11),{commitMethod:a,onCommitMethodChange:f,disabled:p,className:m}=e,h=p===void 0?!1:p,g;t[0]===f?g=t[1]:(g=e=>{(e===n.PullRequest||e===n.Direct)&&f(e)},t[0]=f,t[1]=g);let _;t[2]===m?_=t[3]:(_=i(u,m),t[2]=m,t[3]=_);let v;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,l.jsx)(o,{value:n.PullRequest,"aria-label":`Pull Requests`,className:i(r.body,d),children:`Pull Requests`}),t[4]=v):v=t[4];let y;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,l.jsx)(o,{value:n.Direct,"aria-label":`Direct Commits`,className:i(r.body,d),children:`Direct Commits`}),t[5]=y):y=t[5];let b;return t[6]!==a||t[7]!==h||t[8]!==g||t[9]!==_?(b=(0,l.jsxs)(s,{type:`single`,value:a,disabled:h,onValueChange:g,"aria-label":`Commit method`,className:_,children:[v,y]}),t[6]=a,t[7]=h,t[8]=g,t[9]=_,t[10]=b):b=t[10],b}function p(e){let t=(0,c.c)(9),{commitMethod:i,onCommitMethodChange:o}=e,s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,l.jsx)(a,{children:`Commit method`}),t[0]=s):s=t[0];let u;t[1]!==i||t[2]!==o?(u=(0,l.jsx)(f,{commitMethod:i,onCommitMethodChange:o}),t[1]=i,t[2]=o,t[3]=u):u=t[3];let d=i===n.PullRequest?`Creates a feature branch and allows you to create pull requests.`:`Commits directly to the main branch without creating feature branches.`,p;t[4]===d?p=t[5]:(p=(0,l.jsx)(`p`,{className:r.bodyMuted,children:d}),t[4]=d,t[5]=p);let m;return t[6]!==u||t[7]!==p?(m=(0,l.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[s,u,p]}),t[6]=u,t[7]=p,t[8]=m):m=t[8],m}export{f as i,d as n,p as r,u as t};
1
+ import{n as e,t}from"./react-vendor-Ee0-5T4I.js";import{Jn as n,fn as r}from"./dist-DQEC_JS0.js";import{t as i}from"./utils-DfZXN5fy.js";import{Ir as a}from"./index-BlkYPP7B.js";import{n as o,t as s}from"./toggle-group-D3YTdr2u.js";var c=e(),l=t(),u=`inline-flex h-auto w-fit justify-start rounded-full border-0 bg-background p-1 text-muted-foreground`,d=`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`;function f(e){let t=(0,c.c)(11),{commitMethod:a,onCommitMethodChange:f,disabled:p,className:m}=e,h=p===void 0?!1:p,g;t[0]===f?g=t[1]:(g=e=>{(e===n.PullRequest||e===n.Direct)&&f(e)},t[0]=f,t[1]=g);let _;t[2]===m?_=t[3]:(_=i(u,m),t[2]=m,t[3]=_);let v;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,l.jsx)(o,{value:n.PullRequest,"aria-label":`Pull Requests`,className:i(r.body,d),children:`Pull Requests`}),t[4]=v):v=t[4];let y;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,l.jsx)(o,{value:n.Direct,"aria-label":`Direct Commits`,className:i(r.body,d),children:`Direct Commits`}),t[5]=y):y=t[5];let b;return t[6]!==a||t[7]!==h||t[8]!==g||t[9]!==_?(b=(0,l.jsxs)(s,{type:`single`,value:a,disabled:h,onValueChange:g,"aria-label":`Commit method`,className:_,children:[v,y]}),t[6]=a,t[7]=h,t[8]=g,t[9]=_,t[10]=b):b=t[10],b}function p(e){let t=(0,c.c)(9),{commitMethod:i,onCommitMethodChange:o}=e,s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,l.jsx)(a,{children:`Commit method`}),t[0]=s):s=t[0];let u;t[1]!==i||t[2]!==o?(u=(0,l.jsx)(f,{commitMethod:i,onCommitMethodChange:o}),t[1]=i,t[2]=o,t[3]=u):u=t[3];let d=i===n.PullRequest?`Creates a feature branch and allows you to create pull requests.`:`Commits directly to the main branch without creating feature branches.`,p;t[4]===d?p=t[5]:(p=(0,l.jsx)(`p`,{className:r.bodyMuted,children:d}),t[4]=d,t[5]=p);let m;return t[6]!==u||t[7]!==p?(m=(0,l.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[s,u,p]}),t[6]=u,t[7]=p,t[8]=m):m=t[8],m}export{f as i,d as n,p as r,u as t};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{t as i}from"./query-keys-BX4RxqwI.js";import{ln as a}from"./dist-PhNKneni.js";import{i as o,t as s}from"./utils-BHAZna1O.js";import{at as c,d as l,en as u}from"./lucide-react-BFzs_X2U.js";import{t as d}from"./button-BvwSd5oT.js";import{Lt as f,Ni as p,ta as m,u as ee,yi as h}from"./api-DS1qgAo_.js";import{t as g}from"./progress-indicator-Bub-larq.js";import{n as _}from"./use-toast-xpb5jNtN.js";import{Ar as v,Dr as y,Er as te,Fr as b,Or as x,Wr as S,Xn as ne,cn as re,jr as C,jt as w,kr as T,zt as E}from"./index-SP0wF0IN.js";import{t as D}from"./delete-confirm-dialog-DYplAaw1.js";import{i as O,r as k}from"./table-GKMBZepT.js";var A=e(n(),1),j=t(),M=25;function ie(){let e=(0,j.c)(12),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:i.conversations.recent(),queryFn:N,initialPageParam:0,getNextPageParam(e){let t=e.offset+e.conversations.length;return t<e.total?t:void 0}},e[0]=t):t=e[0];let n=S(t),r;e[1]===n.data?.pages?r=e[2]:(r=n.data?.pages.flatMap(function(e){return e.conversations})??[],e[1]=n.data?.pages,e[2]=r);let a=r,o=n.data?.pages[0]?.total??0,s;return e[3]!==a||e[4]!==n.error||e[5]!==n.fetchNextPage||e[6]!==n.hasNextPage||e[7]!==n.isFetchingNextPage||e[8]!==n.isPending||e[9]!==n.refetch||e[10]!==o?(s={conversations:a,total:o,isInitialLoading:n.isPending,isLoadingMore:n.isFetchingNextPage,error:n.error,hasNextPage:n.hasNextPage,fetchNextPage:n.fetchNextPage,refetch:n.refetch},e[3]=a,e[4]=n.error,e[5]=n.fetchNextPage,e[6]=n.hasNextPage,e[7]=n.isFetchingNextPage,e[8]=n.isPending,e[9]=n.refetch,e[10]=o,e[11]=s):s=e[11],s}function N(e){let{pageParam:t}=e;return f(M,t)}var P=[{id:`turns`,label:`Turns`},{id:`inputTokens`,label:`Input Tokens`},{id:`outputTokens`,label:`Output Tokens`},{id:`model`,label:`Model`},{id:`branch`,label:`Branch`}],F=new Set(P.map(function(e){return e.id}));function I(e){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(function(e){return typeof e==`string`&&F.has(e)}):[]}catch{return[]}}function L(){return I(p(h.HISTORY_COLUMNS))}function R(){let e=(0,j.c)(6),[t,n]=(0,A.useState)(L),r;e[0]===t?r=e[1]:(r=function(e){return t.includes(e)},e[0]=t,e[1]=r);let i=r,a;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=function(e,t){n(function(n){let r=t?n.includes(e)?n:[...n,e]:n.filter(function(t){return t!==e});return m(h.HISTORY_COLUMNS,JSON.stringify(r)),r})},e[2]=a):a=e[2];let o=a,s;return e[3]!==i||e[4]!==t?(s={visibleColumns:t,isColumnVisible:i,setColumnVisible:o},e[3]=i,e[4]=t,e[5]=s):s=e[5],s}var z=r(),B=36,V=3,H=`table-fixed`,U=`h-9 w-48 bg-transparent py-2`,W=`h-9 bg-transparent py-2`,G=`h-9 w-20 bg-transparent py-2 text-right`,K=`h-9 w-28 bg-transparent py-2 text-right`,q=`h-9 w-28 bg-transparent py-2 text-right`,J=`h-9 w-40 bg-transparent py-2`,Y=`h-9 w-32 bg-transparent py-2`,ae=`h-9 w-24 bg-transparent py-2 text-right`,oe=s(a.bodyMuted,`w-48 truncate py-1.5`),se=`py-1.5`,X=s(a.bodyMuted,`w-20 py-1.5 text-right tabular-nums`),Z=s(a.bodyMuted,`w-28 py-1.5 text-right tabular-nums`),Q=s(a.bodyMuted,`w-28 py-1.5 text-right tabular-nums`),$=s(a.bodyMuted,`w-40 truncate py-1.5`),ce=s(a.bodyMuted,`w-32 truncate py-1.5`),le=s(a.bodyMuted,`w-24 py-1.5 text-right tabular-nums`);function ue(e){let t=(0,j.c)(11),n,r;t[0]===e?(n=t[1],r=t[2]):({style:r,...n}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===r?i=t[4]:(i={...r,width:`100%`},t[3]=r,t[4]=i);let o;t[5]===n.className?o=t[6]:(o=s(`w-full caption-bottom select-text`,H,a.body,n.className),t[5]=n.className,t[6]=o);let c;return t[7]!==n||t[8]!==i||t[9]!==o?(c=(0,z.jsx)(`table`,{...n,style:i,className:o}),t[7]=n,t[8]=i,t[9]=o,t[10]=c):c=t[10],c}function de(e){let t=(0,j.c)(5),n;t[0]===e.className?n=t[1]:(n=s(`hidden`,e.className),t[0]=e.className,t[1]=n);let r;return t[2]!==e||t[3]!==n?(r=(0,z.jsx)(`thead`,{...e,className:n}),t[2]=e,t[3]=n,t[4]=r):r=t[4],r}function fe(e){let t=(0,j.c)(5),n;t[0]===e.className?n=t[1]:(n=s(`[&_tr:last-child]:border-0`,e.className),t[0]=e.className,t[1]=n);let r;return t[2]!==e||t[3]!==n?(r=(0,z.jsx)(`tbody`,{...e,className:n}),t[2]=e,t[3]=n,t[4]=r):r=t[4],r}function pe(e){let t=(0,j.c)(5),n;t[0]===e.className?n=t[1]:(n=s(`frosted-scrollbar`,e.className),t[0]=e.className,t[1]=n);let r;return t[2]!==e||t[3]!==n?(r=(0,z.jsx)(`div`,{...e,className:n}),t[2]=e,t[3]=n,t[4]=r):r=t[4],r}function me(e){return function(){return(0,z.jsx)(`tr`,{children:(0,z.jsx)(`td`,{colSpan:e,className:`py-3 text-center`,children:(0,z.jsx)(g,{centered:!0,label:`Loading more…`,size:`sm`})})})}}function he(e){switch(e){case`turns`:return(0,z.jsx)(O,{className:G,children:`Turns`},e);case`inputTokens`:return(0,z.jsx)(O,{className:K,children:`Input Tokens`},e);case`outputTokens`:return(0,z.jsx)(O,{className:q,children:`Output Tokens`},e);case`model`:return(0,z.jsx)(O,{className:J,children:`Model`},e);case`branch`:return(0,z.jsx)(O,{className:Y,children:`Branch`},e)}}function ge(e,t){switch(t){case`turns`:return(0,z.jsx)(k,{className:X,children:e.turnCount.toLocaleString()},t);case`inputTokens`:return(0,z.jsx)(k,{className:Z,children:e.inputTokens.toLocaleString()},t);case`outputTokens`:return(0,z.jsx)(k,{className:Q,children:e.outputTokens.toLocaleString()},t);case`model`:return(0,z.jsx)(k,{className:$,children:e.model??`—`},t);case`branch`:return(0,z.jsx)(k,{className:ce,children:e.branch},t)}}function _e(){let{openConversation:e}=ne(),{toast:t}=_(),[n,r]=(0,A.useState)(!1),[i,f]=(0,A.useState)(!1),{visibleColumns:p,isColumnVisible:m,setColumnVisible:h}=R(),{conversations:S,isInitialLoading:j,isLoadingMore:M,error:N,hasNextPage:F,fetchNextPage:I,refetch:L}=ie(),G=V+p.length,K=(0,A.useCallback)(function(t){e(t).catch(()=>!1)},[e]),q=(0,A.useCallback)(()=>{F&&!M&&I()},[I,F,M]);async function J(){f(!0);try{await ee(),await L(),r(!1),t({title:`Conversation history cleared`})}catch(e){t({title:`Failed to clear conversation history`,description:e instanceof Error?e.message:String(e),variant:`destructive`})}finally{f(!1)}}let Y=(0,A.useMemo)(function(){return function({item:e,...t}){return(0,z.jsx)(`tr`,{...t,className:s(`cursor-pointer border-0 transition-colors hover:bg-muted/50`,t.className),onClick:()=>{e&&K(e)}})}},[K]),X=(0,A.useMemo)(function(){return{Table:ue,TableHead:de,TableBody:fe,TableRow:Y,Scroller:pe,Footer:M?me(G):void 0}},[Y,G,M]);function Z(e,t){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(k,{className:oe,children:t.projectName}),(0,z.jsx)(k,{className:se,children:(0,z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,z.jsx)(c,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,z.jsx)(`span`,{className:s(a.body,`truncate`),children:t.title})]})}),P.map(function(e){return m(e.id)?ge(t,e.id):null}),(0,z.jsx)(k,{className:le,"aria-label":`Last updated ${o(t.lastMessageAt)} ago`,children:o(t.lastMessageAt)})]})}function Q(){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(O,{className:U,children:`Project`}),(0,z.jsx)(O,{className:W,children:`Chat`}),P.map(function(e){return m(e.id)?he(e.id):null}),(0,z.jsx)(O,{className:ae,children:`Updated`})]})}let $=(0,z.jsx)(`table`,{className:s(`w-full caption-bottom`,H,a.body),children:(0,z.jsx)(`thead`,{className:`[&_tr]:border-b [&_tr]:border-table-border`,children:(0,z.jsx)(`tr`,{children:Q()})})});return(0,z.jsxs)(`div`,{className:`flex h-full min-h-0 w-full min-w-0 flex-1 flex-col`,children:[(0,z.jsxs)(E,{className:`flex w-full max-w-none min-w-0 min-h-0 flex-1 flex-col pb-0 pt-0`,children:[(0,z.jsx)(w,{title:`History`,description:`Browse recent chats across all projects.`,tableHeader:S.length>0?$:void 0,action:(0,z.jsxs)(te,{children:[(0,z.jsx)(b,{asChild:!0,children:(0,z.jsx)(d,{type:`button`,variant:`ghost`,size:`icon`,className:`h-8 w-8`,"aria-label":`Choose columns`,children:(0,z.jsx)(u,{className:`h-4 w-4`})})}),(0,z.jsxs)(x,{align:`end`,className:`w-48`,children:[(0,z.jsx)(v,{className:a.body,children:`Columns`}),P.map(function(e){return(0,z.jsx)(y,{checked:m(e.id),onCheckedChange:t=>{h(e.id,t===!0)},onSelect:e=>{e.preventDefault()},children:e.label},e.id)}),(0,z.jsx)(C,{}),(0,z.jsxs)(T,{className:s(a.body,`gap-2 text-destructive focus:text-destructive`),disabled:S.length===0,onSelect:()=>r(!0),children:[(0,z.jsx)(l,{className:`h-4 w-4`}),`Clear history`]})]})]})}),(0,z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:j?(0,z.jsx)(g,{centered:!0,label:`Loading conversation history...`,size:`lg`}):N?(0,z.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,z.jsxs)(`div`,{className:`max-w-md space-y-4 text-center`,children:[(0,z.jsx)(`p`,{className:a.body,children:N instanceof Error?N.message:`Failed to load conversation history`}),(0,z.jsx)(d,{onClick:()=>void L(),children:`Try again`})]})}):S.length===0?(0,z.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,z.jsxs)(`div`,{className:`max-w-md space-y-2 text-center`,children:[(0,z.jsx)(`h3`,{className:a.emptyStateTitle,children:`No history`}),(0,z.jsx)(`p`,{className:a.bodyMuted,children:`No conversations found yet.`})]})}):(0,z.jsx)(re,{style:{height:`100%`},data:S,computeItemKey:(e,t)=>t.conversationId,itemContent:Z,endReached:q,defaultItemHeight:B,increaseViewportBy:B*5,components:X})})]}),(0,z.jsx)(D,{open:n,onOpenChange:r,title:`Clear conversation history?`,description:`This permanently clears conversation history across all projects. This action cannot be undone.`,onConfirm:()=>void J(),confirming:i,confirmLabel:`Clear`,confirmingLabel:`Clearing...`})]})}export{_e as default};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{t as i}from"./query-keys-BX4RxqwI.js";import{fn as a}from"./dist-DQEC_JS0.js";import{i as o,t as s}from"./utils-DfZXN5fy.js";import{at as c,d as l,en as u}from"./lucide-react-BFzs_X2U.js";import{t as d}from"./button-Djzr1B_4.js";import{It as f,Ni as p,ta as m,u as ee,yi as h}from"./api-Cho1mlFq.js";import{t as g}from"./progress-indicator-Dr2oM_0d.js";import{n as _}from"./use-toast-xpb5jNtN.js";import{Ar as v,Dr as y,Er as te,Fr as b,Or as x,Wr as S,Xn as ne,cn as re,jr as C,jt as w,kr as T,zt as E}from"./index-BlkYPP7B.js";import{t as D}from"./delete-confirm-dialog-Bcy-0viP.js";import{i as O,r as k}from"./table-BXRLirbI.js";var A=e(n(),1),j=t(),M=25;function ie(){let e=(0,j.c)(12),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:i.conversations.recent(),queryFn:N,initialPageParam:0,getNextPageParam(e){let t=e.offset+e.conversations.length;return t<e.total?t:void 0}},e[0]=t):t=e[0];let n=S(t),r;e[1]===n.data?.pages?r=e[2]:(r=n.data?.pages.flatMap(function(e){return e.conversations})??[],e[1]=n.data?.pages,e[2]=r);let a=r,o=n.data?.pages[0]?.total??0,s;return e[3]!==a||e[4]!==n.error||e[5]!==n.fetchNextPage||e[6]!==n.hasNextPage||e[7]!==n.isFetchingNextPage||e[8]!==n.isPending||e[9]!==n.refetch||e[10]!==o?(s={conversations:a,total:o,isInitialLoading:n.isPending,isLoadingMore:n.isFetchingNextPage,error:n.error,hasNextPage:n.hasNextPage,fetchNextPage:n.fetchNextPage,refetch:n.refetch},e[3]=a,e[4]=n.error,e[5]=n.fetchNextPage,e[6]=n.hasNextPage,e[7]=n.isFetchingNextPage,e[8]=n.isPending,e[9]=n.refetch,e[10]=o,e[11]=s):s=e[11],s}function N(e){let{pageParam:t}=e;return f(M,t)}var P=[{id:`turns`,label:`Turns`},{id:`inputTokens`,label:`Input Tokens`},{id:`outputTokens`,label:`Output Tokens`},{id:`model`,label:`Model`},{id:`branch`,label:`Branch`}],F=new Set(P.map(function(e){return e.id}));function I(e){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(function(e){return typeof e==`string`&&F.has(e)}):[]}catch{return[]}}function L(){return I(p(h.HISTORY_COLUMNS))}function R(){let e=(0,j.c)(6),[t,n]=(0,A.useState)(L),r;e[0]===t?r=e[1]:(r=function(e){return t.includes(e)},e[0]=t,e[1]=r);let i=r,a;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=function(e,t){n(function(n){let r=t?n.includes(e)?n:[...n,e]:n.filter(function(t){return t!==e});return m(h.HISTORY_COLUMNS,JSON.stringify(r)),r})},e[2]=a):a=e[2];let o=a,s;return e[3]!==i||e[4]!==t?(s={visibleColumns:t,isColumnVisible:i,setColumnVisible:o},e[3]=i,e[4]=t,e[5]=s):s=e[5],s}var z=r(),B=36,V=3,H=`table-fixed`,U=`h-9 w-48 bg-transparent py-2`,W=`h-9 bg-transparent py-2`,G=`h-9 w-20 bg-transparent py-2 text-right`,K=`h-9 w-28 bg-transparent py-2 text-right`,q=`h-9 w-28 bg-transparent py-2 text-right`,J=`h-9 w-40 bg-transparent py-2`,Y=`h-9 w-32 bg-transparent py-2`,ae=`h-9 w-24 bg-transparent py-2 text-right`,oe=s(a.bodyMuted,`w-48 truncate py-1.5`),se=`py-1.5`,X=s(a.bodyMuted,`w-20 py-1.5 text-right tabular-nums`),Z=s(a.bodyMuted,`w-28 py-1.5 text-right tabular-nums`),Q=s(a.bodyMuted,`w-28 py-1.5 text-right tabular-nums`),$=s(a.bodyMuted,`w-40 truncate py-1.5`),ce=s(a.bodyMuted,`w-32 truncate py-1.5`),le=s(a.bodyMuted,`w-24 py-1.5 text-right tabular-nums`);function ue(e){let t=(0,j.c)(11),n,r;t[0]===e?(n=t[1],r=t[2]):({style:r,...n}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===r?i=t[4]:(i={...r,width:`100%`},t[3]=r,t[4]=i);let o;t[5]===n.className?o=t[6]:(o=s(`w-full caption-bottom select-text`,H,a.body,n.className),t[5]=n.className,t[6]=o);let c;return t[7]!==n||t[8]!==i||t[9]!==o?(c=(0,z.jsx)(`table`,{...n,style:i,className:o}),t[7]=n,t[8]=i,t[9]=o,t[10]=c):c=t[10],c}function de(e){let t=(0,j.c)(5),n;t[0]===e.className?n=t[1]:(n=s(`hidden`,e.className),t[0]=e.className,t[1]=n);let r;return t[2]!==e||t[3]!==n?(r=(0,z.jsx)(`thead`,{...e,className:n}),t[2]=e,t[3]=n,t[4]=r):r=t[4],r}function fe(e){let t=(0,j.c)(5),n;t[0]===e.className?n=t[1]:(n=s(`[&_tr:last-child]:border-0`,e.className),t[0]=e.className,t[1]=n);let r;return t[2]!==e||t[3]!==n?(r=(0,z.jsx)(`tbody`,{...e,className:n}),t[2]=e,t[3]=n,t[4]=r):r=t[4],r}function pe(e){let t=(0,j.c)(5),n;t[0]===e.className?n=t[1]:(n=s(`frosted-scrollbar`,e.className),t[0]=e.className,t[1]=n);let r;return t[2]!==e||t[3]!==n?(r=(0,z.jsx)(`div`,{...e,className:n}),t[2]=e,t[3]=n,t[4]=r):r=t[4],r}function me(e){return function(){return(0,z.jsx)(`tr`,{children:(0,z.jsx)(`td`,{colSpan:e,className:`py-3 text-center`,children:(0,z.jsx)(g,{centered:!0,label:`Loading more…`,size:`sm`})})})}}function he(e){switch(e){case`turns`:return(0,z.jsx)(O,{className:G,children:`Turns`},e);case`inputTokens`:return(0,z.jsx)(O,{className:K,children:`Input Tokens`},e);case`outputTokens`:return(0,z.jsx)(O,{className:q,children:`Output Tokens`},e);case`model`:return(0,z.jsx)(O,{className:J,children:`Model`},e);case`branch`:return(0,z.jsx)(O,{className:Y,children:`Branch`},e)}}function ge(e,t){switch(t){case`turns`:return(0,z.jsx)(k,{className:X,children:e.turnCount.toLocaleString()},t);case`inputTokens`:return(0,z.jsx)(k,{className:Z,children:e.inputTokens.toLocaleString()},t);case`outputTokens`:return(0,z.jsx)(k,{className:Q,children:e.outputTokens.toLocaleString()},t);case`model`:return(0,z.jsx)(k,{className:$,children:e.model??`—`},t);case`branch`:return(0,z.jsx)(k,{className:ce,children:e.branch},t)}}function _e(){let{openConversation:e}=ne(),{toast:t}=_(),[n,r]=(0,A.useState)(!1),[i,f]=(0,A.useState)(!1),{visibleColumns:p,isColumnVisible:m,setColumnVisible:h}=R(),{conversations:S,isInitialLoading:j,isLoadingMore:M,error:N,hasNextPage:F,fetchNextPage:I,refetch:L}=ie(),G=V+p.length,K=(0,A.useCallback)(function(t){e(t).catch(()=>!1)},[e]),q=(0,A.useCallback)(()=>{F&&!M&&I()},[I,F,M]);async function J(){f(!0);try{await ee(),await L(),r(!1),t({title:`Conversation history cleared`})}catch(e){t({title:`Failed to clear conversation history`,description:e instanceof Error?e.message:String(e),variant:`destructive`})}finally{f(!1)}}let Y=(0,A.useMemo)(function(){return function({item:e,...t}){return(0,z.jsx)(`tr`,{...t,className:s(`cursor-pointer border-0 transition-colors hover:bg-muted/50`,t.className),onClick:()=>{e&&K(e)}})}},[K]),X=(0,A.useMemo)(function(){return{Table:ue,TableHead:de,TableBody:fe,TableRow:Y,Scroller:pe,Footer:M?me(G):void 0}},[Y,G,M]);function Z(e,t){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(k,{className:oe,children:t.projectName}),(0,z.jsx)(k,{className:se,children:(0,z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,z.jsx)(c,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,z.jsx)(`span`,{className:s(a.body,`truncate`),children:t.title})]})}),P.map(function(e){return m(e.id)?ge(t,e.id):null}),(0,z.jsx)(k,{className:le,"aria-label":`Last updated ${o(t.lastMessageAt)} ago`,children:o(t.lastMessageAt)})]})}function Q(){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(O,{className:U,children:`Project`}),(0,z.jsx)(O,{className:W,children:`Chat`}),P.map(function(e){return m(e.id)?he(e.id):null}),(0,z.jsx)(O,{className:ae,children:`Updated`})]})}let $=(0,z.jsx)(`table`,{className:s(`w-full caption-bottom`,H,a.body),children:(0,z.jsx)(`thead`,{className:`[&_tr]:border-b [&_tr]:border-table-border`,children:(0,z.jsx)(`tr`,{children:Q()})})});return(0,z.jsxs)(`div`,{className:`flex h-full min-h-0 w-full min-w-0 flex-1 flex-col`,children:[(0,z.jsxs)(E,{className:`flex w-full max-w-none min-w-0 min-h-0 flex-1 flex-col pb-0 pt-0`,children:[(0,z.jsx)(w,{title:`History`,description:`Browse recent chats across all projects.`,tableHeader:S.length>0?$:void 0,action:(0,z.jsxs)(te,{children:[(0,z.jsx)(b,{asChild:!0,children:(0,z.jsx)(d,{type:`button`,variant:`ghost`,size:`icon`,className:`h-8 w-8`,"aria-label":`Choose columns`,children:(0,z.jsx)(u,{className:`h-4 w-4`})})}),(0,z.jsxs)(x,{align:`end`,className:`w-48`,children:[(0,z.jsx)(v,{className:a.body,children:`Columns`}),P.map(function(e){return(0,z.jsx)(y,{checked:m(e.id),onCheckedChange:t=>{h(e.id,t===!0)},onSelect:e=>{e.preventDefault()},children:e.label},e.id)}),(0,z.jsx)(C,{}),(0,z.jsxs)(T,{className:s(a.body,`gap-2 text-destructive focus:text-destructive`),disabled:S.length===0,onSelect:()=>r(!0),children:[(0,z.jsx)(l,{className:`h-4 w-4`}),`Clear history`]})]})]})}),(0,z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:j?(0,z.jsx)(g,{centered:!0,label:`Loading conversation history...`,size:`lg`}):N?(0,z.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,z.jsxs)(`div`,{className:`max-w-md space-y-4 text-center`,children:[(0,z.jsx)(`p`,{className:a.body,children:N instanceof Error?N.message:`Failed to load conversation history`}),(0,z.jsx)(d,{onClick:()=>void L(),children:`Try again`})]})}):S.length===0?(0,z.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,z.jsxs)(`div`,{className:`max-w-md space-y-2 text-center`,children:[(0,z.jsx)(`h3`,{className:a.emptyStateTitle,children:`No history`}),(0,z.jsx)(`p`,{className:a.bodyMuted,children:`No conversations found yet.`})]})}):(0,z.jsx)(re,{style:{height:`100%`},data:S,computeItemKey:(e,t)=>t.conversationId,itemContent:Z,endReached:q,defaultItemHeight:B,increaseViewportBy:B*5,components:X})})]}),(0,z.jsx)(D,{open:n,onOpenChange:r,title:`Clear conversation history?`,description:`This permanently clears conversation history across all projects. This action cannot be undone.`,onConfirm:()=>void J(),confirming:i,confirmLabel:`Clear`,confirmingLabel:`Clearing...`})]})}export{_e as default};