tarsk 0.6.88 → 0.6.89
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/README.md +63 -24
- package/dist/index.js +787 -738
- package/dist/node_modules/@libsql/darwin-x64/README.md +3 -0
- package/dist/node_modules/@libsql/{darwin-arm64 → darwin-x64}/index.node +0 -0
- package/dist/node_modules/@libsql/{darwin-arm64 → darwin-x64}/package.json +6 -6
- package/dist/public/assets/api-8Rp2LlXt.js +1 -0
- package/dist/public/assets/api-Cp9I7CxD.js +2 -0
- package/dist/public/assets/{async-error-boundary-FT8_xvjy.js → async-error-boundary-CFVUPiuG.js} +1 -1
- package/dist/public/assets/{browser-tab-DCjHytQ8.js → browser-tab-CPPorbL6.js} +2 -2
- package/dist/public/assets/{chat-dock-context-a2bV9cnz.js → chat-dock-context-DbiJNr3O.js} +1 -1
- package/dist/public/assets/chat-handlers-context-DYU2LQ5V.js +9 -0
- package/dist/public/assets/{commit-dialog-C1oUFznJ.js → commit-dialog-DPaci3dp.js} +1 -1
- package/dist/public/assets/{commit-error-dialog--NTHg7Aw.js → commit-error-dialog-Dnlkgb_H.js} +1 -1
- package/dist/public/assets/{conversation-history-view-CdfE7JTD.js → conversation-history-view-CqIugfyO.js} +1 -1
- package/dist/public/assets/{create-project-dialog-BdR6iQE9.js → create-project-dialog-DStWPoDE.js} +2 -2
- package/dist/public/assets/{create-project-workspace-DSTTGom_.js → create-project-workspace-CJ94yHAB.js} +2 -2
- package/dist/public/assets/{create-repo-dialog-gw-8Rpdm.js → create-repo-dialog-B_QiEz-v.js} +1 -1
- package/dist/public/assets/diff-view-4koPcOcE.js +4 -0
- package/dist/public/assets/{explorer-file-drop-CzyAqZgf.js → explorer-file-drop-DAP7ha-E.js} +1 -1
- package/dist/public/assets/explorer-tab-view-Bt9hRZUm.js +2 -0
- package/dist/public/assets/explorer-tree-CAs89lPz.js +1 -0
- package/dist/public/assets/{explorer-view-Daxl93oM.js → explorer-view-B1JuejkU.js} +2 -2
- package/dist/public/assets/index-CcAwxnT5.js +97 -0
- package/dist/public/assets/index-dNrgKdYv.css +1 -0
- package/dist/public/assets/{markdown-renderer-D2VcKU4g.js → markdown-renderer-DQONI6WG.js} +3 -3
- package/dist/public/assets/{mcp-manager-D1HmLT3t.js → mcp-manager-D2FG-h2e.js} +1 -1
- package/dist/public/assets/{model-list-controls-rXmaDp2r.js → model-list-controls-B6ofHWh3.js} +1 -1
- package/dist/public/assets/{onboarding-dialog-DSqBJyBa.js → onboarding-dialog-DAut3X4K.js} +1 -1
- package/dist/public/assets/{pill-tabs-DtdTmrg7.js → pill-tabs-BAhOHad7.js} +1 -1
- package/dist/public/assets/{project-coding-view-DP4qKePE.js → project-coding-view-B2FpHeiO.js} +1 -1
- package/dist/public/assets/{project-danger-zone-view-CGxIenpr.js → project-danger-zone-view-BqP1dcRT.js} +1 -1
- package/dist/public/assets/{project-env-vars-view-DKyQkh7h.js → project-env-vars-view-zhigkQFG.js} +1 -1
- package/dist/public/assets/{project-model-aliases-view-BewwJZAx.js → project-model-aliases-view-APAVFfym.js} +1 -1
- package/dist/public/assets/{project-settings-view-CE4nAz5B.js → project-settings-view-FnK-LRsv.js} +1 -1
- package/dist/public/assets/project-tools-view-Dmp5ViRC.js +1 -0
- package/dist/public/assets/providers-list-view-Clbp73Hh.js +1 -0
- package/dist/public/assets/{pull-request-dialog-nKYATjbm.js → pull-request-dialog-D40BQPMk.js} +1 -1
- package/dist/public/assets/{pull-with-changes-dialog-zzoFzCv4.js → pull-with-changes-dialog-pkXK-VP2.js} +1 -1
- package/dist/public/assets/query-keys-CcnonAAG.js +1 -0
- package/dist/public/assets/{remote-media-url-CyuN31H_.js → remote-media-url-C-GdJb-D.js} +1 -1
- package/dist/public/assets/{scroll-area-CGEZ1gAL.js → scroll-area-DGF9wUqQ.js} +1 -1
- package/dist/public/assets/{select-BR2pG61R.js → select-DMcNYwgt.js} +1 -1
- package/dist/public/assets/{settings-general-tabs-view-BWR0UX2P.js → settings-general-tabs-view-DBZQbihJ.js} +2 -2
- package/dist/public/assets/settings-general-view-0dhBET2R.js +1 -0
- package/dist/public/assets/{settings-list-Dgip9HpD.js → settings-list-Co3JPr9w.js} +1 -1
- package/dist/public/assets/{settings-logs-view-CS29x4VT.js → settings-logs-view-DvHXUDko.js} +2 -2
- package/dist/public/assets/settings-mcp-servers-view-414Dt5py.js +5 -0
- package/dist/public/assets/{settings-models-view-DS7nm54P.js → settings-models-view-ByeR7Enb.js} +1 -1
- package/dist/public/assets/{settings-plugins-view-avaUE36r.js → settings-plugins-view-8te2MPyh.js} +2 -2
- package/dist/public/assets/{settings-providers-view-B39k1iRQ.js → settings-providers-view-BAuv9gam.js} +2 -2
- package/dist/public/assets/{settings-remote-machines-view-BXondQG_.js → settings-remote-machines-view-CHyywazU.js} +1 -1
- package/dist/public/assets/{settings-setup-view-I5MGUi_D.js → settings-setup-view-Btp46Vh_.js} +2 -2
- package/dist/public/assets/{settings-skills-view-BKrUABbi.js → settings-skills-view-BNVx4bZl.js} +2 -2
- package/dist/public/assets/{settings-slack-view-B0p-96GC.js → settings-slack-view-Caly5yGt.js} +1 -1
- package/dist/public/assets/settings-slash-commands-view-m6mp1knu.js +1 -0
- package/dist/public/assets/{settings-statistics-view-B3g6BD7p.js → settings-statistics-view-BnOxr4sZ.js} +1 -1
- package/dist/public/assets/settings-storage-view-Dg8xfpTG.js +1 -0
- package/dist/public/assets/{settings-subagents-view-BziLwvNq.js → settings-subagents-view-CucwEk2A.js} +1 -1
- package/dist/public/assets/{settings-system-prompt-view-BqAk56cD.js → settings-system-prompt-view-CEDU2saT.js} +1 -1
- package/dist/public/assets/{settings-tab-bar-DYzU_lmi.js → settings-tab-bar-CdIbQ0WI.js} +1 -1
- package/dist/public/assets/settings-view-XcJhRclT.js +2 -0
- package/dist/public/assets/task-utils-Cnq9Eszt.js +1 -0
- package/dist/public/assets/tasks-view-B8_jkq_a.js +1 -0
- package/dist/public/assets/{terminal-panel-Bm_ZelN-.js → terminal-panel-xoLVfA-h.js} +1 -1
- package/dist/public/assets/{use-account-settings-query-C-zOdREq.js → use-account-settings-query-D_qL1I4w.js} +1 -1
- package/dist/public/assets/{use-active-dock-panel-instance-4Ss8lB9K.js → use-active-dock-panel-instance-kmJOnmL7.js} +1 -1
- package/dist/public/assets/use-git-check-BD9gdXpK.js +1 -0
- package/dist/public/assets/{use-installed-ai-files-DQey9Zm3.js → use-installed-ai-files-Nn-sN_V2.js} +1 -1
- package/dist/public/assets/{use-open-chat-dock-panel-DqfWJ8e8.js → use-open-chat-dock-panel-CXzpgxVs.js} +1 -1
- package/dist/public/assets/use-projects-B0xTjTaA.js +2 -0
- package/dist/public/assets/{web-CGP-jEpi.js → web-C1tBQoCB.js} +1 -1
- package/dist/public/assets/{web-CKC9gpFi.js → web-cJXG33sT.js} +1 -1
- package/dist/public/index.html +18 -18
- package/package.json +4 -4
- package/dist/node_modules/@libsql/darwin-arm64/README.md +0 -3
- package/dist/public/assets/account-view-DkuCOxkE.js +0 -1
- package/dist/public/assets/api-B_GSyYGh.js +0 -1
- package/dist/public/assets/api-C4ukGdyH.js +0 -2
- package/dist/public/assets/chat-handlers-context-2xSKzkKa.js +0 -9
- package/dist/public/assets/diff-view-B6JJNyn1.js +0 -4
- package/dist/public/assets/explorer-tab-view-CiUPh4uK.js +0 -2
- package/dist/public/assets/explorer-tree-BA12VLz_.js +0 -1
- package/dist/public/assets/index-CoY8DilQ.js +0 -97
- package/dist/public/assets/index-D14wLW4o.css +0 -1
- package/dist/public/assets/project-tools-view-CbDfst02.js +0 -1
- package/dist/public/assets/providers-list-view-BtwccvX2.js +0 -1
- package/dist/public/assets/query-keys-BwswkbMn.js +0 -1
- package/dist/public/assets/settings-general-view-BhtrDmJH.js +0 -1
- package/dist/public/assets/settings-mcp-servers-view-B5ithpfh.js +0 -5
- package/dist/public/assets/settings-slash-commands-view-DA1scWv1.js +0 -1
- package/dist/public/assets/settings-storage-view-BJvjhI4f.js +0 -1
- package/dist/public/assets/settings-view-zjMs7jNe.js +0 -2
- package/dist/public/assets/task-utils-BZPVmvY4.js +0 -1
- package/dist/public/assets/tasks-view-wFf77AQX.js +0 -1
- package/dist/public/assets/use-git-check-CumqGAvN.js +0 -1
- package/dist/public/assets/use-projects-CizIH2Fa.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,o as n}from"./react-vendor-D61Uve5n.js";import{C as r,b as i,d as a,g as o,l as s,o as c,s as l,y as u}from"./useBaseQuery-yghQO052.js";import{n as d}from"./QueryClientProvider-CYXTUmYo.js";import{t as f}from"./useQuery-DWt09r77.js";import{x as p}from"./dist-v_MvKS2-.js";import{
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,o as n}from"./react-vendor-D61Uve5n.js";import{C as r,b as i,d as a,g as o,l as s,o as c,s as l,y as u}from"./useBaseQuery-yghQO052.js";import{n as d}from"./QueryClientProvider-CYXTUmYo.js";import{t as f}from"./useQuery-DWt09r77.js";import{x as p}from"./dist-v_MvKS2-.js";import{lr as m,ma as h,ri as g,rt as _,si as v}from"./api-Cp9I7CxD.js";import{t as y}from"./query-keys-CcnonAAG.js";var b=class extends c{#e;#t;#n;#r;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#t=[],this.state=e.state||x(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:`observerRemoved`,mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status===`pending`?this.scheduleGc():this.#n.remove(this))}continue(){return this.#r?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{this.#i({type:`continue`})},n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#r=l({fn:()=>this.options.mutationFn?this.options.mutationFn(e,n):Promise.reject(Error(`No mutationFn found`)),onFail:(e,t)=>{this.#i({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#i({type:`pause`})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)});let r=this.state.status===`pending`,i=!this.#r.canStart();try{if(r)t();else{this.#i({type:`pending`,variables:e,isPaused:i}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,n);let t=await this.options.onMutate?.(e,n);t!==this.state.context&&this.#i({type:`pending`,context:t,variables:e,isPaused:i})}let a=await this.#r.start();return await this.#n.config.onSuccess?.(a,e,this.state.context,this,n),await this.options.onSuccess?.(a,e,this.state.context,n),await this.#n.config.onSettled?.(a,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(a,null,e,this.state.context,n),this.#i({type:`success`,data:a}),a}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,n)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,n)}catch(e){Promise.reject(e)}throw this.#i({type:`error`,error:t}),t}finally{this.#n.runNext(this)}}#i(e){let t=t=>{switch(e.type){case`failed`:return{...t,failureCount:e.failureCount,failureReason:e.error};case`pause`:return{...t,isPaused:!0};case`continue`:return{...t,isPaused:!1};case`pending`:return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:`pending`,variables:e.variables,submittedAt:Date.now()};case`success`:return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:`success`,isPaused:!1};case`error`:return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:`error`}}};this.state=t(this.state),s.batch(()=>{this.#t.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:`updated`,action:e})})}};function x(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:`idle`,variables:void 0,submittedAt:0}}var S=class extends r{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),u(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&a(t.mutationKey)!==a(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??x();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){s.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},C=e(n(),1);function w(e,t){let n=d(t),[r]=C.useState(()=>new S(n,e));C.useEffect(()=>{r.setOptions(e)},[r,e]);let a=C.useSyncExternalStore(C.useCallback(e=>r.subscribe(s.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),c=C.useCallback((e,t)=>{r.mutate(e,t).catch(o)},[r]);if(a.error&&i(r.options.throwOnError,[a.error]))throw a.error;return{...a,mutate:c,mutateAsync:a.mutate}}var T=t(),E=p(`auth`);async function D(e){await v(`api/auth/request-code`,{email:e})}async function O(e,t){return v(`api/auth/verify`,{email:e,code:t})}async function k(e){try{await v(`api/auth/revoke`,{token:e})}catch(e){E.error(`Failed to revoke auth token:`,e)}}async function A(){try{return(await g(`api/auth/session`)).session??null}catch(e){return e instanceof Error&&e.message===`Sign in with the account that owns this Tarsk.`||E.error(`Failed to load auth session:`,e),null}}async function j(e){await v(`api/auth/session`,e)}async function M(){await v(`api/auth/logout`,{})}var N={session:null,isLoading:!0},P=new Set;function F(){for(let e of P)e()}function I(){return N}function L(e){return P.add(e),function(){P.delete(e)}}function R(){return typeof window<`u`&&h(window.location.hostname)}var z=null;function B(){return z||=A().then(e=>{N={session:e,isLoading:!1}}).catch(()=>{N={session:null,isLoading:!1}}).finally(()=>{F()}),z}function V(){let e=(0,T.c)(10),{session:t,isLoading:n}=(0,C.useSyncExternalStore)(L,I),r=d(),i;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[0]=i):i=e[0],(0,C.useEffect)(H,i);let a;e[1]===r?a=e[2]:(a=async function(e){R()||await j(e),r.clear(),N={session:e,isLoading:!1},F()},e[1]=r,e[2]=a);let o=a,s;e[3]===r?s=e[4]:(s=async()=>{let e=N.session?.token;e&&await k(e),await M(),r.clear(),N={session:null,isLoading:!1},F()},e[3]=r,e[4]=s);let c=s,l;return e[5]!==n||e[6]!==o||e[7]!==c||e[8]!==t?(l={session:t,isLoading:n,login:o,logout:c},e[5]=n,e[6]=o,e[7]=c,e[8]=t,e[9]=l):l=e[9],l}function H(){B()}function U(){return y.account.settings()}function W(e){return e.invalidateQueries({queryKey:U()})}function G(e){return e.fetchQuery({queryKey:U(),queryFn:_,staleTime:0})}function K(){let e=(0,T.c)(1),{session:t,isLoading:n}=V(),r;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=h(window.location.hostname),e[0]=r):r=e[0],!n&&(t!==null||!r)}function q(){let e=(0,T.c)(3),t=K(),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=U(),e[0]=n):n=e[0];let r;return e[1]===t?r=e[2]:(r={queryKey:n,queryFn:_,enabled:t},e[1]=t,e[2]=r),f(r)}function J(){let e=(0,T.c)(2),t=d(),n;return e[0]===t?n=e[1]:(n={mutationFn:Y,onSuccess:e=>{t.setQueryData(U(),e)}},e[0]=t,e[1]=n),w(n)}function Y(e){return m(e)}export{J as a,O as c,q as i,w as l,G as n,V as o,W as r,D as s,U as t,b as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./react-vendor-D61Uve5n.js";import{n as t}from"./chat-dock-context-
|
|
1
|
+
import{n as e}from"./react-vendor-D61Uve5n.js";import{n as t}from"./chat-dock-context-DbiJNr3O.js";var n=e();function r(e){let{instanceId:t,panelId:n,windows:r,expandedWindowId:i,selectedWindowId:a,isLayoutExpanded:o}=e;if(o&&i!==t)return!1;let s=r.filter(e=>e.panelId===n).map(e=>e.id);return s.includes(t)?s.length===1?!0:s.includes(a)?a===t:i&&s.includes(i)?i===t:s[0]===t:!1}function i(e,i){let a=(0,n.c)(7),{windows:o,expandedWindowId:s,selectedWindowId:c,isLayoutExpanded:l}=t(),u;return a[0]!==s||a[1]!==e||a[2]!==l||a[3]!==i||a[4]!==c||a[5]!==o?(u=r({instanceId:e,panelId:i,windows:o,expandedWindowId:s,selectedWindowId:c,isLayoutExpanded:l}),a[0]=s,a[1]=e,a[2]=l,a[3]=i,a[4]=c,a[5]=o,a[6]=u):u=a[6],u}export{i as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,o as n,t as r}from"./react-vendor-D61Uve5n.js";import{U as i,x as a}from"./dist-v_MvKS2-.js";import{o,on as s}from"./api-Cp9I7CxD.js";import{t as c}from"./utils-CqsIXqSC.js";import{t as l}from"./check-skFQ1X72.js";import{t as u}from"./circle-alert-CC2eO3yt.js";import{t as d}from"./copy-bi9iX3xn.js";import{t as f}from"./external-link-Dcikmdm_.js";import{t as p}from"./loader-circle-CrqRIqdA.js";import{t as m}from"./button-DDaJhJP1.js";import{ar as h,it as g}from"./index-CcAwxnT5.js";var _={darwin:`macOS`,win32:`Windows`,linux:`Linux`,unknown:`System`},v=t(),y=e(n(),1),b=r(),x=a(`app.git-setup-guide`);function S(e){let t=(0,v.c)(4),{version:n}=e,r,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,b.jsx)(l,{className:`h-5 w-5 text-brand flex-shrink-0 mt-0.5`}),a=(0,b.jsx)(`p`,{className:c(i.label,`text-brand`),children:`Git is installed`}),t[0]=r,t[1]=a):(r=t[0],a=t[1]);let o=n?`Detected Git ${n}. `:``,s;return t[2]===o?s=t[3]:(s=(0,b.jsxs)(g,{variant:`success`,className:`mb-0 flex items-start gap-3`,children:[r,(0,b.jsxs)(`div`,{children:[a,(0,b.jsxs)(`p`,{className:i.bodyMuted,children:[o,`You're all set to use Git features in Tarsk.`]})]})]}),t[2]=o,t[3]=s),s}function C(e){let t=(0,v.c)(27),{platform:n,plan:r,checking:a,onCheckAgain:o,className:s}=e,l;t[0]===s?l=t[1]:(l=c(`mb-0 flex items-start gap-3`,s),t[0]=s,t[1]=l);let d;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,b.jsx)(u,{className:`h-5 w-5 text-yellow-600 flex-shrink-0 mt-0.5`}),t[2]=d):d=t[2];let f,h;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,b.jsx)(`p`,{className:i.label,children:`Git is not installed`}),h=c(i.bodyMuted,`mt-1`),t[3]=f,t[4]=h):(f=t[3],h=t[4]);let y=_[n],x;t[5]===y?x=t[6]:(x=(0,b.jsxs)(`p`,{className:h,children:[`Git is required for some features in Tarsk. Run the command below for`,` `,y,`, then check again.`]}),t[5]=y,t[6]=x);let S;t[7]===r?S=t[8]:(S=(0,b.jsx)(w,{plan:r}),t[7]=r,t[8]=S);let C;t[9]===a?C=t[10]:(C=a?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(p,{className:`h-4 w-4 animate-spin`}),`Checking...`]}):`Check again`,t[9]=a,t[10]=C);let T;t[11]!==a||t[12]!==o||t[13]!==C?(T=(0,b.jsx)(m,{variant:`outline`,size:`sm`,onClick:o,disabled:a,className:`gap-2`,children:C}),t[11]=a,t[12]=o,t[13]=C,t[14]=T):T=t[14];let E=r?.url??null,O;t[15]===E?O=t[16]:(O=(0,b.jsx)(D,{url:E}),t[15]=E,t[16]=O);let k;t[17]!==O||t[18]!==T?(k=(0,b.jsxs)(`div`,{className:`mt-3 flex items-center gap-3`,children:[T,O]}),t[17]=O,t[18]=T,t[19]=k):k=t[19];let A;t[20]!==k||t[21]!==x||t[22]!==S?(A=(0,b.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[f,x,S,k]}),t[20]=k,t[21]=x,t[22]=S,t[23]=A):A=t[23];let j;return t[24]!==l||t[25]!==A?(j=(0,b.jsxs)(g,{variant:`hint`,className:l,children:[d,A]}),t[24]=l,t[25]=A,t[26]=j):j=t[26],j}function w(e){let t=(0,v.c)(11),{plan:n}=e;if(!n)return null;let r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=c(i.labelMuted,`mb-2`),t[0]=r):r=t[0];let a;t[1]===n.label?a=t[2]:(a=(0,b.jsxs)(`p`,{className:r,children:[`Install with `,n.label]}),t[1]=n.label,t[2]=a);let o;t[3]===n.command?o=t[4]:(o=n.command?(0,b.jsx)(E,{command:n.command}):(0,b.jsx)(`p`,{className:i.bodyMuted,children:`No install command was detected for your system — use the download link below.`}),t[3]=n.command,t[4]=o);let s;t[5]===n.notes?s=t[6]:(s=n.notes.map(T),t[5]=n.notes,t[6]=s);let l;return t[7]!==a||t[8]!==o||t[9]!==s?(l=(0,b.jsxs)(`div`,{className:`mt-3 rounded-lg border border-border bg-background p-3`,children:[a,o,s]}),t[7]=a,t[8]=o,t[9]=s,t[10]=l):l=t[10],l}function T(e){return(0,b.jsxs)(`p`,{className:c(i.caption,`mt-2 flex items-start gap-1.5`),children:[(0,b.jsx)(h,{className:`h-3 w-3 mt-0.5 flex-shrink-0`}),e]},e)}function E(e){let t=(0,v.c)(15),{command:n}=e,[r,i]=(0,y.useState)(!1),a;t[0]===n?a=t[1]:(a=async function(){try{await navigator.clipboard.writeText(n),i(!0),window.setTimeout(()=>i(!1),2e3)}catch(e){let t=e;x.error(`Failed to copy git install command:`,t)}},t[0]=n,t[1]=a);let o=a,s;t[2]===n?s=t[3]:(s=(0,b.jsx)(`code`,{className:`flex-1 min-w-0 break-all rounded-md bg-muted px-3 py-2 font-mono`,children:n}),t[2]=n,t[3]=s);let c;t[4]===o?c=t[5]:(c=()=>void o(),t[4]=o,t[5]=c);let u=r?`Copied`:`Copy command`,f;t[6]===r?f=t[7]:(f=r?(0,b.jsx)(l,{className:`h-4 w-4 text-brand`}):(0,b.jsx)(d,{className:`h-4 w-4`}),t[6]=r,t[7]=f);let p;t[8]!==c||t[9]!==u||t[10]!==f?(p=(0,b.jsx)(m,{variant:`ghost`,size:`icon-sm`,onClick:c,"aria-label":u,children:f}),t[8]=c,t[9]=u,t[10]=f,t[11]=p):p=t[11];let h;return t[12]!==s||t[13]!==p?(h=(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[s,p]}),t[12]=s,t[13]=p,t[14]=h):h=t[14],h}function D(e){let t=(0,v.c)(7),{url:n}=e;if(!n)return null;let r;t[0]===n?r=t[1]:(r=function(e){e.preventDefault(),s(n??``)},t[0]=n,t[1]=r);let a=r,o;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=c(i.caption,`text-brand hover:underline inline-flex items-center gap-1`),t[2]=o):o=t[2];let l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,b.jsx)(f,{className:`h-3 w-3`}),t[3]=l):l=t[3];let u;return t[4]!==a||t[5]!==n?(u=(0,b.jsxs)(`a`,{href:n,onClick:a,className:o,children:[`Download installer `,l]}),t[4]=a,t[5]=n,t[6]=u):u=t[6],u}var O=a(`app.use-git-check`),k=4e3;function A(e={}){let{enabled:t=!0,pollWhileMissing:n=!0}=e,[r,i]=(0,y.useState)(null),[a,s]=(0,y.useState)(!1),[c,l]=(0,y.useState)(!1),u=(0,y.useRef)(!1),d=(0,y.useCallback)(async(e={})=>{if(!u.current){u.current=!0,e.silent||s(!0);try{let e=await o();i(e)}catch(e){O.error(`Failed to check git installation:`,e),i(e=>e??{gitInstalled:!1,version:null,platform:`unknown`,install:null})}finally{u.current=!1,e.silent||s(!1),l(!0)}}},[]),f=(0,y.useRef)(d);return(0,y.useEffect)(()=>{f.current=d},[d]),(0,y.useEffect)(()=>{t&&f.current()},[t]),(0,y.useEffect)(()=>{if(!t||!n||r?.gitInstalled!==!1)return;let e=window.setInterval(()=>{f.current({silent:!0})},k);return()=>{window.clearInterval(e)}},[t,n,r]),{gitInstalled:r?.gitInstalled??null,version:r?.version??null,platform:r?.platform??`unknown`,plan:r?.install??null,loading:a,hasChecked:c,check:d}}export{S as n,C as r,A as t};
|
package/dist/public/assets/{use-installed-ai-files-DQey9Zm3.js → use-installed-ai-files-Nn-sN_V2.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{o as t}from"./react-vendor-D61Uve5n.js";import{Z as n,n as r,r as i}from"./store-W78TGOIO.js";import{
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{o as t}from"./react-vendor-D61Uve5n.js";import{Z as n,n as r,r as i}from"./store-W78TGOIO.js";import{Dt as a,Jt as o,N as s,R as c}from"./api-Cp9I7CxD.js";import{t as l}from"./use-toast-CKgZ8YeP.js";import{n as u}from"./explorer-tab-context-BwR8CM8l.js";import{t as d}from"./use-open-chat-dock-panel-CXzpgxVs.js";import{n as f}from"./use-projects-B0xTjTaA.js";var p=e(t(),1),m=new Map;function h(e){let t=m.get(e);return t===void 0?null:t}function g(e,t){m.set(e,t)}function _(e){return m.has(e)}function v(e,t){return`installed-ai-files:${e}:${t??``}`}function y(e){return e===null?null:h(e)}function b(e,t,n){if(e===null)return[];let r=t(e.projectNodes),i=new Set(r.map(e=>e.path));for(let n of t(e.threadNodes))i.has(n.path)||r.push(n);return n&&(r=[...r].sort((e,t)=>e.name.localeCompare(t.name))),r}function x(e){let t=e.children??[];return[e.type,e.path,e.name,e.virtual?`v`:``,e.description??``,e.disableModelInvocation?`dmi`:``,t.map(x)].flat(2).join(`~`)}function S(e,t){return new Set(e.map(e=>`${e.path}${t}`))}async function C(e){try{return await o(e)}catch{return[]}}async function w(e,t){return{projectNodes:await a(e),threadNodes:t===null?[]:await C(t)}}function T(e){return`${e.projectNodes.map(x).join(`|`)}#${e.threadNodes.map(x).join(`|`)}`}function E(e,t){if(e.current!==null)return;let n=y(t);e.current=n===null?null:T(n)}function D({findItems:e,installedPathSuffix:t=``,explorerPathSuffix:a=``,sortByName:o=!1,removedToastTitle:m}){let h=r(),x=i(e=>e.projects),C=i(e=>e.selectedProjectId),D=i(e=>e.selectedThreadId),{handleSelectThread:O}=f(),{openChatDockPanel:k}=d(),{setPendingExplorerPath:A,triggerExplorerRefresh:j,setExplorerClearPath:M}=u(),N=C===null?null:v(C,D??null),[P,F]=(0,p.useState)(N),[I,L]=(0,p.useState)(()=>b(y(N),e,o)),[R,z]=(0,p.useState)(()=>N!==null&&!_(N)),[B,V]=(0,p.useState)(null),[H,U]=(0,p.useState)(!1),[W,G]=(0,p.useState)(()=>S(I,t)),K=(0,p.useRef)(null),q=(0,p.useRef)(0),J=(0,p.useCallback)(function(n){let r=b(n,e,o);L(r),G(S(r,t))},[e,t,o]),Y=(0,p.useCallback)(function(e,t){let n=T(t);n!==K.current&&(K.current=n,g(e,t),J(t))},[J]),X=(0,p.useCallback)(async()=>{if(!C){z(!1);return}let e=q.current+=1,t=v(C,D??null);E(K,t);try{let n=await w(C,D??null);e===q.current&&Y(t,n)}catch{e===q.current&&K.current===null&&J(null)}finally{e===q.current&&z(!1)}},[C,D,Y,J]);return(0,p.useLayoutEffect)(()=>{if(P===N)return;F(N),q.current+=1;let e=y(N);K.current=e===null?null:T(e),J(e),z(N!==null&&e===null)},[P,N,J]),(0,p.useEffect)(()=>{X()},[X]),{selectedProjectId:C,selectedThreadId:D,items:I,loading:R,deleteConfirm:B,setDeleteConfirm:V,deleting:H,installedFilePaths:W,setInstalledFilePaths:G,loadItems:X,handleDelete:(0,p.useCallback)(async e=>{if(!C)return;let n=e.name,r=e.path;U(!0);try{try{await s(C,r)}catch{if(D)await c(D,r);else throw Error(`No thread selected to delete from`)}M(r),j(),G(e=>{let n=new Set(e);return n.delete(`${r}${t}`),n}),l({title:m,description:n}),V(null),await X()}catch(e){l({title:`Error`,description:e instanceof Error?e.message:`Failed to remove item`,variant:`destructive`})}finally{U(!1)}},[C,D,X,j,M,t,m]),handleOpenInExplorer:(0,p.useCallback)(e=>{if(!C)return;let t=x.find(e=>e.projectId===C);if(t){if(h({type:n.OpenProjectPanel,projectId:C}),!t.threads.some(e=>e.threadId===D)){let e=t.threads.find(e=>e.isSelected)??t.threads[0]??null;e&&O(C,e.threadId)}A(`${e}${a}`),k(`explorer`)}},[C,D,x,h,O,A,k,a]),triggerExplorerRefresh:j}}export{g as i,_ as n,h as r,D as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./react-vendor-D61Uve5n.js";import{o as t,s as n}from"./chunk-QFMPRPBF-Cy-_pFSM.js";import"./dist-v_MvKS2-.js";import{$ as r,et as i,r as a}from"./store-W78TGOIO.js";import{n as o}from"./chat-dock-context-
|
|
1
|
+
import{n as e}from"./react-vendor-D61Uve5n.js";import{o as t,s as n}from"./chunk-QFMPRPBF-Cy-_pFSM.js";import"./dist-v_MvKS2-.js";import{$ as r,et as i,r as a}from"./store-W78TGOIO.js";import{n as o}from"./chat-dock-context-DbiJNr3O.js";import{n as s}from"./explorer-tab-context-BwR8CM8l.js";import{n as c}from"./main-tab-context-Dsp4OYi9.js";var l=e(),u=`/review`,d=`/settings`;function f(e){return e.startsWith(`/settings`)||e===`/review`}function p(e,t,n){if(e!==void 0)return e;let r=t&&!n;return i(window.innerWidth)&&!r}function m(e,t,n,r){e===`explorer`?n.refreshExplorer():e===`review`?n.refreshReview(r):e===`tasks`&&t.tasksView&&n.setTasksView(t.tasksView)}function h(e,t,n,i,a,o,s,c,l,u){function d(e){if(u){c(e);return}o(e),s(e)}if(e===`chat`&&!a&&(!i||t))return d(r),r;if(e!==`chat`&&t){let t=n(e);if(t)return d(t.id),t.id}let f=l(e);return d(f),f}function g(){let e=(0,l.c)(18),{findWindowByPanel:r,addWindow:i,revealWindow:u,selectWindow:d,expandWindow:g,hasOpenWindows:v,isLayoutExpanded:y,isPrimaryChatOpen:b,setTasksView:x}=o(),{setActiveMainTab:S,triggerReviewRefresh:C}=c(),{triggerExplorerRefresh:w}=s(),T=a(_),E=n(),D=t(),O;e[0]!==i||e[1]!==g||e[2]!==r||e[3]!==v||e[4]!==y||e[5]!==b||e[6]!==D.pathname||e[7]!==E||e[8]!==u||e[9]!==d||e[10]!==T||e[11]!==S||e[12]!==x||e[13]!==w||e[14]!==C?(O=(e,t)=>{let n=t===void 0?{}:t,a=n.reuseExisting??!0,o=n.navigateToChat??!0;return S(`chat`),o&&f(D.pathname)&&E(`/`),m(e,n,{refreshExplorer:w,refreshReview:C,setTasksView:x},T),h(e,a,r,b,n.forceNewWindow??!1,d,u,g,i,p(n.expand,v,y))},e[0]=i,e[1]=g,e[2]=r,e[3]=v,e[4]=y,e[5]=b,e[6]=D.pathname,e[7]=E,e[8]=u,e[9]=d,e[10]=T,e[11]=S,e[12]=x,e[13]=w,e[14]=C,e[15]=O):O=e[15];let k=O,A;return e[16]===k?A=e[17]:(A={openChatDockPanel:k},e[16]=k,e[17]=A),A}function _(e){return e.selectedThreadId}export{f as i,u as n,d as r,g as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{a as t,n,o as r,t as i}from"./react-vendor-D61Uve5n.js";import{o as a,s as o}from"./chunk-QFMPRPBF-Cy-_pFSM.js";import{U as s,x as c}from"./dist-v_MvKS2-.js";import{Z as l,i as u,n as d,r as f}from"./store-W78TGOIO.js";import{C as p,L as m,M as h,Mt as g,Rn as _,S as v,Xr as y,b,cn as x,pn as S,pr as C,sn as w,tn as T,x as E,y as D}from"./api-Cp9I7CxD.js";import{c as O,h as k,i as A,l as j,m as M,n as N,o as P,p as ee,r as te,t as ne}from"./create-project-workspace-CJ94yHAB.js";import{c as F,p as re,t as I}from"./utils-CqsIXqSC.js";import{t as ie}from"./check-skFQ1X72.js";import{t as L}from"./circle-alert-CC2eO3yt.js";import{t as ae}from"./loader-circle-CrqRIqdA.js";import{t as oe}from"./x-ByOPrz5I.js";import{r as se}from"./button-DDaJhJP1.js";import{a as ce,c as le,d as ue,g as R,h as de,l as z,n as fe,o as pe,r as me,t as he,u as B}from"./dist-AbkJBHH5.js";import{o as ge}from"./tooltip-CqwCZ7wt.js";import{t as _e}from"./dist-DOz2WXwX.js";import{n as ve,t as ye}from"./use-toast-CKgZ8YeP.js";import{n as be}from"./terminal-output-activity-D_FxlE-L.js";import{a as xe,c as Se,i as Ce,n as we,o as Te,r as Ee,s as De,t as Oe}from"./alert-dialog-BcZULJsX.js";import{r as ke}from"./suspense-resource-DzlMlIgR.js";import{t as Ae}from"./use-suspense-resource-uCX26gOk.js";var V=e(r(),1),H=n();function je(e,t,n){let r=n.find(e=>e.threadId!==t);return r?{type:l.SelectThread,projectId:e,threadId:r.threadId}:{type:l.SelectProject,projectId:e}}var Me=`root`,Ne=/^cd "([^"]+)" && (.+)$/;function Pe(e){let t=Ne.exec(e);return t?{script:e,command:t[2],folder:t[1],isRoot:!1}:{script:e,command:e,folder:Me,isRoot:!0}}function Fe(e){return e.map(e=>Pe(e))}function Ie(e){return Fe(e).filter(e=>e.isRoot).map(e=>e.script)}function Le(e,t){return Array.from(new Set([e,...t??[]]))}var U=i(),W=[`Removing threads`,`Deleting storage`,`Removing project`];function Re(e){let t=(0,H.c)(32),{progress:n,onRetry:r,onClose:i}=e;if(!n)return null;let{projectName:a,step:o,status:c,errorMessage:l}=n,u=W[Math.min(o,W.length-1)],d=c===`progressing`,f;t[0]!==d||t[1]!==i?(f=e=>{!e&&!d&&i()},t[0]=d,t[1]=i,t[2]=f):f=t[2];let p;t[3]===d?p=t[4]:(p=e=>{d&&e.preventDefault()},t[3]=d,t[4]=p);let m=c===`error`?`Delete Failed`:`Deleting Project`,h;t[5]===m?h=t[6]:(h=(0,U.jsx)(Se,{children:m}),t[5]=m,t[6]=h);let g;t[7]!==l||t[8]!==u||t[9]!==a||t[10]!==c?(g=(0,U.jsx)(xe,{children:c===`error`?(0,U.jsxs)(`span`,{className:`text-destructive`,children:[`Failed at: `,u,`. `,l??`An unexpected error occurred.`]}):(0,U.jsxs)(U.Fragment,{children:[`Deleting `,(0,U.jsxs)(`span`,{className:`font-semibold text-foreground`,children:[`"`,a,`"`]}),`. This cannot be undone.`]})}),t[7]=l,t[8]=u,t[9]=a,t[10]=c,t[11]=g):g=t[11];let _;t[12]!==h||t[13]!==g?(_=(0,U.jsxs)(De,{children:[h,g]}),t[12]=h,t[13]=g,t[14]=_):_=t[14];let v;t[15]!==c||t[16]!==o?(v=W.map((e,t)=>{let n=c===`progressing`&&t===o,r=c===`done`,i=c===`error`&&t===o;return(0,U.jsxs)(`div`,{className:I(`flex items-center gap-2 text-sm`,n&&`text-foreground`,r&&`text-muted-foreground`,t<o&&`text-muted-foreground`),children:[r||t<o?(0,U.jsx)(ie,{className:`h-4 w-4 text-emerald-500`}):i?(0,U.jsx)(L,{className:`h-4 w-4 text-destructive`}):(0,U.jsx)(ae,{className:I(`h-4 w-4 text-muted-foreground`,n&&`animate-spin text-foreground`)}),(0,U.jsxs)(`span`,{className:I(s.body,n&&`font-medium`),children:[e,`…`]})]},e)}),t[15]=c,t[16]=o,t[17]=v):v=t[17];let y;t[18]===v?y=t[19]:(y=(0,U.jsx)(`div`,{className:`flex flex-col gap-2 py-2`,children:v}),t[18]=v,t[19]=y);let b;t[20]!==i||t[21]!==r||t[22]!==c?(b=c===`error`&&(0,U.jsxs)(Te,{children:[(0,U.jsx)(Ee,{onClick:i,children:`Close`}),(0,U.jsx)(we,{onClick:r,className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:`Retry`})]}),t[20]=i,t[21]=r,t[22]=c,t[23]=b):b=t[23];let x;t[24]!==p||t[25]!==_||t[26]!==y||t[27]!==b?(x=(0,U.jsxs)(Ce,{onEscapeKeyDown:p,children:[_,y,b]}),t[24]=p,t[25]=_,t[26]=y,t[27]=b,t[28]=x):x=t[28];let S;return t[29]!==f||t[30]!==x?(S=(0,U.jsx)(Oe,{open:!0,onOpenChange:f,children:x}),t[29]=f,t[30]=x,t[31]=S):S=t[31],S}var ze=c(`app.use-projects.hook`);function Be(e,t){let n=e.find(e=>e.projectId===t);return{project:n,threadIds:n?.threads.map(e=>e.threadId)??[]}}function Ve(e,t,n){e({type:l.AddDeletingProject,projectId:t});for(let t of n)e({type:l.AddDeletingThread,threadId:t}),e({type:l.ClearChatInputDraft,threadId:t})}function He(e,t,n){e({type:l.RemoveDeletingProject,projectId:t});for(let t of n)e({type:l.RemoveDeletingThread,threadId:t})}function Ue(e){return e instanceof Error?e.message:`Failed to delete project`}async function We({dispatch:e,refreshProjects:t,navigate:n,location:r}){e({type:l.CloseProjectPanel}),e({type:l.SelectThread,threadId:``,projectId:``}),await t(),e({type:l.ConfigUpdated}),r.pathname.startsWith(`/settings/`)&&n(`/`)}async function Ge({projectId:e,projects:t,dispatch:n,refreshProjects:r,navigate:i,location:a,onProgress:o}){let{project:s,threadIds:c}=Be(t,e);Ve(n,e,c);let l=0;o?.({projectId:e,projectName:s?.name??``,step:l,status:`progressing`});let u=window.setInterval(()=>{l=Math.min(l+1,W.length-1),o?.({projectId:e,projectName:s?.name??``,step:l,status:`progressing`})},450);try{await h(e),window.clearInterval(u),await We({dispatch:n,refreshProjects:r,navigate:i,location:a}),o?.({projectId:e,projectName:s?.name??``,step:l,status:`done`})}catch(t){throw window.clearInterval(u),ze.error(`Failed to delete project:`,t),o?.({projectId:e,projectName:s?.name??``,step:l,status:`error`,errorMessage:Ue(t)}),t}finally{He(n,e,c)}}function Ke(e){return e instanceof Error?e.message:`Unknown error`}function qe(e,t){be(),e({type:l.AppendTerminalLine,line:t})}async function Je(e,t,n,r,i){let a=Pe(t).folder;i({type:`system`,content:`Installing package ${n+1}/${r} in ${a}...`}),i({type:`output`,content:`📦 Installing dependencies in ${a}: ${t}`});let o=await C(e,t,!0);o&&await M(o,{onOutput(e){i({type:`output`,content:e})},onError(e){i({type:`error`,content:e})}})}function Ye(e,t){t||(e({type:`system`,content:``}),e({type:`system`,content:`---`}),e({type:`system`,content:``}))}async function Xe({projectId:e,scripts:t,dispatch:n,refreshProjects:r}){function i(e){qe(n,e)}try{n({type:l.SetCreatingProject,isCreating:!0}),n({type:l.SetTerminalOpen,open:!0}),i({type:`system`,content:`Installing dependencies for ${t.length} package${t.length===1?``:`s`}...`});for(let n=0;n<t.length;n++)await Je(e,t[n],n,t.length,i),Ye(i,n===t.length-1);i({type:`system`,content:`All dependencies installed successfully!`}),n({type:l.SetCreatingProject,isCreating:!1}),await r()}catch(e){n({type:l.SetCreatingProject,isCreating:!1}),ze.error(`Failed to run setup script:`,e),i({type:`error`,content:`Failed to run setup script: ${Ke(e)}`})}}async function Ze({pending:e,selectedScripts:t,setPendingSetupScriptConfirmation:n,dispatch:r,refreshProjects:i}){n(null),e&&t.length!==0&&await Xe({projectId:e.projectId,scripts:t,dispatch:r,refreshProjects:i})}function Qe(e){let t=(0,H.c)(14),{dispatch:n,projects:r,refreshProjects:i,navigate:a,location:o,pendingSetupScriptConfirmation:s,setPendingSetupScriptConfirmation:c}=e,l;t[0]!==n||t[1]!==o||t[2]!==a||t[3]!==r||t[4]!==i?(l=async(e,t)=>{await Ge({projectId:e,projects:r,dispatch:n,refreshProjects:i,navigate:a,location:o,onProgress:t})},t[0]=n,t[1]=o,t[2]=a,t[3]=r,t[4]=i,t[5]=l):l=t[5];let u=l,d;t[6]!==n||t[7]!==s||t[8]!==i||t[9]!==c?(d=async e=>{await Ze({pending:s,selectedScripts:e,setPendingSetupScriptConfirmation:c,dispatch:n,refreshProjects:i})},t[6]=n,t[7]=s,t[8]=i,t[9]=c,t[10]=d):d=t[10];let f=d,p;return t[11]!==u||t[12]!==f?(p={confirmDeleteProject:u,resolveSetupScriptConfirmation:f},t[11]=u,t[12]=f,t[13]=p):p=t[13],p}function $e(e){let t=(0,H.c)(32),{consumeProjectStream:n,activeCreationControllerRef:r,projects:i,dispatch:a,toast:o,refreshProjects:s,onThreadCreateStart:c}=e,l;t[0]===n?l=t[1]:(l=async(e,t)=>{let r=e.split(`/`).pop()?.replace(`.git`,``)??`project`;await n({apiCall:n=>E(e,t,n),initialMessage:`Cloning repository: ${e}...`,optimisticProjectName:r,gitUrl:e,mode:`clone`,includeThreadPath:!0,handleSetupScript:!0,logTag:`create project`,catchErrorPrefix:`Failed to create project`})},t[0]=n,t[1]=l);let u=l,d;t[2]===r?d=t[3]:(d=()=>{r.current?.abort(),r.current=null},t[2]=r,t[3]=d);let f=d,m;t[4]===n?m=t[5]:(m=async(e,t,r)=>{await n({apiCall:n=>p(e,t,r,n),initialMessage:`Creating app "${e}"...`,optimisticProjectName:e,mode:`webapp`,handleSetupScript:!1,logTag:`create web app`,catchErrorPrefix:`Failed to create web app`})},t[4]=n,t[5]=m);let h=m,g;t[6]===n?g=t[7]:(g=async e=>{await n({apiCall:t=>b(e,t),initialMessage:`Creating folder "${e}"...`,optimisticProjectName:e,mode:`folder`,handleSetupScript:!1,logTag:`create folder`,catchErrorPrefix:`Failed to create folder`})},t[6]=n,t[7]=g);let _=g,y;t[8]===n?y=t[9]:(y=async e=>{await n({apiCall:t=>D(e,t),initialMessage:`Creating bot "${e}"...`,optimisticProjectName:e,mode:`folder`,projectType:`bot`,handleSetupScript:!1,logTag:`create bot`,catchErrorPrefix:`Failed to create bot`})},t[8]=n,t[9]=y);let S=y,C;t[10]===n?C=t[11]:(C=async(e,t,r)=>{let i=t.replace(/\.zip$/i,``)||`project`;await n({apiCall:n=>v(e,t,r,n),initialMessage:r?`Replacing project from "${t}"...`:`Creating project from "${t}"...`,optimisticProjectName:i,mode:`zip`,handleSetupScript:!1,logTag:`create project from zip`,catchErrorPrefix:`Failed to create project from zip`})},t[10]=n,t[11]=C);let T=C,O;t[12]!==a||t[13]!==c||t[14]!==i||t[15]!==s||t[16]!==o?(O=async(e,t,n)=>ne({projectId:e,title:t,project:i.find(t=>t.projectId===e),dispatch:a,toast:o,refreshProjects:s,onThreadCreateStart:c,sourceThreadId:n?.sourceThreadId,remoteMachineId:n?.remoteMachineId}),t[12]=a,t[13]=c,t[14]=i,t[15]=s,t[16]=o,t[17]=O):O=t[17];let k=O,A;t[18]===n?A=t[19]:(A=async()=>{await n({apiCall:w,initialMessage:`Opening folder...`,optimisticProjectName:`Opening folder...`,mode:`folder`,handleSetupScript:!0,logTag:`open folder`,catchErrorPrefix:`Failed to open folder`})},t[18]=n,t[19]=A);let j=A,M;t[20]===n?M=t[21]:(M=async e=>{let t=e.split(/[/\\]/).filter(Boolean).pop()??`project`;await n({apiCall:t=>x(e,t),initialMessage:`Opening folder: ${e}...`,optimisticProjectName:t,mode:`folder`,handleSetupScript:!0,logTag:`open path`,catchErrorPrefix:`Failed to open folder path`})},t[20]=n,t[21]=M);let N=M,P;return t[22]!==f||t[23]!==S||t[24]!==_||t[25]!==u||t[26]!==k||t[27]!==h||t[28]!==T||t[29]!==j||t[30]!==N?(P={handleCreateProject:u,cancelProjectCreation:f,handleCreateWebApp:h,handleCreateFolder:_,handleCreateBot:S,handleCreateZip:T,handleCreateThread:k,handleOpenFolder:j,handleOpenPath:N},t[22]=f,t[23]=S,t[24]=_,t[25]=u,t[26]=k,t[27]=h,t[28]=T,t[29]=j,t[30]=N,t[31]=P):P=t[31],P}var et=e(t(),1),G=`ToastProvider`,[K,tt,nt]=_e(`Toast`),[rt,it]=de(`Toast`,[nt]),[at,q]=rt(G),ot=e=>{let{__scopeToast:t,label:n=`Notification`,duration:r=5e3,swipeDirection:i=`right`,swipeThreshold:a=50,children:o}=e,[s,c]=V.useState(null),[l,u]=V.useState(0),d=V.useRef(!1),f=V.useRef(!1);return n.trim()||console.error(`Invalid prop \`label\` supplied to \`${G}\`. Expected non-empty \`string\`.`),(0,U.jsx)(K.Provider,{scope:t,children:(0,U.jsx)(at,{scope:t,label:n,duration:r,swipeDirection:i,swipeThreshold:a,toastCount:l,viewport:s,onViewportChange:c,onToastAdd:V.useCallback(()=>u(e=>e+1),[]),onToastRemove:V.useCallback(()=>u(e=>e-1),[]),isFocusedToastEscapeKeyDownRef:d,isClosePausedRef:f,children:o})})};ot.displayName=G;var st=`ToastViewport`,ct=[`F8`],J=`toast.viewportPause`,Y=`toast.viewportResume`,lt=V.forwardRef((e,t)=>{let{__scopeToast:n,hotkey:r=ct,label:i=`Notifications ({hotkey})`,...a}=e,o=q(st,n),s=tt(n),c=V.useRef(null),l=V.useRef(null),u=V.useRef(null),d=V.useRef(null),f=F(t,d,o.onViewportChange),p=r.join(`+`).replace(/Key/g,``).replace(/Digit/g,``),m=o.toastCount>0;V.useEffect(()=>{let e=e=>{r.length!==0&&r.every(t=>e[t]||e.code===t)&&d.current?.focus()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[r]),V.useEffect(()=>{let e=c.current,t=d.current;if(m&&e&&t){let n=()=>{if(!o.isClosePausedRef.current){let e=new CustomEvent(J);t.dispatchEvent(e),o.isClosePausedRef.current=!0}},r=()=>{if(o.isClosePausedRef.current){let e=new CustomEvent(Y);t.dispatchEvent(e),o.isClosePausedRef.current=!1}},i=t=>{e.contains(t.relatedTarget)||r()},a=()=>{e.contains(document.activeElement)||r()};return e.addEventListener(`focusin`,n),e.addEventListener(`focusout`,i),e.addEventListener(`pointermove`,n),e.addEventListener(`pointerleave`,a),window.addEventListener(`blur`,n),window.addEventListener(`focus`,r),()=>{e.removeEventListener(`focusin`,n),e.removeEventListener(`focusout`,i),e.removeEventListener(`pointermove`,n),e.removeEventListener(`pointerleave`,a),window.removeEventListener(`blur`,n),window.removeEventListener(`focus`,r)}}},[m,o.isClosePausedRef]);let h=V.useCallback(({tabbingDirection:e})=>{let t=s().map(t=>{let n=t.ref.current,r=[n,...Pt(n)];return e===`forwards`?r:r.reverse()});return(e===`forwards`?t.reverse():t).flat()},[s]);return V.useEffect(()=>{let e=d.current;if(e){let t=t=>{let n=t.altKey||t.ctrlKey||t.metaKey;if(t.key===`Tab`&&!n){let n=document.activeElement,r=t.shiftKey;if(t.target===e&&r){l.current?.focus();return}let i=h({tabbingDirection:r?`backwards`:`forwards`}),a=i.findIndex(e=>e===n);Ft(i.slice(a+1))?t.preventDefault():r?l.current?.focus():u.current?.focus()}};return e.addEventListener(`keydown`,t),()=>e.removeEventListener(`keydown`,t)}},[s,h]),(0,U.jsxs)(pe,{ref:c,role:`region`,"aria-label":i.replace(`{hotkey}`,p),tabIndex:-1,style:{pointerEvents:m?void 0:`none`},children:[m&&(0,U.jsx)(dt,{ref:l,onFocusFromOutsideViewport:()=>{Ft(h({tabbingDirection:`forwards`}))}}),(0,U.jsx)(K.Slot,{scope:n,children:(0,U.jsx)(B.ol,{tabIndex:-1,...a,ref:f})}),m&&(0,U.jsx)(dt,{ref:u,onFocusFromOutsideViewport:()=>{Ft(h({tabbingDirection:`backwards`}))}})]})});lt.displayName=st;var ut=`ToastFocusProxy`,dt=V.forwardRef((e,t)=>{let{__scopeToast:n,onFocusFromOutsideViewport:r,...i}=e,a=q(ut,n);return(0,U.jsx)(ge,{tabIndex:0,...i,ref:t,style:{position:`fixed`},onFocus:e=>{let t=e.relatedTarget;a.viewport?.contains(t)||r()}})});dt.displayName=ut;var X=`Toast`,ft=`toast.swipeStart`,pt=`toast.swipeMove`,mt=`toast.swipeCancel`,ht=`toast.swipeEnd`,gt=V.forwardRef((e,t)=>{let{forceMount:n,open:r,defaultOpen:i,onOpenChange:a,...o}=e,[s,c]=he({prop:r,defaultProp:i??!0,onChange:a,caller:X});return(0,U.jsx)(fe,{present:n||s,children:(0,U.jsx)(yt,{open:s,...o,ref:t,onClose:()=>c(!1),onPause:z(e.onPause),onResume:z(e.onResume),onSwipeStart:R(e.onSwipeStart,e=>{e.currentTarget.setAttribute(`data-swipe`,`start`)}),onSwipeMove:R(e.onSwipeMove,e=>{let{x:t,y:n}=e.detail.delta;e.currentTarget.setAttribute(`data-swipe`,`move`),e.currentTarget.style.setProperty(`--radix-toast-swipe-move-x`,`${t}px`),e.currentTarget.style.setProperty(`--radix-toast-swipe-move-y`,`${n}px`)}),onSwipeCancel:R(e.onSwipeCancel,e=>{e.currentTarget.setAttribute(`data-swipe`,`cancel`),e.currentTarget.style.removeProperty(`--radix-toast-swipe-move-x`),e.currentTarget.style.removeProperty(`--radix-toast-swipe-move-y`),e.currentTarget.style.removeProperty(`--radix-toast-swipe-end-x`),e.currentTarget.style.removeProperty(`--radix-toast-swipe-end-y`)}),onSwipeEnd:R(e.onSwipeEnd,e=>{let{x:t,y:n}=e.detail.delta;e.currentTarget.setAttribute(`data-swipe`,`end`),e.currentTarget.style.removeProperty(`--radix-toast-swipe-move-x`),e.currentTarget.style.removeProperty(`--radix-toast-swipe-move-y`),e.currentTarget.style.setProperty(`--radix-toast-swipe-end-x`,`${t}px`),e.currentTarget.style.setProperty(`--radix-toast-swipe-end-y`,`${n}px`),c(!1)})})})});gt.displayName=X;var[_t,vt]=rt(X,{onClose(){}}),yt=V.forwardRef((e,t)=>{let{__scopeToast:n,type:r=`foreground`,duration:i,open:a,onClose:o,onEscapeKeyDown:s,onPause:c,onResume:l,onSwipeStart:u,onSwipeMove:d,onSwipeCancel:f,onSwipeEnd:p,...m}=e,h=q(X,n),[g,_]=V.useState(null),v=F(t,e=>_(e)),y=V.useRef(null),b=V.useRef(null),x=i||h.duration,S=V.useRef(0),C=V.useRef(x),w=V.useRef(0),{onToastAdd:T,onToastRemove:E}=h,D=z(()=>{g?.contains(document.activeElement)&&h.viewport?.focus(),o()}),O=V.useCallback(e=>{e&&e!==1/0&&(window.clearTimeout(w.current),S.current=new Date().getTime(),w.current=window.setTimeout(D,e))},[D]);V.useEffect(()=>{let e=h.viewport;if(e){let t=()=>{O(C.current),l?.()},n=()=>{let e=new Date().getTime()-S.current;C.current-=e,window.clearTimeout(w.current),c?.()};return e.addEventListener(J,n),e.addEventListener(Y,t),()=>{e.removeEventListener(J,n),e.removeEventListener(Y,t)}}},[h.viewport,x,c,l,O]),V.useEffect(()=>{a&&!h.isClosePausedRef.current&&O(x)},[a,x,h.isClosePausedRef,O]),V.useEffect(()=>(T(),()=>E()),[T,E]);let k=V.useMemo(()=>g?At(g):null,[g]);return h.viewport?(0,U.jsxs)(U.Fragment,{children:[k&&(0,U.jsx)(bt,{__scopeToast:n,role:`status`,"aria-live":r===`foreground`?`assertive`:`polite`,children:k}),(0,U.jsx)(_t,{scope:n,onClose:D,children:et.createPortal((0,U.jsx)(K.ItemSlot,{scope:n,children:(0,U.jsx)(le,{asChild:!0,onEscapeKeyDown:R(s,()=>{h.isFocusedToastEscapeKeyDownRef.current||D(),h.isFocusedToastEscapeKeyDownRef.current=!1}),children:(0,U.jsx)(B.li,{tabIndex:0,"data-state":a?`open`:`closed`,"data-swipe-direction":h.swipeDirection,...m,ref:v,style:{userSelect:`none`,touchAction:`none`,...e.style},onKeyDown:R(e.onKeyDown,e=>{e.key===`Escape`&&(s?.(e.nativeEvent),e.nativeEvent.defaultPrevented||(h.isFocusedToastEscapeKeyDownRef.current=!0,D()))}),onPointerDown:R(e.onPointerDown,e=>{e.button===0&&(y.current={x:e.clientX,y:e.clientY})}),onPointerMove:R(e.onPointerMove,e=>{if(!y.current)return;let t=e.clientX-y.current.x,n=e.clientY-y.current.y,r=!!b.current,i=[`left`,`right`].includes(h.swipeDirection),a=[`left`,`up`].includes(h.swipeDirection)?Math.min:Math.max,o=i?a(0,t):0,s=i?0:a(0,n),c=e.pointerType===`touch`?10:2,l={x:o,y:s},f={originalEvent:e,delta:l};r?(b.current=l,Z(pt,d,f,{discrete:!1})):jt(l,h.swipeDirection,c)?(b.current=l,Z(ft,u,f,{discrete:!1}),e.target.setPointerCapture(e.pointerId)):(Math.abs(t)>c||Math.abs(n)>c)&&(y.current=null)}),onPointerUp:R(e.onPointerUp,e=>{let t=b.current,n=e.target;if(n.hasPointerCapture(e.pointerId)&&n.releasePointerCapture(e.pointerId),b.current=null,y.current=null,t){let n=e.currentTarget,r={originalEvent:e,delta:t};jt(t,h.swipeDirection,h.swipeThreshold)?Z(ht,p,r,{discrete:!0}):Z(mt,f,r,{discrete:!0}),n.addEventListener(`click`,e=>e.preventDefault(),{once:!0})}})})})}),h.viewport)})]}):null}),bt=e=>{let{__scopeToast:t,children:n,...r}=e,i=q(X,t),[a,o]=V.useState(!1),[s,c]=V.useState(!1);return Mt(()=>o(!0)),V.useEffect(()=>{let e=window.setTimeout(()=>c(!0),1e3);return()=>window.clearTimeout(e)},[]),s?null:(0,U.jsx)(me,{asChild:!0,children:(0,U.jsx)(ge,{...r,children:a&&(0,U.jsxs)(U.Fragment,{children:[i.label,` `,n]})})})},xt=`ToastTitle`,St=V.forwardRef((e,t)=>{let{__scopeToast:n,...r}=e;return(0,U.jsx)(B.div,{...r,ref:t})});St.displayName=xt;var Ct=`ToastDescription`,wt=V.forwardRef((e,t)=>{let{__scopeToast:n,...r}=e;return(0,U.jsx)(B.div,{...r,ref:t})});wt.displayName=Ct;var Tt=`ToastAction`,Et=V.forwardRef((e,t)=>{let{altText:n,...r}=e;return n.trim()?(0,U.jsx)(kt,{altText:n,asChild:!0,children:(0,U.jsx)(Ot,{...r,ref:t})}):(console.error(`Invalid prop \`altText\` supplied to \`${Tt}\`. Expected non-empty \`string\`.`),null)});Et.displayName=Tt;var Dt=`ToastClose`,Ot=V.forwardRef((e,t)=>{let{__scopeToast:n,...r}=e,i=vt(Dt,n);return(0,U.jsx)(kt,{asChild:!0,children:(0,U.jsx)(B.button,{type:`button`,...r,ref:t,onClick:R(e.onClick,i.onClose)})})});Ot.displayName=Dt;var kt=V.forwardRef((e,t)=>{let{__scopeToast:n,altText:r,...i}=e;return(0,U.jsx)(B.div,{"data-radix-toast-announce-exclude":``,"data-radix-toast-announce-alt":r||void 0,...i,ref:t})});function At(e){let t=[];return Array.from(e.childNodes).forEach(e=>{if(e.nodeType===e.TEXT_NODE&&e.textContent&&t.push(e.textContent),Nt(e)){let n=e.ariaHidden||e.hidden||e.style.display===`none`,r=e.dataset.radixToastAnnounceExclude===``;if(!n){if(r){let n=e.dataset.radixToastAnnounceAlt;n&&t.push(n)}else t.push(...At(e))}}}),t}function Z(e,t,n,{discrete:r}){let i=n.originalEvent.currentTarget,a=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?ue(i,a):i.dispatchEvent(a)}var jt=(e,t,n=0)=>{let r=Math.abs(e.x),i=Math.abs(e.y),a=r>i;return t===`left`||t===`right`?a&&r>n:!a&&i>n};function Mt(e=()=>{}){let t=z(e);ce(()=>{let e=0,n=0;return e=window.requestAnimationFrame(()=>n=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(e),window.cancelAnimationFrame(n)}},[t])}function Nt(e){return e.nodeType===e.ELEMENT_NODE}function Pt(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Ft(e){let t=document.activeElement;return e.some(e=>e===t||(e.focus(),document.activeElement!==t))}var It=ot,Lt=lt,Rt=gt,zt=St,Bt=wt,Vt=Et,Ht=Ot,Ut=It,Wt=V.forwardRef((e,t)=>{let n=(0,H.c)(9),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let a;n[3]===r?a=n[4]:(a=I(`fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]`,r),n[3]=r,n[4]=a);let o;return n[5]!==i||n[6]!==t||n[7]!==a?(o=(0,U.jsx)(Lt,{ref:t,className:a,...i}),n[5]=i,n[6]=t,n[7]=a,n[8]=o):o=n[8],o});Wt.displayName=Lt.displayName;var Gt=se(`group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full`,{variants:{variant:{default:`border bg-background text-foreground`,destructive:`destructive group border-destructive bg-destructive text-destructive-foreground`}},defaultVariants:{variant:`default`}}),Kt=V.forwardRef((e,t)=>{let n=(0,H.c)(11),r,i,a;n[0]===e?(r=n[1],i=n[2],a=n[3]):({className:r,variant:a,...i}=e,n[0]=e,n[1]=r,n[2]=i,n[3]=a);let o;n[4]!==r||n[5]!==a?(o=I(Gt({variant:a}),r),n[4]=r,n[5]=a,n[6]=o):o=n[6];let s;return n[7]!==i||n[8]!==t||n[9]!==o?(s=(0,U.jsx)(Rt,{ref:t,className:o,...i}),n[7]=i,n[8]=t,n[9]=o,n[10]=s):s=n[10],s});Kt.displayName=Rt.displayName;var qt=V.forwardRef((e,t)=>{let n=(0,H.c)(9),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let a;n[3]===r?a=n[4]:(a=I(`inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive`,s.body,r),n[3]=r,n[4]=a);let o;return n[5]!==i||n[6]!==t||n[7]!==a?(o=(0,U.jsx)(Vt,{ref:t,className:a,...i}),n[5]=i,n[6]=t,n[7]=a,n[8]=o):o=n[8],o});qt.displayName=Vt.displayName;var Jt=V.forwardRef((e,t)=>{let n=(0,H.c)(10),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let a;n[3]===r?a=n[4]:(a=I(`absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600`,r),n[3]=r,n[4]=a);let o;n[5]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,U.jsx)(oe,{className:`h-4 w-4`}),n[5]=o):o=n[5];let s;return n[6]!==i||n[7]!==t||n[8]!==a?(s=(0,U.jsx)(Ht,{ref:t,className:a,"toast-close":``,...i,children:o}),n[6]=i,n[7]=t,n[8]=a,n[9]=s):s=n[9],s});Jt.displayName=Ht.displayName;var Yt=V.forwardRef((e,t)=>{let n=(0,H.c)(9),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let a;n[3]===r?a=n[4]:(a=I(s.dialogTitle,r),n[3]=r,n[4]=a);let o;return n[5]!==i||n[6]!==t||n[7]!==a?(o=(0,U.jsx)(zt,{ref:t,className:a,...i}),n[5]=i,n[6]=t,n[7]=a,n[8]=o):o=n[8],o});Yt.displayName=zt.displayName;var Xt=V.forwardRef((e,t)=>{let n=(0,H.c)(9),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let a;n[3]===r?a=n[4]:(a=I(s.body,`opacity-90 text-muted-foreground group-[.destructive]:text-destructive-foreground`,r),n[3]=r,n[4]=a);let o;return n[5]!==i||n[6]!==t||n[7]!==a?(o=(0,U.jsx)(Bt,{ref:t,className:a,...i}),n[5]=i,n[6]=t,n[7]=a,n[8]=o):o=n[8],o});Xt.displayName=Bt.displayName;function Zt(e){return(e?.match(/Removing (.+?)\.\.\./))?.[1]?.trim()||void 0}function Qt(e,t){let n=Zt(t),r=e.trim().toLowerCase();return y(e)&&n?{summary:`The connection dropped while Tarsk was deleting files on disk.`,cause:`Removing a large folder can take longer than the browser keeps the progress stream open. WebKit reports this as "Load failed" even though deletion may still be running or may already have finished on the server.`,guidance:[`Refresh the project list and check whether the thread is gone.`,`If the thread is still listed, try deleting again or remove the folder manually: ${n}`],removingPath:n}:y(e)?{summary:`The connection to Tarsk was lost during deletion.`,cause:`The progress stream closed before the server reported completion. This is usually a browser or network timeout, not a message from the delete operation itself.`,guidance:[`Refresh the project list and check whether the thread was removed.`,`Try deleting the thread again if it is still listed.`]}:r.includes(`not found`)?{summary:`Tarsk could not find that thread.`,cause:`The thread may have already been deleted in another window or by a previous attempt.`,guidance:[`Refresh the project list.`,`If the thread is gone, no further action is needed.`]}:r.includes(`failed to remove`)||r.includes(`eperm`)||r.includes(`ebusy`)?{summary:`Tarsk could not remove the thread folder from disk.`,cause:e,guidance:[n?`Close any apps using files in ${n}, then try again.`:`Close any apps using files in the thread folder, then try again.`,`If deletion keeps failing, remove the folder manually and refresh the project list.`],removingPath:n}:{summary:e||`Thread deletion failed for an unknown reason.`,cause:`See the progress output below for where deletion stopped.`,guidance:[`Try deleting the thread again.`,`If the problem persists, check Settings > Logs for details.`],removingPath:n}}function $t(e,t){return[`Thread deletion failed (${e})`,t.summary,`Cause: ${t.cause}`,`What to do: ${t.guidance.join(` `)}`].join(`
|
|
2
|
+
`)}function en(e){return typeof e==`string`&&e.trim().length>0}function Q(e,t){let n=e[t];return en(n)?n:void 0}function tn(e,t){let n=Q(e,`stdout`);n!==void 0&&(t.stdout=n);let r=Q(e,`stderr`);r!==void 0&&(t.stderr=r)}function nn(e,t){let n=e.error;if(en(n)){t.details=n;return}if(!n||typeof n!=`object`)return;let r=n,i=Q(r,`message`);if(i!==void 0&&(t.details=i),t.stdout===void 0){let e=Q(r,`stdout`);e!==void 0&&(t.stdout=e)}if(t.stderr===void 0){let e=Q(r,`stderr`);e!==void 0&&(t.stderr=e)}}function rn(e){if(!e||typeof e!=`object`)return{};let t=e,n={};return tn(t,n),en(t.details)?n.details=t.details:nn(t,n),n}function an(e,t,n){let r=crypto.randomUUID(),i=n.message.trim()||`Unknown error`,a=Qt(i,n.progressOutput),o=$t(r,a),s={errorId:r,message:i,summary:a.summary,cause:a.cause,guidance:a.guidance,removingPath:a.removingPath,projectId:n.projectId,threadId:n.threadId,threadTitle:n.threadTitle,output:n.progressOutput,stdout:n.stdout,stderr:n.stderr,details:n.details,...n.cause===void 0?{}:{rawError:n.cause}};return e.error(o,s),S({level:`ERROR`,context:`app.use-projects.hook`,message:o,data:s}),ye({variant:`destructive`,title:`Failed to delete thread`,description:`Error ID: ${r}\n${a.summary}`,action:(0,U.jsx)(qt,{altText:`Go to Logs`,onClick:()=>{t(`/settings/logs?q=${encodeURIComponent(r)}`)},children:`Go to Logs`})}),r}var on=150,$=c(`app.use-projects.hook`),sn=0;function cn(){let e=Promise.resolve(),t=new Map;function n(n,r,i){let a=t.get(r);if(a)return a;i.reserve(r);let o=(async()=>{let a=e,o=()=>void 0;e=new Promise(e=>{o=e}),await a;try{return await i.deleteThread(n,r)}finally{t.delete(r),i.release(r),o()}})();return t.set(r,o),o}return{runQueuedDeletion:n}}var ln=cn();function un(){let e=(0,H.c)(20),t=d(),n=f(mn),r=f(pn),i=f(fn),a,o;e[0]===i?(a=e[1],o=e[2]):(a=()=>{i>0&&T()},o=[i],e[0]=i,e[1]=a,e[2]=o),(0,V.useLayoutEffect)(a,o);let s=Ae(`projects:bootstrap:${i}`,g),c=(0,V.useRef)(!1),u;e[3]!==s.cloneRootPath||e[4]!==s.projects||e[5]!==t?(u=()=>{t({type:l.SetProjects,projects:s.projects,cloneRootPath:s.cloneRootPath}),t({type:l.SetProjectsLoading,projectsLoading:!1}),k(t)},e[3]=s.cloneRootPath,e[4]=s.projects,e[5]=t,e[6]=u):u=e[6];let p;e[7]!==s||e[8]!==t?(p=[s,t],e[7]=s,e[8]=t,e[9]=p):p=e[9],(0,V.useLayoutEffect)(u,p);let m;e[10]!==s.projects||e[11]!==t||e[12]!==r||e[13]!==n?(m=()=>{if(!c.current){if(n||r){c.current=!0;return}for(let e of s.projects){let n=e.threads.find(dn);if(n){t({type:l.SelectThread,threadId:n.threadId,projectId:e.projectId}),t({type:l.OpenProjectPanel,projectId:e.projectId}),c.current=!0;break}}}},e[10]=s.projects,e[11]=t,e[12]=r,e[13]=n,e[14]=m):m=e[14];let h;return e[15]!==s||e[16]!==t||e[17]!==r||e[18]!==n?(h=[s,t,n,r],e[15]=s,e[16]=t,e[17]=r,e[18]=n,e[19]=h):h=e[19],(0,V.useLayoutEffect)(m,h),null}function dn(e){return e.isSelected}function fn(e){return e.configUpdatedAt}function pn(e){return e.selectedProjectId}function mn(e){return e.selectedThreadId}async function hn(e,t){let{dispatch:n,toast:r,refreshProjects:i,onProjectCreated:a,setPendingSetupScriptConfirmation:o,activeCreationControllerRef:s}=t;n({type:l.SetCreatingProject,isCreating:!0});let c=new AbortController;s.current=c;let u={current:null},d=``,f=!1,p=[],m=null;function h(){if(m&&=(clearTimeout(m),null),p.length===0)return;let e=p.join(``);p.length=0;let t=u.current;t&&N(n,t.toolCallId,t.threadId,e)}function _(e){if(!e)return;let t=`${e}\n`;d+=t,p.push(t),m||=setTimeout(h,on)}let v=null,y=!1,b=null,x=null;function S(t,r){y=!0,b=t,x=r,n({type:l.AddCreatingProject,projectId:t,threadId:r,projectName:e.optimisticProjectName,gitUrl:e.gitUrl??``,projectType:e.projectType}),n({type:l.AddProcessingThread,threadId:r}),a?.(t);let i=te({mode:e.mode,threadId:r,projectId:t,projectName:e.optimisticProjectName});u.current=i,O(n,i,`${e.initialMessage}\n`)}function C(){y&&b&&(n({type:l.RemoveCreatingProject,projectId:b}),x&&n({type:l.RemoveProcessingThread,threadId:x}))}function w(e){!y&&typeof e.threadId==`string`&&typeof e.projectId==`string`&&S(e.projectId,e.threadId),_(typeof e.message==`string`?e.message:``)}function E(t){f=!0;let n=t.project;if(n){if(v=n.id,_(`Project created successfully at: ${e.includeThreadPath&&n.threads&&n.threads.length>0?`${n.path}/${n.threads[0]}`:n.path}`),u.current&&e.mode===`folder`){let t=n.path.split(/[/\\]/).filter(Boolean).pop();t&&t!==e.optimisticProjectName&&(u.current={...u.current,projectName:t})}e.handleSetupScript&&typeof t.suggestedSetupScript==`string`&&o({projectId:n.id,scripts:Le(t.suggestedSetupScript,n.pendingSetupScripts)})}}function D(e){let t=typeof e.message==`string`?e.message:`Unknown error`;C(),_(`Error: ${t}`),u.current||r({title:`Project Creation Failed`,description:t,variant:`destructive`})}function k(t){if(!t||typeof t!=`object`)return;let r=t;try{if(r.type===`progress`)w(r);else if(r.type===`complete`)n({type:l.SetGitAuthRequest,request:null}),E(r);else if(r.type===`error`)n({type:l.SetGitAuthRequest,request:null}),D(r);else if(r.type===`auth_required`){let e=r.auth;e&&n({type:l.SetGitAuthRequest,request:e})}}catch(t){$.error(`Failed to parse ${e.logTag} event`,t)}}async function A(e){if(!v)return;let t=e.projects.find(e=>e.projectId===v);if(t&&t.threads.length>0){let e=t.threads[0].threadId;u.current?.threadId===e?n({type:l.FocusChatInput}):n({type:l.SelectThread,threadId:e,projectId:v,focusInput:!0})}a?.(v)}async function j(){h(),n({type:l.SetCreatingProject,isCreating:!1});let e=u.current;e&&(P(n,e,d,{isError:!f}),n({type:l.RemoveProcessingThread,threadId:e.threadId})),T();let t=await g();n({type:l.SetProjects,projects:t.projects,cloneRootPath:t.cloneRootPath}),n({type:l.SetProjectsLoading,projectsLoading:!1}),await A(t)}function M(t){$.error(`Failed to ${e.logTag}:`,t);let i=t instanceof Error&&t.name===`AbortError`;h(),n({type:l.SetCreatingProject,isCreating:!1});let a=u.current;if(i){f||C(),a&&(n({type:l.RemoveProcessingThread,threadId:a.threadId}),n({type:l.ClearToolCallProgress,toolCallId:a.toolCallId}));return}let o=`${e.catchErrorPrefix}: ${t instanceof Error?t.message:`Unknown error`}`;a?(_(o),P(n,a,d,{isError:!0}),n({type:l.RemoveProcessingThread,threadId:a.threadId})):r({title:`Project Creation Failed`,description:o,variant:`destructive`})}try{let t=await e.apiCall(c.signal);if(!t){h(),s.current=null,n({type:l.SetCreatingProject,isCreating:!1}),await i();return}await ee(t,k),await j()}catch(e){M(e)}finally{s.current===c&&(s.current=null),n({type:l.SetGitAuthRequest,request:null})}}function gn(e){let t=d(),n=f(e=>e.projects),r=f(e=>e.selectedProjectId),i=f(e=>e.selectedThreadId),{toast:s}=ve(),c=o(),p=a(),[h,v]=(0,V.useState)(null),b=(0,V.useRef)(null),x=(0,V.useCallback)(async()=>{let e=++sn;try{t({type:l.SetProjectsLoading,projectsLoading:!0}),T(),ke(`projects:bootstrap:`);let n=await g();return e===sn?(t({type:l.SetProjects,projects:n.projects,cloneRootPath:n.cloneRootPath}),k(t),n.projects):n.projects}catch(e){return $.error(`Failed to refresh projects:`,e),[]}finally{e===sn&&t({type:l.SetProjectsLoading,projectsLoading:!1})}},[t]),S=(0,V.useCallback)(async()=>{let e=await x();if(t({type:l.ConfigUpdated}),!r||!i)return e;let n=e.find(e=>e.projectId===r);return n?(n.threads.some(e=>e.threadId===i)||(t({type:l.ClearThreadCreationSummary,threadId:i}),t(je(r,i,n.threads))),e):(t({type:l.ClearSelection}),e)},[t,x,r,i]),C=u(),w=(0,V.useCallback)((e,n)=>{let{selectedThreadId:r,selectedProjectId:i}=C.getState();(r!==n||i!==e)&&t({type:l.SelectThread,threadId:n,projectId:e}),t({type:l.ClearUnreadAutomatedChat,threadId:n}),_(e,n).catch(e=>{$.error(`Failed to select thread:`,e)})},[t,C]),{handleCreateProject:E,cancelProjectCreation:D,handleCreateWebApp:O,handleCreateFolder:M,handleCreateBot:te,handleCreateZip:ne,handleCreateThread:F,handleOpenFolder:I,handleOpenPath:ie}=$e({consumeProjectStream:(0,V.useCallback)(async n=>{await hn(n,{dispatch:t,toast:s,refreshProjects:x,onProjectCreated:e?.onProjectCreated,setPendingSetupScriptConfirmation:v,activeCreationControllerRef:b})},[t,x,e?.onProjectCreated,s]),activeCreationControllerRef:b,projects:n,dispatch:t,toast:s,refreshProjects:x,onThreadCreateStart:e?.onThreadCreateStart}),L=(0,V.useCallback)(async(e,r)=>{t({type:l.AddDeletingThread,threadId:r}),t({type:l.ClearChatInputDraft,threadId:r});let i=n.find(t=>t.projectId===e),a=i?re(i):`project`,o=i?.threads.find(e=>e.threadId===r)?.title??`thread`,s=C.getState().selectedThreadId===r?A({threadId:r,projectId:e,projectName:a}):null,u=``,d=!0;function f(e){e.trim()&&(u+=`${e}\n`,s&&N(t,s.toolCallId,s.threadId,`${e}\n`))}function p(e){s&&P(t,s,u,{isError:e})}function h(){let n=je(e,r,i?.threads??[]);if(n.type===l.SelectThread){w(n.projectId,n.threadId);return}t(n)}function g(){let n=C.getState().selectedThreadId===r;t({type:l.RemoveThread,projectId:e,threadId:r}),n&&h()}async function _(e){await x(),e&&t({type:l.ConfigUpdated})}s&&j(t,s,`Deleting thread "${o}"...\n`);try{let n=await m(e,r);return n&&await ee(n,t=>{if(!t||typeof t!=`object`)return;let n=t;if(n.type===`progress`)f(typeof n.message==`string`?n.message:``);else if(n.type===`error`){let t=typeof n.message==`string`?n.message:`Unknown error`,i=rn(n);f(`Error: ${t}`),an($,c,{projectId:e,threadId:r,threadTitle:o,message:t,progressOutput:u,...i}),d=!1}}),p(!d),d&&(t({type:l.ClearThreadCreationSummary,threadId:r}),g()),await _(!0),d}catch(t){let n=t instanceof Error?t.message:`Unknown error`,i=rn(t);return y(n)?(f(`Deletion is still running on the server. Open Workspaces to refresh the list.`),p(!1),$.info(`Thread deletion stream disconnected before completion`,{projectId:e,threadId:r,message:n,...i}),!1):n.toLowerCase().includes(`not found`)?(g(),await _(!1),!0):(f(`Error: ${n}`),p(!0),an($,c,{projectId:e,threadId:r,threadTitle:o,message:n,progressOutput:u,cause:t,...i}),!1)}finally{t({type:l.RemoveDeletingThread,threadId:r})}},[w,x,t,c,n,C]),{confirmDeleteProject:ae,resolveSetupScriptConfirmation:oe}=Qe({dispatch:t,projects:n,refreshProjects:x,navigate:c,location:p,pendingSetupScriptConfirmation:h,setPendingSetupScriptConfirmation:v});return{projects:n,selectedProjectId:r,selectedThreadId:i,refreshProjects:x,refreshWorkspaces:S,handleSelectThread:w,handleCreateProject:E,cancelProjectCreation:D,handleCreateWebApp:O,handleCreateFolder:M,handleCreateBot:te,handleCreateZip:ne,handleOpenFolder:I,handleOpenPath:ie,handleCreateThread:F,handleDeleteThread:(0,V.useCallback)(async(e,n)=>ln.runQueuedDeletion(e,n,{reserve(e){t({type:l.AddDeletingThread,threadId:e})},release(e){t({type:l.RemoveDeletingThread,threadId:e})},deleteThread:L}),[t,L]),confirmDeleteProject:ae,pendingSetupScriptConfirmation:h,resolveSetupScriptConfirmation:oe}}export{Jt as a,Yt as c,Ie as d,Fe as f,qt as i,Wt as l,gn as n,Xt as o,Kt as r,Ut as s,un as t,Re as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./dist-CgbWuuq4.js";import{B as t,z as n}from"./index-
|
|
1
|
+
import{t as e}from"./dist-CgbWuuq4.js";import{B as t,z as n}from"./index-CcAwxnT5.js";var r=class extends e{constructor(){super(...arguments),this.selectionStarted=!1}async impact(e){let t=this.patternForImpact(e?.style);this.vibrateWithPattern(t)}async notification(e){let t=this.patternForNotification(e?.type);this.vibrateWithPattern(t)}async vibrate(e){let t=e?.duration||300;this.vibrateWithPattern([t])}async selectionStart(){this.selectionStarted=!0}async selectionChanged(){this.selectionStarted&&this.vibrateWithPattern([70])}async selectionEnd(){this.selectionStarted=!1}patternForImpact(e=n.Heavy){return e===n.Medium?[43]:e===n.Light?[20]:[61]}patternForNotification(e=t.Success){return e===t.Warning?[30,40,30,50,60]:e===t.Error?[27,45,50]:[35,65,21]}vibrateWithPattern(e){if(navigator.vibrate)navigator.vibrate(e);else throw this.unavailable(`Browser does not support the vibrate API`)}};export{r as HapticsWeb};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./dist-CgbWuuq4.js";import{d as t,f as n,u as r}from"./index-
|
|
1
|
+
import{t as e}from"./dist-CgbWuuq4.js";import{d as t,f as n,u as r}from"./index-CcAwxnT5.js";var i=class extends e{async stopAndHideScanner(){console.log(window.OSBarcodeWebScanner),window.OSBarcodeWebScanner&&(await window.OSBarcodeWebScanner.stop(),window.OSBarcodeWebScanner=null),document.getElementById(`cap-os-barcode-scanner-container-dialog`).style.display=`none`}buildScannerElement(){if(document.getElementById(`cap-os-barcode-scanner-container`)){document.getElementById(`cap-os-barcode-scanner-container`).className=`scanner-container-display`;return}let e=document.body.appendChild(document.createElement(`div`));e.id=`cap-os-barcode-scanner-container`;let t=document.createElement(`div`);t.id=`cap-os-barcode-scanner-container-dialog`,t.className=`scanner-dialog`;let n=document.createElement(`div`);n.className=`scanner-dialog-inner`;let r=document.createElement(`span`);r.id=`cap-os-barcode-scanner-close-button`,r.className=`close-button`,r.innerHTML=`×`,n.appendChild(r);let i=document.createElement(`p`);i.innerHTML=` `,n.appendChild(i);let a=document.createElement(`div`);a.className=`scanner-container-full-width`,a.id=`cap-os-barcode-scanner-container-scanner`,n.appendChild(a),t.appendChild(n),e.appendChild(t)}async scanBarcode(e){return this.buildScannerElement(),document.getElementById(`cap-os-barcode-scanner-container-dialog`).style.display=`block`,new Promise((i,a)=>{let o={facingMode:e.cameraDirection===1?`environment`:`user`,hasScannerButton:!1,scanButton:e.scanButton!==void 0&&e.scanButton,showScanLine:!1,scanInstructions:e.scanInstructions?e.scanInstructions:``,orientation:e.scanOrientation?e.scanOrientation:r.PORTRAIT,showCameraSelection:e.web?.showCameraSelection?e.web.showCameraSelection:!1,typeHint:e.hint===17?void 0:e.hint,scannerFPS:e.web?.scannerFPS?e.web.scannerFPS:50},s=!1,c=document.getElementById(`cap-os-barcode-scanner-close-button`);c&&(c.onclick=async()=>{s||(s=!0,await this.stopAndHideScanner(),a(Error(`Couldn’t scan because the process was cancelled.`)))});let l=document.getElementById(`cap-os-barcode-scanner-container-scanner`);if(!l)throw Error(`Scanner Element is required for web`);window.OSBarcodeWebScanner=new n(l.id,{formatsToSupport:o.typeHint===void 0?void 0:[o.typeHint],verbose:void 0});let u={fps:o.scannerFPS,qrbox:l.getBoundingClientRect().width*(9/16)-10,aspectRatio:16/9,videoConstraints:{focusMode:`continuous`,height:{min:576,ideal:1920},deviceId:void 0,facingMode:o.facingMode}};window.OSBarcodeWebScanner.start({facingMode:o.facingMode},u,(e,n)=>{this.stopAndHideScanner(),i({ScanResult:e,format:n.result.format?.format??t.ALL})},e=>{[`NotFoundException`,`No barcode or QR code detected`,`No MultiFormat Readers were able to detect the code`].find(t=>e.indexOf(t)!==-1)||(this.stopAndHideScanner(),console.error(`[Scanner Web Error] ${e}`),a(e))})})}};export{i as CapacitorBarcodeScannerWeb};
|
package/dist/public/index.html
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
<title>Tarsk</title>
|
|
25
25
|
<style>#startup-splash{z-index:9999;color:#fff;opacity:1;background:#101010;place-items:center;transition:opacity .5s;display:grid;position:fixed;inset:0}#startup-splash.is-hidden{opacity:0;pointer-events:none}#startup-splash-content{flex-direction:column;align-items:center;gap:16px;font:600 24px/1.2 system-ui,sans-serif;display:flex}#startup-splash img{object-fit:cover;border-radius:50%;width:128px;height:128px}@media (prefers-reduced-motion:reduce){#startup-splash{transition-duration:0s}}</style>
|
|
26
|
-
<script type="module" crossorigin src="/assets/index-
|
|
26
|
+
<script type="module" crossorigin src="/assets/index-CcAwxnT5.js"></script>
|
|
27
27
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-Dd_uD5pT.js">
|
|
28
28
|
<link rel="modulepreload" crossorigin href="/assets/react-vendor-D61Uve5n.js">
|
|
29
29
|
<link rel="modulepreload" crossorigin href="/assets/chunk-QFMPRPBF-Cy-_pFSM.js">
|
|
@@ -32,24 +32,24 @@
|
|
|
32
32
|
<link rel="modulepreload" crossorigin href="/assets/useInfiniteQuery-BpKy1sCq.js">
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assets/useQuery-DWt09r77.js">
|
|
34
34
|
<link rel="modulepreload" crossorigin href="/assets/dist-v_MvKS2-.js">
|
|
35
|
-
<link rel="modulepreload" crossorigin href="/assets/api-
|
|
36
|
-
<link rel="modulepreload" crossorigin href="/assets/query-keys-
|
|
37
|
-
<link rel="modulepreload" crossorigin href="/assets/use-account-settings-query-
|
|
35
|
+
<link rel="modulepreload" crossorigin href="/assets/api-Cp9I7CxD.js">
|
|
36
|
+
<link rel="modulepreload" crossorigin href="/assets/query-keys-CcnonAAG.js">
|
|
37
|
+
<link rel="modulepreload" crossorigin href="/assets/use-account-settings-query-D_qL1I4w.js">
|
|
38
38
|
<link rel="modulepreload" crossorigin href="/assets/utils-CqsIXqSC.js">
|
|
39
39
|
<link rel="modulepreload" crossorigin href="/assets/store-W78TGOIO.js">
|
|
40
40
|
<link rel="modulepreload" crossorigin href="/assets/terminal-output-activity-D_FxlE-L.js">
|
|
41
|
-
<link rel="modulepreload" crossorigin href="/assets/create-project-workspace-
|
|
41
|
+
<link rel="modulepreload" crossorigin href="/assets/create-project-workspace-CJ94yHAB.js">
|
|
42
42
|
<link rel="modulepreload" crossorigin href="/assets/suspense-resource-DzlMlIgR.js">
|
|
43
|
-
<link rel="modulepreload" crossorigin href="/assets/task-utils-
|
|
43
|
+
<link rel="modulepreload" crossorigin href="/assets/task-utils-Cnq9Eszt.js">
|
|
44
44
|
<link rel="modulepreload" crossorigin href="/assets/random-uuid-Dc3UrwVo.js">
|
|
45
45
|
<link rel="modulepreload" crossorigin href="/assets/use-toast-CKgZ8YeP.js">
|
|
46
|
-
<link rel="modulepreload" crossorigin href="/assets/chat-dock-context-
|
|
46
|
+
<link rel="modulepreload" crossorigin href="/assets/chat-dock-context-DbiJNr3O.js">
|
|
47
47
|
<link rel="modulepreload" crossorigin href="/assets/explorer-tab-context-BwR8CM8l.js">
|
|
48
48
|
<link rel="modulepreload" crossorigin href="/assets/main-tab-context-Dsp4OYi9.js">
|
|
49
|
-
<link rel="modulepreload" crossorigin href="/assets/use-open-chat-dock-panel-
|
|
50
|
-
<link rel="modulepreload" crossorigin href="/assets/remote-media-url-
|
|
49
|
+
<link rel="modulepreload" crossorigin href="/assets/use-open-chat-dock-panel-CXzpgxVs.js">
|
|
50
|
+
<link rel="modulepreload" crossorigin href="/assets/remote-media-url-C-GdJb-D.js">
|
|
51
51
|
<link rel="modulepreload" crossorigin href="/assets/dist-CgbWuuq4.js">
|
|
52
|
-
<link rel="modulepreload" crossorigin href="/assets/chat-handlers-context-
|
|
52
|
+
<link rel="modulepreload" crossorigin href="/assets/chat-handlers-context-DYU2LQ5V.js">
|
|
53
53
|
<link rel="modulepreload" crossorigin href="/assets/explorer-media-CRzhs0NW.js">
|
|
54
54
|
<link rel="modulepreload" crossorigin href="/assets/createLucideIcon-2A3hmV_e.js">
|
|
55
55
|
<link rel="modulepreload" crossorigin href="/assets/check-skFQ1X72.js">
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
<link rel="modulepreload" crossorigin href="/assets/button-DDaJhJP1.js">
|
|
70
70
|
<link rel="modulepreload" crossorigin href="/assets/dist-2xH_pFmV.js">
|
|
71
71
|
<link rel="modulepreload" crossorigin href="/assets/tooltip-CqwCZ7wt.js">
|
|
72
|
-
<link rel="modulepreload" crossorigin href="/assets/markdown-renderer-
|
|
72
|
+
<link rel="modulepreload" crossorigin href="/assets/markdown-renderer-DQONI6WG.js">
|
|
73
73
|
<link rel="modulepreload" crossorigin href="/assets/chevron-down-Bpo4ncEN.js">
|
|
74
74
|
<link rel="modulepreload" crossorigin href="/assets/chevron-right-Dga3q1bZ.js">
|
|
75
75
|
<link rel="modulepreload" crossorigin href="/assets/chevron-up-BxgjX7B3.js">
|
|
@@ -84,17 +84,17 @@
|
|
|
84
84
|
<link rel="modulepreload" crossorigin href="/assets/dist-DOz2WXwX.js">
|
|
85
85
|
<link rel="modulepreload" crossorigin href="/assets/dist-pCVg1Jdl.js">
|
|
86
86
|
<link rel="modulepreload" crossorigin href="/assets/dist-JGbQ_EJY.js">
|
|
87
|
-
<link rel="modulepreload" crossorigin href="/assets/scroll-area-
|
|
87
|
+
<link rel="modulepreload" crossorigin href="/assets/scroll-area-DGF9wUqQ.js">
|
|
88
88
|
<link rel="modulepreload" crossorigin href="/assets/progress-indicator-hJ74ac5W.js">
|
|
89
89
|
<link rel="modulepreload" crossorigin href="/assets/alert-dialog-BcZULJsX.js">
|
|
90
90
|
<link rel="modulepreload" crossorigin href="/assets/use-suspense-resource-uCX26gOk.js">
|
|
91
|
-
<link rel="modulepreload" crossorigin href="/assets/use-projects-
|
|
92
|
-
<link rel="modulepreload" crossorigin href="/assets/api-
|
|
93
|
-
<link rel="modulepreload" crossorigin href="/assets/explorer-file-drop-
|
|
91
|
+
<link rel="modulepreload" crossorigin href="/assets/use-projects-B0xTjTaA.js">
|
|
92
|
+
<link rel="modulepreload" crossorigin href="/assets/api-8Rp2LlXt.js">
|
|
93
|
+
<link rel="modulepreload" crossorigin href="/assets/explorer-file-drop-DAP7ha-E.js">
|
|
94
94
|
<link rel="modulepreload" crossorigin href="/assets/dist-CkGJjZXY.js">
|
|
95
|
-
<link rel="modulepreload" crossorigin href="/assets/select-
|
|
96
|
-
<link rel="modulepreload" crossorigin href="/assets/mcp-manager-
|
|
97
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
95
|
+
<link rel="modulepreload" crossorigin href="/assets/select-DMcNYwgt.js">
|
|
96
|
+
<link rel="modulepreload" crossorigin href="/assets/mcp-manager-D2FG-h2e.js">
|
|
97
|
+
<link rel="stylesheet" crossorigin href="/assets/index-dNrgKdYv.css">
|
|
98
98
|
</head>
|
|
99
99
|
<body class="font-sans antialiased">
|
|
100
100
|
<div id="startup-splash" role="status" aria-label="Tarsk is starting">
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tarsk",
|
|
3
|
-
"version": "0.6.
|
|
4
|
-
"description": "CLI for Tarsk
|
|
3
|
+
"version": "0.6.89",
|
|
4
|
+
"description": "CLI for Tarsk",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
7
7
|
"git",
|
|
8
|
-
"
|
|
9
|
-
"
|
|
8
|
+
"coding",
|
|
9
|
+
"agent"
|
|
10
10
|
],
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"author": "",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,o as n,t as r}from"./react-vendor-D61Uve5n.js";import{s as i}from"./chunk-QFMPRPBF-Cy-_pFSM.js";import{n as a}from"./QueryClientProvider-CYXTUmYo.js";import{t as o}from"./useQuery-DWt09r77.js";import{U as s}from"./dist-v_MvKS2-.js";import{r as c}from"./store-W78TGOIO.js";import{A as l,_n as u,pi as d,rt as f,sn as p}from"./api-C4ukGdyH.js";import{t as m}from"./utils-CqsIXqSC.js";import{t as h}from"./check-skFQ1X72.js";import{t as g}from"./button-DDaJhJP1.js";import{t as _}from"./use-toast-CKgZ8YeP.js";import{t as v}from"./query-keys-BwswkbMn.js";import{Cn as ee,Rt as y,at as b,er as x,gt as S,it as te,wn as ne,yr as C}from"./index-CoY8DilQ.js";import{t as re}from"./delete-confirm-dialog-D1N86piR.js";var w=e(n(),1),T=t();function E(){return v.account.info()}function ie(e){return e.invalidateQueries({queryKey:E()})}function ae(){let e=(0,T.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:E(),queryFn:f,refetchOnWindowFocus:!1},e[0]=t):t=e[0],o(t)}var D=r(),O=500;function k(e){let t=(0,T.c)(6),{title:n,description:r,children:i}=e,a;t[0]!==r||t[1]!==n?(a=(0,D.jsx)(b,{title:n,description:r,sticky:!1}),t[0]=r,t[1]=n,t[2]=a):a=t[2];let o;return t[3]!==i||t[4]!==a?(o=(0,D.jsxs)(S,{children:[a,i]}),t[3]=i,t[4]=a,t[5]=o):o=t[5],o}function A(){let e=(0,T.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,D.jsxs)(`div`,{className:`flex-1 space-y-2 rounded-xl border bg-card p-5`,children:[(0,D.jsx)(y,{className:`h-4 w-20`}),(0,D.jsx)(y,{className:`h-9 w-28`})]}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,D.jsxs)(`div`,{className:`flex gap-4 px-6 pb-6 pt-6`,children:[t,(0,D.jsxs)(`div`,{className:`flex-1 space-y-3 rounded-xl border bg-card p-5`,children:[(0,D.jsx)(y,{className:`h-4 w-24`}),(0,D.jsx)(y,{className:`h-6 w-32`}),(0,D.jsx)(y,{className:`h-4 w-full`})]})]}),e[1]=n):n=e[1],n}function j(){let e=(0,T.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-4 px-6 py-5`,children:[(0,D.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[(0,D.jsx)(y,{className:`h-5 w-28`}),(0,D.jsx)(y,{className:`h-4 w-64`})]}),(0,D.jsx)(y,{className:`h-9 w-28 shrink-0`})]}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,D.jsxs)(`div`,{className:`divide-y divide-table-border`,children:[t,(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-4 px-6 py-5`,children:[(0,D.jsxs)(`div`,{className:`flex-1 space-y-1`,children:[(0,D.jsx)(y,{className:`h-5 w-36`}),(0,D.jsx)(y,{className:`h-4 w-56`}),(0,D.jsx)(y,{className:`h-4 w-32`})]}),(0,D.jsx)(y,{className:`h-9 w-24 shrink-0`})]})]}),e[1]=n):n=e[1],n}function M(e){let t=(0,T.c)(20),{isPro:n,promptsRemaining:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,D.jsxs)(`div`,{className:m(s.label,`flex items-center gap-2 text-muted-foreground`),children:[(0,D.jsx)(x,{className:`h-4 w-4`}),`Balance`]}),t[0]=i):i=t[0];let a;t[1]!==n||t[2]!==r?(a=(0,D.jsxs)(`div`,{className:`flex-1 space-y-2 rounded-xl border bg-card p-5`,children:[i,(0,D.jsx)(`div`,{className:`flex items-end gap-2`,children:n?(0,D.jsx)(`span`,{className:s.stat,children:`Unlimited`}):(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`span`,{className:s.stat,children:r.toLocaleString()}),(0,D.jsx)(`span`,{className:`${s.caption} mb-1`,children:`prompts remaining`})]})})]}),t[1]=n,t[2]=r,t[3]=a):a=t[3];let o;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,D.jsxs)(`div`,{className:m(s.label,`flex items-center gap-2 text-muted-foreground`),children:[(0,D.jsx)(C,{className:`h-4 w-4`}),`Current Plan`]}),t[4]=o):o=t[4];let c=n?`Unlimited Pro`:`Pay as you go`,l;t[5]===c?l=t[6]:(l=(0,D.jsx)(`span`,{className:s.label,children:c}),t[5]=c,t[6]=l);let u;t[7]===n?u=t[8]:(u=n?(0,D.jsx)(`span`,{className:m(s.compact,`rounded-full bg-primary/10 px-2 py-0.5 font-medium text-primary`),children:`Active`}):null,t[7]=n,t[8]=u);let d;t[9]!==l||t[10]!==u?(d=(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[l,u]}),t[9]=l,t[10]=u,t[11]=d):d=t[11];let f=n?`You have unlimited prompts with no restrictions.`:`Purchase prompts as needed. Upgrade to Pro for unlimited access.`,p;t[12]===f?p=t[13]:(p=(0,D.jsx)(`p`,{className:s.bodyMuted,children:f}),t[12]=f,t[13]=p);let h;t[14]!==d||t[15]!==p?(h=(0,D.jsxs)(`div`,{className:`flex-1 space-y-3 rounded-xl border bg-card p-5`,children:[o,d,p]}),t[14]=d,t[15]=p,t[16]=h):h=t[16];let g;return t[17]!==h||t[18]!==a?(g=(0,D.jsxs)(`div`,{className:`flex gap-4 px-6 pb-6 pt-6`,children:[a,h]}),t[17]=h,t[18]=a,t[19]=g):g=t[19],g}function N(e){let t=(0,T.c)(13),{onPurchasePrompts:n,onUpgradeToPro:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,D.jsxs)(`div`,{className:`space-y-1`,children:[(0,D.jsx)(`span`,{className:s.label,children:`1,000 Prompts`}),(0,D.jsx)(`p`,{className:s.bodyMuted,children:`Top up your balance with 1,000 additional prompts for $5.`})]}),t[0]=i):i=t[0];let a;t[1]===n?a=t[2]:(a=(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-4 px-6 py-5`,children:[i,(0,D.jsx)(g,{onClick:n,className:`shrink-0`,children:`Top Up Balance`})]}),t[1]=n,t[2]=a);let o,c,l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(C,{className:`h-4 w-4 text-primary`}),(0,D.jsx)(`span`,{className:s.label,children:`Unlimited Pro Plan`})]}),c=(0,D.jsx)(`p`,{className:s.bodyMuted,children:`Unlimited prompts for $100 and lifetime access to Tarsk.`}),l=m(s.bodyMuted,`space-y-0.5`),t[3]=o,t[4]=c,t[5]=l):(o=t[3],c=t[4],l=t[5]);let u;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,D.jsxs)(`li`,{className:`flex items-center gap-1.5`,children:[(0,D.jsx)(h,{className:`h-3 w-3 text-primary`}),`Unlimited prompts`]}),t[6]=u):u=t[6];let d;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,D.jsxs)(`div`,{className:`space-y-1`,children:[o,c,(0,D.jsxs)(`ul`,{className:l,children:[u,(0,D.jsxs)(`li`,{className:`flex items-center gap-1.5`,children:[(0,D.jsx)(h,{className:`h-3 w-3 text-primary`}),`Priority access`]})]})]}),t[7]=d):d=t[7];let f;t[8]===r?f=t[9]:(f=(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-4 px-6 py-5`,children:[d,(0,D.jsx)(g,{onClick:r,className:`shrink-0`,children:`Purchase`})]}),t[8]=r,t[9]=f);let p;return t[10]!==a||t[11]!==f?(p=(0,D.jsxs)(`div`,{className:`divide-y divide-table-border`,children:[a,f]}),t[10]=a,t[11]=f,t[12]=p):p=t[12],p}function P(){let e=(0,T.c)(41),t=a(),{data:n,isLoading:r,error:o}=ae(),[f,m]=(0,w.useState)(!1),[h,v]=(0,w.useState)(!1),y=i(),b=c(oe).reduce(F,0),x,S;e[0]===o?(x=e[1],S=e[2]):(x=()=>{o&&_({title:`Error`,description:o instanceof Error?o.message:`Failed to load account info`,variant:`destructive`})},S=[o],e[0]=o,e[1]=x,e[2]=S),(0,w.useEffect)(x,S);let C,E;e[3]===t?(C=e[4],E=e[5]):(C=()=>{let e=0,n=function(){if(document.visibilityState!==`visible`)return;let n=Date.now();n-e<O||(e=n,ie(t))};return document.addEventListener(`visibilitychange`,n),window.addEventListener(`focus`,n),()=>{document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`focus`,n)}},E=[t],e[3]=t,e[4]=C,e[5]=E),(0,w.useEffect)(C,E);let P;e[6]===n?.clientReferenceId?P=e[7]:(P=function(){let e=n?.clientReferenceId??``;p(`https://buy.stripe.com/14AcN6feK0Jjbheb2H3Nm03?client_reference_id=${e}`)},e[6]=n?.clientReferenceId,e[7]=P);let I=P,L;e[8]===n?.clientReferenceId?L=e[9]:(L=function(){let e=n?.clientReferenceId??``;p(`https://buy.stripe.com/9B67sMd6CgIh70Y0o33Nm04?client_reference_id=${e}`)},e[8]=n?.clientReferenceId,e[9]=L);let R=L,z;e[10]===Symbol.for(`react.memo_cache_sentinel`)?(z=async function(){v(!0);try{if(await l(),d())try{await u()}catch{}window.close()}catch(e){let t=e;v(!1),m(!1),_({title:`Error`,description:t instanceof Error?t.message:`Failed to delete account`,variant:`destructive`})}},e[10]=z):z=e[10];let se=z,B=n?.plan===`unlimited-pro`,V=r&&n===void 0,H=n===void 0?r:!B,U;e[11]!==n?.promptsRemaining||e[12]!==V||e[13]!==B?(U=(0,D.jsx)(k,{title:`Account`,description:`Manage your Tarsk plan and prompt balance.`,children:V?(0,D.jsx)(A,{}):(0,D.jsx)(M,{isPro:B,promptsRemaining:n?.promptsRemaining??0})}),e[11]=n?.promptsRemaining,e[12]=V,e[13]=B,e[14]=U):U=e[14];let W;e[15]!==I||e[16]!==R||e[17]!==V||e[18]!==H?(W=H?(0,D.jsx)(k,{title:`Add Prompts`,description:`Top up your balance or upgrade to Pro for unlimited access.`,children:V?(0,D.jsx)(j,{}):(0,D.jsx)(N,{onPurchasePrompts:I,onUpgradeToPro:R})}):null,e[15]=I,e[16]=R,e[17]=V,e[18]=H,e[19]=W):W=e[19];let G;e[20]!==y||e[21]!==b?(G=b>0?(0,D.jsxs)(te,{variant:`error`,children:[(0,D.jsxs)(`span`,{className:`flex items-start gap-2`,children:[(0,D.jsx)(ee,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,D.jsxs)(`span`,{children:[`You have `,b,` workspace`,` `,b===1?`folder`:`folders`,` listed in Storage. Clear`,` `,b===1?`it`:`them`,` first under Storage — deleting your account does not remove those folders.`]})]}),(0,D.jsx)(`div`,{className:`mt-3`,children:(0,D.jsx)(g,{variant:`outline`,size:`sm`,onClick:()=>y(`/settings/storage`),children:`Go to Storage`})})]}):null,e[20]=y,e[21]=b,e[22]=G):G=e[22];let K;e[23]===Symbol.for(`react.memo_cache_sentinel`)?(K=(0,D.jsx)(`p`,{className:s.bodyMuted,children:`This removes the Tarsk database and any logs on this machine and cannot be undone.`}),e[23]=K):K=e[23];let q;e[24]===Symbol.for(`react.memo_cache_sentinel`)?(q=(0,D.jsxs)(g,{variant:`destructive`,onClick:()=>m(!0),children:[(0,D.jsx)(ne,{className:`h-4 w-4`}),`Delete Account`]}),e[24]=q):q=e[24];let J;e[25]===G?J=e[26]:(J=(0,D.jsx)(k,{title:`Delete Account`,description:`Permanently delete the Tarsk database and any logs on this device.`,children:(0,D.jsxs)(`div`,{className:`space-y-4 px-6 pb-6 pt-6`,children:[G,K,q]})}),e[25]=G,e[26]=J);let Y;e[27]!==J||e[28]!==U||e[29]!==W?(Y=(0,D.jsxs)(`div`,{className:`divide-y divide-table-border [&>*]:rounded-none`,children:[U,W,J]}),e[27]=J,e[28]=U,e[29]=W,e[30]=Y):Y=e[30];let X;e[31]===h?X=e[32]:(X=e=>{!e&&!h&&m(!1)},e[31]=h,e[32]=X);let Z;e[33]===Symbol.for(`react.memo_cache_sentinel`)?(Z=()=>void se(),e[33]=Z):Z=e[33];let Q;e[34]!==h||e[35]!==f||e[36]!==X?(Q=(0,D.jsx)(re,{open:f,onOpenChange:X,title:`Delete account?`,description:`This permanently deletes the Tarsk database and any logs on this device. The app will close and you can relaunch it. This action cannot be undone.`,onConfirm:Z,confirming:h,confirmLabel:`Delete Account`,confirmingLabel:`Deleting...`}),e[34]=h,e[35]=f,e[36]=X,e[37]=Q):Q=e[37];let $;return e[38]!==Y||e[39]!==Q?($=(0,D.jsxs)(`div`,{className:`frosted-scrollbar flex h-full min-h-0 flex-col overflow-auto`,children:[Y,Q]}),e[38]=Y,e[39]=Q,e[40]=$):$=e[40],$}function F(e,t){return e+t.threads.length}function oe(e){return e.projects}export{P as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ai as e,ci as t,di as n,ii as r,li as i,ri as a,si as o,ui as s}from"./api-C4ukGdyH.js";async function c(t,n,i=!1){return e(`api/threads/${r(t)}/explorer?path=${encodeURIComponent(n)}&recursive=${i}`)}async function l(t,n){return e(`api/threads/${r(t)}/ai-file?path=${encodeURIComponent(n)}`)}async function u(e,t,i){return n(`api/threads/${r(e)}/ai-file`,{path:t,content:i})}async function d(e,t){return a(`api/threads/${r(e)}/explorer?path=${encodeURIComponent(t)}`)}async function f(e,n,i){return t(`api/threads/${r(e)}/explorer`,{path:n,newName:i})}async function p(e,t,n){return i(`api/threads/${r(e)}/explorer/file`,{dirPath:t,name:n})}async function m(e,t,n){let i=new URLSearchParams({dirPath:t,name:n.name});return s(`api/threads/${r(e)}/explorer/upload?${i.toString()}`,n)}async function h(e,t){return o(`api/threads/${r(e)}/explorer/media?path=${encodeURIComponent(t)}`)}async function g(e,t,n){return i(`api/threads/${r(e)}/explorer/folder`,{dirPath:t,name:n})}async function _(e,t){return i(`api/threads/${r(e)}/explorer/open`,{path:t})}async function v(e,t){return i(`api/threads/${r(e)}/explorer/gitignore`,{path:t})}async function y(e,t){return i(`api/threads/${r(e)}/explorer/print-markdown`,{path:t})}export{l as a,_ as c,u as d,m as f,h as i,y as l,g as n,v as o,d as r,c as s,p as t,f as u};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{et as e,q as t,x as n}from"./dist-v_MvKS2-.js";var r=`order`,i=/^(localhost|127\.0\.0\.1)$/i;function a(e){return i.test(e)}function o(e){return!e||e.startsWith(`data:`)||/^https?:\/\//i.test(e)}function s(e,t){let n=e.trim();if(!n||n.startsWith(`data:`)||!/^https?:\/\//i.test(n))return e;let r;try{r=new URL(n)}catch{return e}if(!a(r.hostname))return e;let i;try{i=new URL(t)}catch{return e}return`${i.origin}${r.pathname}${r.search}${r.hash}`}function c(e,t){return o(e)?e:`${t.replace(/\/$/,``)}${e.startsWith(`/`)?e:`/${e}`}`}function l(e){try{let t=new URL(e,`http://localhost`),n=t.searchParams.get(`path`);if(n){let e=n.split(/[/\\]/).pop();if(e)return e}let r=t.pathname.split(`/`).pop();if(r?.includes(`.`))return r}catch{}}var u=`Uncommitted changes`;function d(e,t){let n=Math.max(t,0),r=Math.max(e-n,0);return n>0&&r>0?`uncommitted changes (${r} modified, ${n} untracked)`:n>0?`untracked files (${n})`:`uncommitted changes (${e} file${e===1?``:`s`})`}function f(e,t){let n=d(e,t);return`${n.charAt(0).toUpperCase()}${n.slice(1)}`}function p(e){return e===`changes`||e===`open-pr`||e===`update-pr`||e===`no-pr`||e===`merged-pr`?e:e===!0&&`changes`}function m(e){return typeof e==`number`&&Number.isInteger(e)&&e>0?e:void 0}function h(e){return e===`open-pr`||e===`update-pr`||e===`no-pr`}function g(e){return e===`open-pr`||e===`update-pr`}function _(e){return e===`merged-pr`}function ee(e){switch(e){case`changes`:return u;case`open-pr`:return`Open pull request`;case`update-pr`:return`Unpushed commits on open pull request`;case`no-pr`:return`Committed changes, no pull request yet`;case`merged-pr`:return`Pull request merged`;default:return}}var v=/^(\d{3})\s*:\s*([\s\S]+)$/,te=new Set([`provider returned error`,`error`]);function y(e){let t=e.trim();if(!t)return t;let n=ne(t);if(n)return n;let r=t.match(v);if(r){let e=r[1],t=b(x(r[2]?.trim()??``));if(t)return t;if(e===`429`)return`This model is temporarily rate-limited. Please retry shortly.`}return b(x(t))||t}function ne(e){let t=e.lastIndexOf(`}`);if(t===-1||t>=e.length-1)return;let n=e.slice(t+1).trim();if(!n||n.startsWith(`{`)||n.startsWith(`[`))return;let r=e.slice(0,t+1).trim();if(!v.test(r))return;let i=r.match(v);if(i&&x(i[2]?.trim()??``)!==void 0)return n}function b(e){if(!e||typeof e!=`object`)return;let t=e,n=re(t.metadata);if(n)return n;if(t.error&&typeof t.error==`object`){let e=b(t.error);if(e)return e}if(typeof t.message==`string`){let e=t.message.trim();if(e&&!te.has(e.toLowerCase()))return e}if(t.code===429||t.code===`429`)return`This model is temporarily rate-limited. Please retry shortly.`}function re(e){if(!e||typeof e!=`object`)return;let t=e;if(typeof t.raw==`string`&&t.raw.trim())return t.raw.trim();if(Array.isArray(t.previouserrors))for(let e of t.previouserrors){if(!e||typeof e!=`object`)continue;let t=e.raw;if(typeof t==`string`&&t.trim())return t.trim()}}function x(e){if(e)try{return JSON.parse(e)}catch{return}}var ie=`home.tarsk.io`,S=`tarsk.net`,ae=`Sign in with the account that owns this Tarsk.`,oe=`abcdefghijkmnpqrstuvwxyz23456789`,se=10,ce=[`off`,`starting`,`ready`,`error`];function le(e){return ce.includes(e)}function ue(e){return e.trim().toLowerCase().replace(/:\d+$/,``)}function de(e){return ue(e)===ie}function fe(e){if(e.length!==se)return!1;for(let t of e)if(!oe.includes(t))return!1;return!0}function C(e){let t=ue(e),n=`.${S}`;if(!t.endsWith(n))return null;let r=t.slice(0,-n.length);return fe(r)?r:null}function w(e){return C(e)!==null}function pe(e){return fe(e)?`${e}.${S}`:null}function me(e){let t=pe(e);return t?`https://${t}`:null}var T=function(e){return e.PACKAGE_MANAGER=`tarsk.create-project.packageManager`,e.COMMIT_METHOD=`tarsk.create-project.commitMethod`,e.TEMPLATE_ID=`tarsk.create-project.templateId`,e.CREATE_BRANCH_AFTER_PR=`createBranchAfterPR`,e.CREATE_WORKSPACE_AFTER_PR=`createWorkspaceAfterPR`,e.PRIVATE_REPOSITORY_DEFAULT=`privateRepositoryDefault`,e.NEW_CHAT_ON_NEW_BRANCH=`newChatOnNewBranch`,e.FONT_SCALE=`tarsk.general.fontScale`,e.ACTIVITY_BAR_POSITION=`tarsk.general.activityBarPosition`,e.BRAND_COLOR=`tarsk.general.brandColor`,e.OPEN_WITH_PROGRAM=`tarsk.general.openWithProgram`,e.SERVER_URL=`tarsk.server.url`,e.SERVER_BIND_MODE=`tarsk.general.serverBindMode`,e.HISTORY_COLUMNS=`tarsk.settings.historyColumns`,e.TASK_LIST_VIEW_MODE=`tarsk.tasks.viewMode`,e.AUTOMATION_LIST_VIEW_MODE=`tarsk.automations.viewMode`,e.LAST_TASK_TAG=`tarsk.tasks.lastTag`,e}({}),E=function(e){return e.MESSAGE_HISTORY=`chat_message_history`,e.BASH_COMMAND_DURATIONS=`tarsk.bash-command-durations`,e.SKILL_CATALOG_PREFIX=`tarsk.skills.catalog.`,e.SKILL_SOURCE_SELECTION=`tarsk.skills.selectedSource`,e.PROJECT_SESSION_OPEN_PREFIX=`tarsk.project-session-open.`,e}({});function D(e){return typeof localStorage>`u`?null:localStorage.getItem(e)}function O(e,t){typeof localStorage<`u`&&localStorage.setItem(e,t)}function he(e){return typeof sessionStorage>`u`?null:sessionStorage.getItem(e)}function k(e,t){typeof sessionStorage<`u`&&sessionStorage.setItem(e,t)}function ge(e=`npm`){return D(T.PACKAGE_MANAGER)??e}function _e(e){O(T.PACKAGE_MANAGER,e)}function ve(e=`pull-request`){return D(T.COMMIT_METHOD)??e}function ye(e){O(T.COMMIT_METHOD,e)}function be(e=``){return D(T.TEMPLATE_ID)??e}function xe(e){O(T.TEMPLATE_ID,e)}function Se(e=!1){let t=D(T.CREATE_BRANCH_AFTER_PR);return t===null?e:t===`true`}function Ce(e){O(T.CREATE_BRANCH_AFTER_PR,e.toString())}function we(e=!1){let t=D(T.CREATE_WORKSPACE_AFTER_PR);return t===null?e:t===`true`}function Te(e){O(T.CREATE_WORKSPACE_AFTER_PR,e.toString())}function Ee(e=!1){let t=D(T.PRIVATE_REPOSITORY_DEFAULT);return t===null?e:t===`true`}function De(e){O(T.PRIVATE_REPOSITORY_DEFAULT,e.toString())}function Oe(e=!1){let t=D(T.NEW_CHAT_ON_NEW_BRANCH);return t===null?e:t===`true`}function ke(e){O(T.NEW_CHAT_ON_NEW_BRANCH,e.toString())}function Ae(){let e=he(E.MESSAGE_HISTORY);return e?JSON.parse(e):[]}function je(e){let t=Ae();e.trim()&&t[t.length-1]!==e&&(t.push(e),k(E.MESSAGE_HISTORY,JSON.stringify(t)))}function Me(e){return typeof sessionStorage>`u`?null:sessionStorage.getItem(e)}function Ne(e,t){typeof sessionStorage<`u`&&sessionStorage.setItem(e,t)}function Pe(e=`default`){return Me(E.SKILL_SOURCE_SELECTION)??e}function Fe(e){Ne(E.SKILL_SOURCE_SELECTION,e)}function A(e){return`${E.SKILL_CATALOG_PREFIX}${e}`}function Ie(e){let t=Me(A(e));if(!t)return null;try{return JSON.parse(t)}catch{return null}}function Le(e,t){Ne(A(e),JSON.stringify(t))}function Re(e){typeof sessionStorage<`u`&&sessionStorage.removeItem(A(e))}var ze=`tarsk.skills.customSources`;function Be(){if(typeof localStorage>`u`)return[];let e=localStorage.getItem(ze);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.id==`string`&&typeof e.title==`string`&&typeof e.url==`string`):[]}catch{return[]}}function Ve(){typeof localStorage<`u`&&localStorage.removeItem(ze)}function He(){typeof localStorage<`u`&&(localStorage.removeItem(`tarsk.general.conversationLevel`),localStorage.removeItem(`tarsk.general.imageBackground`),localStorage.removeItem(`tarsk.general.wallpaperMode`),localStorage.removeItem(`tarsk.general.wallpaperColor`),localStorage.removeItem(`tarsk.general.frostedPanelOpacity`))}typeof localStorage<`u`&&He();var Ue=new Set([`top`,`left`,`right`,`bottom`]);function We(e){return Ue.has(e)}function Ge(e=`top`){let t=D(T.ACTIVITY_BAR_POSITION);return t!==null&&We(t)?t:e}function Ke(e){O(T.ACTIVITY_BAR_POSITION,e)}function qe(e){return e===`left`||e===`right`}function Je(e){switch(e){case`top`:return`bottom`;case`bottom`:return`top`;case`left`:return`right`;case`right`:return`left`}}function Ye(e=100){let t=D(T.FONT_SCALE);if(t!==null){let e=Number(t);if(Number.isFinite(e)&&e>=50&&e<=300)return e}return e}function Xe(e){O(T.FONT_SCALE,String(e))}var Ze=/^#[0-9a-fA-F]{6}$/,Qe=`#82c309`;function $e(e=Qe){let t=D(T.BRAND_COLOR);return t!==null&&Ze.test(t)?t:e}function et(e){Ze.test(e)&&O(T.BRAND_COLOR,e.toLowerCase())}var tt=new Set([`summary`,`list`,`kanban`]);function nt(e){return e===`automations`?T.AUTOMATION_LIST_VIEW_MODE:T.TASK_LIST_VIEW_MODE}function rt(e){let t=D(nt(e));return t!==null&&tt.has(t)?t:null}function it(e=`tasks`,t=`summary`){let n=rt(e);if(n!==null)return e===`automations`&&n===`kanban`?`list`:n;if(e===`automations`){let e=rt(`tasks`)??t;return e===`kanban`?`list`:e}return t}function at(e,t){let n=e===`automations`&&t===`kanban`?`list`:t;O(nt(e),n)}function ot(){return D(T.LAST_TASK_TAG)}function st(e){O(T.LAST_TASK_TAG,e)}function ct(e=`VS Code`){return D(T.OPEN_WITH_PROGRAM)??e}function lt(e){O(T.OPEN_WITH_PROGRAM,e)}function ut(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.fetchedAt==`number`&&(t.serverBindMode===`local`||t.serverBindMode===`network`)&&Array.isArray(t.networkAddresses)&&t.networkAddresses.every(e=>typeof e==`string`)}function dt(){let e=D(T.SERVER_BIND_MODE);if(!e)return null;try{let t=JSON.parse(e);return ut(t)?t:null}catch{return null}}function ft(e){O(T.SERVER_BIND_MODE,JSON.stringify({...e,fetchedAt:e.fetchedAt??Date.now()}))}var pt=`641`;function mt(){return typeof window>`u`?null:window.Capacitor?.getPlatform?.()??null}function ht(){return M()&&mt()===`ios`}function j(){return D(T.SERVER_URL)}function gt(e){O(T.SERVER_URL,e)}function _t(e){try{return new URL(e).hostname}catch{return``}}function vt(e){let t=e.trim();if(!t)return``;let n=/^https?:\/\//i.test(t)?t:`https://${t}`;try{let e=new URL(n);if(de(e.hostname))return``;if(w(e.hostname)){let t=C(e.hostname);return t?me(t)??``:``}}catch{return``}if(/^https?:\/\//i.test(t))try{let e=new URL(t);return e.protocol!==`http:`&&e.protocol!==`https:`||!e.hostname?``:e.origin}catch{return``}let r=(t.split(`/`)[0]??``).replace(/:\d+$/,``);return r?`http://${r}:${pt}`:``}function M(){if(typeof window>`u`)return!1;if(window.Capacitor?.isNativePlatform?.())return!0;let e=window.location.protocol;return e===`capacitor:`||e===`ionic:`||e===`file:`}function yt(){let e=j();if(e){let t=_t(e);if(t)return t}return M()?``:document.location.hostname}async function bt(e){try{return(await fetch(`${e.replace(/\/$/,``)}/health`,{method:`GET`})).ok}catch{return!1}}function xt(e){let t=vt(e);if(t){if(M()){gt(t),window.location.reload();return}window.location.assign(t)}}function N(){return typeof window<`u`&&`__electrobunWebviewId`in window}function St(){return typeof document<`u`&&document.location.port===`8100`}function Ct(){if(typeof document>`u`)return null;let{protocol:e,hostname:t,port:n,host:r,origin:i}=document.location;if(e!==`http:`&&e!==`https:`)return null;if(i&&t&&w(t)){let e=C(t);if(e)return me(e)??i}return i||`${e}//${r??(n?`${t}:${n}`:t)}`}function wt(){if(typeof document>`u`)return`http://localhost:641`;let{hostname:e,port:t}=document.location;return t===`8100`?`http://${e}:462`:Ct()||`http://${e}:641`}function P(){if(N()){let e=Ct();if(e)return e}if(!M())return wt();let e=j();return e?e.replace(/\/$/,``):wt()}function F(e){let t=e.startsWith(`/`)?e:`/${e}`;return`${P()}${t}`}function I(e){if(!e)return`Unknown error`;if(typeof e.message==`string`&&e.message.trim())return e.message.trim();if(typeof e.error==`string`)return e.error.trim()||`Unknown error`;if(e.error&&typeof e.error==`object`){let t=e.error.message;if(typeof t==`string`&&t.trim())return t.trim();let n=e.error.details;return typeof n==`string`&&n.trim()?n.trim():`Unknown error`}return`Unknown error`}async function L(e){try{return I(await e.json())}catch{}return e.statusText||`Unknown error`}function R(e,t,n){let r=Error(e);return n?.error&&typeof n.error==`object`&&(r.details=n.error.details,r.code=n.error.code),r}async function Tt(e){let t;try{t=await e.json()}catch{}throw R(I(t)||e.statusText||`Unknown error`,e,t)}async function z(e,t,n,r){let i=await fetch(F(t),{...r,method:e,headers:{"Content-Type":`application/json`,...r?.headers},body:n?JSON.stringify(n):void 0});if(!i.ok){let e=await L(i);throw Error(e)}return i}async function Et(e,t){let n=await fetch(F(e),{...t,method:`GET`});if(!n.ok){let e=await L(n);throw Error(e)}return n.blob()}async function B(e,t){let n=await fetch(F(e),{...t,method:`GET`});if(!n.ok){let e=await L(n);throw Error(e)}return n.json()}async function V(e,t,n){return(await z(`POST`,e,t,n)).json()}async function Dt(e,t,n){return(await z(`POST`,e,t,n)).blob()}async function Ot(e,t,n){let r=await fetch(F(e),{...n,method:`POST`,headers:{"Content-Type":`application/octet-stream`,...n?.headers},body:t});if(!r.ok){let e=await L(r);throw Error(e)}return r.json()}async function H(e,t,n){return(await z(`PUT`,e,t,n)).json()}async function U(e,t,n){return(await z(`PATCH`,e,t,n)).json()}async function kt(e,t,n){return(await z(`PUT`,e,t,n)).body}async function W(e,t){let n=await fetch(F(e),{...t,method:`DELETE`});if(!n.ok){let e=await L(n);throw Error(e)}if(n.status!==204)return n.json()}async function At(e,t){let n=await fetch(F(e),{...t,method:`DELETE`});if(!n.ok){let e=await L(n);throw Error(e)}return n.body}async function G(e,t,n){let r=await fetch(F(e),{...n,method:`POST`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0,signal:n?.signal});return r.ok||await Tt(r),r.body}async function jt(e,t){let n=await fetch(F(e),{...t,method:`GET`});return n.ok||await Tt(n),n.body}async function K(e,t,n){let r=await fetch(F(e),{...n,method:`POST`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0});if(!r.ok){let e;try{e=await r.json()}catch{}throw R(I(e)||r.statusText||`Unknown error`,r,e)}return r.json()}async function Mt(e,t,n){let r=await fetch(F(e),{...n,method:`PUT`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0});if(!r.ok){let e;try{e=await r.json()}catch{}throw R(I(e)||r.statusText||`Unknown error`,r,e)}return r.json()}function q(...e){return e.map(e=>encodeURIComponent(String(e))).join(`/`)}var J=n(`gitops.ttl-cache`),Y=new class{cache=new Map;inFlightRequests=new Map;generations=new Map;async get(e,t,n){let r=e.startsWith(`unified-git-status-`),i=r?performance.now():0,a=this.inFlightRequests.get(e);if(a)return r&&J.debug(`in-flight-reuse`,{key:e}),a;let o=this.cache.get(e);if(o&&Date.now()<o.expires){if(r){let t=Math.round(performance.now()-i);J.debug(`cache hit`,{key:e,duration:t})}return o.data}r&&J.debug(`cache miss, fetching`,{key:e});let s=this.generations.get(e)??0,c=t().then(t=>{if((this.generations.get(e)??0)===s){if(this.cache.set(e,{data:t,expires:Date.now()+n}),r){let t=Math.round(performance.now()-i);J.debug(`stored in cache`,{key:e,duration:t})}}else r&&J.debug(`skipped stale cache write`,{key:e});return t}).finally(()=>{this.inFlightRequests.get(e)===c&&this.inFlightRequests.delete(e)});return this.inFlightRequests.set(e,c),c}getSync(e){let t=this.cache.get(e);if(t&&Date.now()<t.expires)return t.data}bumpGeneration(e){this.generations.set(e,(this.generations.get(e)??0)+1)}invalidate(e){this.cache.delete(e),this.inFlightRequests.delete(e),this.bumpGeneration(e)}invalidatePattern(e){let t=[];for(let n of this.cache.keys())e.test(n)&&t.push(n);for(let n of this.inFlightRequests.keys())e.test(n)&&!t.includes(n)&&t.push(n);for(let e of t)this.cache.delete(e),this.inFlightRequests.delete(e),this.bumpGeneration(e)}clear(){for(let e of new Set([...this.cache.keys(),...this.inFlightRequests.keys(),...this.generations.keys()]))this.bumpGeneration(e);this.cache.clear(),this.inFlightRequests.clear()}};function Nt(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.rel=`noopener`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}function Pt(e,t=`image/png`){let n=atob(e),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return new Blob([r],{type:t})}function Ft(e){let t=e.indexOf(`,`),n=e.slice(0,t);return Pt(e.slice(t+1),n.match(/^data:([^;]+)/)?.[1]??`image/png`)}async function It(e){if(e.imageData)return Pt(e.imageData);if(e.imageUrl){if(e.imageUrl.startsWith(`data:`))return Ft(e.imageUrl);let t=c(e.imageUrl,P()),n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch image: ${n.status}`);return n.blob()}throw Error(`imageUrl or imageData is required`)}function Lt(e){return!e.imageUrl||o(e.imageUrl)?e:{...e,imageUrl:c(e.imageUrl,P())}}async function Rt(e){let t=e.filename??`generated-image-${Date.now()}.png`;try{return Nt(await It(e),t),{path:t}}catch{if(!e.imageUrl||e.imageUrl.startsWith(`data:`))throw Error(`imageUrl or imageData is required`);let n=document.createElement(`a`);return n.href=e.imageUrl,n.download=t,n.target=`_blank`,n.rel=`noopener noreferrer`,document.body.appendChild(n),n.click(),document.body.removeChild(n),{path:t}}}async function zt(e){let t=await It(e);if(!navigator.clipboard?.write)throw Error(`Clipboard API not available`);let n=t.type||`image/png`,r=t.type?t:new Blob([t],{type:n});await navigator.clipboard.write([new ClipboardItem({[n]:r})])}async function Bt(e){return N()?V(`api/image/save`,Lt(e)):Rt(e)}async function Vt(e){if(N()){await V(`api/image/clipboard`,Lt(e));return}await zt(e)}function Ht(e){let t=e.trim().toLowerCase();return t===`load failed`||t===`stream ended without a completion frame`||t.includes(`failed to fetch`)||t.includes(`network error`)||t.includes(`network connection was lost`)||t.includes(`networkrequestfailed`)||t.includes(`networkrequest failed`)||t.includes(`socket is not connected`)}function Ut(e){if(e instanceof Error&&`code`in e&&typeof e.code==`string`)return e.code}function Wt(e){if(Ut(e)===`THREAD_BUSY`)return!0;if(!(e instanceof Error))return!1;let t=e.message.toLowerCase();return t.includes(`already processing a message`)||t.includes(`already being processed`)||t.includes(`multiple chat windows are processing`)}function Gt(e,t){return Wt(e)?t?.trim()?!0:e instanceof Error&&!e.message.toLowerCase().includes(`multiple chat windows`):!1}var Kt=50;function qt(e,t,n,r,i){let a=e.getReader(),o=!1;function s(){o=!0,a.cancel().catch(()=>{})}let c=new TextDecoder,l=``,u=0;function d(e){let t=e.content?.trim();if(t)return y(t);let n=e.error?.message?.trim();if(n)return y(n);let r=e.message?.trim();return r?y(r):`Unknown error`}function f(e){if(!e)return!1;let t=e.trim();return t.length>200?!1:[/^Cannot read properties/i,/^Error:/i,/^TypeError:/i,/^ReferenceError:/i,/^SyntaxError:/i,/^failed to/i,/^error:/i,/^forbidden/i,/^unauthorized/i].some(e=>e.test(t))}async function p(){u+=1,!(u<Kt)&&(u=0,await new Promise(e=>{setTimeout(e,0)}))}async function m(e){return e.type===`ping`?`continue`:e.type===`error`?(r(d(e)),n(),`stop`):e.type===`message`?(i?.({role:e.role??`assistant`,content:e.content??``,isThinking:e.isThinking}),`continue`):e.type===`complete`?(n(),`stop`):e.type===`result`&&f(e.content)?(r(y(e.content??`Unknown error`)),n(),`stop`):(t(e),await p(),`continue`)}async function h(){if(!l.trim())return`continue`;try{return await m(JSON.parse(l))}catch{return l.trim()&&t({type:`result`,content:l}),`continue`}}async function g(e){let t=e.trim();if(!t)return`continue`;try{return await m(JSON.parse(t))}catch{return`continue`}}async function _(){return o||await h()===`stop`?`stop`:(r(`Stream ended without a completion frame`),n(),`stop`)}async function ee(e){l+=c.decode(e,{stream:!0});let t=l.split(`
|
|
2
|
-
`);l=t.pop()??``;for(let e of t)if(o||await g(e)===`stop`)return`stop`;return`continue`}async function v(){try{for(;!o;){let{done:e,value:t}=await a.read();if(e||o){e&&await _();break}if(await ee(t)===`stop`)return}}catch(e){o||(r(e instanceof Error?e.message:`Stream error`),n())}}return v(),s}var Jt=n(`gitops.api`);async function Yt(e,t=!1,n=!1){let r=new URLSearchParams;t&&r.set(`fresh`,`true`),n&&r.set(`asyncRefresh`,`true`);let i=r.toString(),a=i?`api/git/unified-status/${q(e)}?${i}`:`api/git/unified-status/${q(e)}`,o=performance.now();Jt.debug(`getUnifiedGitStatus start`,{threadId:e,fresh:t});try{return await B(a)}finally{let n=Math.round(performance.now()-o);Jt.debug(`getUnifiedGitStatus end`,{threadId:e,fresh:t,duration:n})}}async function Xt(e,t,n){return(await V(`api/git/generate-commit-message/${q(e)}`,{model:t,provider:n})).message}async function Zt(e,t){await V(`api/git/commit/${q(e)}`,{message:t})}async function Qt(e){await V(`api/git/push/${q(e)}`)}async function $t(e){await V(`api/git/pull/${q(e)}`)}async function en(e){return V(`api/git/sync-branch/${q(e)}`,{})}async function tn(e,t,n,r){return V(`api/git/generate-pr-info/${q(e)}`,{model:t,provider:n,baseBranch:r})}async function nn(e,t,n,r){return V(`api/git/create-pr/${q(e)}`,{title:t,description:n,baseBranch:r})}async function rn(e){await V(`api/git/fetch/${q(e)}`)}async function an(e,t,n){return V(`api/git/create-branch/${q(e)}`,{baseBranch:t,branchName:n})}async function on(e,t){return V(`api/git/revert-file/${q(e)}`,{filePath:t})}async function sn(e,t=50){return(await B(`api/git/log/${q(e)}?limit=${t}`)).commits}async function cn(e){return B(`api/git/pr-status/${q(e)}`)}async function ln(e,t,n,r){return V(`api/git/create-repo/${q(e)}`,{repoName:t,description:n,isPrivate:r})}async function un(e,t){return V(`api/git/checkpoint/${q(e)}`,{messageId:t})}async function dn(e,t){return V(`api/git/checkpoint-restore/${q(e)}`,{checkpointRef:t})}async function fn(e){return B(`api/git/diff/${q(e)}`)}async function pn(e,t,n){return Et(`api/git/media/${q(e)}?path=${encodeURIComponent(t)}&version=${n}`)}async function mn(e){return V(`api/git/cleanup-deleted-branches/${q(e)}`)}async function hn(e){return Y.get(`workspace-changes-${e}`,async()=>B(`api/git/workspace-changes/${q(e)}`),1e4)}async function gn(){return(await B(`api/skills/popular`)).skills??[]}async function _n(){return(await B(`api/skills/sources`)).sources??[]}async function vn(e){return(await B(`api/skills/catalog?${new URLSearchParams({sourceId:e}).toString()}`)).skills??[]}async function yn(e,t){return V(`api/skills/sources/verify`,{title:e,url:t})}async function bn(e,t,n){return H(`api/skills/sources/${q(e)}`,{title:t,url:n})}async function xn(e){await W(`api/skills/sources/${q(e)}`)}async function Sn(e){return(await V(`api/skills/sources/import`,{sources:e})).sources??[]}async function Cn(e,t){return B(`api/skills/catalog/files?${new URLSearchParams({sourceId:e,skillId:t}).toString()}`)}async function wn(e,t,n){return B(`api/skills/catalog/file?${new URLSearchParams({sourceId:e,skillId:t,relativePath:n}).toString()}`)}async function Tn(){return(await B(`api/agents/popular`)).agents??[]}async function En(){return(await B(`api/slash-commands/popular`)).commands??[]}async function Dn(e,t,n,r,i){return V(`api/threads/${q(e)}/ai-files/github-folder`,{gitHubRepo:t,gitHubFolder:n,destPath:r,gitHubRef:i})}async function On(e,t,n,r){return V(`api/threads/${q(e)}/ai-files/catalog-skill`,{sourceId:t,skillId:n,destPath:r})}var kn=n(`gitops.api`),X=class extends Error{constructor(){super(`No prompts remaining`),this.name=`EmptyBalanceError`}},An=50;async function jn(){let{plan:e,promptsRemaining:t}=await qn();return e===`unlimited-pro`?{isEmpty:!1,isLow:!1,promptsRemaining:-1}:{isEmpty:t<=0,isLow:t>0&&t<=An,promptsRemaining:t}}var Mn=null,Z=!1;function Nn(e){Mn=e}function Pn(e){Z||(Z=!0,Mn?.(e))}async function Fn(){return B(`api/scaffold/templates`)}async function In(){return(await B(`api/scaffold/check-vp`)).installed}async function Ln(){return V(`api/scaffold/install-vp`,{})}async function Rn(e,t,n,r){return G(`api/scaffold`,{projectName:e,templateId:t,packageManager:n},{signal:r})}async function zn(){return Y.get(`providers`,async()=>B(`api/providers`),6e4)}function Bn(e){return`${P()}/api/providers/${q(e)}/logo`}function Vn(e){return`https://models.tarsk.io/svg/${q(e)}.svg`}async function Hn(e){return Y.get(`provider-credits-${e}`,async()=>B(`api/providers/${q(e)}/credits`),3e4)}async function Un(){return(await B(`api/providers/openrouter/oauth/start`)).url}async function Wn(e,t){await V(`api/providers/keys`,{providerName:e,apiKey:t}),Y.invalidate(`providers`)}async function Gn(e){await V(`api/providers/env`,{values:e}),Y.invalidate(`providers`)}function Q(e){return typeof window>`u`?!1:window.open(e,`_blank`,`noopener,noreferrer`)!==null}async function Kn(e){if(typeof window<`u`&&!N()){Q(e);return}try{await V(`api/providers/open-external`,{url:e})}catch(t){if(Q(e))return;throw t instanceof Error?t:Error(`Failed to open URL`)}}async function qn(){return B(`api/account/info`)}async function Jn(){return V(`api/account/delete`,{})}async function Yn(){return V(`api/account/quit`,{})}async function Xn(){return B(`api/account/spend`)}async function Zn(){return B(`api/account/statistics`)}async function Qn(){return W(`api/account/statistics`)}async function $n(){return B(`api/account/settings`)}async function er(){return B(`api/slack/settings`)}async function tr(){await W(`api/logs`)}async function nr(e){return jt(`api/logs/stream`,e)}async function rr(e){try{await V(`api/logs`,e)}catch(e){kn.debug(`Failed to post client log entry`,e)}}async function ir(){return B(`api/slack/manifest`)}async function ar(e){return H(`api/slack/tokens`,e)}async function or(){await W(`api/slack/tokens`)}async function sr(e){return V(`api/slack/bindings`,e)}async function cr(e,t){await W(`api/slack/bindings/${q(e)}/${q(t)}`)}async function lr(e){return H(`api/account/settings`,e)}async function ur(){return B(`api/account/remote-machines`)}async function dr(e){return K(`api/account/remote-machines`,{address:e})}async function fr(e,t){return U(`api/account/remote-machines/${q(e)}`,{machineName:t})}async function pr(e){return W(`api/account/remote-machines/${q(e)}`)}async function mr(){return B(`api/voice-model/status`)}async function hr(e,t){return(await V(`api/voice-model/process-transcript`,{text:e,threadId:t?.threadId,provider:t?.provider,model:t?.model})).text}async function gr(){return Y.get(`available-programs`,async()=>(await B(`api/programs`)).programs??[],3e5)}async function _r(){return(await B(`api/processes`)).processes}async function vr(e){await V(`api/processes/${q(e)}/kill`)}async function yr(){return Y.get(`processing-threads`,async()=>{let e=await B(`api/threads/processing`);return{processingThreadIds:e.processingThreadIds??[],processingRuns:e.processingRuns??[],unavailableThreadIds:e.unavailableThreadIds??[]}},0)}async function br(e){let t=new URLSearchParams({since:e.since});return e.ids&&t.set(`ids`,e.ids),Y.get(`processing-roster:${t.toString()}`,async()=>(await B(`api/conversations/processing-roster?${t.toString()}`)).conversations??[],0)}async function xr(){return B(`api/git/auth-status`)}async function Sr(){return Y.get(`git-user`,async()=>{try{let e=await B(`api/git/user`);return{name:e.name??``,email:e.email??``}}catch{return{name:``,email:``}}},6e5)}async function Cr(){return(await Sr()).name}async function wr(){return Y.get(`projects`,async()=>{let t=await B(`api/projects`),n=Array.isArray(t)?t:t.projects??[],r=Array.isArray(t)?null:t.cloneRootPath??null;return{projects:(n||[]).map(t=>{let n=t;return{projectId:n.projectId??n.id,name:n.name,gitUrl:n.gitUrl,projectPath:n.projectPath??n.path,threads:n.threads??[],commands:n.commands??[],setupScript:n.setupScript,runCommand:n.runCommand,planPrompt:n.planPrompt,testPrompt:n.testPrompt,reviewPrompt:n.reviewPrompt,customSystemPrompt:n.customSystemPrompt,useCustomSystemPrompt:!!n.useCustomSystemPrompt,allowAllCommands:n.allowAllCommands!==!1,allowedCommandPatterns:n.allowedCommandPatterns??[],defaultChatMode:e(n.defaultChatMode)?n.defaultChatMode:void 0,disabledTools:n.disabledTools??void 0,useBuiltInBrowser:n.useBuiltInBrowser!==!1,projectIcon:n.projectIcon,tasksModifiedCount:Number(n.tasksModifiedCount)||0,type:n.type===`bot`?`bot`:`standard`,builtIn:n.builtIn===!0}}).map(e=>{let t=(e.threads||[]).map(e=>{let t=e,n=t.threadId??t.id;return{threadId:n,title:t.title??n,path:t.path??``,currentBranch:t.currentBranch??``,remoteMachineId:t.remoteMachineId,remoteMachineName:t.remoteMachineName,remotePublicUrl:t.remotePublicUrl,remoteUnavailable:t.remoteUnavailable===!0,currentConversationId:t.currentConversationId,chatTitles:t.chatTitles,conversationModels:t.conversationModels,hasUnreadAutomatedChat:t.hasUnreadAutomatedChat===!0,isSelected:!!t.isSelected,model:t.model??void 0,modelProvider:t.modelProvider??void 0,gitStatusDot:p(t.gitStatusDot),prNumber:m(t.prNumber)}});return{...e,threads:t}}),cloneRootPath:r}},3e4)}async function Tr(){let e=await B(`api/projects/remote-snapshots`);return(Array.isArray(e.snapshots)?e.snapshots:[]).map(function(e){let t=e;return{threadId:t.threadId??``,remoteMachineName:t.remoteMachineName,remoteUnavailable:t.remoteUnavailable===!0,currentBranch:t.currentBranch??``,gitStatusDot:t.gitStatusDot===void 0?void 0:p(t.gitStatusDot),prNumber:t.prNumber===null?null:m(t.prNumber),currentConversationId:t.currentConversationId===null?null:t.currentConversationId,chatTitles:t.chatTitles===null?null:t.chatTitles,conversationModels:t.conversationModels===null?null:t.conversationModels,model:t.model===null?null:t.model??void 0,modelProvider:t.modelProvider===null?null:t.modelProvider??void 0,hasUnreadAutomatedChat:t.hasUnreadAutomatedChat===!0}})}async function Er(){return B(`api/projects/storage-free`)}async function Dr(e){await V(`api/projects/${q(e)}/tasks/clear-modifications`)}async function Or(e,t,n){return G(`api/projects`,{gitUrl:e,commitMethod:t},{signal:n})}async function kr(e,t){await V(`api/projects/git-auth/${encodeURIComponent(e)}`,t)}async function Ar(e){return G(`api/projects/open-folder`,{},{signal:e})}async function jr(e,t){return G(`api/projects/open-path`,{path:e},{signal:t})}async function Mr(e,t){return G(`api/projects/new-folder`,{projectName:e},{signal:t})}async function Nr(e,t){return G(`api/projects/new-bot`,{projectName:e},{signal:t})}function Pr(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{let e=typeof r.result==`string`?r.result:``,n=e.indexOf(`,`);t(n>=0?e.slice(n+1):e)},r.onerror=()=>n(r.error),r.readAsDataURL(e)})}async function Fr(e,t,n,r){return G(`api/projects/from-zip`,{data:await Pr(e),name:t,overrideProjectId:n},{signal:r})}async function Ir(e){return Y.get(`project-${e}`,async()=>{let t=await B(`api/projects/${q(e)}`);return{...t,projectPath:t.projectPath??t.path}},3e4)}async function Lr(e){return B(`api/projects/${q(e)}/env-vars`)}async function Rr(e){return(await B(`api/projects/${q(e)}/window-state`)).state}async function zr(e,t){await Mt(`api/projects/${q(e)}/window-state`,{state:t})}async function Br(e,t,n){return V(`api/projects/${q(e)}/replace-unique-text`,{oldText:t,newText:n})}async function Vr(e,t){await H(`api/projects/${q(e)}/env-vars`,{vars:t})}async function Hr(e){await W(`api/projects/${q(e)}`),Y.invalidate(`projects`)}function Ur(e){Y.invalidate(`projects`),e&&Y.invalidate(`project-${e}`)}async function Wr(e,t,n){return G(`api/threads`,{projectId:e,title:t,branchName:n?.branchName,sourceThreadId:n?.sourceThreadId,remoteMachineId:n?.remoteMachineId},{signal:n?.signal})}async function Gr(e,t){let n=await At(`api/threads/${q(t)}?stream=true`);return Y.invalidate(`projects`),n}async function Kr(e,t){await U(`api/threads/${q(e)}`,t),Y.invalidate(`thread-${e}`),(`model`in t||`modelProvider`in t||`chatTitles`in t||`diffComments`in t)&&Y.invalidate(`projects`)}async function qr(e,t,n){return(await V(`api/threads/${q(e)}/generate-title`,{prompt:t,provider:n?.provider,model:n?.model})).title}async function Jr(e,t){return V(`api/threads/${q(e)}/fix-comments`,{comments:t})}async function Yr(e,t){await V(`api/threads/${q(t)}/select`)}function Xr(e,t){let n=new URLSearchParams;t&&n.set(`conversationId`,t),n.set(`events`,`recent`);let r=n.toString(),i=`api/threads/${q(e)}/messages`;return r.length>0?`${i}?${r}`:i}async function Zr(e,t){return{threadId:e,messages:await B(Xr(e,t))}}async function Qr(e,n,r=1,i=t){let a=new URLSearchParams({offset:String(r),limit:String(i)});return B(`api/threads/${q(e)}/observations/${q(n)}?${a}`)}async function $r(e){return(await B(`api/threads/${q(e)}/conversation-folder-path`)).path}async function ei(e,t,n,r=[],i,a,o,s,c,l,u,d,f,p,m){i?.throwIfAborted();let{isEmpty:h,isLow:g,promptsRemaining:_}=await jn();if(i?.throwIfAborted(),h)throw new X;return g?Pn(_):Z=!1,G(`api/chat`,{threadId:e,content:t,model:n,provider:a,planMode:o,ralphMode:s,orchestrateMode:u,autoRoute:d,checkpointRef:c,conversationId:l,goal:f,idempotencyKey:m,perfTraceId:p?.traceId,perfSubmitMs:p?.submitMs,attachments:r.map(e=>({name:e.fileName,content:e.content.split(`,`)[1]||e.content,size:typeof e.size==`number`?e.size:0,mimeType:e.mimeType||`application/octet-stream`}))},{signal:i})}async function ti(e,t,n,r=[],i,a,o,s,c){let{isEmpty:l,isLow:u,promptsRemaining:d}=await jn();if(l)throw new X;return u?Pn(d):Z=!1,V(`api/chat`,{threadId:e,content:t,model:n,provider:i,planMode:a,ralphMode:o,orchestrateMode:s,autoRoute:c,runInBackground:!0,attachments:r.map(e=>({name:e.fileName,content:e.content.split(`,`)[1]||e.content,size:typeof e.size==`number`?e.size:0,mimeType:e.mimeType||`application/octet-stream`}))})}async function ni(e,t,n,r,i,a){await V(`api/chat/${q(e)}/steer`,{messageId:t,content:n,conversationId:r,model:i,attachments:a.map(e=>({name:e.fileName,content:e.content.split(`,`)[1]||e.content,size:typeof e.size==`number`?e.size:0,mimeType:e.mimeType||`application/octet-stream`}))})}async function ri(e,t,n){let r=new URLSearchParams({replay:`compact`}),i=n?.trim();return i&&r.set(`conversationId`,i),jt(`api/chat/subscribe/${q(e)}?${r.toString()}`,{signal:t})}async function ii(e){let t=await W(`api/chat/${q(e)}`);return Y.invalidate(`thread-${e}`),t?.conversationId||``}async function ai(e,t,n){return V(`api/chat/${q(e)}/agent-note`,{content:t,...n})}async function oi(e,t){return K(`api/chat/${q(e)}/compact`,t)}async function si(e,t){let n=await V(`api/chat/${q(e)}/workspace-handoff`,t);return typeof n.brief==`string`?n.brief:``}async function ci(e,t){let n=new URLSearchParams,r=t?.conversationId?.trim();r&&n.set(`conversationId`,r),t?.runId&&n.set(`runId`,t.runId),t?.all&&n.set(`all`,`1`);let i=n.size>0?`?${n.toString()}`:``,a=await K(`api/chat/stop/${q(e)}${i}`);if(a.success!==!0)throw Error(a.message||`Backend did not acknowledge stopping the run`)}async function $(e,t){return t.runNow&&t.setupScript?kt(`api/projects/${q(e)}`,t):(await Mt(`api/projects/${q(e)}`,t),Ur(e),null)}async function li(e,t){await K(`api/projects/${q(e)}/open`,{program:t})}async function ui(e,t){await K(`api/threads/${q(e)}/open`,{program:t})}async function di(e,t){await $(e,{program:t})}async function fi(e,t,n){return $(e,{setupScript:t,runNow:n})}async function pi(e,t){await $(e,{name:t})}async function mi(e,t){let n=new URLSearchParams({provider:e});t!==void 0&&n.set(`supportedTools`,t?`true`:`false`),n.set(`useCase`,`coding`);let r=`available-models-${n.toString()}`;return Y.get(r,async()=>{let e=await B(`api/models?${n.toString()}`);return{models:e.models??[],enabledModelIds:e.enabledModelIds??[]}},12e4)}async function hi(e){let t=new URLSearchParams({useCase:e}),n=`available-models-all-${e}`;return Y.get(n,async()=>(await B(`api/models/all?${t.toString()}`)).providers??{},12e4)}async function gi(e,t){await V(`api/models/${q(e,t)}/enable`),Y.invalidate(`enabled-models`),Y.invalidatePattern(/^available-models-/),Y.invalidatePattern(/^available-image-models-/)}async function _i(e,t){await V(`api/models/${q(e,t)}/disable`),Y.invalidate(`enabled-models`),Y.invalidatePattern(/^available-models-/),Y.invalidatePattern(/^available-image-models-/)}async function vi(e,t,n){await V(`api/models/${q(e,t)}/settings`,n),Y.invalidatePattern(/^available-models-/),Y.invalidate(`enabled-models`)}async function yi(){return Y.get(`enabled-models`,async()=>(await B(`api/models/enabled?useCase=coding`)).enabledModels??{},12e4)}async function bi(e){let t=new URLSearchParams({provider:e,useCase:`image`}),n=`available-image-models-${e}`;return Y.get(n,async()=>{let e=await B(`api/models?${t.toString()}`);return{models:e.models??[],enabledModelIds:e.enabledModelIds??[]}},12e4)}async function xi(){return Y.get(`enabled-image-models`,async()=>(await B(`api/models/enabled?useCase=image`)).enabledModels??{},12e4)}async function Si(e,t){await V(`api/models/${q(e,t)}/enable?useCase=image`),Y.invalidate(`enabled-image-models`),Y.invalidatePattern(/^available-models-/),Y.invalidatePattern(/^available-image-models-/)}async function Ci(e,t){await V(`api/models/${q(e,t)}/disable?useCase=image`),Y.invalidate(`enabled-image-models`),Y.invalidatePattern(/^available-models-/),Y.invalidatePattern(/^available-image-models-/)}async function wi(e,t,n,r,i,a,o=crypto.randomUUID()){function s(){r&&ci(r,{conversationId:i,runId:o}).catch(function(){})}a?.addEventListener(`abort`,s,{once:!0});try{a?.aborted&&(s(),a.throwIfAborted());let c=await V(`api/image/generate`,{prompt:e,model:t,provider:n,threadId:r,conversationId:i,runId:o},{signal:a});return a?.throwIfAborted(),c}finally{a?.removeEventListener(`abort`,s)}}async function Ti(e){await Vt(e)}async function Ei(e){return Bt(e)}async function Di(e,t){return Dt(`api/projects/${q(e)}/plugin-export`,t)}async function Oi(e,t){return V(`api/projects/${q(e)}/plugin-import/preview`,{url:t})}async function ki(e,t){return V(`api/projects/${q(e)}/plugin-import`,t)}async function Ai(e,t){return V(`api/projects/${q(e)}/plugin-upload`,t)}async function ji(e){let t=await V(`api/models/${q(e)}/refresh`);return Y.invalidatePattern(/^available-models-/),Y.invalidatePattern(/^available-image-models-/),Y.invalidate(`enabled-models`),Y.invalidate(`enabled-image-models`),t.modelCount??0}async function Mi(e,t){await V(`api/projects/${q(e)}/commands`,t)}async function Ni(e,t){await W(`api/projects/${q(e)}/commands/${q(t)}`)}async function Pi(e){return B(`api/projects/${q(e)}/package-scripts`)}async function Fi(e){return B(`api/threads/${q(e)}/files`)}async function Ii(e){return(await B(`api/threads/${q(e)}/project-scripts`)).scripts}async function Li(e,t,n,r){let{relativeFolder:i,...a}=r??{},o={scriptName:t,command:n};return i&&(o.relativeFolder=i),G(`api/threads/${q(e)}/project-scripts/run`,o,a)}async function Ri(e,t){return V(`api/threads/${q(e)}/project-scripts/stop`,{scriptName:t})}async function zi(e){return Y.get(`thread-${e}`,async()=>B(`api/threads/${e}`),45e3)}async function Bi(e){return V(`api/projects/${q(e)}/run-suggest`,{})}async function Vi(e){return V(`api/projects/${q(e)}/setup-suggest`,{})}async function Hi(e,t,n){return kn.info(`Start dev server requested`,{projectId:e,threadId:t}),Y.invalidate(`dev-server-running-${e}${t?`-${t}`:``}`),G(`api/projects/${q(e)}/run`,{threadId:t},{signal:n})}async function Ui(e,t){return Y.invalidate(`dev-server-running-${e}${t?`-${t}`:``}`),V(`api/projects/${q(e)}/stop`,t?{threadId:t}:{})}async function Wi(e,t,n){return V(`api/projects/${q(e)}/free-port`,{port:t,...n?{threadId:n}:{}})}async function Gi(e,t){return Y.get(`dev-server-running-${e}${t?`-${t}`:``}`,async()=>B(`api/projects/${q(e)}/running${t?`?threadId=${encodeURIComponent(t)}`:``}`),3e3)}async function Ki(e){return B(`api/projects/${q(e)}/system-prompt`)}async function qi(){return B(`api/onboarding/status`)}async function Ji(){return B(`api/onboarding/git-check`)}async function Yi(){return V(`api/onboarding/complete`,{})}async function Xi(){return V(`api/onboarding/reset`,{})}async function Zi(){return B(`api/onboarding/recommended-models`)}async function Qi(e){return(await B(`api/slash-commands?threadId=${q(e)}`)).commands??[]}async function $i(e){let t=await B(`api/slash-commands?threadId=${q(e)}`);return{commands:t.commands??[],skills:t.skills??[],bundledSkills:t.bundledSkills??[]}}async function ea(e,t,n,r,i){return V(`api/slash-commands`,{name:e,content:t,metadata:n,scope:r,threadId:i})}async function ta(e,t){let n=await fetch(`http://localhost:641/api/slash-commands`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e,threadId:t})});if(!n.ok)throw Error(`Failed to delete slash command: ${n.statusText}`);return n.json()}async function na(e){let t=new URLSearchParams;e?.threadId?t.set(`threadId`,e.threadId):e?.projectId&&t.set(`projectId`,e.projectId);let n=t.toString();await W(`api/conversations${n?`?${n}`:``}`)}async function ra(e=7){let t=new URLSearchParams;return t.set(`archivedOnly`,`1`),t.set(`olderThanDays`,String(e)),W(`api/conversations?${t.toString()}`)}async function ia(e=20,t=0,n,i){return B(`api/conversations/recent?limit=${Math.min(Math.max(e,1),100)}&offset=${Math.max(t,0)}${n?`&projectId=${encodeURIComponent(n)}`:``}${i?.unreadOnly?`&unreadOnly=1`:``}${i?.archivedOnly?`&archivedOnly=1`:``}&${r}=${i?.order??`updated`}`)}async function aa(e,t){await K(`api/conversations/${q(e)}/${q(t)}/read`,{})}async function oa(e){return(await B(`api/conversations/${q(e)}/completions`)).conversationIds??[]}async function sa(e){await W(`api/conversations/${q(e)}/complete`)}async function ca(e,t){await W(`api/conversations/${q(e)}/${q(t)}/complete`)}async function la(e){await V(`api/git/scan-merged-prs/${q(e)}`,{})}async function ua(e,t){await W(`api/conversations/${q(e)}/${q(t)}/read`)}async function da(e,t){await K(`api/conversations/${q(e)}/${q(t)}/archive`,{})}async function fa(e,t){await W(`api/conversations/${q(e)}/${q(t)}/archive`)}async function pa(e,t){return(await B(`api/conversations/${q(e)}/${q(t)}/sibling`)).hasSibling}async function ma(e,t,n){await U(`api/conversations/${q(e)}/${q(t)}/title`,{title:n})}async function ha(e,t,n){await U(`api/conversations/${q(e)}/${q(t)}/model`,{model:n.model,modelProvider:n.modelProvider})}async function ga(e,t){let n=new URLSearchParams({conversationId:e});return t&&n.set(`threadId`,t),B(`api/goals?${n}`)}async function _a(e,t){return V(`api/goals/${q(e)}/pause`,t?{threadId:t}:{})}async function va(e,t){return V(`api/goals/${q(e)}/resume`,t?{threadId:t}:{})}async function ya(e,t){return V(`api/goals/${q(e)}/end`,t?{threadId:t}:{})}async function ba(e,t){return B(`api/conversations/${q(e)}/${q(t)}/usage`)}async function xa(e,t,n){let r=`context-breakdown-${e}-${t}`;return n?.forceRefresh&&Y.invalidate(r),Y.get(r,async()=>B(`api/conversations/${q(e)}/${q(t)}/context`),45e3)}async function Sa(e,t){return B(`api/conversations/${q(e)}/${q(t)}/context/tool-definitions`)}async function Ca(){try{return await B(`api/update/check`)}catch{return{updateAvailable:!1,supported:!1}}}async function wa(){return V(`api/update/apply`)}async function Ta(e){return(await B(`api/ask-user/pending${e?`?threadId=${encodeURIComponent(e)}`:``}`)).questions??[]}async function Ea(e,t,n){await V(`api/ask-user/respond`,{...typeof t==`string`?{toolCallId:e,answer:t}:{toolCallId:e,answers:t},...n?{threadId:n}:{}})}async function Da(e){await V(`api/ask-user/credentials`,e)}async function Oa(e,t,n){await V(`api/shell-permission/respond`,{toolCallId:e,decision:t,pattern:n?.pattern,projectId:n?.projectId,...n?.threadId?{threadId:n.threadId}:{}})}async function ka(e,t,n){await V(`api/shell-permission/respond`,{toolCallId:e,escalationScope:t===`skip`?void 0:t,escalationDecision:t===`skip`?`skip`:void 0,...n?{threadId:n}:{}})}async function Aa(e,t,n){await V(`api/web-fetch-permission/respond`,{toolCallId:e,decision:t,...n?{threadId:n}:{}})}async function ja(e,t){await V(`api/browser/ready`,{toolCallId:e,webviewId:t})}async function Ma(e,t,n){await V(`api/browser/action-result`,{toolCallId:e,result:t,...n?{threadId:n}:{}})}async function Na(e){return B(`api/mcp/config?projectPath=${encodeURIComponent(e)}`)}async function Pa(e,t,n){return H(`api/mcp/config`,{projectPath:e,serverName:t,serverConfig:n})}async function Fa(e,t){return W(`api/mcp/config/${q(t)}?projectPath=${encodeURIComponent(e)}`)}async function Ia(e,t){return V(`api/mcp/discover`,{projectPath:e,serverName:t})}async function La(){return(await B(`api/mcp/popular`)).servers??[]}async function Ra(e,t){return V(`api/mcp/oauth/authorize`,{projectPath:e,serverName:t})}async function za(e,t){return B(`api/mcp/oauth/status?projectPath=${encodeURIComponent(e)}&serverName=${encodeURIComponent(t)}`)}async function Ba(e,t){return W(`api/mcp/oauth?projectPath=${encodeURIComponent(e)}&serverName=${encodeURIComponent(t)}`)}async function Va(e){return(await B(`api/projects/${q(e)}/ai-files`)).nodes??[]}async function Ha(e,t){return W(`api/projects/${q(e)}/ai-file?path=${encodeURIComponent(t)}`)}async function Ua(e,t){return B(`api/projects/${q(e)}/ai-file?path=${encodeURIComponent(t)}`)}async function Wa(e,t,n){return H(`api/projects/${q(e)}/ai-file`,{path:t,content:n})}async function Ga(e,t,n){return H(`api/projects/${q(e)}/ai-files/skill/model-invocation`,{name:t,disableModelInvocation:n})}async function Ka(e){return(await B(`api/threads/${q(e)}/ai-files`)).nodes??[]}async function qa(e,t,n){return H(`api/threads/${q(e)}/ai-file`,{path:t,content:n})}async function Ja(e,t,n){return V(`api/threads/${q(e)}/ai-files/skill`,{name:t,description:n})}async function Ya(e,t,n){return H(`api/threads/${q(e)}/ai-files/skill/model-invocation`,{name:t,disableModelInvocation:n})}async function Xa(e,t,n,r){return V(`api/threads/${q(e)}/ai-files/agent`,{name:t,description:n,tools:r})}async function Za(e,t){return W(`api/threads/${q(e)}/ai-file?path=${encodeURIComponent(t)}`)}export{Wi as $,Ce as $i,nr as $n,qt as $r,pa as $t,Jn as A,ve as Ai,Ei as An,bn as Ar,Ii as At,Ci as B,ct as Bi,ei as Bn,hn as Br,Tr as Bt,Fr as C,f as Ca,E as Ci,Qn as Cn,gn as Cr,La as Ct,Wr as D,Ge as Di,Ba as Dn,Sn as Dr,Ua as Dt,ea as E,s as Ea,Re as Ei,va as En,_n as Er,Ir as Et,pr as F,Be as Fi,Gn as Fn,tn as Fr,Vn as Ft,ya as G,Ie as Gi,ar as Gn,nn as Gr,$i as Gt,Ia as H,Pe as Hi,ha as Hn,mn as Hr,ir as Ht,cr as I,D as Ii,Wn as In,fn as Ir,Bn as It,bi as J,We as Ji,Un as Jn,Qt as Jr,zi as Jt,Di as K,it as Ki,Ya as Kn,rn as Kr,Xn as Kt,ta as L,Ae as Li,qa as Ln,sn as Lr,zn as Lt,Fa as M,we as Mi,vi as Mn,un as Mr,Rr as Mt,Hr as N,Ye as Ni,Wa as Nn,ln as Nr,wr as Nt,Xa as O,Je as Oi,Li as On,On as Or,Va as Ot,Ha as P,ot as Pi,zr as Pn,Xt as Pr,Hn as Pt,Jr as Q,ye as Qi,Ri as Qn,Ht as Qr,mr as Qt,Gr as R,Oe as Ri,la as Rn,pn as Rr,ia as Rt,Or as S,h as Sa,T as Si,ja as Sn,Tn as Sr,Pi as St,sr as T,a as Ta,Ve as Ti,kr as Tn,vn as Tr,yr as Tt,Si as U,dt as Ui,Nn as Un,Zt as Ur,er as Ut,_i as V,Ee as Vi,ti as Vn,Yt as Vr,Fn as Vt,gi as W,he as Wi,Ga as Wn,an as Wr,Qi as Wt,oa as X,Ke as Xi,ci as Xn,en as Xr,Fi as Xt,mi as Y,qe as Yi,ni as Yn,on as Yr,Ka as Yt,Ta as Z,et as Zi,Ui as Zn,dn as Zr,Sa as Zt,oi as _,le as _a,mt as _i,Yn as _n,Kr as _r,Zn as _t,Ra as a,_e as aa,B as ai,ur as an,ri as ar,xi as at,Nr as b,g as ba,bt as bi,Br as bn,wn as br,Qr as bt,In as c,Fe as ca,U as ci,Ar as cn,Vr as cr,Zr as ct,ca as d,Le as da,H as di,ui as dn,lr as dr,$r as dt,Te as ea,Gt as ei,ki as en,Ea as er,wi as et,na as f,at as fa,St as fi,_a as fn,$ as fr,ba as ft,sa as g,w as ga,yt as gi,hr as gn,fr as gr,ga as gt,or as h,ae as ha,xt as hi,Oi as hn,fi as hr,Cr as ht,da as i,ke as ia,q as ii,vr as in,Aa as ir,$n as it,Ni as j,Se as ji,Pa as jn,yn as jr,Ki as jt,Ja as k,$e as ki,Mi as kn,Dn as kr,Lr as kt,ra as l,ft as la,V as li,jr as ln,fa as lr,_r as lt,Dr as m,S as ma,vt as mi,rr as mn,di as mr,Sr as mt,dr as n,st as na,Y as ni,Ur as nn,ka as nr,si as nt,Ca as o,lt as oa,P as oi,aa as on,Bi as or,yi as ot,tr as p,xe as pa,N as pi,ai as pn,pi as pr,xr as pt,hi as q,be as qi,Hi as qn,$t as qr,Er as qt,wa as r,O as ra,W as ri,Gi as rn,Oa as rr,qn as rt,Ji as s,De as sa,Et as si,Kn as sn,Vi as sr,gr as st,X as t,Xe as ta,Nt as ti,Ln as tn,Da as tr,qr as tt,ii as u,k as ua,Ot as ui,li as un,ua as ur,xa as ut,Yi as v,y as va,ht as vi,ji as vn,Ai as vr,Na as vt,Rn as w,l as wa,je as wi,Xi as wn,En as wr,br as wt,Mr as x,_ as xa,Qe as xi,Ma as xn,Cn as xr,qi as xt,Ti as y,ee as ya,M as yi,ma as yn,xn as yr,za as yt,Za as z,ge as zi,Yr as zn,cn as zr,Zi as zt};
|