@openchambery/web 2.1.8-beta.13 → 2.1.8-beta.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/assets/AssistantView-Dl3YEMqS.js +3 -0
  2. package/dist/assets/{DiagramView-uEy55RKu.js → DiagramView-agoUHATM.js} +1 -1
  3. package/dist/assets/{MarkdownRenderer-im8CTGN6.js → MarkdownRenderer-B-m7eslz.js} +2 -2
  4. package/dist/assets/{MarkdownRendererImpl-C2hDwhv7.js → MarkdownRendererImpl-D1dtzQVw.js} +1 -1
  5. package/dist/assets/{MarkstreamRendererImpl-Dr9BdQWE.js → MarkstreamRendererImpl-DN9LWNCL.js} +1 -1
  6. package/dist/assets/{MobileDetailNavigation-CbtNlmtu.js → MobileDetailNavigation-CajSRGjE.js} +1 -1
  7. package/dist/assets/{MobileShareBridge-DwAzqvuB.js → MobileShareBridge-C7XZWgP7.js} +1 -1
  8. package/dist/assets/{MobileTabPageHeader-CJHZvQz-.js → MobileTabPageHeader-Y0qpxkN_.js} +1 -1
  9. package/dist/assets/{MultiRunWindow-CQZTQVtz.js → MultiRunWindow-I6rfmuYW.js} +1 -1
  10. package/dist/assets/{SettingsView-DrrJ7oYy.js → SettingsView-C86Ay1OO.js} +1 -1
  11. package/dist/assets/{SettingsWindow-BQVvWRUR.js → SettingsWindow-DVAuRy9x.js} +1 -1
  12. package/dist/assets/{TerminalView-DOU_D32e.js → TerminalView-MGeJULsw.js} +1 -1
  13. package/dist/assets/{ToolOutputDialog-CYUmziuT.js → ToolOutputDialog-Cy_pctyN.js} +1 -1
  14. package/dist/assets/{appThemeRegistry-C3Cv_ptr.js → appThemeRegistry-hWeRkCT-.js} +1 -1
  15. package/dist/assets/{fileMentionTouchSelection-C_MaDK_d.js → fileMentionTouchSelection-aHBVlJT7.js} +1 -1
  16. package/dist/assets/{gitApi-DbANgbvG.js → gitApi-DIYbrJQo.js} +1 -1
  17. package/dist/assets/{insertionBoundaries-rMyBgP93.js → insertionBoundaries-BWLb49DE.js} +1 -1
  18. package/dist/assets/{main-BTHlegiK.js → main-DUwpkFVC.js} +2 -2
  19. package/dist/assets/{main-CkuVunGD.js → main-DzbzI4q8.js} +4 -4
  20. package/dist/assets/{mcpQueries-CtFbWoDt.js → mcpQueries-8sLJIXmX.js} +1 -1
  21. package/dist/assets/{miniChat-CAdpZQ_s.js → miniChat-Ohe0kOXn.js} +2 -2
  22. package/dist/assets/{mobile-BXSb2klN.js → mobile-lUObZHLd.js} +2 -2
  23. package/dist/assets/{multirun-CdpCmNeN.js → multirun-Uv7Hvhan.js} +1 -1
  24. package/dist/assets/{projectMeta-DZwOQtmb.js → projectMeta-BYYW3vXx.js} +1 -1
  25. package/dist/assets/{renderElectronMiniChatApp-CdeSYb-O.js → renderElectronMiniChatApp-DxlIY2FE.js} +2 -2
  26. package/dist/assets/renderMobileApp-BJB-2daI.js +28 -0
  27. package/dist/assets/{runtimeConfig-Cik9KmAq.js → runtimeConfig-ZEeKLqoJ.js} +1 -1
  28. package/dist/assets/{runtimeEndpointReset-C82SfSsB.js → runtimeEndpointReset-e9ytf-TV.js} +1 -1
  29. package/dist/assets/{sessionChangeSummary-DxB6UnaZ.js → sessionChangeSummary-BR23tPPl.js} +1 -1
  30. package/dist/assets/{sessionLookup-DI87dntm.js → sessionLookup-jd6sOrlf.js} +1 -1
  31. package/dist/assets/{speechSettingsQueries-DNVZNmwi.js → speechSettingsQueries-CGhwyKcU.js} +1 -1
  32. package/dist/assets/{useAppFontEffects-DEPF5G_u.js → useAppFontEffects-BHvYYFZ6.js} +5 -5
  33. package/dist/assets/{useDesktopWindowControlsLayout-CuS4YKQc.js → useDesktopWindowControlsLayout-B2L-_6kZ.js} +1 -1
  34. package/dist/assets/{useEffectiveDirectory-DqK9wN2A.js → useEffectiveDirectory-DV_VjkHO.js} +1 -1
  35. package/dist/assets/{useMobileNavigationStore-BO8WLtu9.js → useMobileNavigationStore-BwyVZbQQ.js} +3 -3
  36. package/dist/assets/{useWorkerHighlightedLines-C7PH1cfT.js → useWorkerHighlightedLines-BycjZGWp.js} +1 -1
  37. package/dist/index.html +2 -2
  38. package/dist/mini-chat.html +2 -2
  39. package/dist/mobile.html +2 -2
  40. package/package.json +1 -1
  41. package/server/lib/assistants/DOCUMENTATION.md +13 -2
  42. package/server/lib/assistants/contact-attachments.http.test.js +2 -2
  43. package/server/lib/assistants/contact-store.js +11 -1
  44. package/server/lib/assistants/contact-store.test.js +27 -8
  45. package/server/lib/assistants/service.js +6 -67
  46. package/server/lib/assistants/service.test.js +20 -5
  47. package/dist/assets/AssistantView-Clf1fwkk.js +0 -3
  48. package/dist/assets/renderMobileApp-GFT3rzlb.js +0 -28
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-capacitor-app-B5H_XtmE.js","assets/rolldown-runtime-hePW80VL.js","assets/vendor-aparajita-capacitor-secure-storage-xol_6BsB.js"])))=>i.map(i=>d[i]);
2
- import{f as e,g as t,h as n,l as r,p as i}from"./runtime-auth-C8w0nlKy.js";import{a,d as o,f as s,p as c,u as l}from"./runtime-switch-3ad3yzM7.js";import{n as u,t as d}from"./runtime-fetch-QCWYlAx0.js";import{st as f}from"./persistence-B4Ni3Gmv.js";import{t as ee}from"./desktopRelayRestore-S9wEiY2U.js";import{$ as te,A as ne,B as re,Ct as ie,D as ae,E as oe,F as se,H as ce,I as le,J as ue,L as de,M as fe,N as pe,P as me,Q as he,R as ge,S as _e,T as ve,U as ye,V as be,W as xe,X as Se,Y as p,Z as Ce,_ as we,_t as Te,a as Ee,at as De,b as Oe,bt as ke,c as Ae,ct as je,d as Me,dt as Ne,et as Pe,f as Fe,ft as Ie,g as Le,gt as Re,h as ze,ht as Be,i as Ve,j as He,k as Ue,l as We,lt as Ge,m as Ke,mt as qe,n as m,nt as Je,o as Ye,ot as Xe,p as Ze,pt as Qe,q as $e,s as et,st as tt,t as nt,tt as rt,u as it,ut as at,v as h,vt as ot,x as g,y as st,yt as _}from"./platform-BQPsr8Zl.js";import{n as v,o as y}from"./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js";import{a as ct,c as lt,l as ut,n as dt,r as ft,s as pt,t as mt}from"./terminalApi-kRMttlcP.js";import{t as b}from"./types-BuiqMmh_.js";import{n as x,t as S}from"./capgoAdapter-KNLHDj7G.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var ht=e=>{let t=e?.retry;return{maxRetries:t?.maxRetries??3,initialRetryDelay:t?.initialDelayMs??1e3,maxRetryDelay:t?.maxDelayMs??8e3,connectionTimeout:e?.connectionTimeoutMs??1e4}},gt=()=>({async createSession(e){return ft(e)},connect(e,t,n){let r=dt(e,t.onEvent,t.onError,ht(n));return{close:()=>r()}},async sendInput(e,t){await ut(e,t)},async resize(e){await pt(e.sessionId,e.cols,e.rows)},async close(e){await mt(e)},async restartSession(e,t){return lt(e,{cwd:t.cwd??``,cols:t.cols,rows:t.rows})},async forceKill(e){await ct(e)}}),_t=()=>({checkIsGitRepository:Ae,getGitStatus:de,getGitDiff:pe,getGitFileDiff:me,revertGitFile:Xe,stageGitFile:Ge,stageGitFiles:at,unstageGitFile:Be,unstageGitFiles:Re,stageGitHunk:Ne,unstageGitHunk:Te,revertGitHunk:tt,isLinkedWorktree:$e,getGitBranches:fe,deleteGitBranch:st,deleteRemoteBranch:_e,removeRemote:Pe,generateCommitMessage:oe,generatePullRequestDescription:ae,listGitWorktrees:p,validateGitWorktree:_,createGitWorktree:h,deleteGitWorktree:g,validateWorktreeDirectory:ke,canonicalizeWorktreeState:et,createGitCommit(e,t,n){return Le(e,t,n)},gitPush:ye,gitPull:ce,gitFetch:be,listGitStashes:ue,countGitStashFiles:Ke,stashGitChanges:Qe,applyGitStash:Ye,popGitStash:Ce,dropGitStash:ve,checkoutBranch:We,createBranch:ze,renameBranch:rt,getGitLog(e,t){return le(e,t)},getCommitFiles:Ue,getCurrentGitIdentity:He,hasLocalIdentity:xe,setGitIdentity:je,getGitIdentities:se,createGitIdentity:we,updateGitIdentity:ot,deleteGitIdentity:Oe,getRemotes:re,rebase:te,abortRebase:Ee,continueRebase:Ze,merge:Se,abortMerge:Ve,continueMerge:Fe,checkoutCommit:it,cherryPick:Me,revertCommit:De,resetToCommit:Je,stash:Ie,stashPop:qe,getConflictDetails:ne,worktree:{list:p,validate:_,bootstrapStatus:ge,preview:he,create:h,remove:g}}),C=e=>e.replace(/\\/g,`/`),vt=(e,t)=>({directory:C(t?.directory||t?.path||e),entries:(Array.isArray(t?.entries)?t.entries:[]).filter(e=>!!(e&&typeof e.name==`string`&&typeof e.path==`string`)).map(e=>({name:e.name,path:C(e.path),isDirectory:!!e.isDirectory}))}),w=(e,t)=>{let n=t||e?.();return n?{"x-opencode-directory":n}:void 0},yt=({getDirectory:e})=>({async listDirectory(t,n){let r=C(t),i=new URLSearchParams;r&&i.set(`path`,r),n?.respectGitignore&&i.set(`respectGitignore`,`true`);let a=await u(`/api/fs/list`,{query:i,headers:w(e)});if(!a.ok){let e=await a.json().catch(()=>({error:a.statusText}));throw Error(e.error||`Failed to list directory`)}return vt(r,await a.json())},async search(t){let n=new URLSearchParams,r=C(t.directory);r&&n.set(`directory`,r),n.set(`query`,t.query),n.set(`dirs`,`false`),n.set(`type`,`file`),typeof t.maxResults==`number`&&Number.isFinite(t.maxResults)&&n.set(`limit`,String(t.maxResults));let i=await u(`/api/find/file`,{query:n,headers:w(e)});if(!i.ok){let e=await i.json().catch(()=>({error:i.statusText}));throw Error(e.error||`Failed to search files`)}let a=await i.json();return(Array.isArray(a)?a:[]).map(e=>({path:C(`${r}/${e}`),preview:[C(e)]}))},async createDirectory(t){let n=C(t),r=await u(`/api/fs/mkdir`,{method:`POST`,headers:{"Content-Type":`application/json`,...w(e)},body:JSON.stringify({path:n})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to create directory`)}let i=await r.json();return{success:!!i?.success,path:typeof i?.path==`string`?C(i.path):n}},async statFile(t,n){let r=C(t),i=new URLSearchParams({path:r});n?.allowOutsideWorkspace&&i.set(`allowOutsideWorkspace`,`true`),n?.outsideFileGrant&&i.set(`outsideFileGrant`,n.outsideFileGrant);let a=await u(`/api/fs/stat`,{query:i,headers:w(e,n?.directory)});if(!a.ok){let e=await a.json().catch(()=>({error:a.statusText}));throw Error(e.error||`Failed to stat file`)}let o=await a.json().catch(()=>({}));return{path:typeof o.path==`string`?C(o.path):r,isFile:!!o.isFile,size:typeof o.size==`number`?o.size:0,mtimeMs:typeof o.mtimeMs==`number`?o.mtimeMs:void 0,isBinary:typeof o.isBinary==`boolean`?o.isBinary:void 0}},async readFile(t,n){let r=C(t),i=new URLSearchParams({path:r});n?.allowOutsideWorkspace&&i.set(`allowOutsideWorkspace`,`true`),n?.outsideFileGrant&&i.set(`outsideFileGrant`,n.outsideFileGrant),n?.optional&&i.set(`optional`,`true`);let a=await u(`/api/fs/read`,{query:i,cache:n?.optional?`no-store`:`default`,headers:w(e,n?.directory)});if(!a.ok){let e=await a.json().catch(()=>({error:a.statusText}));throw Error(e.error||`Failed to read file`)}let o=await a.text();if(n?.optional){let e=a.headers.get(`x-openchamber-file-exists`);if(e!==`true`&&e!==`false`)throw Error(`Optional file read requires an existence response header`);return{content:o,path:r,exists:e===`true`}}return{content:o,path:r,exists:!0}},async writeFile(t,n){let r=C(t),i=await u(`/api/fs/write`,{method:`POST`,headers:{"Content-Type":`application/json`,...w(e)},body:JSON.stringify({path:r,content:n})});if(!i.ok){let e=await i.json().catch(()=>({error:i.statusText}));throw Error(e.error||`Failed to write file`)}let a=await i.json().catch(()=>({}));return{success:!!a.success,path:typeof a.path==`string`?C(a.path):r}},async delete(t){let n=C(t),r=await u(`/api/fs/delete`,{method:`POST`,headers:{"Content-Type":`application/json`,...w(e)},body:JSON.stringify({path:n})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to delete file`)}return{success:!!(await r.json().catch(()=>({}))).success}},async rename(t,n){let r=await u(`/api/fs/rename`,{method:`POST`,headers:{"Content-Type":`application/json`,...w(e)},body:JSON.stringify({oldPath:t,newPath:n})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to rename file`)}let i=await r.json().catch(()=>({}));return{success:!!i.success,path:typeof i.path==`string`?C(i.path):n}},async revealPath(t){let n=await u(`/api/fs/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`,...w(e)},body:JSON.stringify({path:C(t)})});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to reveal path`)}return{success:!!(await n.json().catch(()=>({}))).success}},async downloadFile(t){let n=C(t),r=await u(`/api/fs/raw`,{query:{path:n,download:!0},headers:w(e)});if(!r.ok)throw Error(`Download failed (${r.status})`);let i=await r.blob(),a=URL.createObjectURL(i),o=document.createElement(`a`);o.href=a,o.download=n.split(`/`).pop()||`file`,document.body.appendChild(o),o.click(),document.body.removeChild(o),setTimeout(()=>URL.revokeObjectURL(a),100)}}),T=`/api/config/settings`,bt=`/api/config/reload`,E=e=>!e||typeof e!=`object`?{}:e,xt=()=>({async load(){let e=await u(T,{method:`GET`,headers:{Accept:`application/json`}});if(!e.ok)throw Error(`Failed to load settings: ${e.statusText}`);return{settings:E(await e.json().catch(()=>({}))),source:`web`}},async save(e){let t=await u(T,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)});if(!t.ok){let e=await t.json().catch(()=>({error:t.statusText}));throw Error(e.error||`Failed to save settings`)}return E(await t.json().catch(()=>({})))},async restartOpenCode(){let e=await u(bt,{method:`POST`});if(!e.ok){let t=await e.json().catch(()=>({error:e.statusText}));throw Error(t.error||`Failed to restart OpenCode`)}return{restarted:!0}}}),St=()=>({async requestDirectoryAccess(e){return{success:!0,path:e.path}},async startAccessingDirectory(e){return{success:!0}},async stopAccessingDirectory(e){return{success:!0}}}),Ct=1500,D=5e3,wt=`openchamber-notification-claim:`,O=new Map,Tt=()=>typeof document>`u`||document.visibilityState===`visible`&&document.hasFocus(),Et=e=>(typeof e?.tag==`string`?e.tag.trim():``)||[e?.sessionId,e?.kind,e?.title,e?.body].filter(e=>typeof e==`string`&&e.trim().length>0).map(e=>e.trim()).join(`|`),Dt=e=>{for(let[t,n]of O)e-n>D&&O.delete(t)},Ot=e=>{let t=Et(e);if(!t)return!0;let n=Date.now();if(Dt(n),n-(O.get(t)??0)<D)return!1;try{if(typeof window<`u`&&window.localStorage){let e=`${wt}${t}`,r=Number(window.localStorage.getItem(e)??`0`);if(Number.isFinite(r)&&n-r<D)return O.set(t,r),!1;Number.isFinite(r)&&r>0&&window.localStorage.removeItem(e),window.localStorage.setItem(e,String(n))}}catch{}return O.set(t,n),!0},k=async()=>{if(typeof navigator>`u`||!(`serviceWorker`in navigator))return null;let e=null;try{e=await navigator.serviceWorker.getRegistration()??null}catch{e=null}if(e?.active)return e;if(!e)return null;try{return await Promise.race([navigator.serviceWorker.ready,new Promise(e=>{setTimeout(()=>e(null),Ct)})])??e}catch{return e}},kt=async e=>{let t=await k();if(!t||typeof t.showNotification!=`function`)return!1;try{return await t.showNotification(e?.title??`OpenChamberY`,{body:e?.body,tag:e?.tag}),!0}catch(e){return console.warn(`Failed to send notification via service worker`,e),!1}},At=async()=>{let e=await k();if(!e||!(`pushManager`in e)||!e.pushManager)return!1;try{return!!await e.pushManager.getSubscription()}catch{return!1}},jt=async e=>{if(e?.requireHidden&&typeof document<`u`&&document.hasFocus())return!0;if(typeof Notification>`u`)return!1;if(Notification.permission==="default"&&await Notification.requestPermission()!==`granted`||Notification.permission!==`granted`)return console.warn(`Notification permission not granted`),!1;if(!Tt()&&await At()||!Ot(e))return!0;try{return await kt(e)||new Notification(e?.title??`OpenChamberY`,{body:e?.body,tag:e?.tag}),!0}catch(e){return console.warn(`Failed to send notification`,e),!1}},Mt=async e=>{if(typeof window>`u`)return!1;let t=window.__OPENCHAMBER_DESKTOP__;if(!t?.invoke)return!1;try{return await t.invoke(`desktop_notify`,{payload:{title:e?.title,body:e?.body,tag:e?.tag,kind:e?.kind,sessionId:e?.sessionId,directory:e?.directory,requireHidden:e?.requireHidden}}),!0}catch(e){return console.warn(`Failed to send native notification (desktop)`,e),!1}},Nt=()=>({async notifyAgentCompletion(e){return await Mt(e)||await jt(e)},canNotify:()=>typeof window<`u`&&window.__OPENCHAMBER_DESKTOP__?.invoke?!0:typeof Notification<`u`&&Notification.permission===`granted`}),Pt=()=>({async getAvailableTools(){let e=await u(`/api/experimental/tool/ids`);if(!e.ok)throw Error(`Tools API returned ${e.status} ${e.statusText}`);let t=await e.json();if(!Array.isArray(t))throw Error(`Tools API returned invalid data format`);return t.filter(e=>typeof e==`string`&&e!==`invalid`).sort()}}),A=async(e,t)=>{try{let n=await u(e,{...t,credentials:`include`,headers:{Accept:`application/json`,...t?.headers??{}}});return n.ok?await n.json():null}catch{return null}},Ft=()=>({async getVapidPublicKey(){return A(`/api/push/vapid-public-key`)},async subscribe(e){return A(`/api/push/subscribe`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})},async unsubscribe(e){return A(`/api/push/subscribe`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})},async setVisibility(e){return A(`/api/push/visibility`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),keepalive:!0})},async registerApnsToken(e){return A(`/api/push/apns-token`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})},async unregisterApnsToken(e){return A(`/api/push/apns-token`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})},async registerLiveActivityToken(e){return A(`/api/push/live-activity-token`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})},async unregisterLiveActivityToken(e){return A(`/api/push/live-activity-token`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}}),j=async e=>await e.json().catch(()=>null),It=({urls:e})=>({async authStatus(){let e=await u(`/api/github/auth/status`,{method:`GET`,headers:{Accept:`application/json`}}),t=await j(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to load GitHub status`);return t},async authStart(){let e=await u(`/api/github/auth/start`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({})}),t=await j(e);if(!e.ok||!t||!(`deviceCode`in t))throw Error(t?.error||e.statusText||`Failed to start GitHub auth`);return t},async authComplete(e){let t=await u(`/api/github/auth/complete`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({deviceCode:e})}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to complete GitHub auth`);return n},async authDisconnect(){let e=await u(`/api/github/auth`,{method:`DELETE`,headers:{Accept:`application/json`}}),t=await j(e);if(!e.ok)throw Error(t?.error||e.statusText||`Failed to disconnect GitHub`);return{removed:!!t?.removed}},async authActivate(e){let t=await u(`/api/github/auth/activate`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({accountId:e})}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to activate GitHub account`);return n},async authSetGhCliDisabled(e){let t=await u(`/api/github/auth/gh-cli`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({disabled:e})}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to update gh CLI setting`);return{disabled:!!n.disabled}},async me(){let e=await u(`/api/github/me`,{method:`GET`,headers:{Accept:`application/json`}}),t=await j(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to fetch GitHub user`);return t},async prStatus(e,t,n,r){let i=new URLSearchParams({directory:e,branch:t,...n?{remote:n}:{},...r?.force?{force:`true`}:{}}),a=await u(`/api/github/pr/status?${i.toString()}`,{method:`GET`,headers:{Accept:`application/json`}}),o=await j(a);if(!a.ok||!o)throw Error(o?.error||a.statusText||`Failed to load PR status`);return o},async prCreate(e){let t=await u(`/api/github/pr/create`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to create PR`);return n},async prUpdate(e){let t=await u(`/api/github/pr/update`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to update PR`);return n},async prMerge(e){let t=await u(`/api/github/pr/merge`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to merge PR`);return n},async prReady(e){let t=await u(`/api/github/pr/ready`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to mark PR ready`);return n},async repoUpstream(e){let t=await u(`/api/github/repo/upstream?directory=${encodeURIComponent(e)}`,{method:`GET`,headers:{Accept:`application/json`}}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to detect upstream repo`);return n},async repoBranches(e,t){let n=await u(`/api/github/repo/branches?owner=${encodeURIComponent(e)}&repo=${encodeURIComponent(t)}`,{method:`GET`,headers:{Accept:`application/json`}}),r=await j(n);if(!n.ok||!r)throw Error(r?.error||n.statusText||`Failed to fetch repo branches`);return r.branches??[]},async prsList(e,t){let n=t?.page??1,r=new URLSearchParams({directory:e,page:String(n)});t?.query&&r.set(`query`,t.query);let i=await u(`/api/github/pulls/list?${r.toString()}`,{method:`GET`,headers:{Accept:`application/json`}}),a=await j(i);if(!i.ok||!a)throw Error(a?.error||i.statusText||`Failed to load pull requests`);return a},async prContext(t,n,r){let i=new URLSearchParams({directory:t,number:String(n)});r?.includeDiff&&i.set(`diff`,`1`),r?.includeCheckDetails&&i.set(`checkDetails`,`1`),r?.sourceRepo?.owner&&r.sourceRepo.repo&&(i.set(`owner`,r.sourceRepo.owner),i.set(`repo`,r.sourceRepo.repo));let a=await u(e.api(`/api/github/pulls/context`,i),{method:`GET`,headers:{Accept:`application/json`}}),o=await j(a);if(!a.ok||!o)throw Error(o?.error||a.statusText||`Failed to load pull request context`);return o},async issuesList(e,t){let n=t?.page??1,r=new URLSearchParams({directory:e,page:String(n)});t?.query&&r.set(`query`,t.query);let i=await u(`/api/github/issues/list?${r.toString()}`,{method:`GET`,headers:{Accept:`application/json`}}),a=await j(i);if(!i.ok||!a)throw Error(a?.error||i.statusText||`Failed to load issues`);return a},async issueGet(t,n,r){let i=new URLSearchParams({directory:t,number:String(n)});r?.sourceRepo?.owner&&r.sourceRepo.repo&&(i.set(`owner`,r.sourceRepo.owner),i.set(`repo`,r.sourceRepo.repo));let a=await u(e.api(`/api/github/issues/get`,i),{method:`GET`,headers:{Accept:`application/json`}}),o=await j(a);if(!a.ok||!o)throw Error(o?.error||a.statusText||`Failed to load issue`);return o},async issueComments(t,n,r){let i=new URLSearchParams({directory:t,number:String(n)});r?.sourceRepo?.owner&&r.sourceRepo.repo&&(i.set(`owner`,r.sourceRepo.owner),i.set(`repo`,r.sourceRepo.repo));let a=await u(e.api(`/api/github/issues/comments`,i),{method:`GET`,headers:{Accept:`application/json`}}),o=await j(a);if(!a.ok||!o)throw Error(o?.error||a.statusText||`Failed to load issue comments`);return o}}),M=async e=>await e.json().catch(()=>null),Lt=()=>({async listClients(){let e=await u(`/api/client-auth/clients`,{method:`GET`,headers:{Accept:`application/json`}}),t=await M(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to load remote clients`);return Array.isArray(t.clients)?t.clients:[]},async createClient(e={}){let t=await u(`/api/client-auth/clients`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({label:e.label??``})}),n=await M(t);if(!t.ok||!n?.client||typeof n.token!=`string`)throw Error(n?.error||t.statusText||`Failed to create remote client token`);return n},async createPairingSession(e={}){let t=await u(`/api/client-auth/pairing/sessions`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({label:e.label??``,...e.allowedClientKinds?{allowedClientKinds:e.allowedClientKinds}:{},...e.serverUrl?{serverUrl:e.serverUrl}:{},...typeof e.includeRelay==`boolean`?{includeRelay:e.includeRelay}:{},...typeof e.includeDirect==`boolean`?{includeDirect:e.includeDirect}:{},...e.relayUrl?{relayUrl:e.relayUrl}:{}})}),n=await M(t);if(!t.ok||typeof n?.pairing?.secret!=`string`||!n?.server)throw Error(n?.error||t.statusText||`Failed to create pairing session`);return n},async listPendingPairings(){let e=await u(`/api/client-auth/pairing/sessions`,{method:`GET`,headers:{Accept:`application/json`}}),t=await M(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to load pending pairings`);return Array.isArray(t.pending)?t.pending:[]},async getPairingTransports(){let e=await u(`/api/client-auth/pairing/transports`,{method:`GET`,headers:{Accept:`application/json`}}),t=await M(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to load pairing transports`);return{...typeof t.serverName==`string`?{serverName:t.serverName}:{},local:t.local??null,lan:t.lan??null,relayAvailable:t.relayAvailable===!0,...typeof t.relayUrl==`string`?{relayUrl:t.relayUrl}:{},...typeof t.relayUrlLocked==`boolean`?{relayUrlLocked:t.relayUrlLocked}:{}}},async cancelPairing(e){let t=await u(`/api/client-auth/pairing/sessions/${encodeURIComponent(e)}`,{method:`DELETE`,headers:{Accept:`application/json`}}),n=await M(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to cancel pairing`);return{cancelled:n.cancelled===!0}},async renameClient(e,t){let n=await u(`/api/client-auth/clients/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({label:t})}),r=await M(n);if(!n.ok||!r?.client)throw Error(r?.error||n.statusText||`Failed to rename remote client`);return r.client},async revokeClient(e){let t=await u(`/api/client-auth/clients/${encodeURIComponent(e)}`,{method:`DELETE`,headers:{Accept:`application/json`}}),n=await M(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to revoke remote client`);return n},async purgeRevokedClients(){let e=await u(`/api/client-auth/clients`,{method:`DELETE`,headers:{Accept:`application/json`}}),t=await M(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to clear revoked clients`);return t}}),N=e=>typeof e==`object`&&!!e&&!Array.isArray(e),P=e=>typeof e==`number`&&Number.isFinite(e),Rt=e=>{if(!N(e)||typeof e.ok!=`boolean`)return!1;if(e.ok===!0)return N(e.session)&&typeof e.session.id==`string`&&typeof e.messageID==`string`;let t=e.phase;if(typeof t!=`string`)return!1;switch(t){case`validate`:return typeof e.error==`string`&&Array.isArray(e.errors)&&e.errors.every(e=>typeof e==`string`);case`create`:return!(typeof e.error!=`string`||`status`in e&&e.status!==void 0&&!P(e.status));case`prompt`:return N(e.session)&&typeof e.session.id==`string`&&typeof e.messageID==`string`&&typeof e.ambiguous==`boolean`&&typeof e.error==`string`&&(!(`status`in e)||e.status===void 0||P(e.status));case`conflict`:return typeof e.error==`string`;case`unavailable`:return typeof e.error==`string`;case`internal`:return typeof e.error==`string`;default:return!1}},zt=()=>({async createWithPrompt(e,t){let n;try{n=await u(`/api/openchamber/conversations`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:t})}catch{throw Error(`Conversation request failed`)}let r;try{r=await n.json()}catch{throw Error(`Unexpected server response: invalid JSON`)}if(!Rt(r))throw Error(`Unexpected server response: result shape mismatch`);return r}}),Bt=`https://openchamber.xiaobe.top/v1/mobile/update/check`,Vt=`https://openchamber-update.vercel.app/v1/mobile/update/check`,Ht=1e4,F=`openchamber.mobile-ota.device-id.v1`,I=e=>typeof e==`string`&&e.trim().length>0?e.trim():null,L=()=>{try{let e=v;return((typeof e.getConfig==`function`?e.getConfig():void 0)??e.config)?.OpenChamberOTA??{}}catch{return{}}},R=e=>e===`beta`||e===`stable`?e:L().channel===`stable`?`stable`:`beta`,z=()=>{let e=L().shellApiVersion;return typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):1},B=()=>{let e=nt();if(e===`ios`||e===`android`)return e;try{let e=v.getPlatform();if(e===`ios`||e===`android`)return e}catch{}return`android`},Ut=()=>{if(typeof window>`u`)return null;try{return I(window.localStorage.getItem(F))}catch{return null}},V=e=>{if(!(typeof window>`u`))try{window.localStorage.setItem(F,e)}catch{}},H=async e=>{if(e)try{let t=I((await e.getDeviceId()).deviceId);if(t)return V(t),t}catch{}let t=Ut();if(t)return t;let n=f();return V(n),n},U=async()=>{let e=I(`2.1.8-beta.13`);if(m())try{let{App:t}=await y(async()=>{let{App:e}=await import(`./vendor-capacitor-app-B5H_XtmE.js`).then(e=>e.t);return{App:e}},__vite__mapDeps([0,1,2])),n=await t.getInfo(),r=I(n.version)??e??`0.0.0`,i=I(n.build),a=i?Number.parseInt(i,10):0;return{version:r,build:Number.isFinite(a)?a:0}}catch{}return{version:e??`0.0.0`,build:0}},W=(e,t,n)=>{let r=I(e?.version),i=I(t);if(n===`beta`&&i)return i;if(r&&r!==`builtin`)return i&&i!==r&&i.startsWith(`${r}-`)?i:r;let a=I(e?.id);return a&&a!==`builtin`?a:i??`builtin`},Wt=()=>I(`2.1.8-beta.13`),G=e=>{let t=e?.trim().match(/^v?(\d+)\.\d+\.\d+(?:-beta\.\d+)?$/i),n=t?Number(t[1]):void 0;return n!==void 0&&Number.isSafeInteger(n)?n:void 0},K=async(e,t)=>{let n=Wt();if(!e)return W(null,n,t);try{return W((await e.current()).bundle,n,t)}catch{return W(null,n,t)}},Gt=()=>[Bt,Vt],Kt=(e,t,n)=>{let r=e-n();return r<=0||t<=0?null:Math.max(1,Math.ceil(r/t))};async function qt(e,t,n,r){try{if(m())try{let{CapacitorHttp:r}=await y(async()=>{let{CapacitorHttp:e}=await import(`./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js`).then(e=>e.i);return{CapacitorHttp:e}},__vite__mapDeps([2,1])),i=Object.fromEntries(new Headers(t.headers).entries()),a;if(typeof t.body==`string`)try{a=JSON.parse(t.body)}catch{a=t.body}let o=await Promise.race([r.request({url:e,method:t.method||`GET`,headers:i,data:a,connectTimeout:n,readTimeout:n}),new Promise(e=>{window.setTimeout(()=>e(null),n)})]);return o?{ok:o.status>=200&&o.status<300,status:o.status,json:async()=>{if(typeof o.data==`string`)try{return JSON.parse(o.data)}catch{return o.data}return o.data}}:null}catch{}let i=await r(e,{...t,signal:AbortSignal.timeout(n)});return{ok:i.ok,status:i.status,json:()=>i.json()}}catch{return null}}var Jt=e=>{if(!e||typeof e!=`object`)return!1;let t=e;return!(t.status!==`ok`||t.primaryAction!==`none`&&t.primaryAction!==`apply_ota`&&t.primaryAction!==`install_native_required`||!t.ota||typeof t.ota!=`object`||!t.native||typeof t.native!=`object`||typeof t.nextCheckInSec!=`number`||!Number.isFinite(t.nextCheckInSec))},Yt=e=>{let t=e;return t.isChannelRollback===!0||t.is_channel_rollback===!0?{...e,isChannelRollback:!0}:e};async function Xt(e,t,n,r){let i=await qt(e,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)},n,r);if(!i?.ok)return null;let a;try{a=await i.json()}catch{return null}if(!Jt(a))return null;if(a.primaryAction===`apply_ota`&&(t.releaseMajor===void 0||G(a.ota.bundle?.releaseVersion)!==t.releaseMajor))throw Error(`OTA release major mismatch`);return Yt(a)}async function Zt(e={}){let t=e.updater===void 0?await S():e.updater;if(!t&&!m())throw new b;let n=e.fetchImpl??fetch,r=e.now??Date.now,i=R(e.channelOverride),[a,o,s]=await Promise.all([H(t),U(),K(t,i)]),c={channel:i,platform:B(),deviceId:a,nativeVersion:o.version,nativeBuild:o.build,shellApiVersion:z(),currentBundleId:s,releaseMajor:G(s)??G(o.version)},l=Gt(),u=r()+Ht,d=null;for(let[e,t]of l.entries()){let i=Kt(u,l.length-e,r);if(i===null)break;try{let e=await Xt(t,c,i,n);if(e)return e;d=Error(`Mobile OTA check failed at ${t}`)}catch(e){d=e instanceof Error?e:Error(`Mobile OTA check failed`)}}throw d??Error(`Unable to check for mobile OTA updates`)}async function Qt(e){let t=await S();if(!t)return null;let n=await J({updater:t});if(n.releaseMajor===void 0||G(e.releaseVersion)!==n.releaseMajor)throw Error(`OTA release major mismatch`);try{let{bundles:n}=await t.list();return n.find(t=>t.checksum===e.checksum&&t.version===e.releaseVersion&&(t.status===`success`||t.status===`pending`))?.id??null}catch{return null}}async function $t(e){let t=await S();if(!t)throw new b;let n=await J({updater:t});if(n.releaseMajor===void 0||G(e.releaseVersion)!==n.releaseMajor)throw Error(`OTA release major mismatch`);return(await t.download({url:e.url,version:e.releaseVersion,checksum:e.checksum,...e.sessionKey?{sessionKey:e.sessionKey}:{}})).id}async function q(){let e=await S();if(!e)throw new b;await e.reload()}async function en(e){let t=await S();if(!t)throw new b;await t.next({id:e})}async function J(e={}){let t=e.updater===void 0?await S():e.updater,n=R(e.channelOverride),[r,i,a]=await Promise.all([H(t),U(),K(t,n)]);return{channel:n,platform:B(),deviceId:r,nativeVersion:i.version,nativeBuild:i.build,shellApiVersion:z(),currentBundleId:a,releaseMajor:G(a)??G(i.version)}}var Y=null,X=e=>typeof e==`string`&&e.trim().length>0?e.trim():null,Z=async()=>{let e=X(`2.1.8-beta.13`);try{if(v.isNativePlatform()){let{App:t}=await y(async()=>{let{App:e}=await import(`./vendor-capacitor-app-B5H_XtmE.js`).then(e=>e.t);return{App:e}},__vite__mapDeps([0,1,2]));return X((await t.getInfo()).version)??e??`unknown`}}catch{}return e??`unknown`},tn=()=>({async checkForOtaUpdate(e){if(!x()&&!v.isNativePlatform())throw new b;return Zt(e?.channelOverride?{channelOverride:e.channelOverride}:{})},async downloadOtaUpdate(e){if(!x())throw new b;let t=await Qt(e);return t?(Y=t,{skipped:!0}):(Y=await $t(e),{skipped:!1})},async applyOtaUpdateNow(){if(!x())throw new b;await q()},async queueOtaUpdateForNextLaunch(){if(!x())throw new b;let e=Y;if(!e)throw Error(`No downloaded OTA bundle to queue`);await en(e)},async getOtaStatus(){if(!x())return{supported:!1,currentBundleId:`builtin`,nativeVersion:await Z()};let e=await S();if(!e)return{supported:!1,currentBundleId:`builtin`,nativeVersion:await Z()};try{let[t,n]=await Promise.all([e.current(),Z()]);return{supported:!0,currentBundleId:X(t.bundle?.id)||`builtin`,nativeVersion:n}}catch{return{supported:!0,currentBundleId:`builtin`,nativeVersion:await Z()}}}}),nn=()=>({api:(...e)=>s().api(...e),authenticatedAsset:(...e)=>s().authenticatedAsset(...e),auth:(...e)=>s().auth(...e),health:(...e)=>s().health(...e),rawFile:(...e)=>s().rawFile(...e),sse:(...e)=>s().sse(...e),websocket:(...e)=>s().websocket(...e)}),rn=(e={})=>{let t=e.urls??o();c(t);let n=nn();return{runtime:{platform:`web`,isDesktop:!1,isVSCode:!1,label:`web`},terminal:gt(),git:_t(),files:yt({urls:n,getDirectory:()=>ie.getState().currentDirectory}),settings:xt(),permissions:St(),notifications:Nt(),github:It({urls:n}),push:Ft(),mobileUpdates:tn(),clientAuth:Lt(),tools:Pt(),conversations:zt()}},Q=(e,t)=>{if(!e||!t)return!1;try{return new URL(e).origin===new URL(t).origin}catch{return!1}},$=Promise.resolve(),an=()=>$,on=()=>{let o=typeof window.__OPENCHAMBER_API_BASE_URL__==`string`?window.__OPENCHAMBER_API_BASE_URL__.trim():``,s=typeof window.__OPENCHAMBER_CLIENT_TOKEN__==`string`?window.__OPENCHAMBER_CLIENT_TOKEN__.trim():``,c=typeof window.__OPENCHAMBER_LOCAL_ORIGIN__==`string`?window.__OPENCHAMBER_LOCAL_ORIGIN__.trim():``,u=l({apiBaseUrl:o||void 0,realtimeBaseUrl:o||void 0});a({apiBaseUrl:o,runtimeKey:Q(o,c)?`local`:null}),n(s||null),t(window.__OPENCHAMBER_RUNTIME_HEADERS__||null),i(o||void 0).catch(()=>{}),c&&!Q(o,c)&&Object.keys(r()).length>0&&e(c).catch(()=>{}),d();let f=window.__OPENCHAMBER_RELAY_HOST_ID__;return $=Promise.race([ee(typeof f==`string`&&f?f:void 0).catch(()=>{}),new Promise(e=>{window.setTimeout(e,1e4)})]),rn({urls:u})};export{an as n,on as t};
2
+ import{f as e,g as t,h as n,l as r,p as i}from"./runtime-auth-C8w0nlKy.js";import{a,d as o,f as s,p as c,u as l}from"./runtime-switch-3ad3yzM7.js";import{n as u,t as d}from"./runtime-fetch-QCWYlAx0.js";import{st as f}from"./persistence-B4Ni3Gmv.js";import{t as ee}from"./desktopRelayRestore-S9wEiY2U.js";import{$ as te,A as ne,B as re,Ct as ie,D as ae,E as oe,F as se,H as ce,I as le,J as ue,L as de,M as fe,N as pe,P as me,Q as he,R as ge,S as _e,T as ve,U as ye,V as be,W as xe,X as Se,Y as p,Z as Ce,_ as we,_t as Te,a as Ee,at as De,b as Oe,bt as ke,c as Ae,ct as je,d as Me,dt as Ne,et as Pe,f as Fe,ft as Ie,g as Le,gt as Re,h as ze,ht as Be,i as Ve,j as He,k as Ue,l as We,lt as Ge,m as Ke,mt as qe,n as m,nt as Je,o as Ye,ot as Xe,p as Ze,pt as Qe,q as $e,s as et,st as tt,t as nt,tt as rt,u as it,ut as at,v as h,vt as ot,x as g,y as st,yt as _}from"./platform-BQPsr8Zl.js";import{n as v,o as y}from"./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js";import{a as ct,c as lt,l as ut,n as dt,r as ft,s as pt,t as mt}from"./terminalApi-kRMttlcP.js";import{t as b}from"./types-BuiqMmh_.js";import{n as x,t as S}from"./capgoAdapter-KNLHDj7G.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var ht=e=>{let t=e?.retry;return{maxRetries:t?.maxRetries??3,initialRetryDelay:t?.initialDelayMs??1e3,maxRetryDelay:t?.maxDelayMs??8e3,connectionTimeout:e?.connectionTimeoutMs??1e4}},gt=()=>({async createSession(e){return ft(e)},connect(e,t,n){let r=dt(e,t.onEvent,t.onError,ht(n));return{close:()=>r()}},async sendInput(e,t){await ut(e,t)},async resize(e){await pt(e.sessionId,e.cols,e.rows)},async close(e){await mt(e)},async restartSession(e,t){return lt(e,{cwd:t.cwd??``,cols:t.cols,rows:t.rows})},async forceKill(e){await ct(e)}}),_t=()=>({checkIsGitRepository:Ae,getGitStatus:de,getGitDiff:pe,getGitFileDiff:me,revertGitFile:Xe,stageGitFile:Ge,stageGitFiles:at,unstageGitFile:Be,unstageGitFiles:Re,stageGitHunk:Ne,unstageGitHunk:Te,revertGitHunk:tt,isLinkedWorktree:$e,getGitBranches:fe,deleteGitBranch:st,deleteRemoteBranch:_e,removeRemote:Pe,generateCommitMessage:oe,generatePullRequestDescription:ae,listGitWorktrees:p,validateGitWorktree:_,createGitWorktree:h,deleteGitWorktree:g,validateWorktreeDirectory:ke,canonicalizeWorktreeState:et,createGitCommit(e,t,n){return Le(e,t,n)},gitPush:ye,gitPull:ce,gitFetch:be,listGitStashes:ue,countGitStashFiles:Ke,stashGitChanges:Qe,applyGitStash:Ye,popGitStash:Ce,dropGitStash:ve,checkoutBranch:We,createBranch:ze,renameBranch:rt,getGitLog(e,t){return le(e,t)},getCommitFiles:Ue,getCurrentGitIdentity:He,hasLocalIdentity:xe,setGitIdentity:je,getGitIdentities:se,createGitIdentity:we,updateGitIdentity:ot,deleteGitIdentity:Oe,getRemotes:re,rebase:te,abortRebase:Ee,continueRebase:Ze,merge:Se,abortMerge:Ve,continueMerge:Fe,checkoutCommit:it,cherryPick:Me,revertCommit:De,resetToCommit:Je,stash:Ie,stashPop:qe,getConflictDetails:ne,worktree:{list:p,validate:_,bootstrapStatus:ge,preview:he,create:h,remove:g}}),C=e=>e.replace(/\\/g,`/`),vt=(e,t)=>({directory:C(t?.directory||t?.path||e),entries:(Array.isArray(t?.entries)?t.entries:[]).filter(e=>!!(e&&typeof e.name==`string`&&typeof e.path==`string`)).map(e=>({name:e.name,path:C(e.path),isDirectory:!!e.isDirectory}))}),w=(e,t)=>{let n=t||e?.();return n?{"x-opencode-directory":n}:void 0},yt=({getDirectory:e})=>({async listDirectory(t,n){let r=C(t),i=new URLSearchParams;r&&i.set(`path`,r),n?.respectGitignore&&i.set(`respectGitignore`,`true`);let a=await u(`/api/fs/list`,{query:i,headers:w(e)});if(!a.ok){let e=await a.json().catch(()=>({error:a.statusText}));throw Error(e.error||`Failed to list directory`)}return vt(r,await a.json())},async search(t){let n=new URLSearchParams,r=C(t.directory);r&&n.set(`directory`,r),n.set(`query`,t.query),n.set(`dirs`,`false`),n.set(`type`,`file`),typeof t.maxResults==`number`&&Number.isFinite(t.maxResults)&&n.set(`limit`,String(t.maxResults));let i=await u(`/api/find/file`,{query:n,headers:w(e)});if(!i.ok){let e=await i.json().catch(()=>({error:i.statusText}));throw Error(e.error||`Failed to search files`)}let a=await i.json();return(Array.isArray(a)?a:[]).map(e=>({path:C(`${r}/${e}`),preview:[C(e)]}))},async createDirectory(t){let n=C(t),r=await u(`/api/fs/mkdir`,{method:`POST`,headers:{"Content-Type":`application/json`,...w(e)},body:JSON.stringify({path:n})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to create directory`)}let i=await r.json();return{success:!!i?.success,path:typeof i?.path==`string`?C(i.path):n}},async statFile(t,n){let r=C(t),i=new URLSearchParams({path:r});n?.allowOutsideWorkspace&&i.set(`allowOutsideWorkspace`,`true`),n?.outsideFileGrant&&i.set(`outsideFileGrant`,n.outsideFileGrant);let a=await u(`/api/fs/stat`,{query:i,headers:w(e,n?.directory)});if(!a.ok){let e=await a.json().catch(()=>({error:a.statusText}));throw Error(e.error||`Failed to stat file`)}let o=await a.json().catch(()=>({}));return{path:typeof o.path==`string`?C(o.path):r,isFile:!!o.isFile,size:typeof o.size==`number`?o.size:0,mtimeMs:typeof o.mtimeMs==`number`?o.mtimeMs:void 0,isBinary:typeof o.isBinary==`boolean`?o.isBinary:void 0}},async readFile(t,n){let r=C(t),i=new URLSearchParams({path:r});n?.allowOutsideWorkspace&&i.set(`allowOutsideWorkspace`,`true`),n?.outsideFileGrant&&i.set(`outsideFileGrant`,n.outsideFileGrant),n?.optional&&i.set(`optional`,`true`);let a=await u(`/api/fs/read`,{query:i,cache:n?.optional?`no-store`:`default`,headers:w(e,n?.directory)});if(!a.ok){let e=await a.json().catch(()=>({error:a.statusText}));throw Error(e.error||`Failed to read file`)}let o=await a.text();if(n?.optional){let e=a.headers.get(`x-openchamber-file-exists`);if(e!==`true`&&e!==`false`)throw Error(`Optional file read requires an existence response header`);return{content:o,path:r,exists:e===`true`}}return{content:o,path:r,exists:!0}},async writeFile(t,n){let r=C(t),i=await u(`/api/fs/write`,{method:`POST`,headers:{"Content-Type":`application/json`,...w(e)},body:JSON.stringify({path:r,content:n})});if(!i.ok){let e=await i.json().catch(()=>({error:i.statusText}));throw Error(e.error||`Failed to write file`)}let a=await i.json().catch(()=>({}));return{success:!!a.success,path:typeof a.path==`string`?C(a.path):r}},async delete(t){let n=C(t),r=await u(`/api/fs/delete`,{method:`POST`,headers:{"Content-Type":`application/json`,...w(e)},body:JSON.stringify({path:n})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to delete file`)}return{success:!!(await r.json().catch(()=>({}))).success}},async rename(t,n){let r=await u(`/api/fs/rename`,{method:`POST`,headers:{"Content-Type":`application/json`,...w(e)},body:JSON.stringify({oldPath:t,newPath:n})});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to rename file`)}let i=await r.json().catch(()=>({}));return{success:!!i.success,path:typeof i.path==`string`?C(i.path):n}},async revealPath(t){let n=await u(`/api/fs/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`,...w(e)},body:JSON.stringify({path:C(t)})});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||`Failed to reveal path`)}return{success:!!(await n.json().catch(()=>({}))).success}},async downloadFile(t){let n=C(t),r=await u(`/api/fs/raw`,{query:{path:n,download:!0},headers:w(e)});if(!r.ok)throw Error(`Download failed (${r.status})`);let i=await r.blob(),a=URL.createObjectURL(i),o=document.createElement(`a`);o.href=a,o.download=n.split(`/`).pop()||`file`,document.body.appendChild(o),o.click(),document.body.removeChild(o),setTimeout(()=>URL.revokeObjectURL(a),100)}}),T=`/api/config/settings`,bt=`/api/config/reload`,E=e=>!e||typeof e!=`object`?{}:e,xt=()=>({async load(){let e=await u(T,{method:`GET`,headers:{Accept:`application/json`}});if(!e.ok)throw Error(`Failed to load settings: ${e.statusText}`);return{settings:E(await e.json().catch(()=>({}))),source:`web`}},async save(e){let t=await u(T,{method:`PUT`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)});if(!t.ok){let e=await t.json().catch(()=>({error:t.statusText}));throw Error(e.error||`Failed to save settings`)}return E(await t.json().catch(()=>({})))},async restartOpenCode(){let e=await u(bt,{method:`POST`});if(!e.ok){let t=await e.json().catch(()=>({error:e.statusText}));throw Error(t.error||`Failed to restart OpenCode`)}return{restarted:!0}}}),St=()=>({async requestDirectoryAccess(e){return{success:!0,path:e.path}},async startAccessingDirectory(e){return{success:!0}},async stopAccessingDirectory(e){return{success:!0}}}),Ct=1500,D=5e3,wt=`openchamber-notification-claim:`,O=new Map,Tt=()=>typeof document>`u`||document.visibilityState===`visible`&&document.hasFocus(),Et=e=>(typeof e?.tag==`string`?e.tag.trim():``)||[e?.sessionId,e?.kind,e?.title,e?.body].filter(e=>typeof e==`string`&&e.trim().length>0).map(e=>e.trim()).join(`|`),Dt=e=>{for(let[t,n]of O)e-n>D&&O.delete(t)},Ot=e=>{let t=Et(e);if(!t)return!0;let n=Date.now();if(Dt(n),n-(O.get(t)??0)<D)return!1;try{if(typeof window<`u`&&window.localStorage){let e=`${wt}${t}`,r=Number(window.localStorage.getItem(e)??`0`);if(Number.isFinite(r)&&n-r<D)return O.set(t,r),!1;Number.isFinite(r)&&r>0&&window.localStorage.removeItem(e),window.localStorage.setItem(e,String(n))}}catch{}return O.set(t,n),!0},k=async()=>{if(typeof navigator>`u`||!(`serviceWorker`in navigator))return null;let e=null;try{e=await navigator.serviceWorker.getRegistration()??null}catch{e=null}if(e?.active)return e;if(!e)return null;try{return await Promise.race([navigator.serviceWorker.ready,new Promise(e=>{setTimeout(()=>e(null),Ct)})])??e}catch{return e}},kt=async e=>{let t=await k();if(!t||typeof t.showNotification!=`function`)return!1;try{return await t.showNotification(e?.title??`OpenChamberY`,{body:e?.body,tag:e?.tag}),!0}catch(e){return console.warn(`Failed to send notification via service worker`,e),!1}},At=async()=>{let e=await k();if(!e||!(`pushManager`in e)||!e.pushManager)return!1;try{return!!await e.pushManager.getSubscription()}catch{return!1}},jt=async e=>{if(e?.requireHidden&&typeof document<`u`&&document.hasFocus())return!0;if(typeof Notification>`u`)return!1;if(Notification.permission==="default"&&await Notification.requestPermission()!==`granted`||Notification.permission!==`granted`)return console.warn(`Notification permission not granted`),!1;if(!Tt()&&await At()||!Ot(e))return!0;try{return await kt(e)||new Notification(e?.title??`OpenChamberY`,{body:e?.body,tag:e?.tag}),!0}catch(e){return console.warn(`Failed to send notification`,e),!1}},Mt=async e=>{if(typeof window>`u`)return!1;let t=window.__OPENCHAMBER_DESKTOP__;if(!t?.invoke)return!1;try{return await t.invoke(`desktop_notify`,{payload:{title:e?.title,body:e?.body,tag:e?.tag,kind:e?.kind,sessionId:e?.sessionId,directory:e?.directory,requireHidden:e?.requireHidden}}),!0}catch(e){return console.warn(`Failed to send native notification (desktop)`,e),!1}},Nt=()=>({async notifyAgentCompletion(e){return await Mt(e)||await jt(e)},canNotify:()=>typeof window<`u`&&window.__OPENCHAMBER_DESKTOP__?.invoke?!0:typeof Notification<`u`&&Notification.permission===`granted`}),Pt=()=>({async getAvailableTools(){let e=await u(`/api/experimental/tool/ids`);if(!e.ok)throw Error(`Tools API returned ${e.status} ${e.statusText}`);let t=await e.json();if(!Array.isArray(t))throw Error(`Tools API returned invalid data format`);return t.filter(e=>typeof e==`string`&&e!==`invalid`).sort()}}),A=async(e,t)=>{try{let n=await u(e,{...t,credentials:`include`,headers:{Accept:`application/json`,...t?.headers??{}}});return n.ok?await n.json():null}catch{return null}},Ft=()=>({async getVapidPublicKey(){return A(`/api/push/vapid-public-key`)},async subscribe(e){return A(`/api/push/subscribe`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})},async unsubscribe(e){return A(`/api/push/subscribe`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})},async setVisibility(e){return A(`/api/push/visibility`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),keepalive:!0})},async registerApnsToken(e){return A(`/api/push/apns-token`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})},async unregisterApnsToken(e){return A(`/api/push/apns-token`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})},async registerLiveActivityToken(e){return A(`/api/push/live-activity-token`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})},async unregisterLiveActivityToken(e){return A(`/api/push/live-activity-token`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}}),j=async e=>await e.json().catch(()=>null),It=({urls:e})=>({async authStatus(){let e=await u(`/api/github/auth/status`,{method:`GET`,headers:{Accept:`application/json`}}),t=await j(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to load GitHub status`);return t},async authStart(){let e=await u(`/api/github/auth/start`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({})}),t=await j(e);if(!e.ok||!t||!(`deviceCode`in t))throw Error(t?.error||e.statusText||`Failed to start GitHub auth`);return t},async authComplete(e){let t=await u(`/api/github/auth/complete`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({deviceCode:e})}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to complete GitHub auth`);return n},async authDisconnect(){let e=await u(`/api/github/auth`,{method:`DELETE`,headers:{Accept:`application/json`}}),t=await j(e);if(!e.ok)throw Error(t?.error||e.statusText||`Failed to disconnect GitHub`);return{removed:!!t?.removed}},async authActivate(e){let t=await u(`/api/github/auth/activate`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({accountId:e})}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to activate GitHub account`);return n},async authSetGhCliDisabled(e){let t=await u(`/api/github/auth/gh-cli`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({disabled:e})}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to update gh CLI setting`);return{disabled:!!n.disabled}},async me(){let e=await u(`/api/github/me`,{method:`GET`,headers:{Accept:`application/json`}}),t=await j(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to fetch GitHub user`);return t},async prStatus(e,t,n,r){let i=new URLSearchParams({directory:e,branch:t,...n?{remote:n}:{},...r?.force?{force:`true`}:{}}),a=await u(`/api/github/pr/status?${i.toString()}`,{method:`GET`,headers:{Accept:`application/json`}}),o=await j(a);if(!a.ok||!o)throw Error(o?.error||a.statusText||`Failed to load PR status`);return o},async prCreate(e){let t=await u(`/api/github/pr/create`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to create PR`);return n},async prUpdate(e){let t=await u(`/api/github/pr/update`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to update PR`);return n},async prMerge(e){let t=await u(`/api/github/pr/merge`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to merge PR`);return n},async prReady(e){let t=await u(`/api/github/pr/ready`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify(e)}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to mark PR ready`);return n},async repoUpstream(e){let t=await u(`/api/github/repo/upstream?directory=${encodeURIComponent(e)}`,{method:`GET`,headers:{Accept:`application/json`}}),n=await j(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to detect upstream repo`);return n},async repoBranches(e,t){let n=await u(`/api/github/repo/branches?owner=${encodeURIComponent(e)}&repo=${encodeURIComponent(t)}`,{method:`GET`,headers:{Accept:`application/json`}}),r=await j(n);if(!n.ok||!r)throw Error(r?.error||n.statusText||`Failed to fetch repo branches`);return r.branches??[]},async prsList(e,t){let n=t?.page??1,r=new URLSearchParams({directory:e,page:String(n)});t?.query&&r.set(`query`,t.query);let i=await u(`/api/github/pulls/list?${r.toString()}`,{method:`GET`,headers:{Accept:`application/json`}}),a=await j(i);if(!i.ok||!a)throw Error(a?.error||i.statusText||`Failed to load pull requests`);return a},async prContext(t,n,r){let i=new URLSearchParams({directory:t,number:String(n)});r?.includeDiff&&i.set(`diff`,`1`),r?.includeCheckDetails&&i.set(`checkDetails`,`1`),r?.sourceRepo?.owner&&r.sourceRepo.repo&&(i.set(`owner`,r.sourceRepo.owner),i.set(`repo`,r.sourceRepo.repo));let a=await u(e.api(`/api/github/pulls/context`,i),{method:`GET`,headers:{Accept:`application/json`}}),o=await j(a);if(!a.ok||!o)throw Error(o?.error||a.statusText||`Failed to load pull request context`);return o},async issuesList(e,t){let n=t?.page??1,r=new URLSearchParams({directory:e,page:String(n)});t?.query&&r.set(`query`,t.query);let i=await u(`/api/github/issues/list?${r.toString()}`,{method:`GET`,headers:{Accept:`application/json`}}),a=await j(i);if(!i.ok||!a)throw Error(a?.error||i.statusText||`Failed to load issues`);return a},async issueGet(t,n,r){let i=new URLSearchParams({directory:t,number:String(n)});r?.sourceRepo?.owner&&r.sourceRepo.repo&&(i.set(`owner`,r.sourceRepo.owner),i.set(`repo`,r.sourceRepo.repo));let a=await u(e.api(`/api/github/issues/get`,i),{method:`GET`,headers:{Accept:`application/json`}}),o=await j(a);if(!a.ok||!o)throw Error(o?.error||a.statusText||`Failed to load issue`);return o},async issueComments(t,n,r){let i=new URLSearchParams({directory:t,number:String(n)});r?.sourceRepo?.owner&&r.sourceRepo.repo&&(i.set(`owner`,r.sourceRepo.owner),i.set(`repo`,r.sourceRepo.repo));let a=await u(e.api(`/api/github/issues/comments`,i),{method:`GET`,headers:{Accept:`application/json`}}),o=await j(a);if(!a.ok||!o)throw Error(o?.error||a.statusText||`Failed to load issue comments`);return o}}),M=async e=>await e.json().catch(()=>null),Lt=()=>({async listClients(){let e=await u(`/api/client-auth/clients`,{method:`GET`,headers:{Accept:`application/json`}}),t=await M(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to load remote clients`);return Array.isArray(t.clients)?t.clients:[]},async createClient(e={}){let t=await u(`/api/client-auth/clients`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({label:e.label??``})}),n=await M(t);if(!t.ok||!n?.client||typeof n.token!=`string`)throw Error(n?.error||t.statusText||`Failed to create remote client token`);return n},async createPairingSession(e={}){let t=await u(`/api/client-auth/pairing/sessions`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({label:e.label??``,...e.allowedClientKinds?{allowedClientKinds:e.allowedClientKinds}:{},...e.serverUrl?{serverUrl:e.serverUrl}:{},...typeof e.includeRelay==`boolean`?{includeRelay:e.includeRelay}:{},...typeof e.includeDirect==`boolean`?{includeDirect:e.includeDirect}:{},...e.relayUrl?{relayUrl:e.relayUrl}:{}})}),n=await M(t);if(!t.ok||typeof n?.pairing?.secret!=`string`||!n?.server)throw Error(n?.error||t.statusText||`Failed to create pairing session`);return n},async listPendingPairings(){let e=await u(`/api/client-auth/pairing/sessions`,{method:`GET`,headers:{Accept:`application/json`}}),t=await M(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to load pending pairings`);return Array.isArray(t.pending)?t.pending:[]},async getPairingTransports(){let e=await u(`/api/client-auth/pairing/transports`,{method:`GET`,headers:{Accept:`application/json`}}),t=await M(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to load pairing transports`);return{...typeof t.serverName==`string`?{serverName:t.serverName}:{},local:t.local??null,lan:t.lan??null,relayAvailable:t.relayAvailable===!0,...typeof t.relayUrl==`string`?{relayUrl:t.relayUrl}:{},...typeof t.relayUrlLocked==`boolean`?{relayUrlLocked:t.relayUrlLocked}:{}}},async cancelPairing(e){let t=await u(`/api/client-auth/pairing/sessions/${encodeURIComponent(e)}`,{method:`DELETE`,headers:{Accept:`application/json`}}),n=await M(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to cancel pairing`);return{cancelled:n.cancelled===!0}},async renameClient(e,t){let n=await u(`/api/client-auth/clients/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({label:t})}),r=await M(n);if(!n.ok||!r?.client)throw Error(r?.error||n.statusText||`Failed to rename remote client`);return r.client},async revokeClient(e){let t=await u(`/api/client-auth/clients/${encodeURIComponent(e)}`,{method:`DELETE`,headers:{Accept:`application/json`}}),n=await M(t);if(!t.ok||!n)throw Error(n?.error||t.statusText||`Failed to revoke remote client`);return n},async purgeRevokedClients(){let e=await u(`/api/client-auth/clients`,{method:`DELETE`,headers:{Accept:`application/json`}}),t=await M(e);if(!e.ok||!t)throw Error(t?.error||e.statusText||`Failed to clear revoked clients`);return t}}),N=e=>typeof e==`object`&&!!e&&!Array.isArray(e),P=e=>typeof e==`number`&&Number.isFinite(e),Rt=e=>{if(!N(e)||typeof e.ok!=`boolean`)return!1;if(e.ok===!0)return N(e.session)&&typeof e.session.id==`string`&&typeof e.messageID==`string`;let t=e.phase;if(typeof t!=`string`)return!1;switch(t){case`validate`:return typeof e.error==`string`&&Array.isArray(e.errors)&&e.errors.every(e=>typeof e==`string`);case`create`:return!(typeof e.error!=`string`||`status`in e&&e.status!==void 0&&!P(e.status));case`prompt`:return N(e.session)&&typeof e.session.id==`string`&&typeof e.messageID==`string`&&typeof e.ambiguous==`boolean`&&typeof e.error==`string`&&(!(`status`in e)||e.status===void 0||P(e.status));case`conflict`:return typeof e.error==`string`;case`unavailable`:return typeof e.error==`string`;case`internal`:return typeof e.error==`string`;default:return!1}},zt=()=>({async createWithPrompt(e,t){let n;try{n=await u(`/api/openchamber/conversations`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:t})}catch{throw Error(`Conversation request failed`)}let r;try{r=await n.json()}catch{throw Error(`Unexpected server response: invalid JSON`)}if(!Rt(r))throw Error(`Unexpected server response: result shape mismatch`);return r}}),Bt=`https://openchamber.xiaobe.top/v1/mobile/update/check`,Vt=`https://openchamber-update.vercel.app/v1/mobile/update/check`,Ht=1e4,F=`openchamber.mobile-ota.device-id.v1`,I=e=>typeof e==`string`&&e.trim().length>0?e.trim():null,L=()=>{try{let e=v;return((typeof e.getConfig==`function`?e.getConfig():void 0)??e.config)?.OpenChamberOTA??{}}catch{return{}}},R=e=>e===`beta`||e===`stable`?e:L().channel===`stable`?`stable`:`beta`,z=()=>{let e=L().shellApiVersion;return typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):1},B=()=>{let e=nt();if(e===`ios`||e===`android`)return e;try{let e=v.getPlatform();if(e===`ios`||e===`android`)return e}catch{}return`android`},Ut=()=>{if(typeof window>`u`)return null;try{return I(window.localStorage.getItem(F))}catch{return null}},V=e=>{if(!(typeof window>`u`))try{window.localStorage.setItem(F,e)}catch{}},H=async e=>{if(e)try{let t=I((await e.getDeviceId()).deviceId);if(t)return V(t),t}catch{}let t=Ut();if(t)return t;let n=f();return V(n),n},U=async()=>{let e=I(`2.1.8-beta.14`);if(m())try{let{App:t}=await y(async()=>{let{App:e}=await import(`./vendor-capacitor-app-B5H_XtmE.js`).then(e=>e.t);return{App:e}},__vite__mapDeps([0,1,2])),n=await t.getInfo(),r=I(n.version)??e??`0.0.0`,i=I(n.build),a=i?Number.parseInt(i,10):0;return{version:r,build:Number.isFinite(a)?a:0}}catch{}return{version:e??`0.0.0`,build:0}},W=(e,t,n)=>{let r=I(e?.version),i=I(t);if(n===`beta`&&i)return i;if(r&&r!==`builtin`)return i&&i!==r&&i.startsWith(`${r}-`)?i:r;let a=I(e?.id);return a&&a!==`builtin`?a:i??`builtin`},Wt=()=>I(`2.1.8-beta.14`),G=e=>{let t=e?.trim().match(/^v?(\d+)\.\d+\.\d+(?:-beta\.\d+)?$/i),n=t?Number(t[1]):void 0;return n!==void 0&&Number.isSafeInteger(n)?n:void 0},K=async(e,t)=>{let n=Wt();if(!e)return W(null,n,t);try{return W((await e.current()).bundle,n,t)}catch{return W(null,n,t)}},Gt=()=>[Bt,Vt],Kt=(e,t,n)=>{let r=e-n();return r<=0||t<=0?null:Math.max(1,Math.ceil(r/t))};async function qt(e,t,n,r){try{if(m())try{let{CapacitorHttp:r}=await y(async()=>{let{CapacitorHttp:e}=await import(`./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js`).then(e=>e.i);return{CapacitorHttp:e}},__vite__mapDeps([2,1])),i=Object.fromEntries(new Headers(t.headers).entries()),a;if(typeof t.body==`string`)try{a=JSON.parse(t.body)}catch{a=t.body}let o=await Promise.race([r.request({url:e,method:t.method||`GET`,headers:i,data:a,connectTimeout:n,readTimeout:n}),new Promise(e=>{window.setTimeout(()=>e(null),n)})]);return o?{ok:o.status>=200&&o.status<300,status:o.status,json:async()=>{if(typeof o.data==`string`)try{return JSON.parse(o.data)}catch{return o.data}return o.data}}:null}catch{}let i=await r(e,{...t,signal:AbortSignal.timeout(n)});return{ok:i.ok,status:i.status,json:()=>i.json()}}catch{return null}}var Jt=e=>{if(!e||typeof e!=`object`)return!1;let t=e;return!(t.status!==`ok`||t.primaryAction!==`none`&&t.primaryAction!==`apply_ota`&&t.primaryAction!==`install_native_required`||!t.ota||typeof t.ota!=`object`||!t.native||typeof t.native!=`object`||typeof t.nextCheckInSec!=`number`||!Number.isFinite(t.nextCheckInSec))},Yt=e=>{let t=e;return t.isChannelRollback===!0||t.is_channel_rollback===!0?{...e,isChannelRollback:!0}:e};async function Xt(e,t,n,r){let i=await qt(e,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(t)},n,r);if(!i?.ok)return null;let a;try{a=await i.json()}catch{return null}if(!Jt(a))return null;if(a.primaryAction===`apply_ota`&&(t.releaseMajor===void 0||G(a.ota.bundle?.releaseVersion)!==t.releaseMajor))throw Error(`OTA release major mismatch`);return Yt(a)}async function Zt(e={}){let t=e.updater===void 0?await S():e.updater;if(!t&&!m())throw new b;let n=e.fetchImpl??fetch,r=e.now??Date.now,i=R(e.channelOverride),[a,o,s]=await Promise.all([H(t),U(),K(t,i)]),c={channel:i,platform:B(),deviceId:a,nativeVersion:o.version,nativeBuild:o.build,shellApiVersion:z(),currentBundleId:s,releaseMajor:G(s)??G(o.version)},l=Gt(),u=r()+Ht,d=null;for(let[e,t]of l.entries()){let i=Kt(u,l.length-e,r);if(i===null)break;try{let e=await Xt(t,c,i,n);if(e)return e;d=Error(`Mobile OTA check failed at ${t}`)}catch(e){d=e instanceof Error?e:Error(`Mobile OTA check failed`)}}throw d??Error(`Unable to check for mobile OTA updates`)}async function Qt(e){let t=await S();if(!t)return null;let n=await J({updater:t});if(n.releaseMajor===void 0||G(e.releaseVersion)!==n.releaseMajor)throw Error(`OTA release major mismatch`);try{let{bundles:n}=await t.list();return n.find(t=>t.checksum===e.checksum&&t.version===e.releaseVersion&&(t.status===`success`||t.status===`pending`))?.id??null}catch{return null}}async function $t(e){let t=await S();if(!t)throw new b;let n=await J({updater:t});if(n.releaseMajor===void 0||G(e.releaseVersion)!==n.releaseMajor)throw Error(`OTA release major mismatch`);return(await t.download({url:e.url,version:e.releaseVersion,checksum:e.checksum,...e.sessionKey?{sessionKey:e.sessionKey}:{}})).id}async function q(){let e=await S();if(!e)throw new b;await e.reload()}async function en(e){let t=await S();if(!t)throw new b;await t.next({id:e})}async function J(e={}){let t=e.updater===void 0?await S():e.updater,n=R(e.channelOverride),[r,i,a]=await Promise.all([H(t),U(),K(t,n)]);return{channel:n,platform:B(),deviceId:r,nativeVersion:i.version,nativeBuild:i.build,shellApiVersion:z(),currentBundleId:a,releaseMajor:G(a)??G(i.version)}}var Y=null,X=e=>typeof e==`string`&&e.trim().length>0?e.trim():null,Z=async()=>{let e=X(`2.1.8-beta.14`);try{if(v.isNativePlatform()){let{App:t}=await y(async()=>{let{App:e}=await import(`./vendor-capacitor-app-B5H_XtmE.js`).then(e=>e.t);return{App:e}},__vite__mapDeps([0,1,2]));return X((await t.getInfo()).version)??e??`unknown`}}catch{}return e??`unknown`},tn=()=>({async checkForOtaUpdate(e){if(!x()&&!v.isNativePlatform())throw new b;return Zt(e?.channelOverride?{channelOverride:e.channelOverride}:{})},async downloadOtaUpdate(e){if(!x())throw new b;let t=await Qt(e);return t?(Y=t,{skipped:!0}):(Y=await $t(e),{skipped:!1})},async applyOtaUpdateNow(){if(!x())throw new b;await q()},async queueOtaUpdateForNextLaunch(){if(!x())throw new b;let e=Y;if(!e)throw Error(`No downloaded OTA bundle to queue`);await en(e)},async getOtaStatus(){if(!x())return{supported:!1,currentBundleId:`builtin`,nativeVersion:await Z()};let e=await S();if(!e)return{supported:!1,currentBundleId:`builtin`,nativeVersion:await Z()};try{let[t,n]=await Promise.all([e.current(),Z()]);return{supported:!0,currentBundleId:X(t.bundle?.id)||`builtin`,nativeVersion:n}}catch{return{supported:!0,currentBundleId:`builtin`,nativeVersion:await Z()}}}}),nn=()=>({api:(...e)=>s().api(...e),authenticatedAsset:(...e)=>s().authenticatedAsset(...e),auth:(...e)=>s().auth(...e),health:(...e)=>s().health(...e),rawFile:(...e)=>s().rawFile(...e),sse:(...e)=>s().sse(...e),websocket:(...e)=>s().websocket(...e)}),rn=(e={})=>{let t=e.urls??o();c(t);let n=nn();return{runtime:{platform:`web`,isDesktop:!1,isVSCode:!1,label:`web`},terminal:gt(),git:_t(),files:yt({urls:n,getDirectory:()=>ie.getState().currentDirectory}),settings:xt(),permissions:St(),notifications:Nt(),github:It({urls:n}),push:Ft(),mobileUpdates:tn(),clientAuth:Lt(),tools:Pt(),conversations:zt()}},Q=(e,t)=>{if(!e||!t)return!1;try{return new URL(e).origin===new URL(t).origin}catch{return!1}},$=Promise.resolve(),an=()=>$,on=()=>{let o=typeof window.__OPENCHAMBER_API_BASE_URL__==`string`?window.__OPENCHAMBER_API_BASE_URL__.trim():``,s=typeof window.__OPENCHAMBER_CLIENT_TOKEN__==`string`?window.__OPENCHAMBER_CLIENT_TOKEN__.trim():``,c=typeof window.__OPENCHAMBER_LOCAL_ORIGIN__==`string`?window.__OPENCHAMBER_LOCAL_ORIGIN__.trim():``,u=l({apiBaseUrl:o||void 0,realtimeBaseUrl:o||void 0});a({apiBaseUrl:o,runtimeKey:Q(o,c)?`local`:null}),n(s||null),t(window.__OPENCHAMBER_RUNTIME_HEADERS__||null),i(o||void 0).catch(()=>{}),c&&!Q(o,c)&&Object.keys(r()).length>0&&e(c).catch(()=>{}),d();let f=window.__OPENCHAMBER_RELAY_HOST_ID__;return $=Promise.race([ee(typeof f==`string`&&f?f:void 0).catch(()=>{}),new Promise(e=>{window.setTimeout(e,1e4)})]),rn({urls:u})};export{an as n,on as t};
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/OnboardingScreen-BiLurnX5.js","assets/rolldown-runtime-hePW80VL.js","assets/runtime-fetch-QCWYlAx0.js","assets/runtime-auth-C8w0nlKy.js","assets/runtime-switch-3ad3yzM7.js","assets/persistence-B4Ni3Gmv.js","assets/vendor-zustand-o69pgTEK.js","assets/vendor-base-ui-CdzJ6My_.js","assets/useUIStore-CDMI_Yzu.js","assets/vendor-react-BP2cRVqX.js","assets/vendor-pathe-vBmvQE8f.js","assets/vendor-tanstack-query-core-BWz0ose6.js","assets/desktopHosts-BZ7iYE-l.js","assets/button-BupmKVUs.js","assets/store-CG7Ytsg9.js","assets/vendor-aparajita-capacitor-secure-storage-xol_6BsB.js","assets/vendor-class-variance-authority-BLUaYARZ.js","assets/vendor-tailwind-merge-BicNWLTg.js","assets/Icon-B4xKSuz3.js","assets/dialog-BYLD4Cm3.js","assets/input-DgrLdIys.js"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n,n as r,o as i,r as a,s as o}from"./runtime-switch-3ad3yzM7.js";import{n as s}from"./runtime-fetch-QCWYlAx0.js";import{An as c,On as l,Rt as u,Wt as d,_n as f,h as p,ln as m,m as h,mt as g,on as _,ot as v,rn as y,un as b}from"./persistence-B4Ni3Gmv.js";import{a as x,i as S,o as C}from"./vendor-zustand-o69pgTEK.js";import{it as w,nt as T,o as E,rt as D,s as O}from"./vendor-base-ui-CdzJ6My_.js";import{Ct as k,Mt as A,Nt as j,dr as M,r as N}from"./platform-BQPsr8Zl.js";import{n as P,t as F,x as I}from"./useUIStore-CDMI_Yzu.js";import{n as L}from"./vendor-react-BP2cRVqX.js";import{o as ee}from"./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js";import{l as te,n as R,o as z,s as B,t as ne}from"./vendor-tanstack-react-query-CdqCAt40.js";import{i as re}from"./terminalApi-kRMttlcP.js";import{c as V,d as ie,f as ae,l as oe,m as H,n as U,o as W,p as G,s as K,t as q,u as J}from"./vendor-pierre-diffs-DPBtNDJ5.js";import{r as se}from"./vendor-sonner-ZS8XIOVl.js";import{l as ce,n as le,p as ue,r as de}from"./vendor-reactuses-core-BpfIZ1tg.js";import{d as fe,f as pe,i as me,l as he,p as ge,r as Y,t as X,u as _e}from"./button-BupmKVUs.js";import{i as ve,t as ye}from"./store-CG7Ytsg9.js";import{A as be,M as xe,O as Se,j as Ce,k as we,t as Te}from"./MobileDetailNavigation-CbtNlmtu.js";import{An as Ee,Ar as De,Bt as Oe,Cn as ke,Cr as Ae,Er as je,Fr as Me,Gt as Ne,Ir as Pe,Mr as Fe,Na as Ie,Or as Le,Pr as Re,Rr as ze,Sa as Be,Sn as Ve,So as He,Vt as Ue,Wn as We,Xn as Ge,Xr as Ke,Zr as qe,ba as Je,bo as Ye,br as Xe,d as Ze,di as Qe,do as $e,fo as et,jr as tt,kr as nt,la as rt,ln as it,o as at,pi as ot,ti as st,uo as ct,vi as lt,vo as ut,vr as dt,wn as ft,wr as pt,xr as mt,yr as ht,zi as gt}from"./useMobileNavigationStore-BO8WLtu9.js";import{i as _t,t as vt}from"./useAssistantUIStore-Dlvb7P0q.js";import{t as yt}from"./AgentAvatar-CJQwq8UM.js";import{n as bt,t as xt}from"./useThemeSystem-8jhE4Zyk.js";import{n as Z}from"./Icon-B4xKSuz3.js";import{a as St,i as Ct,n as wt,o as Tt,r as Et,t as Dt}from"./dialog-BYLD4Cm3.js";import{d as Ot}from"./gitApi-DbANgbvG.js";import{$ as kt,Ct as At,E as jt,G as Mt,O as Nt,Rt as Pt,St as Ft,U as It,W as Lt,at as Rt,c as zt,ct as Bt,it as Vt,lt as Ht,mt as Ut,o as Wt,ot as Gt,rt as Kt,s as qt,st as Jt,tt as Yt,vt as Xt,xt as Zt,yt as Qt}from"./useAppFontEffects-DEPF5G_u.js";import{A as $t,_ as en,a as tn,b as nn,d as rn,f as an,h as on,i as sn,l as cn,m as ln,n as un,p as dn,r as fn,s as pn,t as mn,x as hn}from"./projectMeta-DZwOQtmb.js";import{t as gn}from"./input-DgrLdIys.js";import{i as _n,n as vn,t as yn}from"./tooltip-Dbgnq-Mh.js";import{Dt as bn,Et as xn,J as Sn,Rt as Cn,Tt as wn,_ as Tn,at as En,ct as Dn,g as On,gt as kn,it as An,mt as jn,q as Mn,rt as Nn,st as Pn,tt as Fn,ut as In,wt as Ln}from"./speechSettingsQueries-DNVZNmwi.js";import{i as Rn,t as zn}from"./OverlayScrollbar-DIsrS93m.js";import{h as Bn,v as Vn}from"./image-loading-CsxDGgek.js";import{x as Hn}from"./dropdown-menu.styles-HOWSubFF.js";import{n as Un,t as Wn}from"./useRuntimeAPIs-Cx8S1HLz.js";import{T as Gn,a as Kn,g as qn,h as Jn,i as Yn,n as Xn,o as Zn,p as Qn,r as $n,t as er,x as tr,y as nr}from"./textarea-Boj9axpc.js";import{T as rr}from"./sessionChangeSummary-DxB6UnaZ.js";import{i as ir,t as ar}from"./vendor-framer-motion-D-oiwsxL.js";import{D as or,b as sr,h as cr,k as lr,r as ur,v as dr,w as fr,y as pr}from"./insertionBoundaries-rMyBgP93.js";import{i as mr,n as hr,t as gr}from"./appThemeRegistry-C3Cv_ptr.js";import{o as _r}from"./MarkdownRenderer-im8CTGN6.js";import{_ as vr,c as yr,g as br,i as xr,l as Sr,n as Cr,o as wr,s as Tr,t as Er,v as Dr,y as Or}from"./vendor-dnd-kit-core-5pNnzVdw.js";import{a as kr,o as Ar,s as jr,t as Mr}from"./vendor-dnd-kit-sortable-Dm50I0m7.js";import{f as Nr,l as Pr}from"./markdown-worker-DFNZ3KJ_.js";import{n as Fr}from"./useEffectiveDirectory-DqK9wN2A.js";import{u as Ir}from"./FadeInOnReveal-BNVExwoL.js";import{t as Lr}from"./LoadingImage-CoT3GWhg.js";import{n as Rr}from"./useWorkerHighlightedLines-C7PH1cfT.js";import{t as zr}from"./vendor-tanstack-react-virtual-B_EO--9t.js";import{t as Br}from"./vendor-motion-88WXBOBf.js";import{B as Vr,t as Hr,u as Ur,v as Wr,x as Gr}from"./MobileTabPageHeader-CJHZvQz-.js";import{c as Kr,l as qr}from"./mcpQueries-CtFbWoDt.js";import{a as Jr,c as Yr,d as Xr,i as Zr,l as Qr,m as $r,n as ei,o as ti,r as ni,s as ri,t as ii}from"./scheduledTaskNavigation-C1PrFEhV.js";import{n as ai,r as oi}from"./sessionLookup-DI87dntm.js";import{n as si,r as ci,t as li}from"./collapsible-BAPWS6G-.js";import{t as ui}from"./vendor-cron-parser-BmO80h0C.js";var Q=e(w(),1),di=L(),$=D(),fi=e(T(),1);function pi(){return new Worker(q,{type:`module`})}var mi=[`typescript`,`javascript`,`tsx`,`jsx`,`json`,`markdown`],hi={unified:{poolSize:1,totalASTLRUCacheSize:24,lineDiffType:`none`},split:{poolSize:2,totalASTLRUCacheSize:56,lineDiffType:`word-alt`}},gi,_i,vi=e=>{let t=hi[e],n=new G({workerFactory:pi,poolSize:t.poolSize,totalASTLRUCacheSize:t.totalASTLRUCacheSize},{theme:{light:`pierre-light`,dark:`pierre-dark`},langs:mi,lineDiffType:t.lineDiffType,preferredHighlighter:`shiki-wasm`});return n.initialize(),n},yi=e=>{if(!(typeof window>`u`))return e===`split`?(_i??=vi(`split`),_i):(gi??=vi(`unified`),gi)},bi=e=>{let t=(0,di.c)(7),{children:n,renderTheme:r}=e,i=Si(`unified`),a=Si(`split`),o,s;t[0]!==r||t[1]!==a||t[2]!==i?(o=()=>{i&&i.setRenderOptions({theme:r,lineDiffType:hi.unified.lineDiffType}),a&&a.setRenderOptions({theme:r,lineDiffType:hi.split.lineDiffType})},s=[r,a,i],t[0]=r,t[1]=a,t[2]=i,t[3]=o,t[4]=s):(o=t[3],s=t[4]),(0,Q.useEffect)(o,s);let c;return t[5]===n?c=t[6]:(c=(0,$.jsx)($.Fragment,{children:n}),t[5]=n,t[6]=c),c},xi=e=>{let t=(0,di.c)(11),{children:n}=e,r=xt(),i,a;if(t[0]!==r?.availableThemes||t[1]!==r?.darkThemeId||t[2]!==r?.lightThemeId){let e=Vn(!1),n=Vn(!0),o=r?.lightThemeId??e.metadata.id,s=r?.darkThemeId??n.metadata.id;a=r?.availableThemes.find(e=>e.metadata.id===o)??e,i=r?.availableThemes.find(e=>e.metadata.id===s)??n,gr(a),gr(i),t[0]=r?.availableThemes,t[1]=r?.darkThemeId,t[2]=r?.lightThemeId,t[3]=i,t[4]=a}else i=t[3],a=t[4];let o;t[5]!==i.metadata.id||t[6]!==a.metadata.id?(o={light:a.metadata.id,dark:i.metadata.id},t[5]=i.metadata.id,t[6]=a.metadata.id,t[7]=o):o=t[7];let s=o,c;return t[8]!==n||t[9]!==s?(c=(0,$.jsx)(bi,{renderTheme:s,children:n}),t[8]=n,t[9]=s,t[10]=c):c=t[10],c},Si=e=>{let t=(0,di.c)(2),n=e===void 0?`unified`:e,r;return t[0]===n?r=t[1]:(r=yi(n),t[0]=n,t[1]=r),r},Ci=(e,t)=>{if(!e||typeof e!=`object`)return!1;let n=e;return(n.role===`user`||n.role===`assistant`)&&typeof n.sessionID==`string`&&n.sessionID.length>0&&typeof n.messageID==`string`&&n.messageID.length>0&&typeof n.snippet==`string`&&typeof n.createdAt==`number`&&Number.isFinite(n.createdAt)&&t.length>0},wi=async e=>{let t=e.query.trim();if(!t)return[];let n=await(e.fetch??s)(`/api/openchamber/content-search`,{query:{q:t,limit:String(e.limit??30)},signal:e.signal});if(!n.ok)throw Error(`session content search failed (${n.status})`);let r=await n.json();if(!Array.isArray(r?.hits))throw Error(`session content search returned no hits`);return r.hits.flatMap(e=>Ci(e,typeof e?.directory==`string`?e.directory:``)?[e]:[])},Ti=(e,t)=>{let i=e.trim(),a=t.scope,o=a?.transport??n(),s=a?.generation??r(),c=t.searchContent??wi;return z({queryKey:p.sessionContentSearch.query(i,``,s,o),enabled:i.length>0&&a!==null,queryFn:({signal:e})=>a?c({scope:a,query:i,limit:30,signal:e}):[],staleTime:0,refetchInterval:3e3,retry:1})},Ei=(e=s)=>z({queryKey:[n(),`contentSearchStatus`,r()],queryFn:async({signal:t})=>{let n=await e(`/api/openchamber/content-search`,{signal:t});if(n.status===404||n.status===501)return null;if(!n.ok)throw Error(`Content index unavailable (${n.status})`);let{index:r}=await n.json();if(!r||![`pending`,`indexing`,`ready`,`partial`,`error`].includes(r.phase)||![r.total,r.completed,r.failed,r.messages].every(e=>Number.isFinite(e)&&e>=0)||r.initializationRequired!==void 0&&typeof r.initializationRequired!=`boolean`||[r.indexStartedAt,r.indexCompletedAt,r.coveredSince,r.verifiedAt,r.updatedAt].some(e=>e!=null&&!Number.isFinite(e)))throw Error(`Invalid content index status`);return r},refetchInterval:3e3,staleTime:0}),Di=_r(()=>ee(()=>import(`./OnboardingScreen-BiLurnX5.js`).then(e=>({default:e.OnboardingScreen})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])));function Oi(){let e=(0,di.c)(11),[t,n]=Q.useState(!1),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=Ei(),e[0]=r):r=e[0];let i=!t,a;e[1]===i?a=e[2]:(a={...r,enabled:i,refetchOnWindowFocus:!1,refetchInterval:ki},e[1]=i,e[2]=a);let o=B(a),s=o.data,c=o.isFetchedAfterMount&&!o.isError&&(s===null||s&&(s.initializationRequired===void 0||s.initializationRequired===!1&&s.updatedAt!=null)),l,u;if(e[3]===c?(l=e[4],u=e[5]):(l=()=>{c&&n(!0)},u=[c],e[3]=c,e[4]=l,e[5]=u),Q.useEffect(l,u),t||!s?.initializationRequired)return null;let d;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(d=e=>{e||n(!0)},e[6]=d):d=e[6];let f;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(f=()=>n(!0),e[7]=f):f=e[7];let p;return e[8]!==s||e[9]!==o.isError?(p=(0,$.jsx)(Q.Suspense,{fallback:null,children:(0,$.jsx)(Dt,{open:!0,onOpenChange:d,children:(0,$.jsx)(wt,{showCloseButton:!1,className:`h-full max-w-none rounded-none border-0 p-0`,overlayClassName:`z-[9997]`,containerClassName:`z-[9997] items-stretch p-0`,children:(0,$.jsx)(Di,{mode:`content-index`,indexStatus:s,indexStatusError:o.isError,onContinueInBackground:f})})})}),e[8]=s,e[9]=o.isError,e[10]=p):p=e[10],p}function ki(e){let t=e.state.data;return t===null||t&&t.initializationRequired===void 0||t?.initializationRequired===!1&&t.updatedAt!=null?!1:3e3}function Ai(){let e=(0,di.c)(4);if(Wn())return null;let t,n;if(e[0]===Symbol.for(`react.memo_cache_sentinel`)){let r=Ei().queryKey;t=Oi,n=JSON.stringify(r),e[0]=t,e[1]=n}else t=e[0],n=e[1];let r;return e[2]===n?r=e[3]:(r=(0,$.jsx)(t,{},n),e[2]=n,e[3]=r),r}var ji=Q.forwardRef((e,t)=>{let n=(0,di.c)(11),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=Y(`peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-none transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[checked]:bg-primary data-[unchecked]:bg-[var(--interactive-border)]`,r),n[3]=r,n[4]=a);let o;n[5]===Symbol.for(`react.memo_cache_sentinel`)?(o={width:`36px`,height:`20px`,minWidth:`36px`,minHeight:`20px`},n[5]=o):o=n[5];let s;n[6]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,$.jsx)(E,{className:Y(`pointer-events-none block rounded-full bg-background shadow-none ring-0 transition-transform data-[checked]:translate-x-4 data-[unchecked]:translate-x-0`),style:{width:`16px`,height:`16px`,minWidth:`16px`,minHeight:`16px`}}),n[6]=s):s=n[6];let c;return n[7]!==i||n[8]!==t||n[9]!==a?(c=(0,$.jsx)(O,{className:a,style:o,...i,ref:t,children:s}),n[7]=i,n[8]=t,n[9]=a,n[10]=c):c=n[10],c});ji.displayName=`Switch`;var Mi={},Ni=[],Pi=(e,t)=>{if(!e)return t(`mcpDropdown.status.unknown`);switch(e.status){case`connected`:return t(`mcpDropdown.status.connected`);case`failed`:return t(`mcpDropdown.status.failed`,{error:e.error||t(`mcpDropdown.status.unknownError`)});case`needs_auth`:return t(`mcpDropdown.status.needsAuth`);case`needs_client_registration`:return t(`mcpDropdown.status.needsRegistration`,{error:e.error||``});default:return e.status}},Fi=e=>{switch(e?.status){case`connected`:return`success`;case`failed`:return`error`;case`needs_auth`:case`needs_client_registration`:return`warning`;default:return`default`}},Ii=({active:e,className:t,headerAction:n,listClassName:r,hideHeader:i=!1,mobileListDensity:a=!1})=>{let{t:o}=pe(),s=k(e=>e.currentDirectory)??null,c=Vr(e=>e.connect),l=Vr(e=>e.disconnect),{data:u,refetch:d,isError:f,error:p}=qr(s,{enabled:e}),{data:m}=Kr(s,{enabled:e}),h=u??Mi,g=m??Ni,[_,v]=Q.useState(!1),[y,b]=Q.useState(null),x=Q.useMemo(()=>{let e=new Set(Object.keys(h));for(let t of g)t?.name&&e.add(t.name);return Array.from(e).sort((e,t)=>e.localeCompare(t))},[g,h]),S=Q.useCallback(e=>{if(e?.preventDefault(),_)return;v(!0);let t=new Promise(e=>setTimeout(e,500));Promise.all([d(),t]).finally(()=>{v(!1)})},[_,d]);return(0,$.jsxs)(`div`,{className:Y(`w-full`,t),children:[i?null:(0,$.jsx)(`div`,{className:`border-b border-[var(--interactive-border)]`,children:(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3 px-4 py-2.5`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex items-baseline gap-2`,children:[(0,$.jsx)(`div`,{className:`typography-ui-header font-semibold text-foreground`,children:o(`mcpDropdown.title`)}),s&&(0,$.jsx)(`div`,{className:`truncate typography-micro text-muted-foreground`,children:s.split(`/`).pop()||s})]}),(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[n,(0,$.jsx)(`button`,{type:`button`,className:`inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:text-foreground hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary`,disabled:_,onClick:S,"aria-label":o(`mcpDropdown.actions.refreshAria`),children:(0,$.jsx)(Z,{name:`refresh`,className:Y(`h-4 w-4`,_&&`animate-spin`)})})]})]})}),(0,$.jsx)(`div`,{className:Y(`max-h-64 overflow-y-auto`,a?`space-y-1 py-3`:`px-3 py-2.5`,r),children:(0,$.jsxs)(`div`,{className:Y(!a&&x.length>0&&`rounded-xl bg-[var(--surface-muted)] p-1.5`),children:[x.map(e=>{let t=h[e]??(f&&!u&&g.some(t=>t.name===e)?{status:`failed`,error:p.message}:void 0),n=Fi(t),r=t?.status===`connected`,i=y===e,d=Pi(t,o);return(0,$.jsxs)(`div`,{className:Y(`flex items-center justify-between rounded-lg hover:bg-interactive-hover/50`,a?`gap-3 px-4 py-3`:`gap-2 px-2.5 py-2`),children:[(0,$.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,$.jsxs)(yn,{children:[(0,$.jsx)(_n,{asChild:!0,children:(0,$.jsx)(`span`,{className:Y(`rounded-full flex-shrink-0`,a?`h-2.5 w-2.5`:`h-2 w-2`,n===`success`&&`bg-status-success`,n===`error`&&`bg-status-error`,n===`warning`&&`bg-status-warning`,n==="default"&&`bg-muted-foreground/40`),"aria-label":d})}),(0,$.jsx)(vn,{side:`left`,children:(0,$.jsx)(`p`,{children:d})})]}),(0,$.jsx)(`span`,{className:Y(`truncate`,a?`text-[17px] leading-6 font-medium`:`typography-ui-label`),children:e})]})}),(0,$.jsx)(ji,{checked:r,disabled:i,className:`data-[checked]:bg-status-info`,onCheckedChange:async t=>{b(e);try{t?await c(e,s):await l(e,s)}finally{b(null)}}})]},e)}),x.length===0&&(0,$.jsx)(`div`,{className:`px-4 py-5 typography-ui-label text-muted-foreground text-center`,children:o(`mcpDropdown.empty.configureInConfig`)})]})})]})},Li=e=>!(e.dismissed===`true`||e.sessionShown===`true`||e.hasActiveToast),Ri=e=>!(!e.version||e.seenVersions.has(e.version)||e.dismissedVersion!==null&&e.dismissedVersion===e.version),zi=e=>{if(typeof e!=`object`||!e)return``;let t=e.version;return typeof t==`string`?t.trim():``},Bi=e=>{if(!e||e.available!==!0||e.canManage===!1)return``;let t=typeof e.latestVersion==`string`?e.latestVersion:typeof e.targetVersion==`string`?e.targetVersion:``;return t?t.trim():``},Vi=e=>{let t=e.trim().replace(/^v/i,``);return t?{target:t}:null},Hi=5e3,Ui={setTimeout:(e,t)=>globalThis.setTimeout(e,t),clearTimeout:e=>globalThis.clearTimeout(e)};function Wi(e,t,n=Ui){if(!e)return()=>void 0;let r=n.setTimeout(()=>{t().catch(()=>void 0)},Hi);return()=>n.clearTimeout(r)}var Gi=(e,t)=>({queryKey:[e,`opencode-update`,t],queryFn:async({signal:i})=>{let a=()=>e===n()&&t===r();if(!a())throw Error(`Stale OpenCode update check`);let o=await s(`/api/opencode/upgrade-status`,{headers:{Accept:`application/json`},signal:i});if(!o.ok)throw Error(`OpenCode update check failed`);let c=await o.json();if(i.aborted||!a())throw Error(`Stale OpenCode update check`);if(!c||typeof c!=`object`||Array.isArray(c))throw Error(`Invalid OpenCode update status`);return c},staleTime:3e4,refetchInterval:3e5,refetchOnWindowFocus:!0,refetchOnReconnect:!0,retry:1}),Ki=`opencode-update-available`,qi=`opencode-upgrade-progress`,Ji=`opencode-update-toast-dismissed-version`,Yi=()=>{let{t:e}=pe(),i=P(e=>e.showOpenCodeUpdateNotifications),a=Q.useRef(new Set),o=Q.useRef(!1),c=Q.useSyncExternalStore(t,n,n),l=Q.useSyncExternalStore(t,r,r),u=te(),[d,f]=Q.useState(!1);Q.useEffect(()=>Wi(i,async()=>{f(!0)}),[i]);let p=B({...Gi(c,l),enabled:i&&d});de(`openchamber:opencode-update-available`,e=>{i&&zi(e.detail)&&p.refetch()});let m=`${Ji}:${c}`;Q.useEffect(()=>{a.current.clear(),Pe.dismiss(Ki),Pe.dismiss(qi)},[c,l]),Q.useEffect(()=>{i||Pe.dismiss(Ki)},[i]);let h=le(async(t,i=!1)=>{if(o.current)return;o.current=!0;let a=()=>c===n()&&l===r();Pe.dismiss(Ki),Pe.message(e(`opencodeUpdate.toast.upgrading.title`),{id:qi,description:e(`opencodeUpdate.toast.upgrading.description`),duration:1/0,icon:(0,$.jsx)(Z,{name:`refresh`,className:`h-4 w-4 animate-spin text-muted-foreground`})});try{let n=Vi(t);if(!n)throw Error(e(`opencodeUpdate.toast.failed.description`));let r=await s(`/api/opencode/upgrade`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({...n,confirmActiveTasks:i})}),o=await r.json().catch(()=>null);if(!a())return;if(o?.errorCode===`UPGRADE_ACTIVE_TASKS`){Pe.error(e(`opencodeUpdate.toast.failed.title`),{id:qi,description:o.error,duration:1/0,action:{label:e(`opencodeUpdate.toast.actions.update`),onClick:()=>{a()&&h(t,!0)}}});return}if(!r.ok||o?.success!==!0)throw Error(o?.error||r.statusText||e(`opencodeUpdate.toast.failed.description`));Pe.success(e(`opencodeUpdate.toast.updated.title`),{id:qi,description:o?.version?e(`opencodeUpdate.toast.updated.descriptionWithVersion`,{version:o.version}):e(`opencodeUpdate.toast.updated.description`),duration:1/0,icon:(0,$.jsx)(Z,{name:`check`,className:`h-4 w-4 text-[var(--status-success)]`})}),u.invalidateQueries({queryKey:[c,`opencode-update`,l]}),u.invalidateQueries({queryKey:[c,`about`,l]})}catch(n){if(!a())return;Pe.error(e(`opencodeUpdate.toast.failed.title`),{id:qi,description:n instanceof Error?n.message:e(`opencodeUpdate.toast.failed.description`),duration:1/0,action:{label:e(`opencodeUpdate.toast.actions.update`),onClick:()=>{a()&&h(t)}}})}finally{o.current=!1}});return Q.useEffect(()=>{let t=t=>{if(!P.getState().showOpenCodeUpdateNotifications){Pe.dismiss(Ki);return}Ri({version:t,dismissedVersion:I().getItem(m),seenVersions:a.current})&&(a.current.add(t),Pe.info(e(`opencodeUpdate.toast.available.title`),{id:Ki,description:e(`opencodeUpdate.toast.available.description`,{version:t}),duration:1/0,action:{label:e(`opencodeUpdate.toast.actions.update`),onClick:()=>{c===n()&&l===r()&&h(t)}},cancel:{label:e(`opencodeUpdate.toast.actions.dismiss`),onClick:()=>{I().setItem(m,t),Pe.dismiss(Ki)}}}))},i=Bi(p.data);i?t(i):(p.data?.available===!1||p.data?.canManage===!1)&&Pe.dismiss(Ki)},[i,e,p.data,m,c,l,h]),null},Xi=()=>{let e=(0,di.c)(3),[t,n]=Q.useState(Zi),{isUpdating:r}=t,i,a;if(e[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=()=>et(n),a=[],e[0]=i,e[1]=a):(i=e[0],a=e[1]),Q.useEffect(i,a),!r)return null;let o;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,$.jsx)(`div`,{className:`fixed inset-0 z-[9999] flex items-center justify-center bg-background/90`,children:(0,$.jsx)(Cn,{width:80,height:80,isAnimated:!0})}),e[2]=o):o=e[2],o};function Zi(){return $e()}var Qi=5e3,$i=(e,t)=>{if(!e)return 1;let n=1;for(let r=0;r<e.length;r+=1)if(e.charCodeAt(r)===10&&(n+=1,n>t))return n;return n},ea=(e,t)=>ye(ve.getState().dictionary,e,t),ta=e=>{let t=(e instanceof Error?e.message:String(e??``)).toLowerCase();return t.includes(`file not found`)||t.includes(`not found`)||t.includes(`enoent`)||t.includes(`no such file`)||t.includes(`does not exist`)?`missing`:`unreadable`},na=async(e,t)=>{if(e.readFile){let n=await e.readFile(t,{optional:!0});if(typeof n.exists!=`boolean`)throw Error(`Optional file read requires an existence response header`);return{content:n.content??``,exists:n.exists}}let n=new URLSearchParams({path:t,optional:`true`}),r=await s(`/api/fs/read?${n.toString()}`,{cache:`no-store`});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to read file`)}let i=r.headers.get(`x-openchamber-file-exists`);if(i!==`true`&&i!==`false`)throw Error(`Optional file read requires an existence response header`);return{content:await r.text(),exists:i===`true`}},ra=async(e,t)=>{try{let{content:n,exists:r}=await na(e,t);return r?$i(n,5e3)>5e3?{ok:!1,reason:`too-large`}:{ok:!0}:{ok:!1,reason:`missing`}}catch(e){return{ok:!1,reason:ta(e)}}},ia=e=>e===`too-large`?ea(`contextFileOpen.failure.tooLarge`,{count:Qi.toLocaleString(ge())}):ea(e===`missing`?`contextFileOpen.failure.missing`:`contextFileOpen.failure.unreadable`),aa=(e,t)=>!e||t.length===0?``:JSON.stringify([e,t]),oa=(e,t,n,r)=>!n||r!==n||e.length===0?[]:We(e,t,e=>e.name,{limit:10,threshold:.4}),sa=(e,t={})=>{let r=e.trim(),i=t.transport??n(),a=t.searchSessions??(e=>j.searchSessionsByTitle(e));return z({queryKey:p.sessionTitleSearch.query(r,i),enabled:r.length>0,queryFn:({signal:e})=>a({search:r,limit:30,signal:e}),staleTime:5e3,retry:1})},ca=e=>{let t=(0,di.c)(13),{title:n,description:r,trailing:i}=e,a=r?`min-w-0 max-w-[58%] shrink-0 truncate typography-meta font-medium leading-4 text-foreground`:`min-w-0 flex-1 truncate typography-meta font-medium leading-4 text-foreground`,o;t[0]!==a||t[1]!==n?(o=(0,$.jsx)(`span`,{className:a,children:n}),t[0]=a,t[1]=n,t[2]=o):o=t[2];let s;t[3]===r?s=t[4]:(s=r?(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate typography-micro leading-4 text-muted-foreground/65`,children:r}):null,t[3]=r,t[4]=s);let c;t[5]!==o||t[6]!==s?(c=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2.5`,children:[o,s]}),t[5]=o,t[6]=s,t[7]=c):c=t[7];let l;t[8]===i?l=t[9]:(l=i?(0,$.jsx)(`div`,{className:`ml-auto flex shrink-0 items-center pl-2 text-muted-foreground/50`,children:i}):null,t[8]=i,t[9]=l);let u;return t[10]!==c||t[11]!==l?(u=(0,$.jsxs)($.Fragment,{children:[c,l]}),t[10]=c,t[11]=l,t[12]=u):u=t[12],u},la=`min-h-9 gap-2 rounded-lg px-3 py-2 typography-meta`,ua=`py-0 [&_[cmdk-group-heading]]:px-2.5 [&_[cmdk-group-heading]]:pb-2 [&_[cmdk-group-heading]]:pt-3 [&_[cmdk-group-heading]]:font-normal [&_[cmdk-group-heading]]:text-muted-foreground`,da=`rounded-[3px] bg-[color-mix(in_srgb,var(--primary-base)_28%,transparent)] px-0.5 font-[inherit] text-foreground`;function fa(e,t){let n=t.trim().toLowerCase().split(/\s+/).filter(Boolean);if(!n.length||!e)return e;let r=n.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)),i=RegExp(`(${r.join(`|`)})`,`gi`);return e.split(i).map((e,t)=>n.includes(e.toLowerCase())?(0,$.jsx)(`mark`,{className:da,children:e},t):(0,$.jsx)(`span`,{children:e},t))}var pa=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`),n=t.startsWith(`//`),r=t.replace(/\/+/g,`/`);n&&!r.startsWith(`//`)&&(r=`/${r}`);let i=r===`/`,a=/^[A-Za-z]:\/$/.test(r);return!i&&!a&&(r=r.replace(/\/+$/,``)),r},ma=[],ha=Q.memo(function({presentation:e=`dialog`,onBack:t}){let{t:i}=pe(),a=rr(),o=P(e=>e.isCommandPaletteOpen),[s,c]=Q.useState(o),l=P(e=>e.setCommandPaletteOpen),u=P(e=>e.setActiveMainTab),f=P(e=>e.setSettingsDialogOpen),p=P(e=>e.setSettingsPage),h=P(e=>e.setSessionSwitcherOpen),g=P(e=>e.toggleSidebar),v=P(e=>e.toggleRightSidebar),x=P(e=>e.toggleBottomTerminal),S=P(e=>e.openContextOverview),C=P(e=>e.openContextFile),w=P(e=>e.shortcutOverrides),T=Ze(e=>e.openNewSessionDraft),E=Ze(e=>e.setCurrentSession),D=o||s,O=Fe(e=>D?e.activeSessions:ma),j=Fe(e=>D?e.status:`idle`),M=k(e=>e.currentDirectory),N=ct(e=>e.getActiveProject()),F=ct(e=>e.projects),I=Fr(),L=A(e=>e.searchFiles),{files:ee}=Un(),{isMobile:te}=Rn(),R=e===`page`||te,z=he(),ne=Q.useRef(null),re=Q.useRef(null),V=le(()=>{if(!R||!o||!ne.current)return;let e=window.visualViewport;ne.current.style.setProperty(`--search-viewport-height`,`${e?.height??window.innerHeight}px`),ne.current.style.setProperty(`--search-viewport-top`,`${e?.offsetTop??0}px`)});de(`resize`,V,()=>R&&o?window.visualViewport??window:null),de(`scroll`,V,()=>R&&o?window.visualViewport:null),Q.useEffect(()=>{V()},[R,o]),Q.useEffect(()=>{e===`page`&&o&&re.current?.focus({preventScroll:!0})},[e,o]);let ie=Q.useMemo(()=>I?pa(I):null,[I]),[ae,oe]=Q.useState(``),[H,U]=Q.useState({query:``,groups:[]}),W=lr(ae,200).trim(),G=ae.trim();Q.useEffect(()=>{o&&(oe(``),U({query:``,groups:[]}),c(!0))},[o]);let K=le(()=>l(!1)),q=le(e=>()=>{K(),e()}),J=Q.useMemo(()=>{let e=[{id:`new-session`,title:i(`commandPalette.item.newSession`),shortcutId:`new_chat`,searchText:i(`commandPalette.item.newSession`),onSelect:q(()=>{u(`chat`),h(!1),T()})},{id:`new-worktree`,title:i(`commandPalette.item.newWorktreeDraft`),shortcutId:`new_chat_worktree`,searchText:i(`commandPalette.item.newWorktreeDraft`),onSelect:q(()=>{Ht()})},{id:`add-project`,title:i(`commandPalette.item.addProject`),searchText:i(`commandPalette.item.addProject`),onSelect:q(()=>{lt.requestDirectoryDialog()})},{id:`toggle-sidebar`,title:i(R?`commandPalette.item.showSessionSwitcher`:`commandPalette.item.toggleSidebar`),shortcutId:`toggle_sidebar`,searchText:i(R?`commandPalette.item.showSessionSwitcher`:`commandPalette.item.toggleSidebar`),onSelect:q(()=>{if(R){let{isSessionSwitcherOpen:e}=P.getState();h(!e)}else g()})},{id:`toggle-right-sidebar`,title:i(`commandPalette.item.toggleRightSidebar`),shortcutId:`toggle_right_sidebar`,searchText:i(`commandPalette.item.toggleRightSidebar`),onSelect:q(()=>v())},{id:`toggle-terminal`,title:i(`commandPalette.item.toggleTerminal`),shortcutId:`toggle_terminal`,searchText:i(`commandPalette.item.toggleTerminal`),onSelect:q(()=>x())},{id:`new-terminal-tab`,title:i(`commandPalette.item.newTerminalTab`),shortcutId:`open_new_terminal`,searchText:i(`commandPalette.item.newTerminalTab`),onSelect:q(()=>{I&&zt(I)})},{id:`context-usage`,title:i(`commandPalette.item.showContextUsage`),searchText:i(`commandPalette.item.showContextUsage`),onSelect:q(()=>{M&&S(M)})},{id:`open-settings`,title:i(`commandPalette.item.openSettings`),shortcutId:`open_settings`,searchText:i(`commandPalette.item.openSettings`),onSelect:q(()=>f(!0))}];return d()&&e.splice(1,0,{id:`new-mini-chat`,title:i(`commandPalette.item.newMiniChat`),shortcutId:`new_mini_chat`,searchText:i(`commandPalette.item.newMiniChat`),onSelect:q(()=>{y(`desktop_open_draft_mini_chat_window`,{directory:pa(M||N?.path||``),projectId:N?.id??null}).catch(e=>{console.warn(`[command-palette] failed to open draft mini chat window`,e)})})}),e},[i,q,R,u,h,T,g,v,x,M,I,S,f,N?.id,N?.path]),se=Q.useMemo(()=>{let e=_();return{isVSCode:m(),isWeb:!e&&b(),isDesktop:e,isMobile:R}},[R]),ce=Q.useMemo(()=>Xr.filter(e=>e.slug!==`home`).filter(e=>!e.isAvailable||e.isAvailable(se)).map(e=>{let t=(e.keywords??[]).join(` `);return{id:`settings:${e.slug}`,title:e.title,searchText:`${e.title} ${e.group} ${t}`,onSelect:q(()=>{p(e.slug),f(!0)})}}),[se,q,p,f]),ue=Q.useMemo(()=>{let e=e=>(typeof e.time?.updated==`number`?e.time.updated:0)||(typeof e.time?.created==`number`?e.time.created:0);return[...O].sort((t,n)=>e(n)-e(t))},[O]),fe=Ze(e=>e.worktreeMetadata),me=Ze(e=>e.availableWorktreesByProject),[ge,Y]=Q.useState([]),[X,ve]=Q.useState(``),[ye,be]=Q.useState(``),xe=aa(ie,W);Q.useEffect(()=>{if(!o){Y([]),ve(``),be(``);return}if(!xe){Y([]),ve(``),be(``);return}if(!ie){Y([]),ve(``),be(``);return}let e=!1;return be(``),L(ie,W,10,{type:`file`}).then(t=>{e||(Y(t.map(e=>({path:pa(e.path),name:e.name,relativePath:e.relativePath}))),ve(xe),be(``))}).catch(()=>{e||(Y([]),ve(``),be(xe))}),()=>{e=!0}},[o,ie,W,xe,L]);let Se=G.length>0,Ce=Q.useMemo(()=>Se?We(J,G,e=>e.searchText,{limit:7,noFuzzy:!0}):J.map(e=>({item:e,score:0})),[J,G,Se]),we=Q.useMemo(()=>Se?We(ce,G,e=>e.searchText,{limit:7,noFuzzy:!0}):[],[ce,G,Se]),Ee=B({...sa(W),enabled:(o||s)&&(W.length>0||e===`page`)}),De={transport:n(),generation:r(),directory:``},Oe=JSON.stringify([De.transport,De.generation,ie,G,o]),[ke,Ae]=Q.useState(null),je=ke?.key===Oe?ke:null;ke&&!je&&Ae(null);let Me=B({...Ei(),enabled:o||s}),Ne=B({...Ti(W,{scope:De}),enabled:(o||s)&&W.length>0&&De!==null}),Ie=Q.useMemo(()=>je?.hits??Ne.data??[],[je,Ne.data]),Le=Se&&G===W&&Ne.isError,Re=Se&&G===W&&Ee.isSuccess,ze=(Se||e===`page`)&&G===W&&Ee.isError,Be=Q.useMemo(()=>ze?We(ue,G,e=>e.title||``,{limit:30,threshold:.2}).map(({item:e})=>e):[],[ze,ue,G]),Ve=Q.useMemo(()=>je?je.sessions:Se?Re?Ee.data??[]:ze?Be:[]:e===`page`&&!W&&Ee.isSuccess?Ee.data:ue.slice(0,e===`page`?30:9),[Se,ue,Re,ze,Be,Ee.data,Ee.isSuccess,e,W,je]),He=Q.useMemo(()=>!o&&!s||G!==W||ye===xe?[]:oa(ge,W,xe,X),[o,s,ge,X,xe,W,G,ye]),Ue=(o||s)&&xe.length>0&&X!==xe&&ye!==xe,Ge=Q.useMemo(()=>{if(!Se)return[];let e=F.map(e=>({...e,displayName:e.label||e.path.split(`/`).pop()||e.path,searchText:`${e.label||``} ${e.path}`}));return We(e,G,e=>e.searchText,{limit:7,threshold:.4})},[F,G,Se]),Ke=JSON.stringify([ie,G]),qe=H.query===Ke?H.groups:[],Je=(e,t)=>Se&&!qe.includes(e)?t.slice(0,5):t,Ye=Je(`commands`,Ce.map(e=>e.item)),Xe=Je(`settings`,we.map(e=>e.item)),Qe=Q.useMemo(()=>{let e=new Map;for(let t of Ie){let n=e.get(t.sessionID)??[];n.push(t),e.set(t.sessionID,n)}let t=[],n=new Map(O.map(e=>[e.id,e]));for(let n of Ve){let r=e.get(n.id);if(r){for(let e of r)t.push({session:n,hit:e});e.delete(n.id)}else t.push({session:n})}for(let r of e.values())for(let e of r)t.push({session:n.get(e.sessionID)??{id:e.sessionID,title:e.title??``,directory:e.directory,location:{directory:e.directory}},hit:e});return t},[Ve,Ie,O]),$e=Je(`sessions`,Qe),et=Se?Je(`files`,He.map(e=>e.item)):[],tt=Se?Je(`projects`,Ge.map(e=>e.item)):[],rt=(e,t,n)=>t>n?(0,$.jsx)(Jt,{value:`more:${e}`,onSelect:()=>U({query:Ke,groups:[...qe,e]}),className:`${la} text-muted-foreground`,children:i(`commandPalette.group.showMore`,{count:t-n})}):null,it=Q.useMemo(()=>{if(!Se)return[`sessions`,`commands`];let e=e=>e.length?e[0].score:1/0,t=[{key:`commands`,score:e(Ce)},{key:`settings`,score:e(we)},{key:`files`,score:e(He)},{key:`projects`,score:e(Ge)}];return t.sort((e,t)=>e.score-t.score),[`sessions`,...t.map(e=>e.key)]},[Se,Ce,we,He,Ge]),ot=le((e,t)=>{K(),u(`chat`),h(!1);let n=nt(e)||``;a?at.getState().openSession({sessionId:e.id,directory:n}):E(e.id,n),t&&Nt(t)}),st=le(e=>{let t=ue.find(t=>t.id===e.sessionID)??Ve.find(t=>t.id===e.sessionID)??{id:e.sessionID,title:e.title??``,directory:e.directory,location:{directory:e.directory}};ot(t,e.messageID)}),ut=le(async e=>{if(!ie)return;let t=await ra(ee,e);if(!t.ok){Pe.error(ia(t.reason));return}a?a.openFile({path:e}):C(ie,e),K()}),dt=le((e,t)=>{K();let n={selectedProjectId:e,directoryOverride:t};a?at.getState().openDraft(n):T(n)}),ft=e=>jn(kn(e,w)),pt=e=>!xt&&(e.key===`Enter`||e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),e.stopPropagation(),!0),mt=le(e=>{if(pt(e)||(!je&&!e.nativeEvent.isComposing&&[`ArrowDown`,`ArrowUp`,`Enter`].includes(e.key)&&Ae({key:Oe,hits:Ie,sessions:Ve}),R||e.nativeEvent.isComposing||e.altKey||e.shiftKey)||(z?!e.metaKey||e.ctrlKey:!e.ctrlKey||e.metaKey)||!/^[1-9]$/.test(e.key)||(e.preventDefault(),e.stopPropagation(),e.repeat||!xt))return;let t=$e[Number(e.key)-1];t?.hit?st(t.hit):t&&ot(t.session)}),ht=e=>{let t=pa(fe.get(e.id)?.projectDirectory||nt(e)||``),n=gt(F,me,t);return n?.label||(n?.path||t).split(`/`).pop()||``},_t=Se&&G===W&&!!xe&&ye===xe,vt=Se&&(G!==W||!!ie&&Ue||Ee.isFetching&&!Ee.isSuccess||De!==null&&Ne.isFetching&&!Ne.isSuccess),[yt,bt]=Q.useState(W);!vt&&yt!==W&&bt(W);let xt=!Se||yt===W&&!vt,Z=(0,$.jsx)(Gt,{ref:re,variant:R?`mobileGlass`:`default`,className:`font-normal`,"aria-label":i(`commandPalette.title`),inputMode:`search`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,value:ae,onValueChange:e=>{Ae(null),oe(e),U({query:``,groups:[]})},placeholder:i(`commandPalette.input.placeholder`)}),Ct=(0,$.jsxs)(Kt,{shouldFilter:!1,onKeyDownCapture:mt,onPointerDownCapture:e=>{let t=e.target.closest(`[cmdk-item]`);R&&t&&qn({currentTarget:t})},onPointerCancelCapture:e=>{let t=e.target.closest(`[cmdk-item]`);R&&t&&Jn({currentTarget:t,detail:1})},onClickCapture:e=>{let t=e.target.closest(`[cmdk-item]`);R&&t&&e.detail>0&&!Jn({currentTarget:t,detail:e.detail})&&(e.preventDefault(),e.stopPropagation())},className:`max-h-full min-h-0 rounded-[inherit] bg-transparent [&_[cmdk-group]]:px-0 [&_[cmdk-item][data-selected=true]]:!bg-[color-mix(in_srgb,var(--interactive-selection)_40%,transparent)] [&_[cmdk-item]:hover]:!bg-[color-mix(in_srgb,var(--interactive-selection)_40%,transparent)]`,children:[R?(0,$.jsx)(Te,{title:Z,backAriaLabel:i(`header.actions.backAria`),onBack:t??K}):Z,(0,$.jsxs)(Bt,{"aria-label":i(`commandPalette.title`),className:`overscroll-contain p-1.5`,children:[(0,$.jsx)(`div`,{className:`px-3 py-2 typography-meta text-muted-foreground`,"aria-live":`polite`,children:Me.isError||Me.data?.phase===`error`||Me.data?.phase===`partial`?i(`commandPalette.index.partial`):Me.data?.phase===`ready`?i(`commandPalette.index.ready`,{count:Me.data.messages}):i(`commandPalette.index.progress`,{completed:Me.data?.completed??0,total:Me.data?.total??0})}),xt&&!_t&&!ze&&!Le&&j!==`loading`&&j!==`error`?(0,$.jsx)(Vt,{className:`py-10 text-center typography-meta text-muted-foreground`,children:i(`commandPalette.empty.noResults`)}):null,xt?it.map(e=>e===`commands`&&Ye.length>0?(0,$.jsxs)(Rt,{heading:i(`settings.page.commands.title`),className:ua,children:[Ye.map(e=>(0,$.jsx)(Jt,{value:e.id,onSelect:e.onSelect,className:la,children:(0,$.jsx)(ca,{title:fa(e.title,G),trailing:!R&&e.shortcutId?(0,$.jsx)(Xt,{className:`h-3.5 min-w-0 shrink-0 rounded-full border-0 bg-[color-mix(in_srgb,var(--surface-foreground)_6%,transparent)] px-1.5 font-sans text-[10px] font-medium tracking-tight text-muted-foreground/65 shadow-none`,children:ft(e.shortcutId)}):void 0})},e.id)),rt(`commands`,Ce.length,Ye.length)]},`commands`):e===`settings`&&Xe.length>0?(0,$.jsxs)(Rt,{heading:i(`settings.view.home.title`),className:ua,children:[Xe.map(e=>(0,$.jsx)(Jt,{value:e.id,onSelect:e.onSelect,className:la,children:(0,$.jsx)(ca,{title:fa(e.title,G)})},e.id)),rt(`settings`,we.length,Xe.length)]},`settings`):e===`sessions`&&$e.length>0?(0,$.jsxs)(Rt,{heading:i(`layout.mainTab.chat`),className:ua,children:[$e.map(({session:e,hit:t},n)=>{let r=t?.title||e.title||i(`commandPalette.session.untitled`),a=ht(e);return(0,$.jsxs)(Jt,{value:t?`message:${e.id}:${t.messageID}`:`session:${e.id}`,onSelect:()=>t?st(t):ot(e),className:`flex-col items-stretch gap-1 rounded-lg px-3 py-2`,"aria-keyshortcuts":!R&&n<9?`${z?`Meta`:`Control`}+${n+1}`:void 0,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate typography-ui-label text-foreground`,title:r,children:fa(r,G)}),(0,$.jsx)(`span`,{className:`max-w-[28%] shrink-0 truncate typography-meta text-muted-foreground`,title:a,children:a}),!R&&n<9?(0,$.jsxs)(Xt,{className:`h-5 min-w-8 shrink-0 rounded-full border-0 bg-interactive-selection px-2 text-muted-foreground shadow-none`,children:[z?`⌘`:`Ctrl+`,n+1]}):null]}),t?(0,$.jsxs)(`span`,{className:`line-clamp-3 whitespace-pre-wrap break-words typography-ui-label text-muted-foreground`,children:[(0,$.jsxs)(`span`,{className:`font-medium`,children:[i(t.role===`user`?`commandPalette.message.user`:`commandPalette.message.assistant`),`: `]}),fa(t.snippet,G)]}):null]},t?`message:${e.id}:${t.messageID}`:`session:${e.id}`)}),rt(`sessions`,Qe.length,$e.length)]},`sessions`):e===`files`&&et.length>0?(0,$.jsxs)(Rt,{heading:i(`layout.mainTab.files`),className:ua,children:[et.map(e=>{let t=_e(e.relativePath||e.name,{maxLength:80});return(0,$.jsx)(Jt,{value:`file:${e.path}`,onSelect:()=>{ut(e.path)},className:la,children:(0,$.jsx)(ca,{title:fa(e.name,G),description:t===e.name?void 0:fa(t,G)})},`file:${e.path}`)}),rt(`files`,He.length,et.length)]},`files`):e===`projects`&&tt.length>0?(0,$.jsxs)(Rt,{heading:i(`sessions.sidebar.projectsTitle`),className:ua,children:[tt.map(e=>{let t=e.displayName;return(0,$.jsx)(Jt,{value:`project:${e.id}`,onSelect:()=>dt(e.id,e.path),className:la,children:(0,$.jsx)(ca,{title:fa(t,G)})},`project:${e.id}`)}),rt(`projects`,Ge.length,tt.length)]},`projects`):null):(0,$.jsx)(`div`,{role:`status`,className:`px-3 py-10 text-center typography-meta text-muted-foreground`,children:i(`common.loading`)}),xt&&j===`loading`?(0,$.jsx)(`div`,{role:`status`,className:`px-3 py-4 text-center typography-meta text-muted-foreground`,children:i(`common.loading`)}):null,xt&&j===`error`?(0,$.jsx)(`div`,{role:`alert`,className:`px-3 py-4 typography-meta text-[var(--status-error)]`,children:i(`commandPalette.error.sessions`)}):null,xt&&ze?(0,$.jsx)(`div`,{role:`alert`,className:`px-3 py-4 typography-meta text-[var(--status-error)]`,children:i(`commandPalette.error.sessions`)}):null,xt&&Le?(0,$.jsx)(`div`,{role:`alert`,className:`px-3 py-4 typography-meta text-[var(--status-error)]`,children:i(`commandPalette.error.messages`)}):null,xt&&_t?(0,$.jsx)(`div`,{role:`alert`,className:`px-3 py-4 typography-meta text-[var(--status-error)]`,children:i(`mobile.files.error.listFailed`)}):null]})]});return e===`page`?(0,$.jsx)(`section`,{ref:ne,"data-global-search":`true`,"data-page-scroll-lock":`true`,"aria-label":i(`commandPalette.title`),className:`oc-global-search-page flex min-h-0 w-full flex-col bg-background text-foreground`,children:Ct}):(0,$.jsx)(Dt,{open:o,onOpenChange:l,onOpenChangeComplete:e=>{e||c(!1)},children:(0,$.jsxs)(wt,{ref:ne,initialFocus:re,"data-global-search":`true`,"data-mobile":R,"data-page-scroll-lock":`true`,className:R?`oc-global-search-page oc-global-search-mobile fixed inset-0 z-50 m-0 flex max-w-none translate-x-0 translate-y-0 flex-col gap-0 overflow-hidden rounded-none border-0 bg-background p-0`:`oc-global-search oc-mobile-overlay-surface oc-mobile-overlay-surface--translucent oc-composer-autocomplete-surface fixed left-1/2 top-[10vh] z-50 w-[min(56rem,calc(100vw-3rem))] max-w-none -translate-x-1/2 translate-y-0 gap-0 overflow-hidden rounded-3xl border-0 p-0`,containerClassName:`block p-0`,overlayClassName:`bg-transparent dark:bg-transparent`,showCloseButton:!1,children:[(0,$.jsxs)(St,{className:`sr-only`,children:[(0,$.jsx)(Tt,{children:i(`commandPalette.title`)}),(0,$.jsx)(Et,{children:i(`commandPalette.description`)})]}),Ct]})})}),ga=class extends Q.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){this.setState({error:e,errorInfo:t})}handleReset=()=>{this.setState({hasError:!1,error:void 0,errorInfo:void 0})};render(){return this.state.hasError?(0,$.jsx)(`div`,{className:`flex items-center justify-center min-h-screen p-4`,children:(0,$.jsxs)(Ln,{className:`w-full max-w-md`,children:[(0,$.jsx)(xn,{className:`text-center`,children:(0,$.jsxs)(bn,{className:`flex items-center justify-center gap-2 text-destructive`,children:[(0,$.jsx)(Z,{name:`chat-3`,className:`h-5 w-5`}),this.props.texts.title]})}),(0,$.jsxs)(wn,{className:`space-y-4`,children:[(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground text-center`,children:this.props.texts.description}),this.props.sessionId&&(0,$.jsxs)(`div`,{className:`text-xs text-muted-foreground text-center`,children:[this.props.texts.sessionLabel,`: `,this.props.sessionId]}),this.state.error&&(0,$.jsxs)(`details`,{className:`text-xs font-mono bg-muted p-3 rounded`,children:[(0,$.jsx)(`summary`,{className:`cursor-pointer hover:bg-interactive-hover/80`,children:this.props.texts.detailsSummary}),(0,$.jsx)(`pre`,{className:`mt-2 max-h-48 overflow-auto`,children:this.state.error.toString()})]}),(0,$.jsx)(`div`,{className:`flex gap-2`,children:(0,$.jsxs)(X,{onClick:this.handleReset,variant:`outline`,className:`flex-1`,children:[(0,$.jsx)(Z,{name:`restart`,className:`h-4 w-4 mr-2`}),this.props.texts.resetAction]})}),(0,$.jsx)(`div`,{className:`text-xs text-muted-foreground text-center`,children:this.props.texts.persistentHint})]})]})}):this.props.children}};function _a(e){let t=(0,di.c)(22),{t:n}=pe(),r;t[0]===n?r=t[1]:(r=n(`chat.errorBoundary.title`),t[0]=n,t[1]=r);let i;t[2]===n?i=t[3]:(i=n(`chat.errorBoundary.description`),t[2]=n,t[3]=i);let a;t[4]===n?a=t[5]:(a=n(`chat.errorBoundary.sessionLabel`),t[4]=n,t[5]=a);let o;t[6]===n?o=t[7]:(o=n(`chat.errorBoundary.detailsSummary`),t[6]=n,t[7]=o);let s;t[8]===n?s=t[9]:(s=n(`chat.errorBoundary.resetAction`),t[8]=n,t[9]=s);let c;t[10]===n?c=t[11]:(c=n(`chat.errorBoundary.persistentHint`),t[10]=n,t[11]=c);let l;t[12]!==r||t[13]!==i||t[14]!==a||t[15]!==o||t[16]!==s||t[17]!==c?(l={title:r,description:i,sessionLabel:a,detailsSummary:o,resetAction:s,persistentHint:c},t[12]=r,t[13]=i,t[14]=a,t[15]=o,t[16]=s,t[17]=c,t[18]=l):l=t[18];let u;return t[19]!==e||t[20]!==l?(u=(0,$.jsx)(ga,{...e,texts:l}),t[19]=e,t[20]=l,t[21]=u):u=t[21],u}var va=1440,ya=e=>{let t=(0,di.c)(8),{isMobile:n,isVSCode:r,directory:i}=e,a=ce(`(min-width: ${va}px)`),o;t[0]===i?o=t[1]:(o=i?F(i):``,t[0]=i,t[1]=o);let s=o,c;t[2]===s?c=t[3]:(c=e=>{let t=s?e.contextPanelByDirectory[s]:void 0;if(!t?.isOpen)return!1;let n=t.tabs.find(e=>e.id===t.activeTabId)??t.tabs[t.tabs.length-1]??null;return!!(n&&n.mode!==`chat`)},t[2]=s,t[3]=c);let l=P(c),u=P(ba),d=P(xa),f=!n&&!r&&!l&&!d,p=f&&a,m=u&&p,h;return t[4]!==p||t[5]!==f||t[6]!==m?(h={visible:m,fits:p,layoutAllows:f},t[4]=p,t[5]=f,t[6]=m,t[7]=h):h=t[7],h};function ba(e){return e.workStatusPanelEnabled}function xa(e){return e.isRightSidebarOpen}var Sa=async({directory:e,sessionID:t,signal:n})=>{let r=await j.getScopedSdkClient(e).session.list({directory:e,parentID:t,limit:200},{signal:n});if(!Array.isArray(r?.data))throw Error(`session.list children returned no data`);return r.data.flatMap(e=>{if(!e?.id)return[];let t=typeof e.title==`string`?e.title:void 0;return[{id:e.id,title:t}]})},Ca=(e,t,n={})=>{let r=n.listChildren??Sa;return z({queryKey:p.workStatusChildren.list(e,t,n.transport),enabled:!!(e&&t),queryFn:({signal:n})=>r({directory:e,sessionID:t,signal:n}),staleTime:5e3,refetchInterval:1e4})},wa=[],Ta=(...e)=>{let t=Mt(...e);return t?t.charAt(0).toUpperCase()+t.slice(1):``},Ea=(...e)=>{for(let t of e){if(!t||typeof t!=`object`)continue;let e=t.description;if(typeof e!=`string`)continue;let n=e.trim();if(n)return n}return``},Da=e=>e===`pending`||e===`running`,Oa=e=>{let t=[],n=new Set;for(let r of e.messageOrder){let i=e.partsByMessageID[r];if(i)for(let e of i){if(!e?.id||n.has(e.id))continue;if(e.type===`tool`&&It(e.tool)){n.add(e.id);let r=e.state;t.push({id:e.id,sessionID:Lt(e),label:Ta(r?.input,r?.metadata,e.metadata),description:Ea(r?.input,e.metadata,r?.metadata),running:Da(r?.status)});continue}if(e.type!==`subtask`)continue;let r=e,i=typeof r.taskSessionID==`string`?r.taskSessionID.trim():``,a=typeof r.agent==`string`?r.agent.trim():``,o=typeof r.description==`string`?r.description.trim():``;n.add(e.id),t.push({id:e.id,sessionID:i||void 0,label:a?a.charAt(0).toUpperCase()+a.slice(1):``,description:o,running:Da(r.status)})}}return t.length===0?wa:t},ka=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||r.id!==i.id||r.sessionID!==i.sessionID||r.label!==i.label||r.description!==i.description||r.running!==i.running)return!1}return!0},Aa=e=>e.childTitle||e.description||e.agent,ja=e=>({key:e.key,sessionID:e.sessionID,seed:e.key,label:Aa(e),phase:e.working?`working`:`done`}),Ma=(e,t,n)=>{let r=new Map(t.map(e=>[e.id,e])),i=new Set,a=[],o=new Map,s=e=>{let t=e.sessionID;if(!t){a.push(e);return}i.add(t);let n=o.get(t);if(n===void 0){o.set(t,a.length),a.push({...e,key:t,sessionID:t});return}let r=a[n];r&&(a[n]={...r,description:r.description||e.description,agent:r.agent||e.agent,childTitle:e.childTitle||r.childTitle,working:r.working||e.working})};for(let t of e){let e=t.sessionID?r.get(t.sessionID):void 0;s({key:t.id,sessionID:t.sessionID,description:t.description,agent:t.label,childTitle:e?.title?.trim()||``,working:t.running||!!e?.busy||!!(t.sessionID&&n?.has(t.sessionID))})}for(let e of t)i.has(e.id)||s({key:e.id,sessionID:e.id,description:``,agent:``,childTitle:e.title?.trim()||``,working:e.busy});let c=a.map(ja),l=c.filter(e=>e.phase===`working`),u=c.filter(e=>e.phase===`done`);return l.length===0?u:u.length===0?l:[...l,...u]},Na=new Set,Pa=e=>{if(!e)return``;let t=[];for(let n of Object.keys(e)){let r=e[n]?.type;(r===`busy`||r===`retry`)&&t.push(n)}return t.sort(),t.join(`
2
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n,n as r,o as i,r as a,s as o}from"./runtime-switch-3ad3yzM7.js";import{n as s}from"./runtime-fetch-QCWYlAx0.js";import{An as c,On as l,Rt as u,Wt as d,_n as f,h as p,ln as m,m as h,mt as g,on as _,ot as v,rn as y,un as b}from"./persistence-B4Ni3Gmv.js";import{a as x,i as S,o as C}from"./vendor-zustand-o69pgTEK.js";import{it as w,nt as T,o as E,rt as D,s as O}from"./vendor-base-ui-CdzJ6My_.js";import{Ct as k,Mt as A,Nt as j,dr as M,r as N}from"./platform-BQPsr8Zl.js";import{n as P,t as F,x as I}from"./useUIStore-CDMI_Yzu.js";import{n as L}from"./vendor-react-BP2cRVqX.js";import{o as ee}from"./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js";import{l as te,n as R,o as z,s as B,t as ne}from"./vendor-tanstack-react-query-CdqCAt40.js";import{i as re}from"./terminalApi-kRMttlcP.js";import{c as V,d as ie,f as ae,l as oe,m as H,n as U,o as W,p as G,s as K,t as q,u as J}from"./vendor-pierre-diffs-DPBtNDJ5.js";import{r as se}from"./vendor-sonner-ZS8XIOVl.js";import{l as ce,n as le,p as ue,r as de}from"./vendor-reactuses-core-BpfIZ1tg.js";import{d as fe,f as pe,i as me,l as he,p as ge,r as Y,t as X,u as _e}from"./button-BupmKVUs.js";import{i as ve,t as ye}from"./store-CG7Ytsg9.js";import{A as be,M as xe,O as Se,j as Ce,k as we,t as Te}from"./MobileDetailNavigation-CajSRGjE.js";import{An as Ee,Ar as De,Bt as Oe,Cn as ke,Cr as Ae,Er as je,Fr as Me,Gt as Ne,Ir as Pe,Mr as Fe,Na as Ie,Or as Le,Pr as Re,Rr as ze,Sa as Be,Sn as Ve,So as He,Vt as Ue,Wn as We,Xn as Ge,Xr as Ke,Zr as qe,ba as Je,bo as Ye,br as Xe,d as Ze,di as Qe,do as $e,fo as et,jr as tt,kr as nt,la as rt,ln as it,o as at,pi as ot,ti as st,uo as ct,vi as lt,vo as ut,vr as dt,wn as ft,wr as pt,xr as mt,yr as ht,zi as gt}from"./useMobileNavigationStore-BwyVZbQQ.js";import{i as _t,t as vt}from"./useAssistantUIStore-Dlvb7P0q.js";import{t as yt}from"./AgentAvatar-CJQwq8UM.js";import{n as bt,t as xt}from"./useThemeSystem-8jhE4Zyk.js";import{n as Z}from"./Icon-B4xKSuz3.js";import{a as St,i as Ct,n as wt,o as Tt,r as Et,t as Dt}from"./dialog-BYLD4Cm3.js";import{d as Ot}from"./gitApi-DIYbrJQo.js";import{$ as kt,Ct as At,E as jt,G as Mt,O as Nt,Rt as Pt,St as Ft,U as It,W as Lt,at as Rt,c as zt,ct as Bt,it as Vt,lt as Ht,mt as Ut,o as Wt,ot as Gt,rt as Kt,s as qt,st as Jt,tt as Yt,vt as Xt,xt as Zt,yt as Qt}from"./useAppFontEffects-BHvYYFZ6.js";import{A as $t,_ as en,a as tn,b as nn,d as rn,f as an,h as on,i as sn,l as cn,m as ln,n as un,p as dn,r as fn,s as pn,t as mn,x as hn}from"./projectMeta-BYYW3vXx.js";import{t as gn}from"./input-DgrLdIys.js";import{i as _n,n as vn,t as yn}from"./tooltip-Dbgnq-Mh.js";import{Dt as bn,Et as xn,J as Sn,Rt as Cn,Tt as wn,_ as Tn,at as En,ct as Dn,g as On,gt as kn,it as An,mt as jn,q as Mn,rt as Nn,st as Pn,tt as Fn,ut as In,wt as Ln}from"./speechSettingsQueries-CGhwyKcU.js";import{i as Rn,t as zn}from"./OverlayScrollbar-DIsrS93m.js";import{h as Bn,v as Vn}from"./image-loading-CsxDGgek.js";import{x as Hn}from"./dropdown-menu.styles-HOWSubFF.js";import{n as Un,t as Wn}from"./useRuntimeAPIs-Cx8S1HLz.js";import{T as Gn,a as Kn,g as qn,h as Jn,i as Yn,n as Xn,o as Zn,p as Qn,r as $n,t as er,x as tr,y as nr}from"./textarea-Boj9axpc.js";import{T as rr}from"./sessionChangeSummary-BR23tPPl.js";import{i as ir,t as ar}from"./vendor-framer-motion-D-oiwsxL.js";import{D as or,b as sr,h as cr,k as lr,r as ur,v as dr,w as fr,y as pr}from"./insertionBoundaries-BWLb49DE.js";import{i as mr,n as hr,t as gr}from"./appThemeRegistry-hWeRkCT-.js";import{o as _r}from"./MarkdownRenderer-B-m7eslz.js";import{_ as vr,c as yr,g as br,i as xr,l as Sr,n as Cr,o as wr,s as Tr,t as Er,v as Dr,y as Or}from"./vendor-dnd-kit-core-5pNnzVdw.js";import{a as kr,o as Ar,s as jr,t as Mr}from"./vendor-dnd-kit-sortable-Dm50I0m7.js";import{f as Nr,l as Pr}from"./markdown-worker-DFNZ3KJ_.js";import{n as Fr}from"./useEffectiveDirectory-DV_VjkHO.js";import{u as Ir}from"./FadeInOnReveal-BNVExwoL.js";import{t as Lr}from"./LoadingImage-CoT3GWhg.js";import{n as Rr}from"./useWorkerHighlightedLines-BycjZGWp.js";import{t as zr}from"./vendor-tanstack-react-virtual-B_EO--9t.js";import{t as Br}from"./vendor-motion-88WXBOBf.js";import{B as Vr,t as Hr,u as Ur,v as Wr,x as Gr}from"./MobileTabPageHeader-Y0qpxkN_.js";import{c as Kr,l as qr}from"./mcpQueries-8sLJIXmX.js";import{a as Jr,c as Yr,d as Xr,i as Zr,l as Qr,m as $r,n as ei,o as ti,r as ni,s as ri,t as ii}from"./scheduledTaskNavigation-C1PrFEhV.js";import{n as ai,r as oi}from"./sessionLookup-jd6sOrlf.js";import{n as si,r as ci,t as li}from"./collapsible-BAPWS6G-.js";import{t as ui}from"./vendor-cron-parser-BmO80h0C.js";var Q=e(w(),1),di=L(),$=D(),fi=e(T(),1);function pi(){return new Worker(q,{type:`module`})}var mi=[`typescript`,`javascript`,`tsx`,`jsx`,`json`,`markdown`],hi={unified:{poolSize:1,totalASTLRUCacheSize:24,lineDiffType:`none`},split:{poolSize:2,totalASTLRUCacheSize:56,lineDiffType:`word-alt`}},gi,_i,vi=e=>{let t=hi[e],n=new G({workerFactory:pi,poolSize:t.poolSize,totalASTLRUCacheSize:t.totalASTLRUCacheSize},{theme:{light:`pierre-light`,dark:`pierre-dark`},langs:mi,lineDiffType:t.lineDiffType,preferredHighlighter:`shiki-wasm`});return n.initialize(),n},yi=e=>{if(!(typeof window>`u`))return e===`split`?(_i??=vi(`split`),_i):(gi??=vi(`unified`),gi)},bi=e=>{let t=(0,di.c)(7),{children:n,renderTheme:r}=e,i=Si(`unified`),a=Si(`split`),o,s;t[0]!==r||t[1]!==a||t[2]!==i?(o=()=>{i&&i.setRenderOptions({theme:r,lineDiffType:hi.unified.lineDiffType}),a&&a.setRenderOptions({theme:r,lineDiffType:hi.split.lineDiffType})},s=[r,a,i],t[0]=r,t[1]=a,t[2]=i,t[3]=o,t[4]=s):(o=t[3],s=t[4]),(0,Q.useEffect)(o,s);let c;return t[5]===n?c=t[6]:(c=(0,$.jsx)($.Fragment,{children:n}),t[5]=n,t[6]=c),c},xi=e=>{let t=(0,di.c)(11),{children:n}=e,r=xt(),i,a;if(t[0]!==r?.availableThemes||t[1]!==r?.darkThemeId||t[2]!==r?.lightThemeId){let e=Vn(!1),n=Vn(!0),o=r?.lightThemeId??e.metadata.id,s=r?.darkThemeId??n.metadata.id;a=r?.availableThemes.find(e=>e.metadata.id===o)??e,i=r?.availableThemes.find(e=>e.metadata.id===s)??n,gr(a),gr(i),t[0]=r?.availableThemes,t[1]=r?.darkThemeId,t[2]=r?.lightThemeId,t[3]=i,t[4]=a}else i=t[3],a=t[4];let o;t[5]!==i.metadata.id||t[6]!==a.metadata.id?(o={light:a.metadata.id,dark:i.metadata.id},t[5]=i.metadata.id,t[6]=a.metadata.id,t[7]=o):o=t[7];let s=o,c;return t[8]!==n||t[9]!==s?(c=(0,$.jsx)(bi,{renderTheme:s,children:n}),t[8]=n,t[9]=s,t[10]=c):c=t[10],c},Si=e=>{let t=(0,di.c)(2),n=e===void 0?`unified`:e,r;return t[0]===n?r=t[1]:(r=yi(n),t[0]=n,t[1]=r),r},Ci=(e,t)=>{if(!e||typeof e!=`object`)return!1;let n=e;return(n.role===`user`||n.role===`assistant`)&&typeof n.sessionID==`string`&&n.sessionID.length>0&&typeof n.messageID==`string`&&n.messageID.length>0&&typeof n.snippet==`string`&&typeof n.createdAt==`number`&&Number.isFinite(n.createdAt)&&t.length>0},wi=async e=>{let t=e.query.trim();if(!t)return[];let n=await(e.fetch??s)(`/api/openchamber/content-search`,{query:{q:t,limit:String(e.limit??30)},signal:e.signal});if(!n.ok)throw Error(`session content search failed (${n.status})`);let r=await n.json();if(!Array.isArray(r?.hits))throw Error(`session content search returned no hits`);return r.hits.flatMap(e=>Ci(e,typeof e?.directory==`string`?e.directory:``)?[e]:[])},Ti=(e,t)=>{let i=e.trim(),a=t.scope,o=a?.transport??n(),s=a?.generation??r(),c=t.searchContent??wi;return z({queryKey:p.sessionContentSearch.query(i,``,s,o),enabled:i.length>0&&a!==null,queryFn:({signal:e})=>a?c({scope:a,query:i,limit:30,signal:e}):[],staleTime:0,refetchInterval:3e3,retry:1})},Ei=(e=s)=>z({queryKey:[n(),`contentSearchStatus`,r()],queryFn:async({signal:t})=>{let n=await e(`/api/openchamber/content-search`,{signal:t});if(n.status===404||n.status===501)return null;if(!n.ok)throw Error(`Content index unavailable (${n.status})`);let{index:r}=await n.json();if(!r||![`pending`,`indexing`,`ready`,`partial`,`error`].includes(r.phase)||![r.total,r.completed,r.failed,r.messages].every(e=>Number.isFinite(e)&&e>=0)||r.initializationRequired!==void 0&&typeof r.initializationRequired!=`boolean`||[r.indexStartedAt,r.indexCompletedAt,r.coveredSince,r.verifiedAt,r.updatedAt].some(e=>e!=null&&!Number.isFinite(e)))throw Error(`Invalid content index status`);return r},refetchInterval:3e3,staleTime:0}),Di=_r(()=>ee(()=>import(`./OnboardingScreen-BiLurnX5.js`).then(e=>({default:e.OnboardingScreen})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])));function Oi(){let e=(0,di.c)(11),[t,n]=Q.useState(!1),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=Ei(),e[0]=r):r=e[0];let i=!t,a;e[1]===i?a=e[2]:(a={...r,enabled:i,refetchOnWindowFocus:!1,refetchInterval:ki},e[1]=i,e[2]=a);let o=B(a),s=o.data,c=o.isFetchedAfterMount&&!o.isError&&(s===null||s&&(s.initializationRequired===void 0||s.initializationRequired===!1&&s.updatedAt!=null)),l,u;if(e[3]===c?(l=e[4],u=e[5]):(l=()=>{c&&n(!0)},u=[c],e[3]=c,e[4]=l,e[5]=u),Q.useEffect(l,u),t||!s?.initializationRequired)return null;let d;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(d=e=>{e||n(!0)},e[6]=d):d=e[6];let f;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(f=()=>n(!0),e[7]=f):f=e[7];let p;return e[8]!==s||e[9]!==o.isError?(p=(0,$.jsx)(Q.Suspense,{fallback:null,children:(0,$.jsx)(Dt,{open:!0,onOpenChange:d,children:(0,$.jsx)(wt,{showCloseButton:!1,className:`h-full max-w-none rounded-none border-0 p-0`,overlayClassName:`z-[9997]`,containerClassName:`z-[9997] items-stretch p-0`,children:(0,$.jsx)(Di,{mode:`content-index`,indexStatus:s,indexStatusError:o.isError,onContinueInBackground:f})})})}),e[8]=s,e[9]=o.isError,e[10]=p):p=e[10],p}function ki(e){let t=e.state.data;return t===null||t&&t.initializationRequired===void 0||t?.initializationRequired===!1&&t.updatedAt!=null?!1:3e3}function Ai(){let e=(0,di.c)(4);if(Wn())return null;let t,n;if(e[0]===Symbol.for(`react.memo_cache_sentinel`)){let r=Ei().queryKey;t=Oi,n=JSON.stringify(r),e[0]=t,e[1]=n}else t=e[0],n=e[1];let r;return e[2]===n?r=e[3]:(r=(0,$.jsx)(t,{},n),e[2]=n,e[3]=r),r}var ji=Q.forwardRef((e,t)=>{let n=(0,di.c)(11),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=Y(`peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-none transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[checked]:bg-primary data-[unchecked]:bg-[var(--interactive-border)]`,r),n[3]=r,n[4]=a);let o;n[5]===Symbol.for(`react.memo_cache_sentinel`)?(o={width:`36px`,height:`20px`,minWidth:`36px`,minHeight:`20px`},n[5]=o):o=n[5];let s;n[6]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,$.jsx)(E,{className:Y(`pointer-events-none block rounded-full bg-background shadow-none ring-0 transition-transform data-[checked]:translate-x-4 data-[unchecked]:translate-x-0`),style:{width:`16px`,height:`16px`,minWidth:`16px`,minHeight:`16px`}}),n[6]=s):s=n[6];let c;return n[7]!==i||n[8]!==t||n[9]!==a?(c=(0,$.jsx)(O,{className:a,style:o,...i,ref:t,children:s}),n[7]=i,n[8]=t,n[9]=a,n[10]=c):c=n[10],c});ji.displayName=`Switch`;var Mi={},Ni=[],Pi=(e,t)=>{if(!e)return t(`mcpDropdown.status.unknown`);switch(e.status){case`connected`:return t(`mcpDropdown.status.connected`);case`failed`:return t(`mcpDropdown.status.failed`,{error:e.error||t(`mcpDropdown.status.unknownError`)});case`needs_auth`:return t(`mcpDropdown.status.needsAuth`);case`needs_client_registration`:return t(`mcpDropdown.status.needsRegistration`,{error:e.error||``});default:return e.status}},Fi=e=>{switch(e?.status){case`connected`:return`success`;case`failed`:return`error`;case`needs_auth`:case`needs_client_registration`:return`warning`;default:return`default`}},Ii=({active:e,className:t,headerAction:n,listClassName:r,hideHeader:i=!1,mobileListDensity:a=!1})=>{let{t:o}=pe(),s=k(e=>e.currentDirectory)??null,c=Vr(e=>e.connect),l=Vr(e=>e.disconnect),{data:u,refetch:d,isError:f,error:p}=qr(s,{enabled:e}),{data:m}=Kr(s,{enabled:e}),h=u??Mi,g=m??Ni,[_,v]=Q.useState(!1),[y,b]=Q.useState(null),x=Q.useMemo(()=>{let e=new Set(Object.keys(h));for(let t of g)t?.name&&e.add(t.name);return Array.from(e).sort((e,t)=>e.localeCompare(t))},[g,h]),S=Q.useCallback(e=>{if(e?.preventDefault(),_)return;v(!0);let t=new Promise(e=>setTimeout(e,500));Promise.all([d(),t]).finally(()=>{v(!1)})},[_,d]);return(0,$.jsxs)(`div`,{className:Y(`w-full`,t),children:[i?null:(0,$.jsx)(`div`,{className:`border-b border-[var(--interactive-border)]`,children:(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3 px-4 py-2.5`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex items-baseline gap-2`,children:[(0,$.jsx)(`div`,{className:`typography-ui-header font-semibold text-foreground`,children:o(`mcpDropdown.title`)}),s&&(0,$.jsx)(`div`,{className:`truncate typography-micro text-muted-foreground`,children:s.split(`/`).pop()||s})]}),(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[n,(0,$.jsx)(`button`,{type:`button`,className:`inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:text-foreground hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary`,disabled:_,onClick:S,"aria-label":o(`mcpDropdown.actions.refreshAria`),children:(0,$.jsx)(Z,{name:`refresh`,className:Y(`h-4 w-4`,_&&`animate-spin`)})})]})]})}),(0,$.jsx)(`div`,{className:Y(`max-h-64 overflow-y-auto`,a?`space-y-1 py-3`:`px-3 py-2.5`,r),children:(0,$.jsxs)(`div`,{className:Y(!a&&x.length>0&&`rounded-xl bg-[var(--surface-muted)] p-1.5`),children:[x.map(e=>{let t=h[e]??(f&&!u&&g.some(t=>t.name===e)?{status:`failed`,error:p.message}:void 0),n=Fi(t),r=t?.status===`connected`,i=y===e,d=Pi(t,o);return(0,$.jsxs)(`div`,{className:Y(`flex items-center justify-between rounded-lg hover:bg-interactive-hover/50`,a?`gap-3 px-4 py-3`:`gap-2 px-2.5 py-2`),children:[(0,$.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,$.jsxs)(yn,{children:[(0,$.jsx)(_n,{asChild:!0,children:(0,$.jsx)(`span`,{className:Y(`rounded-full flex-shrink-0`,a?`h-2.5 w-2.5`:`h-2 w-2`,n===`success`&&`bg-status-success`,n===`error`&&`bg-status-error`,n===`warning`&&`bg-status-warning`,n==="default"&&`bg-muted-foreground/40`),"aria-label":d})}),(0,$.jsx)(vn,{side:`left`,children:(0,$.jsx)(`p`,{children:d})})]}),(0,$.jsx)(`span`,{className:Y(`truncate`,a?`text-[17px] leading-6 font-medium`:`typography-ui-label`),children:e})]})}),(0,$.jsx)(ji,{checked:r,disabled:i,className:`data-[checked]:bg-status-info`,onCheckedChange:async t=>{b(e);try{t?await c(e,s):await l(e,s)}finally{b(null)}}})]},e)}),x.length===0&&(0,$.jsx)(`div`,{className:`px-4 py-5 typography-ui-label text-muted-foreground text-center`,children:o(`mcpDropdown.empty.configureInConfig`)})]})})]})},Li=e=>!(e.dismissed===`true`||e.sessionShown===`true`||e.hasActiveToast),Ri=e=>!(!e.version||e.seenVersions.has(e.version)||e.dismissedVersion!==null&&e.dismissedVersion===e.version),zi=e=>{if(typeof e!=`object`||!e)return``;let t=e.version;return typeof t==`string`?t.trim():``},Bi=e=>{if(!e||e.available!==!0||e.canManage===!1)return``;let t=typeof e.latestVersion==`string`?e.latestVersion:typeof e.targetVersion==`string`?e.targetVersion:``;return t?t.trim():``},Vi=e=>{let t=e.trim().replace(/^v/i,``);return t?{target:t}:null},Hi=5e3,Ui={setTimeout:(e,t)=>globalThis.setTimeout(e,t),clearTimeout:e=>globalThis.clearTimeout(e)};function Wi(e,t,n=Ui){if(!e)return()=>void 0;let r=n.setTimeout(()=>{t().catch(()=>void 0)},Hi);return()=>n.clearTimeout(r)}var Gi=(e,t)=>({queryKey:[e,`opencode-update`,t],queryFn:async({signal:i})=>{let a=()=>e===n()&&t===r();if(!a())throw Error(`Stale OpenCode update check`);let o=await s(`/api/opencode/upgrade-status`,{headers:{Accept:`application/json`},signal:i});if(!o.ok)throw Error(`OpenCode update check failed`);let c=await o.json();if(i.aborted||!a())throw Error(`Stale OpenCode update check`);if(!c||typeof c!=`object`||Array.isArray(c))throw Error(`Invalid OpenCode update status`);return c},staleTime:3e4,refetchInterval:3e5,refetchOnWindowFocus:!0,refetchOnReconnect:!0,retry:1}),Ki=`opencode-update-available`,qi=`opencode-upgrade-progress`,Ji=`opencode-update-toast-dismissed-version`,Yi=()=>{let{t:e}=pe(),i=P(e=>e.showOpenCodeUpdateNotifications),a=Q.useRef(new Set),o=Q.useRef(!1),c=Q.useSyncExternalStore(t,n,n),l=Q.useSyncExternalStore(t,r,r),u=te(),[d,f]=Q.useState(!1);Q.useEffect(()=>Wi(i,async()=>{f(!0)}),[i]);let p=B({...Gi(c,l),enabled:i&&d});de(`openchamber:opencode-update-available`,e=>{i&&zi(e.detail)&&p.refetch()});let m=`${Ji}:${c}`;Q.useEffect(()=>{a.current.clear(),Pe.dismiss(Ki),Pe.dismiss(qi)},[c,l]),Q.useEffect(()=>{i||Pe.dismiss(Ki)},[i]);let h=le(async(t,i=!1)=>{if(o.current)return;o.current=!0;let a=()=>c===n()&&l===r();Pe.dismiss(Ki),Pe.message(e(`opencodeUpdate.toast.upgrading.title`),{id:qi,description:e(`opencodeUpdate.toast.upgrading.description`),duration:1/0,icon:(0,$.jsx)(Z,{name:`refresh`,className:`h-4 w-4 animate-spin text-muted-foreground`})});try{let n=Vi(t);if(!n)throw Error(e(`opencodeUpdate.toast.failed.description`));let r=await s(`/api/opencode/upgrade`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({...n,confirmActiveTasks:i})}),o=await r.json().catch(()=>null);if(!a())return;if(o?.errorCode===`UPGRADE_ACTIVE_TASKS`){Pe.error(e(`opencodeUpdate.toast.failed.title`),{id:qi,description:o.error,duration:1/0,action:{label:e(`opencodeUpdate.toast.actions.update`),onClick:()=>{a()&&h(t,!0)}}});return}if(!r.ok||o?.success!==!0)throw Error(o?.error||r.statusText||e(`opencodeUpdate.toast.failed.description`));Pe.success(e(`opencodeUpdate.toast.updated.title`),{id:qi,description:o?.version?e(`opencodeUpdate.toast.updated.descriptionWithVersion`,{version:o.version}):e(`opencodeUpdate.toast.updated.description`),duration:1/0,icon:(0,$.jsx)(Z,{name:`check`,className:`h-4 w-4 text-[var(--status-success)]`})}),u.invalidateQueries({queryKey:[c,`opencode-update`,l]}),u.invalidateQueries({queryKey:[c,`about`,l]})}catch(n){if(!a())return;Pe.error(e(`opencodeUpdate.toast.failed.title`),{id:qi,description:n instanceof Error?n.message:e(`opencodeUpdate.toast.failed.description`),duration:1/0,action:{label:e(`opencodeUpdate.toast.actions.update`),onClick:()=>{a()&&h(t)}}})}finally{o.current=!1}});return Q.useEffect(()=>{let t=t=>{if(!P.getState().showOpenCodeUpdateNotifications){Pe.dismiss(Ki);return}Ri({version:t,dismissedVersion:I().getItem(m),seenVersions:a.current})&&(a.current.add(t),Pe.info(e(`opencodeUpdate.toast.available.title`),{id:Ki,description:e(`opencodeUpdate.toast.available.description`,{version:t}),duration:1/0,action:{label:e(`opencodeUpdate.toast.actions.update`),onClick:()=>{c===n()&&l===r()&&h(t)}},cancel:{label:e(`opencodeUpdate.toast.actions.dismiss`),onClick:()=>{I().setItem(m,t),Pe.dismiss(Ki)}}}))},i=Bi(p.data);i?t(i):(p.data?.available===!1||p.data?.canManage===!1)&&Pe.dismiss(Ki)},[i,e,p.data,m,c,l,h]),null},Xi=()=>{let e=(0,di.c)(3),[t,n]=Q.useState(Zi),{isUpdating:r}=t,i,a;if(e[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=()=>et(n),a=[],e[0]=i,e[1]=a):(i=e[0],a=e[1]),Q.useEffect(i,a),!r)return null;let o;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,$.jsx)(`div`,{className:`fixed inset-0 z-[9999] flex items-center justify-center bg-background/90`,children:(0,$.jsx)(Cn,{width:80,height:80,isAnimated:!0})}),e[2]=o):o=e[2],o};function Zi(){return $e()}var Qi=5e3,$i=(e,t)=>{if(!e)return 1;let n=1;for(let r=0;r<e.length;r+=1)if(e.charCodeAt(r)===10&&(n+=1,n>t))return n;return n},ea=(e,t)=>ye(ve.getState().dictionary,e,t),ta=e=>{let t=(e instanceof Error?e.message:String(e??``)).toLowerCase();return t.includes(`file not found`)||t.includes(`not found`)||t.includes(`enoent`)||t.includes(`no such file`)||t.includes(`does not exist`)?`missing`:`unreadable`},na=async(e,t)=>{if(e.readFile){let n=await e.readFile(t,{optional:!0});if(typeof n.exists!=`boolean`)throw Error(`Optional file read requires an existence response header`);return{content:n.content??``,exists:n.exists}}let n=new URLSearchParams({path:t,optional:`true`}),r=await s(`/api/fs/read?${n.toString()}`,{cache:`no-store`});if(!r.ok){let e=await r.json().catch(()=>({error:r.statusText}));throw Error(e.error||`Failed to read file`)}let i=r.headers.get(`x-openchamber-file-exists`);if(i!==`true`&&i!==`false`)throw Error(`Optional file read requires an existence response header`);return{content:await r.text(),exists:i===`true`}},ra=async(e,t)=>{try{let{content:n,exists:r}=await na(e,t);return r?$i(n,5e3)>5e3?{ok:!1,reason:`too-large`}:{ok:!0}:{ok:!1,reason:`missing`}}catch(e){return{ok:!1,reason:ta(e)}}},ia=e=>e===`too-large`?ea(`contextFileOpen.failure.tooLarge`,{count:Qi.toLocaleString(ge())}):ea(e===`missing`?`contextFileOpen.failure.missing`:`contextFileOpen.failure.unreadable`),aa=(e,t)=>!e||t.length===0?``:JSON.stringify([e,t]),oa=(e,t,n,r)=>!n||r!==n||e.length===0?[]:We(e,t,e=>e.name,{limit:10,threshold:.4}),sa=(e,t={})=>{let r=e.trim(),i=t.transport??n(),a=t.searchSessions??(e=>j.searchSessionsByTitle(e));return z({queryKey:p.sessionTitleSearch.query(r,i),enabled:r.length>0,queryFn:({signal:e})=>a({search:r,limit:30,signal:e}),staleTime:5e3,retry:1})},ca=e=>{let t=(0,di.c)(13),{title:n,description:r,trailing:i}=e,a=r?`min-w-0 max-w-[58%] shrink-0 truncate typography-meta font-medium leading-4 text-foreground`:`min-w-0 flex-1 truncate typography-meta font-medium leading-4 text-foreground`,o;t[0]!==a||t[1]!==n?(o=(0,$.jsx)(`span`,{className:a,children:n}),t[0]=a,t[1]=n,t[2]=o):o=t[2];let s;t[3]===r?s=t[4]:(s=r?(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate typography-micro leading-4 text-muted-foreground/65`,children:r}):null,t[3]=r,t[4]=s);let c;t[5]!==o||t[6]!==s?(c=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2.5`,children:[o,s]}),t[5]=o,t[6]=s,t[7]=c):c=t[7];let l;t[8]===i?l=t[9]:(l=i?(0,$.jsx)(`div`,{className:`ml-auto flex shrink-0 items-center pl-2 text-muted-foreground/50`,children:i}):null,t[8]=i,t[9]=l);let u;return t[10]!==c||t[11]!==l?(u=(0,$.jsxs)($.Fragment,{children:[c,l]}),t[10]=c,t[11]=l,t[12]=u):u=t[12],u},la=`min-h-9 gap-2 rounded-lg px-3 py-2 typography-meta`,ua=`py-0 [&_[cmdk-group-heading]]:px-2.5 [&_[cmdk-group-heading]]:pb-2 [&_[cmdk-group-heading]]:pt-3 [&_[cmdk-group-heading]]:font-normal [&_[cmdk-group-heading]]:text-muted-foreground`,da=`rounded-[3px] bg-[color-mix(in_srgb,var(--primary-base)_28%,transparent)] px-0.5 font-[inherit] text-foreground`;function fa(e,t){let n=t.trim().toLowerCase().split(/\s+/).filter(Boolean);if(!n.length||!e)return e;let r=n.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)),i=RegExp(`(${r.join(`|`)})`,`gi`);return e.split(i).map((e,t)=>n.includes(e.toLowerCase())?(0,$.jsx)(`mark`,{className:da,children:e},t):(0,$.jsx)(`span`,{children:e},t))}var pa=e=>{if(!e)return``;let t=e.replace(/\\/g,`/`),n=t.startsWith(`//`),r=t.replace(/\/+/g,`/`);n&&!r.startsWith(`//`)&&(r=`/${r}`);let i=r===`/`,a=/^[A-Za-z]:\/$/.test(r);return!i&&!a&&(r=r.replace(/\/+$/,``)),r},ma=[],ha=Q.memo(function({presentation:e=`dialog`,onBack:t}){let{t:i}=pe(),a=rr(),o=P(e=>e.isCommandPaletteOpen),[s,c]=Q.useState(o),l=P(e=>e.setCommandPaletteOpen),u=P(e=>e.setActiveMainTab),f=P(e=>e.setSettingsDialogOpen),p=P(e=>e.setSettingsPage),h=P(e=>e.setSessionSwitcherOpen),g=P(e=>e.toggleSidebar),v=P(e=>e.toggleRightSidebar),x=P(e=>e.toggleBottomTerminal),S=P(e=>e.openContextOverview),C=P(e=>e.openContextFile),w=P(e=>e.shortcutOverrides),T=Ze(e=>e.openNewSessionDraft),E=Ze(e=>e.setCurrentSession),D=o||s,O=Fe(e=>D?e.activeSessions:ma),j=Fe(e=>D?e.status:`idle`),M=k(e=>e.currentDirectory),N=ct(e=>e.getActiveProject()),F=ct(e=>e.projects),I=Fr(),L=A(e=>e.searchFiles),{files:ee}=Un(),{isMobile:te}=Rn(),R=e===`page`||te,z=he(),ne=Q.useRef(null),re=Q.useRef(null),V=le(()=>{if(!R||!o||!ne.current)return;let e=window.visualViewport;ne.current.style.setProperty(`--search-viewport-height`,`${e?.height??window.innerHeight}px`),ne.current.style.setProperty(`--search-viewport-top`,`${e?.offsetTop??0}px`)});de(`resize`,V,()=>R&&o?window.visualViewport??window:null),de(`scroll`,V,()=>R&&o?window.visualViewport:null),Q.useEffect(()=>{V()},[R,o]),Q.useEffect(()=>{e===`page`&&o&&re.current?.focus({preventScroll:!0})},[e,o]);let ie=Q.useMemo(()=>I?pa(I):null,[I]),[ae,oe]=Q.useState(``),[H,U]=Q.useState({query:``,groups:[]}),W=lr(ae,200).trim(),G=ae.trim();Q.useEffect(()=>{o&&(oe(``),U({query:``,groups:[]}),c(!0))},[o]);let K=le(()=>l(!1)),q=le(e=>()=>{K(),e()}),J=Q.useMemo(()=>{let e=[{id:`new-session`,title:i(`commandPalette.item.newSession`),shortcutId:`new_chat`,searchText:i(`commandPalette.item.newSession`),onSelect:q(()=>{u(`chat`),h(!1),T()})},{id:`new-worktree`,title:i(`commandPalette.item.newWorktreeDraft`),shortcutId:`new_chat_worktree`,searchText:i(`commandPalette.item.newWorktreeDraft`),onSelect:q(()=>{Ht()})},{id:`add-project`,title:i(`commandPalette.item.addProject`),searchText:i(`commandPalette.item.addProject`),onSelect:q(()=>{lt.requestDirectoryDialog()})},{id:`toggle-sidebar`,title:i(R?`commandPalette.item.showSessionSwitcher`:`commandPalette.item.toggleSidebar`),shortcutId:`toggle_sidebar`,searchText:i(R?`commandPalette.item.showSessionSwitcher`:`commandPalette.item.toggleSidebar`),onSelect:q(()=>{if(R){let{isSessionSwitcherOpen:e}=P.getState();h(!e)}else g()})},{id:`toggle-right-sidebar`,title:i(`commandPalette.item.toggleRightSidebar`),shortcutId:`toggle_right_sidebar`,searchText:i(`commandPalette.item.toggleRightSidebar`),onSelect:q(()=>v())},{id:`toggle-terminal`,title:i(`commandPalette.item.toggleTerminal`),shortcutId:`toggle_terminal`,searchText:i(`commandPalette.item.toggleTerminal`),onSelect:q(()=>x())},{id:`new-terminal-tab`,title:i(`commandPalette.item.newTerminalTab`),shortcutId:`open_new_terminal`,searchText:i(`commandPalette.item.newTerminalTab`),onSelect:q(()=>{I&&zt(I)})},{id:`context-usage`,title:i(`commandPalette.item.showContextUsage`),searchText:i(`commandPalette.item.showContextUsage`),onSelect:q(()=>{M&&S(M)})},{id:`open-settings`,title:i(`commandPalette.item.openSettings`),shortcutId:`open_settings`,searchText:i(`commandPalette.item.openSettings`),onSelect:q(()=>f(!0))}];return d()&&e.splice(1,0,{id:`new-mini-chat`,title:i(`commandPalette.item.newMiniChat`),shortcutId:`new_mini_chat`,searchText:i(`commandPalette.item.newMiniChat`),onSelect:q(()=>{y(`desktop_open_draft_mini_chat_window`,{directory:pa(M||N?.path||``),projectId:N?.id??null}).catch(e=>{console.warn(`[command-palette] failed to open draft mini chat window`,e)})})}),e},[i,q,R,u,h,T,g,v,x,M,I,S,f,N?.id,N?.path]),se=Q.useMemo(()=>{let e=_();return{isVSCode:m(),isWeb:!e&&b(),isDesktop:e,isMobile:R}},[R]),ce=Q.useMemo(()=>Xr.filter(e=>e.slug!==`home`).filter(e=>!e.isAvailable||e.isAvailable(se)).map(e=>{let t=(e.keywords??[]).join(` `);return{id:`settings:${e.slug}`,title:e.title,searchText:`${e.title} ${e.group} ${t}`,onSelect:q(()=>{p(e.slug),f(!0)})}}),[se,q,p,f]),ue=Q.useMemo(()=>{let e=e=>(typeof e.time?.updated==`number`?e.time.updated:0)||(typeof e.time?.created==`number`?e.time.created:0);return[...O].sort((t,n)=>e(n)-e(t))},[O]),fe=Ze(e=>e.worktreeMetadata),me=Ze(e=>e.availableWorktreesByProject),[ge,Y]=Q.useState([]),[X,ve]=Q.useState(``),[ye,be]=Q.useState(``),xe=aa(ie,W);Q.useEffect(()=>{if(!o){Y([]),ve(``),be(``);return}if(!xe){Y([]),ve(``),be(``);return}if(!ie){Y([]),ve(``),be(``);return}let e=!1;return be(``),L(ie,W,10,{type:`file`}).then(t=>{e||(Y(t.map(e=>({path:pa(e.path),name:e.name,relativePath:e.relativePath}))),ve(xe),be(``))}).catch(()=>{e||(Y([]),ve(``),be(xe))}),()=>{e=!0}},[o,ie,W,xe,L]);let Se=G.length>0,Ce=Q.useMemo(()=>Se?We(J,G,e=>e.searchText,{limit:7,noFuzzy:!0}):J.map(e=>({item:e,score:0})),[J,G,Se]),we=Q.useMemo(()=>Se?We(ce,G,e=>e.searchText,{limit:7,noFuzzy:!0}):[],[ce,G,Se]),Ee=B({...sa(W),enabled:(o||s)&&(W.length>0||e===`page`)}),De={transport:n(),generation:r(),directory:``},Oe=JSON.stringify([De.transport,De.generation,ie,G,o]),[ke,Ae]=Q.useState(null),je=ke?.key===Oe?ke:null;ke&&!je&&Ae(null);let Me=B({...Ei(),enabled:o||s}),Ne=B({...Ti(W,{scope:De}),enabled:(o||s)&&W.length>0&&De!==null}),Ie=Q.useMemo(()=>je?.hits??Ne.data??[],[je,Ne.data]),Le=Se&&G===W&&Ne.isError,Re=Se&&G===W&&Ee.isSuccess,ze=(Se||e===`page`)&&G===W&&Ee.isError,Be=Q.useMemo(()=>ze?We(ue,G,e=>e.title||``,{limit:30,threshold:.2}).map(({item:e})=>e):[],[ze,ue,G]),Ve=Q.useMemo(()=>je?je.sessions:Se?Re?Ee.data??[]:ze?Be:[]:e===`page`&&!W&&Ee.isSuccess?Ee.data:ue.slice(0,e===`page`?30:9),[Se,ue,Re,ze,Be,Ee.data,Ee.isSuccess,e,W,je]),He=Q.useMemo(()=>!o&&!s||G!==W||ye===xe?[]:oa(ge,W,xe,X),[o,s,ge,X,xe,W,G,ye]),Ue=(o||s)&&xe.length>0&&X!==xe&&ye!==xe,Ge=Q.useMemo(()=>{if(!Se)return[];let e=F.map(e=>({...e,displayName:e.label||e.path.split(`/`).pop()||e.path,searchText:`${e.label||``} ${e.path}`}));return We(e,G,e=>e.searchText,{limit:7,threshold:.4})},[F,G,Se]),Ke=JSON.stringify([ie,G]),qe=H.query===Ke?H.groups:[],Je=(e,t)=>Se&&!qe.includes(e)?t.slice(0,5):t,Ye=Je(`commands`,Ce.map(e=>e.item)),Xe=Je(`settings`,we.map(e=>e.item)),Qe=Q.useMemo(()=>{let e=new Map;for(let t of Ie){let n=e.get(t.sessionID)??[];n.push(t),e.set(t.sessionID,n)}let t=[],n=new Map(O.map(e=>[e.id,e]));for(let n of Ve){let r=e.get(n.id);if(r){for(let e of r)t.push({session:n,hit:e});e.delete(n.id)}else t.push({session:n})}for(let r of e.values())for(let e of r)t.push({session:n.get(e.sessionID)??{id:e.sessionID,title:e.title??``,directory:e.directory,location:{directory:e.directory}},hit:e});return t},[Ve,Ie,O]),$e=Je(`sessions`,Qe),et=Se?Je(`files`,He.map(e=>e.item)):[],tt=Se?Je(`projects`,Ge.map(e=>e.item)):[],rt=(e,t,n)=>t>n?(0,$.jsx)(Jt,{value:`more:${e}`,onSelect:()=>U({query:Ke,groups:[...qe,e]}),className:`${la} text-muted-foreground`,children:i(`commandPalette.group.showMore`,{count:t-n})}):null,it=Q.useMemo(()=>{if(!Se)return[`sessions`,`commands`];let e=e=>e.length?e[0].score:1/0,t=[{key:`commands`,score:e(Ce)},{key:`settings`,score:e(we)},{key:`files`,score:e(He)},{key:`projects`,score:e(Ge)}];return t.sort((e,t)=>e.score-t.score),[`sessions`,...t.map(e=>e.key)]},[Se,Ce,we,He,Ge]),ot=le((e,t)=>{K(),u(`chat`),h(!1);let n=nt(e)||``;a?at.getState().openSession({sessionId:e.id,directory:n}):E(e.id,n),t&&Nt(t)}),st=le(e=>{let t=ue.find(t=>t.id===e.sessionID)??Ve.find(t=>t.id===e.sessionID)??{id:e.sessionID,title:e.title??``,directory:e.directory,location:{directory:e.directory}};ot(t,e.messageID)}),ut=le(async e=>{if(!ie)return;let t=await ra(ee,e);if(!t.ok){Pe.error(ia(t.reason));return}a?a.openFile({path:e}):C(ie,e),K()}),dt=le((e,t)=>{K();let n={selectedProjectId:e,directoryOverride:t};a?at.getState().openDraft(n):T(n)}),ft=e=>jn(kn(e,w)),pt=e=>!xt&&(e.key===`Enter`||e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),e.stopPropagation(),!0),mt=le(e=>{if(pt(e)||(!je&&!e.nativeEvent.isComposing&&[`ArrowDown`,`ArrowUp`,`Enter`].includes(e.key)&&Ae({key:Oe,hits:Ie,sessions:Ve}),R||e.nativeEvent.isComposing||e.altKey||e.shiftKey)||(z?!e.metaKey||e.ctrlKey:!e.ctrlKey||e.metaKey)||!/^[1-9]$/.test(e.key)||(e.preventDefault(),e.stopPropagation(),e.repeat||!xt))return;let t=$e[Number(e.key)-1];t?.hit?st(t.hit):t&&ot(t.session)}),ht=e=>{let t=pa(fe.get(e.id)?.projectDirectory||nt(e)||``),n=gt(F,me,t);return n?.label||(n?.path||t).split(`/`).pop()||``},_t=Se&&G===W&&!!xe&&ye===xe,vt=Se&&(G!==W||!!ie&&Ue||Ee.isFetching&&!Ee.isSuccess||De!==null&&Ne.isFetching&&!Ne.isSuccess),[yt,bt]=Q.useState(W);!vt&&yt!==W&&bt(W);let xt=!Se||yt===W&&!vt,Z=(0,$.jsx)(Gt,{ref:re,variant:R?`mobileGlass`:`default`,className:`font-normal`,"aria-label":i(`commandPalette.title`),inputMode:`search`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,value:ae,onValueChange:e=>{Ae(null),oe(e),U({query:``,groups:[]})},placeholder:i(`commandPalette.input.placeholder`)}),Ct=(0,$.jsxs)(Kt,{shouldFilter:!1,onKeyDownCapture:mt,onPointerDownCapture:e=>{let t=e.target.closest(`[cmdk-item]`);R&&t&&qn({currentTarget:t})},onPointerCancelCapture:e=>{let t=e.target.closest(`[cmdk-item]`);R&&t&&Jn({currentTarget:t,detail:1})},onClickCapture:e=>{let t=e.target.closest(`[cmdk-item]`);R&&t&&e.detail>0&&!Jn({currentTarget:t,detail:e.detail})&&(e.preventDefault(),e.stopPropagation())},className:`max-h-full min-h-0 rounded-[inherit] bg-transparent [&_[cmdk-group]]:px-0 [&_[cmdk-item][data-selected=true]]:!bg-[color-mix(in_srgb,var(--interactive-selection)_40%,transparent)] [&_[cmdk-item]:hover]:!bg-[color-mix(in_srgb,var(--interactive-selection)_40%,transparent)]`,children:[R?(0,$.jsx)(Te,{title:Z,backAriaLabel:i(`header.actions.backAria`),onBack:t??K}):Z,(0,$.jsxs)(Bt,{"aria-label":i(`commandPalette.title`),className:`overscroll-contain p-1.5`,children:[(0,$.jsx)(`div`,{className:`px-3 py-2 typography-meta text-muted-foreground`,"aria-live":`polite`,children:Me.isError||Me.data?.phase===`error`||Me.data?.phase===`partial`?i(`commandPalette.index.partial`):Me.data?.phase===`ready`?i(`commandPalette.index.ready`,{count:Me.data.messages}):i(`commandPalette.index.progress`,{completed:Me.data?.completed??0,total:Me.data?.total??0})}),xt&&!_t&&!ze&&!Le&&j!==`loading`&&j!==`error`?(0,$.jsx)(Vt,{className:`py-10 text-center typography-meta text-muted-foreground`,children:i(`commandPalette.empty.noResults`)}):null,xt?it.map(e=>e===`commands`&&Ye.length>0?(0,$.jsxs)(Rt,{heading:i(`settings.page.commands.title`),className:ua,children:[Ye.map(e=>(0,$.jsx)(Jt,{value:e.id,onSelect:e.onSelect,className:la,children:(0,$.jsx)(ca,{title:fa(e.title,G),trailing:!R&&e.shortcutId?(0,$.jsx)(Xt,{className:`h-3.5 min-w-0 shrink-0 rounded-full border-0 bg-[color-mix(in_srgb,var(--surface-foreground)_6%,transparent)] px-1.5 font-sans text-[10px] font-medium tracking-tight text-muted-foreground/65 shadow-none`,children:ft(e.shortcutId)}):void 0})},e.id)),rt(`commands`,Ce.length,Ye.length)]},`commands`):e===`settings`&&Xe.length>0?(0,$.jsxs)(Rt,{heading:i(`settings.view.home.title`),className:ua,children:[Xe.map(e=>(0,$.jsx)(Jt,{value:e.id,onSelect:e.onSelect,className:la,children:(0,$.jsx)(ca,{title:fa(e.title,G)})},e.id)),rt(`settings`,we.length,Xe.length)]},`settings`):e===`sessions`&&$e.length>0?(0,$.jsxs)(Rt,{heading:i(`layout.mainTab.chat`),className:ua,children:[$e.map(({session:e,hit:t},n)=>{let r=t?.title||e.title||i(`commandPalette.session.untitled`),a=ht(e);return(0,$.jsxs)(Jt,{value:t?`message:${e.id}:${t.messageID}`:`session:${e.id}`,onSelect:()=>t?st(t):ot(e),className:`flex-col items-stretch gap-1 rounded-lg px-3 py-2`,"aria-keyshortcuts":!R&&n<9?`${z?`Meta`:`Control`}+${n+1}`:void 0,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate typography-ui-label text-foreground`,title:r,children:fa(r,G)}),(0,$.jsx)(`span`,{className:`max-w-[28%] shrink-0 truncate typography-meta text-muted-foreground`,title:a,children:a}),!R&&n<9?(0,$.jsxs)(Xt,{className:`h-5 min-w-8 shrink-0 rounded-full border-0 bg-interactive-selection px-2 text-muted-foreground shadow-none`,children:[z?`⌘`:`Ctrl+`,n+1]}):null]}),t?(0,$.jsxs)(`span`,{className:`line-clamp-3 whitespace-pre-wrap break-words typography-ui-label text-muted-foreground`,children:[(0,$.jsxs)(`span`,{className:`font-medium`,children:[i(t.role===`user`?`commandPalette.message.user`:`commandPalette.message.assistant`),`: `]}),fa(t.snippet,G)]}):null]},t?`message:${e.id}:${t.messageID}`:`session:${e.id}`)}),rt(`sessions`,Qe.length,$e.length)]},`sessions`):e===`files`&&et.length>0?(0,$.jsxs)(Rt,{heading:i(`layout.mainTab.files`),className:ua,children:[et.map(e=>{let t=_e(e.relativePath||e.name,{maxLength:80});return(0,$.jsx)(Jt,{value:`file:${e.path}`,onSelect:()=>{ut(e.path)},className:la,children:(0,$.jsx)(ca,{title:fa(e.name,G),description:t===e.name?void 0:fa(t,G)})},`file:${e.path}`)}),rt(`files`,He.length,et.length)]},`files`):e===`projects`&&tt.length>0?(0,$.jsxs)(Rt,{heading:i(`sessions.sidebar.projectsTitle`),className:ua,children:[tt.map(e=>{let t=e.displayName;return(0,$.jsx)(Jt,{value:`project:${e.id}`,onSelect:()=>dt(e.id,e.path),className:la,children:(0,$.jsx)(ca,{title:fa(t,G)})},`project:${e.id}`)}),rt(`projects`,Ge.length,tt.length)]},`projects`):null):(0,$.jsx)(`div`,{role:`status`,className:`px-3 py-10 text-center typography-meta text-muted-foreground`,children:i(`common.loading`)}),xt&&j===`loading`?(0,$.jsx)(`div`,{role:`status`,className:`px-3 py-4 text-center typography-meta text-muted-foreground`,children:i(`common.loading`)}):null,xt&&j===`error`?(0,$.jsx)(`div`,{role:`alert`,className:`px-3 py-4 typography-meta text-[var(--status-error)]`,children:i(`commandPalette.error.sessions`)}):null,xt&&ze?(0,$.jsx)(`div`,{role:`alert`,className:`px-3 py-4 typography-meta text-[var(--status-error)]`,children:i(`commandPalette.error.sessions`)}):null,xt&&Le?(0,$.jsx)(`div`,{role:`alert`,className:`px-3 py-4 typography-meta text-[var(--status-error)]`,children:i(`commandPalette.error.messages`)}):null,xt&&_t?(0,$.jsx)(`div`,{role:`alert`,className:`px-3 py-4 typography-meta text-[var(--status-error)]`,children:i(`mobile.files.error.listFailed`)}):null]})]});return e===`page`?(0,$.jsx)(`section`,{ref:ne,"data-global-search":`true`,"data-page-scroll-lock":`true`,"aria-label":i(`commandPalette.title`),className:`oc-global-search-page flex min-h-0 w-full flex-col bg-background text-foreground`,children:Ct}):(0,$.jsx)(Dt,{open:o,onOpenChange:l,onOpenChangeComplete:e=>{e||c(!1)},children:(0,$.jsxs)(wt,{ref:ne,initialFocus:re,"data-global-search":`true`,"data-mobile":R,"data-page-scroll-lock":`true`,className:R?`oc-global-search-page oc-global-search-mobile fixed inset-0 z-50 m-0 flex max-w-none translate-x-0 translate-y-0 flex-col gap-0 overflow-hidden rounded-none border-0 bg-background p-0`:`oc-global-search oc-mobile-overlay-surface oc-mobile-overlay-surface--translucent oc-composer-autocomplete-surface fixed left-1/2 top-[10vh] z-50 w-[min(56rem,calc(100vw-3rem))] max-w-none -translate-x-1/2 translate-y-0 gap-0 overflow-hidden rounded-3xl border-0 p-0`,containerClassName:`block p-0`,overlayClassName:`bg-transparent dark:bg-transparent`,showCloseButton:!1,children:[(0,$.jsxs)(St,{className:`sr-only`,children:[(0,$.jsx)(Tt,{children:i(`commandPalette.title`)}),(0,$.jsx)(Et,{children:i(`commandPalette.description`)})]}),Ct]})})}),ga=class extends Q.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){this.setState({error:e,errorInfo:t})}handleReset=()=>{this.setState({hasError:!1,error:void 0,errorInfo:void 0})};render(){return this.state.hasError?(0,$.jsx)(`div`,{className:`flex items-center justify-center min-h-screen p-4`,children:(0,$.jsxs)(Ln,{className:`w-full max-w-md`,children:[(0,$.jsx)(xn,{className:`text-center`,children:(0,$.jsxs)(bn,{className:`flex items-center justify-center gap-2 text-destructive`,children:[(0,$.jsx)(Z,{name:`chat-3`,className:`h-5 w-5`}),this.props.texts.title]})}),(0,$.jsxs)(wn,{className:`space-y-4`,children:[(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground text-center`,children:this.props.texts.description}),this.props.sessionId&&(0,$.jsxs)(`div`,{className:`text-xs text-muted-foreground text-center`,children:[this.props.texts.sessionLabel,`: `,this.props.sessionId]}),this.state.error&&(0,$.jsxs)(`details`,{className:`text-xs font-mono bg-muted p-3 rounded`,children:[(0,$.jsx)(`summary`,{className:`cursor-pointer hover:bg-interactive-hover/80`,children:this.props.texts.detailsSummary}),(0,$.jsx)(`pre`,{className:`mt-2 max-h-48 overflow-auto`,children:this.state.error.toString()})]}),(0,$.jsx)(`div`,{className:`flex gap-2`,children:(0,$.jsxs)(X,{onClick:this.handleReset,variant:`outline`,className:`flex-1`,children:[(0,$.jsx)(Z,{name:`restart`,className:`h-4 w-4 mr-2`}),this.props.texts.resetAction]})}),(0,$.jsx)(`div`,{className:`text-xs text-muted-foreground text-center`,children:this.props.texts.persistentHint})]})]})}):this.props.children}};function _a(e){let t=(0,di.c)(22),{t:n}=pe(),r;t[0]===n?r=t[1]:(r=n(`chat.errorBoundary.title`),t[0]=n,t[1]=r);let i;t[2]===n?i=t[3]:(i=n(`chat.errorBoundary.description`),t[2]=n,t[3]=i);let a;t[4]===n?a=t[5]:(a=n(`chat.errorBoundary.sessionLabel`),t[4]=n,t[5]=a);let o;t[6]===n?o=t[7]:(o=n(`chat.errorBoundary.detailsSummary`),t[6]=n,t[7]=o);let s;t[8]===n?s=t[9]:(s=n(`chat.errorBoundary.resetAction`),t[8]=n,t[9]=s);let c;t[10]===n?c=t[11]:(c=n(`chat.errorBoundary.persistentHint`),t[10]=n,t[11]=c);let l;t[12]!==r||t[13]!==i||t[14]!==a||t[15]!==o||t[16]!==s||t[17]!==c?(l={title:r,description:i,sessionLabel:a,detailsSummary:o,resetAction:s,persistentHint:c},t[12]=r,t[13]=i,t[14]=a,t[15]=o,t[16]=s,t[17]=c,t[18]=l):l=t[18];let u;return t[19]!==e||t[20]!==l?(u=(0,$.jsx)(ga,{...e,texts:l}),t[19]=e,t[20]=l,t[21]=u):u=t[21],u}var va=1440,ya=e=>{let t=(0,di.c)(8),{isMobile:n,isVSCode:r,directory:i}=e,a=ce(`(min-width: ${va}px)`),o;t[0]===i?o=t[1]:(o=i?F(i):``,t[0]=i,t[1]=o);let s=o,c;t[2]===s?c=t[3]:(c=e=>{let t=s?e.contextPanelByDirectory[s]:void 0;if(!t?.isOpen)return!1;let n=t.tabs.find(e=>e.id===t.activeTabId)??t.tabs[t.tabs.length-1]??null;return!!(n&&n.mode!==`chat`)},t[2]=s,t[3]=c);let l=P(c),u=P(ba),d=P(xa),f=!n&&!r&&!l&&!d,p=f&&a,m=u&&p,h;return t[4]!==p||t[5]!==f||t[6]!==m?(h={visible:m,fits:p,layoutAllows:f},t[4]=p,t[5]=f,t[6]=m,t[7]=h):h=t[7],h};function ba(e){return e.workStatusPanelEnabled}function xa(e){return e.isRightSidebarOpen}var Sa=async({directory:e,sessionID:t,signal:n})=>{let r=await j.getScopedSdkClient(e).session.list({directory:e,parentID:t,limit:200},{signal:n});if(!Array.isArray(r?.data))throw Error(`session.list children returned no data`);return r.data.flatMap(e=>{if(!e?.id)return[];let t=typeof e.title==`string`?e.title:void 0;return[{id:e.id,title:t}]})},Ca=(e,t,n={})=>{let r=n.listChildren??Sa;return z({queryKey:p.workStatusChildren.list(e,t,n.transport),enabled:!!(e&&t),queryFn:({signal:n})=>r({directory:e,sessionID:t,signal:n}),staleTime:5e3,refetchInterval:1e4})},wa=[],Ta=(...e)=>{let t=Mt(...e);return t?t.charAt(0).toUpperCase()+t.slice(1):``},Ea=(...e)=>{for(let t of e){if(!t||typeof t!=`object`)continue;let e=t.description;if(typeof e!=`string`)continue;let n=e.trim();if(n)return n}return``},Da=e=>e===`pending`||e===`running`,Oa=e=>{let t=[],n=new Set;for(let r of e.messageOrder){let i=e.partsByMessageID[r];if(i)for(let e of i){if(!e?.id||n.has(e.id))continue;if(e.type===`tool`&&It(e.tool)){n.add(e.id);let r=e.state;t.push({id:e.id,sessionID:Lt(e),label:Ta(r?.input,r?.metadata,e.metadata),description:Ea(r?.input,e.metadata,r?.metadata),running:Da(r?.status)});continue}if(e.type!==`subtask`)continue;let r=e,i=typeof r.taskSessionID==`string`?r.taskSessionID.trim():``,a=typeof r.agent==`string`?r.agent.trim():``,o=typeof r.description==`string`?r.description.trim():``;n.add(e.id),t.push({id:e.id,sessionID:i||void 0,label:a?a.charAt(0).toUpperCase()+a.slice(1):``,description:o,running:Da(r.status)})}}return t.length===0?wa:t},ka=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],i=t[n];if(!r||!i||r.id!==i.id||r.sessionID!==i.sessionID||r.label!==i.label||r.description!==i.description||r.running!==i.running)return!1}return!0},Aa=e=>e.childTitle||e.description||e.agent,ja=e=>({key:e.key,sessionID:e.sessionID,seed:e.key,label:Aa(e),phase:e.working?`working`:`done`}),Ma=(e,t,n)=>{let r=new Map(t.map(e=>[e.id,e])),i=new Set,a=[],o=new Map,s=e=>{let t=e.sessionID;if(!t){a.push(e);return}i.add(t);let n=o.get(t);if(n===void 0){o.set(t,a.length),a.push({...e,key:t,sessionID:t});return}let r=a[n];r&&(a[n]={...r,description:r.description||e.description,agent:r.agent||e.agent,childTitle:e.childTitle||r.childTitle,working:r.working||e.working})};for(let t of e){let e=t.sessionID?r.get(t.sessionID):void 0;s({key:t.id,sessionID:t.sessionID,description:t.description,agent:t.label,childTitle:e?.title?.trim()||``,working:t.running||!!e?.busy||!!(t.sessionID&&n?.has(t.sessionID))})}for(let e of t)i.has(e.id)||s({key:e.id,sessionID:e.id,description:``,agent:``,childTitle:e.title?.trim()||``,working:e.busy});let c=a.map(ja),l=c.filter(e=>e.phase===`working`),u=c.filter(e=>e.phase===`done`);return l.length===0?u:u.length===0?l:[...l,...u]},Na=new Set,Pa=e=>{if(!e)return``;let t=[];for(let n of Object.keys(e)){let r=e[n]?.type;(r===`busy`||r===`retry`)&&t.push(n)}return t.sort(),t.join(`
3
3
  `)},Fa=(e,t)=>{let n=(0,di.c)(4),r;n[0]===t?r=n[1]:(r=e=>t?Pa(e.session_status):``,n[0]=t,n[1]=r);let i=C(e,r),a;return n[2]===i?a=n[3]:(a=i?new Set(i.split(`
4
4
  `)):Na,n[2]=i,n[3]=a),a},Ia=(e,t)=>{let n=[];for(let r of e)!r.id||r.parentID!==t||n.push(`${r.id}\u0001${r.title??``}`);return n.join(``)},La=e=>e?e.split(``).map(e=>{let t=e.indexOf(``);return{id:e.slice(0,t),title:e.slice(t+1)}}):[],Ra=(e,t,n)=>{let r=new Map;for(let t of e)t.id&&r.set(t.id,{id:t.id,title:t.title,busy:n.has(t.id)});for(let e of t??[]){if(!e.id)continue;let t=r.get(e.id),i=e.title?.trim()||t?.title;r.set(e.id,{id:e.id,title:i,busy:n.has(e.id)})}return[...r.values()]},za=(e,t)=>{let n=(0,di.c)(18),r=!!(e&&t),i;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={bootstrap:!1},n[0]=i):i=n[0];let a=Ne(t||void 0,i),o;n[1]!==r||n[2]!==e?(o=t=>r&&e?Ia(t.session,e):``,n[1]=r,n[2]=e,n[3]=o):o=n[3];let s=C(a,o),c=t??``,l=e??``,u;n[4]!==c||n[5]!==l?(u=Ca(c,l),n[4]=c,n[5]=l,n[6]=u):u=n[6];let d;n[7]!==r||n[8]!==u?(d={...u,enabled:r},n[7]=r,n[8]=u,n[9]=d):d=n[9];let f=B(d),p;n[10]===r?p=n[11]:(p={enabled:r},n[10]=r,n[11]=p);let m=M(e??``,t??``,a,Oa,ka,p),h=Fa(a,r),g;bb0:{if(!e){let e;n[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=[],n[12]=e):e=n[12],g=e;break bb0}let t;n[13]!==h||n[14]!==s||n[15]!==f.data||n[16]!==m?(t=Ma(m,Ra(La(s),f.data,h),h),n[13]=h,n[14]=s,n[15]=f.data,n[16]=m,n[17]=t):t=n[17],g=t}return g},Ba=`flex w-full min-w-0 items-center justify-start gap-2 text-left text-[13px] font-normal leading-5 tracking-normal text-muted-foreground`,Va=`size-3.5 shrink-0`,Ha=`oc-work-status-action pointer-events-none shrink-0 text-muted-foreground opacity-0 transition-opacity group-hover/copy:pointer-events-auto group-hover/copy:opacity-100 focus-visible:pointer-events-auto focus-visible:opacity-100`,Ua=e=>e.split(/[\\/]/).filter(Boolean).pop()||e,Wa=({sessionId:e,directory:t})=>{let{t:n}=pe(),{git:r}=Un(),i=pr(e=>e.ensureStatus),a=dr(t),o=ct(e=>e.projects),s=Ze(e=>e.availableWorktreesByProject),c=Ze(t=>e?t.worktreeMetadata.get(e):void 0),{project:l,worktree:u}=Q.useMemo(()=>{let e=v(t),n=t=>{let n=v(t);return!!(e&&n&&(e===n||e.startsWith(`${n}/`)))},r=c&&n(c.path)?c:void 0,i=gt(o,s,r?.projectDirectory||t),a=i?s.get(i.path):void 0;return{project:i,worktree:r??a?.filter(e=>n(e.path)).sort((e,t)=>t.path.length-e.path.length)[0]}},[s,t,o,c]),d=l?.path||u?.projectDirectory||t,f=l?.label?.trim()||(d?Ua(d):null),p=u&&v(u.path)!==v(d)?u.name?.trim()||Ua(u.path):null,m=za(e,t),h=[{phase:`working`,labelKey:`chat.workStatus.subagent.workingCount`,items:m.filter(e=>e.phase===`working`)},{phase:`done`,labelKey:`chat.workStatus.subagent.doneCount`,items:m.filter(e=>e.phase===`done`)}],g=h[0].items,_=(g.length>0?g:m).slice(0,3),[y,b]=Q.useState(!1),x=Q.useId(),S=P(e=>e.setRightSidebarOpen),C=P(e=>e.openContextPanelTab),w=P(e=>e.setRightSidebarTab),[T,E]=Q.useState(null),[,D]=ue(()=>E(null),1500,{immediate:!1}),O=le(async(e,t)=>{try{let n=await fe(t);if(!n.ok)throw Error(n.error);E(e),D()}catch{se.error(n(`gitView.toast.copyFailed`))}});Q.useEffect(()=>{!t||!r||i(t,r)},[t,i,r]);let k=a?.current||null,A=u?.worktreeStatus===`pending`?0:a?.files.length??0,j=0,M=0;if(a?.diffStats)for(let e of Object.values(a.diffStats))j+=e?.insertions??0,M+=e?.deletions??0;let N=k?`branch:${k}`:``,F=u?.path?`worktree:${u.path}`:``,I=!!(N&&T===N),L=!!(F&&T===F),ee=le(()=>{k&&O(N,k)}),te=le(()=>{let e=u?.path;e&&O(F,e)}),R=le(()=>{w(`git`),S(!0)});return(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-0.5`,children:[f?(0,$.jsxs)(`div`,{className:`${Ba} h-8 px-2`,title:`${n(`chat.workStatus.section.project`)}: ${d}`,children:[(0,$.jsx)(Z,{name:`folder`,weight:`medium`,className:Va}),(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:f})]}):null,k?(0,$.jsxs)(`div`,{className:`${Ba} group/copy h-8 px-2`,title:`${n(`gitView.branch.currentBranchTooltip`)}: ${k}`,children:[(0,$.jsx)(Z,{name:`git-branch`,weight:`medium`,className:Va}),(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:k}),(0,$.jsx)(X,{variant:`ghost`,size:`xs`,className:Ha,"aria-label":n(`chat.workStatus.action.copyBranch`),title:n(I?`contextSidebar.actions.copied`:`chat.workStatus.action.copyBranch`),onClick:ee,children:(0,$.jsx)(Z,{name:I?`check`:`file-copy`,className:Va})})]}):null,p?(0,$.jsxs)(`div`,{className:`${Ba} group/copy h-8 px-2`,title:`${n(`sessions.sidebar.sessionDialogs.worktree.label`)}: ${u?.path}`,children:[(0,$.jsx)(Z,{name:`node-tree`,weight:`medium`,className:Va}),(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:p}),(0,$.jsx)(X,{variant:`ghost`,size:`xs`,className:Ha,"aria-label":n(`agentManager.detail.actions.copyWorktreePath`),title:n(L?`contextSidebar.actions.copied`:`agentManager.detail.actions.copyWorktreePath`),onClick:te,children:(0,$.jsx)(Z,{name:L?`check`:`file-copy`,className:Va})})]}):null,A>0?(0,$.jsxs)(X,{variant:`ghost`,size:`sm`,className:`oc-work-status-action ${Ba}`,title:n(A===1?`chat.workStatus.git.changedFileSingle`:`chat.workStatus.git.changedFilePlural`,{count:A}),"aria-label":n(`chat.workStatus.action.openGit`),onClick:R,children:[(0,$.jsx)(Z,{name:`changes`,weight:`medium`,className:Va}),(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:n(`chat.workStatus.compact.changes`)}),j>0||M>0?(0,$.jsxs)(`span`,{className:`ml-auto flex shrink-0 gap-1.5 text-[12px] tabular-nums`,children:[(0,$.jsx)(`span`,{className:`text-[var(--status-success)]`,children:`+${j}`}),(0,$.jsx)(`span`,{className:`text-[var(--status-error)]`,children:`−${M}`})]}):(0,$.jsx)(`span`,{className:`ml-auto tabular-nums`,children:A})]}):null,m.length>0?(0,$.jsxs)(`div`,{role:`group`,"aria-label":n(`chat.workStatus.section.subagents`),className:`flex min-w-0 flex-col`,children:[(0,$.jsxs)(X,{type:`button`,variant:`ghost`,size:`sm`,className:`oc-work-status-action ${Ba} gap-1.5`,"aria-expanded":y,"aria-controls":x,onClick:()=>b(e=>!e),children:[(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`inline-flex shrink-0 items-center`,children:_.map((e,t)=>{let r=e.label.trim()||n(`chat.workStatus.subagent.untitled`);return(0,$.jsx)(yt,{name:e.seed,label:r,size:14,className:`relative bg-background ring-2 ring-background ${t>0?`-ml-1`:``}`},e.key)})}),(0,$.jsx)(`span`,{className:`flex min-w-0 flex-1 items-center gap-x-1 whitespace-nowrap text-left text-[11px] leading-5 tabular-nums`,children:h.filter(e=>e.items.length>0).map((e,t)=>(0,$.jsxs)(Q.Fragment,{children:[t>0?(0,$.jsx)(`span`,{"aria-hidden":`true`,children:`·`}):null,(0,$.jsx)(`span`,{children:n(e.labelKey,{count:e.items.length})})]},e.phase))}),(0,$.jsx)(Z,{name:y?`arrow-down-s`:`arrow-right-s`,className:`size-3.5 shrink-0 text-muted-foreground opacity-70`})]}),(0,$.jsx)(`div`,{id:x,hidden:!y,className:y?`mt-1 mb-1 flex min-w-0 flex-col gap-1`:`hidden`,children:y?h.filter(e=>e.items.length>0).map(e=>(0,$.jsxs)(`section`,{"aria-label":n(e.labelKey,{count:e.items.length}),className:`flex min-w-0 flex-col gap-1 [&+section]:mt-2`,children:[(0,$.jsx)(`div`,{className:`px-2 py-1 text-[11px] leading-4 text-muted-foreground/70`,children:n(e.labelKey,{count:e.items.length})}),e.items.map(e=>{let r=e.label.trim()||n(`chat.workStatus.subagent.untitled`);return(0,$.jsxs)(X,{variant:`ghost`,size:`sm`,disabled:!e.sessionID||!t,className:`oc-work-status-action flex w-full min-w-0 items-center justify-start gap-2 text-left text-[12px] font-normal leading-5 text-muted-foreground`,onClick:()=>{!e.sessionID||!t||C(t,{mode:`chat`,dedupeKey:`session:${e.sessionID}`,label:r,readOnly:!0})},children:[(0,$.jsx)(yt,{name:e.seed,label:r,size:14}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,title:r,children:r})]},e.key)})]},e.phase)):null})]}):null]})},Ga=200,Ka=e=>{let t=(0,di.c)(31),{sessionId:n,directory:r,visible:i,overlay:a}=e,o=a!==void 0&&a,{t:s}=pe(),c=P(qa),l=Q.useRef(null),[u,d]=Q.useState(i),f,p;t[0]===i?(f=t[1],p=t[2]):(f=()=>{if(i){d(!0);return}let e=window.setTimeout(()=>d(!1),Ga);return()=>window.clearTimeout(e)},p=[i],t[0]=i,t[1]=f,t[2]=p),Q.useEffect(f,p);let m,h;t[3]!==o||t[4]!==c||t[5]!==i?(m=()=>{if(!o||!i)return;let e=e=>{let t=e.target instanceof Element?e.target:null;l.current?.contains(t)||t?.closest(`[data-work-status-toggle]`)||c(!1)},t=e=>{e.key===`Escape`&&c(!1)};return document.addEventListener(`pointerdown`,e,!0),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e,!0),document.removeEventListener(`keydown`,t)}},h=[o,c,i],t[3]=o,t[4]=c,t[5]=i,t[6]=m,t[7]=h):(m=t[6],h=t[7]),Q.useEffect(m,h);let g;t[8]===s?g=t[9]:(g=s(`chat.workStatus.ariaLabel`),t[8]=s,t[9]=g);let _=!i,v=!i,y=o?`top-3 z-30 max-h-[calc(100%-1.5rem)] rounded-lg bg-[var(--surface-elevated)]/95 px-1 backdrop-blur-md`:`top-2`,b;t[10]===y?b=t[11]:(b=Y(`absolute z-20 flex max-h-[calc(100%-1rem)] flex-col overflow-x-hidden overflow-y-auto scrollbar-hidden bg-transparent`,y),t[10]=y,t[11]=b);let x=o||i?196:0,S=+!!i,C=i?`none`:o?`translateY(-6px)`:`translateX(24px)`,w=o?`opacity, transform`:`none`,T=i?void 0:`none`,E;t[12]!==x||t[13]!==S||t[14]!==C||t[15]!==w||t[16]!==T?(E={right:14,width:x,opacity:S,transform:C,transitionProperty:w,transitionDuration:`${Ga}ms`,transitionTimingFunction:`cubic-bezier(0.22, 1, 0.36, 1)`,pointerEvents:T},t[12]=x,t[13]=S,t[14]=C,t[15]=w,t[16]=T,t[17]=E):E=t[17];let D;t[18]!==u||t[19]!==r||t[20]!==o||t[21]!==n||t[22]!==i?(D=i||o&&u?(0,$.jsx)(Wa,{sessionId:n,directory:r}):null,t[18]=u,t[19]=r,t[20]=o,t[21]=n,t[22]=i,t[23]=D):D=t[23];let O;return t[24]!==b||t[25]!==E||t[26]!==D||t[27]!==g||t[28]!==_||t[29]!==v?(O=(0,$.jsx)(`aside`,{ref:l,"aria-label":g,"aria-hidden":_,inert:v,className:b,style:E,children:D}),t[24]=b,t[25]=E,t[26]=D,t[27]=g,t[28]=_,t[29]=v,t[30]=O):O=t[30],O};function qa(e){return e.setWorkStatusOverlayOpen}var Ja=e=>{let t=(0,di.c)(10),{sessionId:n,directory:r,visible:i,overlay:a,publishVisible:o}=e,s=a!==void 0&&a,c=o!==void 0&&o,l=P(Xa),u,d;t[0]!==c||t[1]!==l||t[2]!==i?(u=()=>{if(c)return l(i),()=>l(!1)},d=[c,l,i],t[0]=c,t[1]=l,t[2]=i,t[3]=u,t[4]=d):(u=t[3],d=t[4]),Q.useEffect(u,d);let f;return t[5]!==r||t[6]!==s||t[7]!==n||t[8]!==i?(f=(0,$.jsx)(Ka,{overlay:s,visible:i,sessionId:n,directory:r}),t[5]=r,t[6]=s,t[7]=n,t[8]=i,t[9]=f):f=t[9],f},Ya=({readOnly:e=!1,active:t=!0,selectionOverride:n})=>{let r=Ze(e=>e.currentSessionId),i=Ze(e=>e.currentSessionDirectory),a=Ze(e=>!!e.newSessionDraft?.open),o=Ze(e=>!!(e.newSessionDraft?.open&&e.newSessionDraft.pendingUserMessage&&(e.newSessionDraft.draftEstablishing||e.newSessionDraft.draftSubmitting))),s=Fr(),c=P(e=>e.isMobile),l=P(e=>e.isExpandedInput),u=m(),d=P(e=>e.workStatusPanelEnabled),f=P(e=>e.workStatusOverlayOpen),p=P(e=>e.setWorkStatusPanelFits),h=n?.sessionId??r,g=n?.sessionId??r,_=n?.directory??i??s??null,{visible:v,fits:y,layoutAllows:b}=ya({isMobile:c,isVSCode:u,directory:_}),x=n?!!n.sessionId:a?o:!!g,S=t&&b&&!l&&x,C=S&&v,w=S&&d&&!y&&f;return Q.useEffect(()=>(p(S&&y),()=>p(!1)),[y,S,p]),(0,$.jsxs)(`div`,{className:Y(`relative h-full min-h-0 min-w-0`,C&&`oc-chat-work-status-inline`),style:C?{"--oc-work-status-reserve":`210px`}:void 0,children:[(0,$.jsx)(`div`,{className:`absolute inset-0 min-h-0 min-w-0`,children:(0,$.jsx)(_a,{sessionId:h||void 0,children:(0,$.jsx)(jt,{readOnly:e,active:t,explicitSession:n?{...n,active:t}:void 0})})}),S?(0,$.jsx)(Ja,{publishVisible:!0,visible:C,sessionId:g,directory:_}):null,S&&d&&!y?(0,$.jsx)(Ja,{overlay:!0,visible:w,sessionId:g,directory:_}):null]})};function Xa(e){return e.setWorkStatusPanelVisible}function Za(e){let t=(0,di.c)(85),{draft:n,onEdit:r,onDelete:i,className:a,maxWidth:o}=e,{t:s}=pe(),c=xt()?.currentTheme,[l,u]=(0,Q.useState)(!1),[d,f]=(0,Q.useState)(!1),p=typeof n.text==`string`?n.text:``,m;t[0]===p?m=t[1]:(m=p.length>150||p.split(`
5
5
  `).length>3,t[0]=p,t[1]=m);let h=m,g;t[2]===a?g=t[3]:(g=Y(`rounded-lg border shadow-none w-full max-w-[min(100%,calc(var(--oc-context-panel-width,100vw)-var(--oc-editor-gutter-width,0px)))] overflow-hidden transition-all duration-200`,a),t[2]=a,t[3]=g);let _=c?.colors?.surface?.elevated,v=c?.colors?.interactive?.border,y=o?`${Math.max(200,Math.floor(o))}px`:void 0,b;t[4]!==_||t[5]!==v||t[6]!==y?(b={backgroundColor:_,borderColor:v,maxWidth:y},t[4]=_,t[5]=v,t[6]=y,t[7]=b):b=t[7];let x;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(x=e=>{e.preventDefault(),f(!0)},t[8]=x):x=t[8];let S;t[9]!==g||t[10]!==b?(S=(0,$.jsx)(`div`,{className:g,style:b,"data-comment-card":`true`,onContextMenu:x}),t[9]=g,t[10]=b,t[11]=S):S=t[11];let C;t[12]===n.fileLabel?C=t[13]:(C=(0,$.jsx)(`span`,{className:`truncate max-w-[200px]`,title:n.fileLabel,children:n.fileLabel}),t[12]=n.fileLabel,t[13]=C);let w;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,$.jsx)(`span`,{children:`•`}),t[14]=w):w=t[14];let T;t[15]!==n.endLine||t[16]!==n.startLine||t[17]!==s?(T=s(`inlineComment.range.lines`,{start:n.startLine,end:n.endLine}),t[15]=n.endLine,t[16]=n.startLine,t[17]=s,t[18]=T):T=t[18];let E;t[19]===T?E=t[20]:(E=(0,$.jsx)(`span`,{children:T}),t[19]=T,t[20]=E);let D;t[21]===n.side?D=t[22]:(D=n.side&&(0,$.jsxs)(`span`,{children:[`(`,n.side,`)`]}),t[21]=n.side,t[22]=D);let O;t[23]!==E||t[24]!==D||t[25]!==C?(O=(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-medium text-muted-foreground mb-1.5`,children:[C,w,E,D]}),t[23]=E,t[24]=D,t[25]=C,t[26]=O):O=t[26];let k=l||!h,A=!l&&h&&`line-clamp-3`,j;t[27]===A?j=t[28]:(j=Y(`text-sm whitespace-pre-wrap break-words leading-relaxed`,A),t[27]=A,t[28]=j);let M;t[29]!==p||t[30]!==j?(M=(0,$.jsx)(`div`,{className:j,children:p}),t[29]=p,t[30]=j,t[31]=M):M=t[31];let N;t[32]!==h||t[33]!==l||t[34]!==s?(N=h&&(0,$.jsx)(ci,{asChild:!0,children:(0,$.jsx)(X,{variant:`ghost`,size:`sm`,className:`h-6 px-0 mt-1 text-xs text-muted-foreground hover:text-foreground w-full justify-start`,children:l?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Z,{name:`arrow-up-s`,className:`size-3 mr-1`}),s(`inlineComment.actions.showLess`)]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Z,{name:`arrow-down-s`,className:`size-3 mr-1`}),s(`inlineComment.actions.showMore`)]})})}),t[32]=h,t[33]=l,t[34]=s,t[35]=N):N=t[35];let P;t[36]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,$.jsx)(si,{}),t[36]=P):P=t[36];let F;t[37]!==k||t[38]!==M||t[39]!==N?(F=(0,$.jsxs)(li,{open:k,onOpenChange:u,children:[M,N,P]}),t[37]=k,t[38]=M,t[39]=N,t[40]=F):F=t[40];let I;t[41]!==O||t[42]!==F?(I=(0,$.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[O,F]}),t[41]=O,t[42]=F,t[43]=I):I=t[43];let L;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,$.jsx)(In,{asChild:!0,children:(0,$.jsx)(X,{variant:`ghost`,size:`icon`,className:`h-6 w-6 -mr-1 text-muted-foreground hover:text-foreground`,children:(0,$.jsx)(Z,{name:`more`,className:`size-4`})})}),t[44]=L):L=t[44];let ee;t[45]===Symbol.for(`react.memo_cache_sentinel`)?(ee=(0,$.jsx)(Z,{name:`edit`,className:`size-4 mr-2`}),t[45]=ee):ee=t[45];let te;t[46]===s?te=t[47]:(te=s(`inlineComment.actions.editComment`),t[46]=s,t[47]=te);let R;t[48]!==r||t[49]!==te?(R=(0,$.jsxs)(En,{onClick:r,children:[ee,te]}),t[48]=r,t[49]=te,t[50]=R):R=t[50];let z;t[51]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,$.jsx)(Z,{name:`delete-bin`,className:`size-4 mr-2`}),t[51]=z):z=t[51];let B;t[52]===s?B=t[53]:(B=s(`inlineComment.actions.deleteComment`),t[52]=s,t[53]=B);let ne;t[54]!==i||t[55]!==B?(ne=(0,$.jsxs)(En,{onClick:i,className:`text-destructive`,children:[z,B]}),t[54]=i,t[55]=B,t[56]=ne):ne=t[56];let re;t[57]!==R||t[58]!==ne?(re=(0,$.jsxs)(Nn,{children:[L,(0,$.jsxs)(An,{align:`end`,children:[R,ne]})]}),t[57]=R,t[58]=ne,t[59]=re):re=t[59];let V;t[60]!==I||t[61]!==re?(V=(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-2 p-3`,children:[I,re]}),t[60]=I,t[61]=re,t[62]=V):V=t[62];let ie;t[63]!==V||t[64]!==S?(ie=(0,$.jsx)(Qr,{render:S,children:V}),t[63]=V,t[64]=S,t[65]=ie):ie=t[65];let ae;t[66]===Symbol.for(`react.memo_cache_sentinel`)?(ae=(0,$.jsx)(Z,{name:`edit`,className:`size-4 mr-2`}),t[66]=ae):ae=t[66];let oe;t[67]===s?oe=t[68]:(oe=s(`inlineComment.actions.editComment`),t[67]=s,t[68]=oe);let H;t[69]!==r||t[70]!==oe?(H=(0,$.jsxs)(ri,{onClick:r,children:[ae,oe]}),t[69]=r,t[70]=oe,t[71]=H):H=t[71];let U;t[72]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,$.jsx)(Z,{name:`delete-bin`,className:`size-4 mr-2`}),t[72]=U):U=t[72];let W;t[73]===s?W=t[74]:(W=s(`inlineComment.actions.deleteComment`),t[73]=s,t[74]=W);let G;t[75]!==i||t[76]!==W?(G=(0,$.jsxs)(ri,{onClick:i,className:`text-destructive focus:text-destructive`,children:[U,W]}),t[75]=i,t[76]=W,t[77]=G):G=t[77];let K;t[78]!==H||t[79]!==G?(K=(0,$.jsxs)(ti,{children:[H,G]}),t[78]=H,t[79]=G,t[80]=K):K=t[80];let q;return t[81]!==d||t[82]!==ie||t[83]!==K?(q=(0,$.jsxs)(Jr,{open:d,onOpenChange:f,children:[ie,K]}),t[81]=d,t[82]=ie,t[83]=K,t[84]=q):q=t[84],q}function Qa(e){let t=(0,di.c)(67),{initialText:n,onTextChange:r,onSave:i,onCancel:a,fileLabel:o,lineRange:s,isEditing:c,className:l,maxWidth:u,onAddToChat:d}=e,f=n===void 0?``:n,p=c!==void 0&&c,{t:m}=pe(),h=xt()?.currentTheme,{isMobile:g}=Rn(),[_,v]=Q.useState(f),y=(0,Q.useRef)(null),b;t[0]===r?b=t[1]:(b=e=>{v(e),r?.(e)},t[0]=r,t[1]=b);let x=b,S=(0,Q.useRef)(s),C,w;t[2]===s?(C=t[3],w=t[4]):(C=()=>{s&&(S.current=s)},w=[s],t[2]=s,t[3]=C,t[4]=w),(0,Q.useEffect)(C,w);let T=oo,E=T(s),D,O;t[5]===g?(D=t[6],O=t[7]):(D=()=>{let e=y.current;if(!e)return;let t=e.closest(`.overlay-scrollbar-container`),n=t?.scrollTop??window.scrollY,r=t?.scrollLeft??window.scrollX;if(g){e.scrollIntoView({behavior:`auto`,block:`nearest`});try{e.focus({preventScroll:!0})}catch{e.focus()}return}try{e.focus({preventScroll:!0})}catch{e.focus()}let i=e.value.length;try{e.setSelectionRange(i,i)}catch{}requestAnimationFrame(()=>{t?(t.scrollTop=n,t.scrollLeft=r):window.scrollTo({top:n,left:r})})},O=[g],t[5]=g,t[6]=D,t[7]=O),(0,Q.useEffect)(D,O);let k;t[8]!==a||t[9]!==i||t[10]!==_?(k=e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`?(e.preventDefault(),_.trim()&&i(_,T(S.current))):e.key===`Escape`&&(e.preventDefault(),a())},t[8]=a,t[9]=i,t[10]=_,t[11]=k):k=t[11];let A=k,j;t[12]!==i||t[13]!==_?(j=e=>{e.stopPropagation(),_.trim()&&i(_,T(S.current))},t[12]=i,t[13]=_,t[14]=j):j=t[14];let M=j,N;t[15]===l?N=t[16]:(N=Y(`rounded-lg border shadow-none w-full max-w-[min(100%,calc(var(--oc-context-panel-width,100vw)-var(--oc-editor-gutter-width,0px)))] overflow-hidden animate-in fade-in zoom-in-95 duration-200`,l),t[15]=l,t[16]=N);let P=h?.colors?.surface?.elevated,F=h?.colors?.interactive?.border,I=u?`${Math.max(200,Math.floor(u))}px`:void 0,L;t[17]!==P||t[18]!==F||t[19]!==I?(L={backgroundColor:P,borderColor:F,maxWidth:I},t[17]=P,t[18]=F,t[19]=I,t[20]=L):L=t[20];let ee=ao,te=io,R=(o||s)&&(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-medium text-muted-foreground mb-2`,children:[o&&(0,$.jsx)(`span`,{className:`truncate max-w-[200px]`,children:o}),o&&s&&(0,$.jsx)(`span`,{children:`•`}),E&&(0,$.jsx)(`span`,{children:m(`inlineComment.range.lines`,{start:E.start,end:E.end})})]}),z;t[21]===x?z=t[22]:(z=e=>x(e.target.value),t[21]=x,t[22]=z);let B;t[23]!==g||t[24]!==m?(B=m(g?`inlineComment.input.placeholderShort`:`inlineComment.input.placeholder`),t[23]=g,t[24]=m,t[25]=B):B=t[25];let ne;t[26]!==A||t[27]!==z||t[28]!==B||t[29]!==_?(ne=(0,$.jsx)(er,{simple:!0,ref:y,value:_,onChange:z,onKeyDown:A,placeholder:B,outerClassName:`rounded-[var(--radius-xl)] bg-[var(--surface-subtle)] ring-1 ring-inset ring-border/60 focus-within:ring-2 focus-within:ring-[var(--interactive-focus-ring)]`,className:`min-h-[80px] px-3 py-2.5 text-sm resize-y`}),t[26]=A,t[27]=z,t[28]=B,t[29]=_,t[30]=ne):ne=t[30];let re;t[31]!==E||t[32]!==d||t[33]!==m?(re=E&&d?(0,$.jsxs)(X,{variant:`outline`,size:`sm`,onClick:()=>d(E),onPointerDown:ro,className:`mr-auto h-8 gap-1.5`,children:[(0,$.jsx)(Z,{name:`add`,className:`size-4`}),m(`chat.textSelection.actions.addToChat`),(0,$.jsx)(Qt,{shortcut:`⌘+I`})]}):null,t[31]=E,t[32]=d,t[33]=m,t[34]=re):re=t[34];let V;t[35]===m?V=t[36]:(V=m(`inlineComment.actions.cancel`),t[35]=m,t[36]=V);let ie;t[37]!==a||t[38]!==V?(ie=(0,$.jsx)(X,{variant:`ghost`,size:`sm`,onClick:a,onPointerDown:no,onTouchStart:to,className:`h-8 text-muted-foreground hover:text-foreground`,children:V}),t[37]=a,t[38]=V,t[39]=ie):ie=t[39];let ae;t[40]===_?ae=t[41]:(ae=_.trim(),t[40]=_,t[41]=ae);let oe=!ae,H=h?.colors?.status?.success,U=h?.colors?.status?.successForeground,W;t[42]!==H||t[43]!==U?(W={backgroundColor:H,color:U},t[42]=H,t[43]=U,t[44]=W):W=t[44];let G;t[45]!==p||t[46]!==m?(G=m(p?`inlineComment.actions.save`:`inlineComment.actions.comment`),t[45]=p,t[46]=m,t[47]=G):G=t[47];let K;t[48]!==M||t[49]!==oe||t[50]!==W||t[51]!==G?(K=(0,$.jsx)(X,{size:`sm`,onClick:M,onPointerDown:eo,onTouchStart:$a,disabled:oe,className:`h-8 min-w-[80px]`,style:W,children:G}),t[48]=M,t[49]=oe,t[50]=W,t[51]=G,t[52]=K):K=t[52];let q;t[53]!==re||t[54]!==ie||t[55]!==K?(q=(0,$.jsxs)(`div`,{className:`flex items-center justify-end gap-2 mt-3`,children:[re,ie,K]}),t[53]=re,t[54]=ie,t[55]=K,t[56]=q):q=t[56];let J;t[57]!==R||t[58]!==ne||t[59]!==q?(J=(0,$.jsxs)(`div`,{className:`p-3`,children:[R,ne,q]}),t[57]=R,t[58]=ne,t[59]=q,t[60]=J):J=t[60];let se;return t[61]!==N||t[62]!==L||t[63]!==ee||t[64]!==te||t[65]!==J?(se=(0,$.jsx)(`div`,{className:N,style:L,"data-comment-input":`true`,onPointerDown:ee,onTouchStart:te,children:J}),t[61]=N,t[62]=L,t[63]=ee,t[64]=te,t[65]=J,t[66]=se):se=t[66],se}function $a(e){return e.stopPropagation()}function eo(e){return e.stopPropagation()}function to(e){return e.stopPropagation()}function no(e){return e.stopPropagation()}function ro(e){return e.stopPropagation()}function io(e){return e.stopPropagation()}function ao(e){return e.stopPropagation()}function oo(e){if(!e)return;let t=Math.min(e.start,e.end),n=Math.max(e.start,e.end);return{...e,start:t,end:n}}var so=e=>{let t=Math.min(e.startLine,e.endLine),n=Math.max(e.startLine,e.endLine);return{...e,startLine:t,endLine:n}},co=e=>{let t=Math.min(e.start,e.end),n=Math.max(e.start,e.end);return{...e,start:t,end:n}};function lo(e){let t=(0,di.c)(40),{t:n}=pe(),{source:r,fileLabel:i,language:a,getCodeForRange:o,toStoreRange:s,fromDraftRange:c}=e,l=Ze(go),u=Ze(ho),d=At(mo),f=At(po),p=At(fo),m=At(uo),[h,g]=Q.useState(null),[_,v]=Q.useState(``),[y,b]=Q.useState(null),x=l??(u?`draft`:null),S;bb0:{if(!x||!i){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=[],t[0]=e):e=t[0],S=e;break bb0}let e;t[1]!==m||t[2]!==x?(e=m[x]??[],t[1]=m,t[2]=x,t[3]=e):e=t[3];let n=e,a;if(t[4]!==i||t[5]!==n||t[6]!==r){let e;t[8]!==i||t[9]!==r?(e=e=>e.source===r&&e.fileLabel===i,t[8]=i,t[9]=r,t[10]=e):e=t[10],a=n.filter(e),t[4]=i,t[5]=n,t[6]=r,t[7]=a}else a=t[7];S=a}let C=S,w;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(w=()=>{g(null),v(``),b(null)},t[11]=w):w=t[11];let T=w,E;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(E=()=>{T()},t[12]=E):E=t[12];let D=E,O;t[13]===c?O=t[14]:(O=e=>{let t=co(c(e));g(t),v(e.text),b(e.id)},t[13]=c,t[14]=O);let k=O,A;t[15]!==y||t[16]!==p?(A=e=>{p(e.sessionKey,e.id),y===e.id&&T()},t[15]=y,t[16]=p,t[17]=A):A=t[17];let j=A,M;t[18]!==d||t[19]!==y||t[20]!==i||t[21]!==o||t[22]!==a||t[23]!==h||t[24]!==x||t[25]!==r||t[26]!==n||t[27]!==s||t[28]!==f?(M=(e,t)=>{let c=t??h,l=e.trim();if(!c||!l||!i)return;if(!x){Pe.error(n(`inlineComment.toast.selectSessionToSave`));return}let u=co(c),p=so(s(u)),m=o(u);y?f(x,y,{fileLabel:i,startLine:p.startLine,endLine:p.endLine,side:p.side,code:m,language:a,text:l}):d({sessionKey:x,source:r,fileLabel:i,startLine:p.startLine,endLine:p.endLine,side:p.side,code:m,language:a,text:l}),T()},t[18]=d,t[19]=y,t[20]=i,t[21]=o,t[22]=a,t[23]=h,t[24]=x,t[25]=r,t[26]=n,t[27]=s,t[28]=f,t[29]=M):M=t[29];let N=M,P;return t[30]!==_||t[31]!==j||t[32]!==C||t[33]!==y||t[34]!==c||t[35]!==N||t[36]!==h||t[37]!==x||t[38]!==k?(P={sessionKey:x,drafts:C,selection:h,setSelection:g,commentText:_,setCommentText:v,editingDraftId:y,setEditingDraftId:b,reset:T,cancel:D,startEdit:k,deleteDraft:j,saveComment:N,fromDraftRange:c},t[30]=_,t[31]=j,t[32]=C,t[33]=y,t[34]=c,t[35]=N,t[36]=h,t[37]=x,t[38]=k,t[39]=P):P=t[39],P}function uo(e){return e.drafts}function fo(e){return e.removeDraft}function po(e){return e.updateDraft}function mo(e){return e.addDraft}function ho(e){return e.newSessionDraft?.open}function go(e){return e.currentSessionId}function _o(e){let{drafts:t,editingDraftId:n,commentText:r,onTextChange:i,selection:a,isDragging:o,fileLabel:s,newWidgetId:c,mapDraftToRange:l,onSave:u,onCancel:d,onEdit:f,onDelete:p,onAddToChat:m}=e,h=[];for(let e of t){let t=l(e);if(e.id===n){h.push({afterLine:t.end,id:`edit-${e.id}`,content:(0,$.jsx)(Qa,{initialText:r,onTextChange:i,fileLabel:s,lineRange:t,isEditing:!0,onSave:u,onCancel:d,onAddToChat:m},`edit-${e.id}`)});continue}h.push({afterLine:t.end,id:`card-${e.id}`,content:(0,$.jsx)(Za,{draft:e,onEdit:()=>f(e),onDelete:()=>p(e)},`card-${e.id}`)})}if(a&&!n&&!o){let e={...a,start:Math.min(a.start,a.end),end:Math.max(a.start,a.end)};h.push({afterLine:e.end,id:c,content:(0,$.jsx)(Qa,{initialText:r,onTextChange:i,fileLabel:s,lineRange:e,isEditing:!1,onSave:u,onCancel:d,onAddToChat:m},c)})}return h}var vo=e=>{if(e.type===`new`){let t=Math.min(e.selection.start,e.selection.end),n=Math.max(e.selection.start,e.selection.end);return`new-comment-${e.selection.side??`additions`}-${t}-${n}`}return`draft-${e.draft.id}`},yo=e=>{let{drafts:t,editingDraftId:n,selection:r}=e,i=[];for(let e of t){if(!Number.isFinite(e.endLine))continue;let t=Math.max(1,Math.floor(e.endLine)),r=e.side===`original`?`deletions`:`additions`;i.push({lineNumber:t,side:r,metadata:{type:e.id===n?`edit`:`saved`,draft:e}})}return r&&!n&&i.push({lineNumber:Math.max(r.start,r.end),side:r.side??`additions`,metadata:{type:`new`,selection:r}}),i};function bo(e){let t=e.trim();if(!t)return null;if(/^-?\d+(\.\d+)?$/.test(t)){let e=Number.parseFloat(t);return Number.isFinite(e)?e:null}if(t.endsWith(`px`)){let e=Number.parseFloat(t.slice(0,-2));return Number.isFinite(e)?e:null}return null}function xo(e){if(!(!e||e<=0))return Math.max(200,Math.floor(e))}function So(e){let{diffRootRef:t,drafts:n,selection:r,editingDraftId:i,commentText:a,onTextChange:o,fileLabel:s,onSave:c,onCancel:l,onEdit:u,onDelete:d,onAddToChat:f}=e,[p,m]=Q.useState(0),[h,g]=Q.useState(null),_=Q.useMemo(()=>!r||i?null:vo({type:`new`,selection:r}),[i,r]),v=Q.useMemo(()=>{let e=n.map(e=>vo({type:e.id===i?`edit`:`saved`,draft:e}));return _&&e.push(_),e},[n,i,_]),y=Q.useCallback(e=>{let n=t.current;if(!n)return null;let r=n.querySelector(`diffs-container`);if(!(r instanceof HTMLElement))return null;let i=r.querySelector(`[data-annotation-id="${e}"]`);if(i instanceof HTMLElement)return i;let a=r.shadowRoot;return a?a.querySelector(`[data-annotation-id="${e}"]`):null},[t]);Q.useEffect(()=>{if(v.length===0)return;let e=!1,t=0,n=()=>{e||v.every(e=>!!y(e))||t>=12||(t+=1,requestAnimationFrame(()=>{e||(m(e=>e+1),n())}))};return n(),()=>{e=!0}},[v,y]),Q.useEffect(()=>{let e=t.current;if(!e)return;let n=()=>{let t=bo(getComputedStyle(e).getPropertyValue(`--oc-context-panel-width`)),n=e.getBoundingClientRect(),r=t??n.width;g(r>0?r:null)};n();let r=new ResizeObserver(()=>{n()});return r.observe(e),window.addEventListener(`resize`,n),()=>{r.disconnect(),window.removeEventListener(`resize`,n)}},[t]);let b=Q.useCallback(e=>{let n=t.current?.getBoundingClientRect(),r=e.closest(`[data-annotation-content]`),i=r instanceof HTMLElement?r.getBoundingClientRect():e.getBoundingClientRect(),a=[i.width];n&&a.push(n.right-i.left);let o=a.filter(e=>Number.isFinite(e)&&e>0);return o.length>0?xo(Math.min(...o)):xo(h)},[t,h]);return(0,$.jsxs)($.Fragment,{children:[n.map(e=>{let t=vo({type:e.id===i?`edit`:`saved`,draft:e}),n=y(t);if(!n)return null;let r=b(n);return e.id===i?(0,fi.createPortal)((0,$.jsx)(Qa,{initialText:a,onTextChange:o,fileLabel:s,lineRange:{start:e.startLine,end:e.endLine,side:e.side===`original`?`deletions`:`additions`},isEditing:!0,onSave:c,onCancel:l,onAddToChat:f,maxWidth:r}),n,`draft-edit-${e.id}`):(0,fi.createPortal)((0,$.jsx)(Za,{draft:e,onEdit:()=>u(e),onDelete:()=>d(e),maxWidth:r}),n,`draft-card-${e.id}`)}),r&&!i&&_&&(()=>{let e=y(_);if(!e)return null;let t=b(e);return(0,fi.createPortal)((0,$.jsx)(Qa,{initialText:a,onTextChange:o,fileLabel:s,lineRange:r,isEditing:!1,onSave:c,onCancel:l,onAddToChat:f,maxWidth:t}),e,_)})()]})}function Co(e){let t=(0,di.c)(16),{position:n,onAddToChat:r,onDismiss:i}=e,{t:a}=pe(),o=Q.useRef(null),s,c;t[0]===i?(s=t[1],c=t[2]):(s=()=>{if(!i)return;let e=e=>{o.current&&e.target instanceof Node&&o.current.contains(e.target)||i()};return window.addEventListener(`scroll`,e,{capture:!0,passive:!0}),()=>{window.removeEventListener(`scroll`,e,!0)}},c=[i],t[0]=i,t[1]=s,t[2]=c),Q.useEffect(s,c);let l;t[3]!==n.x||t[4]!==n.y?(l={left:n.x,top:n.y},t[3]=n.x,t[4]=n.y,t[5]=l):l=t[5];let u;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,$.jsx)(Z,{name:`add`,className:`size-4`}),t[6]=u):u=t[6];let d;t[7]===a?d=t[8]:(d=a(`chat.textSelection.actions.addToChat`),t[7]=a,t[8]=d);let f;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,$.jsx)(Qt,{shortcut:`⌘+I`}),t[9]=f):f=t[9];let p;t[10]!==r||t[11]!==d?(p=(0,$.jsxs)(X,{variant:`ghost`,size:`sm`,className:`h-7 gap-1.5 px-2`,onClick:r,children:[u,d,f]}),t[10]=r,t[11]=d,t[12]=p):p=t[12];let m;return t[13]!==l||t[14]!==p?(m=(0,fi.createPortal)((0,$.jsx)(`div`,{ref:o,"data-code-selection-action":`true`,className:`fixed z-[100] -translate-y-full rounded-lg border border-[var(--interactive-border)] bg-[var(--surface-elevated)] p-1 shadow-lg`,style:l,onPointerDown:wo,children:p}),document.body),t[13]=l,t[14]=p,t[15]=m):m=t[15],m}function wo(e){return e.preventDefault()}var To=`[data-code-selection-action]`;function Eo(e){return e instanceof Element&&!!e.closest(To)}function Do(e,t=[]){return Eo(e)?!0:t.some(e=>e instanceof Element&&e.matches(`[data-column-number]`))}function Oo(e,t){return e&&!!t?.trim()}function ko(e,t,n,r){let i=r.side===`deletions`,a=Math.min(r.start,r.end),o=Math.max(r.start,r.end);if(!n){let n=(i?e:t).split(`