tarsk 0.5.77 → 0.5.78
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.
- package/dist/index.js +704 -143
- package/dist/public/assets/account-view-Bzv2EHnc.js +1 -0
- package/dist/public/assets/api-OO3KSG8d.js +2 -0
- package/dist/public/assets/{async-error-boundary-p7xL6pqw.js → async-error-boundary-Dll_zcqr.js} +1 -1
- package/dist/public/assets/browser-tab-Cwa1TB3I.js +12 -0
- package/dist/public/assets/button-B5aMz2Rk.js +1 -0
- package/dist/public/assets/card-DRr14MEQ.js +1 -0
- package/dist/public/assets/chat-dock-context-Cnq0BWgm.js +1 -0
- package/dist/public/assets/commit-dialog-C-JfaoS6.js +1 -0
- package/dist/public/assets/commit-error-dialog-VXqZLeta.js +1 -0
- package/dist/public/assets/commit-method-fields-DAd1unUF.js +1 -0
- package/dist/public/assets/context-menu-BKOotkeD.js +1 -0
- package/dist/public/assets/conversation-history-view-CcdQRxoP.js +1 -0
- package/dist/public/assets/{create-project-dialog-fc3B-dqb.js → create-project-dialog-D1VaSgqh.js} +2 -2
- package/dist/public/assets/create-repo-dialog-mBGGkX-g.js +1 -0
- package/dist/public/assets/delete-confirm-dialog-Cx9nT7Xd.js +1 -0
- package/dist/public/assets/diff-view-CyOnLSEA.js +4 -0
- package/dist/public/assets/{dist-bBjaCw3d.js → dist-COfI64N5.js} +1 -1
- package/dist/public/assets/dist-CWYnBq-n.js +1 -0
- package/dist/public/assets/dist-DDYi9MQo.js +1 -0
- package/dist/public/assets/dist-DNkA3vYh.js +2 -0
- package/dist/public/assets/dist-DwblUvSf.js +1 -0
- package/dist/public/assets/dist-T8-4ZfS0.js +1 -0
- package/dist/public/assets/dist-TCNzmc2V.js +5 -0
- package/dist/public/assets/dist-sThe8WYP.js +1 -0
- package/dist/public/assets/es2015-Bu0NIPbn.js +41 -0
- package/dist/public/assets/{explorer-monaco-editor-DuU68YH9.js → explorer-monaco-editor-q8CnSwWA.js} +1 -1
- package/dist/public/assets/explorer-tab-view-G2HmkQyY.js +2 -0
- package/dist/public/assets/explorer-tree-DAuc2Npx.js +1 -0
- package/dist/public/assets/explorer-view-BDMlnV3f.js +76 -0
- package/dist/public/assets/git-history-dialog-XEr5pugf.js +1 -0
- package/dist/public/assets/index-C4WzOmf3.css +1 -0
- package/dist/public/assets/index-DD_a7tQU.js +3665 -0
- package/dist/public/assets/lucide-react-B-115rul.js +1 -0
- package/dist/public/assets/main-tab-context-CNgxXqnH.js +1 -0
- package/dist/public/assets/model-list-controls-DAZM0NBC.js +1 -0
- package/dist/public/assets/onboarding-dialog-Dd9hiOOf.js +1 -0
- package/dist/public/assets/pill-tabs-QsjH027B.js +1 -0
- package/dist/public/assets/progress-indicator-C01aPXIe.js +1 -0
- package/dist/public/assets/project-coding-view-DbKI7sbW.js +1 -0
- package/dist/public/assets/project-danger-zone-view-BaSu793w.js +1 -0
- package/dist/public/assets/project-env-vars-view-BB66j52E.js +1 -0
- package/dist/public/assets/project-model-aliases-view-o1-Z2es5.js +1 -0
- package/dist/public/assets/project-settings-view-BKjvtOtk.js +1 -0
- package/dist/public/assets/project-tools-view-CZbblznF.js +1 -0
- package/dist/public/assets/providers-list-view-ChY2DXYc.js +1 -0
- package/dist/public/assets/pull-request-dialog-BZgY4vrw.js +1 -0
- package/dist/public/assets/pull-with-changes-dialog-DDp_srHq.js +1 -0
- package/dist/public/assets/{push-before-pr-dialog-CxboQlmj.js → push-before-pr-dialog-Bt0BChlV.js} +1 -1
- package/dist/public/assets/scroll-area-DwRwR2nQ.js +1 -0
- package/dist/public/assets/settings-general-tabs-view-BH7AaXyP.js +2 -0
- package/dist/public/assets/settings-general-view-B-t99LmD.js +1 -0
- package/dist/public/assets/settings-list-Dn4CHP4Z.js +1 -0
- package/dist/public/assets/{settings-logs-view-BiY8r9HI.js → settings-logs-view-BCRjz-Fr.js} +3 -3
- package/dist/public/assets/settings-mcp-servers-view-xv9D4DPO.js +5 -0
- package/dist/public/assets/settings-models-view-rUeqlE4k.js +1 -0
- package/dist/public/assets/settings-plugins-view-qnWmII61.js +2 -0
- package/dist/public/assets/settings-providers-view-DsxTdBEQ.js +2 -0
- package/dist/public/assets/settings-setup-view-ew5KW8gL.js +2 -0
- package/dist/public/assets/settings-skills-view-C4NxP4gI.js +3 -0
- package/dist/public/assets/settings-slack-view-BNT5ervf.js +1 -0
- package/dist/public/assets/settings-slash-commands-view-CE7FT3dB.js +1 -0
- package/dist/public/assets/settings-statistics-view-jKPoSWBs.js +1 -0
- package/dist/public/assets/settings-storage-view-C_Rs-9Hw.js +1 -0
- package/dist/public/assets/settings-subagents-view-DHVSAmCY.js +2 -0
- package/dist/public/assets/settings-system-prompt-view-B_nF2HUy.js +1 -0
- package/dist/public/assets/settings-tab-bar-DAHxT5KE.js +1 -0
- package/dist/public/assets/settings-view-BY6OO-xy.js +2 -0
- package/dist/public/assets/slug-utils-BQZ6c2py.js +1 -0
- package/dist/public/assets/store-B7EgrEO7.js +9 -0
- package/dist/public/assets/suspense-resource-DzlMlIgR.js +1 -0
- package/dist/public/assets/table-7hMwxpkF.js +1 -0
- package/dist/public/assets/tasks-view-Dc7sthjm.js +1 -0
- package/dist/public/assets/terminal-output-activity-B1bjjsl7.js +1 -0
- package/dist/public/assets/terminal-panel-BNOIOh8z.js +38 -0
- package/dist/public/assets/toggle-group-UiksQ0n9.js +1 -0
- package/dist/public/assets/tooltip-Dvmz78Z_.js +1 -0
- package/dist/public/assets/{use-active-dock-panel-instance-DjhNdiNZ.js → use-active-dock-panel-instance-2LfvItRH.js} +1 -1
- package/dist/public/assets/use-installed-ai-files-BkpswqGI.js +1 -0
- package/dist/public/assets/{useBaseQuery-BytIT4Si.js → useBaseQuery-D5as4SgS.js} +1 -1
- package/dist/public/assets/utils-B-qS8qMg.js +1 -0
- package/dist/public/assets/{web-HPHkrB3q.js → web-B9ndApmi.js} +1 -1
- package/dist/public/assets/{web-CWmUhqaq.js → web-BkuMY08B.js} +1 -1
- package/dist/public/assets/{web-C28hpsuV.js → web-DyqJbQ3L.js} +1 -1
- package/dist/public/assets/{web-BogjYrUi.js → web-gEWIDddb.js} +1 -1
- package/dist/public/index.html +24 -22
- package/package.json +1 -1
- package/dist/public/assets/account-view-DqN6PuZx.js +0 -1
- package/dist/public/assets/api-BEi04Nbw.js +0 -2
- package/dist/public/assets/async-loading-fallback-cCtsF_26.js +0 -1
- package/dist/public/assets/browser-tab-D8O7Fv9w.js +0 -12
- package/dist/public/assets/button-D1ArHt_o.js +0 -1
- package/dist/public/assets/card-Bp7fZl_f.js +0 -1
- package/dist/public/assets/chat-dock-context-BlxEXa9b.js +0 -1
- package/dist/public/assets/commit-dialog-DY4D8-I1.js +0 -1
- package/dist/public/assets/commit-error-dialog-DBXZAW1l.js +0 -1
- package/dist/public/assets/commit-method-fields-C335Y5Id.js +0 -1
- package/dist/public/assets/context-menu-BUjcm0iJ.js +0 -1
- package/dist/public/assets/conversation-history-view-DQ_PXqZ9.js +0 -1
- package/dist/public/assets/create-repo-dialog-DchKq-aa.js +0 -1
- package/dist/public/assets/delete-confirm-dialog-DEuqA4Wk.js +0 -1
- package/dist/public/assets/diff-view-CVlpWjUp.js +0 -4
- package/dist/public/assets/dist-BGVtJOIV.js +0 -2
- package/dist/public/assets/dist-BQOHvuU5.js +0 -1
- package/dist/public/assets/dist-BrrQ4RKZ.js +0 -1
- package/dist/public/assets/dist-CRRMWh4A.js +0 -5
- package/dist/public/assets/dist-DLuGyArC.js +0 -1
- package/dist/public/assets/dist-DSd8c-dh.js +0 -1
- package/dist/public/assets/dist-DTleMiQ4.js +0 -1
- package/dist/public/assets/dist-sGpOBecq.js +0 -1
- package/dist/public/assets/es2015-SVM3tAoD.js +0 -41
- package/dist/public/assets/explorer-tab-view-CHQ0mxMq.js +0 -2
- package/dist/public/assets/explorer-tree-BHqNnEtP.js +0 -1
- package/dist/public/assets/explorer-view-CgdDN1D-.js +0 -76
- package/dist/public/assets/git-history-dialog-BAWqdcQy.js +0 -1
- package/dist/public/assets/index-BHXl-V4W.js +0 -3665
- package/dist/public/assets/index-CLo6-Tya.css +0 -1
- package/dist/public/assets/main-tab-context-Byl1LybL.js +0 -1
- package/dist/public/assets/model-list-controls-BTd-p6XD.js +0 -1
- package/dist/public/assets/onboarding-dialog-DXg4wTyD.js +0 -1
- package/dist/public/assets/project-coding-view-R1jPpXkA.js +0 -1
- package/dist/public/assets/project-danger-zone-view-B8gSJxHw.js +0 -1
- package/dist/public/assets/project-env-vars-view-CHfsOYa_.js +0 -1
- package/dist/public/assets/project-model-aliases-view-DnEbS87g.js +0 -1
- package/dist/public/assets/project-settings-view-34BqFxN-.js +0 -1
- package/dist/public/assets/project-tools-view-DCBhdS_I.js +0 -1
- package/dist/public/assets/providers-list-view-m6xHKltt.js +0 -1
- package/dist/public/assets/pull-request-dialog-Bmtin2Mh.js +0 -1
- package/dist/public/assets/pull-with-changes-dialog-Cmh1vFmo.js +0 -1
- package/dist/public/assets/radio-group-DzcDTzWb.js +0 -1
- package/dist/public/assets/scroll-area-DgahW31C.js +0 -1
- package/dist/public/assets/settings-general-view-XHYGeoAk.js +0 -1
- package/dist/public/assets/settings-list-D-51AyVy.js +0 -1
- package/dist/public/assets/settings-mcp-servers-view-DEmqI7is.js +0 -5
- package/dist/public/assets/settings-models-view-CB6htSan.js +0 -1
- package/dist/public/assets/settings-skills-view-QL-AL_vP.js +0 -3
- package/dist/public/assets/settings-slack-view-Bo1oDUFr.js +0 -1
- package/dist/public/assets/settings-slash-commands-view-CUY_SkzD.js +0 -1
- package/dist/public/assets/settings-statistics-view-B1iibWb7.js +0 -1
- package/dist/public/assets/settings-storage-view-BClnyDai.js +0 -1
- package/dist/public/assets/settings-subagents-view-D4OEJJk8.js +0 -2
- package/dist/public/assets/settings-system-prompt-view-e6CgLFVs.js +0 -1
- package/dist/public/assets/settings-view-Bk-knKOJ.js +0 -2
- package/dist/public/assets/slug-utils-DgUDtDRP.js +0 -1
- package/dist/public/assets/store-IJouqtOd.js +0 -9
- package/dist/public/assets/suspense-resource-BFrb_XJX.js +0 -1
- package/dist/public/assets/table-CYtkHxHy.js +0 -1
- package/dist/public/assets/tasks-view-DpGp9_WH.js +0 -1
- package/dist/public/assets/terminal-panel-OW4yyorA.js +0 -38
- package/dist/public/assets/toggle-group-rSptomuG.js +0 -1
- package/dist/public/assets/tooltip-BqGy0Y1-.js +0 -1
- package/dist/public/assets/use-installed-ai-files-BcrX9Nna.js +0 -1
|
@@ -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{Ft as i}from"./dist-DNkA3vYh.js";import{r as a}from"./store-B7EgrEO7.js";import{s as o,t as s}from"./utils-B-qS8qMg.js";import{I as c,Jt as l,K as u,O as d,V as f,d as p,gn as m,hn as h,r as g}from"./lucide-react-B-115rul.js";import{t as _}from"./button-B5aMz2Rk.js";import{g as v,h as y,t as b,u as x}from"./dist-T8-4ZfS0.js";import{o as S}from"./dist-DDYi9MQo.js";import{i as C,n as ee,r as w,t as T}from"./tooltip-Dvmz78Z_.js";import{Qt as E,ft as D,hn as O,i as k}from"./api-OO3KSG8d.js";import{n as A}from"./explorer-tab-context-BxUVwWQQ.js";import{t as j}from"./dist-CSssbxDI.js";import{$n as M,At as N,B as P,Cr as F,Dr as I,Er as L,Et as R,Ft as z,It as B,Mt as V,Nt as H,Pt as U,Rt as te,Sr as W,St as ne,Tr as G,_r as K,br as re,bt as q,c as J,d as ie,dr as ae,f as oe,fr as se,gr as ce,kt as le,l as ue,lr as de,mr as fe,s as pe,tr as me,u as he,ur as Y,xr as ge,yr as _e,yt as ve,zt as X}from"./index-DD_a7tQU.js";import{t as ye}from"./delete-confirm-dialog-Cx9nT7Xd.js";import{t as be}from"./use-settings-page-loading-BTySlInF.js";import{n as xe}from"./settings-list-Dn4CHP4Z.js";var Z=t(),Q=e(n(),1),$=r(),Se=`Switch`,[Ce,we]=y(Se),[Te,Ee]=Ce(Se),De=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:Se});return(0,$.jsxs)(Te,{scope:n,checked:y,disabled:c,children:[(0,$.jsx)(x.button,{type:`button`,role:`switch`,"aria-checked":y,"aria-required":s,"data-state":Me(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,$.jsx)(je,{control:p,bubbles:!g.current,name:r,value:l,checked:y,required:s,disabled:c,form:d,style:{transform:`translateX(-100%)`}})]})});De.displayName=Se;var Oe=`SwitchThumb`,ke=Q.forwardRef((e,t)=>{let{__scopeSwitch:n,...r}=e,i=Ee(Oe,n);return(0,$.jsx)(x.span,{"data-state":Me(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})});ke.displayName=Oe;var Ae=`SwitchBubbleInput`,je=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,$.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}})});je.displayName=Ae;function Me(e){return e?`checked`:`unchecked`}var Ne=De,Pe=ke,Fe=Q.forwardRef((e,t)=>{let n=(0,Z.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,$.jsx)(Pe,{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,$.jsx)(Ne,{className:a,...i,ref:t,children:o}),n[6]=i,n[7]=t,n[8]=a,n[9]=c):c=n[9],c});Fe.displayName=Ne.displayName;var Ie={key:``,value:``},Le={serverType:`local`,name:``,command:``,argsText:``,serverUrl:``,transport:`sse`,oauthClientId:``,oauthClientSecret:``,oauthCallbackPort:``,defer:!0},Re=[e=>e.name,e=>e.command,e=>e.argsText,e=>e.serverUrl,e=>e.oauthClientId,e=>e.oauthClientSecret,e=>e.oauthCallbackPort];function ze(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:ze(e?.clientId,``),oauthClientSecret:ze(e?.clientSecret,``),oauthCallbackPort:Ge(e?.callbackPort)}}function qe(e,t){return{...Le,name:e,serverType:Be(t),command:ze(t.command,``),argsText:Ue(t.args),serverUrl:ze(t.url,``),transport:ze(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 Re.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:ze(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 · ${J(t.catalog)}`:`MCP server added · ${J(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,Z.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,Ie]}function vt(e){async function t(){if(!e.projectPath)throw Error(`No project path`);let t=await he(e.projectPath,e.originalName||e.form.name.trim(),nt(e.form,e.envEntries,e.headerEntries));M({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 pe(e.projectPath,e.originalName),M({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}=oe(e.projectPath),n=!!e.serverName,[r,i]=(0,Q.useState)(Le),{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,Z.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,$.jsx)(`p`,{className:i.bodyMuted,children:`Loading server configuration...`})}),e[0]=t):t=e[0],t}function xt(e){let t=(0,Z.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,$.jsx)(G,{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,$.jsx)(q,{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,Z.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,$.jsx)(q,{title:`Command`,controlLayout:`stack`,className:`pt-6`,children:(0,$.jsx)(G,{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,$.jsx)(q,{title:`Arguments`,description:`One argument per line`,controlLayout:`stack`,className:`pt-6`,children:(0,$.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,$.jsxs)($.Fragment,{children:[a,s]}),t[10]=a,t[11]=s,t[12]=c):c=t[12],c}function Ct(e){let t=(0,Z.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,$.jsx)(G,{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,$.jsx)(G,{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,$.jsx)(G,{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,$.jsx)(q,{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,$.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,Z.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,$.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,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(G,{placeholder:a,value:e.key,onChange:e=>s(t,{key:e.target.value}),className:`font-mono w-[35%]`}),(0,$.jsx)(G,{placeholder:o,value:e.value,onChange:e=>s(t,{value:e.target.value}),className:`font-mono flex-1`}),(0,$.jsx)(_,{variant:`ghost`,size:`icon`,onClick:()=>c(t),className:`h-9 w-9 flex-shrink-0`,children:(0,$.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,$.jsx)(`div`,{className:`flex flex-col gap-2`,children:l}),t[13]=l,t[14]=u),u}function Tt(e){let t=(0,Z.c)(16),{title:n,description:r,actionLabel:i,emptyMessage:a,keyPlaceholder:o,valuePlaceholder:s,entries:c,onAdd:l,onRemove:u,onUpdate:d}=e,p;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,$.jsx)(f,{className:`h-3 w-3 mr-1`}),t[0]=p):p=t[0];let m;t[1]!==i||t[2]!==l?(m=(0,$.jsxs)(_,{variant:`ghost`,size:`sm`,onClick:l,children:[p,i]}),t[1]=i,t[2]=l,t[3]=m):m=t[3];let h;t[4]!==a||t[5]!==c||t[6]!==o||t[7]!==u||t[8]!==d||t[9]!==s?(h=(0,$.jsx)(wt,{entries:c,emptyMessage:a,keyPlaceholder:o,valuePlaceholder:s,onUpdate:d,onRemove:u}),t[4]=a,t[5]=c,t[6]=o,t[7]=u,t[8]=d,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,$.jsx)(q,{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,Z.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,$.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,Z.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,$.jsx)(Fe,{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,$.jsx)(q,{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,Z.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,$.jsx)(q,{title:`Server URL`,description:`Paste the MCP endpoint URL from your provider.`,controlLayout:`stack`,className:`pt-6`,children:(0,$.jsx)(G,{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,$.jsx)(te,{children:(0,$.jsx)(X,{})}),t[7]=d):d=t[7];let f;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,$.jsxs)(z,{children:[(0,$.jsx)(B,{value:`sse`,children:`SSE (Server-Sent Events)`}),(0,$.jsx)(B,{value:`streamableHttp`,children:`Streamable HTTP`})]}),t[8]=f):f=t[8];let p;t[9]!==n.transport||t[10]!==u?(p=(0,$.jsx)(q,{title:`Transport`,controlLayout:`stack`,className:`pt-6`,children:(0,$.jsxs)(U,{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,$.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,$.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,$.jsxs)($.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,Z.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,$.jsxs)(ae,{className:`grid w-full grid-cols-2`,children:[(0,$.jsx)(se,{value:`local`,children:`Local (stdio)`}),(0,$.jsx)(se,{value:`remote`,children:`Remote (HTTP/SSE)`})]}),t[2]=l):l=t[2];let u;t[3]!==n||t[4]!==r?(u=(0,$.jsx)(Y,{value:`local`,children:(0,$.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,$.jsx)(Y,{value:`remote`,children:(0,$.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,$.jsxs)(de,{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,Z.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,$.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,$.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,Z.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,$.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,Z.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,$.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,$.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,$.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,Z.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||_,C;t[6]!==l||t[7]!==x||t[8]!==d.env||t[9]!==d.header||t[10]!==h.snapshot?(C=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]=C):C=t[11];let ee=C;if(y){let e;return t[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(bt,{}),t[12]=e):e=t[12],e}let w;t[13]!==l.name||t[14]!==x?(w=ht(x,l.name),t[13]=l.name,t[14]=x,t[15]=w):w=t[15];let T;t[16]===w?T=t[17]:(T=(0,$.jsx)(ne,{...w,sticky:!0,className:`pr-10`}),t[16]=w,t[17]=T);let E;t[18]===u?E=t[19]:(E=e=>u({name:e}),t[18]=u,t[19]=E);let D;t[20]!==l.name||t[21]!==x||t[22]!==E?(D=(0,$.jsx)(xt,{isEditing:x,name:l.name,onNameChange:E}),t[20]=l.name,t[21]=x,t[22]=E,t[23]=D):D=t[23];let O;t[24]===f?O=t[25]:(O=()=>f(`header`),t[24]=f,t[25]=O);let k;t[26]===p?k=t[27]:(k=e=>p(`header`,e),t[26]=p,t[27]=k);let A;t[28]===m?A=t[29]:(A=(e,t)=>m(`header`,e,t),t[28]=m,t[29]=A);let j;t[30]!==l||t[31]!==d.header||t[32]!==u||t[33]!==O||t[34]!==k||t[35]!==A?(j=(0,$.jsx)(kt,{form:l,onFormChange:u,headerEntries:d.header,onHeaderAdd:O,onHeaderRemove:k,onHeaderUpdate:A}),t[30]=l,t[31]=d.header,t[32]=u,t[33]=O,t[34]=k,t[35]=A,t[36]=j):j=t[36];let M;t[37]===u?M=t[38]:(M=e=>u({defer:e}),t[37]=u,t[38]=M);let N;t[39]!==l.defer||t[40]!==M?(N=(0,$.jsx)(Dt,{defer:l.defer,onDeferChange:M}),t[39]=l.defer,t[40]=M,t[41]=N):N=t[41];let P;t[42]===f?P=t[43]:(P=()=>f(`env`),t[42]=f,t[43]=P);let F;t[44]===p?F=t[45]:(F=e=>p(`env`,e),t[44]=p,t[45]=F);let I;t[46]===m?I=t[47]:(I=(e,t)=>m(`env`,e,t),t[46]=m,t[47]=I);let L;t[48]!==l.serverType||t[49]!==d.env||t[50]!==P||t[51]!==F||t[52]!==I?(L=(0,$.jsx)(Et,{serverType:l.serverType,entries:d.env,onAdd:P,onRemove:F,onUpdate:I}),t[48]=l.serverType,t[49]=d.env,t[50]=P,t[51]=F,t[52]=I,t[53]=L):L=t[53];let R;t[54]===v?R=t[55]:(R=v&&(0,$.jsx)(`p`,{className:i.error,children:v}),t[54]=v,t[55]=R);let z;t[56]!==b.handleDelete||t[57]!==b.handleSave||t[58]!==S||t[59]!==_||t[60]!==ee||t[61]!==x||t[62]!==g?(z=(0,$.jsx)(Mt,{isEditing:x,busy:S,saving:g,deleting:_,hasChanges:ee,onSave:b.handleSave,onDelete:b.handleDelete}),t[56]=b.handleDelete,t[57]=b.handleSave,t[58]=S,t[59]=_,t[60]=ee,t[61]=x,t[62]=g,t[63]=z):z=t[63];let B;t[64]!==j||t[65]!==N||t[66]!==L||t[67]!==R||t[68]!==z||t[69]!==D?(B=(0,$.jsxs)(`div`,{children:[D,j,N,L,R,z]}),t[64]=j,t[65]=N,t[66]=L,t[67]=R,t[68]=z,t[69]=D,t[70]=B):B=t[70];let H;return t[71]!==B||t[72]!==T?(H=(0,$.jsx)(V,{children:(0,$.jsxs)(ve,{children:[T,B]})}),t[71]=B,t[72]=T,t[73]=H):H=t[73],H}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,Z.c)(69),{name:n,config:r,catalog:a,remote:o,authorized:l,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]!==l||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):[],E;t[16]!==r.args||t[17]!==r.command||t[18]!==r.url?(E=r.url?r.url:`${r.command??``} ${r.args?.join(` `)??``}`.trim(),t[16]=r.args,t[17]=r.command,t[18]=r.url,t[19]=E):E=t[19];let D=E,O;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(O=s(i.body,`truncate`),t[20]=O):O=t[20];let k;t[21]===n?k=t[22]:(k=(0,$.jsx)(`div`,{className:O,children:n}),t[21]=n,t[22]=k);let A;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(A=s(i.compact,`truncate text-muted-foreground font-mono`),t[23]=A):A=t[23];let j;t[24]===D?j=t[25]:(j=(0,$.jsx)(`div`,{className:A,children:D}),t[24]=D,t[25]=j);let M;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(M=s(i.caption,`truncate text-muted-foreground`),t[26]=M):M=t[26];let N;t[27]===a?N=t[28]:(N=Ft(a),t[27]=a,t[28]=N);let P;t[29]===N?P=t[30]:(P=(0,$.jsx)(`div`,{className:M,children:N}),t[29]=N,t[30]=P);let F;t[31]!==f||t[32]!==k||t[33]!==j||t[34]!==P?(F=(0,$.jsxs)(`button`,{type:`button`,onClick:f,className:`min-w-0 text-left`,children:[k,j,P]}),t[31]=f,t[32]=k,t[33]=j,t[34]=P,t[35]=F):F=t[35];let I;t[36]!==l||t[37]!==u||t[38]!==v||t[39]!==y||t[40]!==o?(I=o&&(0,$.jsx)(_,{type:`button`,variant:l?`outline`:`secondary`,size:`sm`,disabled:u,onClick:()=>{l?y():v()},children:u?`Working…`:l?`Sign out`:`Sign in`}),t[36]=l,t[37]=u,t[38]=v,t[39]=y,t[40]=o,t[41]=I):I=t[41];let L=`Refresh ${n} tools`,R=d&&`animate-spin`,z;t[42]===R?z=t[43]:(z=s(`h-4 w-4`,R),t[42]=R,t[43]=z);let B;t[44]===z?B=t[45]:(B=(0,$.jsx)(c,{className:z}),t[44]=z,t[45]=B);let V;t[46]!==m||t[47]!==d||t[48]!==L||t[49]!==B?(V=(0,$.jsx)(C,{asChild:!0,children:(0,$.jsx)(_,{type:`button`,variant:`ghost`,size:`icon-sm`,disabled:d,onClick:m,"aria-label":L,children:B})}),t[46]=m,t[47]=d,t[48]=L,t[49]=B,t[50]=V):V=t[50];let H;t[51]===Symbol.for(`react.memo_cache_sentinel`)?(H=(0,$.jsx)(ee,{children:`Refresh tools`}),t[51]=H):H=t[51];let U;t[52]===V?U=t[53]:(U=(0,$.jsx)(w,{children:(0,$.jsxs)(T,{children:[V,H]})}),t[52]=V,t[53]=U);let te=e.length>0&&(0,$.jsx)(_,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-expanded":b,"aria-label":b?`Hide tools`:`Show tools`,onClick:()=>x(Rt),children:(0,$.jsx)(h,{className:s(`h-4 w-4 transition-transform`,b&&`rotate-180`)})}),W;t[54]!==I||t[55]!==U||t[56]!==te?(W=(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[I,U,te]}),t[54]=I,t[55]=U,t[56]=te,t[57]=W):W=t[57];let ne=`Delete ${n}`,G;t[58]===Symbol.for(`react.memo_cache_sentinel`)?(G=(0,$.jsx)(p,{className:`h-4 w-4`}),t[58]=G):G=t[58];let K;t[59]!==g||t[60]!==ne?(K=(0,$.jsx)(C,{asChild:!0,children:(0,$.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":ne,children:G})}),t[59]=g,t[60]=ne,t[61]=K):K=t[61];let re;t[62]===Symbol.for(`react.memo_cache_sentinel`)?(re=(0,$.jsx)(ee,{children:`Remove this MCP server from the project`}),t[62]=re):re=t[62];let q;t[63]===K?q=t[64]:(q=(0,$.jsx)(w,{children:(0,$.jsxs)(T,{children:[K,re]})}),t[63]=K,t[64]=q);let J;t[65]!==F||t[66]!==W||t[67]!==q?(J=(0,$.jsxs)(`div`,{className:`grid min-h-13 grid-cols-[minmax(0,1fr)_auto_1.75rem] items-center gap-3`,children:[F,W,q]}),t[65]=F,t[66]=W,t[67]=q,t[68]=J):J=t[68],S=(0,$.jsxs)(`div`,{className:`group px-3 py-3 hover:bg-muted/30`,children:[J,b&&e.length>0&&(0,$.jsx)(`ul`,{className:s(i.caption,`mt-2 space-y-1 pl-1 text-muted-foreground`),children:e.map(Lt)})]}),t[0]=l,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,$.jsx)(`li`,{className:`font-mono truncate`,children:e},e)}function Rt(e){return!e}function zt(e){return e.name}var Bt=`https://tarsk.io/skills/mcp/`;function Vt(e){return e.name.toLowerCase().replace(/\s+/g,`-`)}function Ht(e){return typeof e.url==`string`&&e.url.trim().length>0}function Ut(){let e=a(e=>e.selectedProjectId),t=a(e=>e.projects).find(t=>t.projectId===e)?.projectPath,{installedServers:n,catalog:r,loadingConfig:o,loadInstalledServers:f}=oe(t),{popularServers:p,loadingPopular:g}=ie(),{openChatDockPanel:v}=me(),{setPendingExplorerPath:y,triggerExplorerRefresh:b}=A(),[x,S]=(0,Q.useState)(!1),[j,P]=(0,Q.useState)(null),[z,B]=(0,Q.useState)(null),[V,U]=(0,Q.useState)(null),[te,G]=(0,Q.useState)(!1),[q,ae]=(0,Q.useState)({}),[se,de]=(0,Q.useState)(null),[Y,ve]=(0,Q.useState)(null),X=(0,Q.useCallback)(async()=>{if(!t){ae({});return}let e=n.filter(e=>Ht(e.config));if(e.length===0){ae({});return}let r=await Promise.all(e.map(async e=>{try{let n=await D(t,e.name);return[e.name,n.authorized]}catch{return[e.name,!1]}}));ae(Object.fromEntries(r))},[t,n]);(0,Q.useEffect)(()=>{X()},[X]);let Z=(0,Q.useCallback)(async e=>{if(t){G(!0);try{await pe(t,e),await f(),b(),M({title:`MCP server removed`,description:e}),U(null)}catch(e){M({title:`Error`,description:e instanceof Error?e.message:`Failed to remove server`,variant:`destructive`})}finally{G(!1)}}},[t,f,b]),Se=(0,Q.useCallback)(async e=>{if(t){de(e);try{let n=await k(t,e);await X(),await f(),M({title:`Signed in`,description:n.catalog?`${e} · ${J(n.catalog)}`:`Connected to ${e}`})}catch(e){M({title:`Sign in failed`,description:e instanceof Error?e.message:`OAuth authorization failed`,variant:`destructive`})}finally{de(null)}}},[t,X,f]),Ce=(0,Q.useCallback)(async e=>{if(t){de(e);try{await O(t,e),await X(),await f(),M({title:`Signed out`,description:e})}catch(e){M({title:`Sign out failed`,description:e instanceof Error?e.message:`Failed to revoke OAuth credentials`,variant:`destructive`})}finally{de(null)}}},[t,X,f]),we=(0,Q.useCallback)(async e=>{if(t){ve(e??`all`);try{let n=await ue(t,e);await f();let r=Object.values(n.catalog),[i]=r;if(i)M({title:`Tools refreshed`,description:`${i.serverName} · ${J(i)}`});else{let e=r.filter(e=>e.state===`ok`).length;M({title:`Tools refreshed`,description:`${e}/${r.length} servers loaded`})}}catch(e){M({title:`Refresh failed`,description:e instanceof Error?e.message:`Could not refresh MCP tools`,variant:`destructive`})}finally{ve(null)}}},[t,f]),Te=(0,Q.useCallback)(()=>{y(`.agents/mcp.json`),v(`explorer`)},[y,v]),Ee=(0,Q.useCallback)(async e=>{if(!t)return;let r=Vt(e);if(!n.some(t=>t.name===r||t.name===e.id)){if(e.url!==void 0){if(!e.url.trim()){P({name:r,config:{url:``,transport:e.transport??`sse`,...Object.keys(e.env??{}).length>0?{env:e.env}:{}}}),S(!0);return}try{let n=await he(t,r,{url:e.url,transport:e.transport??`sse`,...Object.keys(e.env??{}).length>0?{env:e.env}:{}});await f(),b(),M({title:`MCP server installed`,description:`${e.name} · ${J(n.catalog)}`})}catch(e){M({title:`Error`,description:e instanceof Error?e.message:`Failed to install server`,variant:`destructive`})}return}if(!e.command){M({title:`Error`,description:`This server is missing install configuration.`,variant:`destructive`});return}try{let n=await he(t,r,{command:e.command,args:e.args??[],...Object.keys(e.env??{}).length>0?{env:e.env}:{}});await f(),b(),M({title:`MCP server installed`,description:`${e.name} · ${J(n.catalog)}`})}catch(e){M({title:`Error`,description:e instanceof Error?e.message:`Failed to install server`,variant:`destructive`})}}},[t,n,f,b]),De=be(e,[o,g]);return e?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(R,{loading:De,children:(0,$.jsxs)(H,{className:`shrink-0`,children:[(0,$.jsx)(ne,{title:`Installed MCP Servers`,description:`MCP servers configured for this project.`,action:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(_,{variant:`ghost`,onClick:Te,children:`Config`}),n.length>=2&&(0,$.jsxs)(_,{variant:`ghost`,className:`gap-1`,disabled:Y!==null,onClick:()=>void we(),children:[(0,$.jsx)(c,{className:s(`h-4 w-4`,Y===`all`&&`animate-spin`)}),`Refresh all`]}),(0,$.jsxs)(fe,{children:[(0,$.jsx)(F,{asChild:!0,children:(0,$.jsxs)(_,{className:`gap-1`,children:[`Add Server`,(0,$.jsx)(h,{className:`h-4 w-4 opacity-70`})]})}),(0,$.jsxs)(ce,{align:`end`,className:`w-56`,children:[(0,$.jsxs)(K,{className:s(i.body,`gap-2`),onSelect:()=>S(!0),children:[(0,$.jsx)(u,{className:`h-4 w-4 shrink-0`}),`Manual Entry`]}),(0,$.jsxs)(re,{children:[(0,$.jsxs)(W,{className:s(i.body,`gap-2`),children:[(0,$.jsx)(d,{className:`h-4 w-4 shrink-0`}),`Popular`]}),(0,$.jsx)(ge,{className:`w-80 max-h-80 overflow-y-auto`,children:g?(0,$.jsx)(K,{disabled:!0,className:i.bodyMuted,children:`Loading…`}):p.length===0?(0,$.jsx)(K,{disabled:!0,className:i.bodyMuted,children:`No available servers`}):[...p].sort((e,t)=>e.name.localeCompare(t.name)).map(e=>{let t=Vt(e),r=n.some(n=>n.name===t||n.name===e.id);return(0,$.jsx)(w,{children:(0,$.jsxs)(T,{children:[(0,$.jsx)(C,{asChild:!0,children:(0,$.jsxs)(K,{className:s(i.body,`gap-2`,r&&`opacity-50 cursor-not-allowed`),onSelect:()=>{r||Ee(e)},children:[(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.name}),r&&(0,$.jsx)(m,{className:`h-4 w-4 shrink-0 text-muted-foreground`})]})}),(0,$.jsx)(ee,{side:`right`,className:`max-w-64`,children:e.description})]})},e.id)})})]}),(0,$.jsx)(_e,{}),(0,$.jsxs)(K,{className:s(i.body,`gap-2`),onSelect:()=>void E(Bt),children:[(0,$.jsx)(l,{className:`h-4 w-4 shrink-0`}),`Marketplace`]})]})]})]}),sticky:!1}),(0,$.jsx)(N,{className:`pt-6`,children:n.length===0?(0,$.jsx)(xe,{icon:d,title:`Connect your agent to tools, APIs, and data sources`,bordered:!1}):(0,$.jsx)(`div`,{className:`divide-y divide-table-border`,children:n.map(e=>(0,$.jsx)(It,{name:e.name,config:e.config,catalog:r[e.name],remote:Ht(e.config),authorized:q[e.name]===!0,oauthBusy:se===e.name,refreshing:Y===e.name||Y===`all`,onEdit:()=>B(e.name),onRefresh:()=>void we(e.name),onDelete:()=>U(e.name),onSignIn:()=>void Se(e.name),onSignOut:()=>void Ce(e.name)},e.name))})})]})}),(0,$.jsx)(L,{open:x,onOpenChange:e=>{S(e),e||P(null)},children:(0,$.jsx)(I,{className:`max-w-2xl max-h-[90vh] overflow-y-auto p-0`,children:(0,$.jsx)(Nt,{projectPath:t,initialName:j?.name,initialConfig:j?.config,onBack:()=>{S(!1),P(null),f(),b()}})})}),(0,$.jsx)(L,{open:z!==null,onOpenChange:e=>{e||B(null)},children:(0,$.jsx)(I,{className:`max-w-2xl max-h-[90vh] overflow-y-auto p-0`,children:(0,$.jsx)(Nt,{projectPath:t,serverName:z??void 0,onBack:()=>{B(null),f(),b()}})})}),(0,$.jsx)(ye,{open:V!==null,onOpenChange:e=>!e&&U(null),title:`Delete MCP Server`,description:`Are you sure you want to delete the server "${V}"? This action cannot be undone.`,onConfirm:()=>{V&&Z(V)},confirming:te})]}):(0,$.jsx)(le,{children:`Select a project to manage MCP servers.`})}export{Ut as SettingsMCPServersView,Ut 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{Ft as i}from"./dist-DNkA3vYh.js";import{et as a,n as o}from"./store-B7EgrEO7.js";import{r as s,t as c}from"./utils-B-qS8qMg.js";import{t as l}from"./button-B5aMz2Rk.js";import{r as u}from"./tooltip-Dvmz78Z_.js";import{B as d,L as f,R as p,U as m,V as h,jt as g}from"./api-OO3KSG8d.js";import{t as _}from"./progress-indicator-C01aPXIe.js";import{n as v}from"./suspense-resource-DzlMlIgR.js";import{At as y,Et as ee,Ht as te,Nn as b,Nt as x,Qn as S,St as C,kt as w,lr as ne,ur as T,ut as E,vt as D,xt as O}from"./index-DD_a7tQU.js";import{a as k,i as A,n as j,r as M,t as N}from"./table-7hMwxpkF.js";import{n as P,t as F}from"./toggle-group-UiksQ0n9.js";import{n as I,t as re}from"./commit-method-fields-DAd1unUF.js";import{t as L}from"./async-error-boundary-Dll_zcqr.js";import{t as ie}from"./sorting-DqwxPMRN.js";import{a as ae,o as R}from"./settings-list-Dn4CHP4Z.js";import{t as oe}from"./use-deferred-search-Dgxosq55.js";import{n as se,r as z,t as B}from"./model-list-controls-DAZM0NBC.js";var V=e(n(),1),H=t();function U(e){return`settings-models:coding:${e}`}function W(e){return`settings-models:image:${e}`}async function G(){let e=(await g()).filter(e=>e.apiKey),t=await m(`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 ce(e){let t=e.filter(e=>e.name.toLowerCase()===`openrouter`),n=await m(`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 K=r();function q(e){let t=(0,H.c)(8),{label:n,large:r}=e,a=r===void 0?!1:r,o=a?`md`:`sm`,s=a?`h-8 w-8`:void 0,l;t[0]!==o||t[1]!==s?(l=(0,K.jsx)(_,{size:o,className:s}),t[0]=o,t[1]=s,t[2]=l):l=t[2];let u;t[3]===n?u=t[4]:(u=n?(0,K.jsx)(`p`,{className:c(i.bodyMuted,`mt-2`),children:n}):null,t[3]=n,t[4]=u);let d;return t[5]!==l||t[6]!==u?(d=(0,K.jsx)(`div`,{className:`flex h-full items-center justify-center py-12`,children:(0,K.jsxs)(`div`,{className:`text-center`,children:[l,u]})}),t[5]=l,t[6]=u,t[7]=d):d=t[7],d}var J=`table-fixed`,le=`h-9`,ue=c(i.body,`py-1.5`),de=`w-10 py-1.5`,fe=`w-24 py-1.5 text-right`,pe=c(i.body,`w-20 py-1.5 text-right text-muted-foreground tabular-nums`),me=c(i.body,`w-48 py-1.5 text-right text-muted-foreground whitespace-nowrap tabular-nums`),he=`h-9 w-24 bg-transparent py-2 text-right`,ge=`h-9 w-20 bg-transparent py-2 text-right`,_e=`h-9 w-48 bg-transparent py-2 text-right`;function Y(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,H.c)(9),{showIntelligence:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=c(`w-full caption-bottom`,J,i.body),t[0]=r):r=t[0];let a,o;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,K.jsx)(A,{className:`h-9 w-10 bg-transparent py-2`}),o=(0,K.jsx)(A,{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,K.jsx)(A,{className:he,children:`Intelligence`}):null,t[3]=n,t[4]=s);let l,u;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,K.jsx)(A,{className:ge,children:`TPS`}),u=(0,K.jsx)(A,{className:_e,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,K.jsx)(`table`,{className:r,children:(0,K.jsx)(`thead`,{className:`[&_tr]:border-b [&_tr]:border-table-border`,children:(0,K.jsxs)(`tr`,{children:[a,o,s,l,u]})})}),t[7]=s,t[8]=d),d}function Z(e){let t=(0,H.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,K.jsxs)(k,{className:le,children:[(0,K.jsx)(M,{className:de,children:(0,K.jsx)(E,{id:t,value:n,onChange:()=>l(e.id),ariaLabel:`${s(e)} ${n?`enabled`:`disabled`}`})}),(0,K.jsx)(M,{className:ue,children:(0,K.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,K.jsx)(M,{className:fe,children:(0,K.jsx)(`div`,{className:`flex justify-end`,children:(0,K.jsx)(z,{codingIndex:e.coding_index,modelName:s(e)})})}):null,(0,K.jsx)(M,{className:pe,children:ve(e.avgTPS)}),(0,K.jsx)(M,{className:me,children:Y(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,K.jsx)(N,{className:J,children:(0,K.jsx)(j,{children:u})}),t[13]=u,t[14]=d),d}function Q(e){let t=(0,H.c)(25),{providerName:n,providerSlug:r,action:a,tableHeader:o,children:s}=e,l;t[0]!==n||t[1]!==r?(l=(0,K.jsx)(D,{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,K.jsx)(`h2`,{className:u,children:n}),t[4]=n,t[5]=d);let f;t[6]!==l||t[7]!==d?(f=(0,K.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,K.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,K.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,K.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,K.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,K.jsxs)(x,{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=o(),l=S(W(0),()=>ce(e)),[p]=(0,V.useState)(l.allImageModels),[m,h]=(0,V.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:a.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,K.jsx)(K.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,K.jsx)(Q,{providerName:e.name,providerSlug:e.slug,action:s.length>0?(0,K.jsx)(B,{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,K.jsx)(X,{showIntelligence:!1}):void 0,children:s.length===0?(0,K.jsx)(R,{message:t?`No models matching your search.`:`No image models available for this provider.`}):(0,K.jsx)(u,{children:(0,K.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=o(),n=S(U(e),()=>G()),r=n.providers,[s]=(0,V.useState)(n.allModels),[l,d]=(0,V.useState)(n.enabledModelIds),[f,m]=(0,V.useState)(`coding`),{query:g,setQuery:_,deferredQuery:v}=oe(),[E,D]=(0,V.useState)(`alphabetical`),[k,A]=(0,V.useState)(``),j=e=>b(e.id),M=async(e,n)=>{try{l[e]?.has(n)?(await p(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])}))),te(),t({type:a.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)},L=(e,t,n)=>ie({models:e,query:v,sortBy:n,getDisplayName:j,getPriority:e=>+!t.has(e.id)});if(r.length===0)return(0,K.jsx)(w,{title:`No providers configured`,children:`Configure a provider with an API key to view available models.`});let z=r.some(e=>e.name.toLowerCase()===`openrouter`);return(0,K.jsx)(ee,{loading:!1,children:(0,K.jsxs)(ne,{value:f,className:`flex flex-col gap-2.5`,children:[(0,K.jsxs)(x,{className:`shrink-0`,children:[(0,K.jsx)(C,{title:`Models`,description:`View and manage available models from your configured providers.`,action:(0,K.jsx)(ae,{placeholder:`Search`,value:g,onChange:_,className:`mb-0 w-64`}),sticky:!1}),(0,K.jsx)(y,{className:`max-w-none pt-6`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-3`,children:[z?(0,K.jsxs)(F,{type:`single`,value:f,onValueChange:e=>{(e===`coding`||e===`image`)&&(m(e),_(``))},"aria-label":`Model type`,className:c(re,`shrink-0`),children:[(0,K.jsx)(P,{value:`coding`,"aria-label":`Coding`,className:c(i.body,I),children:`Coding`}),(0,K.jsx)(P,{value:`image`,"aria-label":`Image`,className:c(i.body,I),children:`Image`})]}):null,k?(0,K.jsx)(O,{variant:k.includes(`error`)||k.includes(`Failed`)?`error`:`success`,className:`mb-0 shrink-0`,children:k}):null,(0,K.jsx)(`div`,{className:`ml-auto shrink-0`,children:(0,K.jsx)(se,{sortBy:E,showCodingIndex:f===`coding`,showIntelligenceByPrice:f===`coding`,onSortByChange:D})})]})})]}),(0,K.jsx)(T,{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=L(t,n,E);return r.length===0&&g?null:(0,K.jsx)(Q,{providerName:e.name,providerSlug:e.slug,action:r.length>0?(0,K.jsx)(B,{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,K.jsx)(X,{showIntelligence:E===`coding-index`||E===`intelligence-by-price`}):void 0,children:r.length===0?(0,K.jsx)(R,{message:g?`No models matching your search.`:`No models available for this provider.`}):(0,K.jsx)(u,{children:(0,K.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,K.jsx)(T,{value:`image`,className:`mt-0 flex flex-col gap-2.5`,children:f===`image`?(0,K.jsx)(V.Suspense,{fallback:(0,K.jsx)(q,{}),children:(0,K.jsx)(ye,{providers:r,globalSearchQuery:g,modelSortBy:E,filterAndSortModels:L,getModelDisplayName:j,onSaveStatus:e=>{A(e),e.includes(`Failed`)||setTimeout(()=>A(``),3e3)}})}):null})]})})}function $(){let e=(0,H.c)(8),[t,n]=(0,V.useState)(0),r;e[0]===t?r=e[1]:(r=function(){v(U(t)),n(Se)},e[0]=t,e[1]=r);let i=r,a;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,K.jsx)(q,{label:`Loading models...`,large:!0}),e[2]=a):a=e[2];let o;e[3]===t?o=e[4]:(o=(0,K.jsx)(V.Suspense,{fallback:a,children:(0,K.jsx)(be,{loadVersion:t},t)}),e[3]=t,e[4]=o);let s;return e[5]!==i||e[6]!==o?(s=(0,K.jsx)(`div`,{className:`h-full min-h-0`,children:(0,K.jsx)(L,{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,K.jsx)(w,{title:`Failed to load models`,action:(0,K.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-C4NxP4gI.js","assets/rolldown-runtime-aKtaBQYM.js","assets/index-DD_a7tQU.js","assets/react-vendor-Ee0-5T4I.js","assets/progress-indicator-C01aPXIe.js","assets/utils-B-qS8qMg.js","assets/dist-DNkA3vYh.js","assets/button-B5aMz2Rk.js","assets/scroll-area-DwRwR2nQ.js","assets/dist-T8-4ZfS0.js","assets/dist-OixawqbU.js","assets/tooltip-Dvmz78Z_.js","assets/dist-DDYi9MQo.js","assets/chat-dock-context-Cnq0BWgm.js","assets/api-OO3KSG8d.js","assets/store-B7EgrEO7.js","assets/explorer-tab-context-BxUVwWQQ.js","assets/main-tab-context-CNgxXqnH.js","assets/terminal-output-activity-B1bjjsl7.js","assets/use-browser-overlay-block-DyprQSIG.js","assets/browser-overlay-block-CiDtkfup.js","assets/suspense-resource-DzlMlIgR.js","assets/dist-sThe8WYP.js","assets/dist-TCNzmc2V.js","assets/es2015-Bu0NIPbn.js","assets/dist-CWYnBq-n.js","assets/dist-DwblUvSf.js","assets/dist-COfI64N5.js","assets/dist-CSssbxDI.js","assets/useBaseQuery-D5as4SgS.js","assets/lucide-react-B-115rul.js","assets/chunk-QFMPRPBF-COsSkB7x.js","assets/index-C4WzOmf3.css","assets/delete-confirm-dialog-Cx9nT7Xd.js","assets/slug-utils-BQZ6c2py.js","assets/settings-list-Dn4CHP4Z.js","assets/card-DRr14MEQ.js","assets/use-deferred-search-Dgxosq55.js","assets/use-installed-ai-files-BkpswqGI.js","assets/use-settings-page-loading-BTySlInF.js","assets/settings-mcp-servers-view-xv9D4DPO.js","assets/settings-system-prompt-view-B_nF2HUy.js","assets/project-tools-view-CZbblznF.js","assets/settings-slash-commands-view-CE7FT3dB.js","assets/settings-subagents-view-DHVSAmCY.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{at as s,it as c}from"./dist-DNkA3vYh.js";import{t as l}from"./progress-indicator-C01aPXIe.js";import{t as u}from"./settings-tab-bar-DAHxT5KE.js";var d=t(),f=e(n(),1),p=i(),m=(0,f.lazy)(function(){return r(()=>import(`./settings-skills-view-C4NxP4gI.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]))}),h=(0,f.lazy)(function(){return r(()=>import(`./settings-mcp-servers-view-xv9D4DPO.js`),__vite__mapDeps([40,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,35,36,39]))}),g=(0,f.lazy)(function(){return r(()=>import(`./settings-system-prompt-view-B_nF2HUy.js`),__vite__mapDeps([41,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,39]))}),_=(0,f.lazy)(function(){return r(()=>import(`./project-tools-view-CZbblznF.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,39]))}),v=(0,f.lazy)(function(){return r(()=>import(`./settings-slash-commands-view-CE7FT3dB.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,35,36,39]))}),y=(0,f.lazy)(function(){return r(()=>import(`./settings-subagents-view-DHVSAmCY.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,38,39]))});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-ChY2DXYc.js","assets/rolldown-runtime-aKtaBQYM.js","assets/index-DD_a7tQU.js","assets/react-vendor-Ee0-5T4I.js","assets/progress-indicator-C01aPXIe.js","assets/utils-B-qS8qMg.js","assets/dist-DNkA3vYh.js","assets/button-B5aMz2Rk.js","assets/scroll-area-DwRwR2nQ.js","assets/dist-T8-4ZfS0.js","assets/dist-OixawqbU.js","assets/tooltip-Dvmz78Z_.js","assets/dist-DDYi9MQo.js","assets/chat-dock-context-Cnq0BWgm.js","assets/api-OO3KSG8d.js","assets/store-B7EgrEO7.js","assets/explorer-tab-context-BxUVwWQQ.js","assets/main-tab-context-CNgxXqnH.js","assets/terminal-output-activity-B1bjjsl7.js","assets/use-browser-overlay-block-DyprQSIG.js","assets/browser-overlay-block-CiDtkfup.js","assets/suspense-resource-DzlMlIgR.js","assets/dist-sThe8WYP.js","assets/dist-TCNzmc2V.js","assets/es2015-Bu0NIPbn.js","assets/dist-CWYnBq-n.js","assets/dist-DwblUvSf.js","assets/dist-COfI64N5.js","assets/dist-CSssbxDI.js","assets/useBaseQuery-D5as4SgS.js","assets/lucide-react-B-115rul.js","assets/chunk-QFMPRPBF-COsSkB7x.js","assets/index-C4WzOmf3.css","assets/model-list-controls-DAZM0NBC.js","assets/sorting-DqwxPMRN.js","assets/async-error-boundary-Dll_zcqr.js","assets/card-DRr14MEQ.js","assets/settings-list-Dn4CHP4Z.js","assets/use-deferred-search-Dgxosq55.js","assets/pending-changes-Bn-0ak1d.js","assets/settings-models-view-rUeqlE4k.js","assets/commit-method-fields-DAd1unUF.js","assets/toggle-group-UiksQ0n9.js","assets/table-7hMwxpkF.js","assets/project-model-aliases-view-o1-Z2es5.js","assets/use-settings-page-loading-BTySlInF.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-DNkA3vYh.js";import{t as l}from"./progress-indicator-C01aPXIe.js";import{t as u}from"./settings-tab-bar-DAHxT5KE.js";var d=t(),f=e(n(),1),p=i(),m=(0,f.lazy)(function(){return r(()=>import(`./providers-list-view-ChY2DXYc.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]))}),h=(0,f.lazy)(function(){return r(()=>import(`./settings-models-view-rUeqlE4k.js`),__vite__mapDeps([40,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,41,42,33,34,35,36,37,43,38]))}),g=(0,f.lazy)(function(){return r(()=>import(`./project-model-aliases-view-o1-Z2es5.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,45]))});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`?c(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:s}),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-DbKI7sbW.js","assets/rolldown-runtime-aKtaBQYM.js","assets/index-DD_a7tQU.js","assets/react-vendor-Ee0-5T4I.js","assets/progress-indicator-C01aPXIe.js","assets/utils-B-qS8qMg.js","assets/dist-DNkA3vYh.js","assets/button-B5aMz2Rk.js","assets/scroll-area-DwRwR2nQ.js","assets/dist-T8-4ZfS0.js","assets/dist-OixawqbU.js","assets/tooltip-Dvmz78Z_.js","assets/dist-DDYi9MQo.js","assets/chat-dock-context-Cnq0BWgm.js","assets/api-OO3KSG8d.js","assets/store-B7EgrEO7.js","assets/explorer-tab-context-BxUVwWQQ.js","assets/main-tab-context-CNgxXqnH.js","assets/terminal-output-activity-B1bjjsl7.js","assets/use-browser-overlay-block-DyprQSIG.js","assets/browser-overlay-block-CiDtkfup.js","assets/suspense-resource-DzlMlIgR.js","assets/dist-sThe8WYP.js","assets/dist-TCNzmc2V.js","assets/es2015-Bu0NIPbn.js","assets/dist-CWYnBq-n.js","assets/dist-DwblUvSf.js","assets/dist-COfI64N5.js","assets/dist-CSssbxDI.js","assets/useBaseQuery-D5as4SgS.js","assets/lucide-react-B-115rul.js","assets/chunk-QFMPRPBF-COsSkB7x.js","assets/index-C4WzOmf3.css","assets/commit-method-fields-DAd1unUF.js","assets/toggle-group-UiksQ0n9.js","assets/use-settings-page-loading-BTySlInF.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{nt as s,rt as c}from"./dist-DNkA3vYh.js";import{et as l,n as u,r as d}from"./store-B7EgrEO7.js";import{t as f}from"./progress-indicator-C01aPXIe.js";import{At as p,Nt as m,St as h,z as g}from"./index-DD_a7tQU.js";import{t as _}from"./settings-tab-bar-DAHxT5KE.js";var v=e(n(),1),y=t(),b=i();function x(e){let t=(0,y.c)(9),{projectId:n}=e,r=u(),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=d(i),o;t[2]===r?o=t[3]:(o=function(){r({type:l.ConfigUpdated})},t[2]=r,t[3]=o);let s=o,c;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,b.jsx)(h,{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)(p,{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-DbKI7sbW.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]))});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,3 @@
|
|
|
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{F as i,Ft as a}from"./dist-DNkA3vYh.js";import{r as o}from"./store-B7EgrEO7.js";import{t as s,u as c}from"./utils-B-qS8qMg.js";import{G as l,Jt as u,V as d,W as f,Zt as p,a as m,dt as h,hn as g,ht as _,jt as v}from"./lucide-react-B-115rul.js";import{t as y}from"./button-B5aMz2Rk.js";import{i as b,n as x,r as S,t as C}from"./tooltip-Dvmz78Z_.js";import{Ci as w,Qt as T,Ri as E,T as D,Tn as O,Vi as k,ai as A,bi as j,cr as M,dr as N,er as P,fr as F,ir as I,lr as L,nr as R,oi as z,or as B,pi as V,sr as H,tr as ee}from"./api-OO3KSG8d.js";import{t as U}from"./progress-indicator-C01aPXIe.js";import{$n as W,Ar as G,At as K,B as q,Cr as te,Dr as J,Er as Y,Et as ne,Ft as re,Gn as ie,It as ae,Jn as oe,Kn as se,Mt as ce,Nt as le,Or as ue,Pn as de,Pt as fe,Rt as pe,St as me,Tr as X,Wn as he,Xn as ge,Yn as _e,Zn as ve,_r as ye,bt as be,gr as xe,jr as Se,kr as Ce,kt as we,mr as Te,o as Ee,or as De,qn as Oe,wr as ke,xt as Ae,yr as je,yt as Me,zt as Ne}from"./index-DD_a7tQU.js";import{t as Pe}from"./delete-confirm-dialog-Cx9nT7Xd.js";import{t as Fe}from"./use-settings-page-loading-BTySlInF.js";import{a as Ie,i as Le,r as Re}from"./settings-list-Dn4CHP4Z.js";import{t as ze}from"./use-deferred-search-Dgxosq55.js";import{t as Be}from"./use-installed-ai-files-BkpswqGI.js";import{i as Ve,n as He,r as Ue,t as We}from"./slug-utils-BQZ6c2py.js";var Z=t(),Q=e(n(),1),$=r();function Ge({threadId:e,onSkillCreated:t}){let[n,r]=(0,Q.useState)(``),[i,o]=(0,Q.useState)(``),[c,l]=(0,Q.useState)(!1),u=Ue(n),d=He(u),f=async()=>{if(!(!d||!i.trim()||!e)){l(!0);try{let n=await D(e,u,i.trim());W({title:`Skill created`,description:`Skill '${u}' was created successfully.`}),r(``),o(``),t?.(n.path,`SKILL.md`)}catch(e){W({title:`Error`,description:e instanceof Error?e.message:`Failed to create skill`,variant:`destructive`})}finally{l(!1)}}};return e?(0,$.jsx)(ce,{children:(0,$.jsxs)(Me,{children:[(0,$.jsx)(me,{title:`Add Skill`,description:`Saved as SKILL.md in .agents/skills.`,sticky:!0,className:`pr-10`}),(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(be,{title:`Skill Name`,controlLayout:`stack`,className:`pt-6`,children:[(0,$.jsx)(X,{id:`skillName`,value:n,onChange:e=>r(e.target.value),placeholder:`e.g. Code Review`,disabled:c}),n?(0,$.jsxs)(`p`,{className:s(a.caption,`mt-2`),children:[`Folder name: `,(0,$.jsx)(`span`,{className:`font-mono`,children:u||`...`})]}):null]}),(0,$.jsx)(be,{title:`Description`,controlLayout:`stack`,className:`pt-6`,children:(0,$.jsx)(q,{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:c})}),(0,$.jsx)(Ve,{onContinue:()=>void f(),disabled:!d||!i.trim(),creating:c})]})]})}):(0,$.jsx)(we,{title:`No thread selected`,children:`Please select a thread to add a skill.`})}function Ke(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 qe(e){return e.endsWith(`.md`)||e.endsWith(`.mdx`)}function Je(e){return e.includes(`SKILL.md`)?`SKILL.md`:e[0]??`SKILL.md`}function Ye(e,t){let n=e?.sourceId??t;if(!(!n||n==="default"))return n}function Xe({open:e,onOpenChange:t,skill:n,catalogSourceId:r,onInstall:i}){let[o,c]=(0,Q.useState)([]),[l,u]=(0,Q.useState)(null),[d,f]=(0,Q.useState)(``),[p,m]=(0,Q.useState)(!1),[h,g]=(0,Q.useState)(!1),[_,b]=(0,Q.useState)(null),[x,S]=(0,Q.useState)(!1),C=Ye(n,r),w=!!C;(0,Q.useEffect)(()=>{if(!e||!n)return;let t=n,i=Ye(t,r),a=!1;async function o(){m(!0),b(null),c([]),u(null),f(``);try{if(i){let e=await R(i,t.id);if(a)return;c(e.files),u(Je(e.files))}else{if(a)return;c([`SKILL.md`]),u(`SKILL.md`),f(Ke(t))}}catch(e){if(a)return;b(e instanceof Error?e.message:`Failed to load skill files`)}finally{a||m(!1)}}return o(),()=>{a=!0}},[e,n,r]),(0,Q.useEffect)(()=>{if(!e||!n||!l||!w||!C)return;let t=n,r=l,i=!1;async function a(){g(!0),b(null);try{let e=await ee(C,t.id,r);if(i)return;f(e.content)}catch(e){if(i)return;b(e instanceof Error?e.message:`Failed to load file`),f(``)}finally{i||g(!1)}}return a(),()=>{i=!0}},[e,n,l,w,C]);let T=(0,Q.useCallback)(async()=>{if(!n)return;let e=C?{...n,sourceId:C}:n;S(!0);try{await i(e),t(!1)}finally{S(!1)}},[n,C,i,t]),E=p||w&&h,D=l?qe(l):!1,O=(0,Q.useMemo)(()=>o.map(e=>(0,$.jsxs)(De,{selected:e===l,onClick:()=>u(e),className:`gap-2 cursor-pointer`,children:[(0,$.jsx)(v,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,$.jsx)(`span`,{className:s(a.caption,`truncate`),children:e})]},e)),[o,l]);return(0,$.jsx)(Y,{open:e,onOpenChange:t,children:(0,$.jsxs)(J,{className:`flex max-h-[90vh] max-w-5xl flex-col gap-0 overflow-hidden p-0`,children:[(0,$.jsxs)(G,{className:`border-b border-border px-6 py-4`,children:[(0,$.jsx)(Se,{children:n?.name??`Review skill`}),n?.description?(0,$.jsx)(ue,{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:s(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)(U,{centered:!0,containerClassName:`py-8`,label:`Loading files...`}):o.length===0?(0,$.jsx)(`p`,{className:s(a.caption,`px-3 py-2 text-muted-foreground`),children:`No files found.`}):O})]}),(0,$.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-6 py-4`,children:_?(0,$.jsx)(`p`,{className:s(a.body,`text-destructive`),children:_}):E?(0,$.jsx)(U,{centered:!0,containerClassName:`py-12`,label:`Loading preview...`}):D?(0,$.jsx)(de,{content:d,enableMermaid:!1}):(0,$.jsx)(`pre`,{className:s(a.caption,`overflow-x-auto whitespace-pre-wrap font-mono`),children:d})})]}),(0,$.jsxs)(Ce,{className:`border-t border-border px-6 py-4 sm:justify-between`,children:[(0,$.jsx)(y,{type:`button`,variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,$.jsx)(y,{type:`button`,onClick:()=>void T(),disabled:x||!n,children:x?`Installing...`:`Install`})]})]})})}var Ze=new Map;function Qe(e){let t=Ze.get(e);if(t)return t;let n=B(e).finally(()=>{Ze.delete(e)});return Ze.set(e,n),n}function $e(e,t){return t.map(t=>({...t,sourceId:t.sourceId??e}))}function et(){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)(j),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 H())}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=V();if(e.length>0)try{await M(e),A()}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),E(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(nt)),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(tt)),z(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)),z(e),a(t=>t===e?(E(`default`),`default`):t)},e[8]=C):C=e[8];let T=C,D,O;e[9]===i?(D=e[10],O=e[11]):(O=()=>{if(i==="default"){c([]),u(!1),f(!1);return}let e=w(i);e?.skills?(c($e(i,e.skills)),u(!1)):(c([]),u(!0));let t=!1;return f(!!e?.skills),Qe(i).then(e=>{if(t)return;let n=$e(i,e);c(n),k(i,{fetchedAt:Date.now(),skills:n})}).catch(n=>{t||(e?.skills||c([]),W({title:`Error`,description:n instanceof Error?n.message:`Failed to load skill catalog`,variant:`destructive`}))}).finally(()=>{t||(u(!1),f(!1))}),()=>{t=!0}},D=[i],e[9]=i,e[10]=D,e[11]=O),(0,Q.useEffect)(O,D);let N;return e[12]!==s||e[13]!==l||e[14]!==d||e[15]!==i||e[16]!==n?(N={sources:n,selectedSourceId:i,setSelectedSourceId:v,addSource:b,updateSource:S,removeSource:T,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]=N):N=e[17],N}function tt(e,t){return e.title.localeCompare(t.title)}function nt(e,t){return e.title.localeCompare(t.title)}function rt({open:e,onOpenChange:t,editingSource:n,onSourceAdded:r,onSourceUpdated:i,onSourceDeleted:o}){let[c,l]=(0,Q.useState)(``),[u,d]=(0,Q.useState)(``),[f,p]=(0,Q.useState)(null),[m,g]=(0,Q.useState)(!1),[_,v]=(0,Q.useState)(!1),[b,x]=(0,Q.useState)(!1),S=n!=null;function C(){l(``),d(``),p(null),g(!1),v(!1),x(!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=c.trim(),t=u.trim();if(!e||!t){p(`Title and URL are required.`);return}g(!0),p(null);try{if(S&&n){let r=await N(n.id,e,t);i?.(r.source)}else r((await F(e,t)).source);w(!1)}catch(e){p(e instanceof Error?e.message:`Failed to verify skill source`)}finally{g(!1)}}async function E(){if(n){v(!0),p(null);try{await P(n.id),o?.(n.id),x(!1),w(!1)}catch(e){p(e instanceof Error?e.message:`Failed to delete skill source`),x(!1)}finally{v(!1)}}}return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Y,{open:e,onOpenChange:w,children:(0,$.jsxs)(J,{className:`sm:max-w-lg`,children:[(0,$.jsxs)(G,{children:[(0,$.jsx)(Se,{children:S?`Edit Skill Source`:`Add Skill Source`}),(0,$.jsx)(ue,{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)(ke,{htmlFor:`skill-source-title`,children:`Title`}),(0,$.jsx)(X,{id:`skill-source-title`,placeholder:`e.g. My Team Skills`,value:c,onChange:e=>l(e.target.value),disabled:m||_,autoFocus:!0})]}),(0,$.jsxs)(`div`,{className:`grid gap-2`,children:[(0,$.jsx)(ke,{htmlFor:`skill-source-url`,children:`URL`}),(0,$.jsx)(X,{id:`skill-source-url`,placeholder:`https://github.com/org/repo or .../tree/main/skills`,value:u,onChange:e=>d(e.target.value),disabled:m||_})]}),f?(0,$.jsx)(`p`,{className:s(a.caption,`text-destructive`),children:f}):null]}),(0,$.jsxs)(Ce,{className:`flex-col-reverse gap-2 sm:flex-row sm:justify-between`,children:[S?(0,$.jsx)(y,{type:`button`,variant:`destructive`,onClick:()=>x(!0),disabled:m||_,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)(y,{variant:`outline`,onClick:()=>w(!1),disabled:m||_,children:`Cancel`}),(0,$.jsx)(y,{onClick:()=>void T(),disabled:m||_||!c.trim()||!u.trim(),children:m?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(h,{className:`mr-2 h-4 w-4 animate-spin`}),`Verifying...`]}):S?`Save Changes`:`Add Source`})]})]})]})}),(0,$.jsx)(he,{open:b,onOpenChange:x,children:(0,$.jsxs)(Oe,{children:[(0,$.jsxs)(ge,{children:[(0,$.jsx)(ve,{children:`Delete Skill Source`}),(0,$.jsxs)(oe,{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)(_e,{children:[(0,$.jsx)(se,{disabled:_,children:`Cancel`}),(0,$.jsx)(ie,{onClick:()=>void E(),disabled:_,className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:_?`Deleting...`:`Delete`})]})]})})]})}var it=`https://tarsk.io/skills/list/`;function at(e){let t=(0,Z.c)(20),{onSelectMode:n,manualDisabled:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,$.jsx)(te,{asChild:!0,children:(0,$.jsxs)(y,{className:`gap-1`,children:[`Add Skill`,(0,$.jsx)(g,{className:`h-4 w-4 opacity-70`})]})}),t[0]=i):i=t[0];let o;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(o=s(a.body,`gap-2`),t[1]=o):o=t[1];let c;t[2]===n?c=t[3]:(c=()=>n(`manual`),t[2]=n,t[3]=c);let d;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,$.jsx)(l,{className:`h-4 w-4 shrink-0`}),t[4]=d):d=t[4];let f;t[5]!==r||t[6]!==c?(f=(0,$.jsxs)(ye,{className:o,disabled:r,onSelect:c,children:[d,`Manually Enter`]}),t[5]=r,t[6]=c,t[7]=f):f=t[7];let p;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(p=s(a.body,`gap-2`),t[8]=p):p=t[8];let m;t[9]===n?m=t[10]:(m=()=>n(`url`),t[9]=n,t[10]=m);let h;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,$.jsx)(_,{className:`h-4 w-4 shrink-0`}),t[11]=h):h=t[11];let v;t[12]===m?v=t[13]:(v=(0,$.jsxs)(ye,{className:p,onSelect:m,children:[h,`Via URL`]}),t[12]=m,t[13]=v);let b;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,$.jsx)(je,{}),t[14]=b):b=t[14];let x;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(x=s(a.body,`gap-2`),t[15]=x):x=t[15];let S;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,$.jsxs)(ye,{className:x,onSelect:ot,children:[(0,$.jsx)(u,{className:`h-4 w-4 shrink-0`}),`Marketplace`]}),t[16]=S):S=t[16];let C;return t[17]!==f||t[18]!==v?(C=(0,$.jsxs)(Te,{children:[i,(0,$.jsxs)(xe,{align:`end`,className:`w-44`,children:[f,v,b,S]})]}),t[17]=f,t[18]=v,t[19]=C):C=t[19],C}function ot(){T(it)}function st(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 ct(e){let t=(0,Z.c)(40),{open:n,onOpenChange:r,onSubmit:i}=e,[o,c]=(0,Q.useState)(``),[l,u]=(0,Q.useState)(null),d;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(d=function(){c(``),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=st(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=_,b;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,$.jsxs)(G,{children:[(0,$.jsx)(Se,{children:`Add Skill via URL`}),(0,$.jsx)(ue,{children:`Paste the URL of a plugin archive. Its skills and MCP servers are installed into this project.`})]}),t[10]=b):b=t[10];let x;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,$.jsx)(ke,{htmlFor:`add-skill-url`,children:`URL`}),t[11]=x):x=t[11];let S;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(S=e=>c(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)(X,{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:s(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:[x,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)(y,{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)(y,{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)(Ce,{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)(J,{className:`sm:max-w-lg`,children:[b,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)(Y,{open:n,onOpenChange:m,children:M}),t[36]=m,t[37]=n,t[38]=M,t[39]=N):N=t[39],N}function lt(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(...lt(n.children))}return t}function ut(e){return`.agents/skills/${e}/SKILL.md`}function dt(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 ft(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=We(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:s(a.label,`truncate`),children:t}),(0,$.jsx)(`p`,{className:s(a.caption,`truncate`),children:e.description})]}),(0,$.jsx)(S,{delayDuration:300,children:(0,$.jsxs)(C,{children:[(0,$.jsx)(b,{asChild:!0,children:(0,$.jsx)(y,{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)(p,{className:`h-4 w-4`})})}),(0,$.jsx)(x,{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 pt(e){let t=(0,Z.c)(21),{skills:n,threadId:r,onOpenSkill:i,onDelete:a,onAddManual:o,onAddUrl:s}=e,c=!r,l;t[0]!==o||t[1]!==s?(l=e=>{e===`manual`?o():s()},t[0]=o,t[1]=s,t[2]=l):l=t[2];let u;t[3]!==c||t[4]!==l?(u=(0,$.jsx)(me,{title:`Installed Skills`,description:`Reusable instruction sets that guide agent behavior in this project.`,action:(0,$.jsx)(at,{manualDisabled:c,onSelectMode:l}),sticky:!1}),t[3]=c,t[4]=l,t[5]=u):u=t[5];let d;t[6]===r?d=t[7]:(d=!r&&(0,$.jsx)(Ae,{children:`Select a thread to add or install skills.`}),t[6]=r,t[7]=d);let f;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(f={icon:m,title:`No skills installed`,description:`Add skills to extend agent capabilities with reusable instructions.`},t[8]=f):f=t[8];let p;t[9]===i?p=t[10]:(p=e=>i(e.path),t[9]=i,t[10]=p);let h;t[11]!==a||t[12]!==n||t[13]!==p?(h=(0,$.jsx)(Re,{showHeader:!1,compact:!0,loading:!1,items:n,emptyState:f,getKey:_t,renderContent:gt,onItemClick:p,itemClickLabel:ht,onDelete:a,deleteAriaLabel:mt,deleteTooltip:`Remove this skill from the project`}),t[11]=a,t[12]=n,t[13]=p,t[14]=h):h=t[14];let g;t[15]!==d||t[16]!==h?(g=(0,$.jsxs)(K,{className:`pt-6`,children:[d,h]}),t[15]=d,t[16]=h,t[17]=g):g=t[17];let _;return t[18]!==u||t[19]!==g?(_=(0,$.jsxs)(le,{className:`shrink-0`,children:[u,g]}),t[18]=u,t[19]=g,t[20]=_):_=t[20],_}function mt(e){return`Delete ${e.name}`}function ht(e){return`Open ${e.name} in Files`}function gt(e){return(0,$.jsx)(`span`,{className:s(a.body,`truncate text-left`),children:e.name})}function _t(e){return e.id}function vt(e){let t=(0,Z.c)(50),{availableSearch:n,onSearchChange:r,selectedSourceId:i,onSourceChange:a,sources:o,selectedCustomSource:s,availableCatalogLoading:c,isDefaultSource:l,filteredPopular:u,filteredCatalog:p,installedFilePaths:m,onPreviewPopular:h,onPreviewCatalog:g,onAddSource:_}=e,v;if(t[0]!==u||t[1]!==m){let e;t[3]===m?e=t[4]:(e=e=>!m.has(ut(e.id)),t[3]=m,t[4]=e),v=u.filter(e),t[0]=u,t[1]=m,t[2]=v}else v=t[2];let w=v,T;if(t[5]!==p||t[6]!==m){let e;t[8]===m?e=t[9]:(e=e=>!m.has(ut(e.id)),t[8]=m,t[9]=e),T=p.filter(e),t[5]=p,t[6]=m,t[7]=T}else T=t[7];let E=T,D;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,$.jsx)(S,{children:(0,$.jsxs)(C,{children:[(0,$.jsx)(b,{asChild:!0,children:(0,$.jsx)(`span`,{className:`cursor-help`,children:`Available Skills`})}),(0,$.jsx)(x,{children:`Browse and install skills from the catalog.`})]})}),t[10]=D):D=t[10];let O;t[11]!==n||t[12]!==r?(O=(0,$.jsx)(Ie,{placeholder:`Search`,value:n,onChange:r,className:`mb-0 w-64`}),t[11]=n,t[12]=r,t[13]=O):O=t[13];let k;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,$.jsx)(pe,{className:`w-40`,"aria-label":`Skill source`,children:(0,$.jsx)(Ne,{placeholder:`Default`})}),t[14]=k):k=t[14];let A;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,$.jsx)(ae,{value:`default`,children:`Default`}),t[15]=A):A=t[15];let j;t[16]===o?j=t[17]:(j=o.map(yt),t[16]=o,t[17]=j);let M;t[18]===j?M=t[19]:(M=(0,$.jsxs)(re,{children:[A,j]}),t[18]=j,t[19]=M);let N;t[20]!==a||t[21]!==i||t[22]!==M?(N=(0,$.jsxs)(fe,{value:i,onValueChange:a,children:[k,M]}),t[20]=a,t[21]=i,t[22]=M,t[23]=N):N=t[23];let P=s?`Edit skill source`:`Add skill source`,F;t[24]===s?F=t[25]:(F=s?(0,$.jsx)(f,{className:`h-4 w-4`}):(0,$.jsx)(d,{className:`h-4 w-4`}),t[24]=s,t[25]=F);let I;t[26]!==_||t[27]!==P||t[28]!==F?(I=(0,$.jsx)(b,{asChild:!0,children:(0,$.jsx)(y,{type:`button`,variant:`outline`,size:`icon`,className:`shrink-0`,onClick:_,"aria-label":P,children:F})}),t[26]=_,t[27]=P,t[28]=F,t[29]=I):I=t[29];let L=s?`Edit this custom skill source`:`Add a custom skill source`,R;t[30]===L?R=t[31]:(R=(0,$.jsx)(x,{children:L}),t[30]=L,t[31]=R);let z;t[32]!==I||t[33]!==R?(z=(0,$.jsx)(S,{children:(0,$.jsxs)(C,{children:[I,R]})}),t[32]=I,t[33]=R,t[34]=z):z=t[34];let B;t[35]!==z||t[36]!==O||t[37]!==N?(B=(0,$.jsx)(me,{title:D,action:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[O,N,z]}),sticky:!1}),t[35]=z,t[36]=O,t[37]=N,t[38]=B):B=t[38];let V;t[39]!==E||t[40]!==c||t[41]!==w||t[42]!==n||t[43]!==l||t[44]!==g||t[45]!==h?(V=(0,$.jsx)(K,{className:`pt-6`,children:c?(0,$.jsx)(U,{centered:!0,containerClassName:`py-12`,label:`Loading skills...`}):l?w.length===0?(0,$.jsx)(Le,{searchQuery:n,emptyLabel:`No available skills found.`}):(0,$.jsx)(ft,{items:w,onPreview:h}):E.length===0?(0,$.jsx)(Le,{searchQuery:n,emptyLabel:`No available skills found.`}):(0,$.jsx)(ft,{items:E,onPreview:g})}),t[39]=E,t[40]=c,t[41]=w,t[42]=n,t[43]=l,t[44]=g,t[45]=h,t[46]=V):V=t[46];let H;return t[47]!==B||t[48]!==V?(H=(0,$.jsxs)(le,{className:`shrink-0`,children:[B,V]}),t[47]=B,t[48]=V,t[49]=H):H=t[49],H}function yt(e){return(0,$.jsx)(ae,{value:e.id,children:e.title},e.id)}function bt(){let{selectedProjectId:e,selectedThreadId:t,items:n,loading:r,deleteConfirm:a,setDeleteConfirm:s,deleting:l,installedFilePaths:u,setInstalledFilePaths:d,loadItems:f,handleDelete:p,handleOpenInExplorer:m,triggerExplorerRefresh:h}=Be({findItems:lt,installedPathSuffix:`/SKILL.md`,explorerPathSuffix:`/SKILL.md`,sortByName:!0,removedToastTitle:`Skill removed`}),g=o(e=>e.projects),_=(0,Q.useMemo)(()=>g.find(t=>t.projectId===e)??null,[g,e]),[v,y]=(0,Q.useState)(!1),[b,x]=(0,Q.useState)(!1),[S,C]=(0,Q.useState)(null),[w,T]=(0,Q.useState)([]),[E,D]=(0,Q.useState)(!0),[k,A]=(0,Q.useState)(null),[j,M]=(0,Q.useState)(!1),{query:N,setQuery:P,deferredQuery:F}=ze(),{sources:R,selectedSourceId:z,setSelectedSourceId:B,addSource:V,updateSource:H,removeSource:ee,catalogSkills:U,isLoadingCatalog:G}=et(),K=z==="default",q=(0,Q.useMemo)(()=>i(z)?R.find(e=>e.id===z)??null:null,[z,R]);(0,Q.useEffect)(()=>{D(!0),I().then(T).catch(()=>T([])).finally(()=>D(!1))},[]);let te=Fe(e?`${e}:${t??``}`:null,[r,E]),re=(0,Q.useCallback)(async e=>{let n=`.agents/skills/${e.id}/SKILL.md`;if(!t||u.has(n))return;let r=e.sourceId??(z==="default"?void 0:z);try{if(r)await L(t,r,e.id,`.agents/skills/${e.id}`);else{let r=[`---`,`name: ${e.id}`,`description: ${e.description}`];e.allowedTools&&r.push(`allowed-tools: ${e.allowedTools}`),e.license&&r.push(`license: ${e.license}`),r.push(`---`,``,e.instructions??``),await O(t,n,r.join(`
|
|
3
|
+
`))}d(e=>new Set(e).add(n)),h(),f(),W({title:`Skill installed`,description:e.name})}catch(e){throw W({title:`Error`,description:e instanceof Error?e.message:`Failed to install skill`,variant:`destructive`}),e}},[t,z,u,h,f]),ie=(0,Q.useMemo)(()=>dt(w,F),[w,F]),ae=(0,Q.useMemo)(()=>dt(U,F),[U,F]),oe=!K&&G&&U.length===0;return e?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(ne,{loading:te,children:[(0,$.jsx)(pt,{skills:n,threadId:t,onOpenSkill:m,onDelete:s,onAddManual:()=>y(!0),onAddUrl:()=>x(!0)}),(0,$.jsx)(vt,{availableSearch:N,onSearchChange:P,selectedSourceId:z,onSourceChange:B,sources:R,selectedCustomSource:q,availableCatalogLoading:oe,isDefaultSource:K,filteredPopular:ie,filteredCatalog:ae,installedFilePaths:u,onPreviewPopular:e=>A(e),onPreviewCatalog:e=>A({...e,sourceId:e.sourceId??z}),onAddSource:()=>M(!0)})]}),(0,$.jsx)(Xe,{open:k!==null,onOpenChange:e=>{e||A(null)},skill:k,catalogSourceId:K?void 0:z,onInstall:re}),(0,$.jsx)(rt,{open:j,onOpenChange:M,editingSource:q,onSourceAdded:e=>{V(e),W({title:`Skill source added`,description:`${e.title} is now available in the source list.`})},onSourceUpdated:e=>{H(e),W({title:`Skill source updated`,description:`${e.title} has been saved.`})},onSourceDeleted:e=>{ee(e),W({title:`Skill source removed`,description:`The custom source has been deleted.`})}}),(0,$.jsx)(Y,{open:v,onOpenChange:y,children:(0,$.jsx)(J,{className:`max-w-2xl max-h-[90vh] overflow-y-auto p-0`,children:(0,$.jsx)(Ge,{threadId:t,onSkillCreated:()=>{y(!1),f(),h()}})})}),(0,$.jsx)(ct,{open:b,onOpenChange:x,onSubmit:e=>C(e)}),(0,$.jsx)(Ee,{url:S,projectId:e,projectName:_?c(_):null,projects:g,onSelectProject:()=>{},onClose:()=>C(null),onInstalled:({mcpOnly:e})=>{f(),h(),W({title:e?`MCP server installed`:`Plugin installed`,description:e?`Its MCP servers were added to this project.`:`Its skills and MCP servers were added to this project.`})}}),(0,$.jsx)(Pe,{open:a!==null,onOpenChange:e=>!e&&s(null),title:`Delete Skill`,description:`Are you sure you want to delete the skill "${a?.name}"? This action cannot be undone.`,onConfirm:()=>{a&&p(a)},confirming:l})]}):(0,$.jsx)(we,{children:`Select a project to manage skills.`})}export{bt as SettingsSkillsView,bt 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{Ft as i}from"./dist-DNkA3vYh.js";import{t as a}from"./utils-B-qS8qMg.js";import{Zt as o,d as s,dt as c,nn as l}from"./lucide-react-B-115rul.js";import{t as u}from"./button-B5aMz2Rk.js";import{An as d,Dt as f,It as p,Lt as m,M as h,f as g,x as _}from"./api-OO3KSG8d.js";import{$n as v,Ct as y,Ft as b,It as x,Ot as S,Pt as C,Rt as w,Tr as T,bt as E,jt as D,zt as O}from"./index-DD_a7tQU.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)(y,{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 b;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(b=(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]=b):b=t[6];let x;t[7]===v?x=t[8]:(x=(0,A.jsx)(E,{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,b]})}),t[7]=v,t[8]=x);let C;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(C=a(`text-muted-foreground`,i.bodyMuted),t[9]=C):C=t[9];let w;t[10]===n?w=t[11]:(w=j(n),t[10]=n,t[11]=w);let D;t[12]===w?D=t[13]:(D=(0,A.jsx)(E,{title:`Status`,description:`Bot identity and Socket Mode bridge status.`,children:(0,A.jsx)(`span`,{className:C,children:w})}),t[12]=w,t[13]=D);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)(E,{title:`Bot Token`,description:`Bot User OAuth Token from your Slack app (starts with xoxb-).`,children:(0,A.jsx)(T,{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)(E,{title:`App-Level Token`,description:`App-Level Token with connections:write for Socket Mode (starts with xapp-).`,children:(0,A.jsx)(T,{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)(E,{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]!==D?(U=(0,A.jsxs)(`div`,{children:[h,(0,A.jsxs)(S,{children:[x,D,N,I,H]})]}),t[45]=N,t[46]=I,t[47]=H,t[48]=x,t[49]=D,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)(y,{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)(E,{title:`Slack Channel`,description:`Invite the bot to the channel first. Only channels the bot can see are listed.`,children:p?(0,A.jsxs)(C,{value:o.channelId||void 0,onValueChange:e=>l(`channelId`,e),children:[(0,A.jsx)(w,{id:`slack-channel`,"aria-label":`Slack Channel`,children:(0,A.jsx)(O,{placeholder:`Select a channel…`})}),(0,A.jsx)(b,{children:n.channels.map(L)})]}):(0,A.jsx)(T,{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 x=!m,D=m?`Select a project…`:`No projects`,j;t[8]===D?j=t[9]:(j=(0,A.jsx)(w,{id:`slack-project`,"aria-label":`Tarsk Project`,children:(0,A.jsx)(O,{placeholder:D})}),t[8]=D,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)(b,{children:M}),t[12]=M,t[13]=N);let F;t[14]!==_||t[15]!==v||t[16]!==x||t[17]!==j||t[18]!==N?(F=(0,A.jsx)(E,{title:`Tarsk Project`,description:`Each Slack channel maps to one Tarsk project.`,children:(0,A.jsxs)(C,{value:_,onValueChange:v,disabled:x,children:[j,N]})}),t[14]=_,t[15]=v,t[16]=x,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)(E,{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)(S,{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)(x,{value:e.projectId,children:e.name},e.projectId)}function L(e){return(0,A.jsx)(x,{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(),f()]);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(),f(),p()]);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 g(),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 h(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 p()).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)(D,{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)(D,{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{Ft as i}from"./dist-DNkA3vYh.js";import{r as a}from"./store-B7EgrEO7.js";import{s as o,t as s}from"./utils-B-qS8qMg.js";import{_t as c,p as l,sn as u}from"./lucide-react-B-115rul.js";import{t as d}from"./button-B5aMz2Rk.js";import{g as f,h as p,n as m,t as h,u as g}from"./dist-T8-4ZfS0.js";import{o as _}from"./dist-DDYi9MQo.js";import{i as v,n as ee,r as te,t as ne}from"./tooltip-Dvmz78Z_.js";import{N as re,Rt as ie,S as y,ar as ae,ur as oe}from"./api-OO3KSG8d.js";import{t as b}from"./dist-OixawqbU.js";import{n as x,r as S,t as C}from"./dist-DwblUvSf.js";import{n as se}from"./explorer-tab-context-BxUVwWQQ.js";import{t as w}from"./dist-CSssbxDI.js";import{$n as T,At as E,Dr as ce,Er as le,Et as ue,Mt as D,Nt as O,St as k,Tr as A,bt as j,kt as M,tr as de,wr as N,xt as fe,yt as P}from"./index-DD_a7tQU.js";import{t as pe}from"./delete-confirm-dialog-Cx9nT7Xd.js";import{t as me}from"./use-settings-page-loading-BTySlInF.js";import{a as he,i as ge,r as _e}from"./settings-list-Dn4CHP4Z.js";import{i as F,n as I,r as L}from"./slug-utils-BQZ6c2py.js";var R=t(),z=e(n(),1),B=r(),V=`Radio`,[H,U]=p(V),[W,G]=H(V),K=z.forwardRef((e,t)=>{let{__scopeRadio:n,name:r,checked:i=!1,required:a,disabled:s,value:c=`on`,onCheck:l,form:u,...d}=e,[p,m]=z.useState(null),h=o(t,e=>m(e)),_=z.useRef(!1),v=p?u||!!p.closest(`form`):!0;return(0,B.jsxs)(W,{scope:n,checked:i,disabled:s,children:[(0,B.jsx)(g.button,{type:`button`,role:`radio`,"aria-checked":i,"data-state":X(i),"data-disabled":s?``:void 0,disabled:s,value:c,...d,ref:h,onClick:f(e.onClick,e=>{i||l?.(),v&&(_.current=e.isPropagationStopped(),_.current||e.stopPropagation())})}),v&&(0,B.jsx)(Y,{control:p,bubbles:!_.current,name:r,value:c,checked:i,required:a,disabled:s,form:u,style:{transform:`translateX(-100%)`}})]})});K.displayName=V;var q=`RadioIndicator`,J=z.forwardRef((e,t)=>{let{__scopeRadio:n,forceMount:r,...i}=e,a=G(q,n);return(0,B.jsx)(m,{present:r||a.checked,children:(0,B.jsx)(g.span,{"data-state":X(a.checked),"data-disabled":a.disabled?``:void 0,...i,ref:t})})});J.displayName=q;var ve=`RadioBubbleInput`,Y=z.forwardRef(({__scopeRadio:e,control:t,checked:n,bubbles:r=!0,...i},a)=>{let s=z.useRef(null),c=o(s,a),l=w(n),u=_(t);return z.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,B.jsx)(g.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}})});Y.displayName=ve;function X(e){return e?`checked`:`unchecked`}var ye=[`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`],Z=`RadioGroup`,[be,xe]=p(Z,[S,U]),Se=S(),Q=U(),[Ce,we]=be(Z),Te=z.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=Se(n),m=b(l),[_,v]=h({prop:a,defaultProp:i??null,onChange:d,caller:Z});return(0,B.jsx)(Ce,{scope:n,name:r,required:o,disabled:s,value:_,onValueChange:v,children:(0,B.jsx)(x,{asChild:!0,...p,orientation:c,dir:m,loop:u,children:(0,B.jsx)(g.div,{role:`radiogroup`,"aria-required":o,"aria-orientation":c,"data-disabled":s?``:void 0,dir:m,...f,ref:t})})})});Te.displayName=Z;var Ee=`RadioGroupItem`,De=z.forwardRef((e,t)=>{let{__scopeRadioGroup:n,disabled:r,...i}=e,a=we(Ee,n),s=a.disabled||r,c=Se(n),l=Q(n),u=z.useRef(null),d=o(t,u),p=a.value===i.value,m=z.useRef(!1);return z.useEffect(()=>{let e=e=>{ye.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,B.jsx)(C,{asChild:!0,...c,focusable:!s,active:p,children:(0,B.jsx)(K,{disabled:s,required:a.required,checked:p,...l,...i,name:a.name,ref:d,onCheck:()=>a.onValueChange(i.value),onKeyDown:f(e=>{e.key===`Enter`&&e.preventDefault()}),onFocus:f(i.onFocus,()=>{m.current&&u.current?.click()})})})});De.displayName=Ee;var Oe=`RadioGroupIndicator`,ke=z.forwardRef((e,t)=>{let{__scopeRadioGroup:n,...r}=e;return(0,B.jsx)(J,{...Q(n),...r,ref:t})});ke.displayName=Oe;var Ae=Te,je=De,Me=ke,Ne=z.forwardRef((e,t)=>{let n=(0,R.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,B.jsx)(Ae,{className:a,...i,ref:t}),n[5]=i,n[6]=t,n[7]=a,n[8]=o):o=n[8],o});Ne.displayName=Ae.displayName;var $=z.forwardRef((e,t)=>{let n=(0,R.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,B.jsx)(Me,{className:`flex items-center justify-center`,children:(0,B.jsx)(u,{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,B.jsx)(je,{ref:t,className:a,...i,children:o}),n[6]=i,n[7]=t,n[8]=a,n[9]=c):c=n[9],c});$.displayName=je.displayName;function Pe({projectId:e,threadId:t,onCommandCreated:n}){let[r,a]=(0,z.useState)(``),[o,c]=(0,z.useState)(``),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)(`default`),[p,m]=(0,z.useState)(!1),h=L(r),g=I(h),_=async()=>{if(!(!g||!e)){m(!0);try{await y(h,``,{description:o.trim()||void 0,argumentHint:l.trim()||void 0,mode:d===`plan`?`plan`:void 0},`project`,t??void 0),T({title:`Command created`,description:`Command '/${h}' was created successfully.`}),a(``),c(``),u(``),f(`default`),n?.(h)}catch(e){T({title:`Error`,description:e instanceof Error?e.message:`Failed to create command`,variant:`destructive`})}finally{m(!1)}}};return e?(0,B.jsx)(D,{children:(0,B.jsxs)(P,{children:[(0,B.jsx)(k,{title:`Add Slash Command`,description:`Saved as a .md file in .agents/commands in the selected project workspace.`,sticky:!0,className:`pr-10`}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(j,{title:`Command Name`,controlLayout:`stack`,className:`pt-6`,children:[(0,B.jsx)(A,{id:`commandName`,value:r,onChange:e=>a(e.target.value),placeholder:`e.g. review`,disabled:p}),r?(0,B.jsxs)(`p`,{className:s(i.caption,`mt-2`),children:[`Command: `,(0,B.jsxs)(`span`,{className:`font-mono`,children:[`/`,h||`...`]})]}):null]}),(0,B.jsx)(j,{title:`Description`,controlLayout:`stack`,className:`pt-6`,children:(0,B.jsx)(A,{id:`commandDescription`,value:o,onChange:e=>c(e.target.value),placeholder:`Brief description shown in autocomplete`,disabled:p})}),(0,B.jsx)(j,{title:`Argument Hint`,description:`Shows after the command name to guide users what to type`,controlLayout:`stack`,className:`pt-6`,children:(0,B.jsx)(A,{id:`argumentHint`,value:l,onChange:e=>u(e.target.value),placeholder:`e.g. <focus-area> or <branch-name>`,disabled:p})}),(0,B.jsx)(j,{title:`Mode`,description:d==="default"?`Standard chat mode`:`Activates plan mode when this command is used`,controlLayout:`stack`,className:`pt-6`,children:(0,B.jsxs)(Ne,{value:d,onValueChange:e=>f(e),className:`flex gap-4`,disabled:p,children:[(0,B.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,B.jsx)($,{value:`default`,id:`mode-default`}),(0,B.jsx)(N,{htmlFor:`mode-default`,className:s(i.labelNormal,`cursor-pointer`),children:`Default`})]}),(0,B.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,B.jsx)($,{value:`plan`,id:`mode-plan`}),(0,B.jsx)(N,{htmlFor:`mode-plan`,className:s(i.labelNormal,`cursor-pointer`),children:`Plan`})]})]})}),(0,B.jsx)(F,{onContinue:()=>void _(),disabled:!g,creating:p})]})]})}):(0,B.jsx)(M,{title:`No project selected`,children:`Please select a project to add a slash command.`})}function Fe(){let e=a(e=>e.selectedProjectId),t=a(e=>e.selectedThreadId),{openChatDockPanel:n}=de(),{setPendingExplorerPath:r,triggerExplorerRefresh:o,setExplorerClearPath:u}=se(),[f,p]=(0,z.useState)([]),[m,h]=(0,z.useState)(!0),[g,_]=(0,z.useState)(!1),[b,x]=(0,z.useState)(null),[S,C]=(0,z.useState)(!1),[w,D]=(0,z.useState)([]),[A,j]=(0,z.useState)(!0),[N,P]=(0,z.useState)(new Map),[F,I]=(0,z.useState)(``),L=(0,z.useCallback)(async()=>{if(!t){h(!1),p([]),P(new Map);return}h(!0);try{let e=(await ie(t)).filter(function(e){return e.scope===`project`&&!e.isBuiltIn});p(e),P(new Map(e.map(e=>[e.name,e.filePath])))}catch{p([]),P(new Map)}finally{h(!1)}},[t]);(0,z.useLayoutEffect)(()=>{t&&h(!0)},[e,t]),(0,z.useEffect)(()=>{L()},[L]),(0,z.useEffect)(()=>{j(!0),ae().then(D).catch(()=>D([])).finally(()=>j(!1))},[]);let R=me(e?`${e}:${t??``}`:null,[m,A]),V=(0,z.useCallback)(async e=>{C(!0);try{if(!t)return;await re(e.filePath,t),u(e.filePath),o(),P(t=>{let n=new Map(t);return n.delete(e.name),n}),T({title:`Command removed`,description:`/${e.name}`}),x(null),await L()}catch(e){T({title:`Error`,description:e instanceof Error?e.message:`Failed to remove command`,variant:`destructive`})}finally{C(!1)}},[L,t,o,u]),H=(0,z.useCallback)(e=>{r(e),n(`explorer`)},[r,n]),U=(0,z.useCallback)(e=>{let t=e.metadata?.description?.trim();return t&&t.length>0?t:`No description`},[]),W=(0,z.useCallback)(async e=>{if(!(!t||N.has(e.name)))try{if(e.gitHubRepo&&e.gitHubFolder){let n=`.agents/commands`;await oe(t,e.gitHubRepo,e.gitHubFolder,n);let r=`${n}/${e.name}.md`;P(t=>new Map(t).set(e.name,r))}else{let n=await y(e.name,e.content,{description:e.description,argumentHint:e.argumentHint},`project`,t);P(t=>new Map(t).set(e.name,n.filePath))}o(),L(),T({title:`Command installed`,description:`/${e.name}`})}catch(e){T({title:`Error`,description:e instanceof Error?e.message:`Failed to install command`,variant:`destructive`})}},[t,N,o,L]),G=w.filter(e=>!N.has(e.name)),K=F.trim()?G.filter(e=>e.name.toLowerCase().includes(F.toLowerCase())||e.description.toLowerCase().includes(F.toLowerCase())):G;return e?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(ue,{loading:R,children:[(0,B.jsxs)(O,{className:`shrink-0`,children:[(0,B.jsx)(k,{title:(0,B.jsx)(te,{children:(0,B.jsxs)(ne,{children:[(0,B.jsx)(v,{asChild:!0,children:(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[`Installed Slash Commands`,(0,B.jsx)(c,{"aria-hidden":`true`,className:`h-4 w-4 text-muted-foreground`})]})}),(0,B.jsx)(ee,{children:`Project slash commands you run with / in chat.`})]})}),action:(0,B.jsx)(d,{onClick:()=>_(!0),disabled:!t,children:`Add Command`}),sticky:!1}),(0,B.jsxs)(E,{className:`pt-6`,children:[!t&&(0,B.jsx)(fe,{children:`Select a thread to add or install slash commands.`}),(0,B.jsx)(_e,{showHeader:!1,loading:!1,items:f,emptyState:{icon:l,title:`No slash commands installed`,description:`Add slash commands to create quick actions in chat.`},getKey:e=>e.filePath,columnsClassName:`grid-cols-[minmax(0,1fr)_auto_1.75rem]`,renderContent:e=>(0,B.jsxs)(`div`,{className:`min-w-0 text-left`,children:[(0,B.jsxs)(`div`,{className:s(i.body,`truncate`),children:[`/`,e.name]}),(0,B.jsx)(`div`,{className:s(i.compact,`truncate text-muted-foreground`),children:U(e)})]}),renderMiddle:e=>e.metadata?.mode?(0,B.jsx)(`span`,{className:s(i.compact,`bg-muted px-1.5 py-0.5 rounded flex-shrink-0`),children:e.metadata.mode}):(0,B.jsx)(`div`,{}),onItemClick:e=>H(e.filePath),itemClickLabel:e=>`Open /${e.name} in Files`,onDelete:x,deleteAriaLabel:e=>`Delete /${e.name}`,deleteTooltip:`Remove this slash command from the project`})]})]}),(0,B.jsxs)(O,{className:`shrink-0`,children:[(0,B.jsx)(k,{title:(0,B.jsx)(te,{children:(0,B.jsxs)(ne,{children:[(0,B.jsx)(v,{asChild:!0,children:(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[`Available Slash Commands`,(0,B.jsx)(c,{"aria-hidden":`true`,className:`h-4 w-4 text-muted-foreground`})]})}),(0,B.jsx)(ee,{children:`Browse and install slash commands from the catalog.`})]})}),action:(0,B.jsx)(he,{placeholder:`Search`,value:F,onChange:I,className:`mb-0 w-64`}),sticky:!1}),(0,B.jsx)(E,{className:`pt-6`,children:K.length===0?(0,B.jsx)(ge,{searchQuery:F,emptyLabel:`No available commands found.`}):(0,B.jsx)(`div`,{className:`divide-y divide-table-border`,children:K.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.jsxs)(`div`,{className:s(i.body,`truncate`),children:[`/`,e.name]}),(0,B.jsx)(`div`,{className:s(i.compact,`truncate text-muted-foreground`),children:e.description})]}),(0,B.jsx)(d,{type:`button`,variant:`outline`,size:`sm`,className:`opacity-0 transition-opacity group-hover:opacity-100 focus-visible:opacity-100`,disabled:!t,onClick:()=>void W(e),children:`Install`})]},e.id))})})]})]}),(0,B.jsx)(le,{open:g,onOpenChange:_,children:(0,B.jsx)(ce,{className:`max-w-2xl max-h-[90vh] overflow-y-auto p-0`,children:(0,B.jsx)(Pe,{projectId:e,threadId:t,onCommandCreated:()=>{_(!1),L(),o()}})})}),(0,B.jsx)(pe,{open:b!==null,onOpenChange:e=>!e&&x(null),title:`Delete Slash Command`,description:`Are you sure you want to delete "/${b?.name}"? This action cannot be undone.`,onConfirm:()=>{b&&V(b)},confirming:S})]}):(0,B.jsx)(M,{children:`Select a project to manage slash commands.`})}export{Fe as SettingsSlashCommandsView,Fe 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{Ft as i,N as a}from"./dist-DNkA3vYh.js";import{t as o}from"./utils-B-qS8qMg.js";import{P as s}from"./lucide-react-B-115rul.js";import{t as c}from"./button-B5aMz2Rk.js";import{fn as l,ut as u}from"./api-OO3KSG8d.js";import{er as d,jt as f}from"./index-DD_a7tQU.js";import{t as p}from"./delete-confirm-dialog-Cx9nT7Xd.js";import{a as m,i as h,n as g,r as _,t as v}from"./table-7hMwxpkF.js";import{n as y,t as ee}from"./toggle-group-UiksQ0n9.js";var b=t(),x=e(n(),1),S=a(`app.use-latency-stats.hook`),C={tools:[],models:[]};function w(){let[e,t]=(0,x.useState)([]),[n,r]=(0,x.useState)([]),[i,a]=(0,x.useState)(!0),[o,s]=(0,x.useState)(!1),[c,d]=(0,x.useState)(null),f=(0,x.useCallback)(async function(){try{d(null);let e=await u();t(e.tools??C.tools),r(e.models??C.models)}catch(e){S.error(`Failed to load latency statistics`,e),d(e instanceof Error?e.message:`Failed to load statistics`)}finally{a(!1)}},[]),p=(0,x.useCallback)(async function(){s(!0);try{return d(null),await l(),t(C.tools),r(C.models),!0}catch(e){return S.error(`Failed to reset latency statistics`,e),d(e instanceof Error?e.message:`Failed to reset statistics`),!1}finally{s(!1)}},[]);return(0,x.useEffect)(()=>{f()},[f]),{tools:e,models:n,isLoading:i,isResetting:o,error:c,refresh:f,reset:p}}var T=r(),E=[{value:`tools`,label:`Tools`},{value:`models`,label:`Models`}],D=`inline-flex rounded-full border bg-muted/40 p-1`,O=`rounded-full border-0 px-4 data-[state=on]:bg-foreground data-[state=on]:text-background data-[state=on]:shadow-sm`,te=`flex items-center gap-2`,ne=`gap-1.5 text-muted-foreground hover:text-foreground`,k=`h-9`,A=`table-fixed`,j=o(i.body,`py-1.5`),M=o(i.body,`w-28 py-1.5 text-right tabular-nums`),N=o(i.body,`w-32 py-1.5 text-right tabular-nums`),P=`h-9 w-28 bg-transparent py-2 text-right`,F=`h-9 w-32 bg-transparent py-2 text-right`;function I(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`}function L(e){let t=(0,b.c)(3),{view:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=o(`w-full caption-bottom`,A,i.body),t[0]=r):r=t[0];let a;return t[1]===n?a=t[2]:(a=(0,T.jsx)(`table`,{className:r,children:(0,T.jsx)(`thead`,{className:`[&_tr]:border-b [&_tr]:border-table-border`,children:(0,T.jsx)(`tr`,{children:n===`tools`?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(h,{className:`h-9 bg-transparent py-2`,children:`Tool`}),(0,T.jsx)(h,{className:P,children:`Calls`}),(0,T.jsx)(h,{className:F,children:`Latency`})]}):(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(h,{className:`h-9 bg-transparent py-2`,children:`Model`}),(0,T.jsx)(h,{className:P,children:`Requests`}),(0,T.jsx)(h,{className:F,children:`Latency`})]})})})}),t[1]=n,t[2]=a),a}function R(){let e=(0,b.c)(38),{tools:t,models:n,isLoading:r,isResetting:a,error:l,reset:u}=w(),{toast:m}=d(),[h,_]=(0,x.useState)(`tools`),[y,S]=(0,x.useState)(!1),C=h===`tools`&&!r&&t.length>0,O=h===`models`&&!r&&n.length>0,k=C||O,j=t.length>0||n.length>0,M;e[0]!==u||e[1]!==m?(M=async function(){if(S(!1),await u()){m({title:`Statistics cleared`,description:`All tool and model latency data has been reset.`});return}m({title:`Error`,description:`Failed to reset statistics. Please try again.`,variant:`destructive`})},e[0]=u,e[1]=m,e[2]=M):M=e[2];let N=M,P;e[3]!==k||e[4]!==h?(P=k?(0,T.jsx)(L,{view:h}):void 0,e[3]=k,e[4]=h,e[5]=P):P=e[5];let F;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(F=e=>{(e===`tools`||e===`models`)&&_(e)},e[6]=F):F=e[6];let I;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(I=E.map(V),e[7]=I):I=e[7];let R;e[8]===h?R=e[9]:(R=(0,T.jsx)(ee,{type:`single`,value:h,onValueChange:F,"aria-label":`Statistics view`,variant:`outline`,className:D,children:I}),e[8]=h,e[9]=R);let H=r||a||!j,U,W;e[10]===Symbol.for(`react.memo_cache_sentinel`)?(U=()=>S(!0),W=(0,T.jsx)(s,{}),e[10]=U,e[11]=W):(U=e[10],W=e[11]);let G=a?`Resetting...`:`Reset`,K;e[12]!==H||e[13]!==G?(K=(0,T.jsxs)(c,{variant:`outline`,size:`sm`,className:ne,disabled:H,onClick:U,children:[W,G]}),e[12]=H,e[13]=G,e[14]=K):K=e[14];let q;e[15]!==R||e[16]!==K?(q=(0,T.jsxs)(`div`,{className:te,children:[R,K]}),e[15]=R,e[16]=K,e[17]=q):q=e[17];let J;e[18]===l?J=e[19]:(J=l?(0,T.jsx)(`p`,{className:o(i.bodyMuted,`mb-6 text-destructive`),children:l}):null,e[18]=l,e[19]=J);let Y;e[20]!==r||e[21]!==n||e[22]!==t||e[23]!==h?(Y=h===`tools`?r?(0,T.jsx)(`p`,{className:i.bodyMuted,children:`Loading…`}):t.length===0?(0,T.jsx)(`p`,{className:i.bodyMuted,children:`No tool call timings recorded yet. Stats appear after agent tool calls complete.`}):(0,T.jsx)(v,{className:A,children:(0,T.jsx)(g,{children:t.map(B)})}):r?(0,T.jsx)(`p`,{className:i.bodyMuted,children:`Loading…`}):n.length===0?(0,T.jsx)(`p`,{className:i.bodyMuted,children:`No model timings recorded yet. Stats appear after assistant responses complete.`}):(0,T.jsx)(v,{className:A,children:(0,T.jsx)(g,{children:n.map(z)})}),e[20]=r,e[21]=n,e[22]=t,e[23]=h,e[24]=Y):Y=e[24];let X;e[25]!==P||e[26]!==q||e[27]!==J||e[28]!==Y?(X=(0,T.jsxs)(f,{title:`Statistics`,description:`Average latency and request counts for tool calls and model responses.`,tableHeader:P,action:q,children:[J,Y]}),e[25]=P,e[26]=q,e[27]=J,e[28]=Y,e[29]=X):X=e[29];let Z;e[30]===N?Z=e[31]:(Z=()=>void N(),e[30]=N,e[31]=Z);let Q;e[32]!==y||e[33]!==Z?(Q=(0,T.jsx)(p,{open:y,onOpenChange:S,title:`Reset statistics?`,description:`This clears all recorded tool call and model response latency data. This action cannot be undone.`,onConfirm:Z,confirmLabel:`Reset`,confirmingLabel:`Resetting...`}),e[32]=y,e[33]=Z,e[34]=Q):Q=e[34];let $;return e[35]!==X||e[36]!==Q?($=(0,T.jsxs)(T.Fragment,{children:[X,Q]}),e[35]=X,e[36]=Q,e[37]=$):$=e[37],$}function z(e){return(0,T.jsxs)(m,{className:k,children:[(0,T.jsx)(_,{className:j,children:e.modelId}),(0,T.jsx)(_,{className:M,children:e.requestCount.toLocaleString()}),(0,T.jsx)(_,{className:N,children:I(e.averageDurationMs)})]},e.modelId)}function B(e){return(0,T.jsxs)(m,{className:k,children:[(0,T.jsx)(_,{className:j,children:e.toolName}),(0,T.jsx)(_,{className:M,children:e.callCount.toLocaleString()}),(0,T.jsx)(_,{className:N,children:I(e.averageDurationMs)})]},e.toolName)}function V(e){return(0,T.jsx)(y,{value:e.value,"aria-label":e.label,className:O,children:e.label},e.value)}export{R 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{Ft as i,c as a}from"./dist-DNkA3vYh.js";import{G as o,X as s,r as c}from"./store-B7EgrEO7.js";import{t as l,u}from"./utils-B-qS8qMg.js";import{Cn as d,bn as f,d as p,dt as m}from"./lucide-react-B-115rul.js";import{t as h}from"./button-B5aMz2Rk.js";import{i as g,n as _,t as v}from"./tooltip-Dvmz78Z_.js";import{t as y}from"./progress-indicator-C01aPXIe.js";import{At as ee,F as te,In as ne,St as re,Un as ie,er as ae,rt as oe}from"./index-DD_a7tQU.js";import{t as se}from"./delete-confirm-dialog-Cx9nT7Xd.js";import{i as ce,r as b}from"./table-7hMwxpkF.js";import{t as le}from"./settings-list-Dn4CHP4Z.js";var x=t(),S=e(n(),1),C=r(),ue=36,de=`table-fixed`,fe=`h-9 w-48 bg-transparent py-2`,pe=`h-9 bg-transparent py-2`,me=`h-9 w-32 bg-transparent py-2`,he=`h-9 w-10 bg-transparent py-2`,ge=l(i.bodyMuted,`w-48 truncate py-1.5`),_e=l(i.body,`truncate py-1.5`),ve=l(i.bodyMuted,`w-32 truncate py-1.5`),ye=`w-10 py-1.5`,be={column:`project`,direction:`asc`};function xe(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,C.jsx)(`table`,{...a,style:o,className:l(`w-full caption-bottom`,de,i.body,a.className)}),t[0]=e,t[1]=n}else n=t[1];return n}function Se(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,C.jsx)(`thead`,{...e,className:n}),t[2]=e,t[3]=n,t[4]=r):r=t[4],r}function Ce(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,C.jsx)(`tbody`,{...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(`frosted-scrollbar`,e.className),t[0]=e.className,t[1]=n);let r;return t[2]!==e||t[3]!==n?(r=(0,C.jsx)(`div`,{...e,className:n}),t[2]=e,t[3]=n,t[4]=r):r=t[4],r}function w(e,t){return t?a(t,e):e}function T(e,t,n){switch(t){case`project`:return e.projectName;case`path`:return w(e.path,n);case`branch`:return e.branch}}function Te(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 Ee(e,t,n,r){return[...e].sort((e,i)=>{let a=T(e,t,r).localeCompare(T(i,t,r),void 0,{sensitivity:`base`});return n===`asc`?a:-a})}function E(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`?f:d,p=c?`text-foreground`:`text-muted-foreground`,m;t[0]===p?m=t[1]:(m=l(`inline-flex items-center gap-1 transition-colors hover:text-foreground`,p),t[0]=p,t[1]=m);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,C.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]!==m||t[10]!==h||t[11]!==g||t[12]!==_?(v=(0,C.jsxs)(`button`,{type:`button`,className:m,onClick:h,"aria-sort":g,children:[n,_]}),t[8]=n,t[9]=m,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,C.jsx)(ce,{className:o,children:v}),t[14]=o,t[15]=v,t[16]=y):y=t[16],y}function D(){let e=(0,x.c)(55),t=c(Fe),n=c(Pe),r=c(Ne),a=c(Me),o=c(je),u=c(Ae),d=c(ke),f=c(Oe),{handleDeleteThread:T,refreshWorkspaces:D}=ie(),{toast:O}=ae(),[k,Ie]=(0,S.useState)(null),[A,Le]=(0,S.useState)(be),Re=te()?`Finder`:`Explorer`,j,M;e[0]===D?(j=e[1],M=e[2]):(j=()=>{D()},M=[D],e[0]=D,e[1]=j,e[2]=M),(0,S.useEffect)(j,M);let N;e[3]!==n||e[4]!==t||e[5]!==A.column||e[6]!==A.direction?(N=Ee(Te(t),A.column,A.direction,n),e[3]=n,e[4]=t,e[5]=A.column,e[6]=A.direction,e[7]=N):N=e[7];let P=N,F;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(F=function(e){Le(t=>t.column===e?{column:e,direction:t.direction===`asc`?`desc`:`asc`}:{column:e,direction:`asc`})},e[8]=F):F=e[8];let ze=F,I;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(I=function(e){let{...t}=e;return(0,C.jsx)(`tr`,{...t,className:l(`group border-0 transition-colors hover:bg-muted/50`,t.className)})},e[9]=I):I=e[9];let Be=I,L;e[10]===Symbol.for(`react.memo_cache_sentinel`)?(L={Table:xe,TableHead:Se,TableBody:Ce,TableRow:Be,Scroller:we},e[10]=L):L=e[10];let Ve=L,R;e[11]!==T||e[12]!==k?(R=function(){if(!k)return;let{projectId:e,threadId:t}=k;Ie(null),T(e,t)},e[11]=T,e[12]=k,e[13]=R):R=e[13];let He=R,z;e[14]===O?z=e[15]:(z=async function(e){try{await oe(e.threadId,`.`)}catch{O({title:`Error`,description:`Failed to open folder in ${Re}.`,variant:`destructive`})}},e[14]=O,e[15]=z);let Ue=z,B;e[16]!==n||e[17]!==u||e[18]!==a||e[19]!==Ue||e[20]!==f||e[21]!==o||e[22]!==d?(B=function(e,t){let r=a.includes(t.threadId),c=s(t.threadId,o,d,f),y=u.includes(t.threadId),ee=!c&&!r&&!y,te=w(t.path,n);return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(b,{className:ge,children:t.projectName}),(0,C.jsx)(b,{className:_e,children:(0,C.jsx)(`button`,{type:`button`,className:l(i.body,`block w-full truncate text-left hover:underline`),title:`${t.path}\nOpen in ${Re}`,onClick:()=>void Ue(t),children:te})}),(0,C.jsx)(b,{className:ve,children:t.branch}),(0,C.jsx)(b,{className:ye,children:(0,C.jsx)(`div`,{className:`ml-auto flex h-7 w-7 items-center justify-center`,children:r?(0,C.jsx)(m,{className:`h-4 w-4 animate-spin text-muted-foreground`,"aria-label":`Deleting`}):ee?(0,C.jsxs)(v,{children:[(0,C.jsx)(g,{asChild:!0,children:(0,C.jsxs)(h,{variant:`ghost`,size:`icon-sm`,className:le,onClick:e=>{e.stopPropagation(),Ie(t)},children:[(0,C.jsx)(p,{}),(0,C.jsx)(`span`,{className:`sr-only`,children:`Delete workspace`})]})}),(0,C.jsx)(_,{side:`left`,children:`Delete branch and files from the repo`})]}):null})})]})},e[16]=n,e[17]=u,e[18]=a,e[19]=Ue,e[20]=f,e[21]=o,e[22]=d,e[23]=B):B=e[23];let We=B,V;e[24]===Symbol.for(`react.memo_cache_sentinel`)?(V=l(`w-full caption-bottom`,de,i.body),e[24]=V):V=e[24];let H,U,W;e[25]!==A.column||e[26]!==A.direction?(H=(0,C.jsx)(E,{label:`Project`,column:`project`,sortColumn:A.column,sortDirection:A.direction,className:fe,onSort:ze}),U=(0,C.jsx)(E,{label:`Path`,column:`path`,sortColumn:A.column,sortDirection:A.direction,className:pe,onSort:ze}),W=(0,C.jsx)(E,{label:`Branch`,column:`branch`,sortColumn:A.column,sortDirection:A.direction,className:me,onSort:ze}),e[25]=A.column,e[26]=A.direction,e[27]=H,e[28]=U,e[29]=W):(H=e[27],U=e[28],W=e[29]);let G;e[30]===Symbol.for(`react.memo_cache_sentinel`)?(G=(0,C.jsx)(ce,{className:he,children:(0,C.jsx)(`span`,{className:`sr-only`,children:`Actions`})}),e[30]=G):G=e[30];let K;e[31]!==H||e[32]!==U||e[33]!==W?(K=(0,C.jsx)(`table`,{className:V,children:(0,C.jsx)(`thead`,{className:`[&_tr]:border-b [&_tr]:border-table-border`,children:(0,C.jsxs)(`tr`,{children:[H,U,W,G]})})}),e[31]=H,e[32]=U,e[33]=W,e[34]=K):K=e[34];let Ge=K,Ke=P.length>0?Ge:void 0,q;e[35]===Ke?q=e[36]:(q=(0,C.jsx)(re,{title:`Storage`,description:`Workspaces and branches stored on disk across all projects.`,tableHeader:Ke}),e[35]=Ke,e[36]=q);let J;e[37]!==r||e[38]!==We||e[39]!==P?(J=(0,C.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden`,children:r&&P.length===0?(0,C.jsx)(y,{centered:!0,label:`Loading workspaces...`,size:`lg`}):P.length===0?(0,C.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,C.jsxs)(`div`,{className:`max-w-md space-y-2 text-center`,children:[(0,C.jsx)(`h3`,{className:i.emptyStateTitle,children:`No workspaces`}),(0,C.jsx)(`p`,{className:i.bodyMuted,children:`No branches or workspaces found yet.`})]})}):(0,C.jsx)(ne,{style:{height:`100%`},data:P,computeItemKey:De,itemContent:We,defaultItemHeight:ue,increaseViewportBy:ue*5,components:Ve})}),e[37]=r,e[38]=We,e[39]=P,e[40]=J):J=e[40];let Y;e[41]!==q||e[42]!==J?(Y=(0,C.jsxs)(ee,{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=k!==null,X;e[44]===Symbol.for(`react.memo_cache_sentinel`)?(X=e=>{e||Ie(null)},e[44]=X):X=e[44];let Z;e[45]!==n||e[46]!==k?(Z=k?`Are you sure you want to delete the workspace at "${w(k.path,n)}"? This removes the branch and all its files. This action cannot be undone.`:``,e[45]=n,e[46]=k,e[47]=Z):Z=e[47];let Q;e[48]!==He||e[49]!==qe||e[50]!==Z?(Q=(0,C.jsx)(se,{open:qe,onOpenChange:X,title:`Delete workspace?`,description:Z,onConfirm:He,confirmLabel:`Delete`,confirmingLabel:`Deleting...`}),e[48]=He,e[49]=qe,e[50]=Z,e[51]=Q):Q=e[51];let $;return e[52]!==Y||e[53]!==Q?($=(0,C.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 De(e,t){return t.threadId}function Oe(e){return e.pendingChatMessage}function ke(e){return o(e.threadStreamingStates)}function Ae(e){return e.completedThreadIds}function je(e){return e.processingThreadIds}function Me(e){return e.deletingThreadIds}function Ne(e){return e.projectsLoading}function Pe(e){return e.cloneRootPath}function Fe(e){return e.projects}export{D 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{Ft as r}from"./dist-DNkA3vYh.js";import{t as i}from"./utils-B-qS8qMg.js";import{_t as a,o}from"./lucide-react-B-115rul.js";import{t as s}from"./button-B5aMz2Rk.js";import{i as c,n as l,r as u,t as d}from"./tooltip-Dvmz78Z_.js";import{Tn as f,rr as p,ur as m,w as h}from"./api-OO3KSG8d.js";import{$n as g,At as _,B as v,Dr as y,Er as b,Et as x,Mt as S,Nt as C,St as w,Tr as T,bt as E,kt as D,xt as O,yt as k}from"./index-DD_a7tQU.js";import{t as A}from"./delete-confirm-dialog-Cx9nT7Xd.js";import{t as j}from"./use-settings-page-loading-BTySlInF.js";import{a as M,i as N,r as P}from"./settings-list-Dn4CHP4Z.js";import{t as F}from"./use-installed-ai-files-BkpswqGI.js";import{i as I,n as L,r as R}from"./slug-utils-BQZ6c2py.js";var z=e(t(),1),B=n();function V({threadId:e,onAgentCreated:t}){let[n,a]=(0,z.useState)(``),[o,s]=(0,z.useState)(``),[c,l]=(0,z.useState)(``),[u,d]=(0,z.useState)(!1),f=R(n),p=L(f),m=async()=>{if(!(!p||!o.trim()||!e)){d(!0);try{let n=await h(e,f,o.trim(),c.trim()||void 0);g({title:`Agent created`,description:`Agent '${f}' was created successfully.`}),a(``),s(``),l(``),t?.(n.path,`AGENTS.md`)}catch(e){g({title:`Error`,description:e instanceof Error?e.message:`Failed to create agent`,variant:`destructive`})}finally{d(!1)}}};return e?(0,B.jsx)(S,{children:(0,B.jsxs)(k,{children:[(0,B.jsx)(w,{title:`Add Agent`,description:`Saved as AGENT.md in .agents/agents.`,sticky:!0,className:`pr-10`}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(E,{title:`Agent Name`,controlLayout:`stack`,className:`pt-6`,children:[(0,B.jsx)(T,{id:`agentName`,value:n,onChange:e=>a(e.target.value),placeholder:`e.g. Code Reviewer`,disabled:u}),n?(0,B.jsxs)(`p`,{className:i(r.caption,`mt-2`),children:[`Folder name: `,(0,B.jsx)(`span`,{className:`font-mono`,children:f||`...`})]}):null]}),(0,B.jsx)(E,{title:`Description`,controlLayout:`stack`,className:`pt-6`,children:(0,B.jsx)(v,{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:u})}),(0,B.jsx)(E,{title:`Tools`,description:`Optional space-separated list of tools this agent can use`,controlLayout:`stack`,className:`pt-6`,children:(0,B.jsx)(T,{id:`agentTools`,value:c,onChange:e=>l(e.target.value),placeholder:`e.g. read grep glob`,disabled:u})}),(0,B.jsx)(I,{onContinue:()=>void m(),disabled:!p||!o.trim(),creating:u})]})]})}):(0,B.jsx)(D,{title:`No thread selected`,children:`Please select a thread to add an agent.`})}function H(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(...H(n.children));return t}function U(){let{selectedProjectId:e,selectedThreadId:t,items:n,loading:h,deleteConfirm:v,setDeleteConfirm:S,deleting:T,installedFilePaths:E,setInstalledFilePaths:k,loadItems:I,handleDelete:L,handleOpenInExplorer:R,triggerExplorerRefresh:U}=F({findItems:H,installedPathSuffix:`/AGENT.md`,explorerPathSuffix:`/AGENT.md`,sortByName:!0,removedToastTitle:`Agent removed`}),[W,G]=(0,z.useState)(!1),[K,q]=(0,z.useState)([]),[J,Y]=(0,z.useState)(!0),[X,Z]=(0,z.useState)(``);(0,z.useEffect)(()=>{Y(!0),p().then(q).catch(()=>q([])).finally(()=>Y(!1))},[]);let Q=j(e?`${e}:${t??``}`:null,[h,J]),ee=(0,z.useCallback)(async e=>{let n=`.agents/agents/${e.id}/AGENT.md`;if(!(!t||E.has(n)))try{if(e.gitHubRepo&&e.gitHubFolder)await m(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 f(t,n,r.join(`
|
|
2
|
+
`))}k(e=>new Set(e).add(n)),U(),I(),g({title:`Agent installed`,description:e.name})}catch(e){g({title:`Error`,description:e instanceof Error?e.message:`Failed to install agent`,variant:`destructive`})}},[t,E,U,I]),$=X.trim()?K.filter(e=>e.name.toLowerCase().includes(X.toLowerCase())||e.description.toLowerCase().includes(X.toLowerCase())):K;return e?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(x,{loading:Q,children:[(0,B.jsxs)(C,{className:`shrink-0`,children:[(0,B.jsx)(w,{title:(0,B.jsx)(u,{children:(0,B.jsxs)(d,{children:[(0,B.jsx)(c,{asChild:!0,children:(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[`Installed Subagents`,(0,B.jsx)(a,{"aria-hidden":`true`,className:`h-4 w-4 text-muted-foreground`})]})}),(0,B.jsx)(l,{children:`Project subagents available for focused tasks.`})]})}),action:(0,B.jsx)(s,{onClick:()=>G(!0),disabled:!t,children:`Add Subagent`}),sticky:!1}),(0,B.jsxs)(_,{className:`pt-6`,children:[!t&&(0,B.jsx)(O,{children:`Select a thread to add or install subagents.`}),(0,B.jsx)(P,{showHeader:!1,loading:!1,items:n,emptyState:{icon:o,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,B.jsxs)(`div`,{className:`min-w-0 text-left`,children:[(0,B.jsx)(`div`,{className:i(r.body,`truncate`),children:e.name}),(0,B.jsx)(`div`,{className:i(r.compact,`truncate text-muted-foreground`),children:e.path})]}),onItemClick:e=>R(e.path),itemClickLabel:e=>`Open ${e.name} in Files`,onDelete:S,deleteAriaLabel:e=>`Delete ${e.name}`,deleteTooltip:`Remove this subagent from the project`})]})]}),(0,B.jsxs)(C,{className:`shrink-0`,children:[(0,B.jsx)(w,{title:(0,B.jsx)(u,{children:(0,B.jsxs)(d,{children:[(0,B.jsx)(c,{asChild:!0,children:(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[`Available Subagents`,(0,B.jsx)(a,{"aria-hidden":`true`,className:`h-4 w-4 text-muted-foreground`})]})}),(0,B.jsx)(l,{children:`Browse and install subagents from the catalog.`})]})}),action:(0,B.jsx)(M,{placeholder:`Search`,value:X,onChange:Z,className:`mb-0 w-64`}),sticky:!1}),(0,B.jsx)(_,{className:`pt-6`,children:$.length===0?(0,B.jsx)(N,{searchQuery:X,emptyLabel:`No available subagents found.`}):(0,B.jsx)(`div`,{className:`divide-y divide-table-border`,children:$.map(e=>{let n=`.agents/agents/${e.id}/AGENT.md`,a=E.has(n);return(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:e.name}),(0,B.jsx)(`div`,{className:i(r.compact,`truncate text-muted-foreground`),children:e.description})]}),(0,B.jsx)(s,{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||a,onClick:()=>void ee(e),children:a?`Installed`:`Install`})]},e.id)})})})]})]}),(0,B.jsx)(b,{open:W,onOpenChange:G,children:(0,B.jsx)(y,{className:`max-w-2xl max-h-[90vh] overflow-y-auto p-0`,children:(0,B.jsx)(V,{threadId:t,onAgentCreated:()=>{G(!1),I(),U()}})})}),(0,B.jsx)(A,{open:v!==null,onOpenChange:e=>!e&&S(null),title:`Delete Subagent`,description:`Are you sure you want to delete the subagent "${v?.name}"? This action cannot be undone.`,onConfirm:()=>{v&&L(v)},confirming:T})]}):(0,B.jsx)(D,{children:`Select a project to manage subagents.`})}export{U as SettingsSubagentsView,U 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{Ft as r}from"./dist-DNkA3vYh.js";import{r as i}from"./store-B7EgrEO7.js";import{t as a}from"./utils-B-qS8qMg.js";import{dt as ee}from"./lucide-react-B-115rul.js";import{t as o}from"./button-B5aMz2Rk.js";import{i as s,n as c,t as l}from"./tooltip-Dvmz78Z_.js";import{Jn as u,Jt as d,Tt as f}from"./api-OO3KSG8d.js";import{$n as p,At as m,B as h,Gn as g,Jn as _,Kn as v,St as y,Tt as b,Wn as x,Xn as S,Yn as C,Zn as w,kt as T,qn as E,ut as D,wt as O}from"./index-DD_a7tQU.js";import{t as k}from"./use-settings-page-loading-BTySlInF.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),f(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()){p({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}),d(),L(!P),z(P?``:M.trim()),p({title:`System prompt settings saved`})}catch(e){p({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)(b,{loading:K,children:(0,j.jsx)(O,{children:(0,j.jsxs)(m,{className:`w-full flex-1 flex flex-col min-h-0 pt-0`,children:[(0,j.jsx)(y,{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)(D,{value:P,onChange:X,disabled:H,ariaLabel:`Generated system prompt`})]}),(0,j.jsx)(h,{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)(x,{open:W,onOpenChange:G,children:(0,j.jsxs)(E,{children:[(0,j.jsxs)(S,{children:[(0,j.jsx)(w,{children:`Overwrite custom system prompt?`}),(0,j.jsx)(_,{children:`This will replace your custom system prompt with the generated default. You can save the change after confirming.`})]}),(0,j.jsxs)(C,{children:[(0,j.jsx)(v,{onClick:Q,children:`No`}),(0,j.jsx)(g,{onClick:Z,children:`Yes`})]})]})})]}):(0,j.jsx)(T,{children:`Select a project to edit the system prompt.`})}export{M as SettingsSystemPromptView,M as default};
|
|
@@ -0,0 +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};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/settings-general-tabs-view-BH7AaXyP.js","assets/rolldown-runtime-aKtaBQYM.js","assets/react-vendor-Ee0-5T4I.js","assets/progress-indicator-C01aPXIe.js","assets/utils-B-qS8qMg.js","assets/dist-DNkA3vYh.js","assets/settings-tab-bar-DAHxT5KE.js","assets/pill-tabs-QsjH027B.js","assets/index-DD_a7tQU.js","assets/button-B5aMz2Rk.js","assets/scroll-area-DwRwR2nQ.js","assets/dist-T8-4ZfS0.js","assets/dist-OixawqbU.js","assets/tooltip-Dvmz78Z_.js","assets/dist-DDYi9MQo.js","assets/chat-dock-context-Cnq0BWgm.js","assets/api-OO3KSG8d.js","assets/store-B7EgrEO7.js","assets/explorer-tab-context-BxUVwWQQ.js","assets/main-tab-context-CNgxXqnH.js","assets/terminal-output-activity-B1bjjsl7.js","assets/use-browser-overlay-block-DyprQSIG.js","assets/browser-overlay-block-CiDtkfup.js","assets/suspense-resource-DzlMlIgR.js","assets/dist-sThe8WYP.js","assets/dist-TCNzmc2V.js","assets/es2015-Bu0NIPbn.js","assets/dist-CWYnBq-n.js","assets/dist-DwblUvSf.js","assets/dist-COfI64N5.js","assets/dist-CSssbxDI.js","assets/useBaseQuery-D5as4SgS.js","assets/lucide-react-B-115rul.js","assets/chunk-QFMPRPBF-COsSkB7x.js","assets/index-C4WzOmf3.css","assets/project-settings-view-BKjvtOtk.js","assets/context-menu-BKOotkeD.js","assets/use-settings-page-loading-BTySlInF.js","assets/settings-setup-view-ew5KW8gL.js","assets/project-env-vars-view-BB66j52E.js","assets/project-danger-zone-view-BaSu793w.js","assets/project-model-aliases-view-o1-Z2es5.js","assets/settings-plugins-view-qnWmII61.js","assets/settings-providers-view-DsxTdBEQ.js","assets/account-view-Bzv2EHnc.js","assets/delete-confirm-dialog-Cx9nT7Xd.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{Ft as c,N as l,at as u,lt as d,st as f}from"./dist-DNkA3vYh.js";import{et as p,n as m,r as h}from"./store-B7EgrEO7.js";import{t as g,u as _}from"./utils-B-qS8qMg.js";import{D as v,R 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-B-115rul.js";import{t as D}from"./button-B5aMz2Rk.js";import{Dt as O,Jt as k,pn as A}from"./api-OO3KSG8d.js";import{n as j}from"./scroll-area-DwRwR2nQ.js";import{t as M}from"./progress-indicator-C01aPXIe.js";import{Ln as N,Rn as P,ar as F,kt as I,nr as L,or as R,pr as z,rr as B,zn as V}from"./index-DD_a7tQU.js";var H=t(),U=e(n(),1),W=i(),G=(0,U.forwardRef)(function(e,t){let n=(0,H.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,F=D&&`hidden`,I;n[0]!==_||n[1]!==F?(I=g(`border-r border-transparent`,F,_),n[0]=_,n[1]=F,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,W.jsx)(P,{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,W.jsx)(N,{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 U;n[18]!==i||n[19]!==x||n[20]!==B?(U=(0,W.jsx)(P,{minSize:x,className:B,children:i}),n[18]=i,n[19]=x,n[20]=B,n[21]=U):U=n[21];let G;n[22]!==L||n[23]!==R||n[24]!==U?(G=(0,W.jsxs)(V,{direction:`horizontal`,className:`h-full`,children:[L,R,U]}),n[22]=L,n[23]=R,n[24]=U,n[25]=G):G=n[25];let K;return n[26]!==k||n[27]!==G?(K=(0,W.jsx)(`div`,{className:k,children:G}),n[26]=k,n[27]=G,n[28]=K):K=n[28],K}),K=[{id:`project-plugins`,label:`Plugins`,icon:(0,W.jsx)(y,{className:`h-4 w-4`}),route:`/settings/plugins`},{id:`general`,label:`Settings`,icon:(0,W.jsx)(v,{className:`h-4 w-4`}),route:`/settings/general`},{id:`providers`,label:`Providers`,icon:(0,W.jsx)(w,{className:`h-4 w-4`}),route:`/settings/providers`},{id:`account`,label:`Account`,icon:(0,W.jsx)(C,{className:`h-4 w-4`}),route:`/settings/account`}],q=new Set([`project`,`project-coding`,`project-danger-zone`,`project-env-vars`,`project-plugins`]),J=new Set([`general`,`providers`,`account`]);function ee(e){return q.has(e)?`project`:`general`}function Y(e){let t=(0,H.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,W.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,W.jsx)(R,{selected:i===e.id,asChild:!0,children:(0,W.jsx)(`button`,{className:`justify-start`,onClick:()=>a(e),children:(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e.icon,(0,W.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,W.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,W.jsx)(F,{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,W.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 X(e){let t=[...K];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,W.jsx)(v,{className:`h-4 w-4`}),route:`/settings/project/${e}`},{id:`project-plugins`,label:`Plugins`,icon:(0,W.jsx)(y,{className:`h-4 w-4`}),route:`/settings/project/${e}/plugins`},{id:`project-coding`,label:`Setup`,icon:(0,W.jsx)(x,{className:`h-4 w-4`}),route:`/settings/project/${e}/coding`},{id:`project-env-vars`,label:`Variables`,icon:(0,W.jsx)(E,{className:`h-4 w-4`}),route:`/settings/project/${e}/env-vars`},{id:`project-danger-zone`,label:`Danger Zone`,icon:(0,W.jsx)(T,{className:`h-4 w-4`}),route:`/settings/project/${e}/danger-zone`}),t}function Z(e){let t=(0,H.c)(32),{className:n,selectedProjectId:r,onResetOnboarding:i,onNavItemSelect:a}=e,c=s(),l=o(),p=(0,U.useRef)(0),m=(0,U.useRef)(null),h,_;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>()=>{m.current&&clearTimeout(m.current)},_=[],t[0]=h,t[1]=_):(h=t[0],_=t[1]),(0,U.useEffect)(h,_);let v=B(),y;t[2]===r?y=t[3]:(y=X(r),t[2]=r,t[3]=y);let b=y,x;t[4]!==v||t[5]!==b?(x=v?b.filter(te):b,t[4]=v,t[5]=b,t[6]=x):x=t[6];let S=x,C;t[7]!==l.pathname||t[8]!==S?(C=function(){let e=l.pathname;if(u(e))return`project-plugins`;if(f(e))return`general`;if(d(e))return`providers`;if(e.endsWith(`/model-aliases`)&&e.startsWith(`/settings/project/`))return`project-model-aliases`;if(e.endsWith(`/env-vars`)&&e.startsWith(`/settings/project/`))return`project-env-vars`;if(/^\/settings\/project\/[^/]+\/coding(?:\/[^/]+)?\/?$/.test(e))return`project-coding`;if(e.endsWith(`/danger-zone`)&&e.startsWith(`/settings/project/`))return`project-danger-zone`;if(e.startsWith(`/settings/project/`))return`project`;for(let t of S)if(e.startsWith(t.route))return t.id;return`general`}(),t[7]=l.pathname,t[8]=S,t[9]=C):C=t[9];let w=C,T;t[10]!==c||t[11]!==a||t[12]!==i?(T=function(e){e.id===`general`&&i&&(m.current&&clearTimeout(m.current),p.current+=1,p.current>=3?(p.current=0,i()):m.current=setTimeout(()=>{p.current=0},1500)),a?.(),c(e.route)},t[10]=c,t[11]=a,t[12]=i,t[13]=T):T=t[13];let E=T,D;t[14]===S?D=t[15]:(D=S.filter($),t[14]=S,t[15]=D);let O=D,k;t[16]===S?k=t[17]:(k=S.filter(Q),t[16]=S,t[17]=k);let A=k,j;t[18]===n?j=t[19]:(j=g(`space-y-1`,n),t[18]=n,t[19]=j);let M;t[20]!==w||t[21]!==A||t[22]!==E?(M=(0,W.jsx)(Y,{label:`General`,items:A,activeTabId:w,onItemClick:E,showSeparator:!1}),t[20]=w,t[21]=A,t[22]=E,t[23]=M):M=t[23];let N;t[24]!==w||t[25]!==E||t[26]!==O?(N=(0,W.jsx)(Y,{label:`Project`,items:O,activeTabId:w,onItemClick:E,showSeparator:!1,className:`pt-3`}),t[24]=w,t[25]=E,t[26]=O,t[27]=N):N=t[27];let P;return t[28]!==M||t[29]!==N||t[30]!==j?(P=(0,W.jsxs)(`div`,{className:j,children:[M,N]}),t[28]=M,t[29]=N,t[30]=j,t[31]=P):P=t[31],P}function Q(e){return J.has(e.id)}function $(e){return q.has(e.id)}function te(e){return e.id!==`account`}var ne=l(`app.settings-view.ui`),re=`frosted-surface backdrop-blur-2xl`,ie=(0,U.lazy)(function(){return r(()=>import(`./settings-general-tabs-view-BH7AaXyP.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]))}),ae=(0,U.lazy)(()=>r(()=>import(`./project-settings-view-BKjvtOtk.js`),__vite__mapDeps([35,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,36,37]))),oe=(0,U.lazy)(function(){return r(()=>import(`./settings-setup-view-ew5KW8gL.js`),__vite__mapDeps([38,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,6,7]))}),se=(0,U.lazy)(()=>r(()=>import(`./project-env-vars-view-BB66j52E.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,37]))),ce=(0,U.lazy)(()=>r(()=>import(`./project-danger-zone-view-BaSu793w.js`),__vite__mapDeps([40,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]))),le=(0,U.lazy)(()=>r(()=>import(`./project-model-aliases-view-o1-Z2es5.js`),__vite__mapDeps([41,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,37]))),ue=(0,U.lazy)(function(){return r(()=>import(`./settings-plugins-view-qnWmII61.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]))}),de=(0,U.lazy)(function(){return r(()=>import(`./settings-providers-view-DsxTdBEQ.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]))}),fe=(0,U.lazy)(()=>r(()=>import(`./account-view-Bzv2EHnc.js`),__vite__mapDeps([44,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,45]))),pe=[`plugins`,`general`,`providers`,`models`,`model-aliases`,`skills`,`slash-commands`,`subagents`,`system-prompt`,`mcp-servers`,`slack`,`logs`,`statistics`,`history`,`storage`,`account`];function me(e){let t=(0,H.c)(2),{title:n}=e,r;return t[0]===n?r=t[1]:(r=(0,W.jsx)(I,{title:n,children:`Content coming soon...`}),t[0]=n,t[1]=r),r}function he(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 ge(e){let t=e.match(/^\/settings\/providers\/([^/]+)$/);return t?decodeURIComponent(t[1]):null}function _e(e,t,n){return e&&pe.includes(e)?e:t&&pe.includes(t)?t:he(n)}function ve(e,t,n,r,i,a,o){return o===`plugins`||o===`skills`||o===`mcp-servers`||o===`system-prompt`||o===`slash-commands`||o===`subagents`||e?`project-plugins`:t?`project-model-aliases`:n?`project-env-vars`:r?`project-coding`:i?`project-danger-zone`:a?`project`:o===`general`||o===`history`||o===`storage`||o===`statistics`||o===`logs`||o===`slack`?`general`:o===`providers`||o===`models`||o===`model-aliases`?`providers`:o}var ye=new Set([`plugins`,`skills`,`mcp-servers`,`system-prompt`,`slash-commands`,`subagents`]),be=new Set([`general`,`history`,`storage`,`statistics`,`logs`,`slack`]),xe=new Set([`providers`,`models`,`model-aliases`]);function Se(e){return[[e.isProjectToolsRoute,`Plugins`],[e.isProjectModelAliasesRoute,`Model Aliases`],[e.isProjectEnvVarsRoute,`Variables`],[e.isProjectCodingRoute,`Setup`],[e.isProjectDangerZoneRoute,`Danger Zone`],[e.isProjectSettingsRoute,`Project`]].find(function([e]){return e})?.[1]}function Ce(e){return be.has(e)?`Settings`:xe.has(e)?`Providers`:K.find(t=>t.id===e)?.label??`Settings`}function we(e){return ye.has(e.activeTab)?`Plugins`:Se(e)??Ce(e.activeTab)}function Te(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 Ee(e,t){let n=!!e&&t.startsWith(`/settings/project/`),r=n&&t.endsWith(`/tools`),i=n&&/\/plugins(?:\/[^/]+)?\/?$/.test(t),a=n&&t.endsWith(`/model-aliases`),o=n&&t.endsWith(`/env-vars`),s=n&&/\/coding(?:\/[^/]+)?\/?$/.test(t),c=n&&t.endsWith(`/danger-zone`);return{isProjectRoute:n,isProjectToolsRoute:r,isProjectPluginsRoute:i,isProjectModelAliasesRoute:a,isProjectEnvVarsRoute:o,isProjectCodingRoute:s,isProjectDangerZoneRoute:c,isProjectSettingsRoute:n&&!o&&!a&&!s&&!c&&!r&&!i}}function De(e,t){let n=(0,H.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,U.useEffect)(r,i)}function Oe(e){let t=(0,H.c)(7),{selectedProjectId:n,onResetOnboarding:r,onNavItemSelect:i,header:a}=e,o;t[0]!==i||t[1]!==r||t[2]!==n?(o=(0,W.jsx)(`div`,{className:`min-h-0 flex-1 p-2.5`,children:(0,W.jsx)(j,{className:`h-full`,children:(0,W.jsx)(`div`,{className:`py-2`,children:(0,W.jsx)(Z,{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,W.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 ke(e){let t=(0,H.c)(16),{settingsHeaderTitle:n,isProjectSettingsScope:r,selectedProject:i,onRequestClose:a}=e,o;t[0]!==r||t[1]!==i?(o=r&&i?(0,W.jsx)(z,{project:i,className:`h-7 w-7 shrink-0 rounded-md`,iconClassName:`h-3.5 w-3.5`}):(0,W.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,W.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,W.jsx)(`span`,{className:s,children:n}),t[4]=n,t[5]=l);let u;t[6]!==o||t[7]!==l?(u=(0,W.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,W.jsx)(S,{className:`h-4 w-4`}),f=(0,W.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,W.jsx)(`div`,{className:`col-start-3 flex items-center justify-self-end electrobun-webkit-app-region-no-drag`,children:(0,W.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,W.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 Ae(e){let t=(0,H.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,W.jsx)(b,{className:`h-4 w-4`}),l=(0,W.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,W.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,W.jsx)(`span`,{className:d,children:a}),t[5]=a,t[6]=f);let p;return t[7]!==u||t[8]!==f?(p=(0,W.jsx)(`div`,{className:`px-6 pb-0 pt-6`,children:(0,W.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}function je(e){let t=(0,H.c)(29),{isProjectToolsRoute:n,isProjectPluginsRoute:r,isProjectModelAliasesRoute:i,isProjectEnvVarsRoute:a,isProjectCodingRoute:o,isProjectDangerZoneRoute:s,isProjectSettingsRoute:c,projectId:l,selectedProjectId:u,activeTab:d,onboardingResetSignal:f,handleProjectUpdated:p}=e;if(o&&l){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,W.jsx)(M,{centered:!0,label:`Loading coding settings...`}),t[0]=e):e=t[0];let n;return t[1]===l?n=t[2]:(n=(0,W.jsx)(U.Suspense,{fallback:e,children:(0,W.jsx)(oe,{projectId:l})}),t[1]=l,t[2]=n),n}if(s&&l){let e;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,W.jsx)(M,{centered:!0,label:`Loading danger zone...`}),t[3]=e):e=t[3];let n;return t[4]===l?n=t[5]:(n=(0,W.jsx)(U.Suspense,{fallback:e,children:(0,W.jsx)(ce,{projectId:l})}),t[4]=l,t[5]=n),n}if(l&&u!==l&&(n||r)){let e;return t[6]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,W.jsx)(M,{centered:!0,label:`Loading project plugins...`}),t[6]=e):e=t[6],e}if(n||r||d===`plugins`||d===`skills`||d===`mcp-servers`||d===`system-prompt`||d===`slash-commands`||d===`subagents`){let e;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,W.jsx)(M,{centered:!0,label:`Loading plugin settings...`}),t[7]=e):e=t[7];let n=l??u,r=d===`skills`||d===`mcp-servers`||d===`system-prompt`||d===`slash-commands`||d===`subagents`?d:void 0,i;return t[8]!==p||t[9]!==n||t[10]!==r?(i=(0,W.jsx)(U.Suspense,{fallback:e,children:(0,W.jsx)(ue,{projectId:n,fallbackTab:r,onProjectUpdated:p})}),t[8]=p,t[9]=n,t[10]=r,t[11]=i):i=t[11],i}if(i&&l){let e;return t[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,W.jsx)(U.Suspense,{fallback:(0,W.jsx)(M,{centered:!0,label:`Loading project model aliases...`}),children:(0,W.jsx)(le,{})}),t[12]=e):e=t[12],e}if(a&&l){let e;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,W.jsx)(M,{centered:!0,label:`Loading environment variables...`}),t[13]=e):e=t[13];let n;return t[14]===l?n=t[15]:(n=(0,W.jsx)(U.Suspense,{fallback:e,children:(0,W.jsx)(se,{projectId:l})}),t[14]=l,t[15]=n),n}if(c&&l){let e;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,W.jsx)(M,{centered:!0,label:`Loading project settings...`}),t[16]=e):e=t[16];let n;return t[17]!==p||t[18]!==l?(n=(0,W.jsx)(U.Suspense,{fallback:e,children:(0,W.jsx)(ae,{projectId:l,onProjectUpdated:p})}),t[17]=p,t[18]=l,t[19]=n):n=t[19],n}if(d===`general`||d===`history`||d===`storage`||d===`statistics`||d===`logs`||d===`slack`){let e;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,W.jsx)(M,{centered:!0,label:`Loading general settings...`}),t[20]=e):e=t[20];let n;return t[21]!==d||t[22]!==f?(n=(0,W.jsx)(U.Suspense,{fallback:e,children:(0,W.jsx)(ie,{fallbackTab:d,onboardingResetSignal:f})}),t[21]=d,t[22]=f,t[23]=n):n=t[23],n}if(d===`providers`||d===`models`||d===`model-aliases`){let e;t[24]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,W.jsx)(M,{centered:!0,label:`Loading provider settings...`}),t[24]=e):e=t[24];let n;return t[25]===d?n=t[26]:(n=(0,W.jsx)(U.Suspense,{fallback:e,children:(0,W.jsx)(de,{fallbackTab:d})}),t[25]=d,t[26]=n),n}let m;return t[27]===d?m=t[28]:(m=Me(d),t[27]=d,t[28]=m),m}function Me(e){return{account:(0,W.jsx)(U.Suspense,{fallback:(0,W.jsx)(M,{centered:!0,label:`Loading account settings...`}),children:(0,W.jsx)(fe,{})})}[e]??(0,W.jsx)(me,{title:`Settings`})}function Ne({onRequestClose:e}){let{tab:t,projectId:n}=a(),r=s(),i=o(),c=m(),l=h(e=>e.selectedProjectId),u=h(e=>e.projects),{isProjectRoute:d,isProjectToolsRoute:f,isProjectPluginsRoute:v,isProjectModelAliasesRoute:y,isProjectEnvVarsRoute:b,isProjectCodingRoute:x,isProjectDangerZoneRoute:S,isProjectSettingsRoute:C}=Ee(n,i.pathname),w=ge(i.pathname)!==null,T=_e(new URLSearchParams(i.search).get(`tab`),t,i.pathname),E=B();(0,U.useEffect)(()=>{n&&l!==n&&c({type:p.SelectProject,projectId:n})},[c,n,l]);let[D,j]=(0,U.useState)(!0),[M,N]=(0,U.useState)(0),P=(0,U.useRef)(null),F=(0,U.useRef)(null),I=ve(f,y,b,x,S,d,T),L=(0,U.useMemo)(()=>u.find(e=>e.projectId===l)??null,[u,l]),R=ee(I)===`project`&&L!==null,z=R?`${_(L)} Settings`:`General Settings`,V=(0,U.useMemo)(()=>we({isProjectToolsRoute:f,isProjectModelAliasesRoute:y,isProjectEnvVarsRoute:b,isProjectCodingRoute:x,isProjectDangerZoneRoute:S,isProjectSettingsRoute:C,activeTab:T}),[T,x,S,b,y,C,f]),H=(0,U.useCallback)(()=>{E&&j(!1)},[E]),K=(0,U.useCallback)(()=>{j(!0)},[]),q=(0,U.useCallback)(async()=>{try{await A(),N(e=>e+1)}catch(e){ne.error(`Failed to reset onboarding:`,e)}},[]),J=(0,U.useCallback)(async()=>{k(n??l??void 0);try{let e=await O();c({type:p.SetProjects,projects:e.projects,cloneRootPath:e.cloneRootPath})}catch(e){throw ne.error(`Failed to refresh projects after settings update:`,e),e}},[c,n,l]);(0,U.useEffect)(()=>{if(y){r(`/settings/model-aliases`,{replace:!0});return}Te(i.pathname,E)&&r(`/settings/general`,{replace:!0})},[y,i.pathname,r,E]),De(F,e);function Y(){return(0,W.jsx)(ke,{settingsHeaderTitle:z,isProjectSettingsScope:R,selectedProject:L,onRequestClose:e})}function X(){return E?Y():(0,W.jsx)(`div`,{"aria-hidden":`true`,className:`h-14 shrink-0 electrobun-webkit-app-region-drag`})}function Z(){return(0,W.jsx)(Oe,{selectedProjectId:l,onResetOnboarding:q,onNavItemSelect:H,header:X()})}function Q(){return(0,W.jsx)(je,{isProjectToolsRoute:f,isProjectPluginsRoute:v,isProjectModelAliasesRoute:y,isProjectEnvVarsRoute:b,isProjectCodingRoute:x,isProjectDangerZoneRoute:S,isProjectSettingsRoute:C,projectId:n,selectedProjectId:l,activeTab:T,onboardingResetSignal:M,handleProjectUpdated:J})}function $(){return(0,W.jsx)(Ae,{isMobile:E,mobileShowSidebar:D,isProviderDetailRoute:w,activeSectionLabel:V,onShowSidebar:K})}return(0,W.jsx)(`div`,{ref:F,role:`dialog`,"aria-modal":`true`,"aria-label":`Settings`,className:g(`rounded-2xl border border-border shadow-lg`,re,`flex h-full w-full flex-col overflow-hidden md:h-[95vh] md:w-[80vw] md:max-w-[1400px]`),children:(0,W.jsx)(G,{ref:P,collapsible:!0,isMobile:E,mobileShowSidebar:D,sidebarClassName:g(`overflow-hidden rounded-tr-2xl`,re),sidebar:Z(),children:(0,W.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[Y(),(0,W.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:[$(),Q()]})]})})})}export{je as SettingsContent,Ne as default,we as resolveActiveSectionLabel};
|
|
@@ -0,0 +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};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n}from"./react-vendor-Ee0-5T4I.js";import{$t as r,At as i,Dt as a,Et as o,N as s,Ot as c,jt as l,kt as u,nn as d,q as f}from"./dist-DNkA3vYh.js";import{d as p}from"./utils-B-qS8qMg.js";var m=function(e){return e.SetProjects=`SET_PROJECTS`,e.SetProjectsLoading=`SET_PROJECTS_LOADING`,e.ClearUnreadAutomatedChat=`CLEAR_UNREAD_AUTOMATED_CHAT`,e.SelectThread=`SELECT_THREAD`,e.SelectProject=`SELECT_PROJECT`,e.SetMessages=`SET_MESSAGES`,e.AddMessage=`ADD_MESSAGE`,e.EnqueueChatMessage=`ENQUEUE_CHAT_MESSAGE`,e.RemoveQueuedChatMessage=`REMOVE_QUEUED_CHAT_MESSAGE`,e.SetStreaming=`SET_STREAMING`,e.AppendStreamContent=`APPEND_STREAM_CONTENT`,e.SetStreamContent=`SET_STREAM_CONTENT`,e.AppendStreamThinking=`APPEND_STREAM_THINKING`,e.AppendStreamChunk=`APPEND_STREAM_CHUNK`,e.SetStreamModel=`SET_STREAM_MODEL`,e.SetStreamAgentMode=`SET_STREAM_AGENT_MODE`,e.SetContextUsage=`SET_CONTEXT_USAGE`,e.SetProjectModel=`SET_PROJECT_MODEL`,e.ResetStream=`RESET_STREAM`,e.StopStream=`STOP_STREAM`,e.ToggleSidebar=`TOGGLE_SIDEBAR`,e.OpenSidebar=`OPEN_SIDEBAR`,e.CloseSidebar=`CLOSE_SIDEBAR`,e.OpenProjectPanel=`OPEN_PROJECT_PANEL`,e.CloseProjectPanel=`CLOSE_PROJECT_PANEL`,e.SetCreatingProject=`SET_CREATING_PROJECT`,e.SetGitAuthRequest=`SET_GIT_AUTH_REQUEST`,e.ConfigUpdated=`CONFIG_UPDATED`,e.SetProcessingThreads=`SET_PROCESSING_THREADS`,e.AddProcessingThread=`ADD_PROCESSING_THREAD`,e.RemoveProcessingThread=`REMOVE_PROCESSING_THREAD`,e.AddCreatingProject=`ADD_CREATING_PROJECT`,e.AddCreatingThread=`ADD_CREATING_THREAD`,e.RemoveCreatingProject=`REMOVE_CREATING_PROJECT`,e.RemoveCreatingThread=`REMOVE_CREATING_THREAD`,e.RemoveThread=`REMOVE_THREAD`,e.MarkThreadCompleted=`MARK_THREAD_COMPLETED`,e.ClearThreadCompleted=`CLEAR_THREAD_COMPLETED`,e.ClearPaneCompleted=`CLEAR_PANE_COMPLETED`,e.AddDeletingThread=`ADD_DELETING_THREAD`,e.RemoveDeletingThread=`REMOVE_DELETING_THREAD`,e.AddDeletingProject=`ADD_DELETING_PROJECT`,e.RemoveDeletingProject=`REMOVE_DELETING_PROJECT`,e.AppendCommandOutput=`APPEND_COMMAND_OUTPUT`,e.SetRunningCommand=`SET_RUNNING_COMMAND`,e.ClearCommandOutput=`CLEAR_COMMAND_OUTPUT`,e.ToggleTerminal=`TOGGLE_TERMINAL`,e.SetTerminalOpen=`SET_TERMINAL_OPEN`,e.QueueTerminalCommand=`QUEUE_TERMINAL_COMMAND`,e.ClearQueuedTerminalCommand=`CLEAR_QUEUED_TERMINAL_COMMAND`,e.AppendTerminalLine=`APPEND_TERMINAL_LINE`,e.ClearTerminalOutput=`CLEAR_TERMINAL_OUTPUT`,e.SetTerminalHeight=`SET_TERMINAL_HEIGHT`,e.SetTerminalCwd=`SET_TERMINAL_CWD`,e.SetTerminalRunning=`SET_TERMINAL_RUNNING`,e.SetTerminalHistory=`SET_TERMINAL_HISTORY`,e.SetTerminalHistoryIndex=`SET_TERMINAL_HISTORY_INDEX`,e.UpdateThreadTitle=`UPDATE_THREAD_TITLE`,e.UpdateChatTitle=`UPDATE_CHAT_TITLE`,e.FocusChatInput=`FOCUS_CHAT_INPUT`,e.ClearFocusChatInput=`CLEAR_FOCUS_CHAT_INPUT`,e.ClearMessages=`CLEAR_MESSAGES`,e.UpdateMessage=`UPDATE_MESSAGE`,e.UpdateMessageCheckpointRef=`UPDATE_MESSAGE_CHECKPOINT_REF`,e.SetDevServerToolSession=`SET_DEV_SERVER_TOOL_SESSION`,e.SetThreadToolSession=`SET_THREAD_TOOL_SESSION`,e.ClearThreadToolSession=`CLEAR_THREAD_TOOL_SESSION`,e.SetThreadCreationSummary=`SET_THREAD_CREATION_SUMMARY`,e.ClearThreadCreationSummary=`CLEAR_THREAD_CREATION_SUMMARY`,e.UpdateToolCallProgress=`UPDATE_TOOL_CALL_PROGRESS`,e.UpdateToolExecutionOutput=`UPDATE_TOOL_EXECUTION_OUTPUT`,e.AppendToolExecutionOutput=`APPEND_TOOL_EXECUTION_OUTPUT`,e.AppendSubagentEvent=`APPEND_SUBAGENT_EVENT`,e.AppendSubagentEvents=`APPEND_SUBAGENT_EVENTS`,e.ClearToolCallProgress=`CLEAR_TOOL_CALL_PROGRESS`,e.SetPendingChatMessage=`SET_PENDING_CHAT_MESSAGE`,e.ClearPendingChatMessage=`CLEAR_PENDING_CHAT_MESSAGE`,e.IncrementStreamEventCount=`INCREMENT_STREAM_EVENT_COUNT`,e.SetDiffComments=`SET_DIFF_COMMENTS`,e.ClearSelection=`CLEAR_SELECTION`,e.SetChatInputDraft=`SET_CHAT_INPUT_DRAFT`,e.ClearChatInputDraft=`CLEAR_CHAT_INPUT_DRAFT`,e.StartAutoRoute=`START_AUTO_ROUTE`,e.EndAutoRoute=`END_AUTO_ROUTE`,e.AddChatPane=`ADD_CHAT_PANE`,e.RemoveChatPane=`REMOVE_CHAT_PANE`,e.SetFocusedPane=`SET_FOCUSED_PANE`,e.SetNewChatStarting=`SET_NEW_CHAT_STARTING`,e.SetPrimaryConversationId=`SET_PRIMARY_CONVERSATION_ID`,e.SetPaneConversationId=`SET_PANE_CONVERSATION_ID`,e.SetPaneMessages=`SET_PANE_MESSAGES`,e.AddPaneMessage=`ADD_PANE_MESSAGE`,e.SetActiveStreamPane=`SET_ACTIVE_STREAM_PANE`,e.HydrateProjectChatPanes=`HYDRATE_PROJECT_CHAT_PANES`,e}({}),h=f,ee={projects:[],cloneRootPath:null,projectsLoading:!0,selectedThreadId:null,selectedProjectId:null,messages:[],messagesLoaded:!1,startingNewChatPaneIds:[],chatHistoryEpoch:0,primaryConversationId:void 0,queuedChatMessages:[],isStreaming:!1,streamingContent:``,streamingThinking:``,streamingSegments:[],streamingModel:``,streamingAgentMode:null,streamingEventCount:0,threadStreamingStates:{},threadMultiPaneStates:{},projectModelSelections:{},paneModelSelections:{},sidebarOpen:!0,projectPanelView:`projects`,projectPanelProjectId:null,isCreatingProject:!1,gitAuthRequest:null,configUpdatedAt:0,processingThreadIds:[],processingRuns:[],completedThreadIds:[],completedThreadPaneIds:{},completedPaneIds:[],deletingThreadIds:[],deletingProjectIds:[],commandOutput:``,isRunningCommand:!1,terminalStates:{},focusChatInput:!1,toolCallProgress:{},subagentTranscripts:{},devServerToolSession:null,threadToolSessions:{},threadCreationSummaries:{},pendingChatMessage:null,diffComments:{},chatInputDrafts:{},pendingAutoRoutes:{},focusedPane:`primary`,extraChatPanes:{},activeStreamPane:null},te={open:!1,queuedCommand:null,queuedRelativeFolder:null,outputLines:[],height:300,history:[],historyIndex:-1,cwd:`.`,isRunning:!1};function g(e,t){return`${e}:${t}`}function ne(e,t,n=h){return t?e[g(t,n)]??null:null}function re(e,t){switch(t.type){case m.StartAutoRoute:{let n=g(t.route.threadId,t.route.paneId);return{...e,pendingAutoRoutes:{...e.pendingAutoRoutes,[n]:t.route}}}case m.EndAutoRoute:{let n=g(t.threadId,t.paneId);if(!e.pendingAutoRoutes[n])return e;let{[n]:r,...i}=e.pendingAutoRoutes;return{...e,pendingAutoRoutes:i}}default:return null}}function ie(e,t){let n=`${t}:`,r=new Set([h]);for(let t of Object.keys(e))t.startsWith(n)&&r.add(t.slice(n.length));return[...r]}function ae(e,t){let n=t?`${t}:`:null,r=``;for(let t of Object.keys(e))n&&!t.startsWith(n)||e[t].isStreaming&&(r+=`${t}\n`);return r}function oe(e,t,n=h){return e.includes(`${v(t,n)}\n`)}function se(e,t){return e.includes(`${t}:`)}function ce(e,t,n,r){return t.includes(e)||se(n,e)?!0:r?.threadId===e}var le={isStreaming:!1,streamingContent:``,streamingThinking:``,streamingSegments:[],streamingModel:``,streamingAgentMode:null,streamingEventCount:0},ue=le;function _(){return{...le,streamingSegments:[]}}function v(e,t=h){return`${e}:${t}`}function y(e,t,n=h){return t?e[v(t,n)]??ue:ue}function de(e,t){let n=new Set([h,...t.sessionPaneIds??[],...ie(t.streamingStates,e)]);for(let r of n)if(t.hasSession(r)||y(t.streamingStates,e,r).isStreaming)return!0;return!1}function b(e,t){return t.threadId??e.selectedThreadId}function fe(e){return e??h}function pe(e,t,n,r){return!n||!t.includes(n)?!1:fe(e)===r}function me(e,t,n){return t?y(e.threadStreamingStates,t,n).isStreaming?!0:pe(e.activeStreamPane,e.processingThreadIds,t,n):!1}function x(e,t){return t.paneId??e.activeStreamPane??h}function he(e,t,n){return t===e.selectedThreadId?e.activeStreamPane===null?n===h:e.activeStreamPane===n:!1}function S(e,t,n,r,i=!1){if(!t)return{...e,...r,toolCallProgress:i?{}:e.toolCallProgress};let a=v(t,n),o={...e.threadStreamingStates,[a]:r};return he(e,t,n)?{...e,...r,threadStreamingStates:o,toolCallProgress:i?{}:e.toolCallProgress}:{...e,threadStreamingStates:o}}function ge(){return{open:!1,queuedCommand:null,queuedRelativeFolder:null,outputLines:[],height:300,history:[],historyIndex:-1,cwd:`.`,isRunning:!1}}var C={focusedPane:h,extraChatPanes:{},activeStreamPane:null};function _e(){return{focusedPane:h,extraChatPanes:{},activeStreamPane:null}}function w(e){return{focusedPane:e.focusedPane,extraChatPanes:e.extraChatPanes,activeStreamPane:e.activeStreamPane}}function ve(e,t){return t?e[t]??C:C}function ye(e){let t={};for(let[n,r]of Object.entries(e))t[n]={...r,messages:[...r.messages]};return t}function T(e){return{...e,extraChatPanes:ye(e.extraChatPanes)}}function E(e,t,n){let r=T(n),i=t===null?e.threadMultiPaneStates:{...e.threadMultiPaneStates,[t]:r};return t===e.selectedThreadId?{...e,...r,threadMultiPaneStates:i}:{...e,threadMultiPaneStates:i}}function be(e,t,n){let r=e.threadMultiPaneStates;return t&&(r={...r,[t]:T(w(e))}),{...T(ve(r,n)),threadMultiPaneStates:r}}function D(e,t){return E(e,e.selectedThreadId,{...w(e),...t})}function xe(e,t){let n=e.chatPanesByThread[t];if(!n)return T(C);let r={};for(let e of n.panes)r[e.paneId]={conversationId:e.conversationId,messages:[],messagesLoaded:!1};return{focusedPane:n.focusedPaneId,extraChatPanes:r,activeStreamPane:null}}function Se(e,t){if(!t)return e;let n=ye(e.extraChatPanes);for(let[e,r]of Object.entries(t.extraChatPanes)){let t=n[e];if(!t){n[e]=r;continue}r.messagesLoaded&&(n[e]={...t,messages:r.messages,messagesLoaded:!0})}let r=t.focusedPane in n&&!(t.focusedPane in e.extraChatPanes);return{...e,extraChatPanes:n,focusedPane:r?t.focusedPane:e.focusedPane}}var Ce=[];function we(e,t){return t===h?e.messages:e.extraChatPanes[t]?.messages??Ce}function Te(e,t){return t===h?e.primaryConversationId:e.extraChatPanes[t]?.conversationId}function Ee(e,t){return t===h?e.messagesLoaded:e.extraChatPanes[t]?.messagesLoaded??!1}function De(e,t){let n=new Set(t.threadIds),r={...e.threadMultiPaneStates};for(let n of t.threadIds)r[n]=Se(xe(t,n),n===e.selectedThreadId?w(e):e.threadMultiPaneStates[n]);return!e.selectedThreadId||!n.has(e.selectedThreadId)?{...e,threadMultiPaneStates:r}:{...e,...r[e.selectedThreadId],threadMultiPaneStates:r}}function Oe(e,t){return t.paneId===h?e:e.extraChatPanes[t.paneId]?D(e,{focusedPane:t.paneId}):D(e,{focusedPane:t.paneId,extraChatPanes:{...e.extraChatPanes,[t.paneId]:{conversationId:t.conversationId,messages:[],messagesLoaded:!1}}})}function ke(e,t){if(t.paneId===h||!e.extraChatPanes[t.paneId])return e;let{[t.paneId]:n,...r}=e.extraChatPanes;return D(e,{extraChatPanes:r,focusedPane:e.focusedPane===t.paneId?h:e.focusedPane,activeStreamPane:e.activeStreamPane===t.paneId?null:e.activeStreamPane})}function Ae(e,t){if(t.paneId===h)return{...e,messages:t.messages,messagesLoaded:!0};let n=e.extraChatPanes[t.paneId];return n?D(e,{extraChatPanes:{...e.extraChatPanes,[t.paneId]:{...n,messages:t.messages,messagesLoaded:!0}}}):e}function je(e,t){if(t.paneId===h)return e;let n=e.extraChatPanes[t.paneId];return n?D(e,{extraChatPanes:{...e.extraChatPanes,[t.paneId]:{...n,conversationId:t.conversationId,messages:[],messagesLoaded:!0}}}):e}function Me(e,t){if(t.paneId===h)return{...e,messages:[...e.messages,t.message]};let n=e.extraChatPanes[t.paneId];return n?D(e,{extraChatPanes:{...e.extraChatPanes,[t.paneId]:{...n,messages:[...n.messages,t.message]}}}):e}function Ne(e,t){if(!e.selectedThreadId||t.paneId===null)return D(e,{activeStreamPane:null});let n=y(e.threadStreamingStates,e.selectedThreadId,t.paneId);return{...D(e,{activeStreamPane:t.paneId}),...n}}function Pe(e,t){switch(t.type){case m.HydrateProjectChatPanes:return De(e,t);case m.AddChatPane:return Oe(e,t);case m.RemoveChatPane:return ke(e,t);case m.SetFocusedPane:return D(e,{focusedPane:t.paneId});case m.SetPaneConversationId:return je(e,t);case m.SetPaneMessages:return Ae(e,t);case m.AddPaneMessage:return Me(e,t);case m.SetActiveStreamPane:return Ne(e,t);default:return null}}function Fe(e,t){return!!(t.historyEpoch!==void 0&&t.historyEpoch!==e.chatHistoryEpoch||t.conversationId&&e.primaryConversationId&&t.conversationId!==e.primaryConversationId)}function O(e,t){let n=e.selectedThreadId?e.threadCreationSummaries[e.selectedThreadId]:void 0;return!n||t.some(e=>e.messageId===n.messageId)?t:[n,...t]}function Ie(e,t){let n=t.paneId??h;if(n!==h){if(t.threadId&&t.threadId!==e.selectedThreadId)return e;let r=e.extraChatPanes[n];return r?E(e,e.selectedThreadId,{...w(e),extraChatPanes:{...e.extraChatPanes,[n]:{...r,messages:[...r.messages,t.message]}}}):e}return t.threadId&&t.threadId!==e.selectedThreadId?e:{...e,messages:[...e.messages,t.message]}}function Le(e,t){if(t.threadId!==e.selectedThreadId)return e;let n=e.messages.some(e=>e.messageId===t.messageId)?e.messages.map(e=>e.messageId===t.messageId?{...e,content:t.content}:e):[...e.messages,{messageId:t.messageId,sender:`agent`,content:t.content,contentType:`markdown`,timestamp:new Date().toISOString(),isThinking:!1}];return{...e,messages:n}}function Re(e,t){if(t.threadId!==e.selectedThreadId)return e;let n=t.paneId??h;if(n!==h){let r=e.extraChatPanes[n];return r?E(e,e.selectedThreadId,{...w(e),extraChatPanes:{...e.extraChatPanes,[n]:{...r,messages:r.messages.map(e=>e.messageId===t.messageId?{...e,checkpointRef:t.checkpointRef}:e)}}}):e}return{...e,messages:e.messages.map(e=>e.messageId===t.messageId?{...e,checkpointRef:t.checkpointRef}:e)}}function ze(e,t){if(!e.threadToolSessions[t.threadId])return e;let{[t.threadId]:n,...r}=e.threadToolSessions;return{...e,threadToolSessions:r}}function Be(e,t){if(!e.threadCreationSummaries[t.threadId])return e;let{[t.threadId]:n,...r}=e.threadCreationSummaries;return{...e,threadCreationSummaries:r}}function Ve(e,t){let n=e.toolCallProgress[t.toolCallId];return{...e,toolCallProgress:{...e.toolCallProgress,[t.toolCallId]:{toolCallId:t.toolCallId,threadId:t.threadId||(n?.threadId??``),toolName:t.toolName??n?.toolName??``,delta:n?.delta??``,partial:n?.partial??{role:`tool`,content:[]},executionOutput:t.executionOutput}}}}function He(e,t){let n=e.toolCallProgress[t.toolCallId],r=n?.executionOutput??``;return{...e,toolCallProgress:{...e.toolCallProgress,[t.toolCallId]:{toolCallId:t.toolCallId,threadId:t.threadId||(n?.threadId??``),toolName:t.toolName??n?.toolName??`agent`,delta:n?.delta??``,partial:n?.partial??{role:`tool`,content:[]},executionOutput:r+t.delta}}}}function Ue(e,t){if(!t.toolCallId)return{...e,toolCallProgress:{}};let{[t.toolCallId]:n,...r}=e.toolCallProgress;return{...e,toolCallProgress:r}}function We(e,t){let{[t.threadId]:n,...r}=e.chatInputDrafts;return{...e,chatInputDrafts:r}}function Ge(e,t){let n=new Set(e.startingNewChatPaneIds);return t.isStarting?n.add(t.paneId):n.delete(t.paneId),{...e,startingNewChatPaneIds:[...n]}}function Ke(e,t){if(e.selectedThreadId===t.threadId&&e.selectedProjectId===t.projectId&&t.initialMessages===void 0)return t.focusInput&&!e.focusChatInput?{...e,focusChatInput:!0}:e;let n=be(e,e.selectedThreadId,t.threadId),r=y(e.threadStreamingStates,t.threadId,h);return{...e,...r,...n,selectedThreadId:t.threadId,selectedProjectId:t.projectId,messages:t.initialMessages??[],messagesLoaded:!1,startingNewChatPaneIds:[],chatHistoryEpoch:e.chatHistoryEpoch+1,primaryConversationId:void 0,focusChatInput:t.focusInput??!1,subagentTranscripts:{}}}function qe(e,t){let n=be(e,e.selectedThreadId,``);return{...e,..._(),...n,selectedThreadId:null,selectedProjectId:t.projectId,messages:[],messagesLoaded:!0,startingNewChatPaneIds:[],chatHistoryEpoch:e.chatHistoryEpoch+1,primaryConversationId:void 0,focusChatInput:t.focusInput??!1,subagentTranscripts:{}}}function Je(e,t){return Fe(e,t)?e:{...e,messages:O(e,t.messages),messagesLoaded:!0}}function Ye(e,t){let n=t.conversationId?.trim()||void 0;return e.primaryConversationId===n?e:{...e,primaryConversationId:n}}function Xe(e,t){return{...e,queuedChatMessages:[...e.queuedChatMessages,t.message]}}function Ze(e,t){return{...e,queuedChatMessages:e.queuedChatMessages.filter(e=>e.id!==t.queuedMessageId)}}function Qe(e,t){let n=t.conversationId?.trim()||void 0;return{...e,messages:O(e,[]),messagesLoaded:!0,chatHistoryEpoch:e.chatHistoryEpoch+1,primaryConversationId:n}}function $e(e,t){return{...e,devServerToolSession:t.session}}function et(e,t){return{...e,threadToolSessions:{...e.threadToolSessions,[t.session.threadId]:t.session}}}function tt(e,t){return{...e,threadCreationSummaries:{...e.threadCreationSummaries,[t.threadId]:t.message}}}function nt(e,t){let n=e.toolCallProgress[t.toolCallId];return{...e,toolCallProgress:{...e.toolCallProgress,[t.toolCallId]:{...n,...t.progress}}}}function k(e,t,n){let r=e.subagentTranscripts[t]??[];return{...e,subagentTranscripts:{...e.subagentTranscripts,[t]:r.concat(n)}}}function rt(e,t){return k(e,t.toolCallId,[t.event])}function it(e,t){return k(e,t.toolCallId,t.events)}function at(e,t){return{...e,pendingChatMessage:t.message}}function ot(e,t){return{...e,pendingChatMessage:null}}function st(e,t){return{...e,chatInputDrafts:{...e.chatInputDrafts,[t.threadId]:t.draft}}}function ct(e,t){return{...e,..._(),selectedThreadId:null,selectedProjectId:null,messages:[],messagesLoaded:!1,startingNewChatPaneIds:[],chatHistoryEpoch:e.chatHistoryEpoch+1,primaryConversationId:void 0,..._e()}}var lt={[m.SetMessages]:Je,[m.SetPrimaryConversationId]:Ye,[m.AddMessage]:Ie,[m.EnqueueChatMessage]:Xe,[m.RemoveQueuedChatMessage]:Ze,[m.ClearMessages]:Qe,[m.UpdateMessage]:Le,[m.UpdateMessageCheckpointRef]:Re,[m.SetDevServerToolSession]:$e,[m.SetThreadToolSession]:et,[m.ClearThreadToolSession]:ze,[m.SetThreadCreationSummary]:tt,[m.ClearThreadCreationSummary]:Be,[m.UpdateToolCallProgress]:nt,[m.UpdateToolExecutionOutput]:Ve,[m.AppendToolExecutionOutput]:He,[m.AppendSubagentEvent]:rt,[m.AppendSubagentEvents]:it,[m.ClearToolCallProgress]:Ue,[m.SetPendingChatMessage]:at,[m.ClearPendingChatMessage]:ot,[m.SetChatInputDraft]:st,[m.ClearChatInputDraft]:We,[m.SetNewChatStarting]:Ge,[m.SelectThread]:Ke,[m.SelectProject]:qe,[m.ClearSelection]:ct};function ut(e,t){let n=lt[t.type];return n?n(e,t):null}var dt=s(`store.project`);function ft(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function pt(e,t){return e.length===t.length&&e.every((e,n)=>e.threadId===t[n]?.threadId&&e.conversationId===t[n]?.conversationId&&e.isAwaitingHuman===t[n]?.isAwaitingHuman)}function mt(e,t,n){return e.some(e=>e.threadId===t&&e.conversationId===n)?e:[...e,{threadId:t,conversationId:n}]}function ht(e,t,n){return e?{id:t,provider:n,name:e.name??t,description:e.description??``,context_length:e.context_length,contextWindow:e.contextWindow,features:e.features,input_modalities:e.input_modalities,max_output:e.max_output,pricing:e.pricing,tarsk_use:e.tarsk_use,coding_index:e.coding_index,supportsImages:e.supportsImages}:{id:t,provider:n,name:t,description:``}}function gt(e,t){switch(t.type){case m.SetProjects:{let n={...e.projectModelSelections};for(let e of t.projects)for(let t of e.threads)t.model&&(n[t.threadId]=ht(n[t.threadId],t.model,t.modelProvider));return{...e,projects:p(e.projects,t.projects),cloneRootPath:t.cloneRootPath===void 0?e.cloneRootPath:t.cloneRootPath,projectModelSelections:n}}case m.SetProjectsLoading:return{...e,projectsLoading:t.projectsLoading};case m.ClearUnreadAutomatedChat:return e.projects.some(e=>e.threads.some(e=>e.threadId===t.threadId&&e.hasUnreadAutomatedChat===!0))?{...e,projects:e.projects.map(e=>({...e,threads:e.threads.map(e=>e.threadId===t.threadId?{...e,hasUnreadAutomatedChat:!1}:e)}))}:e;default:return null}}function _t(e,t){return e?.id===t.id&&e?.provider===t.provider}function vt(e,t){switch(t.type){case m.SetProjectModel:{let n=t.paneId??null,r=e.projectModelSelections[t.threadId],i=n?e.paneModelSelections[n]:void 0,a=e.projects.some(e=>e.threads.some(e=>e.threadId===t.threadId&&e.model===t.model.id&&e.modelProvider===t.model.provider)),o=n===null||_t(i,t.model);return a&&_t(r,t.model)&&o?e:(dt.debug(`Set project model`,{threadId:t.threadId,paneId:t.paneId,model:{id:t.model.id,provider:t.model.provider}}),{...e,projects:e.projects.map(e=>{let n=e.threads.some(e=>e.threadId===t.threadId);return{...e,...t.paneId&&n?{lastSelectedModel:t.model.id,lastSelectedModelProvider:t.model.provider}:{},threads:e.threads.map(e=>e.threadId===t.threadId?{...e,model:t.model.id,modelProvider:t.model.provider}:e)}}),projectModelSelections:{...e.projectModelSelections,[t.threadId]:t.model},paneModelSelections:n?{...e.paneModelSelections,[n]:t.model}:e.paneModelSelections})}default:return null}}function yt(e,t){switch(t.type){case m.SetProcessingThreads:{let n=t.processingRuns??e.processingRuns.filter(e=>t.threadIds.includes(e.threadId));return ft(e.processingThreadIds,t.threadIds)&&pt(e.processingRuns,n)?e:{...e,processingThreadIds:t.threadIds,processingRuns:n}}case m.AddProcessingThread:{let n=e.processingThreadIds.includes(t.threadId)?e.processingThreadIds:[...e.processingThreadIds,t.threadId],r=t.conversationId?.trim(),i=r?mt(e.processingRuns,t.threadId,r):e.processingRuns;return n===e.processingThreadIds&&i===e.processingRuns?e:{...e,processingThreadIds:n,processingRuns:i}}case m.RemoveProcessingThread:return{...e,processingThreadIds:e.processingThreadIds.filter(e=>e!==t.threadId),processingRuns:e.processingRuns.filter(e=>e.threadId!==t.threadId)};default:return null}}function bt(e,t){switch(t.type){case m.AddCreatingProject:return{...e,projects:[...e.projects,{projectId:t.projectId,name:t.projectName,gitUrl:t.gitUrl,type:t.projectType,threads:[{threadId:t.threadId,title:`thread-1`,path:``,currentBranch:``}]}]};case m.AddCreatingThread:return{...e,projects:e.projects.map(e=>e.projectId===t.projectId?{...e,threads:[...e.threads,{threadId:t.threadId,title:t.title,path:``,currentBranch:``}]}:e)};case m.RemoveCreatingProject:return{...e,projects:e.projects.filter(e=>e.projectId!==t.projectId)};default:return null}}function xt(e,t){switch(t.type){case m.AddDeletingThread:return{...e,deletingThreadIds:e.deletingThreadIds.includes(t.threadId)?e.deletingThreadIds:[...e.deletingThreadIds,t.threadId]};case m.RemoveDeletingThread:return{...e,deletingThreadIds:e.deletingThreadIds.filter(e=>e!==t.threadId)};case m.AddDeletingProject:return{...e,deletingProjectIds:e.deletingProjectIds.includes(t.projectId)?e.deletingProjectIds:[...e.deletingProjectIds,t.projectId]};case m.RemoveDeletingProject:return{...e,deletingProjectIds:e.deletingProjectIds.filter(e=>e!==t.projectId)};default:return null}}function St(e,t){switch(t.type){case m.RemoveCreatingThread:return{...e,projects:e.projects.map(e=>e.projectId===t.projectId?{...e,threads:e.threads.filter(e=>e.threadId!==t.threadId)}:e)};case m.RemoveThread:return{...e,projects:e.projects.map(e=>e.projectId===t.projectId?{...e,threads:e.threads.filter(e=>e.threadId!==t.threadId)}:e)};case m.UpdateThreadTitle:return{...e,projects:e.projects.map(e=>e.projectId===t.projectId?{...e,threads:e.threads.map(e=>e.threadId===t.threadId?{...e,title:t.title}:e)}:e)};case m.UpdateChatTitle:return{...e,projects:e.projects.map(e=>e.projectId===t.projectId?{...e,threads:e.threads.map(e=>e.threadId===t.threadId?{...e,chatTitles:{...e.chatTitles,[t.paneId]:t.title}}:e)}:e)};default:return null}}function Ct(e,t){switch(t.type){case m.MarkThreadCompleted:return{...e,completedThreadIds:e.completedThreadIds.includes(t.threadId)?e.completedThreadIds:[...e.completedThreadIds,t.threadId],completedThreadPaneIds:t.paneId===void 0?e.completedThreadPaneIds:{...e.completedThreadPaneIds,[t.threadId]:t.paneId},completedPaneIds:t.paneId===void 0||t.paneId===e.focusedPane||e.completedPaneIds.includes(t.paneId)?e.completedPaneIds:[...e.completedPaneIds,t.paneId]};case m.ClearThreadCompleted:return{...e,completedThreadIds:e.completedThreadIds.filter(e=>e!==t.threadId)};case m.ClearPaneCompleted:{let n=Object.entries(e.completedThreadPaneIds).filter(([,e])=>e===t.paneId).map(([e])=>e);return{...e,completedThreadIds:e.completedThreadIds.filter(e=>!n.includes(e)),completedThreadPaneIds:Object.fromEntries(Object.entries(e.completedThreadPaneIds).filter(([,e])=>e!==t.paneId)),completedPaneIds:e.completedPaneIds.filter(e=>e!==t.paneId)}}default:return null}}function wt(e,t){return gt(e,t)??vt(e,t)??yt(e,t)??bt(e,t)??xt(e,t)??St(e,t)??Ct(e,t)}function A(e){return e.type===`tool-call-group`}var Tt=91;function Et(e){return e>=65&&e<=90||e>=97&&e<=122}function Dt(e,t){let n=e.length-1;for(;n>=t&&Et(e.charCodeAt(n));)n--;return n>=t&&e.charCodeAt(n)===Tt?n:-1}function Ot(e,t){let n=t!==void 0&&t.labelResumeOffset<=e.length,r=n?t.labelResumeOffset:0,i=n?t.label:void 0,a=n?t.contentStart:0,o=-1,s=-1,c=/\[([A-Za-z]+)\]\s*/g;c.lastIndex=r;for(let t=c.exec(e);t!==null;t=c.exec(e))i=t[1],o=t.index,s=t.index+t[0].length,a=s;let l=e.length;s===e.length&&(l=o);let u=Dt(e,Math.max(r,s));return u!==-1&&(l=Math.min(l,u)),{label:i,contentStart:a,labelResumeOffset:l}}function kt(e,t,n,r){try{let i=JSON.parse(e.slice(t,n+1));if(Array.isArray(i)){for(let e of i)if(e&&typeof e==`object`&&`type`in e){let t=e.type;(t===`tool-result`||t===`tool_use`)&&r.push(e)}}return!0}catch{return!1}}function At(e,t){let n=t!==void 0&&t.committedPos<=e.length,r=n?t.committedBlocks.slice():[],i=n?t.committedPos:0,a=i,o=r.length,s=n&&t.openArray&&t.openArray.start>=i&&t.openArray.offset<=e.length?t.openArray:void 0;for(;i<e.length;){let t=s?s.start:e.indexOf(`[`,i);if(t===-1){let t=e.slice(i).trim();t&&r.push({type:`reasoning`,text:t});break}let n=e.slice(i,t).trim();n&&r.push({type:`reasoning`,text:n});let c=s??Nt(t),l=Pt(e,c);if(l===-1){s=c;let n=e.slice(t).trim();n&&r.push({type:`reasoning`,text:n});break}if(s=void 0,!kt(e,t,l,r)){let n=e.slice(t,l+1).trim();n&&r.push({type:`reasoning`,text:n})}i=l+1,a=i,o=r.length}return{blocks:r,committedBlocks:o===r.length?r:r.slice(0,o),committedPos:a,openArray:s}}function jt(e,t){if(!e||typeof e!=`string`)return{blocks:null,scan:void 0};let n=e.trim();if(!n)return{blocks:null,scan:void 0};let r=Ot(n,t);if(r.label){let e=n.slice(r.contentStart);if(e)return{blocks:[{type:`reasoning`,text:e,label:r.label}],scan:{...r,committedBlocks:t?.committedBlocks??[],committedPos:t?.committedPos??0,openArray:t?.openArray}}}let{blocks:i,committedBlocks:a,committedPos:o,openArray:s}=At(n,t);return{blocks:i.length>0?i:null,scan:{...r,committedBlocks:a,committedPos:o,openArray:s}}}function Mt(e){return jt(e).blocks}function Nt(e){return{start:e,offset:e,depth:0,inString:!1,escape:!1}}function Pt(e,t){let{depth:n,inString:r,escape:i}=t,a=t.offset;for(;a<e.length;a++){let o=e[a];if(r){i?i=!1:o===`\\`?i=!0:o===`"`&&(r=!1);continue}if(o===`"`){r=!0;continue}if(o===`[`)n++;else if(o===`]`&&(n--,n===0))return t.offset=a+1,t.depth=0,t.inString=!1,t.escape=!1,a}return t.offset=a,t.depth=n,t.inString=r,t.escape=i,-1}function Ft(e,t){return Pt(e,Nt(t))}function It(e,t=0){let n=[],r=t;for(;r<e.length;){for(;r<e.length&&/\s/.test(e.charAt(r));)r++;if(r>=e.length||e.charAt(r)!==`[`)break;let t=Ft(e,r);if(t===-1)break;try{let i=JSON.parse(e.slice(r,t+1));if(!Array.isArray(i))break;n.push(...j(i))}catch{break}r=t+1}return n.length===0?null:{blocks:n,nextIndex:r}}function j(e){return e.map(e=>{if(typeof e==`object`&&e&&!(`type`in e)){let t=e;if(t.reasoning)return{type:`reasoning`,text:typeof t.reasoning==`string`?t.reasoning:JSON.stringify(t.reasoning)};let n=t.text??t.content??t.answer;if(n)return{type:`text`,text:typeof n==`string`?n:JSON.stringify(n)}}return e})}function Lt(e){return Array.isArray(e)?e.filter(e=>typeof e==`object`&&!!e&&typeof e.label==`string`&&typeof e.pattern==`string`&&(e.scope===`session`||e.scope===`project`)):[]}function Rt(e){if(e.type!==`long_running_confirmation`||typeof e.prompt!=`object`||e.prompt===null||typeof e.prompt.question!=`string`||!Array.isArray(e.prompt.options))return[];let t=e.prompt;return[{type:`long_running_confirmation`,prompt:{toolCallId:typeof t.toolCallId==`string`?t.toolCallId:void 0,question:t.question,options:t.options.filter(e=>typeof e==`string`),context:typeof t.context==`string`?t.context:void 0}}]}function zt(e){if(e.type!==`shell_permission`||typeof e.shellPermission!=`object`||e.shellPermission===null||typeof e.shellPermission.command!=`string`)return[];let t=e.shellPermission;return[{type:`shell_permission`,prompt:{toolCallId:typeof t.toolCallId==`string`?t.toolCallId:`shell-permission`,command:t.command,source:t.source===`bash`||t.source===`skill_script`||t.source===`browser_js`?t.source:`bash`,wildcardOptions:Lt(t.wildcardOptions)}}]}function Bt(e){if(e.type!==`seatbelt_escalation`||typeof e.seatbeltEscalation!=`object`||e.seatbeltEscalation===null)return[];let t=e.seatbeltEscalation;return typeof t.command==`string`?[{type:`seatbelt_escalation`,prompt:{toolCallId:typeof t.toolCallId==`string`?t.toolCallId:`seatbelt-escalation`,command:t.command,projectId:typeof t.projectId==`string`?t.projectId:``,scopes:[`once`,`project`,`session`]}}]:[]}function Vt(e){if(e.type!==`web_fetch_permission`||typeof e.webFetchPermission!=`object`||e.webFetchPermission===null||typeof e.webFetchPermission.hostname!=`string`)return[];let t=e.webFetchPermission;return[{type:`web_fetch_permission`,prompt:{toolCallId:typeof t.toolCallId==`string`?t.toolCallId:`web-fetch-permission`,hostname:t.hostname,url:typeof t.url==`string`?t.url:``,wildcardOptions:Lt(t.wildcardOptions)}}]}function Ht(e){let t=[...Rt(e),...zt(e),...Bt(e),...Vt(e)];if(t.length>0)return t;e.reasoning&&typeof e.reasoning==`string`&&t.push({type:`reasoning`,text:e.reasoning});let n=(typeof e.text==`string`?e.text:null)??(typeof e.content==`string`?e.content:null)??(typeof e.answer==`string`?e.answer:null);return n&&t.push({type:`text`,text:n}),t.length===0&&Object.keys(e).length>0&&t.push({type:`text`,text:JSON.stringify(e,null,2)}),t}function Ut(e){return N(e)?.some(e=>e.type===`tool_use`||e.type===`tool-result`)??!1}var M=/^```+|^~~~+/;function Wt(e){let t=e.indexOf(`{`),n=e.indexOf(`[`);return t===-1?n:n===-1?t:Math.min(t,n)}function Gt(e,t){if(t&&t.fixedIndex>=0)return{index:t.fixedIndex,scan:t};let n=t?.resumeOffset??0;n>e.length&&(n=0);let r=n===0?!1:t?.inFence??!1,i=n;for(;;){let t=e.indexOf(`
|
|
2
|
+
`,i);if(t===-1){let t=e.slice(i),n=M.test(t.trimStart()),a=r||n?-1:Wt(t);return{index:a===-1?-1:i+a,scan:{fixedIndex:-1,resumeOffset:i,inFence:r}}}let n=e.slice(i,t);if(M.test(n.trimStart()))r=!r;else if(!r){let e=Wt(n);if(e!==-1){let t=i+e;return{index:t,scan:{fixedIndex:t,resumeOffset:i,inFence:r}}}}i=t+1}}function Kt(e){return Gt(e).index}function qt(e){try{let t=JSON.parse(e);return Array.isArray(t)?j(t):typeof t==`object`&&t?Ht(t):null}catch{return e.startsWith(`[`)?Jt(e):null}}function Jt(e){let t=It(e);if(!t)return null;let n=e.slice(t.nextIndex).trim();return n?[...t.blocks,{type:`text`,text:n}]:t.blocks}function Yt(e){let t=Math.max(e.lastIndexOf(`]`),e.lastIndexOf(`}`));if(t===-1)return null;let n=e.substring(0,t+1);try{let r=JSON.parse(n),i=Array.isArray(r)?j(r):Ht(r),a=e.substring(t+1).trim();return a&&i.push({type:`text`,text:a}),i}catch{return null}}function N(e){return e?Xt(e,Kt(e)):null}function Xt(e,t){return e?en(e,e.trim(),t):null}var Zt={failedLength:-1,failedJsonStart:-1};function Qt(e,t){return e.indexOf(`]`,t)!==-1||e.indexOf(`}`,t)!==-1}function $t(e,t,n){let r=e.trim();if(n&&n.failedLength>=0&&n.failedJsonStart===t&&n.failedLength<=r.length&&!Qt(r,n.failedLength))return{blocks:null,scan:n};let i=e?en(e,r,t):null;return{blocks:i,scan:i===null?{failedLength:r.length,failedJsonStart:t}:Zt}}function en(e,t,n){if(t.startsWith(`{`)||t.startsWith(`[`)){let e=qt(t);if(e)return e}let r=[];if(n===-1)return null;let i=e.slice(0,n).trim();i&&r.push({type:`text`,text:i});let a=e.slice(n),o=Jt(a);if(o)return r.push(...o),r;let s=Yt(a);return s?(r.push(...s),r):null}function P(e){return e.type===`tool_use`}function F(e){return e.type===`tool-result`}function tn(e){return e.type===`text`}function I(e){return typeof e==`string`?e.replace(/\\n/g,`
|
|
3
|
+
`).replace(/✅/g,`✓`):``}function nn(e){let t=0;for(let n=e.length-1;n>=0;n--){let r=e[n];if(!r||!tn(r))break;t+=1}return t}function rn(e){let t=nn(e);return t===0?null:e.slice(e.length-t).filter(tn).map(e=>I(e.text).trim()).filter(e=>e.length>0).join(`
|
|
4
|
+
|
|
5
|
+
`).trim()||null}function an(e){let t=N(e);return t?rn(t):I(e).trim()||null}var L=new WeakMap,on=new WeakMap;function sn(e,t){let n=e.blocks.length;e.blocks.push(t),e.serializedBlocks.push(JSON.stringify(t)),t.type===`tool_use`?e.toolUseIndex.has(t.id)||e.toolUseIndex.set(t.id,n):t.type===`tool-result`&&(e.toolResultIndex.has(t.toolCallId)||e.toolResultIndex.set(t.toolCallId,n))}function cn(e){return`[${e.join(`,`)}]`}function R(e,t){let n={blocks:e?e.blocks.slice():[],serializedBlocks:e?e.serializedBlocks.slice():[],toolUseIndex:e?new Map(e.toolUseIndex):new Map,toolResultIndex:e?new Map(e.toolResultIndex):new Map,serialized:``};for(let e of t){let t=e.type===`tool_use`?n.toolUseIndex.get(e.id):e.type===`tool-result`?n.toolResultIndex.get(e.toolCallId):void 0;t===void 0?sn(n,e):(n.blocks[t]=e,n.serializedBlocks[t]=JSON.stringify(e))}return n.serialized=cn(n.serializedBlocks),n}function ln(e){return R(void 0,e)}function un(e){let t=on.get(e);if(!(!t||e.chunks.length!==1||e.chunks[0]!==t.serialized))return t}function dn(e){let t={type:`content`,chunks:[e.serialized]};return on.set(t,e),L.set(t,{chunks:t.chunks,chunkCount:1,text:e.serialized,scan:void 0,parseScan:void 0,thinkingScan:void 0,blocks:e.blocks}),t}function fn(e,t){let n={type:`content`,chunks:[e]};return L.set(n,{chunks:n.chunks,chunkCount:1,text:e,scan:void 0,parseScan:void 0,thinkingScan:void 0,blocks:t??(e.trim()?[{type:`text`,text:e}]:[])}),n}function pn(e,t,n){let r=e[e.length-1];return r?.type===t?(r.chunks.push(n),[...e]):[...e,{type:t,chunks:[n]}]}function mn(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n){if(n.type===`content`)return t;if(n.type!==`thinking`)return-1}}return-1}function hn(e){for(let t=e.length-1;t>=0;t--)if(e[t]?.type===`content`)return t;return-1}function z(e){return e.some(e=>e.type===`tool_use`||e.type===`tool-result`)}function gn(e){let t=new Set,n=new Set,r=[];for(let i=e.length-1;i>=0;i--){let a=e[i];if(a){if(a.type===`tool_use`){if(t.has(a.id))continue;t.add(a.id),r.push(a);continue}if(a.type===`tool-result`){if(n.has(a.toolCallId))continue;n.add(a.toolCallId),r.push(a);continue}r.push(a)}}return r.reverse(),r}function _n(e,t){let n=hn(e),r=N(t);if(n===-1)return[...e,fn(t,r)];let i=e[n],a;if(i?.type===`content`&&r&&z(r)){let e=un(i),t=e?.blocks??B(i);z(t)&&(a=dn(R(e??ln(t),r)))}return[...e.slice(0,n),a??fn(t,r),...e.slice(n+1)]}function vn(e,t){let n=N(t);if(!n||!z(n))return pn(e,`content`,t);let r=mn(e),i;if(r>=0){let t=e[r];t?.type===`content`&&(i=un(t)??ln(B(t)))}let a=dn(R(i,n));return r>=0?[...e.slice(0,r),a,...e.slice(r+1)]:[...e,a]}function yn(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.type===`content`)return n.chunks.join(``)}return``}function bn(e,t){return[...e,{type:`long_running_confirmation`,prompt:t}]}function xn(e,t){return[...e,{type:`shell_permission`,prompt:t}]}function Sn(e,t){return[...e,{type:`seatbelt_escalation`,prompt:t}]}function Cn(e,t){return[...e,{type:`web_fetch_permission`,prompt:t}]}function wn(e,t,n){if(t.length<n)return!1;for(let r=0;r<n;r++)if(e[r]!==t[r])return!1;return!0}function B(e){let t=L.get(e),n=t?wn(t.chunks,e.chunks,t.chunkCount):!1;if(t&&n&&e.chunks.length===t.chunkCount)return t.blocks;let r=t!==void 0&&n,i=r?t.text+e.chunks.slice(t.chunkCount).join(``):e.chunks.join(``),a,o,s,c;if(e.type===`thinking`){let e=jt(i,r?t.thinkingScan:void 0);c=e.scan,a=e.blocks??[]}else{let e=Gt(i,r?t.scan:void 0);o=e.scan;let n=$t(i,e.index,r?t.parseScan:void 0);s=n.scan,a=n.blocks??(i.trim()?[{type:`text`,text:i}]:[])}return L.set(e,{chunks:e.chunks,chunkCount:e.chunks.length,text:i,scan:o,parseScan:s,thinkingScan:c,blocks:a}),a}function V(e){let t=[];for(let n of e){if(n.type===`long_running_confirmation`){t.push({type:`long_running_confirmation`,prompt:n.prompt});continue}if(n.type===`shell_permission`){t.push({type:`shell_permission`,prompt:n.prompt});continue}if(n.type===`seatbelt_escalation`){t.push({type:`seatbelt_escalation`,prompt:n.prompt});continue}if(n.type===`web_fetch_permission`){t.push({type:`web_fetch_permission`,prompt:n.prompt});continue}t.push(...B(n))}return gn(t)}function H(e){return e.type===`thinking-group`}function U(e,t=!1){let n=[],r=[],i,a=()=>{r.length>0&&(n.push({type:`thinking-group`,text:r.join(`
|
|
6
|
+
|
|
7
|
+
`),label:i,isCurrentlyStreaming:!1}),r=[],i=void 0)};for(let t of e)if(t.type===`reasoning`&&`text`in t){let e=t;r.push(e.text),e.label&&(i=e.label)}else a(),n.push(t);if(a(),t&&n.length>0){let e=n[n.length-1];e.type===`thinking-group`&&(e.isCurrentlyStreaming=!0)}return n}function Tn(e,t){let n=e>0?` (${d(e)} token${e===1?``:`s`})`:``;return t===`MCP`?`Connecting MCP servers...${n}`:`Thinking${n}`}function En(e){let t=U(e,!0),n=t[t.length-1];return!n||!H(n)||!n.isCurrentlyStreaming?null:Tn(r(n.text),n.label)}var Dn=new Set([`todo`]),W=new Set([`todo`,`ask_user`]),On=new Map(i.map((e,t)=>[e.id,t]));function kn(e){if(H(e))return!1;switch(e.type){case`text`:return e.text.trim().length>0;case`shell_permission`:case`seatbelt_escalation`:case`web_fetch_permission`:case`long_running_confirmation`:return!0;case`tool_use`:return e.name===`ask_user`;case`tool-result`:return!1}}function An(e){return H(e)?!1:e.type===`tool_use`?!Dn.has(e.name):e.type===`tool-result`?!W.has(e.toolName):!1}function G(e){let t=[],n=[];function r(){n.some(An)?t.push({type:`tool-call-group`,items:n}):t.push(...n),n=[]}for(let i of e)kn(i)?(n.length>0&&r(),t.push(i)):n.push(i);return n.length>0&&r(),t}function K(e){return e.length===0?0:e.split(`
|
|
8
|
+
`).length}function jn(e){let t=0,n=0;if(Array.isArray(e.replacements)){for(let r of e.replacements)if(r&&typeof r==`object`){let e=r;typeof e.newText==`string`&&(t+=K(e.newText)),typeof e.oldText==`string`&&(n+=K(e.oldText))}return{added:t,removed:n}}return typeof e.newText==`string`&&(t+=K(e.newText)),typeof e.oldText==`string`&&(n+=K(e.oldText)),{added:t,removed:n}}var Mn=new WeakMap;function Nn(e){let t=Mn.get(e);if(t&&t.blockCount===e.length)return t;let n={blockCount:e.length,toolUsesById:new Map,resultToolCallIds:new Set,permissionCallIds:new Set};for(let t of e)P(t)?n.toolUsesById.has(t.id)||n.toolUsesById.set(t.id,t):F(t)?W.has(t.toolName)||n.resultToolCallIds.add(t.toolCallId):(t.type===`shell_permission`||t.type===`web_fetch_permission`||t.type===`long_running_confirmation`&&t.prompt.toolCallId)&&n.permissionCallIds.add(t.prompt.toolCallId);return Mn.set(e,n),n}function Pn(e){let t=typeof e.path==`string`&&e.path?e.path:null;return t?t.split(`/`).pop()??t:null}function Fn(e){let t=typeof e.description==`string`?e.description.trim():``;return t?`${t}…`:null}function In(e){return(typeof e.intention==`string`?e.intention.trim():``)||null}function Ln(e){let t=In(e);return t?`${t}…`:null}function Rn(e){let t=e.toLowerCase();return t===`run_js`||t===`run_web_worker`}function zn(e){return u(e.name,e.input)?c(`subagents`):a(e.name)}function Bn(e){return e.filter(e=>e===`subagents`).length}function Vn(e,t){let n=e[0];return c(n!==void 0&&e.every(e=>e===n)?n:`other`).formatNeutral(t)}function q(e){return e.charAt(0).toUpperCase()+e.slice(1)}function Hn(){return{categoryCounts:new Map,editedPaths:new Set,completedCommandBlocks:[],linesAdded:0,linesRemoved:0}}function Un(e){let t=[],n=new Map;for(let r of e)H(r)||(P(r)?t.push(r):F(r)&&n.set(r.toolCallId,r));return{toolUses:t,groupResults:n,groupToolUseIds:new Set(t.map(e=>e.id))}}function Wn(e,t){let n=zn(e);t.categoryCounts.set(n.id,(t.categoryCounts.get(n.id)??0)+1),n.id===`commands`&&t.completedCommandBlocks.push(e);let r=e.name.toLowerCase();if(r===`edit`||r===`write`){let n=typeof e.input.path==`string`&&e.input.path?e.input.path:e.id;if(t.editedPaths.add(n),r===`edit`){let n=jn(e.input);t.linesAdded+=n.added,t.linesRemoved+=n.removed}else typeof e.input.content==`string`&&(t.linesAdded+=K(e.input.content))}}function Gn(e,t,n,r,i){let a=[],o=0,s=null;for(let c of e){if(Dn.has(c.name))continue;let e=t.has(c.id),l=r?.has(c.id)||n.resultToolCallIds.has(c.id);e?Wn(c,i):l||(o+=1,a.push(zn(c).id),s=c)}return{pendingCount:o,pendingCategoryIds:a,lastPending:s}}function Kn(e,t,n,r){let i=0;for(let a of e.values())if(!W.has(a.toolName)&&(a.isError===!0&&(i+=1),!t.has(a.toolCallId))){let e=n.toolUsesById.get(a.toolCallId);e?Wn(e,r):r.categoryCounts.set(`other`,(r.categoryCounts.get(`other`)??0)+1)}return i}function qn(e,t){let n=[];for(let[r,i]of e)r===`other`||i===0||n.push({id:r,count:r===`files`?t.size:i});return n.sort((e,t)=>(On.get(e.id)??2**53-1)-(On.get(t.id)??2**53-1)),n}function Jn(e,t,n,r){if(!e)return null;if(r.has(e.id))return`Awaiting permission · ${Vn(n,t)}`;if(u(e.name,e.input))return Fn(e.input)??`${e.activeDisplayName??l(e.name)}…`;if(Rn(e.name))return Ln(e.input)??`${e.activeDisplayName??l(e.name)}…`;let i=e.activeDisplayName??l(e.name),a=Pn(e.input);return a?`${i} ${a}…`:`${i}…`}function Yn(e){if(e.length!==1)return null;let t=e[0];return t&&Rn(t.name)?In(t.input):null}function Xn(e){return e.toLowerCase()===`bash`}var Zn=2e3,Qn=/(?<!\d)(\d{1,3})(?:\.\d+)?%(?!\d)/g;function $n(e){if(!e)return null;let t=e.length>Zn?e.slice(-2e3):e,n=null;for(let e of t.matchAll(Qn)){let t=Number(e[1]);t>=0&&t<=100&&(n=t)}return n}function J(e,t,n){let{toolUses:r,groupResults:i,groupToolUseIds:a}=Un(e),o=Nn(t),s=o.permissionCallIds,c=Hn(),{pendingCount:l,pendingCategoryIds:u,lastPending:d}=Gn(r,i,o,n,c),f=Kn(i,a,o,c),p=qn(c.categoryCounts,c.editedPaths),m=c.editedPaths.size,h=Jn(d,l,u,s),ee=Yn(c.completedCommandBlocks),te=d&&Xn(d.name)&&!s.has(d.id)?d.id:null;return{categories:p,distinctFiles:m,otherCount:c.categoryCounts.get(`other`)??0,pendingCount:l,pendingCategoryIds:u,linesAdded:c.linesAdded,linesRemoved:c.linesRemoved,errorCount:f,activeLabel:h,pendingCommandToolId:te,singleCommandTitle:ee}}function er(e,t){let n=e.categories.slice(0,3),r=e.categories.slice(3).reduce((e,t)=>e+t.count,0),i=e.otherCount+r,a=n.map(t=>t.id===`commands`&&t.count===1&&e.singleCommandTitle?e.singleCommandTitle:c(t.id).formatPhrase(t.count)),s=``;a.length>0?(s=a.join(`, `),i>0&&(s+=`, and ${i} more`),s=q(s)):i>0&&(s=q(c(`other`).formatPhrase(i)));let l=Bn(e.pendingCategoryIds);if(l>0){let e=o(l);s=s?`${s} · ${e}`:q(e)}let u=t.showActive&&e.activeLabel!==null,d=e.pendingCount-l;if(!u&&d>0){let t=Vn(e.pendingCategoryIds.filter(e=>e!==`subagents`),d);s=s?`${s} · ${t}`:q(t)}let f=e.linesAdded+e.linesRemoved>0?`+${e.linesAdded} −${e.linesRemoved}`:null,p=t.runningCommandProgress,m=u&&p!=null&&e.pendingCommandToolId!==null?`Running ${p}%…`:u?e.activeLabel:null;return{text:s,lineStats:f,errorCount:e.errorCount,activeLabel:m}}function tr(e){let t=G(U(e,!0));for(let n=t.length-1;n>=0;n--){let r=t[n];if(!A(r))continue;let i=J(r.items,e);if(i.activeLabel===null)continue;if(i.pendingCommandToolId===null)return null;let a=r.items.find(e=>e.type===`tool_use`&&e.id===i.pendingCommandToolId)?.input.command;return typeof a==`string`?{toolCallId:i.pendingCommandToolId,command:a}:null}return null}function nr(e,t){let n=G(U(e,!0));for(let r=n.length-1;r>=0;r--){let i=n[r];if(!A(i))continue;let a=er(J(i.items,e),{showActive:!0,runningCommandProgress:t});if(a.activeLabel!==null)return a.activeLabel}return null}function rr(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.type===`long_running_confirmation`||n.type===`shell_permission`||n.type===`web_fetch_permission`)return t}return-1}function ir(e){return e.type===`content`||e.type===`thinking`?e.chunks.some(e=>e.trim().length>0):!1}function ar(e){let t=V(e),n=t.some(e=>P(e)&&e.name===`ask_user`),r=t.some(e=>F(e)&&e.toolName===`ask_user`);if(n&&!r)return!0;let i=rr(e);return i===-1?!1:!e.slice(i+1).some(ir)}function or(e){let t=V(e);return t.length===0?`...`:t.length===1&&t[0]?.type===`text`&&`text`in t[0]?t[0].text:JSON.stringify(t)}var sr=5e3;function cr(){return{scan:{scannedText:``,processedOffset:0,inFence:!1,boundaryEnd:0},pendingStartedAt:null,revealed:!1,pendingText:``}}function lr(e,t){t.startsWith(e.scannedText)||(e.scannedText=``,e.processedOffset=0,e.inFence=!1,e.boundaryEnd=0);let n=e.processedOffset;for(;;){let r=t.indexOf(`
|
|
9
|
+
`,n);if(r===-1)break;let i=t.slice(n,r);M.test(i.trimStart())?e.inFence=!e.inFence:!e.inFence&&i.trim()===``&&(e.boundaryEnd=r+1),n=r+1}e.processedOffset=n,e.scannedText=t}function ur(e,t,n){lr(e.scan,t);let r=t.slice(e.scan.boundaryEnd),i=t.slice(0,e.scan.boundaryEnd);return r===``?(e.pendingStartedAt=null,e.revealed=!1):e.pendingText!==``&&r.startsWith(e.pendingText)||(e.pendingStartedAt=n,e.revealed=!1),e.pendingText=r,!e.revealed&&e.pendingStartedAt!==null&&n-e.pendingStartedAt>=5e3&&(e.revealed=!0),{committedText:i,pendingText:r,revealed:e.revealed}}function dr(e,t){switch(t.type){case m.SetStreaming:{let n=b(e,t),r=x(e,t);return S(e,n,r,{...y(e.threadStreamingStates,n,r),isStreaming:t.isStreaming})}case m.AppendStreamContent:{let n=b(e,t),r=x(e,t),i=y(e.threadStreamingStates,n,r);return S(e,n,r,{...i,streamingContent:i.streamingContent+t.content})}case m.SetStreamContent:{let n=b(e,t),r=x(e,t),i=y(e.threadStreamingStates,n,r),a=_n(i.streamingSegments,t.content);return S(e,n,r,{...i,streamingContent:t.content,streamingSegments:a})}case m.AppendStreamThinking:{let n=b(e,t),r=x(e,t),i=y(e.threadStreamingStates,n,r);return S(e,n,r,{...i,streamingThinking:i.streamingThinking+t.content})}case m.IncrementStreamEventCount:{let n=b(e,t),r=x(e,t),i=y(e.threadStreamingStates,n,r);return S(e,n,r,{...i,streamingEventCount:i.streamingEventCount+1})}case m.AppendStreamChunk:{let n=b(e,t),r=x(e,t),i=y(e.threadStreamingStates,n,r);return S(e,n,r,{...i,streamingSegments:t.segments,streamingContent:t.chunkType===`content`?i.streamingContent+t.content:i.streamingContent,streamingThinking:t.chunkType===`thinking`?i.streamingThinking+t.content:i.streamingThinking})}case m.SetStreamModel:{let n=b(e,t),r=x(e,t);return S(e,n,r,{...y(e.threadStreamingStates,n,r),streamingModel:t.model})}case m.SetStreamAgentMode:{let n=b(e,t),r=x(e,t);return S(e,n,r,{...y(e.threadStreamingStates,n,r),streamingAgentMode:t.mode})}case m.SetContextUsage:{let n=b(e,t),r=x(e,t);return S(e,n,r,{...y(e.threadStreamingStates,n,r),contextUsage:t.contextUsage})}case m.ResetStream:return S(e,b(e,t),x(e,t),_(),!0);case m.StopStream:{let n=b(e,t),r=x(e,t);return S(e,n,r,{...y(e.threadStreamingStates,n,r),isStreaming:!1})}default:return null}}function Y(e,t){return e.terminalStates[t]??ge()}function fr(e,t){switch(t.type){case m.AppendCommandOutput:return{...e,commandOutput:e.commandOutput+t.content};case m.SetRunningCommand:return{...e,isRunningCommand:t.isRunning};case m.ClearCommandOutput:return{...e,commandOutput:``};case m.ToggleTerminal:{let n=Y(e,t.threadId);return{...e,terminalStates:{...e.terminalStates,[t.threadId]:{...n,open:!n.open}}}}case m.SetTerminalOpen:{let n=t.threadId??`default`,r=Y(e,n);return{...e,terminalStates:{...e.terminalStates,[n]:{...r,open:t.open}}}}case m.QueueTerminalCommand:{let n=Y(e,t.threadId);return{...e,terminalStates:{...e.terminalStates,[t.threadId]:{...n,queuedCommand:t.command,queuedRelativeFolder:t.relativeFolder??null,open:!0}}}}case m.ClearQueuedTerminalCommand:{let n=Y(e,t.threadId);return{...e,terminalStates:{...e.terminalStates,[t.threadId]:{...n,queuedCommand:null}}}}case m.AppendTerminalLine:{let n=t.threadId??`default`,r=Y(e,n);return{...e,terminalStates:{...e.terminalStates,[n]:{...r,outputLines:[...r.outputLines,t.line]}}}}case m.ClearTerminalOutput:{let n=t.threadId??`default`,r=Y(e,n);return{...e,terminalStates:{...e.terminalStates,[n]:{...r,outputLines:[]}}}}case m.SetTerminalHeight:{let n=Y(e,t.threadId);return{...e,terminalStates:{...e.terminalStates,[t.threadId]:{...n,height:t.height}}}}case m.SetTerminalCwd:{let n=Y(e,t.threadId);return{...e,terminalStates:{...e.terminalStates,[t.threadId]:{...n,cwd:t.cwd}}}}case m.SetTerminalRunning:{let n=Y(e,t.threadId);return{...e,terminalStates:{...e.terminalStates,[t.threadId]:{...n,isRunning:t.isRunning}}}}case m.SetTerminalHistory:{let n=Y(e,t.threadId);return{...e,terminalStates:{...e.terminalStates,[t.threadId]:{...n,history:t.history}}}}case m.SetTerminalHistoryIndex:{let n=Y(e,t.threadId);return{...e,terminalStates:{...e.terminalStates,[t.threadId]:{...n,historyIndex:t.index}}}}default:return null}}function pr(e,t){switch(t.type){case m.ToggleSidebar:return{...e,sidebarOpen:!e.sidebarOpen};case m.OpenSidebar:return e.sidebarOpen?e:{...e,sidebarOpen:!0};case m.CloseSidebar:return e.sidebarOpen?{...e,sidebarOpen:!1}:e;case m.OpenProjectPanel:return{...e,projectPanelView:`actions`,projectPanelProjectId:t.projectId};case m.CloseProjectPanel:return{...e,projectPanelView:`projects`,projectPanelProjectId:null};case m.SetCreatingProject:return{...e,isCreatingProject:t.isCreating};case m.SetGitAuthRequest:return{...e,gitAuthRequest:t.request};case m.ConfigUpdated:return{...e,configUpdatedAt:Date.now()};case m.FocusChatInput:return{...e,focusChatInput:!0};case m.ClearFocusChatInput:return{...e,focusChatInput:!1};case m.SetDiffComments:return{...e,diffComments:{...e.diffComments,[t.threadId]:t.comments}};default:return null}}var mr=[dr,re,ut,Pe,wt,fr,pr];function hr(e,t){for(let n of mr){let r=n(e,t);if(r!==null)return r}return e}var gr=new Set([m.AppendStreamChunk,m.IncrementStreamEventCount,m.SetStreamModel,m.AppendStreamContent,m.AppendStreamThinking,m.SetStreamContent,m.AppendSubagentEvent,m.AppendToolExecutionOutput,m.UpdateToolCallProgress,m.UpdateToolExecutionOutput]);function X(e){return`${`threadId`in e&&typeof e.threadId==`string`?e.threadId:``}:${`paneId`in e&&typeof e.paneId==`string`?e.paneId:``}`}function _r(){return{appendChunkByPane:new Map,eventCountByPane:new Map,modelByPane:new Map,contentByPane:new Map,thinkingByPane:new Map,setContentByPane:new Map,lastSegmentActionByPane:new Map,toolProgressById:new Map,toolOutputById:new Map,subagentEventsByToolCallId:new Map,other:[]}}function vr(e,t){let n=X(t),r=e.appendChunkByPane.get(n);if(!r){e.appendChunkByPane.set(n,{thinkingContent:t.chunkType===`thinking`?t.content:``,contentContent:t.chunkType===`content`?t.content:``,lastAction:t});return}t.chunkType===`thinking`?r.thinkingContent+=t.content:t.chunkType===`content`&&(r.contentContent+=t.content),r.lastAction=t}function Z(e,t){let n=X(t),r=e.get(n);if(!r){e.set(n,{value:t.content,last:t});return}r.value+=t.content,r.last=t}function yr(e){let t=_r();for(let n of e)switch(n.type){case m.AppendStreamChunk:vr(t,n),t.lastSegmentActionByPane.set(X(n),`append-chunk`);break;case m.IncrementStreamEventCount:t.eventCountByPane.set(X(n),n);break;case m.SetStreamModel:t.modelByPane.set(X(n),n);break;case m.AppendStreamContent:Z(t.contentByPane,n);break;case m.AppendStreamThinking:Z(t.thinkingByPane,n);break;case m.SetStreamContent:t.setContentByPane.set(X(n),n),t.lastSegmentActionByPane.set(X(n),`set-content`);break;case m.UpdateToolCallProgress:t.toolProgressById.set(n.toolCallId,n);break;case m.UpdateToolExecutionOutput:t.toolOutputById.set(n.toolCallId,n);break;case m.AppendSubagentEvent:{let e=t.subagentEventsByToolCallId.get(n.toolCallId);e?e.push(n.event):t.subagentEventsByToolCallId.set(n.toolCallId,[n.event]);break}default:t.other.push(n);break}return t}function br(e,t,n){for(let{value:r,last:i}of t.values())i.type===n&&e.push({...i,content:r})}function xr(e){let t=[],{thinkingContent:n,contentContent:r,lastAction:i}=e;return n&&t.push({...i,chunkType:`thinking`,content:n,segments:i.segments}),r&&t.push({...i,chunkType:`content`,content:r,segments:i.segments}),!n&&!r&&t.push(i),t}function Sr(e,t){let n=new Set([...t.setContentByPane.keys(),...t.appendChunkByPane.keys()]);for(let r of n){let n=t.setContentByPane.get(r),i=t.appendChunkByPane.get(r),a=i?xr(i):[];t.lastSegmentActionByPane.get(r)===`set-content`?(e.push(...a),n&&e.push(n)):(n&&e.push(n),e.push(...a))}}function Cr(e){let t=[];for(let n of e.modelByPane.values())t.push(n);for(let n of e.eventCountByPane.values())t.push(n);br(t,e.contentByPane,m.AppendStreamContent),br(t,e.thinkingByPane,m.AppendStreamThinking),Sr(t,e);for(let n of e.toolProgressById.values())t.push(n);for(let n of e.toolOutputById.values())t.push(n);for(let[n,r]of e.subagentEventsByToolCallId)t.push({type:m.AppendSubagentEvents,toolCallId:n,events:r});return t.push(...e.other),t}function wr(e){return e.length<=1?e:Cr(yr(e))}function Tr(e=ee){let t=e,n=new Set,r=0,i=[];function a(){return t}function o(){for(let e of n)e()}function s(e){let n=hr(t,e);n!==t&&(t=n)}function c(){if(r=0,i.length===0)return;let e=i.splice(0,i.length);for(let t of wr(e))s(t);o()}function l(e){if(gr.has(e.type)){i.push(e),r===0&&(r=requestAnimationFrame(c));return}i.length>0&&(r!==0&&(cancelAnimationFrame(r),r=0),c()),s(e),o()}function u(e){return n.add(e),function(){n.delete(e)}}return{getState:a,dispatch:l,subscribe:u}}var Er=t(),Q=e(n(),1),Dr=(0,Q.createContext)(null);function $(){let e=(0,Q.useContext)(Dr);if(!e)throw Error(`useAppStore must be used within an AppStoreContext.Provider`);return e}function Or(e){let t=(0,Er.c)(3),n=$(),r;t[0]!==e||t[1]!==n?(r=function(){return e(n.getState())},t[0]=e,t[1]=n,t[2]=r):r=t[2];let i=r;return(0,Q.useSyncExternalStore)(n.subscribe,i,i)}function kr(){return $().dispatch}function Ar(e){let t=(0,Er.c)(8),n=kr(),r;t[0]===e?r=t[1]:(r=t=>(e?t.terminalStates[e]:void 0)??te,t[0]=e,t[1]=r);let i=Or(r),a;t[2]!==n||t[3]!==e?(a=t=>{e&&n({...t,threadId:e})},t[2]=n,t[3]=e,t[4]=a):a=t[4];let o=a,s;return t[5]!==o||t[6]!==i?(s={terminalState:i,dispatch:o},t[5]=o,t[6]=i,t[7]=s):s=t[7],s}export{ne as $,_n as A,A as B,B as C,bn as D,pn as E,P as F,ae as G,we as H,I,pe as J,ie as K,Ut as L,Cn as M,an as N,vn as O,F as P,oe as Q,N as R,gn as S,V as T,Ee as U,Te as V,v as W,ce as X,me as Y,de as Z,J as _,Ar as a,U as b,ur as c,ar as d,m as et,$n as f,G as g,nr as h,$ as i,xn as j,Sn as k,cr as l,tr as m,kr as n,Tr as o,er as p,y as q,Or as r,sr as s,Dr as t,h as tt,or as u,Tn as v,yn as w,H as x,En as y,Mt as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=new Map;function t(t,n,r){return r.then(function(r){return e.get(t)===n&&(n.status=`resolved`),r},function(r){throw e.get(t)===n&&(n.status=`rejected`),r})}function n(n,r){let i=e.get(n);if(i)return i.promise;let a=r(),o={promise:a,status:`pending`};return o.promise=t(n,o,a),e.set(n,o),o.promise}function r(t){return e.get(t)?.status}function i(t,n){e.set(t,{promise:Promise.resolve(n),status:`resolved`})}function a(t){e.delete(t)}function o(t){for(let n of e.keys())n.startsWith(t)&&e.delete(n)}export{i as a,n as i,a as n,o as r,r as t};
|