tarsk 0.5.78 → 0.5.80

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 (148) hide show
  1. package/dist/bundled-skills/skill-creator/eval-viewer/generate_review.js +183 -95
  2. package/dist/bundled-skills/skill-creator/scripts/__tests__/improve_description.test.js +77 -0
  3. package/dist/bundled-skills/skill-creator/scripts/__tests__/package_skill.test.js +203 -0
  4. package/dist/bundled-skills/skill-creator/scripts/__tests__/run_eval.test.js +125 -0
  5. package/dist/bundled-skills/skill-creator/scripts/__tests__/utils.test.js +149 -0
  6. package/dist/bundled-skills/skill-creator/scripts/aggregate_benchmark.js +2 -0
  7. package/dist/bundled-skills/skill-creator/scripts/improve_description.js +42 -22
  8. package/dist/bundled-skills/skill-creator/scripts/package_skill.js +68 -40
  9. package/dist/bundled-skills/skill-creator/scripts/run_eval.js +60 -32
  10. package/dist/bundled-skills/skill-creator/scripts/run_loop.js +224 -150
  11. package/dist/bundled-skills/skill-creator/scripts/utils.js +71 -41
  12. package/dist/index.js +267445 -257080
  13. package/dist/node_modules/@libsql/darwin-x64/README.md +3 -0
  14. package/dist/node_modules/@libsql/darwin-x64/index.node +0 -0
  15. package/dist/node_modules/@libsql/darwin-x64/package.json +36 -0
  16. package/dist/public/assets/account-view-DVfacvrH.js +1 -0
  17. package/dist/public/assets/alert-dialog-DTxl_mXc.js +7 -0
  18. package/dist/public/assets/api-B_ZIptgC.js +2 -0
  19. package/dist/public/assets/{async-error-boundary-Dll_zcqr.js → async-error-boundary-DmJy8jgz.js} +1 -1
  20. package/dist/public/assets/browser-tab-BZSxX4fR.js +12 -0
  21. package/dist/public/assets/{button-B5aMz2Rk.js → button-DhxraVUW.js} +1 -1
  22. package/dist/public/assets/{card-DRr14MEQ.js → card-DZy9jCWQ.js} +1 -1
  23. package/dist/public/assets/chat-dock-context-DhO-jYMh.js +1 -0
  24. package/dist/public/assets/{commit-dialog-C-JfaoS6.js → commit-dialog-D0z3emO_.js} +1 -1
  25. package/dist/public/assets/{commit-error-dialog-VXqZLeta.js → commit-error-dialog-CVSOwpqp.js} +1 -1
  26. package/dist/public/assets/{commit-method-fields-DAd1unUF.js → commit-method-fields-C7Du43jy.js} +1 -1
  27. package/dist/public/assets/conversation-history-view-CkI6-Hvt.js +1 -0
  28. package/dist/public/assets/create-project-dialog-Ciiyx0LH.js +2 -0
  29. package/dist/public/assets/{create-repo-dialog-mBGGkX-g.js → create-repo-dialog-lS-Tko1c.js} +1 -1
  30. package/dist/public/assets/delete-confirm-dialog-Ciwqi6ts.js +1 -0
  31. package/dist/public/assets/diff-view-DKEDlvjR.js +4 -0
  32. package/dist/public/assets/{dist-COfI64N5.js → dist-BZmr2Qex.js} +1 -1
  33. package/dist/public/assets/{dist-DwblUvSf.js → dist-Bihbg_hO.js} +1 -1
  34. package/dist/public/assets/{dist-TCNzmc2V.js → dist-BkOEUrQf.js} +1 -1
  35. package/dist/public/assets/{dist-DDYi9MQo.js → dist-CA_zFhwJ.js} +1 -1
  36. package/dist/public/assets/dist-DZtmmQ-F.js +2 -0
  37. package/dist/public/assets/{dist-sThe8WYP.js → dist-Dj1qT-gv.js} +1 -1
  38. package/dist/public/assets/{dist-CWYnBq-n.js → dist-aB1qUwWW.js} +1 -1
  39. package/dist/public/assets/{dist-T8-4ZfS0.js → dist-iDwSbcD5.js} +1 -1
  40. package/dist/public/assets/{es2015-Bu0NIPbn.js → es2015-B0KHrBGH.js} +1 -1
  41. package/dist/public/assets/{explorer-monaco-editor-q8CnSwWA.js → explorer-monaco-editor-YoaTqh0f.js} +1 -1
  42. package/dist/public/assets/explorer-tab-view-DlBIsvNp.js +2 -0
  43. package/dist/public/assets/explorer-tree-BWb4wB5M.js +1 -0
  44. package/dist/public/assets/explorer-view-qOBi4ACi.js +76 -0
  45. package/dist/public/assets/{git-history-dialog-XEr5pugf.js → git-history-dialog-DOcupC-P.js} +1 -1
  46. package/dist/public/assets/index-B3oaBks2.css +1 -0
  47. package/dist/public/assets/index-DdJcjvu2.js +112 -0
  48. package/dist/public/assets/{lucide-react-B-115rul.js → lucide-react-CNNzKD4G.js} +1 -1
  49. package/dist/public/assets/{model-list-controls-DAZM0NBC.js → model-list-controls-DOpHpzG8.js} +1 -1
  50. package/dist/public/assets/onboarding-dialog-CfkWB6ST.js +1 -0
  51. package/dist/public/assets/{pill-tabs-QsjH027B.js → pill-tabs-CiONEGsi.js} +1 -1
  52. package/dist/public/assets/{progress-indicator-C01aPXIe.js → progress-indicator-C7Kj9U3t.js} +1 -1
  53. package/dist/public/assets/project-coding-view-CrOGfL2D.js +1 -0
  54. package/dist/public/assets/{project-danger-zone-view-BaSu793w.js → project-danger-zone-view-BfHTp5LI.js} +1 -1
  55. package/dist/public/assets/project-env-vars-view-QrpeAxIt.js +1 -0
  56. package/dist/public/assets/project-model-aliases-view-D_pamHsA.js +1 -0
  57. package/dist/public/assets/project-settings-view-C04tQu0x.js +1 -0
  58. package/dist/public/assets/project-tools-view-0j2uWvRy.js +1 -0
  59. package/dist/public/assets/providers-list-view-4pcZxBFJ.js +1 -0
  60. package/dist/public/assets/pull-request-dialog-HXBislex.js +1 -0
  61. package/dist/public/assets/{pull-with-changes-dialog-DDp_srHq.js → pull-with-changes-dialog-CFLl2SQP.js} +1 -1
  62. package/dist/public/assets/{push-before-pr-dialog-Bt0BChlV.js → push-before-pr-dialog-CD1rZKan.js} +1 -1
  63. package/dist/public/assets/{scroll-area-DwRwR2nQ.js → scroll-area-BQ9bdsVQ.js} +1 -1
  64. package/dist/public/assets/settings-general-tabs-view-CKaL-A9_.js +2 -0
  65. package/dist/public/assets/settings-general-view-ybttpP37.js +1 -0
  66. package/dist/public/assets/settings-list-n-CrPPNl.js +1 -0
  67. package/dist/public/assets/settings-logs-view-CFD-_MKT.js +5 -0
  68. package/dist/public/assets/settings-mcp-servers-view-kTpnzhrf.js +5 -0
  69. package/dist/public/assets/settings-models-view-RmIvRn-i.js +1 -0
  70. package/dist/public/assets/settings-plugins-view-fSxDPjsF.js +2 -0
  71. package/dist/public/assets/settings-providers-view-Bj4-iemE.js +2 -0
  72. package/dist/public/assets/settings-setup-view-ORNCF3ma.js +2 -0
  73. package/dist/public/assets/settings-skills-view-Dl38QbWw.js +2 -0
  74. package/dist/public/assets/settings-slack-view-Dx4Pdxjq.js +1 -0
  75. package/dist/public/assets/settings-slash-commands-view-CSm-ZqwM.js +1 -0
  76. package/dist/public/assets/settings-statistics-view-B8YLP2Nb.js +1 -0
  77. package/dist/public/assets/settings-storage-view-Cnmt9-0H.js +1 -0
  78. package/dist/public/assets/settings-subagents-view-Be7aa0Va.js +2 -0
  79. package/dist/public/assets/settings-system-prompt-view-KlPFbkat.js +1 -0
  80. package/dist/public/assets/{settings-tab-bar-DAHxT5KE.js → settings-tab-bar-BJtpuIky.js} +1 -1
  81. package/dist/public/assets/settings-view-dchqYhRC.js +2 -0
  82. package/dist/public/assets/{slug-utils-BQZ6c2py.js → slug-utils-Ccbyp4Mu.js} +1 -1
  83. package/dist/public/assets/store-D4D62vkY.js +9 -0
  84. package/dist/public/assets/{table-7hMwxpkF.js → table-DCmeRDBK.js} +1 -1
  85. package/dist/public/assets/tasks-view-CRBklv4O.js +1 -0
  86. package/dist/public/assets/{terminal-panel-BNOIOh8z.js → terminal-panel-DlfAu8U1.js} +2 -2
  87. package/dist/public/assets/{toggle-group-UiksQ0n9.js → toggle-group-Dl5P_F6a.js} +1 -1
  88. package/dist/public/assets/{tooltip-Dvmz78Z_.js → tooltip-Cg_EhO9M.js} +1 -1
  89. package/dist/public/assets/{use-active-dock-panel-instance-2LfvItRH.js → use-active-dock-panel-instance-iaFSG9kX.js} +1 -1
  90. package/dist/public/assets/use-git-check-BfkMHX3g.js +1 -0
  91. package/dist/public/assets/use-installed-ai-files-BtR-wIuu.js +1 -0
  92. package/dist/public/assets/use-settings-page-loading-CpaBd260.js +1 -0
  93. package/dist/public/assets/use-toast-xpb5jNtN.js +1 -0
  94. package/dist/public/assets/{useBaseQuery-D5as4SgS.js → useBaseQuery-ChJtNS_3.js} +1 -1
  95. package/dist/public/assets/utils-BCj_kT9l.js +1 -0
  96. package/dist/public/assets/{web-B9ndApmi.js → web-BC7Gc4bP.js} +1 -1
  97. package/dist/public/assets/{web-DyqJbQ3L.js → web-BGZnt3gU.js} +1 -1
  98. package/dist/public/assets/{web-gEWIDddb.js → web-BdHVYPFA.js} +1 -1
  99. package/dist/public/assets/{web-BkuMY08B.js → web-C5YunZdw.js} +1 -1
  100. package/dist/public/browser-preview-rpc.js +123 -68
  101. package/dist/public/index.html +25 -23
  102. package/dist/scaffold-templates.json +1 -1
  103. package/package.json +6 -5
  104. package/dist/public/assets/account-view-Bzv2EHnc.js +0 -1
  105. package/dist/public/assets/api-OO3KSG8d.js +0 -2
  106. package/dist/public/assets/browser-tab-Cwa1TB3I.js +0 -12
  107. package/dist/public/assets/chat-dock-context-Cnq0BWgm.js +0 -1
  108. package/dist/public/assets/context-menu-BKOotkeD.js +0 -1
  109. package/dist/public/assets/conversation-history-view-CcdQRxoP.js +0 -1
  110. package/dist/public/assets/create-project-dialog-D1VaSgqh.js +0 -2
  111. package/dist/public/assets/delete-confirm-dialog-Cx9nT7Xd.js +0 -1
  112. package/dist/public/assets/diff-view-CyOnLSEA.js +0 -4
  113. package/dist/public/assets/dist-DNkA3vYh.js +0 -2
  114. package/dist/public/assets/explorer-tab-view-G2HmkQyY.js +0 -2
  115. package/dist/public/assets/explorer-tree-DAuc2Npx.js +0 -1
  116. package/dist/public/assets/explorer-view-BDMlnV3f.js +0 -76
  117. package/dist/public/assets/index-C4WzOmf3.css +0 -1
  118. package/dist/public/assets/index-DD_a7tQU.js +0 -3665
  119. package/dist/public/assets/onboarding-dialog-Dd9hiOOf.js +0 -1
  120. package/dist/public/assets/project-coding-view-DbKI7sbW.js +0 -1
  121. package/dist/public/assets/project-env-vars-view-BB66j52E.js +0 -1
  122. package/dist/public/assets/project-model-aliases-view-o1-Z2es5.js +0 -1
  123. package/dist/public/assets/project-settings-view-BKjvtOtk.js +0 -1
  124. package/dist/public/assets/project-tools-view-CZbblznF.js +0 -1
  125. package/dist/public/assets/providers-list-view-ChY2DXYc.js +0 -1
  126. package/dist/public/assets/pull-request-dialog-BZgY4vrw.js +0 -1
  127. package/dist/public/assets/settings-general-tabs-view-BH7AaXyP.js +0 -2
  128. package/dist/public/assets/settings-general-view-B-t99LmD.js +0 -1
  129. package/dist/public/assets/settings-list-Dn4CHP4Z.js +0 -1
  130. package/dist/public/assets/settings-logs-view-BCRjz-Fr.js +0 -5
  131. package/dist/public/assets/settings-mcp-servers-view-xv9D4DPO.js +0 -5
  132. package/dist/public/assets/settings-models-view-rUeqlE4k.js +0 -1
  133. package/dist/public/assets/settings-plugins-view-qnWmII61.js +0 -2
  134. package/dist/public/assets/settings-providers-view-DsxTdBEQ.js +0 -2
  135. package/dist/public/assets/settings-setup-view-ew5KW8gL.js +0 -2
  136. package/dist/public/assets/settings-skills-view-C4NxP4gI.js +0 -3
  137. package/dist/public/assets/settings-slack-view-BNT5ervf.js +0 -1
  138. package/dist/public/assets/settings-slash-commands-view-CE7FT3dB.js +0 -1
  139. package/dist/public/assets/settings-statistics-view-jKPoSWBs.js +0 -1
  140. package/dist/public/assets/settings-storage-view-C_Rs-9Hw.js +0 -1
  141. package/dist/public/assets/settings-subagents-view-DHVSAmCY.js +0 -2
  142. package/dist/public/assets/settings-system-prompt-view-B_nF2HUy.js +0 -1
  143. package/dist/public/assets/settings-view-BY6OO-xy.js +0 -2
  144. package/dist/public/assets/store-B7EgrEO7.js +0 -9
  145. package/dist/public/assets/tasks-view-Dc7sthjm.js +0 -1
  146. package/dist/public/assets/use-installed-ai-files-BkpswqGI.js +0 -1
  147. package/dist/public/assets/use-settings-page-loading-BTySlInF.js +0 -1
  148. package/dist/public/assets/utils-B-qS8qMg.js +0 -1
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime-aKtaBQYM.js";import{n as e,o as t,t as n}from"./react-vendor-Ee0-5T4I.js";import{Lt as r}from"./dist-DZtmmQ-F.js";import{t as i}from"./utils-BCj_kT9l.js";import{A as a,_t as o,d as s}from"./lucide-react-CNNzKD4G.js";import{t as c}from"./button-DhxraVUW.js";import{i as l,n as u,r as d,t as f}from"./tooltip-Cg_EhO9M.js";import{Cr as p,Ct as m,Pt as h,jt as g,nr as _,wt as v}from"./index-DdJcjvu2.js";import"./card-DZy9jCWQ.js";var y=e();t();var b=n();function x(e){let t=(0,y.c)(14),{icon:n,title:a,description:o,bordered:s}=e,c=(s===void 0?!0:s)&&`border border-dashed rounded-lg`,l;t[0]===c?l=t[1]:(l=i(`text-center py-12 mb-8`,c),t[0]=c,t[1]=l);let u;t[2]===n?u=t[3]:(u=(0,b.jsx)(n,{className:`mx-auto h-10 w-10 text-muted-foreground/50 mb-3`}),t[2]=n,t[3]=u);let d;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(d=i(r.emptyStateTitle,`mb-1`),t[4]=d):d=t[4];let f;t[5]===a?f=t[6]:(f=(0,b.jsx)(`h3`,{className:d,children:a}),t[5]=a,t[6]=f);let p;t[7]===o?p=t[8]:(p=o?(0,b.jsx)(`p`,{className:i(r.bodyMuted,`mb-3`),children:o}):null,t[7]=o,t[8]=p);let m;return t[9]!==l||t[10]!==u||t[11]!==f||t[12]!==p?(m=(0,b.jsxs)(`div`,{className:l,children:[u,f,p]}),t[9]=l,t[10]=u,t[11]=f,t[12]=p,t[13]=m):m=t[13],m}function S(e){let t=(0,y.c)(12),{placeholder:n,value:r,onChange:o,className:s}=e,c=s??`mb-4`,l;t[0]===c?l=t[1]:(l=i(`relative`,c),t[0]=c,t[1]=l);let u;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,b.jsx)(a,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground pointer-events-none`}),t[2]=u):u=t[2];let d;t[3]===o?d=t[4]:(d=e=>o(e.target.value),t[3]=o,t[4]=d);let f;t[5]!==n||t[6]!==d||t[7]!==r?(f=(0,b.jsx)(p,{placeholder:n,value:r,onChange:d,className:`pl-8`}),t[5]=n,t[6]=d,t[7]=r,t[8]=f):f=t[8];let m;return t[9]!==l||t[10]!==f?(m=(0,b.jsxs)(`div`,{className:l,children:[u,f]}),t[9]=l,t[10]=f,t[11]=m):m=t[11],m}function C(e){let t=(0,y.c)(3),{searchQuery:n,emptyLabel:a}=e,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=i(r.bodyMuted,`text-center py-8`),t[0]=o):o=t[0];let s=n.trim()?`No results for "${n}"`:a,c;return t[1]===s?c=t[2]:(c=(0,b.jsx)(`p`,{className:o,children:s}),t[1]=s,t[2]=c),c}function w(e){let t=(0,y.c)(11),{title:n,tooltip:r,action:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,b.jsx)(o,{"aria-hidden":`true`,className:`h-4 w-4 text-muted-foreground`}),t[0]=a):a=t[0];let s;t[1]===n?s=t[2]:(s=(0,b.jsx)(l,{asChild:!0,children:(0,b.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[n,a]})}),t[1]=n,t[2]=s);let c;t[3]===r?c=t[4]:(c=(0,b.jsx)(u,{children:r}),t[3]=r,t[4]=c);let p;t[5]!==s||t[6]!==c?(p=(0,b.jsx)(d,{children:(0,b.jsxs)(f,{children:[s,c]})}),t[5]=s,t[6]=c,t[7]=p):p=t[7];let h;return t[8]!==i||t[9]!==p?(h=(0,b.jsx)(m,{title:p,action:i,sticky:!1}),t[8]=i,t[9]=p,t[10]=h):h=t[10],h}function T(e,t){let n=t.trim();if(!n)return e;let r=n.toLowerCase();return e.filter(e=>e.name.toLowerCase().includes(r)||e.description.toLowerCase().includes(r))}function E(e){let t=(0,y.c)(32),{title:n,tooltip:a,emptyLabel:o,searchValue:s,onSearchChange:c,items:l,getKey:u,renderName:d,getSubtitle:f,renderAction:p}=e,m,_,v,x,E,D;if(t[0]!==o||t[1]!==u||t[2]!==f||t[3]!==l||t[4]!==c||t[5]!==p||t[6]!==d||t[7]!==s||t[8]!==n||t[9]!==a){let e=T(l,s);_=h,E=`shrink-0`;let y;t[16]!==c||t[17]!==s?(y=(0,b.jsx)(S,{placeholder:`Search`,value:s,onChange:c,className:`mb-0 w-64`}),t[16]=c,t[17]=s,t[18]=y):y=t[18],t[19]!==y||t[20]!==n||t[21]!==a?(D=(0,b.jsx)(w,{title:n,tooltip:a,action:y}),t[19]=y,t[20]=n,t[21]=a,t[22]=D):D=t[22],m=g,v=`pt-6`,x=e.length===0?(0,b.jsx)(C,{searchQuery:s,emptyLabel:o}):(0,b.jsx)(`div`,{className:`divide-y divide-table-border`,children:e.map(e=>(0,b.jsxs)(`div`,{className:`group flex min-h-13 items-center justify-between gap-3 px-3 py-3 hover:bg-muted/30`,children:[(0,b.jsxs)(`div`,{className:`min-w-0 text-left`,children:[(0,b.jsx)(`div`,{className:i(r.body,`truncate`),children:d(e)}),(0,b.jsx)(`div`,{className:i(r.compact,`truncate text-muted-foreground`),children:f(e)})]}),p(e)]},u(e)))}),t[0]=o,t[1]=u,t[2]=f,t[3]=l,t[4]=c,t[5]=p,t[6]=d,t[7]=s,t[8]=n,t[9]=a,t[10]=m,t[11]=_,t[12]=v,t[13]=x,t[14]=E,t[15]=D}else m=t[10],_=t[11],v=t[12],x=t[13],E=t[14],D=t[15];let O;t[23]!==m||t[24]!==v||t[25]!==x?(O=(0,b.jsx)(m,{className:v,children:x}),t[23]=m,t[24]=v,t[25]=x,t[26]=O):O=t[26];let k;return t[27]!==_||t[28]!==E||t[29]!==D||t[30]!==O?(k=(0,b.jsxs)(_,{className:E,children:[D,O]}),t[27]=_,t[28]=E,t[29]=D,t[30]=O,t[31]=k):k=t[31],k}function D(e){let t=(0,y.c)(3),{message:n}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=i(r.bodyMuted,`text-center py-8`),t[0]=a):a=t[0];let o;return t[1]===n?o=t[2]:(o=(0,b.jsx)(`p`,{className:a,children:n}),t[1]=n,t[2]=o),o}var O=`shrink-0 items-center justify-center text-muted-foreground opacity-0 pointer-events-none can-hover:group-hover:opacity-100 can-hover:group-hover:pointer-events-auto can-hover:hover:bg-destructive can-hover:hover:text-destructive-foreground transition-[opacity,color,background-color]`;function k(e){let t=(0,y.c)(19),{loading:n,items:r,emptyState:a,getKey:o,columnsClassName:p,compact:m,showHeader:h,renderContent:g,renderMiddle:S,onItemClick:C,itemClickLabel:w,onDelete:T,deleteAriaLabel:E,deleteTooltip:D}=e,k=p===void 0?`grid-cols-[minmax(0,1fr)_1.75rem]`:p,A=m===void 0?!1:m,j=h===void 0?!0:h,M;t[0]===j?M=t[1]:(M=j?(0,b.jsx)(v,{title:`Installed`}):null,t[0]=j,t[1]=M);let N;t[2]!==k||t[3]!==A||t[4]!==E||t[5]!==D||t[6]!==a||t[7]!==o||t[8]!==w||t[9]!==r||t[10]!==n||t[11]!==T||t[12]!==C||t[13]!==g||t[14]!==S?(N=n?(0,b.jsxs)(`div`,{className:`space-y-3 mb-8`,children:[(0,b.jsx)(_,{className:i(`w-full`,A?`h-9`:`h-12`)}),(0,b.jsx)(_,{className:i(`w-full`,A?`h-9`:`h-12`)})]}):r.length===0?(0,b.jsx)(x,{...a}):(0,b.jsx)(`div`,{className:`divide-y divide-table-border`,children:r.map(e=>(0,b.jsxs)(`div`,{className:i(`group grid items-center gap-3 px-3 hover:bg-muted/30`,A?`min-h-10 py-2`:`min-h-13 py-3`,k,C&&`cursor-pointer`),role:C?`button`:void 0,tabIndex:C?0:void 0,"aria-label":C?w?.(e):void 0,onClick:C?()=>C(e):void 0,onKeyDown:C?t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),C(e))}:void 0,children:[g(e),S?.(e),(0,b.jsx)(d,{children:(0,b.jsxs)(f,{children:[(0,b.jsx)(l,{asChild:!0,children:(0,b.jsx)(c,{type:`button`,variant:`ghost`,size:`icon-sm`,className:O,onClick:t=>{t.stopPropagation(),T(e)},"aria-label":E(e),children:(0,b.jsx)(s,{className:`h-4 w-4`})})}),(0,b.jsx)(u,{children:D})]})})]},o(e)))}),t[2]=k,t[3]=A,t[4]=E,t[5]=D,t[6]=a,t[7]=o,t[8]=w,t[9]=r,t[10]=n,t[11]=T,t[12]=C,t[13]=g,t[14]=S,t[15]=N):N=t[15];let P;return t[16]!==M||t[17]!==N?(P=(0,b.jsxs)(b.Fragment,{children:[M,N]}),t[16]=M,t[17]=N,t[18]=P):P=t[18],P}export{C as a,D as c,E as i,x as n,S as o,k as r,w as s,O as t};
@@ -0,0 +1,5 @@
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{l as i}from"./chunk-QFMPRPBF-COsSkB7x.js";import{F as a,I as o,Lt as s,z as c}from"./dist-DZtmmQ-F.js";import{t as l}from"./utils-BCj_kT9l.js";import{dt as u,gn as d,nn as f}from"./lucide-react-CNNzKD4G.js";import{t as p}from"./button-DhxraVUW.js";import{i as m,n as h,r as g,t as _}from"./tooltip-Cg_EhO9M.js";import{Lr as v,Un as y,u as b}from"./api-B_ZIptgC.js";import{r as x}from"./scroll-area-BQ9bdsVQ.js";import{t as S}from"./use-toast-xpb5jNtN.js";import{Cr as C,Ct as w,en as T,jt as E}from"./index-DdJcjvu2.js";import{n as D,t as O}from"./toggle-group-Dl5P_F6a.js";var k=e(n(),1),A=t();function j(e,t){let n=[...e,t];return n.length>5e3?n.slice(n.length-a):n}function M(e,t){if(e.type!==`ping`){if(e.type===`snapshot`){t(e.entries);return}if(e.type===`cleared`){t([]);return}t(t=>j(t,e.entry))}}function N(e,t){if(t.isCancelled()||t.isAborted())return;let n=e instanceof Error?e.message:String(e);if(v(n)||t.sawSuccessfulStream){t.scheduleReconnect();return}t.setConnecting(!1),t.reportHardFailure(n),t.scheduleReconnect()}function P(e,t,n){let r=(t+e).split(`
2
+ `),i=r.pop()??``;for(let e of r){let t=e.trim();if(!t)continue;let r;try{r=JSON.parse(t)}catch{continue}n(r)}return i}var F=r(),I=1e3,L=[o.INFO,o.WARN,o.ERROR],R=[...L],z=`inline-flex h-11 shrink-0 rounded-full border bg-muted/40 p-2`,B=l(s.compact,`h-7 min-w-0 rounded-full border-0 px-2.5 data-[state=on]:bg-foreground data-[state=on]:text-background data-[state=on]:shadow-sm`);function V(e,t){return t?[e.event,e.message,U(e.level),e.data===void 0?``:G(e.data)].join(` `).toLowerCase().includes(t):!0}function H(e){let t=typeof e==`number`?e:Number(e);return t===o.DEBUG||t===o.INFO||t===o.WARN||t===o.ERROR?t:null}function U(e){let t=H(e);return t===null?String(e):c(t)}function W(e,t){let n=H(e.level);return n!==null&&t.has(n)}function G(e){if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}function K(e){switch(H(e)??e){case o.ERROR:return`text-destructive`;case o.WARN:return`text-amber-600 dark:text-amber-400`;case o.INFO:return`text-foreground`;default:return`text-muted-foreground`}}function q(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function J(e){let t=[`${e.ts} ${U(e.level)} ${e.event}`,e.message];return e.data!==void 0&&t.push(G(e.data)),t.join(`
3
+ `)}var Y=(0,k.memo)(function(e){let t=(0,A.c)(40),{entry:n,copied:r,onCopy:i}=e,a;t[0]!==n||t[1]!==i?(a=()=>i(n),t[0]=n,t[1]=i,t[2]=a):a=t[2];let o;t[3]===r?o=t[4]:(o=r?(0,F.jsx)(d,{className:`h-3.5 w-3.5 text-green-500`}):(0,F.jsx)(f,{className:`h-3.5 w-3.5`}),t[3]=r,t[4]=o);let s;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,F.jsx)(`span`,{className:`sr-only`,children:`Copy log entry`}),t[5]=s):s=t[5];let c;t[6]!==a||t[7]!==o?(c=(0,F.jsx)(m,{asChild:!0,children:(0,F.jsxs)(`button`,{type:`button`,onClick:a,className:`flex h-7 w-7 items-center justify-center rounded-md border border-border bg-background/90 text-foreground shadow-sm hover:bg-background`,children:[o,s]})}),t[6]=a,t[7]=o,t[8]=c):c=t[8];let u=r?`Copied!`:`Copy to clipboard`,p;t[9]===u?p=t[10]:(p=(0,F.jsx)(h,{children:u}),t[9]=u,t[10]=p);let g;t[11]!==c||t[12]!==p?(g=(0,F.jsx)(`div`,{className:`absolute top-2 right-2 opacity-0 transition-opacity group-hover:opacity-100 focus-within:opacity-100`,children:(0,F.jsxs)(_,{children:[c,p]})}),t[11]=c,t[12]=p,t[13]=g):g=t[13];let v;t[14]===n.ts?v=t[15]:(v=q(n.ts),t[14]=n.ts,t[15]=v);let y;t[16]===v?y=t[17]:(y=(0,F.jsx)(`span`,{className:`text-muted-foreground tabular-nums`,children:v}),t[16]=v,t[17]=y);let b;t[18]===n.level?b=t[19]:(b=l(`font-semibold`,K(n.level)),t[18]=n.level,t[19]=b);let x;t[20]===n.level?x=t[21]:(x=U(n.level),t[20]=n.level,t[21]=x);let S;t[22]!==b||t[23]!==x?(S=(0,F.jsx)(`span`,{className:b,children:x}),t[22]=b,t[23]=x,t[24]=S):S=t[24];let C;t[25]===n.event?C=t[26]:(C=(0,F.jsx)(`span`,{className:`text-muted-foreground`,children:n.event}),t[25]=n.event,t[26]=C);let w;t[27]!==S||t[28]!==C||t[29]!==y?(w=(0,F.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2 gap-y-0.5`,children:[y,S,C]}),t[27]=S,t[28]=C,t[29]=y,t[30]=w):w=t[30];let T;t[31]===n.message?T=t[32]:(T=(0,F.jsx)(`p`,{className:`mt-0.5 whitespace-pre-wrap break-words text-foreground`,children:n.message}),t[31]=n.message,t[32]=T);let E;t[33]===n.data?E=t[34]:(E=n.data===void 0?null:(0,F.jsx)(`pre`,{className:`mt-1 max-h-40 overflow-auto whitespace-pre-wrap break-words text-muted-foreground`,children:G(n.data)}),t[33]=n.data,t[34]=E);let D;return t[35]!==w||t[36]!==T||t[37]!==E||t[38]!==g?(D=(0,F.jsxs)(`li`,{className:`group relative min-w-0 px-3 py-2 pr-10 hover:bg-muted/40 select-text`,children:[g,w,T,E]}),t[35]=w,t[36]=T,t[37]=E,t[38]=g,t[39]=D):D=t[39],D});function X(e,t){(0,k.useEffect)(()=>{let n=!1,r=null,i=null,a=new AbortController,o=!1,s=!1;function c(){n||i||(t(!0),i=setTimeout(()=>{i=null,d()},I))}function l(t){M(t,e)}function u(e){N(e,{isCancelled:()=>n,isAborted:()=>a.signal.aborted,sawSuccessfulStream:o,scheduleReconnect:c,setConnecting:t,reportHardFailure:e=>{s||(s=!0,S({title:`Failed to connect to log feed`,description:e,variant:`destructive`}))}})}async function d(){if(!n){t(!0);try{let e=await y({signal:a.signal});if(!e||n){e&&n&&e.cancel().catch(()=>{});return}r=e.getReader();let i=new TextDecoder,s=``;for(o=!0,t(!1);!n;){let{done:e,value:t}=await r.read();if(e)break;s=P(i.decode(t,{stream:!0}),s,l)}n||c()}catch(e){u(e)}}}return d(),()=>{n=!0,a.abort(),i&&clearTimeout(i),r?.cancel().catch(()=>{})}},[e,t])}function Z(){let e=(0,A.c)(7),[t,n]=(0,k.useState)(null),[r,i]=(0,k.useState)(!1),a=(0,k.useRef)(null),o=(0,k.useRef)(null),s,c;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(s=()=>()=>{a.current&&clearTimeout(a.current),o.current&&clearTimeout(o.current)},c=[],e[0]=s,e[1]=c):(s=e[0],c=e[1]),(0,k.useEffect)(s,c);let l;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(l=async e=>{try{await navigator.clipboard.writeText(J(e)),n(e.id),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{n(null),a.current=null},1500)}catch(e){let t=e;S({title:`Failed to copy log entry`,description:t instanceof Error?t.message:String(t),variant:`destructive`})}},e[2]=l):l=e[2];let u=l,d;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(d=async function(e){if(e.length!==0)try{await navigator.clipboard.writeText(e.map(Q).join(`
4
+
5
+ `)),i(!0),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{i(!1),o.current=null},1500)}catch(e){let t=e;S({title:`Failed to copy logs`,description:t instanceof Error?t.message:String(t),variant:`destructive`})}},e[3]=d):d=e[3];let f=d,p;return e[4]!==r||e[5]!==t?(p={copiedEntryId:t,copiedAll:r,handleCopyEntry:u,handleCopyVisibleEntries:f},e[4]=r,e[5]=t,e[6]=p):p=e[6],p}function Q(e){return J(e)}function $(){let[e,t]=(0,k.useState)(!1);async function n(){t(!0);try{await b()}catch(e){S({title:`Failed to clear logs`,description:e instanceof Error?e.message:String(e),variant:`destructive`})}finally{t(!1)}}return{isClearing:e,handleClear:n}}function ee(){let e=(0,A.c)(41),[t]=i(),n;e[0]===t?n=e[1]:(n=t.get(`q`)??``,e[0]=t,e[1]=n);let r=n,a;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=[],e[2]=a):a=e[2];let[o,s]=(0,k.useState)(a),[c,l]=(0,k.useState)(r),[u,d]=(0,k.useState)(R),[f,p]=(0,k.useState)(!0),[m,h]=(0,k.useState)(null),{isClearing:g,handleClear:_}=$(),{copiedEntryId:v,copiedAll:y,handleCopyEntry:b,handleCopyVisibleEntries:x}=Z(),S,C;e[3]===r?(S=e[4],C=e[5]):(S=()=>{r&&l(r)},C=[r],e[3]=r,e[4]=S,e[5]=C),(0,k.useEffect)(S,C),X(s,p);let w,T,D;if(e[6]!==v||e[7]!==u||e[8]!==o||e[9]!==b||e[10]!==c){let t=c.trim().toLowerCase(),n=new Set(u);D=o.filter(e=>W(e,n)&&V(e,t));let r;e[14]!==v||e[15]!==b?(r=(e,t)=>(0,F.jsx)(Y,{entry:t,copied:v===t.id,onCopy:b}),e[14]=v,e[15]=b,e[16]=r):r=e[16],w=r,T=te(u.length,t,o.length),e[6]=v,e[7]=u,e[8]=o,e[9]=b,e[10]=c,e[11]=w,e[12]=T,e[13]=D}else w=e[11],T=e[12],D=e[13];let O=T,j=o.length>0,M;e[17]!==_||e[18]!==g||e[19]!==j?(M=(0,F.jsx)(ne,{isClearing:g,hasEntries:j,onClear:_}),e[17]=_,e[18]=g,e[19]=j,e[20]=M):M=e[20];let N;e[21]!==x||e[22]!==D?(N=()=>void x(D),e[21]=x,e[22]=D,e[23]=N):N=e[23];let P;e[24]!==y||e[25]!==u||e[26]!==c||e[27]!==N||e[28]!==D?(P=(0,F.jsx)(re,{search:c,onSearchChange:l,enabledLevels:u,onEnabledLevelsChange:d,visibleEntries:D,copiedAll:y,onCopyVisible:N}),e[24]=y,e[25]=u,e[26]=c,e[27]=N,e[28]=D,e[29]=P):P=e[29];let I=o.length>0,L;e[30]!==O||e[31]!==f||e[32]!==w||e[33]!==m||e[34]!==I||e[35]!==D?(L=(0,F.jsx)(oe,{isConnecting:f,hasEntries:I,visibleEntries:D,emptyMessage:O,scrollParent:m,onScrollParentChange:h,renderLogEntryRow:w}),e[30]=O,e[31]=f,e[32]=w,e[33]=m,e[34]=I,e[35]=D,e[36]=L):L=e[36];let z;return e[37]!==L||e[38]!==M||e[39]!==P?(z=(0,F.jsx)(`div`,{className:`flex h-full min-h-0 w-full min-w-0 flex-1 flex-col`,children:(0,F.jsxs)(E,{className:`flex w-full max-w-none min-w-0 min-h-0 flex-1 flex-col pb-0 pt-0`,children:[M,P,L]})}),e[37]=L,e[38]=M,e[39]=P,e[40]=z):z=e[40],z}function te(e,t,n){return e===0?`No log levels selected.`:t?`No logs match this search.`:n===0?`No logs in the buffer yet.`:`No logs match the selected levels.`}function ne(e){let t=(0,A.c)(8),{isClearing:n,hasEntries:r,onClear:i}=e,a;t[0]===i?a=t[1]:(a=()=>void i(),t[0]=i,t[1]=a);let o=n||!r,s;t[2]===n?s=t[3]:(s=n?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(u,{className:`mr-2 h-4 w-4 animate-spin`}),`Clearing...`]}):`Clear`,t[2]=n,t[3]=s);let c;return t[4]!==a||t[5]!==o||t[6]!==s?(c=(0,F.jsx)(w,{title:`Logs`,description:`Live in memory feed of events`,action:(0,F.jsx)(p,{type:`button`,onClick:a,disabled:o,children:s})}),t[4]=a,t[5]=o,t[6]=s,t[7]=c):c=t[7],c}function re(e){let t=(0,A.c)(29),{search:n,onSearchChange:r,enabledLevels:i,onEnabledLevelsChange:a,visibleEntries:o,copiedAll:s,onCopyVisible:l}=e,u;t[0]===r?u=t[1]:(u=e=>r(e.target.value),t[0]=r,t[1]=u);let v;t[2]!==n||t[3]!==u?(v=(0,F.jsx)(C,{value:n,onChange:u,placeholder:`Search`,className:`min-w-0 flex-1`,"aria-label":`Search logs`}),t[2]=n,t[3]=u,t[4]=v):v=t[4];let y;t[5]===i?y=t[6]:(y=i.map(ae),t[5]=i,t[6]=y);let b;t[7]===a?b=t[8]:(b=e=>{a(L.filter(t=>e.includes(c(t))))},t[7]=a,t[8]=b);let x;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(x=L.map(ie),t[9]=x):x=t[9];let S;t[10]!==y||t[11]!==b?(S=(0,F.jsx)(O,{type:`multiple`,value:y,onValueChange:b,"aria-label":`Log levels`,variant:`outline`,size:`sm`,className:z,children:x}),t[10]=y,t[11]=b,t[12]=S):S=t[12];let w=o.length===0,T;t[13]===s?T=t[14]:(T=s?(0,F.jsx)(d,{className:`h-3.5 w-3.5 text-green-500`}):(0,F.jsx)(f,{className:`h-3.5 w-3.5`}),t[13]=s,t[14]=T);let E;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,F.jsx)(`span`,{className:`sr-only`,children:`Copy visible logs`}),t[15]=E):E=t[15];let D;t[16]!==l||t[17]!==w||t[18]!==T?(D=(0,F.jsx)(m,{asChild:!0,children:(0,F.jsxs)(p,{type:`button`,variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0`,onClick:l,disabled:w,children:[T,E]})}),t[16]=l,t[17]=w,t[18]=T,t[19]=D):D=t[19];let k=s?`Copied!`:`Copy visible logs to clipboard`,j;t[20]===k?j=t[21]:(j=(0,F.jsx)(h,{children:k}),t[20]=k,t[21]=j);let M;t[22]!==D||t[23]!==j?(M=(0,F.jsx)(g,{children:(0,F.jsxs)(_,{children:[D,j]})}),t[22]=D,t[23]=j,t[24]=M):M=t[24];let N;return t[25]!==M||t[26]!==v||t[27]!==S?(N=(0,F.jsxs)(`div`,{className:`mb-4 mt-4 flex w-full min-w-0 items-center gap-3 electrobun-webkit-app-region-no-drag`,children:[v,S,M]}),t[25]=M,t[26]=v,t[27]=S,t[28]=N):N=t[28],N}function ie(e){return(0,F.jsx)(D,{value:c(e),"aria-label":c(e),className:B,children:c(e)},e)}function ae(e){return c(e)}function oe(e){let t=(0,A.c)(10),{isConnecting:n,hasEntries:r,visibleEntries:i,emptyMessage:a,scrollParent:o,onScrollParentChange:c,renderLogEntryRow:d}=e,f;t[0]!==a||t[1]!==r||t[2]!==n||t[3]!==d||t[4]!==o||t[5]!==i?(f=n&&!r?(0,F.jsxs)(`div`,{className:`flex items-center gap-2 p-4 text-muted-foreground`,children:[(0,F.jsx)(u,{className:`h-4 w-4 animate-spin`}),`Connecting…`]}):i.length===0?(0,F.jsx)(`p`,{className:l(s.bodyMuted,`p-4 font-sans`),children:a}):(0,F.jsx)(g,{children:(0,F.jsx)(T,{data:i,computeItemKey:ce,customScrollParent:o??void 0,itemContent:d,followOutput:se,overscan:500,className:`w-full min-w-0`})}),t[0]=a,t[1]=r,t[2]=n,t[3]=d,t[4]=o,t[5]=i,t[6]=f):f=t[6];let p;return t[7]!==c||t[8]!==f?(p=(0,F.jsx)(x,{viewportRef:c,className:`mb-6 w-full min-h-0 min-w-0 flex-1 rounded-md border bg-background font-mono text-xs`,children:f}),t[7]=c,t[8]=f,t[9]=p):p=t[9],p}function se(e){return e?`auto`:!1}function ce(e,t){return t.id}export{ee as default};
@@ -0,0 +1,5 @@
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{Lt as i}from"./dist-DZtmmQ-F.js";import{r as a}from"./store-D4D62vkY.js";import{s as o,t as s}from"./utils-BCj_kT9l.js";import{B as c,F as l,G as u,Jt as d,O as f,d as p,gn as m,hn as h,r as g}from"./lucide-react-CNNzKD4G.js";import{t as _}from"./button-DhxraVUW.js";import{g as v,h as y,t as b,u as x}from"./dist-iDwSbcD5.js";import{o as S}from"./dist-CA_zFhwJ.js";import{i as ee,n as te,r as C,t as w}from"./tooltip-Cg_EhO9M.js";import{$t as T,mt as E,r as D,yn as O}from"./api-B_ZIptgC.js";import{n as k}from"./explorer-tab-context-BxUVwWQQ.js";import{t as A}from"./use-toast-xpb5jNtN.js";import{t as j}from"./dist-CSssbxDI.js";import{$n as M,At as N,B as P,Bt as F,Cr as I,Ct as ne,Dt as L,Ft as R,It as z,Lt as B,Nt as V,Pt as re,Tr as H,_ as ie,_r as ae,br as oe,bt as U,cr as W,fr as se,g as ce,h as le,hr as ue,jt as de,lr as fe,m as G,mr as pe,p as me,sr as he,ur as ge,v as _e,vr as ve,wr as ye,xr as be,yr as xe,yt as Se,zt as Ce}from"./index-DdJcjvu2.js";import{t as we}from"./delete-confirm-dialog-Ciwqi6ts.js";import{t as Te}from"./use-settings-page-loading-CpaBd260.js";import{n as Ee}from"./settings-list-n-CrPPNl.js";var K=t(),q=e(n(),1),J=r(),Y=`Switch`,[De,Oe]=y(Y),[ke,Ae]=De(Y),X=q.forwardRef((e,t)=>{let{__scopeSwitch:n,name:r,checked:i,defaultChecked:a,required:s,disabled:c,value:l=`on`,onCheckedChange:u,form:d,...f}=e,[p,m]=q.useState(null),h=o(t,e=>m(e)),g=q.useRef(!1),_=p?d||!!p.closest(`form`):!0,[y,S]=b({prop:i,defaultProp:a??!1,onChange:u,caller:Y});return(0,J.jsxs)(ke,{scope:n,checked:y,disabled:c,children:[(0,J.jsx)(x.button,{type:`button`,role:`switch`,"aria-checked":y,"aria-required":s,"data-state":Q(y),"data-disabled":c?``:void 0,disabled:c,value:l,...f,ref:h,onClick:v(e.onClick,e=>{S(e=>!e),_&&(g.current=e.isPropagationStopped(),g.current||e.stopPropagation())})}),_&&(0,J.jsx)(Ne,{control:p,bubbles:!g.current,name:r,value:l,checked:y,required:s,disabled:c,form:d,style:{transform:`translateX(-100%)`}})]})});X.displayName=Y;var Z=`SwitchThumb`,je=q.forwardRef((e,t)=>{let{__scopeSwitch:n,...r}=e,i=Ae(Z,n);return(0,J.jsx)(x.span,{"data-state":Q(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})});je.displayName=Z;var Me=`SwitchBubbleInput`,Ne=q.forwardRef(({__scopeSwitch:e,control:t,checked:n,bubbles:r=!0,...i},a)=>{let s=q.useRef(null),c=o(s,a),l=j(n),u=S(t);return q.useEffect(()=>{let e=s.current;if(!e)return;let t=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(t,`checked`).set;if(l!==n&&i){let t=new Event(`click`,{bubbles:r});i.call(e,n),e.dispatchEvent(t)}},[l,n,r]),(0,J.jsx)(`input`,{type:`checkbox`,"aria-hidden":!0,defaultChecked:n,...i,tabIndex:-1,ref:c,style:{...i.style,...u,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0}})});Ne.displayName=Me;function Q(e){return e?`checked`:`unchecked`}var Pe=X,Fe=je,Ie=q.forwardRef((e,t)=>{let n=(0,K.c)(10),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 a;n[3]===r?a=n[4]:(a=s(`peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input`,r),n[3]=r,n[4]=a);let o;n[5]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,J.jsx)(Fe,{className:s(`pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0`)}),n[5]=o):o=n[5];let c;return n[6]!==i||n[7]!==t||n[8]!==a?(c=(0,J.jsx)(Pe,{className:a,...i,ref:t,children:o}),n[6]=i,n[7]=t,n[8]=a,n[9]=c):c=n[9],c});Ie.displayName=Pe.displayName;var Le={key:``,value:``},Re={serverType:`local`,name:``,command:``,argsText:``,serverUrl:``,transport:`sse`,oauthClientId:``,oauthClientSecret:``,oauthCallbackPort:``,defer:!0},ze=[e=>e.name,e=>e.command,e=>e.argsText,e=>e.serverUrl,e=>e.oauthClientId,e=>e.oauthClientSecret,e=>e.oauthCallbackPort];function $(e,t){return e??t}function Be(e){return e?.url?`remote`:`local`}function Ve(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:t}))}function He(e){let t={};for(let{key:n,value:r}of e)n.trim()&&(t[n.trim()]=r);return Object.keys(t).length>0?t:void 0}function Ue(e){return(e??[]).join(`
2
+ `)}function We(e){return e.split(`
3
+ `).map(e=>e.trim()).filter(Boolean)}function Ge(e){return e===void 0?``:String(e)}function Ke(e){return{oauthClientId:$(e?.clientId,``),oauthClientSecret:$(e?.clientSecret,``),oauthCallbackPort:Ge(e?.callbackPort)}}function qe(e,t){return{...Re,name:e,serverType:Be(t),command:$(t.command,``),argsText:Ue(t.args),serverUrl:$(t.url,``),transport:$(t.transport,`sse`),...Ke(t.oauth),defer:t.defer!==!1}}function Je(e,t,n){return JSON.stringify({name:e,type:t,config:n})}function Ye(e){if(!e)return;let t=Number.parseInt(e,10);return Number.isInteger(t)&&t>0?t:void 0}function Xe(e){let t={};for(let[n,r]of Object.entries(e))r!==``&&r!==void 0&&(t[n]=r);return t}function Ze(e){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r);return t}function Qe(e,t,n){return e!==``||t!==``||n!==void 0}function $e(e){let t=e.oauthClientId.trim(),n=e.oauthClientSecret.trim(),r=Ye(e.oauthCallbackPort.trim());if(!Qe(t,n,r))return;let i=Xe({clientId:t,clientSecret:n,callbackPort:r});if(Object.keys(i).length!==0)return i}function et(e,t,n){return Ze({url:e.serverUrl.trim(),transport:e.transport,headers:He(n),env:He(t),oauth:$e(e),defer:e.defer?void 0:!1})}function tt(e,t){return Ze({command:e.command.trim(),args:We(e.argsText),env:He(t),defer:e.defer?void 0:!1})}function nt(e,t,n){return e.serverType===`remote`?et(e,t,n):tt(e,t)}function rt(e){let t=e.trim();if(!t)return`Server URL is required`;try{new URL(t)}catch{return`Server URL must be a valid URL`}return null}function it(e){if(!e.trim())return null;let t=Number.parseInt(e.trim(),10);return Number.isInteger(t)&&t>0?null:`OAuth callback port must be a positive integer`}function at(e){return e.oauthClientSecret.trim()&&!e.oauthClientId.trim()?`OAuth client ID is required when a client secret is set`:null}function ot(e){return rt(e.serverUrl)??it(e.oauthCallbackPort)??at(e)}function st(e){return e.trim()?null:`Command is required`}function ct(e,t){return t.name.trim()?e===`remote`?ot(t):st(t.command):`Server name is required`}function lt(e,t,n){return ze.some(t=>t(e).trim()!==``)||t.length>0||n.length>0||!e.defer}function ut(e){return e.isEditing?e.currentSnapshot!==e.originalSnapshot:lt(e.form,e.envEntries,e.headerEntries)}function dt(e){if(e.isEditing&&e.serverName)return e.installedServers.find(t=>t.name===e.serverName);if(e.initialConfig)return{name:$(e.initialName,``),config:e.initialConfig}}function ft(e,t){return e instanceof Error?e.message:t}function pt(e,t){return e?t?`Saving...`:`Adding...`:t?`Save`:`Add`}function mt(e,t){return e?`MCP server saved · ${G(t.catalog)}`:`MCP server added · ${G(t.catalog)}`}function ht(e,t){return{title:e?t:`Add MCP Server`,description:e?`Edit MCP Server configuration.`:`Configure a new MCP Server.`}}function gt(){let e=(0,K.c)(7),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={env:[],header:[]},e[0]=t):t=e[0];let[n,r]=(0,q.useState)(t),i;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=function(e,t){r(n=>({...n,[e]:t(n[e])}))},e[1]=i):i=e[1];let a=i,o;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=function(e){a(e,_t)},e[2]=o):o=e[2];let s=o,c;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=function(e,t){a(e,e=>e.filter((e,n)=>n!==t))},e[3]=c):c=e[3];let l=c,u;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(u=function(e,t,n){a(e,e=>e.map((e,r)=>r===t?{...e,...n}:e))},e[4]=u):u=e[4];let d=u,f;return e[5]===n?f=e[6]:(f={lists:n,setEntryLists:r,addEntry:s,removeEntry:l,updateEntry:d},e[5]=n,e[6]=f),f}function _t(e){return[...e,Le]}function vt(e){async function t(){if(!e.projectPath)throw Error(`No project path`);let t=await ce(e.projectPath,e.originalName||e.form.name.trim(),nt(e.form,e.envEntries,e.headerEntries));A({title:`Success`,description:mt(e.isEditing,t)}),e.onBack()}async function n(){e.setError(null);let n=ct(e.form.serverType,e.form);if(n){e.setError(n);return}e.setSaving(!0);try{await t()}catch(t){e.setError(ft(t,`Failed to save server`))}finally{e.setSaving(!1)}}async function r(){if(e.projectPath){e.setDeleting(!0);try{await me(e.projectPath,e.originalName),A({title:`Success`,description:`MCP server removed`}),e.onBack()}catch(t){e.setError(ft(t,`Failed to delete server`))}finally{e.setDeleting(!1)}}}return{handleSave:n,handleDelete:r}}function yt(e){let{installedServers:t}=_e(e.projectPath),n=!!e.serverName,[r,i]=(0,q.useState)(Re),{lists:a,setEntryLists:o,addEntry:s,removeEntry:c,updateEntry:l}=gt(),[u,d]=(0,q.useState)({name:``,snapshot:``}),[f,p]=(0,q.useState)(!1),[m,h]=(0,q.useState)(!1),[g,_]=(0,q.useState)(null),[v,y]=(0,q.useState)(n);(0,q.useEffect)(()=>{let r=dt({isEditing:n,serverName:e.serverName,initialName:e.initialName,initialConfig:e.initialConfig,installedServers:t});r&&(i(qe(r.name,r.config)),o({env:Ve(r.config.env),header:Ve(r.config.headers)}),d({name:r.name,snapshot:Je(r.name,Be(r.config),r.config)})),(!n||r)&&y(!1)},[t,e.serverName,e.initialName,e.initialConfig,o,n]);function b(e){i(t=>({...t,...e}))}return{form:r,patchForm:b,lists:a,addEntry:s,removeEntry:c,updateEntry:l,original:u,saving:f,deleting:m,error:g,loading:v,actions:vt({projectPath:e.projectPath,isEditing:n,form:r,envEntries:a.env,headerEntries:a.header,originalName:u.name,onBack:e.onBack,setError:_,setSaving:p,setDeleting:h})}}function bt(){let e=(0,K.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,J.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,J.jsx)(`p`,{className:i.bodyMuted,children:`Loading server configuration...`})}),e[0]=t):t=e[0],t}function xt(e){let t=(0,K.c)(9),{isEditing:n,name:r,onNameChange:i}=e,a=n?`Server name cannot be changed`:void 0,o;t[0]===i?o=t[1]:(o=e=>i(e.target.value),t[0]=i,t[1]=o);let s;t[2]!==n||t[3]!==r||t[4]!==o?(s=(0,J.jsx)(I,{id:`server-name`,placeholder:`e.g. filesystem`,value:r,onChange:o,disabled:n}),t[2]=n,t[3]=r,t[4]=o,t[5]=s):s=t[5];let c;return t[6]!==a||t[7]!==s?(c=(0,J.jsx)(U,{title:`Server name`,description:a,controlLayout:`stack`,className:`pt-6`,children:s}),t[6]=a,t[7]=s,t[8]=c):c=t[8],c}function St(e){let t=(0,K.c)(13),{form:n,onFormChange:r}=e,i;t[0]===r?i=t[1]:(i=e=>r({command:e.target.value}),t[0]=r,t[1]=i);let a;t[2]!==n.command||t[3]!==i?(a=(0,J.jsx)(U,{title:`Command`,controlLayout:`stack`,className:`pt-6`,children:(0,J.jsx)(I,{id:`server-command`,placeholder:`e.g. npx`,value:n.command,onChange:i})}),t[2]=n.command,t[3]=i,t[4]=a):a=t[4];let o;t[5]===r?o=t[6]:(o=e=>r({argsText:e.target.value}),t[5]=r,t[6]=o);let s;t[7]!==n.argsText||t[8]!==o?(s=(0,J.jsx)(U,{title:`Arguments`,description:`One argument per line`,controlLayout:`stack`,className:`pt-6`,children:(0,J.jsx)(P,{id:`server-args`,placeholder:`-y
4
+ @modelcontextprotocol/server-filesystem
5
+ /path/to/dir`,value:n.argsText,onChange:o,className:`font-mono min-h-[80px] resize-none`})}),t[7]=n.argsText,t[8]=o,t[9]=s):s=t[9];let c;return t[10]!==a||t[11]!==s?(c=(0,J.jsxs)(J.Fragment,{children:[a,s]}),t[10]=a,t[11]=s,t[12]=c):c=t[12],c}function Ct(e){let t=(0,K.c)(19),{form:n,onFormChange:r}=e,i;t[0]===r?i=t[1]:(i=e=>r({oauthClientId:e.target.value}),t[0]=r,t[1]=i);let a;t[2]!==n.oauthClientId||t[3]!==i?(a=(0,J.jsx)(I,{id:`oauth-client-id`,placeholder:`Client ID`,value:n.oauthClientId,onChange:i,className:`font-mono`}),t[2]=n.oauthClientId,t[3]=i,t[4]=a):a=t[4];let o;t[5]===r?o=t[6]:(o=e=>r({oauthClientSecret:e.target.value}),t[5]=r,t[6]=o);let s;t[7]!==n.oauthClientSecret||t[8]!==o?(s=(0,J.jsx)(I,{id:`oauth-client-secret`,placeholder:`Client secret`,type:`password`,value:n.oauthClientSecret,onChange:o,className:`font-mono`}),t[7]=n.oauthClientSecret,t[8]=o,t[9]=s):s=t[9];let c;t[10]===r?c=t[11]:(c=e=>r({oauthCallbackPort:e.target.value}),t[10]=r,t[11]=c);let l;t[12]!==n.oauthCallbackPort||t[13]!==c?(l=(0,J.jsx)(I,{id:`oauth-callback-port`,placeholder:`Callback port (e.g. 3118)`,value:n.oauthCallbackPort,onChange:c,className:`font-mono`}),t[12]=n.oauthCallbackPort,t[13]=c,t[14]=l):l=t[14];let u;return t[15]!==a||t[16]!==s||t[17]!==l?(u=(0,J.jsx)(U,{title:`OAuth client`,description:`Required for servers without dynamic client registration (e.g. GitHub Copilot MCP). Create an OAuth App, set callback to http://localhost:<port>/callback, then Sign in.`,controlLayout:`stack`,className:`pt-6`,children:(0,J.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[a,s,l]})}),t[15]=a,t[16]=s,t[17]=l,t[18]=u):u=t[18],u}function wt(e){let t=(0,K.c)(15),{entries:n,emptyMessage:r,keyPlaceholder:a,valuePlaceholder:o,onUpdate:s,onRemove:c}=e;if(n.length===0){let e;return t[0]===r?e=t[1]:(e=(0,J.jsx)(`p`,{className:i.caption,children:r}),t[0]=r,t[1]=e),e}let l;if(t[2]!==n||t[3]!==a||t[4]!==c||t[5]!==s||t[6]!==o){let e;t[8]!==a||t[9]!==c||t[10]!==s||t[11]!==o?(e=(e,t)=>(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(I,{placeholder:a,value:e.key,onChange:e=>s(t,{key:e.target.value}),className:`font-mono w-[35%]`}),(0,J.jsx)(I,{placeholder:o,value:e.value,onChange:e=>s(t,{value:e.target.value}),className:`font-mono flex-1`}),(0,J.jsx)(_,{variant:`ghost`,size:`icon`,onClick:()=>c(t),className:`h-9 w-9 flex-shrink-0`,children:(0,J.jsx)(g,{className:`h-3.5 w-3.5`})})]},t),t[8]=a,t[9]=c,t[10]=s,t[11]=o,t[12]=e):e=t[12],l=n.map(e),t[2]=n,t[3]=a,t[4]=c,t[5]=s,t[6]=o,t[7]=l}else l=t[7];let u;return t[13]===l?u=t[14]:(u=(0,J.jsx)(`div`,{className:`flex flex-col gap-2`,children:l}),t[13]=l,t[14]=u),u}function Tt(e){let t=(0,K.c)(16),{title:n,description:r,actionLabel:i,emptyMessage:a,keyPlaceholder:o,valuePlaceholder:s,entries:l,onAdd:u,onRemove:d,onUpdate:f}=e,p;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,J.jsx)(c,{className:`h-3 w-3 mr-1`}),t[0]=p):p=t[0];let m;t[1]!==i||t[2]!==u?(m=(0,J.jsxs)(_,{variant:`ghost`,size:`sm`,onClick:u,children:[p,i]}),t[1]=i,t[2]=u,t[3]=m):m=t[3];let h;t[4]!==a||t[5]!==l||t[6]!==o||t[7]!==d||t[8]!==f||t[9]!==s?(h=(0,J.jsx)(wt,{entries:l,emptyMessage:a,keyPlaceholder:o,valuePlaceholder:s,onUpdate:f,onRemove:d}),t[4]=a,t[5]=l,t[6]=o,t[7]=d,t[8]=f,t[9]=s,t[10]=h):h=t[10];let g;return t[11]!==r||t[12]!==m||t[13]!==h||t[14]!==n?(g=(0,J.jsx)(U,{title:n,description:r,controlLayout:`stack`,className:`pt-6`,action:m,children:h}),t[11]=r,t[12]=m,t[13]=h,t[14]=n,t[15]=g):g=t[15],g}function Et(e){let t=(0,K.c)(6),{serverType:n,entries:r,onAdd:i,onRemove:a,onUpdate:o}=e,s=n===`remote`?`Optional metadata for local tooling.`:void 0,c;return t[0]!==r||t[1]!==i||t[2]!==a||t[3]!==o||t[4]!==s?(c=(0,J.jsx)(Tt,{title:`Environment variables`,description:s,actionLabel:`Add variable`,emptyMessage:`No environment variables configured`,keyPlaceholder:`KEY`,valuePlaceholder:`value`,entries:r,onAdd:i,onRemove:a,onUpdate:o}),t[0]=r,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=c):c=t[5],c}function Dt(e){let t=(0,K.c)(6),{defer:n,onDeferChange:r}=e,i=n?`Tool definitions load on demand via tool_search to keep the initial prompt small.`:`Tool definitions are always injected into the initial prompt, even when not used. Useful when this server's tools are needed in nearly every conversation, but they consume context.`,a;t[0]!==n||t[1]!==r?(a=(0,J.jsx)(Ie,{id:`defer-tools`,checked:n,onCheckedChange:r,"aria-label":`Deferred`}),t[0]=n,t[1]=r,t[2]=a):a=t[2];let o;return t[3]!==i||t[4]!==a?(o=(0,J.jsx)(U,{title:`Deferred`,description:i,controlLayout:`stack`,className:`pt-6`,action:a}),t[3]=i,t[4]=a,t[5]=o):o=t[5],o}function Ot(e){let t=(0,K.c)(25),{form:n,onFormChange:r,headerEntries:i,onHeaderAdd:a,onHeaderRemove:o,onHeaderUpdate:s}=e,c;t[0]===r?c=t[1]:(c=e=>r({serverUrl:e.target.value}),t[0]=r,t[1]=c);let l;t[2]!==n.serverUrl||t[3]!==c?(l=(0,J.jsx)(U,{title:`Server URL`,description:`Paste the MCP endpoint URL from your provider.`,controlLayout:`stack`,className:`pt-6`,children:(0,J.jsx)(I,{id:`server-url`,placeholder:`https://example.com/mcp`,value:n.serverUrl,onChange:c,className:`font-mono`})}),t[2]=n.serverUrl,t[3]=c,t[4]=l):l=t[4];let u;t[5]===r?u=t[6]:(u=e=>r({transport:e}),t[5]=r,t[6]=u);let d;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,J.jsx)(Ce,{children:(0,J.jsx)(F,{})}),t[7]=d):d=t[7];let f;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,J.jsxs)(z,{children:[(0,J.jsx)(B,{value:`sse`,children:`SSE (Server-Sent Events)`}),(0,J.jsx)(B,{value:`streamableHttp`,children:`Streamable HTTP`})]}),t[8]=f):f=t[8];let p;t[9]!==n.transport||t[10]!==u?(p=(0,J.jsx)(U,{title:`Transport`,controlLayout:`stack`,className:`pt-6`,children:(0,J.jsxs)(R,{value:n.transport,onValueChange:u,children:[d,f]})}),t[9]=n.transport,t[10]=u,t[11]=p):p=t[11];let m;t[12]!==n||t[13]!==r?(m=(0,J.jsx)(Ct,{form:n,onFormChange:r}),t[12]=n,t[13]=r,t[14]=m):m=t[14];let h;t[15]!==i||t[16]!==a||t[17]!==o||t[18]!==s?(h=(0,J.jsx)(Tt,{title:`HTTP headers`,description:`Optional headers for authentication.`,actionLabel:`Add header`,emptyMessage:`No headers configured`,keyPlaceholder:`Authorization`,valuePlaceholder:`Bearer ...`,entries:i,onAdd:a,onRemove:o,onUpdate:s}),t[15]=i,t[16]=a,t[17]=o,t[18]=s,t[19]=h):h=t[19];let g;return t[20]!==l||t[21]!==p||t[22]!==m||t[23]!==h?(g=(0,J.jsxs)(J.Fragment,{children:[l,p,m,h]}),t[20]=l,t[21]=p,t[22]=m,t[23]=h,t[24]=g):g=t[24],g}function kt(e){let t=(0,K.c)(18),{form:n,onFormChange:r,headerEntries:i,onHeaderAdd:a,onHeaderRemove:o,onHeaderUpdate:s}=e,c;t[0]===r?c=t[1]:(c=e=>r({serverType:e}),t[0]=r,t[1]=c);let l;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,J.jsxs)(fe,{className:`grid w-full grid-cols-2`,children:[(0,J.jsx)(ge,{value:`local`,children:`Local (stdio)`}),(0,J.jsx)(ge,{value:`remote`,children:`Remote (HTTP/SSE)`})]}),t[2]=l):l=t[2];let u;t[3]!==n||t[4]!==r?(u=(0,J.jsx)(W,{value:`local`,children:(0,J.jsx)(St,{form:n,onFormChange:r})}),t[3]=n,t[4]=r,t[5]=u):u=t[5];let d;t[6]!==n||t[7]!==i||t[8]!==r||t[9]!==a||t[10]!==o||t[11]!==s?(d=(0,J.jsx)(W,{value:`remote`,children:(0,J.jsx)(Ot,{form:n,onFormChange:r,headerEntries:i,onHeaderAdd:a,onHeaderRemove:o,onHeaderUpdate:s})}),t[6]=n,t[7]=i,t[8]=r,t[9]=a,t[10]=o,t[11]=s,t[12]=d):d=t[12];let f;return t[13]!==n.serverType||t[14]!==c||t[15]!==u||t[16]!==d?(f=(0,J.jsxs)(he,{value:n.serverType,onValueChange:c,className:`w-full pt-6`,children:[l,u,d]}),t[13]=n.serverType,t[14]=c,t[15]=u,t[16]=d,t[17]=f):f=t[17],f}function At(e){let t=(0,K.c)(5),{isEditing:n,busy:r,deleting:i,onDelete:a}=e;if(!n){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,J.jsx)(`div`,{}),t[0]=e):e=t[0],e}let o=i?`Removing...`:`Remove`,s;return t[1]!==r||t[2]!==a||t[3]!==o?(s=(0,J.jsx)(_,{variant:`destructive`,onClick:a,disabled:r,children:o}),t[1]=r,t[2]=a,t[3]=o,t[4]=s):s=t[4],s}function jt(e){let t=(0,K.c)(7),{busy:n,hasChanges:r,saving:i,isEditing:a,onSave:o}=e,s=n||!r,c;t[0]!==a||t[1]!==i?(c=pt(i,a),t[0]=a,t[1]=i,t[2]=c):c=t[2];let l;return t[3]!==o||t[4]!==s||t[5]!==c?(l=(0,J.jsx)(_,{onClick:o,disabled:s,children:c}),t[3]=o,t[4]=s,t[5]=c,t[6]=l):l=t[6],l}function Mt(e){let t=(0,K.c)(14),{isEditing:n,busy:r,saving:i,deleting:a,hasChanges:o,onSave:s,onDelete:c}=e,l;t[0]!==r||t[1]!==a||t[2]!==n||t[3]!==c?(l=(0,J.jsx)(At,{isEditing:n,busy:r,deleting:a,onDelete:c}),t[0]=r,t[1]=a,t[2]=n,t[3]=c,t[4]=l):l=t[4];let u;t[5]!==r||t[6]!==o||t[7]!==n||t[8]!==s||t[9]!==i?(u=(0,J.jsx)(jt,{busy:r,hasChanges:o,saving:i,isEditing:n,onSave:s}),t[5]=r,t[6]=o,t[7]=n,t[8]=s,t[9]=i,t[10]=u):u=t[10];let d;return t[11]!==l||t[12]!==u?(d=(0,J.jsxs)(`div`,{className:`mt-6 border-t pt-4 flex items-center justify-between`,children:[l,u]}),t[11]=l,t[12]=u,t[13]=d):d=t[13],d}function Nt(e){let t=(0,K.c)(74),{projectPath:n,serverName:r,initialName:a,initialConfig:o,onBack:s}=e,c;t[0]!==o||t[1]!==a||t[2]!==s||t[3]!==n||t[4]!==r?(c={projectPath:n,serverName:r,initialName:a,initialConfig:o,onBack:s},t[0]=o,t[1]=a,t[2]=s,t[3]=n,t[4]=r,t[5]=c):c=t[5];let{form:l,patchForm:u,lists:d,addEntry:f,removeEntry:p,updateEntry:m,original:h,saving:g,deleting:_,error:v,loading:y,actions:b}=yt(c),x=!!r,S=g||_,ee;t[6]!==l||t[7]!==x||t[8]!==d.env||t[9]!==d.header||t[10]!==h.snapshot?(ee=ut({isEditing:x,currentSnapshot:Je(l.name.trim(),l.serverType,nt(l,d.env,d.header)),originalSnapshot:h.snapshot,form:l,envEntries:d.env,headerEntries:d.header}),t[6]=l,t[7]=x,t[8]=d.env,t[9]=d.header,t[10]=h.snapshot,t[11]=ee):ee=t[11];let te=ee;if(y){let e;return t[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,J.jsx)(bt,{}),t[12]=e):e=t[12],e}let C;t[13]!==l.name||t[14]!==x?(C=ht(x,l.name),t[13]=l.name,t[14]=x,t[15]=C):C=t[15];let w;t[16]===C?w=t[17]:(w=(0,J.jsx)(ne,{...C,sticky:!0,className:`pr-10`}),t[16]=C,t[17]=w);let T;t[18]===u?T=t[19]:(T=e=>u({name:e}),t[18]=u,t[19]=T);let E;t[20]!==l.name||t[21]!==x||t[22]!==T?(E=(0,J.jsx)(xt,{isEditing:x,name:l.name,onNameChange:T}),t[20]=l.name,t[21]=x,t[22]=T,t[23]=E):E=t[23];let D;t[24]===f?D=t[25]:(D=()=>f(`header`),t[24]=f,t[25]=D);let O;t[26]===p?O=t[27]:(O=e=>p(`header`,e),t[26]=p,t[27]=O);let k;t[28]===m?k=t[29]:(k=(e,t)=>m(`header`,e,t),t[28]=m,t[29]=k);let A;t[30]!==l||t[31]!==d.header||t[32]!==u||t[33]!==D||t[34]!==O||t[35]!==k?(A=(0,J.jsx)(kt,{form:l,onFormChange:u,headerEntries:d.header,onHeaderAdd:D,onHeaderRemove:O,onHeaderUpdate:k}),t[30]=l,t[31]=d.header,t[32]=u,t[33]=D,t[34]=O,t[35]=k,t[36]=A):A=t[36];let j;t[37]===u?j=t[38]:(j=e=>u({defer:e}),t[37]=u,t[38]=j);let M;t[39]!==l.defer||t[40]!==j?(M=(0,J.jsx)(Dt,{defer:l.defer,onDeferChange:j}),t[39]=l.defer,t[40]=j,t[41]=M):M=t[41];let N;t[42]===f?N=t[43]:(N=()=>f(`env`),t[42]=f,t[43]=N);let P;t[44]===p?P=t[45]:(P=e=>p(`env`,e),t[44]=p,t[45]=P);let F;t[46]===m?F=t[47]:(F=(e,t)=>m(`env`,e,t),t[46]=m,t[47]=F);let I;t[48]!==l.serverType||t[49]!==d.env||t[50]!==N||t[51]!==P||t[52]!==F?(I=(0,J.jsx)(Et,{serverType:l.serverType,entries:d.env,onAdd:N,onRemove:P,onUpdate:F}),t[48]=l.serverType,t[49]=d.env,t[50]=N,t[51]=P,t[52]=F,t[53]=I):I=t[53];let L;t[54]===v?L=t[55]:(L=v&&(0,J.jsx)(`p`,{className:i.error,children:v}),t[54]=v,t[55]=L);let R;t[56]!==b.handleDelete||t[57]!==b.handleSave||t[58]!==S||t[59]!==_||t[60]!==te||t[61]!==x||t[62]!==g?(R=(0,J.jsx)(Mt,{isEditing:x,busy:S,saving:g,deleting:_,hasChanges:te,onSave:b.handleSave,onDelete:b.handleDelete}),t[56]=b.handleDelete,t[57]=b.handleSave,t[58]=S,t[59]=_,t[60]=te,t[61]=x,t[62]=g,t[63]=R):R=t[63];let z;t[64]!==A||t[65]!==M||t[66]!==I||t[67]!==L||t[68]!==R||t[69]!==E?(z=(0,J.jsxs)(`div`,{children:[E,A,M,I,L,R]}),t[64]=A,t[65]=M,t[66]=I,t[67]=L,t[68]=R,t[69]=E,t[70]=z):z=t[70];let B;return t[71]!==z||t[72]!==w?(B=(0,J.jsx)(V,{children:(0,J.jsxs)(Se,{children:[w,z]})}),t[71]=z,t[72]=w,t[73]=B):B=t[73],B}function Pt(e){if(!e)return null;let t=new Date(e).getTime();if(Number.isNaN(t))return null;let n=Math.max(0,Math.round((Date.now()-t)/1e3));if(n<60)return`just now`;let r=Math.round(n/60);if(r<60)return`${r}m ago`;let i=Math.round(r/60);return i<24?`${i}h ago`:new Date(e).toLocaleDateString()}function Ft(e){if(!e||e.state===`missing`||e.state===`stale`)return`Refresh to load tools`;if(e.state===`needs_auth`)return`Sign in required`;if(e.state===`error`)return e.error??`Could not load tools`;let t=e.tools.length,n=t===1?`1 tool`:`${t} tools`,r=Pt(e.refreshedAt);return r?`${n} · refreshed ${r}`:n}function It(e){let t=(0,K.c)(69),{name:n,config:r,catalog:a,remote:o,authorized:c,oauthBusy:u,refreshing:d,onEdit:f,onRefresh:m,onDelete:g,onSignIn:v,onSignOut:y}=e,[b,x]=(0,q.useState)(!1),S;if(t[0]!==c||t[1]!==a||t[2]!==r.args||t[3]!==r.command||t[4]!==r.url||t[5]!==b||t[6]!==n||t[7]!==u||t[8]!==g||t[9]!==f||t[10]!==m||t[11]!==v||t[12]!==y||t[13]!==d||t[14]!==o){let e=a?.state===`ok`?a.tools.map(zt):[],T;t[16]!==r.args||t[17]!==r.command||t[18]!==r.url?(T=r.url?r.url:`${r.command??``} ${r.args?.join(` `)??``}`.trim(),t[16]=r.args,t[17]=r.command,t[18]=r.url,t[19]=T):T=t[19];let E=T,D;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(D=s(i.body,`truncate`),t[20]=D):D=t[20];let O;t[21]===n?O=t[22]:(O=(0,J.jsx)(`div`,{className:D,children:n}),t[21]=n,t[22]=O);let k;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(k=s(i.compact,`truncate text-muted-foreground font-mono`),t[23]=k):k=t[23];let A;t[24]===E?A=t[25]:(A=(0,J.jsx)(`div`,{className:k,children:E}),t[24]=E,t[25]=A);let j;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(j=s(i.caption,`truncate text-muted-foreground`),t[26]=j):j=t[26];let M;t[27]===a?M=t[28]:(M=Ft(a),t[27]=a,t[28]=M);let N;t[29]===M?N=t[30]:(N=(0,J.jsx)(`div`,{className:j,children:M}),t[29]=M,t[30]=N);let P;t[31]!==f||t[32]!==O||t[33]!==A||t[34]!==N?(P=(0,J.jsxs)(`button`,{type:`button`,onClick:f,className:`min-w-0 text-left`,children:[O,A,N]}),t[31]=f,t[32]=O,t[33]=A,t[34]=N,t[35]=P):P=t[35];let F;t[36]!==c||t[37]!==u||t[38]!==v||t[39]!==y||t[40]!==o?(F=o&&(0,J.jsx)(_,{type:`button`,variant:c?`outline`:`secondary`,size:`sm`,disabled:u,onClick:()=>{c?y():v()},children:u?`Working…`:c?`Sign out`:`Sign in`}),t[36]=c,t[37]=u,t[38]=v,t[39]=y,t[40]=o,t[41]=F):F=t[41];let I=`Refresh ${n} tools`,ne=d&&`animate-spin`,L;t[42]===ne?L=t[43]:(L=s(`h-4 w-4`,ne),t[42]=ne,t[43]=L);let R;t[44]===L?R=t[45]:(R=(0,J.jsx)(l,{className:L}),t[44]=L,t[45]=R);let z;t[46]!==m||t[47]!==d||t[48]!==I||t[49]!==R?(z=(0,J.jsx)(ee,{asChild:!0,children:(0,J.jsx)(_,{type:`button`,variant:`ghost`,size:`icon-sm`,disabled:d,onClick:m,"aria-label":I,children:R})}),t[46]=m,t[47]=d,t[48]=I,t[49]=R,t[50]=z):z=t[50];let B;t[51]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,J.jsx)(te,{children:`Refresh tools`}),t[51]=B):B=t[51];let V;t[52]===z?V=t[53]:(V=(0,J.jsx)(C,{children:(0,J.jsxs)(w,{children:[z,B]})}),t[52]=z,t[53]=V);let re=e.length>0&&(0,J.jsx)(_,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-expanded":b,"aria-label":b?`Hide tools`:`Show tools`,onClick:()=>x(Rt),children:(0,J.jsx)(h,{className:s(`h-4 w-4 transition-transform`,b&&`rotate-180`)})}),H;t[54]!==F||t[55]!==V||t[56]!==re?(H=(0,J.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[F,V,re]}),t[54]=F,t[55]=V,t[56]=re,t[57]=H):H=t[57];let ie=`Delete ${n}`,ae;t[58]===Symbol.for(`react.memo_cache_sentinel`)?(ae=(0,J.jsx)(p,{className:`h-4 w-4`}),t[58]=ae):ae=t[58];let oe;t[59]!==g||t[60]!==ie?(oe=(0,J.jsx)(ee,{asChild:!0,children:(0,J.jsx)(_,{type:`button`,variant:`ghost`,size:`icon-sm`,className:`shrink-0 items-center justify-center text-muted-foreground opacity-0 pointer-events-none can-hover:group-hover:opacity-100 can-hover:group-hover:pointer-events-auto can-hover:hover:bg-destructive can-hover:hover:text-destructive-foreground transition-[opacity,color,background-color]`,onClick:g,"aria-label":ie,children:ae})}),t[59]=g,t[60]=ie,t[61]=oe):oe=t[61];let U;t[62]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,J.jsx)(te,{children:`Remove this MCP server from the project`}),t[62]=U):U=t[62];let W;t[63]===oe?W=t[64]:(W=(0,J.jsx)(C,{children:(0,J.jsxs)(w,{children:[oe,U]})}),t[63]=oe,t[64]=W);let se;t[65]!==P||t[66]!==H||t[67]!==W?(se=(0,J.jsxs)(`div`,{className:`grid min-h-13 grid-cols-[minmax(0,1fr)_auto_1.75rem] items-center gap-3`,children:[P,H,W]}),t[65]=P,t[66]=H,t[67]=W,t[68]=se):se=t[68],S=(0,J.jsxs)(`div`,{className:`group px-3 py-3 hover:bg-muted/30`,children:[se,b&&e.length>0&&(0,J.jsx)(`ul`,{className:s(i.caption,`mt-2 space-y-1 pl-1 text-muted-foreground`),children:e.map(Lt)})]}),t[0]=c,t[1]=a,t[2]=r.args,t[3]=r.command,t[4]=r.url,t[5]=b,t[6]=n,t[7]=u,t[8]=g,t[9]=f,t[10]=m,t[11]=v,t[12]=y,t[13]=d,t[14]=o,t[15]=S}else S=t[15];return S}function Lt(e){return(0,J.jsx)(`li`,{className:`font-mono truncate`,children:e},e)}function Rt(e){return!e}function zt(e){return e.name}function Bt(e){return Object.keys(e.env??{}).length>0?{env:e.env}:{}}function Vt(e){return e.name.toLowerCase().replace(/\s+/g,`-`)}function Ht(e,t){let n=Vt(e);return t.some(function(t){return t.name===n||t.name===e.id})}function Ut(e){let t=Vt(e),n=Bt(e);if(e.url!==void 0){let r={url:e.url,transport:e.transport??`sse`,...n};return e.url.trim()?{kind:`automatic`,name:t,config:r}:{kind:`manual`,prefill:{name:t,config:r}}}return e.command?{kind:`automatic`,name:t,config:{command:e.command,args:e.args??[],...n}}:{kind:`invalid`}}async function Wt(e){let t=await ce(e.projectPath,e.serverName,e.config);return await e.loadInstalledServers(),e.triggerExplorerRefresh(),t.catalog}function Gt(e){A({title:`Error`,description:e instanceof Error?e.message:`Failed to install server`,variant:`destructive`})}function Kt(){A({title:`Error`,description:`This server is missing install configuration.`,variant:`destructive`})}function qt(e){let t=(0,K.c)(15),{projectPath:n,installedServers:r,loadInstalledServers:i,triggerExplorerRefresh:a}=e,[o,s]=(0,q.useState)(!1),[c,l]=(0,q.useState)(null),u;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(u=function(){s(!1),l(null)},t[0]=u):u=t[0];let d=u,f;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(f=function(){l(null),s(!0)},t[1]=f):f=t[1];let p=f,m;t[2]!==i||t[3]!==a?(m=function(){d(),i(),a()},t[2]=i,t[3]=a,t[4]=m):m=t[4];let h=m,g;t[5]!==r||t[6]!==i||t[7]!==n||t[8]!==a?(g=async function(e){if(!n||Ht(e,r))return;let t=Ut(e);if(t.kind===`manual`){l(t.prefill),s(!0);return}if(t.kind===`invalid`){Kt();return}try{let r=await Wt({projectPath:n,serverName:t.name,config:t.config,loadInstalledServers:i,triggerExplorerRefresh:a});A({title:`MCP server installed`,description:`${e.name} · ${G(r)}`})}catch(e){Gt(e)}},t[5]=r,t[6]=i,t[7]=n,t[8]=a,t[9]=g):g=t[9];let _=g,v;return t[10]!==h||t[11]!==_||t[12]!==c||t[13]!==o?(v={showAddDialog:o,prefillServer:c,installPopularServer:_,openManualAddDialog:p,closeAddDialog:d,completeServerEdit:h},t[10]=h,t[11]=_,t[12]=c,t[13]=o,t[14]=v):v=t[14],v}var Jt=`https://tarsk.io/skills/mcp/`;function Yt(e){return typeof e.url==`string`&&e.url.trim().length>0}function Xt(e,t,n,r,i,a){let[o,s]=(0,q.useState)(null),[c,l]=(0,q.useState)(null),[u,d]=(0,q.useState)(!1),[f,p]=(0,q.useState)({}),[m,h]=(0,q.useState)(null),[g,_]=(0,q.useState)(null),v=(0,q.useCallback)(async()=>{if(!e){p({});return}let n=t.filter(e=>Yt(e.config));if(n.length===0){p({});return}let r=await Promise.all(n.map(async t=>{try{let n=await E(e,t.name);return[t.name,n.authorized]}catch{return[t.name,!1]}}));p(Object.fromEntries(r))},[e,t]);return(0,q.useEffect)(()=>{v()},[v]),{editingServer:o,setEditingServer:s,deleteConfirm:c,setDeleteConfirm:l,deleting:u,oauthAuthorized:f,oauthBusy:m,refreshing:g,handleDelete:(0,q.useCallback)(async t=>{if(e){d(!0);try{await me(e,t),await n(),r(),A({title:`MCP server removed`,description:t}),l(null)}catch(e){A({title:`Error`,description:e instanceof Error?e.message:`Failed to remove server`,variant:`destructive`})}finally{d(!1)}}},[e,n,r]),handleOAuthSignIn:(0,q.useCallback)(async t=>{if(e){h(t);try{let r=await D(e,t);await v(),await n(),A({title:`Signed in`,description:r.catalog?`${t} · ${G(r.catalog)}`:`Connected to ${t}`})}catch(e){A({title:`Sign in failed`,description:e instanceof Error?e.message:`OAuth authorization failed`,variant:`destructive`})}finally{h(null)}}},[e,v,n]),handleOAuthSignOut:(0,q.useCallback)(async t=>{if(e){h(t);try{await O(e,t),await v(),await n(),A({title:`Signed out`,description:t})}catch(e){A({title:`Sign out failed`,description:e instanceof Error?e.message:`Failed to revoke OAuth credentials`,variant:`destructive`})}finally{h(null)}}},[e,v,n]),handleRefreshCatalog:(0,q.useCallback)(async t=>{if(e){_(t??`all`);try{let r=await le(e,t);await n();let i=Object.values(r.catalog),[a]=i;if(a)A({title:`Tools refreshed`,description:`${a.serverName} · ${G(a)}`});else{let e=i.filter(e=>e.state===`ok`).length;A({title:`Tools refreshed`,description:`${e}/${i.length} servers loaded`})}}catch(e){A({title:`Refresh failed`,description:e instanceof Error?e.message:`Could not refresh MCP tools`,variant:`destructive`})}finally{_(null)}}},[e,n]),handleOpenInExplorer:(0,q.useCallback)(()=>{i(`.agents/mcp.json`),a(`explorer`)},[i,a])}}function Zt(){let e=(0,K.c)(102),t=a(tn),n=a(en),r;if(e[0]!==n||e[1]!==t){let i;e[3]===t?i=e[4]:(i=e=>e.projectId===t,e[3]=t,e[4]=i),r=n.find(i),e[0]=n,e[1]=t,e[2]=r}else r=e[2];let o=r?.projectPath,{installedServers:c,catalog:p,loadingConfig:g,loadInstalledServers:v}=_e(o),{popularServers:y,loadingPopular:b}=ie(),{openChatDockPanel:x}=M(),{setPendingExplorerPath:S,triggerExplorerRefresh:T}=k(),{editingServer:E,setEditingServer:D,deleteConfirm:O,setDeleteConfirm:A,deleting:j,oauthAuthorized:P,oauthBusy:F,refreshing:I,handleDelete:R,handleOAuthSignIn:z,handleOAuthSignOut:B,handleRefreshCatalog:V,handleOpenInExplorer:U}=Xt(o,c,v,T,S,x),W;e[5]!==c||e[6]!==v||e[7]!==o||e[8]!==T?(W={projectPath:o,installedServers:c,loadInstalledServers:v,triggerExplorerRefresh:T},e[5]=c,e[6]=v,e[7]=o,e[8]=T,e[9]=W):W=e[9];let{showAddDialog:ce,prefillServer:le,installPopularServer:fe,openManualAddDialog:G,closeAddDialog:me,completeServerEdit:he}=qt(W),ge;e[10]!==g||e[11]!==b?(ge=[g,b],e[10]=g,e[11]=b,e[12]=ge):ge=e[12];let Se=Te(t,ge);if(!t){let t;return e[13]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,J.jsx)(N,{children:`Select a project to manage MCP servers.`}),e[13]=t):t=e[13],t}let Ce;e[14]===U?Ce=e[15]:(Ce=(0,J.jsx)(_,{variant:`ghost`,onClick:U,children:`Config`}),e[14]=U,e[15]=Ce);let q;e[16]!==V||e[17]!==c.length||e[18]!==I?(q=c.length>=2&&(0,J.jsxs)(_,{variant:`ghost`,className:`gap-1`,disabled:I!==null,onClick:()=>void V(),children:[(0,J.jsx)(l,{className:s(`h-4 w-4`,I===`all`&&`animate-spin`)}),`Refresh all`]}),e[16]=V,e[17]=c.length,e[18]=I,e[19]=q):q=e[19];let Y;e[20]===Symbol.for(`react.memo_cache_sentinel`)?(Y=(0,J.jsx)(be,{asChild:!0,children:(0,J.jsxs)(_,{className:`gap-1`,children:[`Add Server`,(0,J.jsx)(h,{className:`h-4 w-4 opacity-70`})]})}),e[20]=Y):Y=e[20];let De;e[21]===Symbol.for(`react.memo_cache_sentinel`)?(De=s(i.body,`gap-2`),e[21]=De):De=e[21];let Oe;e[22]===Symbol.for(`react.memo_cache_sentinel`)?(Oe=(0,J.jsx)(u,{className:`h-4 w-4 shrink-0`}),e[22]=Oe):Oe=e[22];let ke;e[23]===G?ke=e[24]:(ke=(0,J.jsxs)(ue,{className:De,onSelect:G,children:[Oe,`Manual Entry`]}),e[23]=G,e[24]=ke);let Ae;e[25]===Symbol.for(`react.memo_cache_sentinel`)?(Ae=(0,J.jsxs)(oe,{className:s(i.body,`gap-2`),children:[(0,J.jsx)(f,{className:`h-4 w-4 shrink-0`}),`Popular`]}),e[25]=Ae):Ae=e[25];let X;e[26]!==fe||e[27]!==c||e[28]!==b||e[29]!==y?(X=b?(0,J.jsx)(ue,{disabled:!0,className:i.bodyMuted,children:`Loading…`}):y.length===0?(0,J.jsx)(ue,{disabled:!0,className:i.bodyMuted,children:`No available servers`}):[...y].sort($t).map(e=>{let t=Ht(e,c);return(0,J.jsx)(C,{children:(0,J.jsxs)(w,{children:[(0,J.jsx)(ee,{asChild:!0,children:(0,J.jsxs)(ue,{className:s(i.body,`gap-2`,t&&`opacity-50 cursor-not-allowed`),onSelect:()=>{t||fe(e)},children:[(0,J.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.name}),t&&(0,J.jsx)(m,{className:`h-4 w-4 shrink-0 text-muted-foreground`})]})}),(0,J.jsx)(te,{side:`right`,className:`max-w-64`,children:e.description})]})},e.id)}),e[26]=fe,e[27]=c,e[28]=b,e[29]=y,e[30]=X):X=e[30];let Z;e[31]===X?Z=e[32]:(Z=(0,J.jsxs)(ve,{children:[Ae,(0,J.jsx)(xe,{className:`w-80 max-h-80 overflow-y-auto`,children:X})]}),e[31]=X,e[32]=Z);let je;e[33]===Symbol.for(`react.memo_cache_sentinel`)?(je=(0,J.jsx)(ae,{}),e[33]=je):je=e[33];let Me;e[34]===Symbol.for(`react.memo_cache_sentinel`)?(Me=s(i.body,`gap-2`),e[34]=Me):Me=e[34];let Ne;e[35]===Symbol.for(`react.memo_cache_sentinel`)?(Ne=(0,J.jsxs)(ue,{className:Me,onSelect:Qt,children:[(0,J.jsx)(d,{className:`h-4 w-4 shrink-0`}),`Marketplace`]}),e[35]=Ne):Ne=e[35];let Q;e[36]!==Z||e[37]!==ke?(Q=(0,J.jsxs)(se,{children:[Y,(0,J.jsxs)(pe,{align:`end`,className:`w-56`,children:[ke,Z,je,Ne]})]}),e[36]=Z,e[37]=ke,e[38]=Q):Q=e[38];let Pe;e[39]!==Q||e[40]!==Ce||e[41]!==q?(Pe=(0,J.jsx)(ne,{title:`Installed MCP Servers`,description:`MCP servers configured for this project.`,action:(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[Ce,q,Q]}),sticky:!1}),e[39]=Q,e[40]=Ce,e[41]=q,e[42]=Pe):Pe=e[42];let Fe;e[43]!==p||e[44]!==z||e[45]!==B||e[46]!==V||e[47]!==c||e[48]!==P||e[49]!==F||e[50]!==I||e[51]!==A||e[52]!==D?(Fe=(0,J.jsx)(de,{className:`pt-6`,children:c.length===0?(0,J.jsx)(Ee,{icon:f,title:`Connect your agent to tools, APIs, and data sources`,bordered:!1}):(0,J.jsx)(`div`,{className:`divide-y divide-table-border`,children:c.map(e=>(0,J.jsx)(It,{name:e.name,config:e.config,catalog:p[e.name],remote:Yt(e.config),authorized:P[e.name]===!0,oauthBusy:F===e.name,refreshing:I===e.name||I===`all`,onEdit:()=>D(e.name),onRefresh:()=>void V(e.name),onDelete:()=>A(e.name),onSignIn:()=>void z(e.name),onSignOut:()=>void B(e.name)},e.name))})}),e[43]=p,e[44]=z,e[45]=B,e[46]=V,e[47]=c,e[48]=P,e[49]=F,e[50]=I,e[51]=A,e[52]=D,e[53]=Fe):Fe=e[53];let Ie;e[54]!==Pe||e[55]!==Fe?(Ie=(0,J.jsxs)(re,{className:`shrink-0`,children:[Pe,Fe]}),e[54]=Pe,e[55]=Fe,e[56]=Ie):Ie=e[56];let Le;e[57]!==Se||e[58]!==Ie?(Le=(0,J.jsx)(L,{loading:Se,children:Ie}),e[57]=Se,e[58]=Ie,e[59]=Le):Le=e[59];let Re;e[60]!==me||e[61]!==G?(Re=e=>{e?G():me()},e[60]=me,e[61]=G,e[62]=Re):Re=e[62];let ze=le?.name,$=le?.config,Be;e[63]!==he||e[64]!==o||e[65]!==ze||e[66]!==$?(Be=(0,J.jsx)(H,{className:`max-w-2xl max-h-[90vh] overflow-y-auto p-0`,children:(0,J.jsx)(Nt,{projectPath:o,initialName:ze,initialConfig:$,onBack:he})}),e[63]=he,e[64]=o,e[65]=ze,e[66]=$,e[67]=Be):Be=e[67];let Ve;e[68]!==ce||e[69]!==Re||e[70]!==Be?(Ve=(0,J.jsx)(ye,{open:ce,onOpenChange:Re,children:Be}),e[68]=ce,e[69]=Re,e[70]=Be,e[71]=Ve):Ve=e[71];let He=E!==null,Ue;e[72]===D?Ue=e[73]:(Ue=e=>{e||D(null)},e[72]=D,e[73]=Ue);let We=E??void 0,Ge;e[74]!==v||e[75]!==D||e[76]!==T?(Ge=()=>{D(null),v(),T()},e[74]=v,e[75]=D,e[76]=T,e[77]=Ge):Ge=e[77];let Ke;e[78]!==o||e[79]!==We||e[80]!==Ge?(Ke=(0,J.jsx)(H,{className:`max-w-2xl max-h-[90vh] overflow-y-auto p-0`,children:(0,J.jsx)(Nt,{projectPath:o,serverName:We,onBack:Ge})}),e[78]=o,e[79]=We,e[80]=Ge,e[81]=Ke):Ke=e[81];let qe;e[82]!==He||e[83]!==Ue||e[84]!==Ke?(qe=(0,J.jsx)(ye,{open:He,onOpenChange:Ue,children:Ke}),e[82]=He,e[83]=Ue,e[84]=Ke,e[85]=qe):qe=e[85];let Je=O!==null,Ye;e[86]===A?Ye=e[87]:(Ye=e=>!e&&A(null),e[86]=A,e[87]=Ye);let Xe=`Are you sure you want to delete the server "${O}"? This action cannot be undone.`,Ze;e[88]!==O||e[89]!==R?(Ze=()=>{O&&R(O)},e[88]=O,e[89]=R,e[90]=Ze):Ze=e[90];let Qe;e[91]!==j||e[92]!==Je||e[93]!==Ye||e[94]!==Xe||e[95]!==Ze?(Qe=(0,J.jsx)(we,{open:Je,onOpenChange:Ye,title:`Delete MCP Server`,description:Xe,onConfirm:Ze,confirming:j}),e[91]=j,e[92]=Je,e[93]=Ye,e[94]=Xe,e[95]=Ze,e[96]=Qe):Qe=e[96];let $e;return e[97]!==Le||e[98]!==Ve||e[99]!==qe||e[100]!==Qe?($e=(0,J.jsxs)(J.Fragment,{children:[Le,Ve,qe,Qe]}),e[97]=Le,e[98]=Ve,e[99]=qe,e[100]=Qe,e[101]=$e):$e=e[101],$e}function Qt(){T(Jt)}function $t(e,t){return e.name.localeCompare(t.name)}function en(e){return e.projects}function tn(e){return e.selectedProjectId}export{Zt as SettingsMCPServersView,Zt as default};
@@ -0,0 +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{Lt as i}from"./dist-DZtmmQ-F.js";import{n as a,tt as o}from"./store-D4D62vkY.js";import{r as s,t as c}from"./utils-BCj_kT9l.js";import{t as l}from"./button-DhxraVUW.js";import{r as u}from"./tooltip-Cg_EhO9M.js";import{B as d,L as f,Nt as p,R as m,V as h,W as g}from"./api-B_ZIptgC.js";import{t as _}from"./progress-indicator-C7Kj9U3t.js";import{n as v}from"./suspense-resource-DzlMlIgR.js";import{$t as y,At as b,Ct as ee,Dt as x,Gn as S,Pt as C,St as te,Ut as ne,cr as w,jt as T,lt as E,sr as D,vt as O}from"./index-DdJcjvu2.js";import{i as k,n as A,o as j,r as M,t as N}from"./table-DCmeRDBK.js";import{n as P,t as F}from"./toggle-group-Dl5P_F6a.js";import{n as I,t as L}from"./commit-method-fields-C7Du43jy.js";import{t as R}from"./async-error-boundary-DmJy8jgz.js";import{t as re}from"./sorting-DqwxPMRN.js";import{c as z,o as ie}from"./settings-list-n-CrPPNl.js";import{t as ae}from"./use-deferred-search-Dgxosq55.js";import{n as oe,r as B,t as V}from"./model-list-controls-DOpHpzG8.js";var H=e(n(),1),U=t();function W(e){return`settings-models:coding:${e}`}function G(e){return`settings-models:image:${e}`}async function K(){let e=(await p()).filter(e=>e.apiKey),t=await g(`coding`),n={},r={};for(let i of e){let e=t[i.slug];n[i.slug]=e?.models??[],r[i.slug]=new Set(e?.enabledModelIds??[])}return{providers:e,allModels:n,enabledModelIds:r}}async function se(e){let t=e.filter(e=>e.name.toLowerCase()===`openrouter`),n=await g(`image`),r={},i={};for(let e of t){let t=n[e.slug];r[e.slug]=t?.models??[],i[e.slug]=new Set(t?.enabledModelIds??[])}return{allImageModels:r,enabledImageModelIds:i}}var q=r();function J(e){let t=(0,U.c)(3),{label:n,large:r}=e,i=r!==void 0&&r?`lg`:`sm`,a;return t[0]!==n||t[1]!==i?(a=(0,q.jsx)(_,{centered:!0,containerClassName:`py-12`,label:n,size:i}),t[0]=n,t[1]=i,t[2]=a):a=t[2],a}var Y=`table-fixed`,ce=`h-9`,le=c(i.body,`py-1.5`),ue=`w-10 py-1.5`,de=`w-24 py-1.5 text-right`,fe=c(i.body,`w-20 py-1.5 text-right text-muted-foreground tabular-nums`),pe=c(i.body,`w-48 py-1.5 text-right text-muted-foreground whitespace-nowrap tabular-nums`),me=`h-9 w-24 bg-transparent py-2 text-right`,he=`h-9 w-20 bg-transparent py-2 text-right`,ge=`h-9 w-48 bg-transparent py-2 text-right`;function _e(e){return!e||(e.prompt??0)===0&&(e.completion??0)===0?``:`$${s(e.prompt??0)} in | $${s(e.completion??0)} out`}function ve(e){return e==null||!Number.isFinite(e)||e<=0?``:e>=100?Math.round(e).toLocaleString():e.toFixed(1)}function X(e){let t=(0,U.c)(9),{showIntelligence:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=c(`w-full caption-bottom`,Y,i.body),t[0]=r):r=t[0];let a,o;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(k,{className:`h-9 w-10 bg-transparent py-2`}),o=(0,q.jsx)(k,{className:`h-9 bg-transparent py-2`,children:`Model`}),t[1]=a,t[2]=o):(a=t[1],o=t[2]);let s;t[3]===n?s=t[4]:(s=n?(0,q.jsx)(k,{className:me,children:`Intelligence`}):null,t[3]=n,t[4]=s);let l,u;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,q.jsx)(k,{className:he,children:`TPS`}),u=(0,q.jsx)(k,{className:ge,children:`Pricing`}),t[5]=l,t[6]=u):(l=t[5],u=t[6]);let d;return t[7]===s?d=t[8]:(d=(0,q.jsx)(`table`,{className:r,children:(0,q.jsx)(`thead`,{className:`[&_tr]:border-b [&_tr]:border-table-border`,children:(0,q.jsxs)(`tr`,{children:[a,o,s,l,u]})})}),t[7]=s,t[8]=d),d}function Z(e){let t=(0,U.c)(15),{models:n,enabledIds:r,checkboxIdPrefix:a,showIntelligence:o,getModelDisplayName:s,onToggleModel:l}=e,u;if(t[0]!==a||t[1]!==r||t[2]!==s||t[3]!==n||t[4]!==l||t[5]!==o){let e;t[7]!==a||t[8]!==r||t[9]!==s||t[10]!==l||t[11]!==o?(e=e=>{let t=`${a}${e.id}`,n=r.has(e.id);return(0,q.jsxs)(j,{className:ce,children:[(0,q.jsx)(M,{className:ue,children:(0,q.jsx)(E,{id:t,value:n,onChange:()=>l(e.id),ariaLabel:`${s(e)} ${n?`enabled`:`disabled`}`})}),(0,q.jsx)(M,{className:le,children:(0,q.jsx)(`label`,{htmlFor:t,className:c(i.body,`cursor-pointer truncate peer-disabled:cursor-not-allowed peer-disabled:opacity-70`),children:s(e)})}),o?(0,q.jsx)(M,{className:de,children:(0,q.jsx)(`div`,{className:`flex justify-end`,children:(0,q.jsx)(B,{codingIndex:e.coding_index,modelName:s(e)})})}):null,(0,q.jsx)(M,{className:fe,children:ve(e.avgTPS)}),(0,q.jsx)(M,{className:pe,children:_e(e.pricing)})]},e.id)},t[7]=a,t[8]=r,t[9]=s,t[10]=l,t[11]=o,t[12]=e):e=t[12],u=n.map(e),t[0]=a,t[1]=r,t[2]=s,t[3]=n,t[4]=l,t[5]=o,t[6]=u}else u=t[6];let d;return t[13]===u?d=t[14]:(d=(0,q.jsx)(N,{className:Y,children:(0,q.jsx)(A,{children:u})}),t[13]=u,t[14]=d),d}function Q(e){let t=(0,U.c)(25),{providerName:n,providerSlug:r,action:a,tableHeader:o,children:s}=e,l;t[0]!==n||t[1]!==r?(l=(0,q.jsx)(O,{provider:{name:n,slug:r}}),t[0]=n,t[1]=r,t[2]=l):l=t[2];let u;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(u=c(i.pageTitle,`truncate`),t[3]=u):u=t[3];let d;t[4]===n?d=t[5]:(d=(0,q.jsx)(`h2`,{className:u,children:n}),t[4]=n,t[5]=d);let f;t[6]!==l||t[7]!==d?(f=(0,q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[l,d]}),t[6]=l,t[7]=d,t[8]=f):f=t[8];let p;t[9]===a?p=t[10]:(p=a?(0,q.jsx)(`div`,{className:`electrobun-webkit-app-region-no-drag shrink-0`,children:a}):null,t[9]=a,t[10]=p);let m;t[11]!==f||t[12]!==p?(m=(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b border-divider px-6 py-4 electrobun-webkit-app-region-drag`,children:[f,p]}),t[11]=f,t[12]=p,t[13]=m):m=t[13];let h;t[14]===o?h=t[15]:(h=o?(0,q.jsx)(`div`,{className:`electrobun-webkit-app-region-no-drag px-6 pb-2 pt-4`,children:o}):null,t[14]=o,t[15]=h);let g=o?`pt-0`:`pt-6`,_;t[16]===g?_=t[17]:(_=c(`px-6 pb-6`,g),t[16]=g,t[17]=_);let v;t[18]!==s||t[19]!==_?(v=(0,q.jsx)(`div`,{className:_,children:s}),t[18]=s,t[19]=_,t[20]=v):v=t[20];let y;return t[21]!==v||t[22]!==m||t[23]!==h?(y=(0,q.jsxs)(C,{className:`shrink-0`,children:[m,h,v]}),t[21]=v,t[22]=m,t[23]=h,t[24]=y):y=t[24],y}function ye({providers:e,globalSearchQuery:t,modelSortBy:n,filterAndSortModels:r,getModelDisplayName:i,onSaveStatus:s}){let c=a(),l=S(G(0),()=>se(e)),[p]=(0,H.useState)(l.allImageModels),[m,h]=(0,H.useState)(l.enabledImageModelIds);async function g(e,t){try{m[e]?.has(t)?(await f(e,t),h(n=>{let r=new Set(n[e]??[]);return r.delete(t),{...n,[e]:r}})):(await d(e,t),h(n=>({...n,[e]:new Set([...n[e]||[],t])}))),c({type:o.ConfigUpdated}),s(`Model preferences saved successfully`)}catch(e){s(e instanceof Error?e.message:`Failed to save model changes`)}}async function _(e,t){let n=p[e],r=m[e];if(n)for(let i of n)r?.has(i.id)!==t&&await g(e,i.id)}return(0,q.jsx)(q.Fragment,{children:e.filter(e=>e.name.toLowerCase()===`openrouter`).map(e=>{let a=p[e.slug]||[],o=m[e.slug]||new Set,s=r(a,o,n);return s.length===0&&t?null:(0,q.jsx)(Q,{providerName:e.name,providerSlug:e.slug,action:s.length>0?(0,q.jsx)(V,{id:`select-all-image-${e.slug}`,checked:s.every(e=>o.has(e.id)),onChange:t=>void _(e.slug,t)}):null,tableHeader:s.length>0?(0,q.jsx)(X,{showIntelligence:!1}):void 0,children:s.length===0?(0,q.jsx)(z,{message:t?`No models matching your search.`:`No image models available for this provider.`}):(0,q.jsx)(u,{children:(0,q.jsx)(Z,{models:s,enabledIds:o,checkboxIdPrefix:`image-`,showIntelligence:!1,getModelDisplayName:i,onToggleModel:t=>void g(e.slug,t)})})},e.slug)})})}function be({loadVersion:e}){let t=a(),n=S(W(e),()=>K()),r=n.providers,[s]=(0,H.useState)(n.allModels),[l,d]=(0,H.useState)(n.enabledModelIds),[f,p]=(0,H.useState)(`coding`),{query:g,setQuery:_,deferredQuery:v}=ae(),[E,O]=(0,H.useState)(`alphabetical`),[k,A]=(0,H.useState)(``),j=e=>y(e.id),M=async(e,n)=>{try{l[e]?.has(n)?(await m(e,n),d(t=>{let r=new Set(t[e]??[]);return r.delete(n),{...t,[e]:r}})):(await h(e,n),d(t=>({...t,[e]:new Set([...t[e]||[],n])}))),ne(),t({type:o.ConfigUpdated}),A(`Model preferences saved successfully`),setTimeout(()=>A(``),3e3)}catch(e){A(e instanceof Error?e.message:`Failed to save model changes`)}},N=async(e,t)=>{let n=s[e],r=l[e];if(n)for(let i of n)r?.has(i.id)!==t&&await M(e,i.id)},R=(e,t,n)=>re({models:e,query:v,sortBy:n,getDisplayName:j,getPriority:e=>+!t.has(e.id)});if(r.length===0)return(0,q.jsx)(b,{title:`No providers configured`,children:`Configure a provider with an API key to view available models.`});let B=r.some(e=>e.name.toLowerCase()===`openrouter`);return(0,q.jsx)(x,{loading:!1,children:(0,q.jsxs)(D,{value:f,className:`flex flex-col gap-2.5`,children:[(0,q.jsxs)(C,{className:`shrink-0`,children:[(0,q.jsx)(ee,{title:`Models`,description:`View and manage available models from your configured providers.`,action:(0,q.jsx)(ie,{placeholder:`Search`,value:g,onChange:_,className:`mb-0 w-64`}),sticky:!1}),(0,q.jsx)(T,{className:`max-w-none pt-6`,children:(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[B?(0,q.jsxs)(F,{type:`single`,value:f,onValueChange:e=>{(e===`coding`||e===`image`)&&(p(e),_(``))},"aria-label":`Model type`,className:c(L,`shrink-0`),children:[(0,q.jsx)(P,{value:`coding`,"aria-label":`Coding`,className:c(i.body,I),children:`Coding`}),(0,q.jsx)(P,{value:`image`,"aria-label":`Image`,className:c(i.body,I),children:`Image`})]}):null,k?(0,q.jsx)(te,{variant:k.includes(`error`)||k.includes(`Failed`)?`error`:`success`,className:`mb-0 shrink-0`,children:k}):null,(0,q.jsx)(`div`,{className:`ml-auto shrink-0`,children:(0,q.jsx)(oe,{sortBy:E,showCodingIndex:f===`coding`,showIntelligenceByPrice:f===`coding`,onSortByChange:O})})]})})]}),(0,q.jsx)(w,{value:`coding`,className:`mt-0 flex flex-col gap-2.5`,children:r.map(e=>{let t=s[e.slug]||[],n=l[e.slug]||new Set,r=R(t,n,E);return r.length===0&&g?null:(0,q.jsx)(Q,{providerName:e.name,providerSlug:e.slug,action:r.length>0?(0,q.jsx)(V,{id:`select-all-${e.slug}`,checked:r.every(e=>n.has(e.id)),onChange:t=>void N(e.slug,t)}):null,tableHeader:r.length>0?(0,q.jsx)(X,{showIntelligence:E===`coding-index`||E===`intelligence-by-price`}):void 0,children:r.length===0?(0,q.jsx)(z,{message:g?`No models matching your search.`:`No models available for this provider.`}):(0,q.jsx)(u,{children:(0,q.jsx)(Z,{models:r,enabledIds:n,checkboxIdPrefix:``,showIntelligence:E===`coding-index`||E===`intelligence-by-price`,getModelDisplayName:j,onToggleModel:t=>void M(e.slug,t)})})},e.slug)})}),(0,q.jsx)(w,{value:`image`,className:`mt-0 flex flex-col gap-2.5`,children:f===`image`?(0,q.jsx)(H.Suspense,{fallback:(0,q.jsx)(J,{}),children:(0,q.jsx)(ye,{providers:r,globalSearchQuery:g,modelSortBy:E,filterAndSortModels:R,getModelDisplayName:j,onSaveStatus:e=>{A(e),e.includes(`Failed`)||setTimeout(()=>A(``),3e3)}})}):null})]})})}function $(){let e=(0,U.c)(8),[t,n]=(0,H.useState)(0),r;e[0]===t?r=e[1]:(r=function(){v(W(t)),n(Se)},e[0]=t,e[1]=r);let i=r,a;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(J,{label:`Loading models...`,large:!0}),e[2]=a):a=e[2];let o;e[3]===t?o=e[4]:(o=(0,q.jsx)(H.Suspense,{fallback:a,children:(0,q.jsx)(be,{loadVersion:t},t)}),e[3]=t,e[4]=o);let s;return e[5]!==i||e[6]!==o?(s=(0,q.jsx)(`div`,{className:`h-full min-h-0`,children:(0,q.jsx)(R,{fallbackTitle:`Failed to load models`,onRetry:i,renderFallback:xe,children:o})}),e[5]=i,e[6]=o,e[7]=s):s=e[7],s}function xe(e,t){return(0,q.jsx)(b,{title:`Failed to load models`,action:(0,q.jsx)(l,{variant:`outline`,onClick:t,children:`Retry`}),children:e.message})}function Se(e){return e+1}export{$ as SettingsModelsView,$ as default};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/settings-skills-view-Dl38QbWw.js","assets/rolldown-runtime-aKtaBQYM.js","assets/index-DdJcjvu2.js","assets/react-vendor-Ee0-5T4I.js","assets/progress-indicator-C7Kj9U3t.js","assets/utils-BCj_kT9l.js","assets/dist-DZtmmQ-F.js","assets/alert-dialog-DTxl_mXc.js","assets/button-DhxraVUW.js","assets/use-browser-overlay-block-DyprQSIG.js","assets/browser-overlay-block-CiDtkfup.js","assets/dist-iDwSbcD5.js","assets/dist-BkOEUrQf.js","assets/es2015-B0KHrBGH.js","assets/scroll-area-BQ9bdsVQ.js","assets/dist-OixawqbU.js","assets/tooltip-Cg_EhO9M.js","assets/dist-CA_zFhwJ.js","assets/use-toast-xpb5jNtN.js","assets/chat-dock-context-DhO-jYMh.js","assets/api-B_ZIptgC.js","assets/store-D4D62vkY.js","assets/explorer-tab-context-BxUVwWQQ.js","assets/main-tab-context-CNgxXqnH.js","assets/terminal-output-activity-B1bjjsl7.js","assets/suspense-resource-DzlMlIgR.js","assets/dist-Dj1qT-gv.js","assets/dist-aB1qUwWW.js","assets/dist-Bihbg_hO.js","assets/dist-BZmr2Qex.js","assets/dist-CSssbxDI.js","assets/useBaseQuery-ChJtNS_3.js","assets/lucide-react-CNNzKD4G.js","assets/chunk-QFMPRPBF-COsSkB7x.js","assets/index-B3oaBks2.css","assets/delete-confirm-dialog-Ciwqi6ts.js","assets/slug-utils-Ccbyp4Mu.js","assets/settings-list-n-CrPPNl.js","assets/card-DZy9jCWQ.js","assets/use-deferred-search-Dgxosq55.js","assets/use-installed-ai-files-BtR-wIuu.js","assets/use-settings-page-loading-CpaBd260.js","assets/settings-mcp-servers-view-kTpnzhrf.js","assets/settings-system-prompt-view-KlPFbkat.js","assets/project-tools-view-0j2uWvRy.js","assets/settings-slash-commands-view-CSm-ZqwM.js","assets/settings-subagents-view-Be7aa0Va.js"])))=>i.map(i=>d[i]);
2
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,r,t as i}from"./react-vendor-Ee0-5T4I.js";import{o as a,s as o}from"./chunk-QFMPRPBF-COsSkB7x.js";import{dt as s,ut as c}from"./dist-DZtmmQ-F.js";import{t as l}from"./progress-indicator-C7Kj9U3t.js";import{t as u}from"./settings-tab-bar-BJtpuIky.js";var d=t(),f=e(n(),1),p=i(),m=(0,f.lazy)(function(){return r(()=>import(`./settings-skills-view-Dl38QbWw.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]))}),h=(0,f.lazy)(function(){return r(()=>import(`./settings-mcp-servers-view-kTpnzhrf.js`),__vite__mapDeps([42,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,37,38,41]))}),g=(0,f.lazy)(function(){return r(()=>import(`./settings-system-prompt-view-KlPFbkat.js`),__vite__mapDeps([43,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,41]))}),_=(0,f.lazy)(function(){return r(()=>import(`./project-tools-view-0j2uWvRy.js`),__vite__mapDeps([44,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,41]))}),v=(0,f.lazy)(function(){return r(()=>import(`./settings-slash-commands-view-CSm-ZqwM.js`),__vite__mapDeps([45,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,41]))}),y=(0,f.lazy)(function(){return r(()=>import(`./settings-subagents-view-Be7aa0Va.js`),__vite__mapDeps([46,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,40,41]))});function b(e){let t=(0,d.c)(35),{projectId:n,fallbackTab:r,onProjectUpdated:i}=e,b=r===void 0?`skills`:r,x=a(),S=o(),C;t[0]!==b||t[1]!==x?(C=b===`skills`?s(x.pathname)??b:b,t[0]=b,t[1]=x,t[2]=C):C=t[2];let w=C,T;t[3]!==S||t[4]!==n?(T=function(e){if(n){S(`/settings/project/${n}/plugins/${e}`);return}S(`/settings/plugins/${e}`)},t[3]=S,t[4]=n,t[5]=T):T=t[5];let E=T,D;t[6]!==w||t[7]!==E?(D=(0,p.jsx)(u,{value:w,onValueChange:E,options:c}),t[6]=w,t[7]=E,t[8]=D):D=t[8];let O;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,p.jsx)(l,{centered:!0,label:`Loading plugin settings...`}),t[9]=O):O=t[9];let k;t[10]!==w||t[11]!==x?(k=w===`skills`&&(0,p.jsx)(m,{},x.key),t[10]=w,t[11]=x,t[12]=k):k=t[12];let A;t[13]===w?A=t[14]:(A=w===`mcp-servers`&&(0,p.jsx)(h,{}),t[13]=w,t[14]=A);let j;t[15]===w?j=t[16]:(j=w===`system-prompt`&&(0,p.jsx)(g,{}),t[15]=w,t[16]=j);let M;t[17]!==w||t[18]!==i||t[19]!==n?(M=w===`tools`&&(0,p.jsx)(_,{projectId:n,onProjectUpdated:i}),t[17]=w,t[18]=i,t[19]=n,t[20]=M):M=t[20];let N;t[21]===w?N=t[22]:(N=w===`slash-commands`&&(0,p.jsx)(v,{}),t[21]=w,t[22]=N);let P;t[23]===w?P=t[24]:(P=w===`subagents`&&(0,p.jsx)(y,{}),t[23]=w,t[24]=P);let F;t[25]!==N||t[26]!==P||t[27]!==k||t[28]!==A||t[29]!==j||t[30]!==M?(F=(0,p.jsx)(`div`,{className:`min-h-0 flex-1`,role:`region`,"aria-label":`Plugin settings`,children:(0,p.jsxs)(f.Suspense,{fallback:O,children:[k,A,j,M,N,P]})}),t[25]=N,t[26]=P,t[27]=k,t[28]=A,t[29]=j,t[30]=M,t[31]=F):F=t[31];let I;return t[32]!==F||t[33]!==D?(I=(0,p.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[D,F]}),t[32]=F,t[33]=D,t[34]=I):I=t[34],I}export{b as default};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/providers-list-view-4pcZxBFJ.js","assets/rolldown-runtime-aKtaBQYM.js","assets/index-DdJcjvu2.js","assets/react-vendor-Ee0-5T4I.js","assets/progress-indicator-C7Kj9U3t.js","assets/utils-BCj_kT9l.js","assets/dist-DZtmmQ-F.js","assets/alert-dialog-DTxl_mXc.js","assets/button-DhxraVUW.js","assets/use-browser-overlay-block-DyprQSIG.js","assets/browser-overlay-block-CiDtkfup.js","assets/dist-iDwSbcD5.js","assets/dist-BkOEUrQf.js","assets/es2015-B0KHrBGH.js","assets/scroll-area-BQ9bdsVQ.js","assets/dist-OixawqbU.js","assets/tooltip-Cg_EhO9M.js","assets/dist-CA_zFhwJ.js","assets/use-toast-xpb5jNtN.js","assets/chat-dock-context-DhO-jYMh.js","assets/api-B_ZIptgC.js","assets/store-D4D62vkY.js","assets/explorer-tab-context-BxUVwWQQ.js","assets/main-tab-context-CNgxXqnH.js","assets/terminal-output-activity-B1bjjsl7.js","assets/suspense-resource-DzlMlIgR.js","assets/dist-Dj1qT-gv.js","assets/dist-aB1qUwWW.js","assets/dist-Bihbg_hO.js","assets/dist-BZmr2Qex.js","assets/dist-CSssbxDI.js","assets/useBaseQuery-ChJtNS_3.js","assets/lucide-react-CNNzKD4G.js","assets/chunk-QFMPRPBF-COsSkB7x.js","assets/index-B3oaBks2.css","assets/model-list-controls-DOpHpzG8.js","assets/sorting-DqwxPMRN.js","assets/async-error-boundary-DmJy8jgz.js","assets/card-DZy9jCWQ.js","assets/settings-list-n-CrPPNl.js","assets/use-deferred-search-Dgxosq55.js","assets/pending-changes-Bn-0ak1d.js","assets/settings-models-view-RmIvRn-i.js","assets/commit-method-fields-C7Du43jy.js","assets/toggle-group-Dl5P_F6a.js","assets/table-DCmeRDBK.js","assets/project-model-aliases-view-D_pamHsA.js","assets/use-settings-page-loading-CpaBd260.js"])))=>i.map(i=>d[i]);
2
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,r,t as i}from"./react-vendor-Ee0-5T4I.js";import{o as a,s as o}from"./chunk-QFMPRPBF-COsSkB7x.js";import{gt as s,ht as c}from"./dist-DZtmmQ-F.js";import{t as l}from"./progress-indicator-C7Kj9U3t.js";import{t as u}from"./settings-tab-bar-BJtpuIky.js";var d=t(),f=e(n(),1),p=i(),m=(0,f.lazy)(function(){return r(()=>import(`./providers-list-view-4pcZxBFJ.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]))}),h=(0,f.lazy)(function(){return r(()=>import(`./settings-models-view-RmIvRn-i.js`),__vite__mapDeps([42,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,43,44,35,36,37,38,39,45,40]))}),g=(0,f.lazy)(function(){return r(()=>import(`./project-model-aliases-view-D_pamHsA.js`),__vite__mapDeps([46,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,45,47]))});function _(e){let t=(0,d.c)(22),{fallbackTab:n}=e,r=n===void 0?`providers`:n,i=a(),_=o(),v;t[0]!==r||t[1]!==i?(v=r===`providers`?s(i.pathname)??r:r,t[0]=r,t[1]=i,t[2]=v):v=t[2];let y=v,b;t[3]===_?b=t[4]:(b=function(e){_(`/settings/${e}`)},t[3]=_,t[4]=b);let x=b,S;t[5]!==y||t[6]!==x?(S=(0,p.jsx)(u,{value:y,onValueChange:x,options:c}),t[5]=y,t[6]=x,t[7]=S):S=t[7];let C;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,p.jsx)(l,{centered:!0,label:`Loading provider settings...`}),t[8]=C):C=t[8];let w;t[9]===y?w=t[10]:(w=y===`providers`&&(0,p.jsx)(m,{}),t[9]=y,t[10]=w);let T;t[11]===y?T=t[12]:(T=y===`models`&&(0,p.jsx)(h,{}),t[11]=y,t[12]=T);let E;t[13]===y?E=t[14]:(E=y===`model-aliases`&&(0,p.jsx)(g,{}),t[13]=y,t[14]=E);let D;t[15]!==w||t[16]!==T||t[17]!==E?(D=(0,p.jsx)(`div`,{className:`min-h-0 flex-1`,role:`region`,"aria-label":`Provider settings`,children:(0,p.jsxs)(f.Suspense,{fallback:C,children:[w,T,E]})}),t[15]=w,t[16]=T,t[17]=E,t[18]=D):D=t[18];let O;return t[19]!==S||t[20]!==D?(O=(0,p.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[S,D]}),t[19]=S,t[20]=D,t[21]=O):O=t[21],O}export{_ as default};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/project-coding-view-CrOGfL2D.js","assets/rolldown-runtime-aKtaBQYM.js","assets/index-DdJcjvu2.js","assets/react-vendor-Ee0-5T4I.js","assets/progress-indicator-C7Kj9U3t.js","assets/utils-BCj_kT9l.js","assets/dist-DZtmmQ-F.js","assets/alert-dialog-DTxl_mXc.js","assets/button-DhxraVUW.js","assets/use-browser-overlay-block-DyprQSIG.js","assets/browser-overlay-block-CiDtkfup.js","assets/dist-iDwSbcD5.js","assets/dist-BkOEUrQf.js","assets/es2015-B0KHrBGH.js","assets/scroll-area-BQ9bdsVQ.js","assets/dist-OixawqbU.js","assets/tooltip-Cg_EhO9M.js","assets/dist-CA_zFhwJ.js","assets/use-toast-xpb5jNtN.js","assets/chat-dock-context-DhO-jYMh.js","assets/api-B_ZIptgC.js","assets/store-D4D62vkY.js","assets/explorer-tab-context-BxUVwWQQ.js","assets/main-tab-context-CNgxXqnH.js","assets/terminal-output-activity-B1bjjsl7.js","assets/suspense-resource-DzlMlIgR.js","assets/dist-Dj1qT-gv.js","assets/dist-aB1qUwWW.js","assets/dist-Bihbg_hO.js","assets/dist-BZmr2Qex.js","assets/dist-CSssbxDI.js","assets/useBaseQuery-ChJtNS_3.js","assets/lucide-react-CNNzKD4G.js","assets/chunk-QFMPRPBF-COsSkB7x.js","assets/index-B3oaBks2.css","assets/commit-method-fields-C7Du43jy.js","assets/toggle-group-Dl5P_F6a.js","assets/use-settings-page-loading-CpaBd260.js"])))=>i.map(i=>d[i]);
2
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,r,t as i}from"./react-vendor-Ee0-5T4I.js";import{o as a,s as o}from"./chunk-QFMPRPBF-COsSkB7x.js";import{ct as s,lt as c}from"./dist-DZtmmQ-F.js";import{n as l,r as u,tt as d}from"./store-D4D62vkY.js";import{t as f}from"./progress-indicator-C7Kj9U3t.js";import{Ct as p,Pt as m,jt as h,z as g}from"./index-DdJcjvu2.js";import{t as _}from"./settings-tab-bar-BJtpuIky.js";var v=e(n(),1),y=t(),b=i();function x(e){let t=(0,y.c)(9),{projectId:n}=e,r=l(),i;t[0]===n?i=t[1]:(i=function(e){return e.projects.find(e=>e.projectId===n)?.commands??[]},t[0]=n,t[1]=i);let a=u(i),o;t[2]===r?o=t[3]:(o=function(){r({type:d.ConfigUpdated})},t[2]=r,t[3]=o);let s=o,c;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,b.jsx)(p,{title:`Project Commands`,description:`Create and manage reusable commands for this project.`}),t[4]=c):c=t[4];let f;return t[5]!==a||t[6]!==s||t[7]!==n?(f=(0,b.jsx)(m,{className:`shrink-0`,children:(0,b.jsxs)(h,{children:[c,(0,b.jsx)(g,{embedded:!0,open:!0,projectId:n,commands:a,onRefresh:s})]})}),t[5]=a,t[6]=s,t[7]=n,t[8]=f):f=t[8],f}var S=(0,v.lazy)(function(){return r(()=>import(`./project-coding-view-CrOGfL2D.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]))});function C(e){let t=(0,y.c)(21),{projectId:n}=e,r=a(),i=o(),l;t[0]===r.pathname?l=t[1]:(l=c(r.pathname)??`setup`,t[0]=r.pathname,t[1]=l);let u=l,d;t[2]!==i||t[3]!==n?(d=function(e){i(e===`setup`?`/settings/project/${n}/coding`:`/settings/project/${n}/coding/${e}`)},t[2]=i,t[3]=n,t[4]=d):d=t[4];let p=d,m;t[5]!==u||t[6]!==p?(m=(0,b.jsx)(_,{value:u,onValueChange:p,options:s}),t[5]=u,t[6]=p,t[7]=m):m=t[7];let h;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,b.jsx)(f,{centered:!0,label:`Loading project setup...`}),t[8]=h):h=t[8];let g;t[9]!==u||t[10]!==n?(g=u===`setup`&&(0,b.jsx)(S,{projectId:n}),t[9]=u,t[10]=n,t[11]=g):g=t[11];let C;t[12]!==u||t[13]!==n?(C=u===`commands`&&(0,b.jsx)(x,{projectId:n}),t[12]=u,t[13]=n,t[14]=C):C=t[14];let w;t[15]!==g||t[16]!==C?(w=(0,b.jsx)(`div`,{className:`min-h-0 flex-1`,role:`region`,"aria-label":`Project setup`,children:(0,b.jsxs)(v.Suspense,{fallback:h,children:[g,C]})}),t[15]=g,t[16]=C,t[17]=w):w=t[17];let T;return t[18]!==m||t[19]!==w?(T=(0,b.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[m,w]}),t[18]=m,t[19]=w,t[20]=T):T=t[20],T}export{C as default};
@@ -0,0 +1,2 @@
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{B as i,Lt as a,in as o}from"./dist-DZtmmQ-F.js";import{r as s}from"./store-D4D62vkY.js";import{t as c,u as l}from"./utils-BCj_kT9l.js";import{B as u,Jt as d,L as f,U as p,W as m,Zt as h,a as g,dt as _,hn as v,ht as y,jt as b}from"./lucide-react-CNNzKD4G.js";import{t as x}from"./button-DhxraVUW.js";import{i as S,n as C,r as w,t as T}from"./tooltip-Cg_EhO9M.js";import{$t as E,Ei as D,In as O,Pn as k,T as A,Wi as j,_r as M,ar as N,di as P,dr as F,fi as I,fr as ee,gr as te,ki as ne,kn as re,lr as ie,mr as L,or as ae,pr as oe,qi as se,sr as ce,yi as le}from"./api-B_ZIptgC.js";import{t as ue}from"./progress-indicator-C7Kj9U3t.js";import{a as de,c as fe,i as pe,n as me,o as he,r as ge,s as _e,t as ve}from"./alert-dialog-DTxl_mXc.js";import{t as R}from"./use-toast-xpb5jNtN.js";import{At as ye,B as be,Bt as xe,Cr as z,Ct as B,Dr as V,Dt as Se,Er as H,Ft as Ce,It as we,Lt as U,Nt as Te,Or as Ee,Pt as W,Sr as G,St as De,Tr as Oe,_r as ke,a as Ae,bt as K,fr as je,hr as q,ir as Me,jt as J,kr as Y,mr as Ne,wr as Pe,xr as Fe,yt as Ie,zn as Le,zt as Re}from"./index-DdJcjvu2.js";import{t as ze}from"./delete-confirm-dialog-Ciwqi6ts.js";import{t as Be}from"./use-settings-page-loading-CpaBd260.js";import{a as X,o as Ve,r as He}from"./settings-list-n-CrPPNl.js";import{t as Ue}from"./use-deferred-search-Dgxosq55.js";import{i as We,n as Ge,r as Ke,t as qe}from"./use-installed-ai-files-BtR-wIuu.js";import{i as Je,n as Ye,r as Xe,t as Ze}from"./slug-utils-Ccbyp4Mu.js";var Z=t(),Q=e(n(),1);function Qe(){let e=(0,Z.c)(10),[t,n]=(0,Q.useState)(!1),[r,i]=(0,Q.useState)(!1),[a,o]=(0,Q.useState)(!1),[s,c]=(0,Q.useState)(null),[l,u]=(0,Q.useState)(null),[d,f]=(0,Q.useState)(null),[p,m]=(0,Q.useState)(!1),h;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=function(e){f(e),m(!0)},e[0]=h):h=e[0];let g=h,_;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(_=function(e){e||u(null)},e[1]=_):_=e[1];let v=_,y;return e[2]!==d||e[3]!==s||e[4]!==l||e[5]!==t||e[6]!==a||e[7]!==p||e[8]!==r?(y={showAddDialog:t,setShowAddDialog:n,showUrlDialog:r,setShowUrlDialog:i,showAddSourceDialog:a,setShowAddSourceDialog:o,pluginImportUrl:s,setPluginImportUrl:c,previewSkill:l,setPreviewSkill:u,invocationSkill:d,showInvocationDialog:p,setShowInvocationDialog:m,openInvocationDialog:g,handlePreviewDialogOpenChange:v},e[2]=d,e[3]=s,e[4]=l,e[5]=t,e[6]=a,e[7]=p,e[8]=r,e[9]=y):y=e[9],y}var $=r();function $e({threadId:e,onSkillCreated:t}){let[n,r]=(0,Q.useState)(``),[i,o]=(0,Q.useState)(``),[s,l]=(0,Q.useState)(!1),u=Xe(n),d=Ye(u),f=async()=>{if(!(!d||!i.trim()||!e)){l(!0);try{let n=await A(e,u,i.trim());R({title:`Skill created`,description:`Skill '${u}' was created successfully.`}),r(``),o(``),t?.(n.path,`SKILL.md`)}catch(e){R({title:`Error`,description:e instanceof Error?e.message:`Failed to create skill`,variant:`destructive`})}finally{l(!1)}}};return e?(0,$.jsx)(Te,{children:(0,$.jsxs)(Ie,{children:[(0,$.jsx)(B,{title:`Add Skill`,description:`Saved as SKILL.md in .agents/skills.`,sticky:!0,className:`pr-10`}),(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(K,{title:`Skill Name`,controlLayout:`stack`,className:`pt-6`,children:[(0,$.jsx)(z,{id:`skillName`,value:n,onChange:e=>r(e.target.value),placeholder:`e.g. Code Review`,disabled:s}),n?(0,$.jsxs)(`p`,{className:c(a.caption,`mt-2`),children:[`Folder name: `,(0,$.jsx)(`span`,{className:`font-mono`,children:u||`...`})]}):null]}),(0,$.jsx)(K,{title:`Description`,controlLayout:`stack`,className:`pt-6`,children:(0,$.jsx)(be,{id:`skillDescription`,value:i,onChange:e=>o(e.target.value),placeholder:`Describe when Tarsk should apply this skill`,className:`resize-none min-h-[120px]`,disabled:s})}),(0,$.jsx)(Je,{onContinue:()=>void f(),disabled:!d||!i.trim(),creating:s})]})]})}):(0,$.jsx)(ye,{title:`No thread selected`,children:`Please select a thread to add a skill.`})}var et=`.agents/skills`;function tt(e){return`${et}/${e}`}function nt(e){return`${tt(e)}/SKILL.md`}function rt(e,t){let n=t.trim();if(!n)return e;let r=n.toLowerCase();return e.filter(e=>e.name.toLowerCase().includes(r)||e.description.toLowerCase().includes(r))}function it(e){let t=[`---`,`name: ${e.id}`,`description: ${e.description}`];return e.allowedTools&&t.push(`allowed-tools: ${e.allowedTools}`),e.license&&t.push(`license: ${e.license}`),t.push(`---`,``,e.instructions??``),t.join(`
2
+ `)}function at(e,t,n){return rt(e,t).filter(e=>!n.has(nt(e.id)))}function ot(e){return e.endsWith(`.md`)||e.endsWith(`.mdx`)}function st(e){return e.includes(`SKILL.md`)?`SKILL.md`:e[0]??`SKILL.md`}function ct(e,t){let n=e?.sourceId??t;if(!(!n||n==="default"))return n}function lt(e,t,n){let[r,i]=(0,Q.useState)([]),[a,o]=(0,Q.useState)(null),[s,c]=(0,Q.useState)(``),[l,u]=(0,Q.useState)(!1),[d,f]=(0,Q.useState)(!1),[p,m]=(0,Q.useState)(null),h=ct(t,n),g=!!h;return(0,Q.useEffect)(()=>{if(!e||!t)return;let r=t,a=ct(r,n),s=!1;async function l(){u(!0),m(null),i([]),o(null),c(``);try{if(a){let e=await ce(a,r.id);if(s)return;i(e.files),o(st(e.files))}else{if(s)return;i([`SKILL.md`]),o(`SKILL.md`),c(it(r))}}catch(e){if(s)return;m(e instanceof Error?e.message:`Failed to load skill files`)}finally{s||u(!1)}}return l(),()=>{s=!0}},[e,t,n]),(0,Q.useEffect)(()=>{if(!e||!t||!a||!g||!h)return;let n=t,r=a,i=!1;async function o(){f(!0),m(null);try{let e=await ae(h,n.id,r);if(i)return;c(e.content)}catch(e){if(i)return;m(e instanceof Error?e.message:`Failed to load file`),c(``)}finally{i||f(!1)}}return o(),()=>{i=!0}},[e,t,a,g,h]),{files:r,selectedFile:a,setSelectedFile:o,fileContent:s,loadingFiles:l,contentLoading:l||g&&d,loadError:p,isCatalogSkill:g,effectiveSourceId:h}}function ut({open:e,onOpenChange:t,skill:n,catalogSourceId:r,onInstall:i}){let[o,s]=(0,Q.useState)(!1),{files:l,selectedFile:u,setSelectedFile:d,fileContent:f,loadingFiles:p,contentLoading:m,loadError:h,effectiveSourceId:g}=lt(e,n,r),_=(0,Q.useCallback)(async()=>{if(!n)return;let e=g?{...n,sourceId:g}:n;s(!0);try{await i(e),t(!1)}finally{s(!1)}},[n,g,i,t]),v=u?ot(u):!1,y=(0,Q.useMemo)(()=>l.map(e=>(0,$.jsxs)(Me,{selected:e===u,onClick:()=>d(e),className:`gap-2 cursor-pointer`,children:[(0,$.jsx)(b,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,$.jsx)(`span`,{className:c(a.caption,`truncate`),children:e})]},e)),[l,u]);return(0,$.jsx)(Pe,{open:e,onOpenChange:t,children:(0,$.jsxs)(Oe,{className:`flex max-h-[90vh] max-w-5xl flex-col gap-0 overflow-hidden p-0`,children:[(0,$.jsxs)(Ee,{className:`border-b border-border px-6 py-4`,children:[(0,$.jsx)(Y,{children:n?.name??`Review skill`}),n?.description?(0,$.jsx)(H,{children:n.description}):null]}),(0,$.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col sm:flex-row`,children:[(0,$.jsxs)(`div`,{className:`flex max-h-40 shrink-0 flex-col border-b border-border sm:max-h-none sm:w-56 sm:border-b-0 sm:border-r`,children:[(0,$.jsx)(`div`,{className:c(a.labelMuted,`px-3 py-2`),children:`Files`}),(0,$.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-1 pb-2`,children:p?(0,$.jsx)(ue,{centered:!0,containerClassName:`py-8`,label:`Loading files...`}):l.length===0?(0,$.jsx)(`p`,{className:c(a.caption,`px-3 py-2 text-muted-foreground`),children:`No files found.`}):y})]}),(0,$.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-6 py-4`,children:h?(0,$.jsx)(`p`,{className:c(a.body,`text-destructive`),children:h}):m?(0,$.jsx)(ue,{centered:!0,containerClassName:`py-12`,label:`Loading preview...`}):v?(0,$.jsx)(Le,{content:f,enableMermaid:!1}):(0,$.jsx)(`pre`,{className:c(a.caption,`overflow-x-auto whitespace-pre-wrap font-mono`),children:f})})]}),(0,$.jsxs)(V,{className:`border-t border-border px-6 py-4 sm:justify-between`,children:[(0,$.jsx)(x,{type:`button`,variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,$.jsx)(x,{type:`button`,onClick:()=>void _(),disabled:o||!n,children:o?`Installing...`:`Install`})]})]})})}var dt=`skills:popular`;function ft(e){return e.map(e=>`${e.id}~${e.name}~${e.description}`).join(`|`)}function pt(){let e=(0,Z.c)(5),[t,n]=(0,Q.useState)(gt),[r,i]=(0,Q.useState)(ht),a,o;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=()=>{ie().then(e=>{We(dt,e),n(t=>ft(t)===ft(e)?t:e)}).catch(mt).finally(()=>i(!1))},o=[],e[0]=a,e[1]=o):(a=e[0],o=e[1]),(0,Q.useEffect)(a,o);let s;return e[2]!==r||e[3]!==t?(s={popularSkills:t,loadingPopularSkills:r},e[2]=r,e[3]=t,e[4]=s):s=e[4],s}function mt(){}function ht(){return!Ge(dt)}function gt(){return Ke(dt)??[]}var _t=new Map;function vt(e){let t=_t.get(e);if(t)return t;let n=F(e).finally(()=>{_t.delete(e)});return _t.set(e,n),n}function yt(e,t){return t.map(t=>({...t,sourceId:t.sourceId??e}))}function bt(){let e=(0,Z.c)(18),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0];let[n,r]=(0,Q.useState)(t),[i,a]=(0,Q.useState)(D),o;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(o=[],e[1]=o):o=e[1];let[s,c]=(0,Q.useState)(o),[l,u]=(0,Q.useState)(!1),[d,f]=(0,Q.useState)(!1),p;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(p=async()=>{try{r(await ee())}catch{r([])}},e[2]=p):p=e[2];let m=p,h,g;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>{(async function(){let e=le();if(e.length>0)try{await oe(e),P()}catch{}await m()})()},g=[m],e[3]=h,e[4]=g):(h=e[3],g=e[4]),(0,Q.useEffect)(h,g);let _;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(_=e=>{a(e),j(e)},e[5]=_):_=e[5];let v=_,y;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(y=e=>{r(t=>[...t.filter(t=>t.id!==e.id),e].sort(St)),v(e.id)},e[6]=y):y=e[6];let b=y,x;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(x=e=>{r(t=>t.map(t=>t.id===e.id?e:t).sort(xt)),I(e.id)},e[7]=x):x=e[7];let S=x,C;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(C=e=>{r(t=>t.filter(t=>t.id!==e)),I(e),a(t=>t===e?(j(`default`),`default`):t)},e[8]=C):C=e[8];let w=C,T,E;e[9]===i?(T=e[10],E=e[11]):(E=()=>{if(i==="default"){c([]),u(!1),f(!1);return}let e=ne(i);e?.skills?(c(yt(i,e.skills)),u(!1)):(c([]),u(!0));let t=!1;return f(!!e?.skills),vt(i).then(e=>{if(t)return;let n=yt(i,e);c(n),se(i,{fetchedAt:Date.now(),skills:n})}).catch(n=>{t||(e?.skills||c([]),R({title:`Error`,description:n instanceof Error?n.message:`Failed to load skill catalog`,variant:`destructive`}))}).finally(()=>{t||(u(!1),f(!1))}),()=>{t=!0}},T=[i],e[9]=i,e[10]=T,e[11]=E),(0,Q.useEffect)(E,T);let O;return e[12]!==s||e[13]!==l||e[14]!==d||e[15]!==i||e[16]!==n?(O={sources:n,selectedSourceId:i,setSelectedSourceId:v,addSource:b,updateSource:S,removeSource:w,reloadSources:m,catalogSkills:s,isLoadingCatalog:l,isRefreshingCatalog:d},e[12]=s,e[13]=l,e[14]=d,e[15]=i,e[16]=n,e[17]=O):O=e[17],O}function xt(e,t){return e.title.localeCompare(t.title)}function St(e,t){return e.title.localeCompare(t.title)}function Ct(e){let t=(0,Z.c)(26),{popularSkills:n,loadingPopularSkills:r}=pt(),{sources:a,selectedSourceId:o,setSelectedSourceId:s,addSource:c,updateSource:l,removeSource:u,catalogSkills:d,isLoadingCatalog:f}=bt(),{query:p,setQuery:m,deferredQuery:h}=Ue(),g=o==="default",_;t[0]!==o||t[1]!==a?(_=i(o)?a.find(e=>e.id===o)??null:null,t[0]=o,t[1]=a,t[2]=_):_=t[2];let v=_,y=!g&&f&&d.length===0,b;t[3]!==h||t[4]!==e||t[5]!==n?(b=at(n,h,e),t[3]=h,t[4]=e,t[5]=n,t[6]=b):b=t[6];let x=b,S;t[7]!==d||t[8]!==h||t[9]!==e?(S=at(d,h,e),t[7]=d,t[8]=h,t[9]=e,t[10]=S):S=t[10];let C=S,w;return t[11]!==c||t[12]!==C||t[13]!==y||t[14]!==x||t[15]!==p||t[16]!==g||t[17]!==r||t[18]!==u||t[19]!==v||t[20]!==o||t[21]!==m||t[22]!==s||t[23]!==a||t[24]!==l?(w={availableSearch:p,setAvailableSearch:m,availablePopular:x,availableCatalog:C,availableCatalogLoading:y,isDefaultSource:g,selectedCustomSource:v,sources:a,selectedSourceId:o,setSelectedSourceId:s,addSource:c,updateSource:l,removeSource:u,loadingPopularSkills:r},t[11]=c,t[12]=C,t[13]=y,t[14]=x,t[15]=p,t[16]=g,t[17]=r,t[18]=u,t[19]=v,t[20]=o,t[21]=m,t[22]=s,t[23]=a,t[24]=l,t[25]=w):w=t[25],w}function wt({open:e,onOpenChange:t,editingSource:n,onSourceAdded:r,onSourceUpdated:i,onSourceDeleted:o}){let[s,l]=(0,Q.useState)(``),[u,d]=(0,Q.useState)(``),[f,p]=(0,Q.useState)(null),[m,h]=(0,Q.useState)(!1),[g,v]=(0,Q.useState)(!1),[y,b]=(0,Q.useState)(!1),S=n!=null;function C(){l(``),d(``),p(null),h(!1),v(!1),b(!1)}function w(e){e||C(),t(e)}(0,Q.useEffect)(()=>{if(e){if(n){l(n.title),d(n.url),p(null);return}l(``),d(``),p(null)}},[e,n]);async function T(){let e=s.trim(),t=u.trim();if(!e||!t){p(`Title and URL are required.`);return}h(!0),p(null);try{if(S&&n){let r=await te(n.id,e,t);i?.(r.source)}else r((await M(e,t)).source);w(!1)}catch(e){p(e instanceof Error?e.message:`Failed to verify skill source`)}finally{h(!1)}}async function E(){if(n){v(!0),p(null);try{await N(n.id),o?.(n.id),b(!1),w(!1)}catch(e){p(e instanceof Error?e.message:`Failed to delete skill source`),b(!1)}finally{v(!1)}}}return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Pe,{open:e,onOpenChange:w,children:(0,$.jsxs)(Oe,{className:`sm:max-w-lg`,children:[(0,$.jsxs)(Ee,{children:[(0,$.jsx)(Y,{children:S?`Edit Skill Source`:`Add Skill Source`}),(0,$.jsx)(H,{children:S?`Update the title or GitHub skills folder URL for this custom source.`:`Add a GitHub skills folder URL. The source is verified by loading at least one skill from the repository.`})]}),(0,$.jsxs)(`div`,{className:`grid gap-4 py-2`,children:[(0,$.jsxs)(`div`,{className:`grid gap-2`,children:[(0,$.jsx)(G,{htmlFor:`skill-source-title`,children:`Title`}),(0,$.jsx)(z,{id:`skill-source-title`,placeholder:`e.g. My Team Skills`,value:s,onChange:e=>l(e.target.value),disabled:m||g,autoFocus:!0})]}),(0,$.jsxs)(`div`,{className:`grid gap-2`,children:[(0,$.jsx)(G,{htmlFor:`skill-source-url`,children:`URL`}),(0,$.jsx)(z,{id:`skill-source-url`,placeholder:`https://github.com/org/repo or .../tree/main/skills`,value:u,onChange:e=>d(e.target.value),disabled:m||g})]}),f?(0,$.jsx)(`p`,{className:c(a.caption,`text-destructive`),children:f}):null]}),(0,$.jsxs)(V,{className:`flex-col-reverse gap-2 sm:flex-row sm:justify-between`,children:[S?(0,$.jsx)(x,{type:`button`,variant:`destructive`,onClick:()=>b(!0),disabled:m||g,children:`Delete`}):(0,$.jsx)(`div`,{className:`hidden sm:block`}),(0,$.jsxs)(`div`,{className:`flex w-full flex-col-reverse gap-2 sm:w-auto sm:flex-row`,children:[(0,$.jsx)(x,{variant:`outline`,onClick:()=>w(!1),disabled:m||g,children:`Cancel`}),(0,$.jsx)(x,{onClick:()=>void T(),disabled:m||g||!s.trim()||!u.trim(),children:m?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(_,{className:`mr-2 h-4 w-4 animate-spin`}),`Verifying...`]}):S?`Save Changes`:`Add Source`})]})]})]})}),(0,$.jsx)(ve,{open:y,onOpenChange:b,children:(0,$.jsxs)(pe,{children:[(0,$.jsxs)(_e,{children:[(0,$.jsx)(fe,{children:`Delete Skill Source`}),(0,$.jsxs)(de,{children:[`Are you sure you want to delete "`,n?.title,`"? This removes the source from your list but does not uninstall skills you already added.`]})]}),(0,$.jsxs)(he,{children:[(0,$.jsx)(ge,{disabled:g,children:`Cancel`}),(0,$.jsx)(me,{onClick:()=>void E(),disabled:g,className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:g?`Deleting...`:`Delete`})]})]})})]})}var Tt=`https://tarsk.io/skills/list/`;function Et(e){let t=(0,Z.c)(20),{onSelectMode:n,manualDisabled:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,$.jsx)(Fe,{asChild:!0,children:(0,$.jsxs)(x,{className:`gap-1`,children:[`Add Skill`,(0,$.jsx)(v,{className:`h-4 w-4 opacity-70`})]})}),t[0]=i):i=t[0];let o;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(o=c(a.body,`gap-2`),t[1]=o):o=t[1];let s;t[2]===n?s=t[3]:(s=()=>n(`manual`),t[2]=n,t[3]=s);let l;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,$.jsx)(m,{className:`h-4 w-4 shrink-0`}),t[4]=l):l=t[4];let u;t[5]!==r||t[6]!==s?(u=(0,$.jsxs)(q,{className:o,disabled:r,onSelect:s,children:[l,`Manually Enter`]}),t[5]=r,t[6]=s,t[7]=u):u=t[7];let f;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(f=c(a.body,`gap-2`),t[8]=f):f=t[8];let p;t[9]===n?p=t[10]:(p=()=>n(`url`),t[9]=n,t[10]=p);let h;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,$.jsx)(y,{className:`h-4 w-4 shrink-0`}),t[11]=h):h=t[11];let g;t[12]===p?g=t[13]:(g=(0,$.jsxs)(q,{className:f,onSelect:p,children:[h,`Via URL`]}),t[12]=p,t[13]=g);let _;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,$.jsx)(ke,{}),t[14]=_):_=t[14];let b;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(b=c(a.body,`gap-2`),t[15]=b):b=t[15];let S;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,$.jsxs)(q,{className:b,onSelect:Dt,children:[(0,$.jsx)(d,{className:`h-4 w-4 shrink-0`}),`Marketplace`]}),t[16]=S):S=t[16];let C;return t[17]!==u||t[18]!==g?(C=(0,$.jsxs)(je,{children:[i,(0,$.jsxs)(Ne,{align:`end`,className:`w-44`,children:[u,g,_,S]})]}),t[17]=u,t[18]=g,t[19]=C):C=t[19],C}function Dt(){E(Tt)}function Ot(e){let t=e.trim();if(!t)return null;if(/^https?:\/\//i.test(t))try{return new URL(t),t}catch{return null}if(t.startsWith(`tarsk://`))try{let e=new URL(`https://tarsk.invalid/${t.slice(8)}`);if(e.pathname===`/skill-install`&&e.searchParams.get(`url`))return e.searchParams.get(`url`)}catch{return null}return null}function kt(e){let t=(0,Z.c)(40),{open:n,onOpenChange:r,onSubmit:i}=e,[o,s]=(0,Q.useState)(``),[l,u]=(0,Q.useState)(null),d;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(d=function(){s(``),u(null)},t[0]=d):d=t[0];let f=d,p;t[1]===r?p=t[2]:(p=function(e){e||f(),r(e)},t[1]=r,t[2]=p);let m=p,h,g;t[3]===n?(h=t[4],g=t[5]):(h=()=>{n&&f()},g=[n],t[3]=n,t[4]=h,t[5]=g),(0,Q.useEffect)(h,g);let _;t[6]!==m||t[7]!==i||t[8]!==o?(_=function(){let e=Ot(o);if(!e){u(`Enter a valid http(s) URL for the plugin archive or paste a tarsk:// install link.`);return}i(e),m(!1)},t[6]=m,t[7]=i,t[8]=o,t[9]=_):_=t[9];let v=_,y;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,$.jsxs)(Ee,{children:[(0,$.jsx)(Y,{children:`Add Skill via URL`}),(0,$.jsx)(H,{children:`Paste the URL of a plugin archive. Its skills and MCP servers are installed into this project.`})]}),t[10]=y):y=t[10];let b;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,$.jsx)(G,{htmlFor:`add-skill-url`,children:`URL`}),t[11]=b):b=t[11];let S;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(S=e=>s(e.target.value),t[12]=S):S=t[12];let C;t[13]===v?C=t[14]:(C=e=>{e.key===`Enter`&&(e.preventDefault(),v())},t[13]=v,t[14]=C);let w;t[15]!==C||t[16]!==o?(w=(0,$.jsx)(z,{id:`add-skill-url`,placeholder:`https://example.com/my-plugin.zip`,value:o,onChange:S,autoFocus:!0,onKeyDown:C}),t[15]=C,t[16]=o,t[17]=w):w=t[17];let T;t[18]===l?T=t[19]:(T=l?(0,$.jsx)(`p`,{className:c(a.caption,`text-destructive`),children:l}):null,t[18]=l,t[19]=T);let E;t[20]!==w||t[21]!==T?(E=(0,$.jsx)(`div`,{className:`grid gap-4 py-2`,children:(0,$.jsxs)(`div`,{className:`grid gap-2`,children:[b,w,T]})}),t[20]=w,t[21]=T,t[22]=E):E=t[22];let D;t[23]===m?D=t[24]:(D=(0,$.jsx)(x,{variant:`outline`,onClick:()=>m(!1),children:`Cancel`}),t[23]=m,t[24]=D);let O;t[25]===o?O=t[26]:(O=o.trim(),t[25]=o,t[26]=O);let k=!O,A;t[27]!==v||t[28]!==k?(A=(0,$.jsx)(x,{onClick:v,disabled:k,children:`Continue`}),t[27]=v,t[28]=k,t[29]=A):A=t[29];let j;t[30]!==D||t[31]!==A?(j=(0,$.jsxs)(V,{children:[D,A]}),t[30]=D,t[31]=A,t[32]=j):j=t[32];let M;t[33]!==E||t[34]!==j?(M=(0,$.jsxs)(Oe,{className:`sm:max-w-lg`,children:[y,E,j]}),t[33]=E,t[34]=j,t[35]=M):M=t[35];let N;return t[36]!==m||t[37]!==n||t[38]!==M?(N=(0,$.jsx)(Pe,{open:n,onOpenChange:m,children:M}),t[36]=m,t[37]=n,t[38]=M,t[39]=N):N=t[39],N}var At=`This skill uses no additional context as it is manually invoked`;function jt(e){return e.builtIn?`text-muted-foreground/50`:e.disableModelInvocation?`text-brand`:`text-foreground`}function Mt(e){return e.disableModelInvocation?At:`≈${o(e.description)} tokens of context`}function Nt(e){let t=(0,Z.c)(22),n,r,i,a,o,s;if(t[0]!==e){let{onClick:l,ariaLabel:u,...d}=e,p=(0,$.jsx)(f,{className:c(`h-4 w-4 shrink-0`,jt(d)),"aria-hidden":`true`});i=w,s=300,r=T,t[7]!==u||t[8]!==p||t[9]!==l?(o=(0,$.jsx)(S,{asChild:!0,children:l?(0,$.jsx)(`button`,{type:`button`,"aria-label":u,className:`shrink-0 cursor-pointer rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ring`,onClick:e=>{e.stopPropagation(),l()},onKeyDown:Pt,children:p}):p}),t[7]=u,t[8]=p,t[9]=l,t[10]=o):o=t[10],n=C,a=Mt(d),t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s}else n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6];let l;t[11]!==n||t[12]!==a?(l=(0,$.jsx)(n,{children:a}),t[11]=n,t[12]=a,t[13]=l):l=t[13];let u;t[14]!==r||t[15]!==o||t[16]!==l?(u=(0,$.jsxs)(r,{children:[o,l]}),t[14]=r,t[15]=o,t[16]=l,t[17]=u):u=t[17];let d;return t[18]!==i||t[19]!==s||t[20]!==u?(d=(0,$.jsx)(i,{delayDuration:s,children:u}),t[18]=i,t[19]=s,t[20]=u,t[21]=d):d=t[21],d}function Pt(e){(e.key===`Enter`||e.key===` `)&&e.stopPropagation()}function Ft(e){let t=[];for(let n of e){if(n.path===`.agents/skills`&&n.type===`folder`&&n.children)for(let e of n.children)e.type===`folder`&&t.push(e);n.children&&n.children.length>0&&t.push(...Ft(n.children))}return t}function It(e){return`${e.disableModelInvocation?`Enable`:`Disable`} model invocation for ${e.name}`}function Lt(e){let t=(0,Z.c)(7),{items:n,onPreview:r}=e,i;if(t[0]!==n||t[1]!==r){let e;t[3]===r?e=t[4]:(e=e=>{let t=Ze(e.name);return(0,$.jsxs)(`div`,{className:`group flex min-h-13 items-center gap-3 px-3 py-2`,role:`button`,tabIndex:0,onClick:()=>r(e),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),r(e))},children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`div`,{className:c(a.label,`truncate`),children:t}),(0,$.jsx)(`p`,{className:c(a.caption,`truncate`),children:e.description})]}),(0,$.jsx)(w,{delayDuration:300,children:(0,$.jsxs)(T,{children:[(0,$.jsx)(S,{asChild:!0,children:(0,$.jsx)(x,{type:`button`,variant:`ghost`,size:`icon-sm`,className:`shrink-0 opacity-0 pointer-events-none can-hover:group-hover:opacity-100 can-hover:group-hover:pointer-events-auto`,"aria-label":`Install ${t}`,onClick:t=>{t.stopPropagation(),r(e)},children:(0,$.jsx)(h,{className:`h-4 w-4`})})}),(0,$.jsx)(C,{children:`Install skill`})]})})]},e.id)},t[3]=r,t[4]=e),i=n.map(e),t[0]=n,t[1]=r,t[2]=i}else i=t[2];let o;return t[5]===i?o=t[6]:(o=(0,$.jsx)(`div`,{className:`divide-y divide-table-border`,children:i}),t[5]=i,t[6]=o),o}function Rt(e){let t=(0,Z.c)(24),{skills:n,threadId:r,onOpenSkill:i,onDelete:o,onAddManual:s,onAddUrl:l,onChangeModelInvocation:u}=e,d=!r,f;t[0]!==s||t[1]!==l?(f=e=>{e===`manual`?s():l()},t[0]=s,t[1]=l,t[2]=f):f=t[2];let p;t[3]!==d||t[4]!==f?(p=(0,$.jsx)(B,{title:`Installed Skills`,description:`Reusable instruction sets that guide agent behavior in this project.`,action:(0,$.jsx)(Et,{manualDisabled:d,onSelectMode:f}),sticky:!1}),t[3]=d,t[4]=f,t[5]=p):p=t[5];let m;t[6]===r?m=t[7]:(m=!r&&(0,$.jsx)(De,{children:`Select a thread to add or install skills.`}),t[6]=r,t[7]=m);let h;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(h={icon:g,title:`No skills installed`,description:`Add skills to extend agent capabilities with reusable instructions.`},t[8]=h):h=t[8];let _;t[9]===u?_=t[10]:(_=e=>(0,$.jsxs)(`span`,{className:c(a.body,`flex min-w-0 items-center gap-2 text-left`),children:[(0,$.jsx)(Nt,{description:e.description,disableModelInvocation:e.disableModelInvocation,builtIn:e.virtual,onClick:e.virtual?void 0:()=>u(e),ariaLabel:It(e)}),(0,$.jsx)(`span`,{className:`truncate`,children:e.name})]}),t[9]=u,t[10]=_);let v;t[11]===i?v=t[12]:(v=e=>i(e.path),t[11]=i,t[12]=v);let y;t[13]!==o||t[14]!==n||t[15]!==_||t[16]!==v?(y=(0,$.jsx)(He,{showHeader:!1,compact:!0,loading:!1,items:n,emptyState:h,getKey:Vt,renderContent:_,onItemClick:v,itemClickLabel:Bt,onDelete:o,deleteAriaLabel:zt,deleteTooltip:`Remove this skill from the project`}),t[13]=o,t[14]=n,t[15]=_,t[16]=v,t[17]=y):y=t[17];let b;t[18]!==m||t[19]!==y?(b=(0,$.jsxs)(J,{className:`pt-6`,children:[m,y]}),t[18]=m,t[19]=y,t[20]=b):b=t[20];let x;return t[21]!==p||t[22]!==b?(x=(0,$.jsxs)(W,{className:`shrink-0`,children:[p,b]}),t[21]=p,t[22]=b,t[23]=x):x=t[23],x}function zt(e){return`Delete ${e.name}`}function Bt(e){return`Open ${e.name} in Files`}function Vt(e){return e.id}function Ht(e){let t=(0,Z.c)(42),{availableSearch:n,onSearchChange:r,selectedSourceId:i,onSourceChange:a,sources:o,selectedCustomSource:s,availableCatalogLoading:c,isDefaultSource:l,availablePopular:u,availableCatalog:d,onPreviewPopular:f,onPreviewCatalog:p,onAddSource:m}=e,h;t[0]===s?h=t[1]:(h=Wt(s),t[0]=s,t[1]=h);let g=h,_=g.icon,v;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,$.jsx)(w,{children:(0,$.jsxs)(T,{children:[(0,$.jsx)(S,{asChild:!0,children:(0,$.jsx)(`span`,{className:`cursor-help`,children:`Available Skills`})}),(0,$.jsx)(C,{children:`Browse and install skills from the catalog.`})]})}),t[2]=v):v=t[2];let y;t[3]!==n||t[4]!==r?(y=(0,$.jsx)(Ve,{placeholder:`Search`,value:n,onChange:r,className:`mb-0 w-64`}),t[3]=n,t[4]=r,t[5]=y):y=t[5];let b;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,$.jsx)(Re,{className:`w-40`,"aria-label":`Skill source`,children:(0,$.jsx)(xe,{placeholder:`Default`})}),t[6]=b):b=t[6];let E;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,$.jsx)(U,{value:`default`,children:`Default`}),t[7]=E):E=t[7];let D;t[8]===o?D=t[9]:(D=o.map(Ut),t[8]=o,t[9]=D);let O;t[10]===D?O=t[11]:(O=(0,$.jsxs)(we,{children:[E,D]}),t[10]=D,t[11]=O);let k;t[12]!==a||t[13]!==i||t[14]!==O?(k=(0,$.jsxs)(Ce,{value:i,onValueChange:a,children:[b,O]}),t[12]=a,t[13]=i,t[14]=O,t[15]=k):k=t[15];let A;t[16]===_?A=t[17]:(A=(0,$.jsx)(_,{className:`h-4 w-4`}),t[16]=_,t[17]=A);let j;t[18]!==m||t[19]!==g.ariaLabel||t[20]!==A?(j=(0,$.jsx)(S,{asChild:!0,children:(0,$.jsx)(x,{type:`button`,variant:`outline`,size:`icon`,className:`shrink-0`,onClick:m,"aria-label":g.ariaLabel,children:A})}),t[18]=m,t[19]=g.ariaLabel,t[20]=A,t[21]=j):j=t[21];let M;t[22]===g.tooltip?M=t[23]:(M=(0,$.jsx)(C,{children:g.tooltip}),t[22]=g.tooltip,t[23]=M);let N;t[24]!==j||t[25]!==M?(N=(0,$.jsx)(w,{children:(0,$.jsxs)(T,{children:[j,M]})}),t[24]=j,t[25]=M,t[26]=N):N=t[26];let P;t[27]!==N||t[28]!==y||t[29]!==k?(P=(0,$.jsx)(B,{title:v,action:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[y,k,N]}),sticky:!1}),t[27]=N,t[28]=y,t[29]=k,t[30]=P):P=t[30];let F;t[31]!==d||t[32]!==c||t[33]!==u||t[34]!==n||t[35]!==l||t[36]!==p||t[37]!==f?(F=(0,$.jsx)(J,{className:`pt-6`,children:(0,$.jsx)(Gt,{searchQuery:n,isLoadingCatalog:c,isDefaultSource:l,availablePopular:u,availableCatalog:d,onPreviewPopular:f,onPreviewCatalog:p})}),t[31]=d,t[32]=c,t[33]=u,t[34]=n,t[35]=l,t[36]=p,t[37]=f,t[38]=F):F=t[38];let I;return t[39]!==P||t[40]!==F?(I=(0,$.jsxs)(W,{className:`shrink-0`,children:[P,F]}),t[39]=P,t[40]=F,t[41]=I):I=t[41],I}function Ut(e){return(0,$.jsx)(U,{value:e.id,children:e.title},e.id)}function Wt(e){return e?{ariaLabel:`Edit skill source`,tooltip:`Edit this custom skill source`,icon:p}:{ariaLabel:`Add skill source`,tooltip:`Add a custom skill source`,icon:u}}function Gt(e){let t=(0,Z.c)(11),{searchQuery:n,isLoadingCatalog:r,isDefaultSource:i,availablePopular:a,availableCatalog:o,onPreviewPopular:s,onPreviewCatalog:c}=e;if(r){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(ue,{centered:!0,containerClassName:`py-12`,label:`Loading skills...`}),t[0]=e):e=t[0],e}if(i){if(a.length===0){let e;return t[1]===n?e=t[2]:(e=(0,$.jsx)(X,{searchQuery:n,emptyLabel:`No available skills found.`}),t[1]=n,t[2]=e),e}let e;return t[3]!==a||t[4]!==s?(e=(0,$.jsx)(Lt,{items:a,onPreview:s}),t[3]=a,t[4]=s,t[5]=e):e=t[5],e}if(o.length===0){let e;return t[6]===n?e=t[7]:(e=(0,$.jsx)(X,{searchQuery:n,emptyLabel:`No available skills found.`}),t[6]=n,t[7]=e),e}let l;return t[8]!==o||t[9]!==c?(l=(0,$.jsx)(Lt,{items:o,onPreview:c}),t[8]=o,t[9]=c,t[10]=l):l=t[10],l}function Kt(e){return e?.disableModelInvocation?{title:`Enable model invocation?`,description:`"${e.name}" will be offered to the model automatically again, so its description counts towards the context window.`,actionLabel:`Enable`,nextDisableModelInvocation:!1}:{title:`Disable model invocation?`,description:`"${e?.name}" will no longer be offered to the model automatically, so its description stops counting towards the context window. Invoke it manually with /${e?.name}.`,actionLabel:`Disable`,nextDisableModelInvocation:!0}}function qt(e){let t=(0,Z.c)(24),{open:n,onOpenChange:r,skill:i,onConfirm:a}=e,o;t[0]===i?o=t[1]:(o=Kt(i),t[0]=i,t[1]=o);let s=o,c;t[2]===s.title?c=t[3]:(c=(0,$.jsx)(fe,{children:s.title}),t[2]=s.title,t[3]=c);let l;t[4]===s.description?l=t[5]:(l=(0,$.jsx)(de,{children:s.description}),t[4]=s.description,t[5]=l);let u;t[6]!==c||t[7]!==l?(u=(0,$.jsxs)(_e,{children:[c,l]}),t[6]=c,t[7]=l,t[8]=u):u=t[8];let d;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,$.jsx)(ge,{children:`Cancel`}),t[9]=d):d=t[9];let f;t[10]!==s.nextDisableModelInvocation||t[11]!==a||t[12]!==i?(f=()=>{i&&a(i,s.nextDisableModelInvocation)},t[10]=s.nextDisableModelInvocation,t[11]=a,t[12]=i,t[13]=f):f=t[13];let p;t[14]!==s.actionLabel||t[15]!==f?(p=(0,$.jsxs)(he,{children:[d,(0,$.jsx)(me,{onClick:f,children:s.actionLabel})]}),t[14]=s.actionLabel,t[15]=f,t[16]=p):p=t[16];let m;t[17]!==u||t[18]!==p?(m=(0,$.jsxs)(pe,{children:[u,p]}),t[17]=u,t[18]=p,t[19]=m):m=t[19];let h;return t[20]!==r||t[21]!==n||t[22]!==m?(h=(0,$.jsx)(ve,{open:n,onOpenChange:r,children:m}),t[20]=r,t[21]=n,t[22]=m,t[23]=h):h=t[23],h}async function Jt(e,t){let n=nt(t.id);if(!e.threadId||e.installedFilePaths.has(n))return;let r=t.sourceId??(e.selectedSourceId==="default"?void 0:e.selectedSourceId);try{r?await L(e.threadId,r,t.id,tt(t.id)):await re(e.threadId,n,it(t)),e.setInstalledFilePaths(e=>new Set(e).add(n)),e.triggerExplorerRefresh(),e.reloadSkills(),R({title:`Skill installed`,description:t.name})}catch(e){throw R({title:`Error`,description:e instanceof Error?e.message:`Failed to install skill`,variant:`destructive`}),e}}async function Yt(e,t,n){if(e.projectId)try{try{await k(e.projectId,t.name,n)}catch{if(!e.threadId)throw Error(`No thread selected to update this skill`);await O(e.threadId,t.name,n)}e.triggerExplorerRefresh(),await e.reloadSkills(),R({title:n?`Model invocation disabled`:`Model invocation enabled`,description:n?`${t.name} is now invoked manually with /${t.name}.`:`${t.name} is offered to the model again.`})}catch(e){R({title:`Error`,description:e instanceof Error?e.message:`Failed to update skill`,variant:`destructive`})}}function Xt(e){return e?{title:`MCP server installed`,description:`Its MCP servers were added to this project.`}:{title:`Plugin installed`,description:`Its skills and MCP servers were added to this project.`}}function Zt(){let e=(0,Z.c)(128),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={findItems:Ft,installedPathSuffix:`/SKILL.md`,explorerPathSuffix:`/SKILL.md`,sortByName:!0,removedToastTitle:`Skill removed`},e[0]=t):t=e[0];let{selectedProjectId:n,selectedThreadId:r,items:i,loading:a,deleteConfirm:o,setDeleteConfirm:c,deleting:u,installedFilePaths:d,setInstalledFilePaths:f,loadItems:p,handleDelete:m,handleOpenInExplorer:h,triggerExplorerRefresh:g}=qe(t),_=s($t),v=_.find(e=>e.projectId===n)??null,{showAddDialog:y,setShowAddDialog:b,showUrlDialog:x,setShowUrlDialog:S,showAddSourceDialog:C,setShowAddSourceDialog:w,pluginImportUrl:T,setPluginImportUrl:E,previewSkill:D,setPreviewSkill:O,invocationSkill:k,showInvocationDialog:A,setShowInvocationDialog:j,openInvocationDialog:M,handlePreviewDialogOpenChange:N}=Qe(),{availableSearch:P,setAvailableSearch:F,availablePopular:I,availableCatalog:ee,availableCatalogLoading:te,isDefaultSource:ne,selectedCustomSource:re,sources:ie,selectedSourceId:L,setSelectedSourceId:ae,addSource:oe,updateSource:se,removeSource:ce,loadingPopularSkills:le}=Ct(d),ue;e[1]!==a||e[2]!==le?(ue=[a,le],e[1]=a,e[2]=le,e[3]=ue):ue=e[3];let de=Be(n?`${n}:${r??``}`:null,ue),fe;e[4]!==d||e[5]!==p||e[6]!==L||e[7]!==r||e[8]!==f||e[9]!==g?(fe=function(e){return Jt({threadId:r,selectedSourceId:L,installedFilePaths:d,setInstalledFilePaths:f,triggerExplorerRefresh:g,reloadSkills:p},e)},e[4]=d,e[5]=p,e[6]=L,e[7]=r,e[8]=f,e[9]=g,e[10]=fe):fe=e[10];let pe=fe,me;e[11]!==p||e[12]!==n||e[13]!==r||e[14]!==g?(me=function(e,t){return Yt({projectId:n,threadId:r,triggerExplorerRefresh:g,reloadSkills:p},e,t)},e[11]=p,e[12]=n,e[13]=r,e[14]=g,e[15]=me):me=e[15];let he=me,ge;e[16]===c?ge=e[17]:(ge=function(e){e||c(null)},e[16]=c,e[17]=ge);let _e=ge,ve;e[18]!==o||e[19]!==m?(ve=function(){o&&m(o)},e[18]=o,e[19]=m,e[20]=ve):ve=e[20];let be=ve;if(!n){let t;return e[21]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(ye,{children:`Select a project to manage skills.`}),e[21]=t):t=e[21],t}let xe;e[22]===b?xe=e[23]:(xe=()=>b(!0),e[22]=b,e[23]=xe);let z;e[24]===S?z=e[25]:(z=()=>S(!0),e[24]=S,e[25]=z);let B;e[26]!==h||e[27]!==M||e[28]!==r||e[29]!==c||e[30]!==i||e[31]!==xe||e[32]!==z?(B=(0,$.jsx)(Rt,{skills:i,threadId:r,onOpenSkill:h,onDelete:c,onAddManual:xe,onAddUrl:z,onChangeModelInvocation:M}),e[26]=h,e[27]=M,e[28]=r,e[29]=c,e[30]=i,e[31]=xe,e[32]=z,e[33]=B):B=e[33];let V;e[34]===O?V=e[35]:(V=e=>O(e),e[34]=O,e[35]=V);let H;e[36]!==L||e[37]!==O?(H=e=>O({...e,sourceId:e.sourceId??L}),e[36]=L,e[37]=O,e[38]=H):H=e[38];let Ce;e[39]===w?Ce=e[40]:(Ce=()=>w(!0),e[39]=w,e[40]=Ce);let we;e[41]!==ee||e[42]!==te||e[43]!==I||e[44]!==P||e[45]!==ne||e[46]!==re||e[47]!==L||e[48]!==F||e[49]!==ae||e[50]!==ie||e[51]!==H||e[52]!==Ce||e[53]!==V?(we=(0,$.jsx)(Ht,{availableSearch:P,onSearchChange:F,selectedSourceId:L,onSourceChange:ae,sources:ie,selectedCustomSource:re,availableCatalogLoading:te,isDefaultSource:ne,availablePopular:I,availableCatalog:ee,onPreviewPopular:V,onPreviewCatalog:H,onAddSource:Ce}),e[41]=ee,e[42]=te,e[43]=I,e[44]=P,e[45]=ne,e[46]=re,e[47]=L,e[48]=F,e[49]=ae,e[50]=ie,e[51]=H,e[52]=Ce,e[53]=V,e[54]=we):we=e[54];let U;e[55]!==de||e[56]!==we||e[57]!==B?(U=(0,$.jsxs)(Se,{loading:de,children:[B,we]}),e[55]=de,e[56]=we,e[57]=B,e[58]=U):U=e[58];let Te=D!==null,Ee=ne?void 0:L,W;e[59]!==pe||e[60]!==N||e[61]!==D||e[62]!==Te||e[63]!==Ee?(W=(0,$.jsx)(ut,{open:Te,onOpenChange:N,skill:D,catalogSourceId:Ee,onInstall:pe}),e[59]=pe,e[60]=N,e[61]=D,e[62]=Te,e[63]=Ee,e[64]=W):W=e[64];let G;e[65]!==he||e[66]!==k||e[67]!==j||e[68]!==A?(G=(0,$.jsx)(qt,{open:A,onOpenChange:j,skill:k,onConfirm:he}),e[65]=he,e[66]=k,e[67]=j,e[68]=A,e[69]=G):G=e[69];let De;e[70]===oe?De=e[71]:(De=e=>{oe(e),R({title:`Skill source added`,description:`${e.title} is now available in the source list.`})},e[70]=oe,e[71]=De);let ke;e[72]===se?ke=e[73]:(ke=e=>{se(e),R({title:`Skill source updated`,description:`${e.title} has been saved.`})},e[72]=se,e[73]=ke);let K;e[74]===ce?K=e[75]:(K=e=>{ce(e),R({title:`Skill source removed`,description:`The custom source has been deleted.`})},e[74]=ce,e[75]=K);let je;e[76]!==re||e[77]!==w||e[78]!==C||e[79]!==De||e[80]!==ke||e[81]!==K?(je=(0,$.jsx)(wt,{open:C,onOpenChange:w,editingSource:re,onSourceAdded:De,onSourceUpdated:ke,onSourceDeleted:K}),e[76]=re,e[77]=w,e[78]=C,e[79]=De,e[80]=ke,e[81]=K,e[82]=je):je=e[82];let q;e[83]!==p||e[84]!==b||e[85]!==g?(q=()=>{b(!1),p(),g()},e[83]=p,e[84]=b,e[85]=g,e[86]=q):q=e[86];let Me;e[87]!==r||e[88]!==q?(Me=(0,$.jsx)(Oe,{className:`max-w-2xl max-h-[90vh] overflow-y-auto p-0`,children:(0,$.jsx)($e,{threadId:r,onSkillCreated:q})}),e[87]=r,e[88]=q,e[89]=Me):Me=e[89];let J;e[90]!==b||e[91]!==y||e[92]!==Me?(J=(0,$.jsx)(Pe,{open:y,onOpenChange:b,children:Me}),e[90]=b,e[91]=y,e[92]=Me,e[93]=J):J=e[93];let Y;e[94]===E?Y=e[95]:(Y=e=>E(e),e[94]=E,e[95]=Y);let Ne;e[96]!==S||e[97]!==x||e[98]!==Y?(Ne=(0,$.jsx)(kt,{open:x,onOpenChange:S,onSubmit:Y}),e[96]=S,e[97]=x,e[98]=Y,e[99]=Ne):Ne=e[99];let Fe=Ae,Ie=v?l(v):null,Le;e[100]===E?Le=e[101]:(Le=()=>E(null),e[100]=E,e[101]=Le);let Re;e[102]!==p||e[103]!==g?(Re=e=>{let{mcpOnly:t}=e;p(),g(),R(Xt(t))},e[102]=p,e[103]=g,e[104]=Re):Re=e[104];let X;e[105]!==Fe||e[106]!==T||e[107]!==_||e[108]!==n||e[109]!==Ie||e[110]!==Le||e[111]!==Re?(X=(0,$.jsx)(Fe,{url:T,projectId:n,projectName:Ie,projects:_,onSelectProject:Qt,onClose:Le,onInstalled:Re}),e[105]=Fe,e[106]=T,e[107]=_,e[108]=n,e[109]=Ie,e[110]=Le,e[111]=Re,e[112]=X):X=e[112];let Ve=o!==null,He=`Are you sure you want to delete the skill "${o?.name}"? This action cannot be undone.`,Ue;e[113]!==u||e[114]!==be||e[115]!==_e||e[116]!==Ve||e[117]!==He?(Ue=(0,$.jsx)(ze,{open:Ve,onOpenChange:_e,title:`Delete Skill`,description:He,onConfirm:be,confirming:u}),e[113]=u,e[114]=be,e[115]=_e,e[116]=Ve,e[117]=He,e[118]=Ue):Ue=e[118];let We;return e[119]!==U||e[120]!==W||e[121]!==G||e[122]!==je||e[123]!==J||e[124]!==Ne||e[125]!==X||e[126]!==Ue?(We=(0,$.jsxs)($.Fragment,{children:[U,W,G,je,J,Ne,X,Ue]}),e[119]=U,e[120]=W,e[121]=G,e[122]=je,e[123]=J,e[124]=Ne,e[125]=X,e[126]=Ue,e[127]=We):We=e[127],We}function Qt(){}function $t(e){return e.projects}export{Zt as SettingsSkillsView,Zt as default};
@@ -0,0 +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{Lt as i}from"./dist-DZtmmQ-F.js";import{t as a}from"./utils-BCj_kT9l.js";import{Zt as o,d as s,dt as c,nn as l}from"./lucide-react-CNNzKD4G.js";import{t as u}from"./button-DhxraVUW.js";import{Fn as d,Lt as f,M as p,Rt as m,f as h,kt as g,x as _}from"./api-B_ZIptgC.js";import{t as v}from"./use-toast-xpb5jNtN.js";import{Bt as y,Cr as b,Ft as x,It as S,Lt as C,Mt as w,bt as T,kt as E,wt as D,zt as O}from"./index-DdJcjvu2.js";var k=t(),A=r();function j(e){return e.configured?[e.botUsername?`@${e.botUsername}`:e.botTokenPreview,`Bridge ${e.bridgeRunning?`running`:`stopped`}`,e.teamName].filter(Boolean).join(` · `):`Not configured`}function M(e,t){return t.find(t=>t.projectId===e.projectId)?.name||e.projectId}function N(e){let t=(0,k.c)(51),{settings:n,drafts:r,isSavingTokens:s,onDraftChange:d,onSaveTokens:f,onClearTokens:p,onCopyManifest:m}=e,h;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,A.jsx)(D,{title:`Slack App`}),t[0]=h):h=t[0];let g;t[1]===m?g=t[2]:(g=()=>void m(),t[1]=m,t[2]=g);let _;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,A.jsx)(l,{className:`mr-2 h-4 w-4`}),t[3]=_):_=t[3];let v;t[4]===g?v=t[5]:(v=(0,A.jsxs)(u,{type:`button`,variant:`outline`,size:`sm`,onClick:g,children:[_,`Copy app manifest`]}),t[4]=g,t[5]=v);let y;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,A.jsx)(u,{type:`button`,variant:`outline`,size:`sm`,asChild:!0,children:(0,A.jsxs)(`a`,{href:`/slack-app-icon.png`,download:`tarsk-slack-app-icon.png`,children:[(0,A.jsx)(o,{className:`mr-2 h-4 w-4`}),`Download app icon`]})}),t[6]=y):y=t[6];let x;t[7]===v?x=t[8]:(x=(0,A.jsx)(T,{title:`App Manifest`,description:`Create a Slack app from this manifest, enable Socket Mode, then paste the Bot and App-Level tokens below. The Slack manifest cannot include an app icon — download the Tarsk logo and upload it under Basic Information after creating the app.`,controlLayout:`row-end`,action:(0,A.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[v,y]})}),t[7]=v,t[8]=x);let S;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(S=a(`text-muted-foreground`,i.bodyMuted),t[9]=S):S=t[9];let C;t[10]===n?C=t[11]:(C=j(n),t[10]=n,t[11]=C);let w;t[12]===C?w=t[13]:(w=(0,A.jsx)(T,{title:`Status`,description:`Bot identity and Socket Mode bridge status.`,children:(0,A.jsx)(`span`,{className:S,children:C})}),t[12]=C,t[13]=w);let O=n.botTokenPreview||`xoxb-…`,M;t[14]===d?M=t[15]:(M=e=>d(`botToken`,e.target.value),t[14]=d,t[15]=M);let N;t[16]!==r.botToken||t[17]!==O||t[18]!==M?(N=(0,A.jsx)(T,{title:`Bot Token`,description:`Bot User OAuth Token from your Slack app (starts with xoxb-).`,children:(0,A.jsx)(b,{id:`slack-bot-token`,type:`password`,autoComplete:`off`,placeholder:O,value:r.botToken,onChange:M})}),t[16]=r.botToken,t[17]=O,t[18]=M,t[19]=N):N=t[19];let P=n.appTokenPreview||`xapp-…`,F;t[20]===d?F=t[21]:(F=e=>d(`appToken`,e.target.value),t[20]=d,t[21]=F);let I;t[22]!==r.appToken||t[23]!==P||t[24]!==F?(I=(0,A.jsx)(T,{title:`App-Level Token`,description:`App-Level Token with connections:write for Socket Mode (starts with xapp-).`,children:(0,A.jsx)(b,{id:`slack-app-token`,type:`password`,autoComplete:`off`,placeholder:P,value:r.appToken,onChange:F})}),t[22]=r.appToken,t[23]=P,t[24]=F,t[25]=I):I=t[25];let L;t[26]===f?L=t[27]:(L=()=>void f(),t[26]=f,t[27]=L);let R;t[28]!==r.appToken||t[29]!==r.botToken||t[30]!==s?(R=s||!r.botToken.trim()||!r.appToken.trim(),t[28]=r.appToken,t[29]=r.botToken,t[30]=s,t[31]=R):R=t[31];let z;t[32]===s?z=t[33]:(z=s?(0,A.jsx)(c,{className:`mr-2 h-4 w-4 animate-spin`}):null,t[32]=s,t[33]=z);let B;t[34]!==L||t[35]!==R||t[36]!==z?(B=(0,A.jsxs)(u,{type:`button`,onClick:L,disabled:R,children:[z,`Save`]}),t[34]=L,t[35]=R,t[36]=z,t[37]=B):B=t[37];let V;t[38]!==s||t[39]!==p||t[40]!==n.configured?(V=n.configured?(0,A.jsx)(u,{type:`button`,variant:`outline`,onClick:()=>void p(),disabled:s,children:`Clear`}):null,t[38]=s,t[39]=p,t[40]=n.configured,t[41]=V):V=t[41];let H;t[42]!==B||t[43]!==V?(H=(0,A.jsx)(T,{title:`Tokens`,description:`Save both tokens to start the bridge, or clear them to disconnect.`,controlLayout:`row-end`,action:(0,A.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[B,V]})}),t[42]=B,t[43]=V,t[44]=H):H=t[44];let U;return t[45]!==N||t[46]!==I||t[47]!==H||t[48]!==x||t[49]!==w?(U=(0,A.jsxs)(`div`,{children:[h,(0,A.jsxs)(E,{children:[x,w,N,I,H]})]}),t[45]=N,t[46]=I,t[47]=H,t[48]=x,t[49]=w,t[50]=U):U=t[50],U}function P(e){let t=(0,k.c)(20),{binding:n,projects:r,onDelete:o}=e,c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=a(i.compact),t[0]=c):c=t[0];let l=n.slackChannelName||n.slackChannelId,d;t[1]===l?d=t[2]:(d=(0,A.jsx)(`div`,{className:`font-medium`,children:l}),t[1]=l,t[2]=d);let f;t[3]!==n||t[4]!==r?(f=M(n,r),t[3]=n,t[4]=r,t[5]=f):f=t[5];let p;t[6]===f?p=t[7]:(p=(0,A.jsx)(`div`,{className:`text-muted-foreground`,children:f}),t[6]=f,t[7]=p);let m;t[8]!==d||t[9]!==p?(m=(0,A.jsxs)(`div`,{className:c,children:[d,p]}),t[8]=d,t[9]=p,t[10]=m):m=t[10];let h;t[11]!==n||t[12]!==o?(h=()=>void o(n),t[11]=n,t[12]=o,t[13]=h):h=t[13];let g;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,A.jsx)(s,{className:`h-4 w-4`}),t[14]=g):g=t[14];let _;t[15]===h?_=t[16]:(_=(0,A.jsx)(u,{type:`button`,variant:`ghost`,size:`icon`,onClick:h,"aria-label":`Remove binding`,children:g}),t[15]=h,t[16]=_);let v;return t[17]!==m||t[18]!==_?(v=(0,A.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-md border px-3 py-2`,children:[m,_]}),t[17]=m,t[18]=_,t[19]=v):v=t[19],v}function F(e){let t=(0,k.c)(45),{settings:n,projects:r,drafts:o,isSavingBinding:s,onDraftChange:l,onAddBinding:d,onDeleteBinding:f}=e,p=n.channels.length>0,m=r.length>0,h;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,A.jsx)(D,{title:`Channel Bindings`}),t[0]=h):h=t[0];let g;t[1]!==o.channelId||t[2]!==p||t[3]!==l||t[4]!==n.channels?(g=(0,A.jsx)(T,{title:`Slack Channel`,description:`Invite the bot to the channel first. Only channels the bot can see are listed.`,children:p?(0,A.jsxs)(x,{value:o.channelId||void 0,onValueChange:e=>l(`channelId`,e),children:[(0,A.jsx)(O,{id:`slack-channel`,"aria-label":`Slack Channel`,children:(0,A.jsx)(y,{placeholder:`Select a channel…`})}),(0,A.jsx)(S,{children:n.channels.map(L)})]}):(0,A.jsx)(b,{id:`slack-channel`,placeholder:`Channel ID (C…)`,value:o.channelId,onChange:e=>l(`channelId`,e.target.value)})}),t[1]=o.channelId,t[2]=p,t[3]=l,t[4]=n.channels,t[5]=g):g=t[5];let _=o.projectId||void 0,v;t[6]===l?v=t[7]:(v=e=>l(`projectId`,e),t[6]=l,t[7]=v);let C=!m,w=m?`Select a project…`:`No projects`,j;t[8]===w?j=t[9]:(j=(0,A.jsx)(O,{id:`slack-project`,"aria-label":`Tarsk Project`,children:(0,A.jsx)(y,{placeholder:w})}),t[8]=w,t[9]=j);let M;t[10]===r?M=t[11]:(M=r.map(I),t[10]=r,t[11]=M);let N;t[12]===M?N=t[13]:(N=(0,A.jsx)(S,{children:M}),t[12]=M,t[13]=N);let F;t[14]!==_||t[15]!==v||t[16]!==C||t[17]!==j||t[18]!==N?(F=(0,A.jsx)(T,{title:`Tarsk Project`,description:`Each Slack channel maps to one Tarsk project.`,children:(0,A.jsxs)(x,{value:_,onValueChange:v,disabled:C,children:[j,N]})}),t[14]=_,t[15]=v,t[16]=C,t[17]=j,t[18]=N,t[19]=F):F=t[19];let R;t[20]===d?R=t[21]:(R=()=>void d(),t[20]=d,t[21]=R);let z;t[22]!==o.channelId||t[23]!==o.projectId||t[24]!==s?(z=s||!o.channelId.trim()||!o.projectId,t[22]=o.channelId,t[23]=o.projectId,t[24]=s,t[25]=z):z=t[25];let B;t[26]===s?B=t[27]:(B=s?(0,A.jsx)(c,{className:`mr-2 h-4 w-4 animate-spin`}):null,t[26]=s,t[27]=B);let V;t[28]!==R||t[29]!==z||t[30]!==B?(V=(0,A.jsx)(T,{title:`Bind`,description:`Create a channel ↔ project binding.`,controlLayout:`row-end`,action:(0,A.jsxs)(u,{type:`button`,onClick:R,disabled:z,children:[B,`Bind channel`]})}),t[28]=R,t[29]=z,t[30]=B,t[31]=V):V=t[31];let H;t[32]!==F||t[33]!==V||t[34]!==g?(H=(0,A.jsxs)(E,{children:[g,F,V]}),t[32]=F,t[33]=V,t[34]=g,t[35]=H):H=t[35];let U;t[36]!==f||t[37]!==r||t[38]!==n.bindings?(U=n.bindings.length===0?(0,A.jsx)(`p`,{className:a(`text-muted-foreground`,i.compact),children:`No bindings yet.`}):n.bindings.map(e=>(0,A.jsx)(P,{binding:e,projects:r,onDelete:f},`${e.slackTeamId}:${e.slackChannelId}`)),t[36]=f,t[37]=r,t[38]=n.bindings,t[39]=U):U=t[39];let W;t[40]===U?W=t[41]:(W=(0,A.jsx)(`div`,{className:`mt-4 flex flex-col gap-2`,children:U}),t[40]=U,t[41]=W);let G;return t[42]!==H||t[43]!==W?(G=(0,A.jsxs)(`div`,{children:[h,H,W]}),t[42]=H,t[43]=W,t[44]=G):G=t[44],G}function I(e){return(0,A.jsx)(C,{value:e.projectId,children:e.name},e.projectId)}function L(e){return(0,A.jsx)(C,{value:e.id,children:e.name},e.id)}var R=e(n(),1),z={botToken:``,appToken:``,channelId:``,projectId:``},B={tokens:!1,binding:!1};function V(e,t){v({title:e,description:t instanceof Error?t.message:String(t),variant:`destructive`})}function H(){let[e,t]=(0,R.useState)(null),[n,r]=(0,R.useState)([]),[i,a]=(0,R.useState)(``),[o,s]=(0,R.useState)(z),[c,l]=(0,R.useState)(!0),[u,y]=(0,R.useState)(B),b=(0,R.useCallback)(async()=>{let[e,n]=await Promise.all([m(),g()]);t(e),r(n.projects)},[]);(0,R.useEffect)(()=>{let e=!1;async function n(){l(!0);try{let[n,i,o]=await Promise.all([m(),g(),f()]);e||(t(n),r(i.projects),a(o.manifest),i.projects[0]&&s(e=>e.projectId?e:{...e,projectId:i.projects[0].projectId}))}catch(t){e||V(`Failed to load Slack settings`,t)}finally{e||l(!1)}}return n(),()=>{e=!0}},[]);function x(e,t){s(n=>({...n,[e]:t}))}function S(e,t){y(n=>({...n,[e]:t}))}async function C(){let e=o.botToken.trim(),t=o.appToken.trim();if(!(!e||!t)){S(`tokens`,!0);try{await d({botToken:e,appToken:t}),s(e=>({...e,botToken:``,appToken:``})),await b(),v({title:`Slack tokens saved`})}catch(e){V(`Failed to save tokens`,e)}finally{S(`tokens`,!1)}}}async function w(){S(`tokens`,!0);try{await h(),await b(),v({title:`Slack tokens cleared`})}catch(e){V(`Failed to clear tokens`,e)}finally{S(`tokens`,!1)}}async function T(){let t=o.channelId.trim();if(!(!t||!o.projectId)){S(`binding`,!0);try{let n=e?.channels.find(e=>e.id===t);await _({slackChannelId:t,projectId:o.projectId,...n?{slackChannelName:n.name}:{}}),s(e=>({...e,channelId:``})),await b(),v({title:`Channel bound`})}catch(e){V(`Failed to bind channel`,e)}finally{S(`binding`,!1)}}}async function E(e){try{await p(e.slackTeamId,e.slackChannelId),await b(),v({title:`Binding removed`})}catch(e){V(`Failed to remove binding`,e)}}async function D(){try{await navigator.clipboard.writeText(i||(await f()).manifest),v({title:`Manifest copied`})}catch(e){V(`Failed to copy manifest`,e)}}return{settings:e,projects:n,manifest:i,drafts:o,isLoading:c,saving:u,setDraft:x,saveTokens:C,clearTokens:w,addBinding:T,deleteBinding:E,copyManifest:D}}function U(){let e=(0,k.c)(20),t=H();if(t.isLoading||!t.settings){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,A.jsx)(w,{title:`Slack`,description:`Loading Slack settings…`,children:(0,A.jsxs)(`div`,{className:a(`flex items-center gap-2 text-muted-foreground`,i.compact),children:[(0,A.jsx)(c,{className:`h-4 w-4 animate-spin`}),`Loading Slack settings…`]})}),e[0]=t):t=e[0],t}let n;e[1]!==t.clearTokens||e[2]!==t.copyManifest||e[3]!==t.drafts||e[4]!==t.saveTokens||e[5]!==t.saving.tokens||e[6]!==t.setDraft||e[7]!==t.settings?(n=(0,A.jsx)(N,{settings:t.settings,drafts:t.drafts,isSavingTokens:t.saving.tokens,onDraftChange:t.setDraft,onSaveTokens:t.saveTokens,onClearTokens:t.clearTokens,onCopyManifest:t.copyManifest}),e[1]=t.clearTokens,e[2]=t.copyManifest,e[3]=t.drafts,e[4]=t.saveTokens,e[5]=t.saving.tokens,e[6]=t.setDraft,e[7]=t.settings,e[8]=n):n=e[8];let r;e[9]!==t.addBinding||e[10]!==t.deleteBinding||e[11]!==t.drafts||e[12]!==t.projects||e[13]!==t.saving.binding||e[14]!==t.setDraft||e[15]!==t.settings?(r=(0,A.jsx)(F,{settings:t.settings,projects:t.projects,drafts:t.drafts,isSavingBinding:t.saving.binding,onDraftChange:t.setDraft,onAddBinding:t.addBinding,onDeleteBinding:t.deleteBinding}),e[9]=t.addBinding,e[10]=t.deleteBinding,e[11]=t.drafts,e[12]=t.projects,e[13]=t.saving.binding,e[14]=t.setDraft,e[15]=t.settings,e[16]=r):r=e[16];let o;return e[17]!==n||e[18]!==r?(o=(0,A.jsx)(w,{title:`Slack`,description:`Connect a Slack app (Socket Mode) and bind channels to Tarsk projects.`,children:(0,A.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[n,r]})}),e[17]=n,e[18]=r,e[19]=o):o=e[19],o}export{U as default};
@@ -0,0 +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{Lt as i}from"./dist-DZtmmQ-F.js";import{r as a}from"./store-D4D62vkY.js";import{s as o,t as s}from"./utils-BCj_kT9l.js";import{p as c,sn as l}from"./lucide-react-CNNzKD4G.js";import{t as u}from"./button-DhxraVUW.js";import{g as d,h as f,n as p,t as m,u as h}from"./dist-iDwSbcD5.js";import{o as g}from"./dist-CA_zFhwJ.js";import{N as _,S as v,hr as y,ur as b,zt as x}from"./api-B_ZIptgC.js";import{t as S}from"./dist-OixawqbU.js";import{n as C,r as w,t as T}from"./dist-Bihbg_hO.js";import{n as E}from"./explorer-tab-context-BxUVwWQQ.js";import{t as D}from"./use-toast-xpb5jNtN.js";import{t as O}from"./dist-CSssbxDI.js";import{$n as k,At as A,Cr as j,Ct as M,Dt as N,Nt as P,Pt as ee,Sr as F,St as te,Tr as ne,bt as I,jt as re,wr as ie,yt as L}from"./index-DdJcjvu2.js";import{t as ae}from"./delete-confirm-dialog-Ciwqi6ts.js";import{t as R}from"./use-settings-page-loading-CpaBd260.js";import{i as oe,r as se,s as ce}from"./settings-list-n-CrPPNl.js";import{i as z,n as B,r as V}from"./slug-utils-Ccbyp4Mu.js";var H=t(),U=e(n(),1),W=r(),G=`Radio`,[K,q]=f(G),[J,le]=K(G),Y=U.forwardRef((e,t)=>{let{__scopeRadio:n,name:r,checked:i=!1,required:a,disabled:s,value:c=`on`,onCheck:l,form:u,...f}=e,[p,m]=U.useState(null),g=o(t,e=>m(e)),_=U.useRef(!1),v=p?u||!!p.closest(`form`):!0;return(0,W.jsxs)(J,{scope:n,checked:i,disabled:s,children:[(0,W.jsx)(h.button,{type:`button`,role:`radio`,"aria-checked":i,"data-state":pe(i),"data-disabled":s?``:void 0,disabled:s,value:c,...f,ref:g,onClick:d(e.onClick,e=>{i||l?.(),v&&(_.current=e.isPropagationStopped(),_.current||e.stopPropagation())})}),v&&(0,W.jsx)(fe,{control:p,bubbles:!_.current,name:r,value:c,checked:i,required:a,disabled:s,form:u,style:{transform:`translateX(-100%)`}})]})});Y.displayName=G;var X=`RadioIndicator`,ue=U.forwardRef((e,t)=>{let{__scopeRadio:n,forceMount:r,...i}=e,a=le(X,n);return(0,W.jsx)(p,{present:r||a.checked,children:(0,W.jsx)(h.span,{"data-state":pe(a.checked),"data-disabled":a.disabled?``:void 0,...i,ref:t})})});ue.displayName=X;var de=`RadioBubbleInput`,fe=U.forwardRef(({__scopeRadio:e,control:t,checked:n,bubbles:r=!0,...i},a)=>{let s=U.useRef(null),c=o(s,a),l=O(n),u=g(t);return U.useEffect(()=>{let e=s.current;if(!e)return;let t=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(t,`checked`).set;if(l!==n&&i){let t=new Event(`click`,{bubbles:r});i.call(e,n),e.dispatchEvent(t)}},[l,n,r]),(0,W.jsx)(h.input,{type:`radio`,"aria-hidden":!0,defaultChecked:n,...i,tabIndex:-1,ref:c,style:{...i.style,...u,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0}})});fe.displayName=de;function pe(e){return e?`checked`:`unchecked`}var me=[`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`],Z=`RadioGroup`,[he,ge]=f(Z,[w,q]),_e=w(),ve=q(),[ye,be]=he(Z),xe=U.forwardRef((e,t)=>{let{__scopeRadioGroup:n,name:r,defaultValue:i,value:a,required:o=!1,disabled:s=!1,orientation:c,dir:l,loop:u=!0,onValueChange:d,...f}=e,p=_e(n),g=S(l),[_,v]=m({prop:a,defaultProp:i??null,onChange:d,caller:Z});return(0,W.jsx)(ye,{scope:n,name:r,required:o,disabled:s,value:_,onValueChange:v,children:(0,W.jsx)(C,{asChild:!0,...p,orientation:c,dir:g,loop:u,children:(0,W.jsx)(h.div,{role:`radiogroup`,"aria-required":o,"aria-orientation":c,"data-disabled":s?``:void 0,dir:g,...f,ref:t})})})});xe.displayName=Z;var Se=`RadioGroupItem`,Ce=U.forwardRef((e,t)=>{let{__scopeRadioGroup:n,disabled:r,...i}=e,a=be(Se,n),s=a.disabled||r,c=_e(n),l=ve(n),u=U.useRef(null),f=o(t,u),p=a.value===i.value,m=U.useRef(!1);return U.useEffect(()=>{let e=e=>{me.includes(e.key)&&(m.current=!0)},t=()=>m.current=!1;return document.addEventListener(`keydown`,e),document.addEventListener(`keyup`,t),()=>{document.removeEventListener(`keydown`,e),document.removeEventListener(`keyup`,t)}},[]),(0,W.jsx)(T,{asChild:!0,...c,focusable:!s,active:p,children:(0,W.jsx)(Y,{disabled:s,required:a.required,checked:p,...l,...i,name:a.name,ref:f,onCheck:()=>a.onValueChange(i.value),onKeyDown:d(e=>{e.key===`Enter`&&e.preventDefault()}),onFocus:d(i.onFocus,()=>{m.current&&u.current?.click()})})})});Ce.displayName=Se;var we=`RadioGroupIndicator`,Te=U.forwardRef((e,t)=>{let{__scopeRadioGroup:n,...r}=e;return(0,W.jsx)(ue,{...ve(n),...r,ref:t})});Te.displayName=we;var Ee=xe,De=Ce,Oe=Te,ke=U.forwardRef((e,t)=>{let n=(0,H.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 a;n[3]===r?a=n[4]:(a=s(`grid gap-2`,r),n[3]=r,n[4]=a);let o;return n[5]!==i||n[6]!==t||n[7]!==a?(o=(0,W.jsx)(Ee,{className:a,...i,ref:t}),n[5]=i,n[6]=t,n[7]=a,n[8]=o):o=n[8],o});ke.displayName=Ee.displayName;var Q=U.forwardRef((e,t)=>{let n=(0,H.c)(10),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 a;n[3]===r?a=n[4]:(a=s(`aspect-square h-4 w-4 rounded-full border border-brand text-brand ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50`,r),n[3]=r,n[4]=a);let o;n[5]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,W.jsx)(Oe,{className:`flex items-center justify-center`,children:(0,W.jsx)(l,{className:`h-2.5 w-2.5 fill-current text-current`})}),n[5]=o):o=n[5];let c;return n[6]!==i||n[7]!==t||n[8]!==a?(c=(0,W.jsx)(De,{ref:t,className:a,...i,children:o}),n[6]=i,n[7]=t,n[8]=a,n[9]=c):c=n[9],c});Q.displayName=De.displayName;function Ae({projectId:e,threadId:t,onCommandCreated:n}){let[r,a]=(0,U.useState)(``),[o,c]=(0,U.useState)(``),[l,u]=(0,U.useState)(``),[d,f]=(0,U.useState)(`default`),[p,m]=(0,U.useState)(!1),h=V(r),g=B(h),_=async()=>{if(!(!g||!e)){m(!0);try{await v(h,``,{description:o.trim()||void 0,argumentHint:l.trim()||void 0,mode:d===`plan`?`plan`:void 0},`project`,t??void 0),D({title:`Command created`,description:`Command '/${h}' was created successfully.`}),a(``),c(``),u(``),f(`default`),n?.(h)}catch(e){D({title:`Error`,description:e instanceof Error?e.message:`Failed to create command`,variant:`destructive`})}finally{m(!1)}}};return e?(0,W.jsx)(P,{children:(0,W.jsxs)(L,{children:[(0,W.jsx)(M,{title:`Add Slash Command`,description:`Saved as a .md file in .agents/commands in the selected project workspace.`,sticky:!0,className:`pr-10`}),(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(I,{title:`Command Name`,controlLayout:`stack`,className:`pt-6`,children:[(0,W.jsx)(j,{id:`commandName`,value:r,onChange:e=>a(e.target.value),placeholder:`e.g. review`,disabled:p}),r?(0,W.jsxs)(`p`,{className:s(i.caption,`mt-2`),children:[`Command: `,(0,W.jsxs)(`span`,{className:`font-mono`,children:[`/`,h||`...`]})]}):null]}),(0,W.jsx)(I,{title:`Description`,controlLayout:`stack`,className:`pt-6`,children:(0,W.jsx)(j,{id:`commandDescription`,value:o,onChange:e=>c(e.target.value),placeholder:`Brief description shown in autocomplete`,disabled:p})}),(0,W.jsx)(I,{title:`Argument Hint`,description:`Shows after the command name to guide users what to type`,controlLayout:`stack`,className:`pt-6`,children:(0,W.jsx)(j,{id:`argumentHint`,value:l,onChange:e=>u(e.target.value),placeholder:`e.g. <focus-area> or <branch-name>`,disabled:p})}),(0,W.jsx)(I,{title:`Mode`,description:d==="default"?`Standard chat mode`:`Activates plan mode when this command is used`,controlLayout:`stack`,className:`pt-6`,children:(0,W.jsxs)(ke,{value:d,onValueChange:e=>f(e),className:`flex gap-4`,disabled:p,children:[(0,W.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,W.jsx)(Q,{value:`default`,id:`mode-default`}),(0,W.jsx)(F,{htmlFor:`mode-default`,className:s(i.labelNormal,`cursor-pointer`),children:`Default`})]}),(0,W.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,W.jsx)(Q,{value:`plan`,id:`mode-plan`}),(0,W.jsx)(F,{htmlFor:`mode-plan`,className:s(i.labelNormal,`cursor-pointer`),children:`Plan`})]})]})}),(0,W.jsx)(z,{onContinue:()=>void _(),disabled:!g,creating:p})]})]})}):(0,W.jsx)(A,{title:`No project selected`,children:`Please select a project to add a slash command.`})}function je(e,t){let[n,r]=(0,U.useState)([]),[i,a]=(0,U.useState)(!0),[o,s]=(0,U.useState)(new Map),c=(0,U.useCallback)(async()=>{if(!t){a(!1),r([]),s(new Map);return}a(!0);try{let e=(await x(t)).filter(function(e){return e.scope===`project`&&!e.isBuiltIn});r(e),s(new Map(e.map(e=>[e.name,e.filePath])))}catch{r([]),s(new Map)}finally{a(!1)}},[t]);return(0,U.useLayoutEffect)(()=>{t&&a(!0)},[e,t]),(0,U.useEffect)(()=>{c()},[c]),{commands:n,loading:i,installedCommands:o,setInstalledCommands:s,loadCommands:c}}function Me(){let e=(0,H.c)(6),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0];let[n,r]=(0,U.useState)(t),[i,a]=(0,U.useState)(!0),o,s;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(o=()=>{a(!0),b().then(r).catch(()=>r([])).finally(()=>a(!1))},s=[],e[1]=o,e[2]=s):(o=e[1],s=e[2]),(0,U.useEffect)(o,s);let c;return e[3]!==i||e[4]!==n?(c={popularCommands:n,loadingPopularCommands:i},e[3]=i,e[4]=n,e[5]=c):c=e[5],c}function Ne(e){let t=e.metadata?.description?.trim();return t&&t.length>0?t:`No description`}function Pe(e,t){return e.filter(e=>!t.has(e.name))}function Fe(e,t){let n=(0,H.c)(3),r;return n[0]!==t||n[1]!==e?(r=function(n){e(n),t(`explorer`)},n[0]=t,n[1]=e,n[2]=r):r=n[2],r}function Ie(e){return(0,U.useCallback)(async function(t){e.setDeleting(!0);try{if(!e.selectedThreadId)return;await _(t.filePath,e.selectedThreadId),e.setExplorerClearPath(t.filePath),e.triggerExplorerRefresh(),e.setInstalledCommands(e=>{let n=new Map(e);return n.delete(t.name),n}),D({title:`Command removed`,description:`/${t.name}`}),e.setDeleteConfirm(null),await e.loadCommands()}catch(e){D({title:`Error`,description:e instanceof Error?e.message:`Failed to remove command`,variant:`destructive`})}finally{e.setDeleting(!1)}},[e.loadCommands,e.selectedThreadId,e.triggerExplorerRefresh,e.setExplorerClearPath])}function Le(e){return(0,U.useCallback)(async function(t){if(!(!e.selectedThreadId||e.installedCommands.has(t.name)))try{if(t.gitHubRepo&&t.gitHubFolder){let n=`.agents/commands`;await y(e.selectedThreadId,t.gitHubRepo,t.gitHubFolder,n);let r=`${n}/${t.name}.md`;e.setInstalledCommands(e=>new Map(e).set(t.name,r))}else{let n=await v(t.name,t.content,{description:t.description,argumentHint:t.argumentHint},`project`,e.selectedThreadId);e.setInstalledCommands(e=>new Map(e).set(t.name,n.filePath))}e.triggerExplorerRefresh(),e.loadCommands(),D({title:`Command installed`,description:`/${t.name}`})}catch(e){D({title:`Error`,description:e instanceof Error?e.message:`Failed to install command`,variant:`destructive`})}},[e.selectedThreadId,e.installedCommands,e.triggerExplorerRefresh,e.loadCommands])}function Re(){let e=(0,H.c)(7),t=a(Be),n=a(ze),{openChatDockPanel:r}=k(),{setPendingExplorerPath:i,triggerExplorerRefresh:o,setExplorerClearPath:s}=E(),c;return e[0]!==r||e[1]!==t||e[2]!==n||e[3]!==s||e[4]!==i||e[5]!==o?(c={selectedProjectId:t,selectedThreadId:n,openChatDockPanel:r,setPendingExplorerPath:i,triggerExplorerRefresh:o,setExplorerClearPath:s},e[0]=r,e[1]=t,e[2]=n,e[3]=s,e[4]=i,e[5]=o,e[6]=c):c=e[6],c}function ze(e){return e.selectedThreadId}function Be(e){return e.selectedProjectId}function Ve(){let e=(0,H.c)(5),[t,n]=(0,U.useState)(!1),[r,i]=(0,U.useState)(null),[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(``),l;return e[0]!==s||e[1]!==r||e[2]!==a||e[3]!==t?(l={showAddDialog:t,setShowAddDialog:n,deleteConfirm:r,setDeleteConfirm:i,deleting:a,setDeleting:o,availableSearch:s,setAvailableSearch:c},e[0]=s,e[1]=r,e[2]=a,e[3]=t,e[4]=l):l=e[4],l}function He(e,t){return e?`${e}:${t??``}`:null}function Ue(){let e=(0,H.c)(41),t=Re(),n=Ve(),{selectedProjectId:r,selectedThreadId:i,openChatDockPanel:a,setPendingExplorerPath:o,triggerExplorerRefresh:s,setExplorerClearPath:c}=t,{showAddDialog:l,setShowAddDialog:u,deleteConfirm:d,setDeleteConfirm:f,deleting:p,setDeleting:m,availableSearch:h,setAvailableSearch:g}=n,{commands:_,loading:v,installedCommands:y,setInstalledCommands:b,loadCommands:x}=je(r,i),{popularCommands:S,loadingPopularCommands:C}=Me(),w;e[0]!==r||e[1]!==i?(w=He(r,i),e[0]=r,e[1]=i,e[2]=w):w=e[2];let T;e[3]!==v||e[4]!==C?(T=[v,C],e[3]=v,e[4]=C,e[5]=T):T=e[5];let E=R(w,T),D=Fe(o,a),O;e[6]!==x||e[7]!==i||e[8]!==f||e[9]!==m||e[10]!==c||e[11]!==b||e[12]!==s?(O={selectedThreadId:i,loadCommands:x,triggerExplorerRefresh:s,setExplorerClearPath:c,setDeleting:m,setDeleteConfirm:f,setInstalledCommands:b},e[6]=x,e[7]=i,e[8]=f,e[9]=m,e[10]=c,e[11]=b,e[12]=s,e[13]=O):O=e[13];let k=Ie(O),A;e[14]!==y||e[15]!==x||e[16]!==i||e[17]!==b||e[18]!==s?(A={selectedThreadId:i,installedCommands:y,setInstalledCommands:b,triggerExplorerRefresh:s,loadCommands:x},e[14]=y,e[15]=x,e[16]=i,e[17]=b,e[18]=s,e[19]=A):A=e[19];let j=Le(A),M;e[20]!==y||e[21]!==S?(M=Pe(S,y),e[20]=y,e[21]=S,e[22]=M):M=e[22];let N=M,P;return e[23]!==N||e[24]!==h||e[25]!==_||e[26]!==d||e[27]!==p||e[28]!==k||e[29]!==j||e[30]!==D||e[31]!==x||e[32]!==E||e[33]!==r||e[34]!==i||e[35]!==g||e[36]!==f||e[37]!==u||e[38]!==l||e[39]!==s?(P={selectedProjectId:r,selectedThreadId:i,commands:_,showAddDialog:l,setShowAddDialog:u,deleteConfirm:d,setDeleteConfirm:f,deleting:p,availableSearch:h,setAvailableSearch:g,pageLoading:E,availableCommands:N,handleDelete:k,handleOpenInExplorer:D,getCommandSubtitle:Ne,handleInstallPopular:j,loadCommands:x,triggerExplorerRefresh:s},e[23]=N,e[24]=h,e[25]=_,e[26]=d,e[27]=p,e[28]=k,e[29]=j,e[30]=D,e[31]=x,e[32]=E,e[33]=r,e[34]=i,e[35]=g,e[36]=f,e[37]=u,e[38]=l,e[39]=s,e[40]=P):P=e[40],P}function $(){let e=(0,H.c)(63),{selectedProjectId:t,selectedThreadId:n,commands:r,showAddDialog:a,setShowAddDialog:o,deleteConfirm:l,setDeleteConfirm:d,deleting:f,availableSearch:p,setAvailableSearch:m,pageLoading:h,availableCommands:g,handleDelete:_,handleOpenInExplorer:v,getCommandSubtitle:y,handleInstallPopular:b,loadCommands:x,triggerExplorerRefresh:S}=Ue();if(!t){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,W.jsx)(A,{children:`Select a project to manage slash commands.`}),e[0]=t):t=e[0],t}let C;e[1]===o?C=e[2]:(C=()=>o(!0),e[1]=o,e[2]=C);let w=!n,T;e[3]!==C||e[4]!==w?(T=(0,W.jsx)(ce,{title:`Installed Slash Commands`,tooltip:`Project slash commands you run with / in chat.`,action:(0,W.jsx)(u,{onClick:C,disabled:w,children:`Add Command`})}),e[3]=C,e[4]=w,e[5]=T):T=e[5];let E;e[6]===n?E=e[7]:(E=!n&&(0,W.jsx)(te,{children:`Select a thread to add or install slash commands.`}),e[6]=n,e[7]=E);let D;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(D={icon:c,title:`No slash commands installed`,description:`Add slash commands to create quick actions in chat.`},e[8]=D):D=e[8];let O;e[9]===y?O=e[10]:(O=e=>(0,W.jsxs)(`div`,{className:`min-w-0 text-left`,children:[(0,W.jsxs)(`div`,{className:s(i.body,`truncate`),children:[`/`,e.name]}),(0,W.jsx)(`div`,{className:s(i.compact,`truncate text-muted-foreground`),children:y(e)})]}),e[9]=y,e[10]=O);let k;e[11]===v?k=e[12]:(k=e=>v(e.filePath),e[11]=v,e[12]=k);let j;e[13]!==r||e[14]!==d||e[15]!==O||e[16]!==k?(j=(0,W.jsx)(se,{showHeader:!1,loading:!1,items:r,emptyState:D,getKey:Xe,columnsClassName:`grid-cols-[minmax(0,1fr)_auto_1.75rem]`,renderContent:O,renderMiddle:Ye,onItemClick:k,itemClickLabel:Je,onDelete:d,deleteAriaLabel:qe,deleteTooltip:`Remove this slash command from the project`}),e[13]=r,e[14]=d,e[15]=O,e[16]=k,e[17]=j):j=e[17];let M;e[18]!==E||e[19]!==j?(M=(0,W.jsxs)(re,{className:`pt-6`,children:[E,j]}),e[18]=E,e[19]=j,e[20]=M):M=e[20];let P;e[21]!==T||e[22]!==M?(P=(0,W.jsxs)(ee,{className:`shrink-0`,children:[T,M]}),e[21]=T,e[22]=M,e[23]=P):P=e[23];let F;e[24]!==b||e[25]!==n?(F=e=>(0,W.jsx)(u,{type:`button`,variant:`outline`,size:`sm`,className:`opacity-0 transition-opacity group-hover:opacity-100 focus-visible:opacity-100`,disabled:!n,onClick:()=>void b(e),children:`Install`}),e[24]=b,e[25]=n,e[26]=F):F=e[26];let I;e[27]!==g||e[28]!==p||e[29]!==m||e[30]!==F?(I=(0,W.jsx)(oe,{title:`Available Slash Commands`,tooltip:`Browse and install slash commands from the catalog.`,emptyLabel:`No available commands found.`,searchValue:p,onSearchChange:m,items:g,getKey:Ke,renderName:Ge,getSubtitle:We,renderAction:F}),e[27]=g,e[28]=p,e[29]=m,e[30]=F,e[31]=I):I=e[31];let L;e[32]!==h||e[33]!==I||e[34]!==P?(L=(0,W.jsxs)(N,{loading:h,children:[P,I]}),e[32]=h,e[33]=I,e[34]=P,e[35]=L):L=e[35];let R;e[36]!==x||e[37]!==o||e[38]!==S?(R=()=>{o(!1),x(),S()},e[36]=x,e[37]=o,e[38]=S,e[39]=R):R=e[39];let z;e[40]!==t||e[41]!==n||e[42]!==R?(z=(0,W.jsx)(ne,{className:`max-w-2xl max-h-[90vh] overflow-y-auto p-0`,children:(0,W.jsx)(Ae,{projectId:t,threadId:n,onCommandCreated:R})}),e[40]=t,e[41]=n,e[42]=R,e[43]=z):z=e[43];let B;e[44]!==o||e[45]!==a||e[46]!==z?(B=(0,W.jsx)(ie,{open:a,onOpenChange:o,children:z}),e[44]=o,e[45]=a,e[46]=z,e[47]=B):B=e[47];let V=l!==null,U;e[48]===d?U=e[49]:(U=e=>!e&&d(null),e[48]=d,e[49]=U);let G=`Are you sure you want to delete "/${l?.name}"? This action cannot be undone.`,K;e[50]!==l||e[51]!==_?(K=()=>{l&&_(l)},e[50]=l,e[51]=_,e[52]=K):K=e[52];let q;e[53]!==f||e[54]!==V||e[55]!==U||e[56]!==G||e[57]!==K?(q=(0,W.jsx)(ae,{open:V,onOpenChange:U,title:`Delete Slash Command`,description:G,onConfirm:K,confirming:f}),e[53]=f,e[54]=V,e[55]=U,e[56]=G,e[57]=K,e[58]=q):q=e[58];let J;return e[59]!==L||e[60]!==B||e[61]!==q?(J=(0,W.jsxs)(W.Fragment,{children:[L,B,q]}),e[59]=L,e[60]=B,e[61]=q,e[62]=J):J=e[62],J}function We(e){return e.description}function Ge(e){return`/${e.name}`}function Ke(e){return e.id}function qe(e){return`Delete /${e.name}`}function Je(e){return`Open /${e.name} in Files`}function Ye(e){return e.metadata?.mode?(0,W.jsx)(`span`,{className:s(i.compact,`bg-muted px-1.5 py-0.5 rounded flex-shrink-0`),children:e.metadata.mode}):(0,W.jsx)(`div`,{})}function Xe(e){return e.filePath}export{$ as SettingsSlashCommandsView,$ as default};
@@ -0,0 +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{Lt as i,Pt as a,R as o}from"./dist-DZtmmQ-F.js";import{t as s}from"./utils-BCj_kT9l.js";import{P as c}from"./lucide-react-CNNzKD4G.js";import{t as l}from"./button-DhxraVUW.js";import{ft as u,hn as d}from"./api-B_ZIptgC.js";import{n as f}from"./use-toast-xpb5jNtN.js";import{Mt as p}from"./index-DdJcjvu2.js";import{t as m}from"./delete-confirm-dialog-Ciwqi6ts.js";import{i as h,n as g,o as _,r as v,t as y}from"./table-DCmeRDBK.js";import{n as b,t as x}from"./toggle-group-Dl5P_F6a.js";var S=t(),C=e(n(),1),w=o(`app.use-latency-stats.hook`),T={tools:[],models:[]};function E(){let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)([]),[i,a]=(0,C.useState)(!0),[o,s]=(0,C.useState)(!1),[c,l]=(0,C.useState)(null),f=(0,C.useCallback)(async function(){try{l(null);let e=await u();t(e.tools??T.tools),r(e.models??T.models)}catch(e){w.error(`Failed to load latency statistics`,e),l(e instanceof Error?e.message:`Failed to load statistics`)}finally{a(!1)}},[]),p=(0,C.useCallback)(async function(){s(!0);try{return l(null),await d(),t(T.tools),r(T.models),!0}catch(e){return w.error(`Failed to reset latency statistics`,e),l(e instanceof Error?e.message:`Failed to reset statistics`),!1}finally{s(!1)}},[]);return(0,C.useEffect)(()=>{f()},[f]),{tools:e,models:n,isLoading:i,isResetting:o,error:c,refresh:f,reset:p}}var D=r(),O=[{value:`tools`,label:`Tools`},{value:`models`,label:`Models`}],k=`inline-flex rounded-full border bg-muted/40 p-1`,A=`rounded-full border-0 px-4 data-[state=on]:bg-foreground data-[state=on]:text-background data-[state=on]:shadow-sm`,j=`flex items-center gap-2`,M=`gap-1.5 text-muted-foreground hover:text-foreground`,N=`h-9`,P=`table-fixed`,F=s(i.body,`py-1.5`),I=s(i.body,`w-28 py-1.5 text-right tabular-nums`),L=s(i.body,`w-32 py-1.5 text-right tabular-nums`),R=`h-9 w-28 bg-transparent py-2 text-right`,z=`h-9 w-32 bg-transparent py-2 text-right`;function B(e){if(!Number.isFinite(e)||e<0)return`—`;if(e<1e3)return`${Math.round(e)}ms`;let t=e/1e3;return t<10?`${t.toFixed(1)}s`:`${Math.round(t)}s`}var V=`No tool call timings recorded yet. Stats appear after agent tool calls complete.`,H=`No model timings recorded yet. Stats appear after assistant responses complete.`;function U(e){return O.some(t=>t.value===e)}function W(e){let t=(0,S.c)(3),{view:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=s(`w-full caption-bottom`,P,i.body),t[0]=r):r=t[0];let a;return t[1]===n?a=t[2]:(a=(0,D.jsx)(`table`,{className:r,children:(0,D.jsx)(`thead`,{className:`[&_tr]:border-b [&_tr]:border-table-border`,children:(0,D.jsx)(`tr`,{children:n===`tools`?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(h,{className:`h-9 bg-transparent py-2`,children:`Tool`}),(0,D.jsx)(h,{className:R,children:`Calls`}),(0,D.jsx)(h,{className:z,children:`Latency`})]}):(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(h,{className:`h-9 bg-transparent py-2`,children:`Model`}),(0,D.jsx)(h,{className:R,children:`Requests`}),(0,D.jsx)(h,{className:z,children:`Latency`})]})})})}),t[1]=n,t[2]=a),a}function G(e){let t=(0,S.c)(6),{view:n,onViewChange:r}=e,i;t[0]===r?i=t[1]:(i=function(e){U(e)&&r(e)},t[0]=r,t[1]=i);let a=i,o;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=O.map(K),t[2]=o):o=t[2];let s;return t[3]!==a||t[4]!==n?(s=(0,D.jsx)(x,{type:`single`,value:n,onValueChange:a,"aria-label":`Statistics view`,variant:`outline`,className:k,children:o}),t[3]=a,t[4]=n,t[5]=s):s=t[5],s}function K(e){return(0,D.jsx)(b,{value:e.value,"aria-label":e.label,className:A,children:e.label},e.value)}function q(e){let t=(0,S.c)(5),{isResetting:n,canReset:r,onReset:i}=e,a=n||!r,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,D.jsx)(c,{}),t[0]=o):o=t[0];let s=n?`Resetting...`:`Reset`,u;return t[1]!==i||t[2]!==a||t[3]!==s?(u=(0,D.jsxs)(l,{variant:`outline`,size:`sm`,className:M,disabled:a,onClick:i,children:[o,s]}),t[1]=i,t[2]=a,t[3]=s,t[4]=u):u=t[4],u}function J(e){let t=(0,S.c)(10),{view:n,isResetting:r,canReset:i,onViewChange:a,onResetClick:o}=e,s;t[0]!==a||t[1]!==n?(s=(0,D.jsx)(G,{view:n,onViewChange:a}),t[0]=a,t[1]=n,t[2]=s):s=t[2];let c;t[3]!==i||t[4]!==r||t[5]!==o?(c=(0,D.jsx)(q,{isResetting:r,canReset:i,onReset:o}),t[3]=i,t[4]=r,t[5]=o,t[6]=c):c=t[6];let l;return t[7]!==s||t[8]!==c?(l=(0,D.jsxs)(`div`,{className:j,children:[s,c]}),t[7]=s,t[8]=c,t[9]=l):l=t[9],l}function Y(e){let t=(0,S.c)(4),{tools:n}=e,r;t[0]===n?r=t[1]:(r=n.map(X),t[0]=n,t[1]=r);let i;return t[2]===r?i=t[3]:(i=(0,D.jsx)(y,{className:P,children:(0,D.jsx)(g,{children:r})}),t[2]=r,t[3]=i),i}function X(e){return(0,D.jsxs)(_,{className:N,children:[(0,D.jsx)(v,{className:F,children:a(e.toolName)}),(0,D.jsx)(v,{className:I,children:e.callCount.toLocaleString()}),(0,D.jsx)(v,{className:L,children:B(e.averageDurationMs)})]},e.toolName)}function Z(e){let t=(0,S.c)(4),{models:n}=e,r;t[0]===n?r=t[1]:(r=n.map(Q),t[0]=n,t[1]=r);let i;return t[2]===r?i=t[3]:(i=(0,D.jsx)(y,{className:P,children:(0,D.jsx)(g,{children:r})}),t[2]=r,t[3]=i),i}function Q(e){return(0,D.jsxs)(_,{className:N,children:[(0,D.jsx)(v,{className:F,children:e.modelId}),(0,D.jsx)(v,{className:I,children:e.requestCount.toLocaleString()}),(0,D.jsx)(v,{className:L,children:B(e.averageDurationMs)})]},e.modelId)}function $(e){let t=(0,S.c)(7),{view:n,isLoading:r,tools:a,models:o}=e;if(r){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,D.jsx)(`p`,{className:i.bodyMuted,children:`Loading…`}),t[0]=e):e=t[0],e}if(n===`tools`){if(a.length===0){let e;return t[1]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,D.jsx)(`p`,{className:i.bodyMuted,children:V}),t[1]=e):e=t[1],e}let e;return t[2]===a?e=t[3]:(e=(0,D.jsx)(Y,{tools:a}),t[2]=a,t[3]=e),e}if(o.length===0){let e;return t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,D.jsx)(`p`,{className:i.bodyMuted,children:H}),t[4]=e):e=t[4],e}let s;return t[5]===o?s=t[6]:(s=(0,D.jsx)(Z,{models:o}),t[5]=o,t[6]=s),s}function ee(){let e=(0,S.c)(31),{tools:t,models:n,isLoading:r,isResetting:a,error:o,reset:c}=E(),{toast:l}=f(),[u,d]=(0,C.useState)(`tools`),[h,g]=(0,C.useState)(!1),_=t.length>0||n.length>0,v=!r&&(u===`tools`?t.length>0:n.length>0),y=!r&&_,b;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(b=function(){g(!0)},e[0]=b):b=e[0];let x=b,w;e[1]!==c||e[2]!==l?(w=async function(){if(g(!1),await c()){l({title:`Statistics cleared`,description:`All tool and model latency data has been reset.`});return}l({title:`Error`,description:`Failed to reset statistics. Please try again.`,variant:`destructive`})},e[1]=c,e[2]=l,e[3]=w):w=e[3];let T=w,O;e[4]!==v||e[5]!==u?(O=v?(0,D.jsx)(W,{view:u}):void 0,e[4]=v,e[5]=u,e[6]=O):O=e[6];let k;e[7]!==y||e[8]!==a||e[9]!==u?(k=(0,D.jsx)(J,{view:u,isResetting:a,canReset:y,onViewChange:d,onResetClick:x}),e[7]=y,e[8]=a,e[9]=u,e[10]=k):k=e[10];let A;e[11]===o?A=e[12]:(A=o?(0,D.jsx)(`p`,{className:s(i.bodyMuted,`mb-6 text-destructive`),children:o}):null,e[11]=o,e[12]=A);let j;e[13]!==r||e[14]!==n||e[15]!==t||e[16]!==u?(j=(0,D.jsx)($,{view:u,isLoading:r,tools:t,models:n}),e[13]=r,e[14]=n,e[15]=t,e[16]=u,e[17]=j):j=e[17];let M;e[18]!==O||e[19]!==k||e[20]!==A||e[21]!==j?(M=(0,D.jsxs)(p,{title:`Statistics`,description:`Average latency and request counts for tool calls and model responses.`,tableHeader:O,action:k,children:[A,j]}),e[18]=O,e[19]=k,e[20]=A,e[21]=j,e[22]=M):M=e[22];let N;e[23]===T?N=e[24]:(N=()=>void T(),e[23]=T,e[24]=N);let P;e[25]!==h||e[26]!==N?(P=(0,D.jsx)(m,{open:h,onOpenChange:g,title:`Reset statistics?`,description:`This clears all recorded tool call and model response latency data. This action cannot be undone.`,onConfirm:N,confirmLabel:`Reset`,confirmingLabel:`Resetting...`}),e[25]=h,e[26]=N,e[27]=P):P=e[27];let F;return e[28]!==M||e[29]!==P?(F=(0,D.jsxs)(D.Fragment,{children:[M,P]}),e[28]=M,e[29]=P,e[30]=F):F=e[30],F}export{ee as default};
@@ -0,0 +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{Lt as i,d as a}from"./dist-DZtmmQ-F.js";import{Z as o,q as s,r as c}from"./store-D4D62vkY.js";import{t as l,u}from"./utils-BCj_kT9l.js";import{d,dt as f,wn as p,xn as m}from"./lucide-react-CNNzKD4G.js";import{t as h}from"./button-DhxraVUW.js";import{i as g,n as _,t as v}from"./tooltip-Cg_EhO9M.js";import{t as y}from"./progress-indicator-C7Kj9U3t.js";import{n as ee}from"./use-toast-xpb5jNtN.js";import{Ct as te,F as ne,Wn as re,jt as ie,nt as ae,tn as oe}from"./index-DdJcjvu2.js";import{t as se}from"./delete-confirm-dialog-Ciwqi6ts.js";import{i as ce,r as b}from"./table-DCmeRDBK.js";import{t as le}from"./settings-list-n-CrPPNl.js";var x=t(),ue=e(n(),1),S=r(),de=36,fe=`table-fixed`,pe=`h-9 w-48 bg-transparent py-2`,me=`h-9 bg-transparent py-2`,he=`h-9 w-32 bg-transparent py-2`,ge=`h-9 w-10 bg-transparent py-2`,_e=l(i.bodyMuted,`w-48 truncate py-1.5`),ve=l(i.body,`truncate py-1.5`),ye=l(i.bodyMuted,`w-32 truncate py-1.5`),be=`w-10 py-1.5`,xe={column:`project`,direction:`asc`};function Se(e){let t=(0,x.c)(4),n;if(t[0]!==e){let{style:r,...a}=e,o;t[2]===r?o=t[3]:(o={...r,width:`100%`},t[2]=r,t[3]=o),n=(0,S.jsx)(`table`,{...a,style:o,className:l(`w-full caption-bottom`,fe,i.body,a.className)}),t[0]=e,t[1]=n}else n=t[1];return n}function Ce(e){let t=(0,x.c)(5),n;t[0]===e.className?n=t[1]:(n=l(`hidden`,e.className),t[0]=e.className,t[1]=n);let r;return t[2]!==e||t[3]!==n?(r=(0,S.jsx)(`thead`,{...e,className:n}),t[2]=e,t[3]=n,t[4]=r):r=t[4],r}function we(e){let t=(0,x.c)(5),n;t[0]===e.className?n=t[1]:(n=l(`[&_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,S.jsx)(`tbody`,{...e,className:n}),t[2]=e,t[3]=n,t[4]=r):r=t[4],r}function Te(e){let t=(0,x.c)(5),n;t[0]===e.className?n=t[1]:(n=l(`frosted-scrollbar`,e.className),t[0]=e.className,t[1]=n);let r;return t[2]!==e||t[3]!==n?(r=(0,S.jsx)(`div`,{...e,className:n}),t[2]=e,t[3]=n,t[4]=r):r=t[4],r}function Ee(e,t){return t?a(t,e):e}function C(e,t,n){switch(t){case`project`:return e.projectName;case`path`:return Ee(e.path,n);case`branch`:return e.branch}}function De(e){let t=[];for(let n of e){let e=u(n);for(let r of n.threads)t.push({threadId:r.threadId,projectId:n.projectId,projectName:e,path:r.path,branch:r.currentBranch||r.title})}return t}function Oe(e,t,n,r){return[...e].sort((e,i)=>{let a=C(e,t,r).localeCompare(C(i,t,r),void 0,{sensitivity:`base`});return n===`asc`?a:-a})}function ke(e){let t=(0,x.c)(17),{label:n,column:r,sortColumn:i,sortDirection:a,className:o,onSort:s}=e,c=i===r,u=a===`asc`?m:p,d=c?`text-foreground`:`text-muted-foreground`,f;t[0]===d?f=t[1]:(f=l(`inline-flex items-center gap-1 transition-colors hover:text-foreground`,d),t[0]=d,t[1]=f);let h;t[2]!==r||t[3]!==s?(h=()=>s(r),t[2]=r,t[3]=s,t[4]=h):h=t[4];let g=c?a===`asc`?`ascending`:`descending`:`none`,_;t[5]!==u||t[6]!==c?(_=c?(0,S.jsx)(u,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":`true`}):null,t[5]=u,t[6]=c,t[7]=_):_=t[7];let v;t[8]!==n||t[9]!==f||t[10]!==h||t[11]!==g||t[12]!==_?(v=(0,S.jsxs)(`button`,{type:`button`,className:f,onClick:h,"aria-sort":g,children:[n,_]}),t[8]=n,t[9]=f,t[10]=h,t[11]=g,t[12]=_,t[13]=v):v=t[13];let y;return t[14]!==o||t[15]!==v?(y=(0,S.jsx)(ce,{className:o,children:v}),t[14]=o,t[15]=v,t[16]=y):y=t[16],y}function w(){let e=(0,x.c)(55),t=c(Re),n=c(Le),r=c(Ie),a=c(Fe),s=c(Pe),u=c(Ne),p=c(Me),m=c(je),{handleDeleteThread:C,refreshWorkspaces:w}=re(),{toast:ze}=ee(),[T,Be]=(0,ue.useState)(null),[E,Ve]=(0,ue.useState)(xe),He=ne()?`Finder`:`Explorer`,D,O;e[0]===w?(D=e[1],O=e[2]):(D=()=>{w()},O=[w],e[0]=w,e[1]=D,e[2]=O),(0,ue.useEffect)(D,O);let k;e[3]!==n||e[4]!==t||e[5]!==E.column||e[6]!==E.direction?(k=Oe(De(t),E.column,E.direction,n),e[3]=n,e[4]=t,e[5]=E.column,e[6]=E.direction,e[7]=k):k=e[7];let A=k,j;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(j=function(e){Ve(t=>t.column===e?{column:e,direction:t.direction===`asc`?`desc`:`asc`}:{column:e,direction:`asc`})},e[8]=j):j=e[8];let Ue=j,M;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(M=function(e){let{...t}=e;return(0,S.jsx)(`tr`,{...t,className:l(`group border-0 transition-colors hover:bg-muted/50`,t.className)})},e[9]=M):M=e[9];let We=M,N;e[10]===Symbol.for(`react.memo_cache_sentinel`)?(N={Table:Se,TableHead:Ce,TableBody:we,TableRow:We,Scroller:Te},e[10]=N):N=e[10];let Ge=N,P;e[11]!==C||e[12]!==T?(P=function(){if(!T)return;let{projectId:e,threadId:t}=T;Be(null),C(e,t)},e[11]=C,e[12]=T,e[13]=P):P=e[13];let F=P,I;e[14]===ze?I=e[15]:(I=async function(e){try{await ae(e.threadId,`.`)}catch{ze({title:`Error`,description:`Failed to open folder in ${He}.`,variant:`destructive`})}},e[14]=ze,e[15]=I);let L=I,R;e[16]!==n||e[17]!==u||e[18]!==a||e[19]!==L||e[20]!==m||e[21]!==s||e[22]!==p?(R=function(e,t){let r=a.includes(t.threadId),c=o(t.threadId,s,p,m),y=u.includes(t.threadId),ee=!c&&!r&&!y,te=Ee(t.path,n);return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(b,{className:_e,children:t.projectName}),(0,S.jsx)(b,{className:ve,children:(0,S.jsx)(`button`,{type:`button`,className:l(i.body,`block w-full truncate text-left hover:underline`),title:`${t.path}\nOpen in ${He}`,onClick:()=>void L(t),children:te})}),(0,S.jsx)(b,{className:ye,children:t.branch}),(0,S.jsx)(b,{className:be,children:(0,S.jsx)(`div`,{className:`ml-auto flex h-7 w-7 items-center justify-center`,children:r?(0,S.jsx)(f,{className:`h-4 w-4 animate-spin text-muted-foreground`,"aria-label":`Deleting`}):ee?(0,S.jsxs)(v,{children:[(0,S.jsx)(g,{asChild:!0,children:(0,S.jsxs)(h,{variant:`ghost`,size:`icon-sm`,className:le,onClick:e=>{e.stopPropagation(),Be(t)},children:[(0,S.jsx)(d,{}),(0,S.jsx)(`span`,{className:`sr-only`,children:`Delete workspace`})]})}),(0,S.jsx)(_,{side:`left`,children:`Delete branch and files from the repo`})]}):null})})]})},e[16]=n,e[17]=u,e[18]=a,e[19]=L,e[20]=m,e[21]=s,e[22]=p,e[23]=R):R=e[23];let z=R,B;e[24]===Symbol.for(`react.memo_cache_sentinel`)?(B=l(`w-full caption-bottom`,fe,i.body),e[24]=B):B=e[24];let V,H,U;e[25]!==E.column||e[26]!==E.direction?(V=(0,S.jsx)(ke,{label:`Project`,column:`project`,sortColumn:E.column,sortDirection:E.direction,className:pe,onSort:Ue}),H=(0,S.jsx)(ke,{label:`Path`,column:`path`,sortColumn:E.column,sortDirection:E.direction,className:me,onSort:Ue}),U=(0,S.jsx)(ke,{label:`Branch`,column:`branch`,sortColumn:E.column,sortDirection:E.direction,className:he,onSort:Ue}),e[25]=E.column,e[26]=E.direction,e[27]=V,e[28]=H,e[29]=U):(V=e[27],H=e[28],U=e[29]);let W;e[30]===Symbol.for(`react.memo_cache_sentinel`)?(W=(0,S.jsx)(ce,{className:ge,children:(0,S.jsx)(`span`,{className:`sr-only`,children:`Actions`})}),e[30]=W):W=e[30];let G;e[31]!==V||e[32]!==H||e[33]!==U?(G=(0,S.jsx)(`table`,{className:B,children:(0,S.jsx)(`thead`,{className:`[&_tr]:border-b [&_tr]:border-table-border`,children:(0,S.jsxs)(`tr`,{children:[V,H,U,W]})})}),e[31]=V,e[32]=H,e[33]=U,e[34]=G):G=e[34];let Ke=G,K=A.length>0?Ke:void 0,q;e[35]===K?q=e[36]:(q=(0,S.jsx)(te,{title:`Storage`,description:`Workspaces and branches stored on disk across all projects.`,tableHeader:K}),e[35]=K,e[36]=q);let J;e[37]!==r||e[38]!==z||e[39]!==A?(J=(0,S.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:r&&A.length===0?(0,S.jsx)(y,{centered:!0,label:`Loading workspaces...`,size:`lg`}):A.length===0?(0,S.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,S.jsxs)(`div`,{className:`max-w-md space-y-2 text-center`,children:[(0,S.jsx)(`h3`,{className:i.emptyStateTitle,children:`No workspaces`}),(0,S.jsx)(`p`,{className:i.bodyMuted,children:`No branches or workspaces found yet.`})]})}):(0,S.jsx)(oe,{style:{height:`100%`},data:A,computeItemKey:Ae,itemContent:z,defaultItemHeight:de,increaseViewportBy:de*5,components:Ge})}),e[37]=r,e[38]=z,e[39]=A,e[40]=J):J=e[40];let Y;e[41]!==q||e[42]!==J?(Y=(0,S.jsxs)(ie,{className:`flex w-full max-w-none min-w-0 min-h-0 flex-1 flex-col pb-0 pt-0`,children:[q,J]}),e[41]=q,e[42]=J,e[43]=Y):Y=e[43];let qe=T!==null,X;e[44]===Symbol.for(`react.memo_cache_sentinel`)?(X=e=>{e||Be(null)},e[44]=X):X=e[44];let Z;e[45]!==n||e[46]!==T?(Z=T?`Are you sure you want to delete the workspace at "${Ee(T.path,n)}"? This removes the branch and all its files. This action cannot be undone.`:``,e[45]=n,e[46]=T,e[47]=Z):Z=e[47];let Q;e[48]!==F||e[49]!==qe||e[50]!==Z?(Q=(0,S.jsx)(se,{open:qe,onOpenChange:X,title:`Delete workspace?`,description:Z,onConfirm:F,confirmLabel:`Delete`,confirmingLabel:`Deleting...`}),e[48]=F,e[49]=qe,e[50]=Z,e[51]=Q):Q=e[51];let $;return e[52]!==Y||e[53]!==Q?($=(0,S.jsxs)(`div`,{className:`flex h-full min-h-0 w-full min-w-0 flex-1 flex-col`,children:[Y,Q]}),e[52]=Y,e[53]=Q,e[54]=$):$=e[54],$}function Ae(e,t){return t.threadId}function je(e){return e.pendingChatMessage}function Me(e){return s(e.threadStreamingStates)}function Ne(e){return e.completedThreadIds}function Pe(e){return e.processingThreadIds}function Fe(e){return e.deletingThreadIds}function Ie(e){return e.projectsLoading}function Le(e){return e.cloneRootPath}function Re(e){return e.projects}export{w as default};
@@ -0,0 +1,2 @@
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{o as t,t as n}from"./react-vendor-Ee0-5T4I.js";import{Lt as r}from"./dist-DZtmmQ-F.js";import{t as i}from"./utils-BCj_kT9l.js";import{o as a}from"./lucide-react-CNNzKD4G.js";import{t as o}from"./button-DhxraVUW.js";import{cr as s,hr as c,kn as l,w as u}from"./api-B_ZIptgC.js";import{t as d}from"./use-toast-xpb5jNtN.js";import{At as f,B as p,Cr as m,Ct as h,Dt as g,Nt as _,Pt as v,St as y,Tr as b,bt as x,jt as S,wr as C,yt as w}from"./index-DdJcjvu2.js";import{t as T}from"./delete-confirm-dialog-Ciwqi6ts.js";import{t as E}from"./use-settings-page-loading-CpaBd260.js";import{i as D,r as O,s as k}from"./settings-list-n-CrPPNl.js";import{t as A}from"./use-installed-ai-files-BtR-wIuu.js";import{i as j,n as M,r as N}from"./slug-utils-Ccbyp4Mu.js";var P=e(t(),1),F=n();function I({threadId:e,onAgentCreated:t}){let[n,a]=(0,P.useState)(``),[o,s]=(0,P.useState)(``),[c,l]=(0,P.useState)(``),[g,v]=(0,P.useState)(!1),y=N(n),b=M(y),S=async()=>{if(!(!b||!o.trim()||!e)){v(!0);try{let n=await u(e,y,o.trim(),c.trim()||void 0);d({title:`Agent created`,description:`Agent '${y}' was created successfully.`}),a(``),s(``),l(``),t?.(n.path,`AGENTS.md`)}catch(e){d({title:`Error`,description:e instanceof Error?e.message:`Failed to create agent`,variant:`destructive`})}finally{v(!1)}}};return e?(0,F.jsx)(_,{children:(0,F.jsxs)(w,{children:[(0,F.jsx)(h,{title:`Add Agent`,description:`Saved as AGENT.md in .agents/agents.`,sticky:!0,className:`pr-10`}),(0,F.jsxs)(`div`,{children:[(0,F.jsxs)(x,{title:`Agent Name`,controlLayout:`stack`,className:`pt-6`,children:[(0,F.jsx)(m,{id:`agentName`,value:n,onChange:e=>a(e.target.value),placeholder:`e.g. Code Reviewer`,disabled:g}),n?(0,F.jsxs)(`p`,{className:i(r.caption,`mt-2`),children:[`Folder name: `,(0,F.jsx)(`span`,{className:`font-mono`,children:y||`...`})]}):null]}),(0,F.jsx)(x,{title:`Description`,controlLayout:`stack`,className:`pt-6`,children:(0,F.jsx)(p,{id:`agentDescription`,value:o,onChange:e=>s(e.target.value),placeholder:`Describe the agent's purpose and behavior...`,className:`resize-none min-h-[120px]`,disabled:g})}),(0,F.jsx)(x,{title:`Tools`,description:`Optional space-separated list of tools this agent can use`,controlLayout:`stack`,className:`pt-6`,children:(0,F.jsx)(m,{id:`agentTools`,value:c,onChange:e=>l(e.target.value),placeholder:`e.g. read grep glob`,disabled:g})}),(0,F.jsx)(j,{onContinue:()=>void S(),disabled:!b||!o.trim(),creating:g})]})]})}):(0,F.jsx)(f,{title:`No thread selected`,children:`Please select a thread to add an agent.`})}function L(e){let t=[];for(let n of e)n.path.startsWith(`.agents/agents/`)&&n.type===`folder`&&t.push(n),n.children&&n.children.length>0&&t.push(...L(n.children));return t}function R(){let{selectedProjectId:e,selectedThreadId:t,items:n,loading:u,deleteConfirm:p,setDeleteConfirm:m,deleting:h,installedFilePaths:_,setInstalledFilePaths:x,loadItems:w,handleDelete:j,handleOpenInExplorer:M,triggerExplorerRefresh:N}=A({findItems:L,installedPathSuffix:`/AGENT.md`,explorerPathSuffix:`/AGENT.md`,sortByName:!0,removedToastTitle:`Agent removed`}),[R,z]=(0,P.useState)(!1),[B,V]=(0,P.useState)([]),[H,U]=(0,P.useState)(!0),[W,G]=(0,P.useState)(``);(0,P.useEffect)(()=>{U(!0),s().then(V).catch(()=>V([])).finally(()=>U(!1))},[]);let K=E(e?`${e}:${t??``}`:null,[u,H]),q=(0,P.useCallback)(async e=>{let n=`.agents/agents/${e.id}/AGENT.md`;if(!(!t||_.has(n)))try{if(e.gitHubRepo&&e.gitHubFolder)await c(t,e.gitHubRepo,e.gitHubFolder,`.agents/agents/${e.id}`);else{let r=[`---`,`name: ${e.id}`,`description: ${e.description}`];e.tools&&r.push(`tools: ${e.tools}`),r.push(`---`,``,e.systemPrompt),await l(t,n,r.join(`
2
+ `))}x(e=>new Set(e).add(n)),N(),w(),d({title:`Agent installed`,description:e.name})}catch(e){d({title:`Error`,description:e instanceof Error?e.message:`Failed to install agent`,variant:`destructive`})}},[t,_,N,w]);return e?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(g,{loading:K,children:[(0,F.jsxs)(v,{className:`shrink-0`,children:[(0,F.jsx)(k,{title:`Installed Subagents`,tooltip:`Project subagents available for focused tasks.`,action:(0,F.jsx)(o,{onClick:()=>z(!0),disabled:!t,children:`Add Subagent`})}),(0,F.jsxs)(S,{className:`pt-6`,children:[!t&&(0,F.jsx)(y,{children:`Select a thread to add or install subagents.`}),(0,F.jsx)(O,{showHeader:!1,loading:!1,items:n,emptyState:{icon:a,title:`No subagents installed`,description:`Add subagents for specialized, focused tasks.`,bordered:!1},getKey:e=>e.id,columnsClassName:`grid-cols-[minmax(0,1fr)_1.75rem]`,renderContent:e=>(0,F.jsxs)(`div`,{className:`min-w-0 text-left`,children:[(0,F.jsx)(`div`,{className:i(r.body,`truncate`),children:e.name}),(0,F.jsx)(`div`,{className:i(r.compact,`truncate text-muted-foreground`),children:e.path})]}),onItemClick:e=>M(e.path),itemClickLabel:e=>`Open ${e.name} in Files`,onDelete:m,deleteAriaLabel:e=>`Delete ${e.name}`,deleteTooltip:`Remove this subagent from the project`})]})]}),(0,F.jsx)(D,{title:`Available Subagents`,tooltip:`Browse and install subagents from the catalog.`,emptyLabel:`No available subagents found.`,searchValue:W,onSearchChange:G,items:B,getKey:e=>e.id,renderName:e=>e.name,getSubtitle:e=>e.description,renderAction:e=>{let n=_.has(`.agents/agents/${e.id}/AGENT.md`);return(0,F.jsx)(o,{type:`button`,variant:`outline`,size:`sm`,className:`opacity-100 transition-opacity can-hover:opacity-0 can-hover:group-hover:opacity-100 focus-visible:opacity-100`,disabled:!t||n,onClick:()=>void q(e),children:n?`Installed`:`Install`})}})]}),(0,F.jsx)(C,{open:R,onOpenChange:z,children:(0,F.jsx)(b,{className:`max-w-2xl max-h-[90vh] overflow-y-auto p-0`,children:(0,F.jsx)(I,{threadId:t,onAgentCreated:()=>{z(!1),w(),N()}})})}),(0,F.jsx)(T,{open:p!==null,onOpenChange:e=>!e&&m(null),title:`Delete Subagent`,description:`Are you sure you want to delete the subagent "${p?.name}"? This action cannot be undone.`,onConfirm:()=>{p&&j(p)},confirming:h})]}):(0,F.jsx)(f,{children:`Select a project to manage subagents.`})}export{R as SettingsSubagentsView,R as default};
@@ -0,0 +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{Lt as r}from"./dist-DZtmmQ-F.js";import{r as i}from"./store-D4D62vkY.js";import{t as a}from"./utils-BCj_kT9l.js";import{dt as ee}from"./lucide-react-CNNzKD4G.js";import{t as o}from"./button-DhxraVUW.js";import{i as s,n as c,t as l}from"./tooltip-Cg_EhO9M.js";import{$n as u,Dt as d,Yt as f}from"./api-B_ZIptgC.js";import{a as p,c as m,i as h,n as g,o as _,r as v,s as y,t as b}from"./alert-dialog-DTxl_mXc.js";import{t as x}from"./use-toast-xpb5jNtN.js";import{At as S,B as C,Ct as w,Et as T,Tt as E,jt as D,lt as O}from"./index-DdJcjvu2.js";import{t as k}from"./use-settings-page-loading-CpaBd260.js";var A=e(t(),1),j=n();function M(){let e=i(e=>e.selectedProjectId),[t,n]=(0,A.useState)(``),[M,N]=(0,A.useState)(``),[P,F]=(0,A.useState)(!0),[I,L]=(0,A.useState)(!1),[R,z]=(0,A.useState)(``),[B,V]=(0,A.useState)(!0),[H,U]=(0,A.useState)(!1),[W,G]=(0,A.useState)(!1);(0,A.useLayoutEffect)(()=>{e&&V(!0)},[e]),(0,A.useEffect)(()=>{if(!e){V(!1);return}V(!0),d(e).then(e=>{let t=e.useCustomSystemPrompt;n(e.generatedPrompt),L(t),z(e.customSystemPrompt),F(!t),N(t?e.customSystemPrompt:e.generatedPrompt)}).catch(()=>{n(``),N(``),F(!0),L(!1),z(``)}).finally(()=>V(!1))},[e]);let K=k(e,[B]);function q(){return P?I:M.trim()!==R.trim()}function J(e){N(e),P&&F(!1)}function Y(){N(t),F(!0)}function X(e){if(!e){F(!1);return}if(M===t){Y();return}G(!0)}function Z(){Y(),G(!1)}function Q(){G(!1)}async function $(){if(e){if(!P&&!M.trim()){x({title:`System prompt required`,description:`Enter a system prompt or enable Generated.`,variant:`destructive`});return}U(!0);try{await u(e,{customSystemPrompt:P?null:M.trim(),useCustomSystemPrompt:!P}),f(),L(!P),z(P?``:M.trim()),x({title:`System prompt settings saved`})}catch(e){x({title:`Error`,description:e instanceof Error?e.message:`Failed to save system prompt settings`,variant:`destructive`})}finally{U(!1)}}}return e?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(T,{loading:K,children:(0,j.jsx)(E,{children:(0,j.jsxs)(D,{className:`w-full flex-1 flex flex-col min-h-0 pt-0`,children:[(0,j.jsx)(w,{title:`System Prompt`,description:`View the default system prompt or override it for this project.`,sticky:!1,action:(0,j.jsx)(o,{onClick:$,disabled:H||!q(),children:H?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(ee,{className:`mr-2 h-4 w-4 animate-spin`}),`Saving...`]}):`Save`})}),(0,j.jsxs)(`div`,{className:`mb-4 flex w-full items-center justify-end gap-2`,children:[(0,j.jsxs)(l,{children:[(0,j.jsx)(s,{asChild:!0,children:(0,j.jsx)(`span`,{tabIndex:0,className:a(r.label,`cursor-help`),children:`Generated`})}),(0,j.jsx)(c,{side:`top`,className:`max-w-xs`,children:`Use the auto-generated system prompt instead of a custom override.`})]}),(0,j.jsx)(O,{value:P,onChange:X,disabled:H,ariaLabel:`Generated system prompt`})]}),(0,j.jsx)(C,{value:M,onChange:e=>J(e.target.value),className:a(r.mono,`flex-1 min-h-0 resize-none`),placeholder:`System prompt will appear here...`,disabled:H})]})})}),(0,j.jsx)(b,{open:W,onOpenChange:G,children:(0,j.jsxs)(h,{children:[(0,j.jsxs)(y,{children:[(0,j.jsx)(m,{children:`Overwrite custom system prompt?`}),(0,j.jsx)(p,{children:`This will replace your custom system prompt with the generated default. You can save the change after confirming.`})]}),(0,j.jsxs)(_,{children:[(0,j.jsx)(v,{onClick:Q,children:`No`}),(0,j.jsx)(g,{onClick:Z,children:`Yes`})]})]})})]}):(0,j.jsx)(S,{children:`Select a project to edit the system prompt.`})}export{M as SettingsSystemPromptView,M as default};
@@ -1 +1 @@
1
- import{n as e,t}from"./react-vendor-Ee0-5T4I.js";import{t as n}from"./pill-tabs-QsjH027B.js";var r=e(),i=t();function a(e){let t=(0,r.c)(4),{value:a,onValueChange:o,options:s}=e,c;return t[0]!==o||t[1]!==s||t[2]!==a?(c=(0,i.jsx)(`div`,{className:`frosted-scrollbar shrink-0 overflow-x-auto px-6 pb-2 pt-4`,children:(0,i.jsx)(`div`,{className:`flex w-max min-w-full justify-center`,children:(0,i.jsx)(n,{value:a,onValueChange:o,options:s})})}),t[0]=o,t[1]=s,t[2]=a,t[3]=c):c=t[3],c}export{a as t};
1
+ import{n as e,t}from"./react-vendor-Ee0-5T4I.js";import{t as n}from"./pill-tabs-CiONEGsi.js";var r=e(),i=t();function a(e){let t=(0,r.c)(4),{value:a,onValueChange:o,options:s}=e,c;return t[0]!==o||t[1]!==s||t[2]!==a?(c=(0,i.jsx)(`div`,{className:`frosted-scrollbar shrink-0 overflow-x-auto px-6 pb-2 pt-4`,children:(0,i.jsx)(`div`,{className:`flex w-max min-w-full justify-center`,children:(0,i.jsx)(n,{value:a,onValueChange:o,options:s})})}),t[0]=o,t[1]=s,t[2]=a,t[3]=c):c=t[3],c}export{a as t};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/settings-general-tabs-view-CKaL-A9_.js","assets/rolldown-runtime-aKtaBQYM.js","assets/react-vendor-Ee0-5T4I.js","assets/progress-indicator-C7Kj9U3t.js","assets/utils-BCj_kT9l.js","assets/dist-DZtmmQ-F.js","assets/settings-tab-bar-BJtpuIky.js","assets/pill-tabs-CiONEGsi.js","assets/index-DdJcjvu2.js","assets/alert-dialog-DTxl_mXc.js","assets/button-DhxraVUW.js","assets/use-browser-overlay-block-DyprQSIG.js","assets/browser-overlay-block-CiDtkfup.js","assets/dist-iDwSbcD5.js","assets/dist-BkOEUrQf.js","assets/es2015-B0KHrBGH.js","assets/scroll-area-BQ9bdsVQ.js","assets/dist-OixawqbU.js","assets/tooltip-Cg_EhO9M.js","assets/dist-CA_zFhwJ.js","assets/use-toast-xpb5jNtN.js","assets/chat-dock-context-DhO-jYMh.js","assets/api-B_ZIptgC.js","assets/store-D4D62vkY.js","assets/explorer-tab-context-BxUVwWQQ.js","assets/main-tab-context-CNgxXqnH.js","assets/terminal-output-activity-B1bjjsl7.js","assets/suspense-resource-DzlMlIgR.js","assets/dist-Dj1qT-gv.js","assets/dist-aB1qUwWW.js","assets/dist-Bihbg_hO.js","assets/dist-BZmr2Qex.js","assets/dist-CSssbxDI.js","assets/useBaseQuery-ChJtNS_3.js","assets/lucide-react-CNNzKD4G.js","assets/chunk-QFMPRPBF-COsSkB7x.js","assets/index-B3oaBks2.css","assets/project-settings-view-C04tQu0x.js","assets/use-settings-page-loading-CpaBd260.js","assets/settings-setup-view-ORNCF3ma.js","assets/project-env-vars-view-QrpeAxIt.js","assets/project-danger-zone-view-BfHTp5LI.js","assets/project-model-aliases-view-D_pamHsA.js","assets/table-DCmeRDBK.js","assets/settings-plugins-view-fSxDPjsF.js","assets/settings-providers-view-Bj4-iemE.js","assets/account-view-DVfacvrH.js","assets/delete-confirm-dialog-Ciwqi6ts.js"])))=>i.map(i=>d[i]);
2
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,r,t as i}from"./react-vendor-Ee0-5T4I.js";import{c as a,o,s}from"./chunk-QFMPRPBF-COsSkB7x.js";import{Lt as c,R as l,dt as u,gt as d,mt as f}from"./dist-DZtmmQ-F.js";import{n as p,r as m,tt as h}from"./store-D4D62vkY.js";import{t as g,u as _}from"./utils-BCj_kT9l.js";import{D as v,L as y,Y as b,an as x,r as S,s as C,tn as w,u as T,vn as E}from"./lucide-react-CNNzKD4G.js";import{t as D}from"./button-DhxraVUW.js";import{Yt as O,gn as k,kt as A}from"./api-B_ZIptgC.js";import{n as j}from"./scroll-area-BQ9bdsVQ.js";import{t as M}from"./progress-indicator-C7Kj9U3t.js";import{At as N,Bn as ee,Hn as P,Vn as F,dr as I,er as L,ir as R,rr as z,tr as B}from"./index-DdJcjvu2.js";var V=t(),H=e(n(),1),U=i(),W=(0,H.forwardRef)(function(e,t){let n=(0,V.c)(29),{sidebar:r,children:i,defaultSidebarSize:a,minSidebarSize:o,maxSidebarSize:s,minContentSize:c,collapsible:l,collapsedSize:u,className:d,onCollapse:f,onExpand:p,isMobile:m,mobileShowSidebar:h,sidebarClassName:_}=e,v=a===void 0?25:a,y=o===void 0?20:o,b=s===void 0?30:s,x=c===void 0?40:c,S=l===void 0?!1:l,C=u===void 0?0:u,w=d===void 0?``:d,T=m===void 0?!1:m,E=h===void 0?!0:h,D=T&&!E,O=T&&E,k=`h-full ${w}`,A=T?100:v,j=T?50:y,M=T?100:b,N=D&&`hidden`,I;n[0]!==_||n[1]!==N?(I=g(`border-r border-transparent`,N,_),n[0]=_,n[1]=N,n[2]=I):I=n[2];let L;n[3]!==C||n[4]!==S||n[5]!==f||n[6]!==p||n[7]!==t||n[8]!==r||n[9]!==A||n[10]!==j||n[11]!==M||n[12]!==I?(L=(0,U.jsx)(F,{ref:t,defaultSize:A,minSize:j,maxSize:M,collapsible:S,collapsedSize:C,onCollapse:f,onExpand:p,className:I,children:r}),n[3]=C,n[4]=S,n[5]=f,n[6]=p,n[7]=t,n[8]=r,n[9]=A,n[10]=j,n[11]=M,n[12]=I,n[13]=L):L=n[13];let R;n[14]===T?R=n[15]:(R=!T&&(0,U.jsx)(ee,{withHandle:!0,className:`ml-[-10px]`}),n[14]=T,n[15]=R);let z=O&&`hidden`,B;n[16]===z?B=n[17]:(B=g(`overflow-hidden`,z),n[16]=z,n[17]=B);let H;n[18]!==i||n[19]!==x||n[20]!==B?(H=(0,U.jsx)(F,{minSize:x,className:B,children:i}),n[18]=i,n[19]=x,n[20]=B,n[21]=H):H=n[21];let W;n[22]!==L||n[23]!==R||n[24]!==H?(W=(0,U.jsxs)(P,{direction:`horizontal`,className:`h-full`,children:[L,R,H]}),n[22]=L,n[23]=R,n[24]=H,n[25]=W):W=n[25];let G;return n[26]!==k||n[27]!==W?(G=(0,U.jsx)(`div`,{className:k,children:W}),n[26]=k,n[27]=W,n[28]=G):G=n[28],G});function G(e){return e.startsWith(`/settings/project/`)?e.endsWith(`/model-aliases`)?`project-model-aliases`:e.endsWith(`/env-vars`)?`project-env-vars`:/^\/settings\/project\/[^/]+\/coding(?:\/[^/]+)?\/?$/.test(e)?`project-coding`:e.endsWith(`/danger-zone`)?`project-danger-zone`:`project`:null}function K(e,t){if(u(e))return`project-plugins`;if(f(e))return`general`;if(d(e))return`providers`;let n=G(e);if(n)return n;for(let n of t)if(e.startsWith(n.route))return n.id;return`general`}var q=[{id:`project-plugins`,label:`Plugins`,icon:(0,U.jsx)(y,{className:`h-4 w-4`}),route:`/settings/plugins`},{id:`general`,label:`Settings`,icon:(0,U.jsx)(v,{className:`h-4 w-4`}),route:`/settings/general`},{id:`providers`,label:`Providers`,icon:(0,U.jsx)(w,{className:`h-4 w-4`}),route:`/settings/providers`},{id:`account`,label:`Account`,icon:(0,U.jsx)(C,{className:`h-4 w-4`}),route:`/settings/account`}],J=new Set([`project`,`project-coding`,`project-danger-zone`,`project-env-vars`,`project-plugins`]),Y=new Set([`general`,`providers`,`account`]);function te(e){return J.has(e)?`project`:`general`}function X(e){let t=(0,V.c)(18),{label:n,items:r,activeTabId:i,onItemClick:a,showSeparator:o,className:s}=e,c=o===void 0?!0:o;if(r.length===0)return null;let l;t[0]===n?l=t[1]:(l=n?(0,U.jsx)(L,{className:`text-xs`,children:n}):null,t[0]=n,t[1]=l);let u;if(t[2]!==i||t[3]!==r||t[4]!==a){let e;t[6]!==i||t[7]!==a?(e=e=>(0,U.jsx)(R,{selected:i===e.id,asChild:!0,children:(0,U.jsx)(`button`,{className:`justify-start`,onClick:()=>a(e),children:(0,U.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e.icon,(0,U.jsx)(`span`,{children:e.label})]})})},e.id),t[6]=i,t[7]=a,t[8]=e):e=t[8],u=r.map(e),t[2]=i,t[3]=r,t[4]=a,t[5]=u}else u=t[5];let d;t[9]===u?d=t[10]:(d=(0,U.jsx)(`div`,{className:`space-y-1`,children:u}),t[9]=u,t[10]=d);let f;t[11]===c?f=t[12]:(f=c?(0,U.jsx)(z,{className:`my-2`}):null,t[11]=c,t[12]=f);let p;return t[13]!==s||t[14]!==l||t[15]!==d||t[16]!==f?(p=(0,U.jsxs)(`div`,{className:s,children:[l,d,f]}),t[13]=s,t[14]=l,t[15]=d,t[16]=f,t[17]=p):p=t[17],p}function ne(e){let t=[...q];if(!e)return t;let n=t.findIndex(e=>e.id===`project-plugins`);n!==-1&&t.splice(n,1);let r=t.findIndex(e=>e.id===`general`);return t.splice(r,0,{id:`project`,label:`Settings`,icon:(0,U.jsx)(v,{className:`h-4 w-4`}),route:`/settings/project/${e}`},{id:`project-plugins`,label:`Plugins`,icon:(0,U.jsx)(y,{className:`h-4 w-4`}),route:`/settings/project/${e}/plugins`},{id:`project-coding`,label:`Setup`,icon:(0,U.jsx)(x,{className:`h-4 w-4`}),route:`/settings/project/${e}/coding`},{id:`project-env-vars`,label:`Variables`,icon:(0,U.jsx)(E,{className:`h-4 w-4`}),route:`/settings/project/${e}/env-vars`},{id:`project-danger-zone`,label:`Danger Zone`,icon:(0,U.jsx)(T,{className:`h-4 w-4`}),route:`/settings/project/${e}/danger-zone`}),t}function re(e){let t=(0,V.c)(32),{className:n,selectedProjectId:r,onResetOnboarding:i,onNavItemSelect:a}=e,c=s(),l=o(),u=(0,H.useRef)(0),d=(0,H.useRef)(null),f,p;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(f=()=>()=>{d.current&&clearTimeout(d.current)},p=[],t[0]=f,t[1]=p):(f=t[0],p=t[1]),(0,H.useEffect)(f,p);let m=B(),h;t[2]===r?h=t[3]:(h=ne(r),t[2]=r,t[3]=h);let _=h,v;t[4]!==m||t[5]!==_?(v=m?_.filter(oe):_,t[4]=m,t[5]=_,t[6]=v):v=t[6];let y=v,b;t[7]!==l.pathname||t[8]!==y?(b=K(l.pathname,y),t[7]=l.pathname,t[8]=y,t[9]=b):b=t[9];let x=b,S;t[10]!==c||t[11]!==a||t[12]!==i?(S=function(e){e.id===`general`&&i&&(d.current&&clearTimeout(d.current),u.current+=1,u.current>=3?(u.current=0,i()):d.current=setTimeout(()=>{u.current=0},1500)),a?.(),c(e.route)},t[10]=c,t[11]=a,t[12]=i,t[13]=S):S=t[13];let C=S,w;t[14]===y?w=t[15]:(w=y.filter(ae),t[14]=y,t[15]=w);let T=w,E;t[16]===y?E=t[17]:(E=y.filter(ie),t[16]=y,t[17]=E);let D=E,O;t[18]===n?O=t[19]:(O=g(`space-y-1`,n),t[18]=n,t[19]=O);let k;t[20]!==x||t[21]!==D||t[22]!==C?(k=(0,U.jsx)(X,{label:`General`,items:D,activeTabId:x,onItemClick:C,showSeparator:!1}),t[20]=x,t[21]=D,t[22]=C,t[23]=k):k=t[23];let A;t[24]!==x||t[25]!==C||t[26]!==T?(A=(0,U.jsx)(X,{label:`Project`,items:T,activeTabId:x,onItemClick:C,showSeparator:!1,className:`pt-3`}),t[24]=x,t[25]=C,t[26]=T,t[27]=A):A=t[27];let j;return t[28]!==k||t[29]!==A||t[30]!==O?(j=(0,U.jsxs)(`div`,{className:O,children:[k,A]}),t[28]=k,t[29]=A,t[30]=O,t[31]=j):j=t[31],j}function ie(e){return Y.has(e.id)}function ae(e){return J.has(e.id)}function oe(e){return e.id!==`account`}var se=l(`app.settings-view.ui`),ce=`frosted-surface backdrop-blur-2xl`,le=(0,H.lazy)(function(){return r(()=>import(`./settings-general-tabs-view-CKaL-A9_.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))}),ue=(0,H.lazy)(()=>r(()=>import(`./project-settings-view-C04tQu0x.js`),__vite__mapDeps([37,1,8,2,3,4,5,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38]))),de=(0,H.lazy)(function(){return r(()=>import(`./settings-setup-view-ORNCF3ma.js`),__vite__mapDeps([39,1,8,2,3,4,5,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,6,7]))}),fe=(0,H.lazy)(()=>r(()=>import(`./project-env-vars-view-QrpeAxIt.js`),__vite__mapDeps([40,1,8,2,3,4,5,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38]))),pe=(0,H.lazy)(()=>r(()=>import(`./project-danger-zone-view-BfHTp5LI.js`),__vite__mapDeps([41,8,1,2,3,4,5,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))),me=(0,H.lazy)(()=>r(()=>import(`./project-model-aliases-view-D_pamHsA.js`),__vite__mapDeps([42,1,8,2,3,4,5,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,43,38]))),he=(0,H.lazy)(function(){return r(()=>import(`./settings-plugins-view-fSxDPjsF.js`),__vite__mapDeps([44,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))}),ge=(0,H.lazy)(function(){return r(()=>import(`./settings-providers-view-Bj4-iemE.js`),__vite__mapDeps([45,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))}),_e=(0,H.lazy)(()=>r(()=>import(`./account-view-DVfacvrH.js`),__vite__mapDeps([46,1,8,2,3,4,5,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,47]))),ve=[`plugins`,`general`,`providers`,`models`,`model-aliases`,`skills`,`slash-commands`,`subagents`,`system-prompt`,`mcp-servers`,`slack`,`logs`,`statistics`,`history`,`storage`,`account`];function ye(e){let t=(0,V.c)(2),{title:n}=e,r;return t[0]===n?r=t[1]:(r=(0,U.jsx)(N,{title:n,children:`Content coming soon...`}),t[0]=n,t[1]=r),r}function be(e){return u(e)?`plugins`:f(e)?`general`:d(e)?`providers`:e.startsWith(`/settings/skills`)?`skills`:e.startsWith(`/settings/slash-commands`)?`slash-commands`:e.startsWith(`/settings/subagents`)?`subagents`:e.startsWith(`/settings/system-prompt`)?`system-prompt`:e.startsWith(`/settings/mcp-servers`)?`mcp-servers`:e.startsWith(`/settings/slack`)?`slack`:e.startsWith(`/settings/logs`)?`logs`:e.startsWith(`/settings/statistics`)?`statistics`:e.startsWith(`/settings/history`)?`history`:e.startsWith(`/settings/storage`)?`storage`:e.startsWith(`/settings/account`)?`account`:`general`}function xe(e){let t=e.match(/^\/settings\/providers\/([^/]+)$/);return t?decodeURIComponent(t[1]):null}function Se(e,t,n){return e&&ve.includes(e)?e:t&&ve.includes(t)?t:be(n)}var Z=new Set([`plugins`,`skills`,`mcp-servers`,`system-prompt`,`slash-commands`,`subagents`]),Q=new Set([`general`,`history`,`storage`,`statistics`,`logs`,`slack`]),$=new Set([`providers`,`models`,`model-aliases`]);function Ce(e){return[[e.isProjectToolsRoute,`project-plugins`],[e.isProjectModelAliasesRoute,`project-model-aliases`],[e.isProjectEnvVarsRoute,`project-env-vars`],[e.isProjectCodingRoute,`project-coding`],[e.isProjectDangerZoneRoute,`project-danger-zone`],[e.isProjectRoute,`project`]].find(function([e]){return e})?.[1]}function we(e){return Q.has(e)?`general`:$.has(e)?`providers`:e}function Te(e){return Z.has(e.activeTab)?`project-plugins`:Ce(e)??we(e.activeTab)}function Ee(e){return[[e.isProjectToolsRoute,`Plugins`],[e.isProjectModelAliasesRoute,`Default Models`],[e.isProjectEnvVarsRoute,`Variables`],[e.isProjectCodingRoute,`Setup`],[e.isProjectDangerZoneRoute,`Danger Zone`],[e.isProjectSettingsRoute,`Project`]].find(function([e]){return e})?.[1]}function De(e){return Q.has(e)?`Settings`:$.has(e)?`Providers`:q.find(t=>t.id===e)?.label??`Settings`}function Oe(e){return Z.has(e.activeTab)?`Plugins`:Ee(e)??De(e.activeTab)}function ke(e,t){return e===`/settings`||e===`/settings/project`||[`/settings/mcp-server-edit`,`/settings/add-skill`,`/settings/add-command`,`/settings/add-rule`,`/settings/add-agent`,`/settings/rules`].some(t=>e.startsWith(t))||t&&e.startsWith(`/settings/account`)}function Ae(e){return!e.endsWith(`/tools`)&&!/\/plugins(?:\/[^/]+)?\/?$/.test(e)&&!e.endsWith(`/model-aliases`)&&!e.endsWith(`/env-vars`)&&!/\/coding(?:\/[^/]+)?\/?$/.test(e)&&!e.endsWith(`/danger-zone`)}function je(e,t){let n=!!e&&t.startsWith(`/settings/project/`);return{isProjectRoute:n,isProjectToolsRoute:n&&t.endsWith(`/tools`),isProjectPluginsRoute:n&&/\/plugins(?:\/[^/]+)?\/?$/.test(t),isProjectModelAliasesRoute:n&&t.endsWith(`/model-aliases`),isProjectEnvVarsRoute:n&&t.endsWith(`/env-vars`),isProjectCodingRoute:n&&/\/coding(?:\/[^/]+)?\/?$/.test(t),isProjectDangerZoneRoute:n&&t.endsWith(`/danger-zone`),isProjectSettingsRoute:n&&Ae(t)}}function Me(e,t){let n=(0,V.c)(5),r;n[0]!==t||n[1]!==e?(r=()=>{let n=e.current;if(!n)return;let r=function(e){if(e.key!==`Escape`)return;let n=document.activeElement;if(n instanceof HTMLInputElement||n instanceof HTMLTextAreaElement||n instanceof HTMLElement&&n.isContentEditable){n.blur();return}t()};return n.addEventListener(`keydown`,r),()=>n.removeEventListener(`keydown`,r)},n[0]=t,n[1]=e,n[2]=r):r=n[2];let i;n[3]===t?i=n[4]:(i=[t],n[3]=t,n[4]=i),(0,H.useEffect)(r,i)}function Ne(e){let t=(0,V.c)(7),{selectedProjectId:n,onResetOnboarding:r,onNavItemSelect:i,header:a}=e,o;t[0]!==i||t[1]!==r||t[2]!==n?(o=(0,U.jsx)(`div`,{className:`min-h-0 flex-1 p-2.5`,children:(0,U.jsx)(j,{className:`h-full`,children:(0,U.jsx)(`div`,{className:`py-2`,children:(0,U.jsx)(re,{selectedProjectId:n,onResetOnboarding:r,onNavItemSelect:i})})})}),t[0]=i,t[1]=r,t[2]=n,t[3]=o):o=t[3];let s;return t[4]!==a||t[5]!==o?(s=(0,U.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden`,children:[a,o]}),t[4]=a,t[5]=o,t[6]=s):s=t[6],s}function Pe(e){let t=(0,V.c)(16),{settingsHeaderTitle:n,isProjectSettingsScope:r,selectedProject:i,onRequestClose:a}=e,o;t[0]!==r||t[1]!==i?(o=r&&i?(0,U.jsx)(I,{project:i,className:`h-7 w-7 shrink-0 rounded-md`,iconClassName:`h-3.5 w-3.5`}):(0,U.jsx)(`div`,{className:`flex h-7 w-7 shrink-0 items-center justify-center overflow-hidden rounded-md border border-border shadow-sm`,children:(0,U.jsx)(`img`,{src:`/tarsk.svg`,alt:`Tarsk`,className:`h-full w-full`})}),t[0]=r,t[1]=i,t[2]=o):o=t[2];let s;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(s=g(c.sectionTitle,`min-w-0 truncate`),t[3]=s):s=t[3];let l;t[4]===n?l=t[5]:(l=(0,U.jsx)(`span`,{className:s,children:n}),t[4]=n,t[5]=l);let u;t[6]!==o||t[7]!==l?(u=(0,U.jsxs)(`div`,{className:`col-start-2 flex min-w-0 max-w-full items-center gap-2 justify-self-center electrobun-webkit-app-region-no-drag`,children:[o,l]}),t[6]=o,t[7]=l,t[8]=u):u=t[8];let d,f;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,U.jsx)(S,{className:`h-4 w-4`}),f=(0,U.jsx)(`span`,{className:`sr-only`,children:`Close`}),t[9]=d,t[10]=f):(d=t[9],f=t[10]);let p;t[11]===a?p=t[12]:(p=(0,U.jsx)(`div`,{className:`col-start-3 flex items-center justify-self-end electrobun-webkit-app-region-no-drag`,children:(0,U.jsxs)(D,{variant:`ghost`,size:`icon`,className:`h-7 w-7`,onClick:a,children:[d,f]})}),t[11]=a,t[12]=p);let m;return t[13]!==u||t[14]!==p?(m=(0,U.jsxs)(`div`,{className:`grid h-14 shrink-0 grid-cols-[2.75rem_minmax(0,1fr)_2.75rem] items-center px-4 electrobun-webkit-app-region-drag`,children:[u,p]}),t[13]=u,t[14]=p,t[15]=m):m=t[15],m}function Fe(e){let t=(0,V.c)(10),{isMobile:n,mobileShowSidebar:r,isProviderDetailRoute:i,activeSectionLabel:a,onShowSidebar:o}=e;if(!n||r||i)return null;let s,l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,U.jsx)(b,{className:`h-4 w-4`}),l=(0,U.jsx)(`span`,{className:`sr-only`,children:`Show settings menu`}),t[0]=s,t[1]=l):(s=t[0],l=t[1]);let u;t[2]===o?u=t[3]:(u=(0,U.jsxs)(D,{variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0 text-muted-foreground`,onClick:o,children:[s,l]}),t[2]=o,t[3]=u);let d;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(d=g(c.sectionTitle,`truncate text-foreground`),t[4]=d):d=t[4];let f;t[5]===a?f=t[6]:(f=(0,U.jsx)(`span`,{className:d,children:a}),t[5]=a,t[6]=f);let p;return t[7]!==u||t[8]!==f?(p=(0,U.jsx)(`div`,{className:`px-6 pb-0 pt-6`,children:(0,U.jsxs)(`div`,{className:`mb-4 flex min-w-0 items-center gap-2`,children:[u,f]})}),t[7]=u,t[8]=f,t[9]=p):p=t[9],p}var Ie=new Set([`skills`,`mcp-servers`,`system-prompt`,`slash-commands`,`subagents`]);function Le(e){return e.isProjectToolsRoute||e.isProjectPluginsRoute}function Re(e){return Ie.has(e)?e:void 0}function ze(e,t){return e.isProjectCodingRoute?{kind:`project-coding`,projectId:t}:e.isProjectDangerZoneRoute?{kind:`project-danger-zone`,projectId:t}:e.selectedProjectId!==t&&Le(e)?{kind:`project-plugins-loading`}:void 0}function Be(e,t){return e.isProjectModelAliasesRoute?{kind:`project-model-aliases`}:e.isProjectEnvVarsRoute?{kind:`project-env-vars`,projectId:t}:e.isProjectSettingsRoute?{kind:`project-settings`,projectId:t}:void 0}function Ve(e){let{projectId:t}=e;return(t?ze(e,t):void 0)||(Le(e)||Z.has(e.activeTab)?{kind:`plugins`,projectId:t??e.selectedProjectId,fallbackTab:Re(e.activeTab)}:t?Be(e,t):void 0)}function He(e){return Ve(e)||(Q.has(e.activeTab)?{kind:`general`,fallbackTab:e.activeTab}:$.has(e.activeTab)?{kind:`providers`,fallbackTab:e.activeTab}:e.activeTab===`account`?{kind:`account`}:{kind:`blank`})}function Ue(e){let t=(0,V.c)(31),n;t[0]===e?n=t[1]:(n=He(e),t[0]=e,t[1]=n);let r=n;switch(r.kind){case`project-coding`:{let e;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(M,{centered:!0,label:`Loading coding settings...`}),t[2]=e):e=t[2];let n;return t[3]===r.projectId?n=t[4]:(n=(0,U.jsx)(H.Suspense,{fallback:e,children:(0,U.jsx)(de,{projectId:r.projectId})}),t[3]=r.projectId,t[4]=n),n}case`project-danger-zone`:{let e;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(M,{centered:!0,label:`Loading danger zone...`}),t[5]=e):e=t[5];let n;return t[6]===r.projectId?n=t[7]:(n=(0,U.jsx)(H.Suspense,{fallback:e,children:(0,U.jsx)(pe,{projectId:r.projectId})}),t[6]=r.projectId,t[7]=n),n}case`project-plugins-loading`:{let e;return t[8]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(M,{centered:!0,label:`Loading project plugins...`}),t[8]=e):e=t[8],e}case`plugins`:{let n;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,U.jsx)(M,{centered:!0,label:`Loading plugin settings...`}),t[9]=n):n=t[9];let i;return t[10]!==e.handleProjectUpdated||t[11]!==r.fallbackTab||t[12]!==r.projectId?(i=(0,U.jsx)(H.Suspense,{fallback:n,children:(0,U.jsx)(he,{projectId:r.projectId,fallbackTab:r.fallbackTab,onProjectUpdated:e.handleProjectUpdated})}),t[10]=e.handleProjectUpdated,t[11]=r.fallbackTab,t[12]=r.projectId,t[13]=i):i=t[13],i}case`project-model-aliases`:{let e;return t[14]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(H.Suspense,{fallback:(0,U.jsx)(M,{centered:!0,label:`Loading project model aliases...`}),children:(0,U.jsx)(me,{})}),t[14]=e):e=t[14],e}case`project-env-vars`:{let e;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(M,{centered:!0,label:`Loading environment variables...`}),t[15]=e):e=t[15];let n;return t[16]===r.projectId?n=t[17]:(n=(0,U.jsx)(H.Suspense,{fallback:e,children:(0,U.jsx)(fe,{projectId:r.projectId})}),t[16]=r.projectId,t[17]=n),n}case`project-settings`:{let n;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,U.jsx)(M,{centered:!0,label:`Loading project settings...`}),t[18]=n):n=t[18];let i;return t[19]!==e.handleProjectUpdated||t[20]!==r.projectId?(i=(0,U.jsx)(H.Suspense,{fallback:n,children:(0,U.jsx)(ue,{projectId:r.projectId,onProjectUpdated:e.handleProjectUpdated})}),t[19]=e.handleProjectUpdated,t[20]=r.projectId,t[21]=i):i=t[21],i}case`general`:{let n;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,U.jsx)(M,{centered:!0,label:`Loading general settings...`}),t[22]=n):n=t[22];let i;return t[23]!==e.onboardingResetSignal||t[24]!==r.fallbackTab?(i=(0,U.jsx)(H.Suspense,{fallback:n,children:(0,U.jsx)(le,{fallbackTab:r.fallbackTab,onboardingResetSignal:e.onboardingResetSignal})}),t[23]=e.onboardingResetSignal,t[24]=r.fallbackTab,t[25]=i):i=t[25],i}case`providers`:{let e;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(M,{centered:!0,label:`Loading provider settings...`}),t[26]=e):e=t[26];let n;return t[27]===r.fallbackTab?n=t[28]:(n=(0,U.jsx)(H.Suspense,{fallback:e,children:(0,U.jsx)(ge,{fallbackTab:r.fallbackTab})}),t[27]=r.fallbackTab,t[28]=n),n}case`account`:{let e;return t[29]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(H.Suspense,{fallback:(0,U.jsx)(M,{centered:!0,label:`Loading account settings...`}),children:(0,U.jsx)(_e,{})}),t[29]=e):e=t[29],e}case`blank`:{let e;return t[30]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(ye,{title:`Settings`}),t[30]=e):e=t[30],e}}}function We({onRequestClose:e}){let{tab:t,projectId:n}=a(),r=s(),i=o(),c=p(),l=m(e=>e.selectedProjectId),u=m(e=>e.projects),{isProjectRoute:d,isProjectToolsRoute:f,isProjectPluginsRoute:v,isProjectModelAliasesRoute:y,isProjectEnvVarsRoute:b,isProjectCodingRoute:x,isProjectDangerZoneRoute:S,isProjectSettingsRoute:C}=je(n,i.pathname),w=xe(i.pathname)!==null,T=Se(new URLSearchParams(i.search).get(`tab`),t,i.pathname),E=B();(0,H.useEffect)(()=>{n&&l!==n&&c({type:h.SelectProject,projectId:n})},[c,n,l]);let[D,j]=(0,H.useState)(!0),[M,N]=(0,H.useState)(0),ee=(0,H.useRef)(null),P=(0,H.useRef)(null),F=Te({isProjectToolsRoute:f,isProjectModelAliasesRoute:y,isProjectEnvVarsRoute:b,isProjectCodingRoute:x,isProjectDangerZoneRoute:S,isProjectRoute:d,activeTab:T}),I=(0,H.useMemo)(()=>u.find(e=>e.projectId===l)??null,[u,l]),L=te(F)===`project`&&I!==null,R=L?`${_(I)} Settings`:`General Settings`,z=(0,H.useMemo)(()=>Oe({isProjectToolsRoute:f,isProjectModelAliasesRoute:y,isProjectEnvVarsRoute:b,isProjectCodingRoute:x,isProjectDangerZoneRoute:S,isProjectSettingsRoute:C,activeTab:T}),[T,x,S,b,y,C,f]),V=(0,H.useCallback)(()=>{E&&j(!1)},[E]),G=(0,H.useCallback)(()=>{j(!0)},[]),K=(0,H.useCallback)(async()=>{try{await k(),N(e=>e+1)}catch(e){se.error(`Failed to reset onboarding:`,e)}},[]),q=(0,H.useCallback)(async()=>{O(n??l??void 0);try{let e=await A();c({type:h.SetProjects,projects:e.projects,cloneRootPath:e.cloneRootPath})}catch(e){throw se.error(`Failed to refresh projects after settings update:`,e),e}},[c,n,l]);(0,H.useEffect)(()=>{if(y){r(`/settings/model-aliases`,{replace:!0});return}ke(i.pathname,E)&&r(`/settings/general`,{replace:!0})},[y,i.pathname,r,E]),Me(P,e);function J(){return(0,U.jsx)(Pe,{settingsHeaderTitle:R,isProjectSettingsScope:L,selectedProject:I,onRequestClose:e})}function Y(){return E?J():(0,U.jsx)(`div`,{"aria-hidden":`true`,className:`h-14 shrink-0 electrobun-webkit-app-region-drag`})}function X(){return(0,U.jsx)(Ne,{selectedProjectId:l,onResetOnboarding:K,onNavItemSelect:V,header:Y()})}function ne(){return(0,U.jsx)(Ue,{isProjectToolsRoute:f,isProjectPluginsRoute:v,isProjectModelAliasesRoute:y,isProjectEnvVarsRoute:b,isProjectCodingRoute:x,isProjectDangerZoneRoute:S,isProjectSettingsRoute:C,projectId:n,selectedProjectId:l,activeTab:T,onboardingResetSignal:M,handleProjectUpdated:q})}function re(){return(0,U.jsx)(Fe,{isMobile:E,mobileShowSidebar:D,isProviderDetailRoute:w,activeSectionLabel:z,onShowSidebar:G})}return(0,U.jsx)(`div`,{ref:P,role:`dialog`,"aria-modal":`true`,"aria-label":`Settings`,className:g(`rounded-2xl border border-border shadow-lg`,ce,`flex h-full w-full flex-col overflow-hidden md:h-[95vh] md:w-[80vw] md:max-w-[1400px]`),children:(0,U.jsx)(W,{ref:ee,collapsible:!0,isMobile:E,mobileShowSidebar:D,sidebarClassName:g(`overflow-hidden border-r border-divider`,ce),sidebar:X(),children:(0,U.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[J(),(0,U.jsxs)(`div`,{className:g(`relative flex min-h-0 flex-1 flex-col overflow-hidden py-2.5 pl-2.5`,E?null:`ml-2.5`),children:[re(),ne()]})]})})})}export{Ue as SettingsContent,We as default,be as getActiveTab,Te as resolveActiveNavTabId,Oe as resolveActiveSectionLabel,He as resolveSettingsContentView};
@@ -1 +1 @@
1
- import{n as e,t}from"./react-vendor-Ee0-5T4I.js";import{dt as n,pn as r}from"./lucide-react-B-115rul.js";import{t as i}from"./button-B5aMz2Rk.js";var a=e(),o=t();function s(e){let t=(0,a.c)(6),{onContinue:s,disabled:c,creating:l}=e,u=c||l,d;t[0]===l?d=t[1]:(d=l?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n,{className:`mr-2 h-4 w-4 animate-spin`}),`Creating...`]}):(0,o.jsxs)(o.Fragment,{children:[`Continue`,(0,o.jsx)(r,{className:`ml-2 h-4 w-4`})]}),t[0]=l,t[1]=d);let f;return t[2]!==s||t[3]!==u||t[4]!==d?(f=(0,o.jsx)(`div`,{className:`mt-6 border-t pt-4 flex justify-end`,children:(0,o.jsx)(i,{onClick:s,disabled:u,children:d})}),t[2]=s,t[3]=u,t[4]=d,t[5]=f):f=t[5],f}function c(e){return e.toLowerCase().replace(/\s+/g,`-`).replace(/[^a-z0-9-]/g,``).replace(/-+/g,`-`).replace(/^-|-$/g,``)}function l(e){return e.replace(/-/g,` `).split(/\s+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function u(e){return e.length>0&&e.length<=64}export{s as i,u as n,c as r,l as t};
1
+ import{n as e,t}from"./react-vendor-Ee0-5T4I.js";import{dt as n,pn as r}from"./lucide-react-CNNzKD4G.js";import{t as i}from"./button-DhxraVUW.js";var a=e(),o=t();function s(e){let t=(0,a.c)(6),{onContinue:s,disabled:c,creating:l}=e,u=c||l,d;t[0]===l?d=t[1]:(d=l?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n,{className:`mr-2 h-4 w-4 animate-spin`}),`Creating...`]}):(0,o.jsxs)(o.Fragment,{children:[`Continue`,(0,o.jsx)(r,{className:`ml-2 h-4 w-4`})]}),t[0]=l,t[1]=d);let f;return t[2]!==s||t[3]!==u||t[4]!==d?(f=(0,o.jsx)(`div`,{className:`mt-6 border-t pt-4 flex justify-end`,children:(0,o.jsx)(i,{onClick:s,disabled:u,children:d})}),t[2]=s,t[3]=u,t[4]=d,t[5]=f):f=t[5],f}function c(e){return e.toLowerCase().replace(/\s+/g,`-`).replace(/[^a-z0-9-]/g,``).replace(/-+/g,`-`).replace(/^-|-$/g,``)}function l(e){return e.replace(/-/g,` `).split(/\s+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function u(e){return e.length>0&&e.length<=64}export{s as i,u as n,c as r,l as t};