@openchambery/web 1.19.13-beta.7 → 1.19.13-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AgentAvatar-Bk-m9q6w.js → AgentAvatar-m1jNq4bX.js} +1 -1
- package/dist/assets/{AssistantView-DhV6GhFz.js → AssistantView-CBDDjjMR.js} +1 -1
- package/dist/assets/{DiagramView-DZc-OYOG.js → DiagramView-vme4USA5.js} +1 -1
- package/dist/assets/{MarkdownRenderer-Ck0GdWsh.js → MarkdownRenderer-yZjjvjP5.js} +2 -2
- package/dist/assets/{MarkdownRendererImpl-DVQVI5vx.js → MarkdownRendererImpl-DQTrsoC7.js} +1 -1
- package/dist/assets/{MarkstreamRendererImpl-BfNDXMOp.js → MarkstreamRendererImpl-Cf4ufcLU.js} +1 -1
- package/dist/assets/{MobileDetailNavigation-DsDo9Wi_.js → MobileDetailNavigation-CWSZlARw.js} +1 -1
- package/dist/assets/{MobileShareBridge-71toeoY_.js → MobileShareBridge-RK-UX1Gp.js} +1 -1
- package/dist/assets/MobileSurface-CsSGKcXw.js +2 -0
- package/dist/assets/{MultiRunWindow-WmoZ6nx8.js → MultiRunWindow-IsGcpWbh.js} +1 -1
- package/dist/assets/{OnboardingScreen-Ql6mH4XV.js → OnboardingScreen-bIWeMLVx.js} +1 -1
- package/dist/assets/SettingsView-Dyz09wUL.js +25 -0
- package/dist/assets/{SettingsWindow-DC7meuIP.js → SettingsWindow-Bsk95ieL.js} +1 -1
- package/dist/assets/{TerminalView-D75fVyUc.js → TerminalView-DuAvbU4a.js} +1 -1
- package/dist/assets/{ToolOutputDialog-BkUqgPvz.js → ToolOutputDialog-DaWxdXgV.js} +1 -1
- package/dist/assets/{appThemeRegistry-BRuvElyv.js → appThemeRegistry-CoXLoSy2.js} +1 -1
- package/dist/assets/{clipboard-CzXos-TI.js → clipboard-GUUNlWIv.js} +1 -1
- package/dist/assets/{dialog-gtFLyacK.js → dialog-DhMGbF_B.js} +1 -1
- package/dist/assets/{es-BtC17YQH.js → es-BQb6I8gl.js} +1 -1
- package/dist/assets/{fileMentionTouchSelection-BHGsKCxs.js → fileMentionTouchSelection-Blwr6zeo.js} +1 -1
- package/dist/assets/{fr-DPohCCUO.js → fr-BjGouC_l.js} +1 -1
- package/dist/assets/{gitApi-CL2Myx_e.js → gitApi-ZsJLtXe_.js} +1 -1
- package/dist/assets/{insertionBoundaries-D7rBkplR.js → insertionBoundaries-DYao7L7I.js} +1 -1
- package/dist/assets/{ja-CflPxUNi.js → ja-Cw9zliYY.js} +1 -1
- package/dist/assets/{ko-CuSU80xd.js → ko-Dyz0Dk9b.js} +1 -1
- package/dist/assets/{main-DguaBQR-.js → main-J9ONSKnb.js} +21 -21
- package/dist/assets/{main-B4hVU-l2.js → main-xljv0NtB.js} +2 -2
- package/dist/assets/{miniChat-oSX3inOA.js → miniChat-4Z5Qw2CN.js} +2 -2
- package/dist/assets/{mobile-D4M85fxw.js → mobile-BgAbYJFM.js} +2 -2
- package/dist/assets/{multirun-DZJk1_Zk.js → multirun-DhMfc8JC.js} +1 -1
- package/dist/assets/{pl-eJvVbQ74.js → pl-C7EY-dTH.js} +1 -1
- package/dist/assets/{projectMeta-OucjgJJr.js → projectMeta-B69nzi1W.js} +1 -1
- package/dist/assets/{pt-BR-DSejAksY.js → pt-BR-B1uHpjFW.js} +1 -1
- package/dist/assets/{renderElectronMiniChatApp-CCVDhPaw.js → renderElectronMiniChatApp-VEK1cEbA.js} +2 -2
- package/dist/assets/{renderMobileApp-BrtjHPwj.js → renderMobileApp-CFlML1KZ.js} +7 -7
- package/dist/assets/{runtimeConfig-CPYy2HWF.js → runtimeConfig-CSZ8-5Ft.js} +1 -1
- package/dist/assets/{runtimeEndpointReset-OyMKgGCH.js → runtimeEndpointReset-JR1QnJ4F.js} +4 -4
- package/dist/assets/{sessionChangeSummary-DKJxz5er.js → sessionChangeSummary-BAzU2J1H.js} +1 -1
- package/dist/assets/{sessionLookup-Bzs-d6ek.js → sessionLookup-uPiPlYmx.js} +1 -1
- package/dist/assets/{sortable-tabs-strip-BSzFYDAO.js → sortable-tabs-strip-dYW6SH62.js} +1 -1
- package/dist/assets/{store-DHdMj3y4.js → store-ClnJdJSj.js} +2 -2
- package/dist/assets/{textarea-DE1UrdtK.js → textarea-B9CmN13Z.js} +1 -1
- package/dist/assets/{uk-DV9OgOAg.js → uk-DgG8v2md.js} +1 -1
- package/dist/assets/{useAppFontEffects-PwYVhdyQ.js → useAppFontEffects-TAUwcCLW.js} +43 -43
- package/dist/assets/useDesktopWindowControlsLayout-rfwTznN7.js +1 -0
- package/dist/assets/{useEffectiveDirectory-1LhqeRsH.js → useEffectiveDirectory-CIYv682Y.js} +1 -1
- package/dist/assets/{useMobileNavigationStore-CNpuVBEn.js → useMobileNavigationStore-Dj7oxHMY.js} +4 -4
- package/dist/assets/useSessionAutoCleanup-vgvGNZd1.js +2 -0
- package/dist/assets/{useWorkerHighlightedLines-z7yMKbSr.js → useWorkerHighlightedLines-skoDPLMx.js} +1 -1
- package/dist/assets/{zh-CN-92n_rGTt.js → zh-CN-C6OFKjeT.js} +1 -1
- package/dist/assets/{zh-TW-CwVxwJCj.js → zh-TW-BVP99aMr.js} +1 -1
- package/dist/index.html +2 -2
- package/dist/mini-chat.html +2 -2
- package/dist/mobile.html +2 -2
- package/package.json +1 -1
- package/dist/assets/MobileSurface-DQ7ckeN6.js +0 -2
- package/dist/assets/SettingsView-B8DTddcL.js +0 -25
- package/dist/assets/useDesktopWindowControlsLayout-DbVLYP--.js +0 -1
- package/dist/assets/useSessionAutoCleanup-hiDGV_VZ.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/assistant-attachment-cache-C0aRnFkj.js","assets/rolldown-runtime-C0FnF6B9.js","assets/runtime-auth-D66yq6ie.js","assets/runtime-switch-LvWDU-SL.js","assets/runtime-fetch-zIalUnbb.js","assets/relay-image-stream-DM7atqJs.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/dualLimitLru-D8Sphgua.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{i as t,l as n}from"./runtime-switch-LvWDU-SL.js";import{n as r}from"./runtime-fetch-zIalUnbb.js";import{Cn as i,Jt as a,Qt as o,Yt as s,d as c,tt as l,u}from"./persistence-DwRBC4zl.js";import{h as d}from"./desktopHosts-B052a4UK.js";import{i as f,n as p,r as m}from"./desktopRelayRestore-OjKNXr10.js";import{A as h,D as g,E as _,F as v,I as y,M as b,N as x,P as S,j as C,k as w,nt as ee,rt as T,tt as E}from"./vendor-base-ui-CnHfUmDN.js";import{Nt as D}from"./platform-DQ5_LNKO.js";import{t as O}from"./useUIStore-CxOoCv7B.js";import{o as k}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as A}from"./vendor-react-DLPElpoQ.js";import{n as j}from"./vendor-tanstack-query-core-BWz0ose6.js";import{i as te,r as ne,s as M}from"./vendor-tanstack-react-query-D7pys_c9.js";import{P as re,V as N,a as ie,f as P,l as ae}from"./vendor-codemirror-autocomplete-DHomsvW7.js";import{c as F,o as I,r as L}from"./vendor-codemirror-lang-angular-DShkBD6m.js";import{n as oe,r as R}from"./vendor-codemirror-lang-json-CYJRHck9.js";import{n as se}from"./vendor-codemirror-lang-markdown-WORgx6ZD.js";import{n as z}from"./vendor-codemirror-lang-python-Du6XQ8Zw.js";import{O as ce}from"./vendor-codemirror-legacy-modes-DuRAjNvB.js";import{n as le}from"./vendor-reactuses-core-BnW6GxJt.js";import{n as ue,r as B,t as de}from"./clipboard-GUUNlWIv.js";import{i as fe,t as pe}from"./store-ClnJdJSj.js";import{Ga as me,Qi as V,Ua as he,Xa as ge,Xi as _e,c as ve,cr as ye,dr as be,ea as xe,hr as Se,nr as Ce,uo as we}from"./useMobileNavigationStore-Dj7oxHMY.js";import{s as H,t as U}from"./utils-2ZK8yboQ.js";import{t as W}from"./AgentAvatar-m1jNq4bX.js";import{n as G}from"./Icon-D1BcR8Tz.js";import{t as Te}from"./button-9R-WgVMl.js";import{i as Ee,n as De,r as Oe,t as ke}from"./vendor-simplewebauthn-browser-Dwhcdg_5.js";import{B as Ae,C as je,D as Me,H as Ne,O as Pe,S as Fe,T as Ie,U as Le,V as Re,k as ze,w as Be}from"./projectMeta-B69nzi1W.js";import{t as Ve}from"./input-Cd_1HyQv.js";import{t as He}from"./useThemeSystem-DMzWVJaW.js";import{i as Ue}from"./OverlayScrollbar-Bahg_P3r.js";import{n as We,r as Ge,t as Ke}from"./dropdown-menu.styles-Bzo6L3FH.js";import{n as qe}from"./textarea-B9CmN13Z.js";import{t as Je}from"./vendor-codemirror-language-data-BfYFhIH1.js";var K=A(),Ye=[`desktopHostSwitch`],Xe=class extends Error{result;host;constructor(e,t){super(e.reason),this.name=`DesktopHostSwitchError`,this.result=e,this.host=t}},Ze=(e,t)=>pe(fe.getState().dictionary,e,t),Qe=async e=>{let{host:t}=e;if(t.id===`local`){let r=(e.localApiOrigin||``).trim();if(!r)throw new Xe({ok:!1,status:{status:`unreachable`,latencyMs:0},reason:`unreachable`},t);return n({apiBaseUrl:r,clientToken:e.localClientToken||null,runtimeKey:m(t)}),{ok:!0,via:`direct`,status:{status:`ok`,latencyMs:0}}}let r=await f(t,{cachedProbe:e.cachedProbe});if(!r.ok)throw new Xe(r,t);return r},$e=null,et=()=>$e||($e=new j(u,{mutationKey:Ye,mutationFn:Qe,onError:(e,t)=>{if(e instanceof Xe&&e.result.reason!==`unsupported`){if(e.result.status.status===`auth`){Se.error(Ze(`desktopHostSwitcher.status.authRequired`));return}Se.error(Ze(`desktopHostSwitcher.toast.instanceUnreachable`,{host:d(t.host.label)}))}}}),$e.subscribe(()=>void 0),$e),tt=async e=>{if(p(e.host))return{ok:!0,via:`direct`,status:e.cachedProbe?.status===`ok`?e.cachedProbe:{status:`ok`,latencyMs:0}};if(u.isMutating({mutationKey:Ye})>0)return{ok:!1,status:{status:`unreachable`,latencyMs:0},reason:`unsupported`};try{return await et().mutate(e)}catch(e){if(e instanceof Xe)return e.result;throw e}},nt=()=>{let e=(0,K.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={mutationKey:Ye},e[0]=t):t=e[0],ne(t)>0},rt=()=>{let e=(0,K.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={filters:{mutationKey:Ye,status:`pending`},select:it},e[0]=t):t=e[0],te(t)[0]?.host.id??null};function it(e){return e.state.variables}var q=e=>typeof e==`object`&&!!e,J=(e,t)=>{let n=e[t];return typeof n==`string`?n:null},Y=(e,t)=>{let n=e[t];return typeof n==`number`&&Number.isFinite(n)?n:null},X=(e,t)=>{let n=e[t];return typeof n==`boolean`?n:null},at=e=>Array.isArray(e)?e.filter(e=>typeof e==`string`):[],ot=()=>a()?(e,t)=>s(e,t):null,st=e=>{if(!q(e))return;let t=X(e,`enabled`)??!1,n=J(e,`store`)?.toLowerCase()===`settings`?`settings`:`never`,r=J(e,`value`);return{enabled:t,store:n,...r?{value:r}:{}}},ct=e=>e===`remote`||e===`dynamic`?e:`local`,lt=e=>{if(!q(e))return null;let t=J(e,`id`);if(!t)return null;let n=X(e,`enabled`)??!0,r=ct(J(e,`type`)),i=J(e,`localHost`)||J(e,`local_host`)||void 0,a=Y(e,`localPort`)??Y(e,`local_port`)??void 0,o=J(e,`remoteHost`)||J(e,`remote_host`)||void 0,s=Y(e,`remotePort`)??Y(e,`remote_port`)??void 0;return{id:t,enabled:n,type:r,...i?{localHost:i}:{},...typeof a==`number`?{localPort:a}:{},...o?{remoteHost:o}:{},...typeof s==`number`?{remotePort:s}:{}}},ut=e=>{if(!q(e))return null;let t=J(e,`id`),n=J(e,`sshCommand`)||J(e,`ssh_command`);if(!t||!n)return null;let r=J(e,`nickname`),i=e.sshParsed,a=q(i)?{destination:J(i,`destination`)||``,args:at(i.args)}:void 0,o=q(e.remoteOpenchamber)?e.remoteOpenchamber:q(e.remote_openchamber)?e.remote_openchamber:{},s=q(e.localForward)?e.localForward:q(e.local_forward)?e.local_forward:{},c=q(e.auth)?e.auth:{},l=J(o,`mode`)?.toLowerCase()===`external`?`external`:`managed`,u=J(o,`installMethod`)||J(o,`install_method`),d=u===`npm`||u===`download_release`||u===`upload_bundle`?u:`bun`,f=J(s,`bindHost`)||J(s,`bind_host`)||`127.0.0.1`,p=f===`localhost`||f===`0.0.0.0`?f:`127.0.0.1`,m=(Array.isArray(e.portForwards)?e.portForwards:Array.isArray(e.port_forwards)?e.port_forwards:[]).map(e=>lt(e)).filter(e=>!!e),h=Y(o,`preferredPort`)??Y(o,`preferred_port`),g=Y(s,`preferredLocalPort`)??Y(s,`preferred_local_port`),_=st(c.sshPassword||c.ssh_password),v=st(c.openchamberPassword||c.openchamber_password);return{id:t,...r?{nickname:r}:{},sshCommand:n,...a&&a.destination?{sshParsed:a}:{},connectionTimeoutSec:Y(e,`connectionTimeoutSec`)??Y(e,`connection_timeout_sec`)??60,remoteOpenchamber:{mode:l,keepRunning:X(o,`keepRunning`)??X(o,`keep_running`)??!0,relayHost:X(o,`relayHost`)??X(o,`relay_host`)??!0,...h?{preferredPort:h}:{},installMethod:d,uploadBundleOverSsh:X(o,`uploadBundleOverSsh`)??X(o,`upload_bundle_over_ssh`)??!1},localForward:{...g?{preferredLocalPort:g}:{},bindHost:p},auth:{..._?{sshPassword:_}:{},...v?{openchamberPassword:v}:{}},portForwards:m}},dt=e=>{switch(e){case`config_resolved`:case`auth_check`:case`master_connecting`:case`remote_probe`:case`installing`:case`updating`:case`server_detecting`:case`server_starting`:case`forwarding`:case`ready`:case`degraded`:case`error`:return e;default:return`idle`}},ft=e=>{if(!q(e))return null;let t=J(e,`id`);return t?{id:t,phase:dt(J(e,`phase`)),...J(e,`detail`)?{detail:J(e,`detail`)||void 0}:{},...J(e,`localUrl`)||J(e,`local_url`)?{localUrl:J(e,`localUrl`)||J(e,`local_url`)||void 0}:{},...typeof(Y(e,`localPort`)??Y(e,`local_port`))==`number`?{localPort:Y(e,`localPort`)??Y(e,`local_port`)??void 0}:{},...typeof(Y(e,`remotePort`)??Y(e,`remote_port`))==`number`?{remotePort:Y(e,`remotePort`)??Y(e,`remote_port`)??void 0}:{},startedByUs:X(e,`startedByUs`)??X(e,`started_by_us`)??!1,retryAttempt:Y(e,`retryAttempt`)??Y(e,`retry_attempt`)??0,requiresUserAction:X(e,`requiresUserAction`)??X(e,`requires_user_action`)??!1,...J(e,`errorCode`)||J(e,`error_code`)?{errorCode:J(e,`errorCode`)||J(e,`error_code`)||void 0}:{},updatedAtMs:Y(e,`updatedAtMs`)??Y(e,`updated_at_ms`)??Date.now()}:null},pt=e=>{if(!q(e))return null;let t=J(e,`host`),n=J(e,`source`),r=J(e,`sshCommand`)||J(e,`ssh_command`);return!t||!n||!r?null:{host:t,source:n,sshCommand:r,pattern:X(e,`pattern`)??!1}},mt=(e,t)=>({id:e,sshCommand:t,connectionTimeoutSec:60,remoteOpenchamber:{mode:`managed`,keepRunning:!0,relayHost:!0,installMethod:`bun`,uploadBundleOverSsh:!1},localForward:{bindHost:`127.0.0.1`},auth:{},portForwards:[]}),ht=async()=>{let e=ot();if(!e)return{instances:[]};let t=await e(`desktop_ssh_instances_get`);return q(t)?{instances:(Array.isArray(t.instances)?t.instances:Array.isArray(t.desktopSshInstances)?t.desktopSshInstances:[]).map(e=>ut(e)).filter(e=>!!e)}:{instances:[]}},gt=async e=>{let t=ot();t&&await t(`desktop_ssh_instances_set`,{config:{instances:e.instances}})},_t=async()=>{let e=ot();if(!e)return[];let t=await e(`desktop_ssh_import_hosts`);return Array.isArray(t)?t.map(e=>pt(e)).filter(e=>!!e):[]},vt=async e=>{let t=ot();t&&await t(`desktop_ssh_connect`,{id:e})},yt=async e=>{let t=ot();t&&await t(`desktop_ssh_disconnect`,{id:e})},bt=async e=>{let t=ot();if(!t)return[];let n=await t(`desktop_ssh_status`,{...e?{id:e}:{}});return Array.isArray(n)?n.map(e=>ft(e)).filter(e=>!!e):[]},xt=async(e,t)=>{let n=ot();if(!n)return[];let r=await n(`desktop_ssh_logs`,{id:e,...typeof t==`number`?{limit:t}:{}});return Array.isArray(r)?r.filter(e=>typeof e==`string`):[]},St=async e=>{let t=ot();t&&await t(`desktop_ssh_logs_clear`,{id:e})},Ct=(e,t)=>{let n=Math.max(0,Math.trunc(Number(e.fileGroups)||0)),r=Math.max(0,Math.trunc(Number(e.singleFiles)||0)),i=Math.max(0,Math.trunc(Number(e.directories)||0));return{fileGroups:Array.from({length:n},()=>!0),singleFiles:Array.from({length:r},()=>!0),directories:Array.from({length:i},()=>!0),agentsRoot:!0,authFile:t?.includeAuthFile===!0}},wt=e=>{if(!q(e))return null;let t=J(e,`path`),n=Y(e,`bytes`);return!t||n===null?null:{path:t,bytes:n}},Tt=e=>{if(!q(e))return null;let t=J(e,`path`),n=Y(e,`fileCount`)??Y(e,`file_count`),r=Y(e,`bytes`);return!t||n===null||r===null?null:{path:t,fileCount:n,bytes:r}},Et=e=>{if(e==null||!q(e))return null;let t=Y(e,`fileCount`)??Y(e,`file_count`),n=Y(e,`bytes`);return t===null||n===null?null:{fileCount:t,bytes:n}},Dt=e=>{if(e==null||!q(e))return null;let t=Y(e,`bytes`);return t===null?null:{bytes:t}},Ot=e=>{if(!q(e))return null;let t=Array.isArray(e.files)?e.files:null,n=Array.isArray(e.directories)?e.directories:null,r=at(e.deletes),i=Y(e,`totalBytes`)??Y(e,`total_bytes`);if(!t||!n||i===null||!(`agentsRoot`in e)&&!(`agents_root`in e))return null;let a=t.map(e=>wt(e)).filter(e=>!!e),o=n.map(e=>Tt(e)).filter(e=>!!e);if(a.length!==t.length||o.length!==n.length)return null;let s=e.agentsRoot??e.agents_root,c=s==null?null:Et(s);if(s!=null&&c===null)return null;let l=e.authFile??e.auth_file,u=l==null?null:Dt(l),d=e.direction===`pull`||e.direction===`push`?e.direction:void 0,f=e.selections,p=q(f)?{fileGroups:Array.isArray(f.fileGroups)?f.fileGroups.map(e=>e!==!1):[],singleFiles:Array.isArray(f.singleFiles)?f.singleFiles.map(e=>e!==!1):[],directories:Array.isArray(f.directories)?f.directories.map(e=>e!==!1):[],agentsRoot:f.agentsRoot!==!1,authFile:f.authFile===!0}:void 0,m=kt(e.selectionShape??e.selection_shape);return{files:a,directories:o,agentsRoot:c,authFile:u,deletes:r,totalBytes:i,...d?{direction:d}:{},...p?{selections:p}:{},...m?{selectionShape:m}:{}}},kt=e=>{if(!q(e))return null;let t=Y(e,`fileGroups`)??Y(e,`file_groups`),n=Y(e,`singleFiles`)??Y(e,`single_files`),r=Y(e,`directories`);return t===null||n===null||r===null||t<0||n<0||r<0?null:{fileGroups:t,singleFiles:n,directories:r}},At=e=>{if(!q(e))return null;let t=Ot(e.plan);if(!t)return null;let n=kt(e.selectionShape??e.selection_shape)??t.selectionShape??null;return{plan:t,remoteExisting:at(e.remoteExisting??e.remote_existing),remoteAgentsRootExists:X(e,`remoteAgentsRootExists`)??X(e,`remote_agents_root_exists`)??!1,remoteAuthFileExists:X(e,`remoteAuthFileExists`)??X(e,`remote_auth_file_exists`)??!1,...n?{selectionShape:n}:{}}},jt=e=>{if(!q(e)||X(e,`ok`)!==!0)return null;let t=Y(e,`files`),n=Y(e,`directories`),r=Y(e,`deletes`),i=Y(e,`totalBytes`)??Y(e,`total_bytes`);if(t===null||n===null||r===null||i===null||!(`agentsRoot`in e)&&!(`agents_root`in e))return null;let a=e.agentsRoot??e.agents_root,o=null;if(a!=null){if(!q(a))return null;let e=Y(a,`fileCount`)??Y(a,`file_count`);if(e===null)return null;o={fileCount:e}}let s=e.authFile??e.auth_file,c=s==null?null:Dt(s);return{ok:!0,files:t,directories:n,deletes:r,totalBytes:i,agentsRoot:o,authFile:c}},Mt=async(e={})=>{let t=ot();if(!t)return console.error(`[desktopSsh] config sync local scan skipped: desktop IPC bridge is unavailable in this window`),null;let n=await t(`desktop_ssh_sync_opencode_config`,{stage:`local`,...e.direction?{direction:e.direction}:{},...e.selections?{selections:e.selections}:{}});if(!q(n))return console.error(`[desktopSsh] config sync local scan returned a non-object payload`,n),null;let r=Ot(n.plan);if(!r)return console.error(`[desktopSsh] config sync local scan plan payload was not recognized`,n),null;let i=kt(n.selectionShape??n.selection_shape)??r.selectionShape??null;return i?{...r,selectionShape:i}:r},Nt=async(e,t={})=>{let n=ot();if(!n)return console.error(`[desktopSsh] config sync preview skipped: desktop IPC bridge is unavailable in this window`),null;let r=await n(`desktop_ssh_sync_opencode_config`,{id:e,...t.targetKind?{targetKind:t.targetKind}:{},...t.direction?{direction:t.direction}:{},...t.selections?{selections:t.selections}:{}}),i=At(r);return i||console.error(`[desktopSsh] config sync preview payload was not recognized`,r),i},Pt=async(e,t={})=>{let n=ot();if(!n)return console.error(`[desktopSsh] config sync apply skipped: desktop IPC bridge is unavailable in this window`),null;let r=await n(`desktop_ssh_sync_opencode_config`,{id:e,apply:!0,...t.targetKind?{targetKind:t.targetKind}:{},...t.direction?{direction:t.direction}:{},...t.selections?{selections:t.selections}:{}}),i=jt(r);return i||console.error(`[desktopSsh] config sync apply payload was not recognized`,r),i},Ft=async(e,t={})=>{let n=ot();if(!n)return[];let r=await n(`desktop_ssh_sync_runs_list`,{id:e,...t.targetKind?{targetKind:t.targetKind}:{}});return Array.isArray(r)?r.filter(e=>q(e)&&typeof e.syncRunId==`string`&&typeof e.targetId==`string`):[]},It=async e=>{if(!a())return async()=>{};let t=window.__OPENCHAMBER_DESKTOP__?.listen;if(typeof t!=`function`)return async()=>{};let n=await t(`openchamber:ssh-instance-status`,t=>{let n=ft(t?.payload);n&&e(n)});return async()=>{await n()}},Lt=new Set([`nodeRuntimeMissing`,`packageManagerMissing`,`nativeBinding`,`openchamberCliMissing`,`openchamberRegistry`,`openchamberInstall`,`openchamberCliIncompatible`,`opencodeInstall`,`serverStart`,`sshAuth`,`sshUnreachable`,`timeout`,`unknown`]),Rt=e=>typeof e==`string`&&Lt.has(e),zt=e=>{let t=String(e||``);return/requires Node\.js \d+|no supported Node runtime/i.test(t)?`nodeRuntimeMissing`:/neither bun nor npm/i.test(t)?`packageManagerMissing`:/better-sqlite3|node_gyp_bins|gyp ERR|failed to prepare better-sqlite3/i.test(t)?`nativeBinding`:/OpenChamber installation completed but the executable is unavailable/i.test(t)?`openchamberCliMissing`:/could not reach the npm registry|ENOTFOUND|ECONNREFUSED|ETIMEDOUT|EAI_AGAIN|CERT_HAS_EXPIRED|UNABLE_TO_GET_ISSUER_CERT|self-signed certificate|registry\.npmjs|npm error code E404|npm ERR! code E404|getaddrinfo/i.test(t)?`openchamberRegistry`:/Failed to install OpenChamber/i.test(t)?`openchamberInstall`:/Unknown option:\s*--relay-host|does not advertise --relay-host|does not support --relay-host/i.test(t)||/Unknown option:/i.test(t)?`openchamberCliIncompatible`:/Failed to install OpenCode|OpenCode CLI/i.test(t)?`opencodeInstall`:/failed to become reachable|Managed OpenChamber server failed/i.test(t)?`serverStart`:/Permission denied|Authentication failed|publickey|keyboard-interactive/i.test(t)?`sshAuth`:/Could not resolve hostname|Connection refused|Connection timed out|ControlMaster connection timed out|SSH master process exited|Network is unreachable/i.test(t)?`sshUnreachable`:/Timed out waiting for SSH|Timed out waiting for forwarded/i.test(t)?`timeout`:`unknown`},Bt=(e,t)=>Rt(e)?e:zt(t),Vt=e=>{switch(e){case`nodeRuntimeMissing`:return`desktopHostSwitcher.sshError.nodeRuntimeMissing.title`;case`packageManagerMissing`:return`desktopHostSwitcher.sshError.packageManagerMissing.title`;case`nativeBinding`:return`desktopHostSwitcher.sshError.nativeBinding.title`;case`openchamberCliMissing`:return`desktopHostSwitcher.sshError.openchamberCliMissing.title`;case`openchamberRegistry`:return`desktopHostSwitcher.sshError.openchamberRegistry.title`;case`openchamberInstall`:return`desktopHostSwitcher.sshError.openchamberInstall.title`;case`openchamberCliIncompatible`:return`desktopHostSwitcher.sshError.openchamberCliIncompatible.title`;case`opencodeInstall`:return`desktopHostSwitcher.sshError.opencodeInstall.title`;case`serverStart`:return`desktopHostSwitcher.sshError.serverStart.title`;case`sshAuth`:return`desktopHostSwitcher.sshError.sshAuth.title`;case`sshUnreachable`:return`desktopHostSwitcher.sshError.sshUnreachable.title`;case`timeout`:return`desktopHostSwitcher.sshError.timeout.title`;default:return`desktopHostSwitcher.sshError.unknown.title`}},Ht=e=>{switch(e){case`nodeRuntimeMissing`:return`desktopHostSwitcher.sshError.nodeRuntimeMissing.guidance`;case`packageManagerMissing`:return`desktopHostSwitcher.sshError.packageManagerMissing.guidance`;case`nativeBinding`:return`desktopHostSwitcher.sshError.nativeBinding.guidance`;case`openchamberCliMissing`:return`desktopHostSwitcher.sshError.openchamberCliMissing.guidance`;case`openchamberRegistry`:return`desktopHostSwitcher.sshError.openchamberRegistry.guidance`;case`openchamberInstall`:return`desktopHostSwitcher.sshError.openchamberInstall.guidance`;case`openchamberCliIncompatible`:return`desktopHostSwitcher.sshError.openchamberCliIncompatible.guidance`;case`opencodeInstall`:return`desktopHostSwitcher.sshError.opencodeInstall.guidance`;case`serverStart`:return`desktopHostSwitcher.sshError.serverStart.guidance`;case`sshAuth`:return`desktopHostSwitcher.sshError.sshAuth.guidance`;case`sshUnreachable`:return`desktopHostSwitcher.sshError.sshUnreachable.guidance`;case`timeout`:return`desktopHostSwitcher.sshError.timeout.guidance`;default:return`desktopHostSwitcher.sshError.unknown.guidance`}},Ut=e=>e===`unknown`||e===`openchamberCliIncompatible`,Wt=(e,t,n)=>{let r=typeof n==`string`?n.trim():``;return!Ut(t)||!r||r===e?e:`${e}\n${r}`},Z=ee();function Gt(e){let t=(0,K.c)(27),{errorCode:n,detail:r,className:i}=e,{t:a}=ue(),o,s,c,l,u,d;if(t[0]!==i||t[1]!==r||t[2]!==n||t[3]!==a){let e=Bt(n,r);o=a(Ht(e));let f;t[10]===r?f=t[11]:(f=typeof r==`string`?r.trim():``,t[10]=r,t[11]=f),s=f,c=Ut(e)&&!!s&&s!==o,t[12]===i?d=t[13]:(d=U(`space-y-1`,i),t[12]=i,t[13]=d),l=`typography-ui-label text-[var(--status-error)]`,u=a(Vt(e)),t[0]=i,t[1]=r,t[2]=n,t[3]=a,t[4]=o,t[5]=s,t[6]=c,t[7]=l,t[8]=u,t[9]=d}else o=t[4],s=t[5],c=t[6],l=t[7],u=t[8],d=t[9];let f;t[14]!==l||t[15]!==u?(f=(0,Z.jsx)(`p`,{className:l,children:u}),t[14]=l,t[15]=u,t[16]=f):f=t[16];let p;t[17]===o?p=t[18]:(p=(0,Z.jsx)(`p`,{className:`typography-meta text-muted-foreground`,children:o}),t[17]=o,t[18]=p);let m;t[19]!==s||t[20]!==c?(m=c?(0,Z.jsx)(`p`,{className:`typography-meta break-words text-muted-foreground`,children:s}):null,t[19]=s,t[20]=c,t[21]=m):m=t[21];let h;return t[22]!==d||t[23]!==f||t[24]!==p||t[25]!==m?(h=(0,Z.jsxs)(`div`,{className:d,children:[f,p,m]}),t[22]=d,t[23]=f,t[24]=p,t[25]=m,t[26]=h):h=t[26],h}var Q=e(T(),1),Kt=[.2,.45,.15,.55,.35,.1,.5,.25,.4,.3,.45,.15,.55,.2,.35,.1],qt=[.3,.15,.45,.25,.5,.35,.1,.4,.2,.55,.3,.15,.45,.25,.4,.2],Jt=(e,t,n,r,i=4)=>{let a=[];for(let o=0;o<i;o++)for(let s=0;s<i;s++){let c=s/i,l=(s+1)/i,u=o/i,d=(o+1)/i,f=(e,t,n)=>e+(t-e)*n,p=(e,t,n,r,i,a)=>{let o=f(e,t,i),s=f(r,n,i);return f(o,s,a)},m={x:p(e.x,t.x,n.x,r.x,c,u),y:p(e.y,t.y,n.y,r.y,c,u)},h={x:p(e.x,t.x,n.x,r.x,l,u),y:p(e.y,t.y,n.y,r.y,l,u)},g={x:p(e.x,t.x,n.x,r.x,l,d),y:p(e.y,t.y,n.y,r.y,l,d)},_={x:p(e.x,t.x,n.x,r.x,c,d),y:p(e.y,t.y,n.y,r.y,c,d)};a.push({path:`M${m.x} ${m.y} L${h.x} ${h.y} L${g.x} ${g.y} L${_.x} ${_.y} Z`,row:o,col:s})}return a},Yt=({className:e=``,width:t=70,height:n=70,isAnimated:r=!1})=>{let{t:i}=ue(),a=He(),o=!0;a?o=a.currentTheme.metadata.variant!==`light`:typeof window<`u`&&(o=window.matchMedia(`(prefers-color-scheme: dark)`).matches);let s=(0,Q.useMemo)(()=>{if(a)return a.currentTheme.colors.surface.foreground;if(typeof window<`u`){let e=getComputedStyle(document.documentElement).getPropertyValue(`--splash-stroke`).trim();if(e)return e}return o?`white`:`black`},[a,o]),c=(0,Q.useMemo)(()=>typeof window>`u`||typeof CSS>`u`||typeof CSS.supports!=`function`?!1:CSS.supports(`color`,`color-mix(in srgb, white 50%, transparent)`),[]),l=(0,Q.useMemo)(()=>{if(a)return c?`color-mix(in srgb, ${s} 15%, transparent)`:o?`rgba(255,255,255,0.15)`:`rgba(0,0,0,0.15)`;if(typeof window<`u`){let e=getComputedStyle(document.documentElement).getPropertyValue(`--splash-face-fill`).trim();if(e)return e}return o?`rgba(255,255,255,0.15)`:`rgba(0,0,0,0.15)`},[a,c,s,o]),u=(0,Q.useMemo)(()=>{if(a)return c?`color-mix(in srgb, ${s} 35%, transparent)`:o?`rgba(255,255,255,0.35)`:`rgba(0,0,0,0.4)`;if(typeof window<`u`){let e=getComputedStyle(document.documentElement).getPropertyValue(`--splash-cell-fill`).trim();if(e)return e}return o?`rgba(255,255,255,0.35)`:`rgba(0,0,0,0.4)`},[a,c,s,o]),d=s,f=.866,p=.5,m={x:50,y:2},h={x:50-48*f,y:50-48*p},g={x:91.568,y:50-48*p},_={x:50,y:50},v={x:50-48*f,y:74},y={x:91.568,y:74},b={x:50,y:98},x=`matrix(0.866, 0.5, -0.866, 0.5, 50, ${(m.y+h.y+_.y+g.y)/4})`,S=Jt(h,_,b,v),C=Jt(_,g,y,b);return(0,Z.jsxs)(`svg`,{width:t,height:n,viewBox:`0 0 100 100`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,className:e,role:`img`,"aria-label":i(`openChamberLogo.aria.logo`),children:[r?(0,Z.jsx)(`style`,{children:`@keyframes oc-logo-glow{0%,100%{filter:drop-shadow(0 0 0 transparent)}50%{filter:drop-shadow(0 0 4px var(--oc-glow-color))}}.oc-logo-glow{animation:oc-logo-glow 1.8s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.oc-logo-glow{animation:none}}`}):null,(0,Z.jsx)(`path`,{d:`M${_.x} ${_.y} L${h.x} ${h.y} L${v.x} ${v.y} L${b.x} ${b.y} Z`,fill:l,stroke:s,strokeWidth:`2`,strokeLinejoin:`round`}),S.map((e,t)=>(0,Z.jsx)(`path`,{d:e.path,fill:u,opacity:Kt[e.row*4+(3-e.col)]??.35},`left-${t}`)),(0,Z.jsx)(`path`,{d:`M${_.x} ${_.y} L${g.x} ${g.y} L${y.x} ${y.y} L${b.x} ${b.y} Z`,fill:l,stroke:s,strokeWidth:`2`,strokeLinejoin:`round`}),C.map((e,t)=>(0,Z.jsx)(`path`,{d:e.path,fill:u,opacity:qt[e.row*4+e.col]??.35},`right-${t}`)),(0,Z.jsx)(`path`,{d:`M${m.x} ${m.y} L${h.x} ${h.y} L${_.x} ${_.y} L${g.x} ${g.y} Z`,fill:`none`,stroke:s,strokeWidth:`2`,strokeLinejoin:`round`}),(0,Z.jsx)(`g`,{opacity:1,className:r?`oc-logo-glow`:void 0,style:r?{"--oc-glow-color":s}:void 0,children:(0,Z.jsxs)(`g`,{transform:`${x} scale(0.75)`,children:[(0,Z.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M-16 -20 L16 -20 L16 20 L-16 20 Z M-8 -12 L-8 12 L8 12 L8 -12 Z`,fill:d}),(0,Z.jsx)(`path`,{d:`M-8 -4 L8 -4 L8 12 L-8 12 Z`,fill:d,fillOpacity:`0.4`})]})})]})},Xt=`/auth/passkey/authenticate/options`,Zt=`/auth/passkey/authenticate/verify`,Qt=`/auth/passkey/register/options`,$t=`/auth/passkey/register/verify`,en=`/api/passkeys`,tn=`/auth/passkey/status`,nn=`/api/auth/reset`,rn={enabled:!1,hasPasskeys:!1,passkeyCount:0,rpID:null},an=async(e,t)=>r(e,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:t===void 0?void 0:JSON.stringify(t)}),on=async(e,t)=>{try{let t=await e.json();if(t&&typeof t.error==`string`&&t.error.trim())return t.error}catch{}return t},sn=e=>e instanceof Ee&&e.code===`ERROR_CEREMONY_ABORTED`,cn=()=>{Oe.cancelCeremony()},ln=()=>typeof window>`u`?{supported:!1,reason:`Passkeys are unavailable outside the browser.`}:window.isSecureContext?{supported:!0,reason:``}:{supported:!1,reason:`Passkeys require HTTPS or localhost.`},un=async()=>{let e=ln();if(!e.supported)throw Error(e.reason);let t=await an(Qt,{label:typeof navigator.userAgent==`string`&&navigator.userAgent.trim()?navigator.userAgent:`This device`});if(!t.ok)throw Error(await on(t,`Could not start passkey setup.`));let{requestId:n,optionsJSON:r}=await t.json(),i=await an($t,{requestId:n,response:await De({optionsJSON:r})});if(!i.ok)throw Error(await on(i,`Could not finish passkey setup.`));return i.json().catch(()=>null)},dn=async(e,t={})=>{let n=ln();if(!n.supported)throw Error(n.reason);let r=await an(Xt);if(!r.ok)throw Error(await on(r,`Passkey sign-in is not available right now.`));let{requestId:i,optionsJSON:a}=await r.json(),o=await an(Zt,{requestId:i,response:await ke({optionsJSON:a}),trustDevice:e,issueClientToken:t.issueClientToken===!0,clientLabel:t.clientLabel,clientKind:t.clientKind,dedupeKey:t.dedupeKey});if(!o.ok)throw Error(await on(o,`Passkey sign-in failed.`));return o.json().catch(()=>null)},fn=async()=>{let e=await r(tn,{method:`GET`,credentials:`include`,headers:{Accept:`application/json`}});if(!e.ok)return rn;let t=await e.json().catch(()=>null);return{enabled:t?.enabled===!0,hasPasskeys:t?.hasPasskeys===!0,passkeyCount:typeof t?.passkeyCount==`number`?t.passkeyCount:0,rpID:typeof t?.rpID==`string`&&t.rpID?t.rpID:null}},pn=async()=>{let e=await r(en,{method:`GET`,credentials:`include`,headers:{Accept:`application/json`}});if(!e.ok)throw Error(await on(e,`Could not load passkeys.`));let t=await e.json().catch(()=>null);return Array.isArray(t?.passkeys)?t.passkeys:[]},mn=async e=>{let t=await r(`${en}/${encodeURIComponent(e)}`,{method:`DELETE`,credentials:`include`,headers:{Accept:`application/json`}});if(!t.ok)throw Error(await on(t,`Could not remove passkey.`));return t.json().catch(()=>null)},hn=async()=>{let e=await an(nn);if(!e.ok)throw Error(await on(e,`Could not clear saved authentication.`));try{let{clearAssistantAttachmentCacheAll:e}=await k(async()=>{let{clearAssistantAttachmentCacheAll:e}=await import(`./assistant-attachment-cache-C0aRnFkj.js`).then(e=>e.t);return{clearAssistantAttachmentCacheAll:e}},__vite__mapDeps([0,1,2,3,4,5,6,7])),{invalidateRuntimeAuthSession:t}=await k(async()=>{let{invalidateRuntimeAuthSession:e}=await import(`./runtime-auth-D66yq6ie.js`).then(e=>e.m);return{invalidateRuntimeAuthSession:e}},__vite__mapDeps([2,1]));await e(`auth-reset`),t()}catch{}return e.json().catch(()=>null)};function gn(e){let t=(0,K.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=U(`bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-none`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,Z.jsx)(`div`,{"data-slot":`card`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function _n(e){let t=(0,K.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=U(`@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,Z.jsx)(`div`,{"data-slot":`card-header`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function vn(e){let t=(0,K.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=U(`leading-none font-semibold`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,Z.jsx)(`div`,{"data-slot":`card-title`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function yn(e){let t=(0,K.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=U(`px-6`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,Z.jsx)(`div`,{"data-slot":`card-content`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}var bn=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,copied:!1}),console.error(`Error caught by boundary:`,e,t)}handleReset=()=>{this.setState({hasError:!1,error:void 0,errorInfo:void 0})};handleCopy=async()=>{let{strings:e}=this.props,t=`${this.state.error?String(this.state.error):e.unknownError}${this.state.error?.stack?`\n\nStack:\n${this.state.error.stack}`:``}${this.state.errorInfo?.componentStack?`\n\n${e.componentStackLabel}${this.state.errorInfo.componentStack}`:``}`;(await de(t)).ok&&(this.setState({copied:!0}),window.setTimeout(()=>{this.setState(e=>e.copied?{copied:!1}:null)},1500))};render(){let{strings:e}=this.props;return this.state.hasError?this.props.fallback?this.props.fallback:(0,Z.jsx)(`div`,{className:`p-4 flex items-center justify-center min-h-screen`,children:(0,Z.jsxs)(gn,{className:`w-full max-w-md`,children:[(0,Z.jsx)(_n,{className:`text-center`,children:(0,Z.jsxs)(vn,{className:`flex items-center justify-center gap-2 text-destructive`,children:[(0,Z.jsx)(G,{name:`error-warning`,className:`h-5 w-5`}),e.title]})}),(0,Z.jsxs)(yn,{className:`space-y-4`,children:[(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground text-center`,children:e.description}),this.state.error&&(0,Z.jsxs)(`details`,{className:`text-xs font-mono bg-muted p-3 rounded`,children:[(0,Z.jsx)(`summary`,{className:`cursor-pointer hover:bg-interactive-hover/80`,children:e.detailsSummary}),(0,Z.jsxs)(`pre`,{className:`mt-2 max-h-48 overflow-auto`,children:[this.state.error.toString(),this.state.errorInfo?.componentStack?`\n\n${e.componentStackLabel}${this.state.errorInfo.componentStack}`:``]})]}),(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Z.jsxs)(Te,{onClick:this.handleReset,variant:`outline`,className:`flex-1`,children:[(0,Z.jsx)(G,{name:`restart`,className:`h-4 w-4 mr-2`}),e.tryAgain]}),(0,Z.jsx)(Te,{onClick:this.handleCopy,variant:`outline`,className:`flex-1`,children:this.state.copied?e.copied:e.copy})]})]})]})}):this.props.children}},xn=e=>{let t=(0,K.c)(29),{children:n,fallback:r}=e,{t:i}=ue(),a;t[0]===i?a=t[1]:(a=i(`errorBoundary.state.unknownError`),t[0]=i,t[1]=a);let o;t[2]===i?o=t[3]:(o=i(`errorBoundary.title`),t[2]=i,t[3]=o);let s;t[4]===i?s=t[5]:(s=i(`errorBoundary.description`),t[4]=i,t[5]=s);let c;t[6]===i?c=t[7]:(c=i(`errorBoundary.actions.errorDetails`),t[6]=i,t[7]=c);let l;t[8]===i?l=t[9]:(l=i(`errorBoundary.state.componentStackLabel`),t[8]=i,t[9]=l);let u;t[10]===i?u=t[11]:(u=i(`errorBoundary.actions.tryAgain`),t[10]=i,t[11]=u);let d;t[12]===i?d=t[13]:(d=i(`errorBoundary.actions.copied`),t[12]=i,t[13]=d);let f;t[14]===i?f=t[15]:(f=i(`errorBoundary.actions.copy`),t[14]=i,t[15]=f);let p;t[16]!==a||t[17]!==o||t[18]!==s||t[19]!==c||t[20]!==l||t[21]!==u||t[22]!==d||t[23]!==f?(p={unknownError:a,title:o,description:s,detailsSummary:c,componentStackLabel:l,tryAgain:u,copied:d,copy:f},t[16]=a,t[17]=o,t[18]=s,t[19]=c,t[20]=l,t[21]=u,t[22]=d,t[23]=f,t[24]=p):p=t[24];let m=p,h;return t[25]!==n||t[26]!==r||t[27]!==m?(h=(0,Z.jsx)(bn,{fallback:r,strings:m,children:n}),t[25]=n,t[26]=r,t[27]=m,t[28]=h):h=t[28],h},Sn=`__unassigned__`,Cn={mod:`mod`,shift:`shift`,alt:`alt`,option:`alt`,ctrl:`ctrl`,meta:`mod`,cmd:`mod`,command:`mod`},wn={mod:H()&&o()?`⌘`:`Ctrl`,shift:`⇧`,alt:`⌥`,option:`⌥`,ctrl:`⌃`},Tn={comma:`,`,period:`.`,enter:`Enter`,escape:`Esc`,tab:`Tab`,space:`Space`,backspace:`⌫`,delete:`⌦`,arrowup:`↑`,arrowdown:`↓`,arrowleft:`←`,arrowright:`→`,home:`Home`,end:`End`,pageup:`Page Up`,pagedown:`Page Down`,backtick:"`",grave:"`","=":`=`,equal:`=`,plus:`+`,minus:`-`,"-":`-`},En=[`mod`,`ctrl`,`shift`,`alt`],Dn={"{":`[`,"}":`]`,":":`;`,'"':`'`,"<":`,`,">":`.`,"?":`/`,"|":`\\`,"~":"`","!":`1`,"@":`2`,"#":`3`,$:`4`,"%":`5`,"^":`6`,"&":`7`,"*":`8`,"(":`9`,")":`0`};function On(e){return e.trim().toLowerCase()===Sn}function kn(e){let t=e.toLowerCase();return t===`,`?`comma`:t===`.`?`period`:t===` `?`space`:t===`esc`?`escape`:t===`+`?`plus`:t===`-`||t===`_`?`minus`:t===`arrowup`?`arrowup`:t===`arrowdown`?`arrowdown`:t===`arrowleft`?`arrowleft`:t===`arrowright`?`arrowright`:t==="`"?`backtick`:Dn[t]??t}var An=[{id:`open_go_to_line`,defaultCombo:`alt+g`,label:`Go to line (files editor)`,description:`Open go to line in the files editor`,customizable:!0},{id:`open_command_palette`,defaultCombo:`mod+p`,label:`Open command palette`,description:`Open the command palette`,customizable:!0},{id:`focus_input`,defaultCombo:`mod+i`,label:`Focus input`,description:`Focus the chat input field`,customizable:!0},{id:`open_status`,defaultCombo:`mod+shift+o`,label:`Open OpenCode status`,description:`Open the OpenCode status dialog`},{id:`open_settings`,defaultCombo:`mod+comma`,label:`Open settings`,description:`Open the settings panel`,customizable:!0},{id:`toggle_terminal`,defaultCombo:`ctrl+backtick`,label:`Toggle terminal`,description:`Toggle the integrated terminal`,customizable:!0},{id:`toggle_bottom_panel`,defaultCombo:`mod+j`,label:`Toggle bottom panel`,description:`Toggle the bottom panel dock`,customizable:!0},{id:`toggle_terminal_expanded`,defaultCombo:`mod+shift+j`,label:`Toggle terminal expanded`,description:`Toggle terminal expanded or collapsed`,customizable:!0},{id:`new_terminal_tab`,defaultCombo:`mod+t`,label:`New terminal tab`,description:`Create a new terminal tab when the terminal is focused`,customizable:!0},{id:`open_new_terminal`,defaultCombo:`mod+shift+backtick`,label:`Open new terminal`,description:`Open the terminal panel and create a new terminal tab`,customizable:!0},{id:`previous_terminal_tab`,defaultCombo:`mod+shift+[`,label:`Previous terminal tab`,description:`Switch to the previous terminal tab when the terminal is focused`,customizable:!0},{id:`next_terminal_tab`,defaultCombo:`mod+shift+]`,label:`Next terminal tab`,description:`Switch to the next terminal tab when the terminal is focused`,customizable:!0},{id:`toggle_files`,defaultCombo:`mod+shift+f`,label:`Toggle files`,description:`Toggle the files panel`},{id:`toggle_sidebar`,defaultCombo:`mod+b`,label:`Toggle sidebar`,description:`Toggle the session sidebar`,customizable:!0},{id:`open_timeline_dialog`,defaultCombo:`mod+t`,label:`Open conversation timeline`,description:`Search and navigate within current conversation`,customizable:!0},{id:`toggle_prompt_navigator`,defaultCombo:`mod+alt+p`,label:`Toggle prompt navigator`,description:`Show or hide the prompt navigator panel in chat`,customizable:!0},{id:`toggle_right_sidebar`,defaultCombo:`mod+alt+b`,defaultAliases:[`mod+\\`],label:`Toggle review panel`,description:`Toggle the review panel (right sidebar)`,customizable:!0},{id:`open_right_sidebar_git`,defaultCombo:`mod+shift+g`,label:`Open right sidebar Git tab`,description:`Open right sidebar and select Git`,customizable:!0},{id:`open_right_sidebar_files`,defaultCombo:`mod+shift+f`,label:`Open right sidebar Files tab`,description:`Open right sidebar and select Files`,customizable:!0},{id:`cycle_right_sidebar_tab`,defaultCombo:`mod+alt+shift+r`,label:`Cycle right sidebar tab`,description:`Cycle through right sidebar tabs`,customizable:!0},{id:`close_context_panel_tab`,defaultCombo:`mod+w`,label:`Close context panel tab`,description:`Close the active context panel tab (closes the panel when empty)`,customizable:!0},{id:`previous_session`,defaultCombo:`mod+shift+[`,defaultAliases:[`mod+arrowup`],label:`Previous session`,description:`Switch to the previous session`,customizable:!0},{id:`next_session`,defaultCombo:`mod+shift+]`,defaultAliases:[`mod+arrowdown`],label:`Next session`,description:`Switch to the next session`,customizable:!0},{id:`new_chat`,defaultCombo:`mod+n`,label:`New session`,description:`Start a new session`,customizable:!0},{id:`new_chat_worktree`,defaultCombo:`mod+shift+alt+n`,label:`New worktree draft`,description:`Create a new worktree and open a draft in it`,customizable:!0},{id:`new_mini_chat`,defaultCombo:`mod+alt+n`,label:`New Mini Chat window`,description:`Open a new Mini Chat draft window`,customizable:!0},{id:`submit_message`,defaultCombo:`mod+enter`,label:`Submit message`,description:`Submit the current message`},{id:`clear_input`,defaultCombo:`escape`,label:`Clear input`,description:`Clear the input field`},{id:`clear_all_messages`,defaultCombo:`ctrl+c`,label:`Clear all messages`,description:`Clear the composer input and queued messages`,customizable:!0},{id:`open_diff_panel`,defaultCombo:`mod+2`,label:`Open diff panel`,description:`Switch to the diff panel`},{id:`open_terminal_panel`,defaultCombo:`mod+3`,label:`Open terminal panel`,description:`Switch to the terminal panel`},{id:`open_git_panel`,defaultCombo:`mod+4`,label:`Open git panel`,description:`Switch to the git panel`},{id:`open_help`,defaultCombo:`mod+.`,label:`Open keyboard shortcuts`,description:`Show the keyboard shortcuts help`,customizable:!0},{id:`toggle_services_menu`,defaultCombo:`mod+shift+s`,label:`Toggle services menu`,description:`Open or close the services menu`,customizable:!0},{id:`open_usage`,defaultCombo:`mod+shift+c`,label:`Open usage`,description:`Open the usage panel`,customizable:!0},{id:`cycle_services_tab`,defaultCombo:`mod+alt+shift+s`,label:`Cycle services tab`,description:`Cycle through tabs in the services menu`,customizable:!0},{id:`cycle_theme`,defaultCombo:`mod+/`,label:`Cycle theme`,description:`Cycle between light, dark, and system theme`,customizable:!0},{id:`zoom_in`,defaultCombo:`mod+=`,label:`Zoom in`,description:`Increase the webview zoom level`,customizable:!0},{id:`zoom_out`,defaultCombo:`mod+-`,label:`Zoom out`,description:`Decrease the webview zoom level`,customizable:!0},{id:`zoom_reset`,defaultCombo:`mod+0`,label:`Reset zoom`,description:`Reset the webview zoom level to 100%`,customizable:!0},{id:`leader_key`,defaultCombo:`ctrl+x`,label:`Leader key`,description:`Start an OpenCode-style chord, then press M / A / N / C`,customizable:!0},{id:`open_model_selector`,defaultCombo:`mod+shift+m`,label:`Open model selector`,description:`Open model selector while in chat`,customizable:!0},{id:`cycle_thinking_variant`,defaultCombo:`mod+shift+t`,label:`Cycle thinking variant`,description:`Cycle thinking variant while in chat`},{id:`cycle_agent`,defaultCombo:`tab`,label:`Cycle agent`,description:`Cycle agent while the model selector is open`,customizable:!0},{id:`cycle_favorite_model_forward`,defaultCombo:`ctrl+]`,label:`Cycle favorite model forward`,description:`Cycle forward through starred models without opening the picker`,customizable:!0},{id:`cycle_favorite_model_backward`,defaultCombo:`ctrl+[`,label:`Cycle favorite model backward`,description:`Cycle backward through starred models without opening the picker`,customizable:!0},{id:`expand_input`,defaultCombo:`mod+shift+e`,label:`Expand input`,description:`Toggle focus mode for the chat input`,customizable:!0},{id:`toggle_dictation`,defaultCombo:`mod+alt+v`,label:`Voice input`,description:`Start dictation; press again to confirm and insert the transcript`,customizable:!0},{id:`abort_run`,defaultCombo:`escape`,label:`Abort active run`,description:`Abort the currently running task (double press)`},{id:`switch_tab_1`,defaultCombo:`mod+1`,label:`Switch to visible session 1`,description:`Switch to the first visible sidebar session`},{id:`switch_tab_2`,defaultCombo:`mod+2`,label:`Switch to visible session 2`,description:`Switch to the second visible sidebar session`},{id:`switch_tab_3`,defaultCombo:`mod+3`,label:`Switch to visible session 3`,description:`Switch to the third visible sidebar session`},{id:`switch_tab_4`,defaultCombo:`mod+4`,label:`Switch to visible session 4`,description:`Switch to the fourth visible sidebar session`},{id:`switch_tab_5`,defaultCombo:`mod+5`,label:`Switch to visible session 5`,description:`Switch to the fifth visible sidebar session`},{id:`switch_tab_6`,defaultCombo:`mod+6`,label:`Switch to visible session 6`,description:`Switch to the sixth visible sidebar session`},{id:`switch_tab_7`,defaultCombo:`mod+7`,label:`Switch to visible session 7`,description:`Switch to the seventh visible sidebar session`},{id:`switch_tab_8`,defaultCombo:`mod+8`,label:`Switch to visible session 8`,description:`Switch to the eighth visible sidebar session`},{id:`switch_tab_9`,defaultCombo:`mod+9`,label:`Switch to visible session 9`,description:`Switch to the ninth visible sidebar session`}];function jn(e){if(On(e))return Sn;let t=e.toLowerCase().trim().split(`+`).map(e=>e.trim()).filter(Boolean),n=new Set,r=``;for(let e of t){let t=e===`,`?`comma`:e===`.`?`period`:e,i=Cn[t];if(i){n.add(i);continue}r=t}return[...En.filter(e=>n.has(e)),r].filter(Boolean).join(`+`)}function Mn(e){return On(e)?!0:Nn(e).key.trim().length>0}function Nn(e){if(On(e))return{modifiers:new Set,key:Sn};let t=jn(e).split(`+`),n=new Set,r=``;for(let e of t){let t=Cn[e];t?n.add(t):r=e}return{modifiers:n,key:r}}function Pn(e){if(On(e))return`Unassigned`;let t=Nn(e);if(!t.key&&t.modifiers.size===0)return`Unassigned`;let n=[];for(let e of En)t.modifiers.has(e)&&n.push(wn[e]);if(t.key){let e=Tn[t.key.toLowerCase()]||t.key.toUpperCase();n.push(e)}return n.join(` + `)}function Fn(e){return An.find(t=>t.id===e)}function In(){return An.filter(e=>e.customizable===!0)}function Ln(e,t){let n=Fn(e);if(!n)return``;let r=t?.[e];if(typeof r==`string`){if(r.trim().toLowerCase()===`__unassigned__`)return``;let e=jn(r);if(e===`__unassigned__`)return Sn;if(Mn(e))return e}return n.defaultCombo}function Rn(e,t){let n=Fn(e);if(!n)return[];let r=Ln(e,t);return r===n.defaultCombo?[n.defaultCombo,...n.defaultAliases??[]]:r?[r]:[]}function zn(e){if(On(e))return!1;let t=Nn(e);if(!t.modifiers.has(`mod`))return!1;let n=t.key.toLowerCase();return new Set([`w`,`t`,`r`,`p`,`s`,`f`,`l`,`n`]).has(n)&&!t.modifiers.has(`shift`)&&!t.modifiers.has(`alt`)}function Bn(e,t){let n=typeof t==`string`?t:t.defaultCombo;if(On(n))return!1;let r=Nn(n),i=r.modifiers.has(`mod`),a=r.modifiers.has(`shift`),s=r.modifiers.has(`alt`),c=r.modifiers.has(`ctrl`),l=H()&&o(),u=H(),d=l?e.metaKey:u&&e.metaKey||e.ctrlKey;if(i&&!d||!i&&e.metaKey||a!==e.shiftKey||s!==e.altKey)return!1;if(c){if(!e.ctrlKey)return!1}else{let t=i&&!l&&e.ctrlKey;if(e.ctrlKey&&!t)return!1}let f=e.key;return(!f||f===`Dead`)&&e.code===`Backquote`&&(f="`"),e.altKey&&(e.code.startsWith(`Key`)&&e.code.length===4?f=e.code.slice(3).toLowerCase():e.code.startsWith(`Digit`)&&e.code.length===6&&(f=e.code.slice(5))),kn(f)===kn(r.key)}function Vn(){return H()&&o()?`⌘`:`Ctrl`}function Hn(e,t,n){if(Bn(e,n))return!0;let r=jn(n),i=H()&&o(),a=H();return!(i?e.metaKey:a&&e.metaKey||e.ctrlKey)||e.altKey||i&&e.ctrlKey&&!e.metaKey?!1:t===`in`&&r===`mod+=`?e.key===`+`||e.code===`NumpadAdd`:t===`out`&&(r===`mod+-`||r===`mod+minus`)?e.key===`_`||e.code===`NumpadSubtract`:!1}var Un=Q.createContext(null),Wn=e=>e?e.closest(`[data-slot="dialog-content"], [role="dialog"]`):null;function Gn(e,t){return e&&Q.isValidElement(t)?{render:t}:{children:t}}function Kn(e){let t=(0,K.c)(9),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let[r,i]=Q.useState(null),a;t[2]===r?a=t[3]:(a={portalContainer:r,setPortalContainer:i},t[2]=r,t[3]=a);let o=a,s;t[4]===n?s=t[5]:(s=(0,Z.jsx)(w,{...n}),t[4]=n,t[5]=s);let c;return t[6]!==o||t[7]!==s?(c=(0,Z.jsx)(Un.Provider,{value:o,children:s}),t[6]=o,t[7]=s,t[8]=c):c=t[8],c}function qn(e){let t=(0,K.c)(22),n,r,i,a,o;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5]):({asChild:n,children:r,onPointerDownCapture:a,onFocusCapture:i,...o}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o);let s=Q.useContext(Un),c;t[6]===s?c=t[7]:(c=e=>{if(!s)return;let t=e instanceof HTMLElement?e:null;s.setPortalContainer(Wn(t))},t[6]=s,t[7]=c);let l=c,u;t[8]!==n||t[9]!==r?(u=Gn(n,r),t[8]=n,t[9]=r,t[10]=u):u=t[10];let d=u,f;t[11]!==a||t[12]!==l?(f=e=>{l(e.currentTarget),a?.(e)},t[11]=a,t[12]=l,t[13]=f):f=t[13];let p;t[14]!==i||t[15]!==l?(p=e=>{l(e.currentTarget),i?.(e)},t[14]=i,t[15]=l,t[16]=p):p=t[16];let m;return t[17]!==o||t[18]!==d||t[19]!==f||t[20]!==p?(m=(0,Z.jsx)(g,{"data-slot":`dropdown-menu-trigger`,onPointerDownCapture:f,onFocusCapture:p,...o,...d}),t[17]=o,t[18]=d,t[19]=f,t[20]=p,t[21]=m):m=t[21],m}function Jn(e){let t=(0,K.c)(40),n,r,i,a,o,s,c,l,u,d,f,p,m;if(t[0]!==e){let{className:h,sideOffset:g,align:_,side:v,alignOffset:y,anchor:b,portalToBody:x,positionerClassName:S,style:C,children:w,onCloseAutoFocus:ee,collisionPadding:T,collisionAvoidance:E,...D}=e;o=h,d=g,n=_,l=v,r=y,i=b,f=x,s=S,u=C,a=w,p=T,m=E,c=D,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s,t[7]=c,t[8]=l,t[9]=u,t[10]=d,t[11]=f,t[12]=p,t[13]=m}else n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6],c=t[7],l=t[8],u=t[9],d=t[10],f=t[11],p=t[12],m=t[13];let h=d===void 0?4:d,g=f!==void 0&&f,_=p===void 0?8:p,y;t[14]===m?y=t[15]:(y=m===void 0?{side:`shift`,align:`shift`}:m,t[14]=m,t[15]=y);let b=y,C=Q.useContext(Un),w=g?void 0:C?.portalContainer||void 0,ee;t[16]===s?ee=t[17]:(ee=U(`app-region-no-drag z-50`,s),t[16]=s,t[17]=ee);let T;t[18]===u?T=t[19]:(T={backgroundColor:`var(--surface-elevated)`,color:`var(--surface-elevated-foreground)`,...u},t[18]=u,t[19]=T);let E;t[20]===o?E=t[21]:(E=U(We,o),t[20]=o,t[21]=E);let D;t[22]!==a||t[23]!==c||t[24]!==T||t[25]!==E?(D=(0,Z.jsx)(v,{"data-slot":`dropdown-menu-content`,style:T,className:E,...c,children:a}),t[22]=a,t[23]=c,t[24]=T,t[25]=E,t[26]=D):D=t[26];let O;t[27]!==n||t[28]!==r||t[29]!==i||t[30]!==b||t[31]!==_||t[32]!==l||t[33]!==h||t[34]!==D||t[35]!==ee?(O=(0,Z.jsx)(x,{anchor:i,sideOffset:h,align:n,side:l,alignOffset:r,collisionPadding:_,collisionAvoidance:b,className:ee,children:D}),t[27]=n,t[28]=r,t[29]=i,t[30]=b,t[31]=_,t[32]=l,t[33]=h,t[34]=D,t[35]=ee,t[36]=O):O=t[36];let k;return t[37]!==O||t[38]!==w?(k=(0,Z.jsx)(S,{container:w,children:O}),t[37]=O,t[38]=w,t[39]=k):k=t[39],k}function Yn(e){let t=(0,K.c)(24),n,r,i,a,o,s,c,l;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6],c=t[7],l=t[8]):({className:i,inset:a,variant:l,asChild:n,children:r,onSelect:s,onClick:o,...c}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s,t[7]=c,t[8]=l);let u=l===void 0?`default`:l,d;t[9]!==n||t[10]!==r?(d=Gn(n,r),t[9]=n,t[10]=r,t[11]=d):d=t[11];let f=d,p;t[12]!==o||t[13]!==s?(p=e=>{o?.(e),e.defaultPrevented||s?.(e)},t[12]=o,t[13]=s,t[14]=p):p=t[14];let m=p,h;t[15]===i?h=t[16]:(h=U(Ke,i),t[15]=i,t[16]=h);let g;return t[17]!==m||t[18]!==a||t[19]!==c||t[20]!==f||t[21]!==h||t[22]!==u?(g=(0,Z.jsx)(y,{"data-slot":`dropdown-menu-item`,"data-inset":a,"data-variant":u,className:h,...c,onClick:m,...f}),t[17]=m,t[18]=a,t[19]=c,t[20]=f,t[21]=h,t[22]=u,t[23]=g):g=t[23],g}function Xn(e){let t=(0,K.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,Z.jsx)(b,{"data-slot":`dropdown-menu-radio-group`,...n}),t[2]=n,t[3]=r),r}function Zn(e){let t=(0,K.c)(11),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({className:r,children:n,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a;t[4]===r?a=t[5]:(a=U(`data-[highlighted]:bg-interactive-hover hover:bg-interactive-hover data-[checked]:bg-interactive-selection data-[checked]:text-interactive-selection-foreground relative flex cursor-pointer items-start gap-2 rounded-lg py-1 pl-2 pr-8 typography-ui-label outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5`,r),t[4]=r,t[5]=a);let o;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,Z.jsx)(`span`,{className:`pointer-events-none absolute right-2 flex size-3.5 items-center justify-center text-primary`,children:(0,Z.jsx)(h,{children:(0,Z.jsx)(G,{name:`check`,className:`size-3`})})}),t[6]=o):o=t[6];let s;return t[7]!==n||t[8]!==i||t[9]!==a?(s=(0,Z.jsxs)(C,{"data-slot":`dropdown-menu-radio-item`,className:a,...i,children:[o,n]}),t[7]=n,t[8]=i,t[9]=a,t[10]=s):s=t[10],s}function Qn(e){let t=(0,K.c)(10),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({className:n,inset:r,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a;t[4]===n?a=t[5]:(a=U(`px-2 py-1 typography-ui-label font-medium data-[inset]:pl-8`,n),t[4]=n,t[5]=a);let o;return t[6]!==r||t[7]!==i||t[8]!==a?(o=(0,Z.jsx)(`div`,{"data-slot":`dropdown-menu-label`,"data-inset":r,className:a,...i}),t[6]=r,t[7]=i,t[8]=a,t[9]=o):o=t[9],o}function $n(e){let t=(0,K.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=U(Ge,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,Z.jsx)(_,{"data-slot":`dropdown-menu-separator`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function er(){let e=(0,K.c)(5),t=V(ir),n=V(rr),r=V(nr),i=V(tr),a=t||i,o=!a&&r===`init_error`,s=!a&&!o,c;return e[0]!==n||e[1]!==a||e[2]!==o||e[3]!==s?(c={isReady:a,isLoading:s,isUnavailable:o,connectionPhase:n},e[0]=n,e[1]=a,e[2]=o,e[3]=s,e[4]=c):c=e[4],c}function tr(e){return e.providers.length>0}function nr(e){return e.lastDisconnectReason}function rr(e){return e.connectionPhase}function ir(e){return e.isInitialized}var ar=e=>{let t=(0,K.c)(41),{agentName:n,onChange:r,className:i,filter:a,dropdownPortalToBody:o,showIcon:s,agents:c}=e,l=o!==void 0&&o,u=s===void 0||s,{t:d}=ue(),{isReady:f,isUnavailable:p}=er(),m=V(or),h=ge(sr),g=V(cr),{data:_}=we(),v;t[0]===_?v=t[1]:(v=_===void 0?[]:_,t[0]=_,t[1]=v);let y=v,b;bb0:{if(c){b=c;break bb0}if(Array.isArray(m)&&m.length>0){b=m;break bb0}b=y}let x=b,S;if(t[2]!==a||t[3]!==x){let e=me(x);S=a?e.filter(a):e,t[2]=a,t[3]=x,t[4]=S}else S=t[4];let C=S,w=O(lr),{isMobile:ee}=Ue(),T=w||ee,[E,D]=Q.useState(!1),k;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(k=()=>{D(!0),V.getState().refreshCatalogsOnPickerOpen({source:`agentSelector:mobilePanel`})},t[5]=k):k=t[5];let A=le(k),j=le(ur),te=Q.useId(),ne,M;t[6]!==c||t[7]!==h||t[8]!==g||t[9]!==x.length?(ne=()=>{c||x.length>0||(g(),h())},M=[c,x.length,g,h],t[6]=c,t[7]=h,t[8]=g,t[9]=x.length,t[10]=ne,t[11]=M):(ne=t[10],M=t[11]),Q.useEffect(ne,M);let re;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(re=()=>D(!1),t[12]=re):re=t[12];let N=re,ie;t[13]===r?ie=t[14]:(ie=e=>{r(e)},t[13]=r,t[14]=ie);let P=ie,ae;t[15]!==n||t[16]!==C||t[17]!==P||t[18]!==T||t[19]!==E||t[20]!==te||t[21]!==d?(ae=()=>T?(0,Z.jsx)(ze,{id:`mobile-agent-selector-sheet-${te}`,open:E,onOpenChange:e=>{e||N()},ariaLabel:d(`settings.commands.agentSelector.title`),closeAriaLabel:d(`mobile.surface.closeAria`),resizeAriaLabel:d(`mobile.sessions.sheet.resizeAria`),bodyClassName:`px-2`,children:(0,Z.jsxs)(qe,{useScrollShadow:!0,disableHorizontal:!0,preventOverscroll:!0,outerClassName:`min-h-0 flex-1`,className:`flex flex-col gap-1 overscroll-contain`,children:[(0,Z.jsxs)(`button`,{type:`button`,className:U(`grid w-full grid-cols-[1rem_minmax(0,1fr)_auto] items-center gap-x-2 rounded-lg border border-border/40 bg-background/95 px-2 py-1.5 text-left`,n?`text-foreground`:`bg-primary/10 text-primary`),onClick:()=>{P(``),N()},children:[(0,Z.jsx)(W,{name:`default`,size:16}),(0,Z.jsx)(`span`,{className:U(`min-w-0 typography-meta`,n?`text-muted-foreground`:`font-medium`),children:d(`settings.commands.agentSelector.notSelected`)}),!n&&(0,Z.jsx)(`div`,{className:`h-2 w-2 rounded-full bg-primary`})]}),C.map(e=>{let t=e.name===n;return(0,Z.jsxs)(`button`,{type:`button`,className:U(`grid w-full grid-cols-[1rem_minmax(0,1fr)_auto] items-start gap-x-2 rounded-lg border border-border/40 bg-background/95 px-2 py-1.5 text-left`,t?`bg-primary/10 text-primary`:`text-foreground`),onClick:()=>{P(e.name),N()},children:[(0,Z.jsx)(W,{name:e.name,size:16,className:`mt-1.5`}),(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsx)(`span`,{className:`typography-meta font-medium`,children:e.name}),e.description&&(0,Z.jsx)(`span`,{className:`mt-0.5 block whitespace-normal break-words typography-micro text-muted-foreground`,children:e.description})]}),t&&(0,Z.jsx)(`div`,{className:`mt-2 h-2 w-2 rounded-full bg-primary`})]},e.name)})]})}):null,t[15]=n,t[16]=C,t[17]=P,t[18]=T,t[19]=E,t[20]=te,t[21]=d,t[22]=ae):ae=t[22];let F=ae,I;t[23]!==n||t[24]!==C||t[25]!==i||t[26]!==l||t[27]!==P||t[28]!==j||t[29]!==T||t[30]!==f||t[31]!==p||t[32]!==A||t[33]!==u||t[34]!==d?(I=T?(0,Z.jsxs)(`button`,{type:`button`,onClick:f?A:void 0,disabled:!f,className:U(`flex w-full items-center justify-between gap-2 rounded-lg border border-border/40 bg-background/95 px-2 py-1.5 text-left`,!f&&`opacity-60 cursor-not-allowed`,i),children:[(0,Z.jsx)(`div`,{className:`flex items-center gap-2`,children:f?(0,Z.jsxs)(Z.Fragment,{children:[u?(0,Z.jsx)(W,{name:n||`default`,size:14}):null,(0,Z.jsx)(`span`,{className:`typography-meta font-medium text-foreground`,children:n||d(`settings.commands.agentSelector.selectAgentPlaceholder`)})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(G,{name:`loader-4`,className:`h-3.5 w-3.5 animate-spin text-muted-foreground`}),(0,Z.jsx)(`span`,{className:`typography-meta text-muted-foreground`,children:d(p?`common.unavailable`:`common.loading`)})]})}),(0,Z.jsx)(G,{name:`arrow-down-s`,className:`h-3 w-3 text-muted-foreground`})]}):f?(0,Z.jsxs)(Kn,{onOpenChange:j,children:[(0,Z.jsx)(qn,{asChild:!0,children:(0,Z.jsxs)(`div`,{className:U(`flex items-center gap-2 px-2 rounded-lg bg-interactive-selection/20 border border-border/20 cursor-pointer hover:bg-interactive-hover/30 h-6 w-fit`,i),children:[u?(0,Z.jsx)(W,{name:n||`default`,size:14}):null,(0,Z.jsx)(`span`,{className:`typography-micro font-medium whitespace-nowrap`,children:n||d(`settings.commands.agentSelector.notSelected`)}),(0,Z.jsx)(G,{name:`arrow-down-s`,className:`h-3 w-3 flex-shrink-0 text-muted-foreground`})]})}),(0,Z.jsxs)(Jn,{className:`max-w-[300px]`,portalToBody:l,children:[(0,Z.jsxs)(Yn,{className:`typography-meta`,onSelect:()=>P(``),children:[(0,Z.jsx)(W,{name:`default`,size:14}),(0,Z.jsx)(`span`,{className:`text-muted-foreground`,children:d(`settings.commands.agentSelector.notSelected`)})]}),C.map(e=>(0,Z.jsxs)(Yn,{className:`typography-meta`,onSelect:()=>P(e.name),children:[(0,Z.jsx)(W,{name:e.name,size:14}),(0,Z.jsx)(`span`,{className:`font-medium`,children:e.name})]},e.name))]})]}):(0,Z.jsxs)(`div`,{className:U(`flex items-center gap-2 px-2 rounded-lg bg-interactive-selection/20 border border-border/20 h-6 w-fit opacity-60`,i),children:[(0,Z.jsx)(G,{name:`loader-4`,className:`h-3 w-3 animate-spin text-muted-foreground flex-shrink-0`}),(0,Z.jsx)(`span`,{className:`typography-micro font-medium whitespace-nowrap text-muted-foreground`,children:d(p?`common.unavailable`:`common.loading`)})]}),t[23]=n,t[24]=C,t[25]=i,t[26]=l,t[27]=P,t[28]=j,t[29]=T,t[30]=f,t[31]=p,t[32]=A,t[33]=u,t[34]=d,t[35]=I):I=t[35];let L;t[36]===F?L=t[37]:(L=F(),t[36]=F,t[37]=L);let oe;return t[38]!==I||t[39]!==L?(oe=(0,Z.jsxs)(Z.Fragment,{children:[I,L]}),t[38]=I,t[39]=L,t[40]=oe):oe=t[40],oe};function or(e){return e.agents}function sr(e){return e.loadAgents}function cr(e){return e.loadAgents}function lr(e){return e.isMobile}function ur(e){e&&V.getState().refreshCatalogsOnPickerOpen({source:`agentSelector:desktopMenu`})}var dr={compact:{notation:`compact`,compactDisplay:`short`,maximumFractionDigits:1,minimumFractionDigits:0},compactTokensShort:{notation:`compact`,compactDisplay:`short`,maximumFractionDigits:1},usd:{style:`currency`,currency:`USD`,maximumFractionDigits:4,minimumFractionDigits:2}},fr=null,pr={},mr=(e,t)=>{fr!==t&&(fr=t,pr.compact=void 0,pr.compactTokensShort=void 0,pr.usd=void 0);let n=pr[e];if(n)return n;let r=new Intl.NumberFormat(t,dr[e]);return pr[e]=r,r},hr=(e,t=B())=>mr(`compact`,t).format(e),gr=(e,t=B())=>mr(`compactTokensShort`,t).format(e),_r=(e,t=B())=>mr(`usd`,t).format(e),vr=(e,t=B())=>e.toLocaleDateString(t,{month:`short`,day:`numeric`,year:`numeric`}),yr=(e,t=B())=>new Date(e).toLocaleDateString(t,{year:`numeric`,month:`short`,day:`numeric`}),br=(e,t=B())=>new Date(e).toLocaleTimeString(t,{hour:`numeric`,minute:`2-digit`}),xr=8,Sr=e=>typeof e!=`number`||Number.isNaN(e)?``:gr(e),Cr=(e,t,n)=>{let r=e.find(e=>e.id===t)?.models?.find(e=>e.id===n);return r?.variants?Object.keys(r.variants):[]},wr=e=>{let t=(0,K.c)(54),{open:n,onClose:r,selectedProviderID:i,selectedModelID:a,resolveSelectedVariant:o,onSelect:s,providers:c,favoriteModels:l,recentModels:u,hiddenModels:d,allowedProviderIds:f,allowedModelIdsByProvider:p,providerOrder:m,variantSelectionEnabled:h,isFavorite:g,onToggleFavorite:_,getMetadata:v,view:y,onViewChange:b}=e,x;t[0]===d?x=t[1]:(x=d===void 0?[]:d,t[0]=d,t[1]=x);let S=x,C=h===void 0||h,{t:w}=ue(),ee=Q.useId(),[T,E]=Q.useState(``),D;t[2]===i?D=t[3]:(D=()=>new Set(i?[i]:[]),t[2]=i,t[3]=D);let[O,k]=Q.useState(D),[A,j]=Q.useState(null),[te,ne]=Q.useState(`model`),[M,re]=Q.useState(null),N=Q.useRef(!1),ie=y??te,P,ae;t[4]!==n||t[5]!==i?(P=()=>{n&&!N.current&&k(new Set(i?[i]:[])),n||(E(``),j(null),ne(`model`),re(null)),N.current=n},ae=[n,i],t[4]=n,t[5]=i,t[6]=P,t[7]=ae):(P=t[6],ae=t[7]),Q.useEffect(P,ae);let F;t[8]===b?F=t[9]:(F=e=>{ne(e),b?.(e)},t[8]=b,t[9]=F);let I=F,L=ie===`variant`&&!!(M??(i&&a)),oe=`mobile-model-picker-sheet-${ee}`,R;t[10]===r?R=t[11]:(R=e=>{e||r()},t[10]=r,t[11]=R);let se;t[12]!==L||t[13]!==I||t[14]!==w?(se=L?(0,Z.jsx)(Te,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>I(`model`),"aria-label":w(`onboarding.common.actions.back`),children:(0,Z.jsx)(G,{name:`arrow-left`,className:`size-5`})}):void 0,t[12]=L,t[13]=I,t[14]=w,t[15]=se):se=t[15];let z;t[16]!==L||t[17]!==w?(z=w(L?`chat.modelControls.thinking`:`chat.modelControls.selectModel`),t[16]=L,t[17]=w,t[18]=z):z=t[18];let ce;t[19]===w?ce=t[20]:(ce=w(`mobile.surface.closeAria`),t[19]=w,t[20]=ce);let le;t[21]===w?le=t[22]:(le=w(`mobile.sessions.sheet.resizeAria`),t[21]=w,t[22]=le);let B;t[23]!==ie||t[24]!==p||t[25]!==f||t[26]!==A||t[27]!==O||t[28]!==l||t[29]!==v||t[30]!==S||t[31]!==g||t[32]!==s||t[33]!==_||t[34]!==m||t[35]!==c||t[36]!==T||t[37]!==u||t[38]!==o||t[39]!==a||t[40]!==i||t[41]!==I||t[42]!==C||t[43]!==M?(B=(0,Z.jsx)(Tr,{query:T,onQueryChange:E,expandedProviders:O,onExpandedProvidersChange:k,expandedModelKey:A,onExpandedModelKeyChange:j,activeView:ie,setView:I,variantTarget:M,onVariantTargetChange:re,selectedProviderID:i,selectedModelID:a,resolveSelectedVariant:o,onSelect:s,providers:c,favoriteModels:l,recentModels:u,hiddenModels:S,allowedProviderIds:f,allowedModelIdsByProvider:p,providerOrder:m,variantSelectionEnabled:C,isFavorite:g,onToggleFavorite:_,getMetadata:v}),t[23]=ie,t[24]=p,t[25]=f,t[26]=A,t[27]=O,t[28]=l,t[29]=v,t[30]=S,t[31]=g,t[32]=s,t[33]=_,t[34]=m,t[35]=c,t[36]=T,t[37]=u,t[38]=o,t[39]=a,t[40]=i,t[41]=I,t[42]=C,t[43]=M,t[44]=B):B=t[44];let de;return t[45]!==n||t[46]!==se||t[47]!==z||t[48]!==ce||t[49]!==le||t[50]!==B||t[51]!==oe||t[52]!==R?(de=(0,Z.jsx)(ze,{id:oe,open:n,onOpenChange:R,leading:se,ariaLabel:z,closeAriaLabel:ce,resizeAriaLabel:le,bodyClassName:`px-2`,children:B}),t[45]=n,t[46]=se,t[47]=z,t[48]=ce,t[49]=le,t[50]=B,t[51]=oe,t[52]=R,t[53]=de):de=t[53],de},Tr=e=>{let t=(0,K.c)(117),{query:n,onQueryChange:r,expandedProviders:i,onExpandedProvidersChange:a,expandedModelKey:o,onExpandedModelKeyChange:s,activeView:c,setView:l,variantTarget:u,onVariantTargetChange:d,selectedProviderID:f,selectedModelID:p,resolveSelectedVariant:m,onSelect:h,providers:g,favoriteModels:_,recentModels:v,hiddenModels:y,allowedProviderIds:b,allowedModelIdsByProvider:x,providerOrder:S,variantSelectionEnabled:C,isFavorite:w,onToggleFavorite:ee,getMetadata:T}=e,{t:E}=ue(),D;t[0]===b?D=t[1]:(D=b&&b.length>0?new Set(b):null,t[0]=b,t[1]=D);let O=D,k;t[2]===x?k=t[3]:(k=x?new Map(Object.entries(x).map(Er)):null,t[2]=x,t[3]=k);let A=k,j;t[4]===y?j=t[5]:(j=new Set(y.map(Dr)),t[4]=y,t[5]=j);let te=j,ne;t[6]===g?ne=t[7]:(ne=new Map(g.map(Or)),t[6]=g,t[7]=ne);let M=ne,re;bb0:{if(!S?.length){re=g;break bb0}let e;t[8]===S?e=t[9]:(e=new Map(S.map(kr)),t[8]=S,t[9]=e);let n=e,r;if(t[10]!==g||t[11]!==n){let e;t[13]===n?e=t[14]:(e=(e,t)=>{let r=n.get(e.id),i=n.get(t.id);return r===void 0&&i===void 0?0:r===void 0?1:i===void 0?-1:r-i},t[13]=n,t[14]=e),r=[...g].sort(e),t[10]=g,t[11]=n,t[12]=r}else r=t[12];re=r}let N=re,ie;t[15]!==A||t[16]!==O||t[17]!==te?(ie=(e,t)=>O&&!O.has(e)||A&&A.get(e)?.has(t)!==!0?!1:!te.has(`${e}:${t}`),t[15]=A,t[16]=O,t[17]=te,t[18]=ie):ie=t[18];let P=ie,ae;t[19]!==M||t[20]!==n?(ae=e=>{let t=n.trim();if(!t)return!0;let r=M.get(e.providerID)?.name||e.providerID,i=he(e.model,e.modelID,{maxLength:40});return je(i,t)||je(e.modelID,t)||je(r,t)},t[19]=M,t[20]=n,t[21]=ae):ae=t[21];let F=ae,I;if(t[22]!==_||t[23]!==P||t[24]!==F){let e;t[26]!==P||t[27]!==F?(e=e=>P(e.providerID,e.modelID)&&F(e),t[26]=P,t[27]=F,t[28]=e):e=t[28],I=_.filter(e),t[22]=_,t[23]=P,t[24]=F,t[25]=I}else I=t[25];let L=I,oe;if(t[29]!==P||t[30]!==F||t[31]!==v){let e;t[33]!==P||t[34]!==F?(e=e=>P(e.providerID,e.modelID)&&F(e),t[33]=P,t[34]=F,t[35]=e):e=t[35],oe=v.filter(e),t[29]=P,t[30]=F,t[31]=v,t[32]=oe}else oe=t[32];let R=oe,se;if(t[36]!==O||t[37]!==P||t[38]!==N||t[39]!==n){let e=n.trim(),r;t[41]===O?r=t[42]:(r=e=>!O||O.has(e.id),t[41]=O,t[42]=r),se=N.filter(r).map(t=>{let n=e.length>0&&(je(t.name||t.id,e)||je(t.id,e));return{provider:t,models:(t.models??[]).filter(r=>{let i=typeof r.id==`string`?r.id:``;return!i||!P(t.id,i)?!1:n||!e?!0:je(he(r,i,{maxLength:40}),e)||je(i,e)})}}).filter(Ar),t[36]=O,t[37]=P,t[38]=N,t[39]=n,t[40]=se}else se=t[40];let z=se,ce;t[43]===E?ce=t[44]:(ce=e=>{if(!e?.trim())return E(`chat.modelControls.default`);let t=e.trim();return/^\d+(\.\d+)?$/.test(t)?t:t.charAt(0).toUpperCase()+t.slice(1)},t[43]=E,t[44]=ce);let le=ce,B;t[45]===E?B=t[46]:(B=e=>{let t=[];e?.tool_call&&t.push({key:`tool_call`,icon:`tools`,label:E(`chat.modelControls.capability.toolCalling`)}),e?.reasoning&&t.push({key:`reasoning`,icon:`brain-ai-3`,label:E(`chat.modelControls.capability.reasoning`)});let n={text:{icon:`text`,label:E(`chat.modelControls.modality.text`)},image:{icon:`file-image`,label:E(`chat.modelControls.modality.image`)},video:{icon:`file-video`,label:E(`chat.modelControls.modality.video`)},audio:{icon:`file-music`,label:E(`chat.modelControls.modality.audio`)},pdf:{icon:`file-pdf`,label:E(`chat.modelControls.modality.pdf`)}};for(let r of[...e?.modalities?.input??[],...e?.modalities?.output??[]]){let e=r.trim().toLowerCase(),i=n[e];i&&!t.some(t=>t.key===e)&&t.push({key:e,...i})}return t},t[45]=E,t[46]=B);let de=B,fe;t[47]!==d||t[48]!==l?(fe=(e,t,n)=>{d(n===void 0?{providerID:e,modelID:t}:{providerID:e,modelID:t,variant:n}),l(`variant`)},t[47]=d,t[48]=l,t[49]=fe):fe=t[49];let pe=fe,me;t[50]===Symbol.for(`react.memo_cache_sentinel`)?(me={onPointerDown:Re,onClickCapture:jr},t[50]=me):me=t[50];let V=me,ge;t[51]!==o||t[52]!==le||t[53]!==T||t[54]!==de||t[55]!==w||t[56]!==s||t[57]!==h||t[58]!==ee||t[59]!==pe||t[60]!==M||t[61]!==g||t[62]!==m||t[63]!==p||t[64]!==f||t[65]!==E||t[66]!==C?(ge=(e,t)=>{let n=t===void 0?{}:t,{model:r,providerID:i,modelID:a}=e,c=`${i}:${a}`,l=i===f&&a===p,u=Be(i,r,T?.(i,a)),d=C?Cr(g,i,a):[],_=m(i,a),v=n.preferRememberedVariant&&e.variant!==void 0&&d.includes(e.variant)?e.variant:void 0,y=v===void 0?_:v,b=l||v===void 0?_:v,x=[void 0,...d].slice(0,xr),S=o===c,D=de(u),O=u?.limit?.context?`${Sr(u.limit.context)} ctx`:null;return(0,Z.jsxs)(`div`,{className:U(`border-b border-border/30 last:border-b-0`,l&&`bg-interactive-selection/15 text-interactive-selection-foreground`),children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-1.5`,children:[(0,Z.jsx)(`button`,{type:`button`,...V,onClick:()=>h(i,a,y),className:`flex min-w-0 flex-1 items-start gap-2 rounded-lg text-left focus:outline-none focus-visible:ring-1 focus-visible:ring-primary`,children:(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[n.showProvider?(0,Z.jsx)(`span`,{className:`truncate text-[10px] leading-none text-muted-foreground/60`,children:M.get(i)?.name||i}):null,(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,Z.jsx)(Pe,{modelId:a,providerId:i,className:`size-3.5 flex-shrink-0`}),(0,Z.jsx)(`span`,{className:`truncate typography-meta font-medium text-foreground`,children:he(r,a,{maxLength:40})}),l?(0,Z.jsx)(G,{name:`check`,className:`size-4 flex-shrink-0 text-primary`}):null]}),O||D.length>0?(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5 overflow-hidden typography-micro text-muted-foreground`,children:[O?(0,Z.jsx)(`span`,{className:`flex-shrink-0 whitespace-nowrap`,children:O}):null,O&&D.length>0?(0,Z.jsx)(`span`,{"aria-hidden":`true`,className:`h-3 w-px flex-shrink-0 bg-border/50`}):null,(0,Z.jsx)(`div`,{className:`flex min-w-0 items-center gap-1 overflow-hidden whitespace-nowrap pl-0.5`,children:D.map(e=>{let{key:t,icon:n,label:r}=e;return(0,Z.jsx)(`span`,{className:`flex size-4 flex-shrink-0 items-center justify-center text-muted-foreground`,title:r,"aria-label":r,children:(0,Z.jsx)(G,{name:n,className:`size-3`})},`${c}-${t}`)})})]}):null]})}),d.length>0?(0,Z.jsxs)(`button`,{type:`button`,...V,onClick:()=>s(e=>e===c?null:c),className:`flex flex-shrink-0 items-center gap-0.5 typography-micro font-medium text-muted-foreground hover:text-foreground`,"aria-expanded":S,"aria-label":E(S?`chat.modelControls.hideThinkingModes`:`chat.modelControls.showThinkingModes`),children:[(0,Z.jsx)(`span`,{className:`whitespace-nowrap`,children:le(b)}),(0,Z.jsx)(G,{name:S?`arrow-down-s`:`arrow-right-s`,className:`size-3.5`})]}):null,(0,Z.jsx)(`button`,{type:`button`,...V,onClick:e=>{e.preventDefault(),e.stopPropagation(),ee(i,a)},className:U(`model-favorite-button flex size-5 flex-shrink-0 items-center justify-center hover:text-primary/80`,w(i,a)?`text-primary`:`text-muted-foreground`),"aria-label":w(i,a)?E(`chat.modelControls.unfavoriteAria`):E(`chat.modelControls.favoriteAria`),title:w(i,a)?E(`chat.modelControls.removeFromFavorites`):E(`chat.modelControls.addToFavorites`),children:(0,Z.jsx)(G,{name:w(i,a)?`star-fill`:`star`,className:`size-4`})})]}),S&&d.length>0?(0,Z.jsx)(`div`,{className:`border-t border-border/30 p-2`,children:(0,Z.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[x.map(e=>{let t=e===b||!e&&!b;return(0,Z.jsx)(`button`,{type:`button`,...V,onClick:()=>h(i,a,e),className:U(`inline-flex items-center rounded-full border px-2.5 py-1 typography-meta font-medium`,t?`border-primary/30 bg-primary/10 text-foreground`:`border-border/40 text-muted-foreground hover:bg-interactive-hover/50`),"aria-pressed":t,children:le(e)},`${c}-${e??`default`}`)}),x.length<d.length+1?(0,Z.jsx)(`button`,{type:`button`,...V,onClick:()=>pe(i,a,b),className:`inline-flex items-center rounded-full border border-border/40 px-2.5 py-1 typography-meta font-medium text-muted-foreground hover:bg-interactive-hover/50`,"aria-label":E(`chat.modelControls.moreThinkingModes`),children:E(`inlineComment.actions.showMore`)}):null]})}):null]},`mobile-model-${c}`)},t[51]=o,t[52]=le,t[53]=T,t[54]=de,t[55]=w,t[56]=s,t[57]=h,t[58]=ee,t[59]=pe,t[60]=M,t[61]=g,t[62]=m,t[63]=p,t[64]=f,t[65]=E,t[66]=C,t[67]=ge):ge=t[67];let _e=ge,ve,ye,be,xe,Se,Ce,we,H,W,Te;if(t[68]!==c||t[69]!==i||t[70]!==L||t[71]!==z||t[72]!==R||t[73]!==le||t[74]!==s||t[75]!==a||t[76]!==r||t[77]!==h||t[78]!==g||t[79]!==n||t[80]!==_e||t[81]!==m||t[82]!==p||t[83]!==f||t[84]!==E||t[85]!==u){let e=u??(c===`variant`&&f&&p?{providerID:f,modelID:p}:null),o=e?Cr(g,e.providerID,e.modelID):[],l;bb1:{if(!e){l=void 0;break bb1}if(e.providerID===f&&e.modelID===p){l=m(e.providerID,e.modelID);break bb1}l=(e.variant!==void 0&&o.includes(e.variant)?e.variant:void 0)??m(e.providerID,e.modelID)}let d=l,_=L.length>0||R.length>0||z.length>0,v=c===`variant`&&!!e;W=`flex min-h-0 flex-1 flex-col gap-2`,t[96]!==v||t[97]!==s||t[98]!==r||t[99]!==n||t[100]!==E?(Te=v?null:(0,Z.jsxs)(`div`,{className:`relative z-10 shrink-0`,"data-mobile-sheet-no-dismiss":``,"data-mobile-sheet-search":``,children:[(0,Z.jsx)(G,{name:`search`,className:`pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground`}),(0,Z.jsx)(Ve,{type:`text`,value:n,onChange:e=>{r(e.target.value),s(null)},onPointerUp:Mr,placeholder:E(`chat.modelControls.searchProvidersOrModels`),className:`h-9 rounded-xl border-border/40 bg-[var(--surface-elevated)] pl-7 typography-meta`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,enterKeyHint:`search`,inputMode:`search`}),n?(0,Z.jsx)(`button`,{type:`button`,onClick:()=>{r(``),s(null)},className:`absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,"aria-label":E(`chat.modelControls.clearSearch`),children:(0,Z.jsx)(G,{name:`close-circle`,className:`size-4`})}):null]}),t[96]=v,t[97]=s,t[98]=r,t[99]=n,t[100]=E,t[101]=Te):Te=t[101],ve=qe,xe=!0,Se=!0,Ce=!0,we=`min-h-0 flex-1`,H=`overscroll-contain`,ye=`flex flex-col gap-2`,be=v&&e?(0,Z.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:[void 0,...o].map(t=>{let n=t===d||!t&&!d;return(0,Z.jsxs)(`button`,{type:`button`,className:U(`flex w-full items-center justify-between gap-2 rounded-xl border px-2 py-1.5 text-left focus:outline-none focus-visible:ring-1 focus-visible:ring-primary`,n?`border-primary/30 bg-primary/10`:`border-border/40`),...V,onClick:()=>h(e.providerID,e.modelID,t),children:[(0,Z.jsx)(`span`,{className:`typography-meta font-medium text-foreground`,children:le(t)}),n?(0,Z.jsx)(G,{name:`check`,className:`size-4 flex-shrink-0 text-primary`}):null]},t??`default`)})}):(0,Z.jsxs)(Z.Fragment,{children:[_?null:(0,Z.jsx)(`div`,{className:`px-3 py-8 text-center typography-meta text-muted-foreground`,children:E(`chat.modelControls.noProvidersOrModelsFound`)}),L.length>0?(0,Z.jsxs)(`div`,{className:`overflow-hidden rounded-xl border border-border/40 bg-[var(--surface-elevated)]`,children:[(0,Z.jsxs)(`div`,{className:`px-2 py-1.5 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:[(0,Z.jsx)(G,{name:`star-fill`,className:`mr-1.5 inline-block size-3 text-primary`}),E(`chat.modelControls.favorites`)]}),(0,Z.jsx)(`div`,{className:`flex flex-col border-t border-border/30`,children:L.map(e=>_e(e,{showProvider:!0,preferRememberedVariant:!0}))})]}):null,R.length>0?(0,Z.jsxs)(`div`,{className:`overflow-hidden rounded-xl border border-border/40 bg-[var(--surface-elevated)]`,children:[(0,Z.jsxs)(`div`,{className:`px-2 py-1.5 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:[(0,Z.jsx)(G,{name:`time`,className:`mr-1.5 inline-block size-3`}),E(`chat.modelControls.recent`)]}),(0,Z.jsx)(`div`,{className:`flex flex-col border-t border-border/30`,children:R.map(e=>_e(e,{showProvider:!0,preferRememberedVariant:!0}))})]}):null,z.map(e=>{let{provider:t,models:r}=e,o=i.has(t.id)||n.trim().length>0;return(0,Z.jsxs)(`div`,{className:`overflow-hidden rounded-xl border border-border/40 bg-[var(--surface-elevated)]`,children:[(0,Z.jsxs)(`button`,{type:`button`,...V,onClick:()=>{n.trim()||a(e=>{let n=new Set(e);return n.has(t.id)?n.delete(t.id):n.add(t.id),n})},className:`flex w-full items-center justify-between gap-1.5 px-2 py-1.5 text-left`,"aria-expanded":o,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(Ie,{providerId:t.id,className:`size-3.5`}),(0,Z.jsx)(`span`,{className:`typography-meta font-medium text-foreground`,children:t.name||t.id}),t.id===f?(0,Z.jsx)(`span`,{className:`typography-micro text-primary/80`,children:E(`chat.modelControls.current`)}):null]}),(0,Z.jsx)(G,{name:o?`arrow-down-s`:`arrow-right-s`,className:`size-3 text-muted-foreground`})]}),o?(0,Z.jsx)(`div`,{className:`flex flex-col border-t border-border/30`,children:r.map(e=>_e({model:e,providerID:t.id,modelID:e.id}))}):null]},t.id)})]}),t[68]=c,t[69]=i,t[70]=L,t[71]=z,t[72]=R,t[73]=le,t[74]=s,t[75]=a,t[76]=r,t[77]=h,t[78]=g,t[79]=n,t[80]=_e,t[81]=m,t[82]=p,t[83]=f,t[84]=E,t[85]=u,t[86]=ve,t[87]=ye,t[88]=be,t[89]=xe,t[90]=Se,t[91]=Ce,t[92]=we,t[93]=H,t[94]=W,t[95]=Te}else ve=t[86],ye=t[87],be=t[88],xe=t[89],Se=t[90],Ce=t[91],we=t[92],H=t[93],W=t[94],Te=t[95];let Ee;t[102]!==ye||t[103]!==be?(Ee=(0,Z.jsx)(`div`,{className:ye,children:be}),t[102]=ye,t[103]=be,t[104]=Ee):Ee=t[104];let De;t[105]!==ve||t[106]!==xe||t[107]!==Se||t[108]!==Ce||t[109]!==we||t[110]!==H||t[111]!==Ee?(De=(0,Z.jsx)(ve,{useScrollShadow:xe,disableHorizontal:Se,preventOverscroll:Ce,outerClassName:we,className:H,children:Ee}),t[105]=ve,t[106]=xe,t[107]=Se,t[108]=Ce,t[109]=we,t[110]=H,t[111]=Ee,t[112]=De):De=t[112];let Oe;return t[113]!==W||t[114]!==Te||t[115]!==De?(Oe=(0,Z.jsxs)(`div`,{className:W,children:[Te,De]}),t[113]=W,t[114]=Te,t[115]=De,t[116]=Oe):Oe=t[116],Oe};function Er(e){let[t,n]=e;return[t,new Set(n)]}function Dr(e){return`${e.providerID}:${e.modelID}`}function Or(e){return[e.id,e]}function kr(e,t){return[e,t]}function Ar(e){return e.models.length>0}function jr(e){Ae(e)||(e.preventDefault(),e.stopPropagation())}function Mr(e){document.activeElement!==e.currentTarget&&e.currentTarget.focus({preventScroll:!0})}var Nr=e=>{let t=(0,K.c)(217),{providerId:n,modelId:r,variant:i,onChange:a,className:o,allowedProviderIds:s,allowedModelIdsByProvider:c,placeholder:l,tooltipsEnabled:u,dropdownPortalToBody:d,showIcon:f,providers:p}=e,m=u===void 0||u,h=d!==void 0&&d,g=f===void 0||f,{t:_}=ue(),{isReady:v,isUnavailable:y}=er(),b=V(Pr),x=p??b,S=V(Fr),C=O(Ir),w=O(Lr),ee=O(Rr),T=O(zr),E=O(Br),D=O(Vr),k;t[0]!==r||t[1]!==n?(k={currentProviderID:n,currentModelID:r},t[0]=r,t[1]=n,t[2]=k):k=t[2];let{favoriteModelsList:A,recentModelsList:j}=Me(k),{isMobile:te}=Ue(),ne=C||te,[M,re]=Q.useState(!1),[N,ie]=Q.useState(!1),P;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(P=()=>{re(!0),V.getState().refreshCatalogsOnPickerOpen({source:`modelSelector:mobilePanel`})},t[3]=P):P=t[3];let ae=le(P),F;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(F=e=>{ie(e),e&&V.getState().refreshCatalogsOnPickerOpen({source:`modelSelector:desktopMenu`})},t[4]=F):F=t[4];let I=le(F),[L,oe]=Q.useState(``),[R,se]=Q.useState(null),z=i!==void 0,ce;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(ce=()=>{re(!1),ie(!1),oe(``),se(null)},t[5]=ce):ce=t[5];let B=ce,de;t[6]===x?de=t[7]:(de=e=>{let t=x.find(t=>t.id===e.providerID)?.models?.find(t=>t.id===e.modelID);return t?.variants?Object.keys(t.variants):[]},t[6]=x,t[7]=de);let fe=de,pe;t[8]!==E||t[9]!==fe||t[10]!==r||t[11]!==a||t[12]!==n||t[13]!==i||t[14]!==z?(pe=e=>{let t=fe(e),o=e.providerID===n&&e.modelID===r,s=e.variant!==void 0&&t.includes(e.variant)?e.variant:void 0,c=o&&i&&t.includes(i)?i:s??``;a(e.providerID,e.modelID,z?c:void 0),E(e.providerID,e.modelID,z&&c||void 0),B()},t[8]=E,t[9]=fe,t[10]=r,t[11]=a,t[12]=n,t[13]=i,t[14]=z,t[15]=pe):pe=t[15];let me=pe,he;t[16]!==a||t[17]!==z?(he=()=>{a(``,``,z?``:void 0),B()},t[16]=a,t[17]=z,t[18]=he):he=t[18];let ge=he,_e;t[19]!==E||t[20]!==a||t[21]!==R?(_e=e=>{R&&(a(R.providerID,R.modelID,e),E(R.providerID,R.modelID,e||void 0),B())},t[19]=E,t[20]=a,t[21]=R,t[22]=_e):_e=t[22];let ve=_e,ye;t[23]===_?ye=t[24]:(ye=_(`settings.agents.modelSelector.searchPlaceholder`),t[23]=_,t[24]=ye);let be;t[25]===_?be=t[26]:(be=_(`settings.agents.modelSelector.state.noModelsFound`),t[25]=_,t[26]=be);let xe;t[27]===_?xe=t[28]:(xe=_(`settings.agents.modelSelector.section.favorites`),t[27]=_,t[28]=xe);let Se;t[29]===_?Se=t[30]:(Se=_(`settings.agents.modelSelector.section.recent`),t[29]=_,t[30]=Se);let Ce;t[31]===_?Ce=t[32]:(Ce=_(`settings.agents.modelSelector.keyboardHints`),t[31]=_,t[32]=Ce);let we;t[33]!==l||t[34]!==_?(we=l||_(`settings.agents.modelSelector.notSelected`),t[33]=l,t[34]=_,t[35]=we):we=t[35];let H;t[36]===_?H=t[37]:(H=_(`settings.agents.modelSelector.actions.favorite`),t[36]=_,t[37]=H);let W;t[38]===_?W=t[39]:(W=_(`settings.agents.modelSelector.actions.unfavorite`),t[38]=_,t[39]=W);let Te;t[40]===_?Te=t[41]:(Te=_(`chat.modelControls.provider`),t[40]=_,t[41]=Te);let Ee;t[42]===_?Ee=t[43]:(Ee=_(`chat.modelControls.capabilities`),t[42]=_,t[43]=Ee);let De;t[44]===_?De=t[45]:(De=_(`chat.modelControls.capability.toolCalling`),t[44]=_,t[45]=De);let Oe;t[46]===_?Oe=t[47]:(Oe=_(`chat.modelControls.capability.reasoning`),t[46]=_,t[47]=Oe);let ke;t[48]===_?ke=t[49]:(ke=_(`chat.modelControls.modality.image`),t[48]=_,t[49]=ke);let Ae;t[50]===_?Ae=t[51]:(Ae=_(`chat.modelControls.modality.video`),t[50]=_,t[51]=Ae);let je;t[52]===_?je=t[53]:(je=_(`chat.modelControls.modality.audio`),t[52]=_,t[53]=je);let Ne;t[54]===_?Ne=t[55]:(Ne=_(`chat.modelControls.costPerMillion`),t[54]=_,t[55]=Ne);let Ie;t[56]===_?Ie=t[57]:(Ie=_(`chat.modelControls.costInput`),t[56]=_,t[57]=Ie);let Le;t[58]===_?Le=t[59]:(Le=_(`chat.modelControls.costOutput`),t[58]=_,t[59]=Le);let Re;t[60]!==ye||t[61]!==be||t[62]!==xe||t[63]!==Se||t[64]!==Ce||t[65]!==we||t[66]!==H||t[67]!==W||t[68]!==Te||t[69]!==Ee||t[70]!==De||t[71]!==Oe||t[72]!==ke||t[73]!==Ae||t[74]!==je||t[75]!==Ne||t[76]!==Ie||t[77]!==Le?(Re={searchPlaceholder:ye,noResults:be,favorites:xe,recent:Se,keyboardHint:Ce,notSelected:we,favorite:H,unfavorite:W,provider:Te,capabilities:Ee,capabilityToolCalling:De,capabilityReasoning:Oe,modalityImage:ke,modalityVideo:Ae,modalityAudio:je,costPerMillion:Ne,costInput:Ie,costOutput:Le},t[60]=ye,t[61]=be,t[62]=xe,t[63]=Se,t[64]=Ce,t[65]=we,t[66]=H,t[67]=W,t[68]=Te,t[69]=Ee,t[70]=De,t[71]=Oe,t[72]=ke,t[73]=Ae,t[74]=je,t[75]=Ne,t[76]=Ie,t[77]=Le,t[78]=Re):Re=t[78];let ze=Re,Be;t[79]!==r||t[80]!==n?(Be=n&&r?{providerID:n,modelID:r}:null,t[79]=r,t[80]=n,t[81]=Be):Be=t[81];let Ve=Be,He;t[82]!==r||t[83]!==l||t[84]!==n||t[85]!==_?(He=n&&r?`${n}/${r}`:l||_(`settings.agents.modelSelector.notSelected`),t[82]=r,t[83]=l,t[84]=n,t[85]=_,t[86]=He):He=t[86];let We=He,Ge;t[87]!==_||t[88]!==i||t[89]!==z?(Ge=z?i||_(`chat.modelControls.default`):null,t[87]=_,t[88]=i,t[89]=z,t[90]=Ge):Ge=t[90];let Ke=Ge,qe;t[91]!==r||t[92]!==n||t[93]!==i||t[94]!==z?(qe=(e,t)=>{if(!(!z||e!==n||t!==r))return i||void 0},t[91]=r,t[92]=n,t[93]=i,t[94]=z,t[95]=qe):qe=t[95];let Je=qe,Ye;t[96]!==E||t[97]!==a||t[98]!==z?(Ye=(e,t,n)=>{a(e,t,z?n??``:void 0),E(e,t,z&&n||void 0),B()},t[96]=E,t[97]=a,t[98]=z,t[99]=Ye):Ye=t[99];let Xe=Ye,Ze;t[100]!==fe||t[101]!==_||t[102]!==i||t[103]!==z?(Ze=(e,t)=>{let n=fe(e);if(!z||n.length===0)return null;let r=e.variant!==void 0&&n.includes(e.variant)?e.variant:void 0,a=t.isSelected?i:r??``;return(0,Z.jsxs)(`button`,{type:`button`,className:`flex min-h-9 shrink-0 items-center gap-0.5 rounded-md px-1.5 typography-micro font-medium text-muted-foreground hover:bg-interactive-hover hover:text-foreground`,onClick:t=>{t.preventDefault(),t.stopPropagation(),se(e)},"aria-label":_(`chat.modelControls.showThinkingModes`),children:[(0,Z.jsx)(`span`,{className:`max-w-24 truncate`,children:a||_(`chat.modelControls.default`)}),(0,Z.jsx)(G,{name:`arrow-right-s`,className:`size-3.5`})]})},t[100]=fe,t[101]=_,t[102]=i,t[103]=z,t[104]=Ze):Ze=t[104];let Qe=Ze,$e=ne?`max-h-none flex-1`:void 0,et=m&&(ne?M:N),tt;t[105]===T?tt=t[106]:(tt=e=>T(e.providerID,e.modelID),t[105]=T,t[106]=tt);let nt;t[107]!==r||t[108]!==n||t[109]!==ee||t[110]!==i?(nt=e=>ee(e.providerID,e.modelID,e.providerID===n&&e.modelID===r?i||void 0:e.variant),t[107]=r,t[108]=n,t[109]=ee,t[110]=i,t[111]=nt):nt=t[111];let rt;t[112]!==c||t[113]!==s||t[114]!==A||t[115]!==S||t[116]!==me||t[117]!==ge||t[118]!==w||t[119]!==ze||t[120]!==D||t[121]!==x||t[122]!==j||t[123]!==Qe||t[124]!==L||t[125]!==Ve||t[126]!==$e||t[127]!==et||t[128]!==tt||t[129]!==nt?(rt=(0,Z.jsx)(Fe,{providers:x,providerOrder:D,favoriteModels:A,recentModels:j,getMetadata:S,searchQuery:L,onSearchQueryChange:oe,onSelect:me,labels:ze,selectedModel:Ve,hiddenModels:w,allowedProviderIds:s,allowedModelIdsByProvider:c,includeNotSelected:!0,onSelectNone:ge,onEscape:B,maxHeightClassName:$e,tooltipsEnabled:et,isFavorite:tt,onToggleFavorite:nt,renderRowEnd:Qe}),t[112]=c,t[113]=s,t[114]=A,t[115]=S,t[116]=me,t[117]=ge,t[118]=w,t[119]=ze,t[120]=D,t[121]=x,t[122]=j,t[123]=Qe,t[124]=L,t[125]=Ve,t[126]=$e,t[127]=et,t[128]=tt,t[129]=nt,t[130]=rt):rt=t[130];let it=rt,q;t[131]!==fe||t[132]!==R?(q=R?fe(R):[],t[131]=fe,t[132]=R,t[133]=q):q=t[133];let J=q,Y;bb0:{if(!R){Y=``;break bb0}if(R.providerID===n&&R.modelID===r){Y=i||``;break bb0}Y=R.variant!==void 0&&J.includes(R.variant)?R.variant:``}let X=Y,at;t[134]!==ve||t[135]!==_||t[136]!==R||t[137]!==X||t[138]!==J?(at=R?(0,Z.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,Z.jsxs)(`button`,{type:`button`,className:`flex min-h-11 items-center gap-2 border-b border-border/40 px-3 text-left typography-ui-label font-medium text-foreground hover:bg-interactive-hover`,onClick:()=>se(null),"aria-label":_(`header.actions.backAria`),children:[(0,Z.jsx)(G,{name:`arrow-left`,className:`size-4`}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:R.modelID})]}),(0,Z.jsx)(`div`,{className:`space-y-1 p-2`,role:`listbox`,"aria-label":_(`chat.modelControls.thinking`),children:[``,...J].map(e=>{let t=X===e;return(0,Z.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":t,className:U(`flex min-h-11 w-full items-center justify-between rounded-lg px-3 text-left typography-ui-label transition-colors`,t?`bg-interactive-selection text-interactive-selection-foreground`:`hover:bg-interactive-hover`),onClick:()=>ve(e),children:[(0,Z.jsx)(`span`,{className:`truncate`,children:e||_(`chat.modelControls.default`)}),t?(0,Z.jsx)(G,{name:`check`,className:`size-4 shrink-0`}):null]},e||`__default`)})})]}):null,t[134]=ve,t[135]=_,t[136]=R,t[137]=X,t[138]=J,t[139]=at):at=t[139];let ot=at||it;if(ne){let e=v?ae:void 0,a=!v,l=!v&&`opacity-60 cursor-not-allowed`,u;t[140]!==o||t[141]!==l?(u=U(`flex w-full items-center justify-between gap-2 rounded-lg border border-border/40 bg-[var(--surface-elevated)] px-2 py-1.5 text-left`,l,o),t[140]=o,t[141]=l,t[142]=u):u=t[142];let d;t[143]!==v||t[144]!==y||t[145]!==r||t[146]!==n||t[147]!==g||t[148]!==_?(d=v?g&&(n||r)?(0,Z.jsx)(Pe,{modelId:r,providerId:n,className:`h-3.5 w-3.5 flex-shrink-0`}):g?(0,Z.jsx)(G,{name:`pencil-ai`,className:`h-3 w-3 text-muted-foreground`}):null:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(G,{name:`loader-4`,className:`h-3.5 w-3.5 animate-spin text-muted-foreground`}),(0,Z.jsx)(`span`,{className:`typography-meta text-muted-foreground`,children:_(y?`common.unavailable`:`common.loading`)})]}),t[143]=v,t[144]=y,t[145]=r,t[146]=n,t[147]=g,t[148]=_,t[149]=d):d=t[149];let f;t[150]!==v||t[151]!==We?(f=v?(0,Z.jsx)(`span`,{className:`typography-meta font-medium text-foreground truncate`,children:We}):null,t[150]=v,t[151]=We,t[152]=f):f=t[152];let p;t[153]!==v||t[154]!==Ke?(p=v&&Ke?(0,Z.jsx)(`span`,{className:`shrink-0 typography-micro text-muted-foreground`,children:Ke}):null,t[153]=v,t[154]=Ke,t[155]=p):p=t[155];let m;t[156]!==d||t[157]!==f||t[158]!==p?(m=(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[d,f,p]}),t[156]=d,t[157]=f,t[158]=p,t[159]=m):m=t[159];let h;t[160]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,Z.jsx)(G,{name:`arrow-down-s`,className:`h-3 w-3 flex-shrink-0 text-muted-foreground`}),t[160]=h):h=t[160];let b;t[161]!==e||t[162]!==a||t[163]!==u||t[164]!==m?(b=(0,Z.jsxs)(`button`,{type:`button`,onClick:e,disabled:a,className:u,children:[m,h]}),t[161]=e,t[162]=a,t[163]=u,t[164]=m,t[165]=b):b=t[165];let C;t[166]!==A||t[167]!==r||t[168]!==n||t[169]!==j||t[170]!==ee||t[171]!==i?(C=(e,t)=>ee(e,t,e===n&&t===r?i||void 0:A.find(n=>n.providerID===e&&n.modelID===t)?.variant??j.find(n=>n.providerID===e&&n.modelID===t)?.variant),t[166]=A,t[167]=r,t[168]=n,t[169]=j,t[170]=ee,t[171]=i,t[172]=C):C=t[172];let E;t[173]!==c||t[174]!==s||t[175]!==A||t[176]!==S||t[177]!==Xe||t[178]!==w||t[179]!==T||t[180]!==M||t[181]!==r||t[182]!==n||t[183]!==D||t[184]!==x||t[185]!==j||t[186]!==Je||t[187]!==C||t[188]!==z?(E=(0,Z.jsx)(wr,{open:M,onClose:B,selectedProviderID:n,selectedModelID:r,resolveSelectedVariant:Je,onSelect:Xe,providers:x,favoriteModels:A,recentModels:j,getMetadata:S,hiddenModels:w,allowedProviderIds:s,allowedModelIdsByProvider:c,providerOrder:D,variantSelectionEnabled:z,isFavorite:T,onToggleFavorite:C}),t[173]=c,t[174]=s,t[175]=A,t[176]=S,t[177]=Xe,t[178]=w,t[179]=T,t[180]=M,t[181]=r,t[182]=n,t[183]=D,t[184]=x,t[185]=j,t[186]=Je,t[187]=C,t[188]=z,t[189]=E):E=t[189];let O;return t[190]!==b||t[191]!==E?(O=(0,Z.jsxs)(Z.Fragment,{children:[b,E]}),t[190]=b,t[191]=E,t[192]=O):O=t[192],O}let st=v&&N,ct=v?I:void 0,lt=!v&&`opacity-60 cursor-not-allowed`,ut;t[193]!==o||t[194]!==lt?(ut=U(`border-input data-[placeholder]:text-muted-foreground flex min-w-0 items-center justify-between gap-2 rounded-lg border bg-transparent px-2 py-2 typography-ui-label whitespace-nowrap shadow-none outline-none hover:bg-interactive-hover data-[popup-open]:bg-interactive-active h-6 w-fit`,lt,o),t[193]=o,t[194]=lt,t[195]=ut):ut=t[195];let dt;t[196]!==v||t[197]!==y||t[198]!==r||t[199]!==n||t[200]!==g||t[201]!==_||t[202]!==We||t[203]!==Ke?(dt=v?(0,Z.jsxs)(Z.Fragment,{children:[g?n||r?(0,Z.jsx)(Pe,{modelId:r,providerId:n,className:`h-3.5 w-3.5 flex-shrink-0`}):(0,Z.jsx)(G,{name:`pencil-ai`,className:`h-3.5 w-3.5 flex-shrink-0 text-muted-foreground`}):null,(0,Z.jsx)(`span`,{className:`typography-ui-label min-w-0 flex-1 truncate text-left font-normal text-foreground`,children:We}),Ke?(0,Z.jsx)(`span`,{className:`shrink-0 typography-micro text-muted-foreground`,children:Ke}):null]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(G,{name:`loader-4`,className:`h-3.5 w-3.5 animate-spin text-muted-foreground flex-shrink-0`}),(0,Z.jsx)(`span`,{className:`typography-ui-label font-normal whitespace-nowrap text-muted-foreground`,children:_(y?`common.unavailable`:`common.loading`)})]}),t[196]=v,t[197]=y,t[198]=r,t[199]=n,t[200]=g,t[201]=_,t[202]=We,t[203]=Ke,t[204]=dt):dt=t[204];let ft;t[205]===Symbol.for(`react.memo_cache_sentinel`)?(ft=(0,Z.jsx)(G,{name:`arrow-down-s`,className:`h-4 w-4 flex-shrink-0 text-muted-foreground/50`}),t[205]=ft):ft=t[205];let pt;t[206]!==ut||t[207]!==dt?(pt=(0,Z.jsx)(qn,{asChild:!0,children:(0,Z.jsxs)(`div`,{className:ut,children:[dt,ft]})}),t[206]=ut,t[207]=dt,t[208]=pt):pt=t[208];let mt;t[209]!==h||t[210]!==ot?(mt=(0,Z.jsx)(Jn,{className:`w-[min(380px,calc(100vw-2rem))] p-0 flex flex-col`,align:`start`,portalToBody:h,children:ot}),t[209]=h,t[210]=ot,t[211]=mt):mt=t[211];let ht;return t[212]!==st||t[213]!==ct||t[214]!==pt||t[215]!==mt?(ht=(0,Z.jsxs)(Kn,{open:st,onOpenChange:ct,children:[pt,mt]}),t[212]=st,t[213]=ct,t[214]=pt,t[215]=mt,t[216]=ht):ht=t[216],ht};function Pr(e){return e.providers}function Fr(e){return e.getModelMetadata}function Ir(e){return e.isMobile}function Lr(e){return e.hiddenModels}function Rr(e){return e.toggleFavoriteModel}function zr(e){return e.isFavoriteModel}function Br(e){return e.addRecentModel}function Vr(e){return e.providerOrder}var Hr=e(E(),1),Ur=`mobile-overlay-root`,Wr=16,Gr=200,Kr=[],qr=0,Jr=``,Yr=0,Xr=()=>{if(typeof document>`u`)return null;let e=document.getElementById(Ur);return e||(e=document.createElement(`div`),e.id=Ur,document.body.appendChild(e)),e},Zr=({open:e,title:t,onClose:n,children:r,footer:i,className:a,contentMaxHeightClassName:o,renderHeader:s,containedBody:c=!1,closeAriaLabel:l})=>{let u=Q.useRef(null),d=Q.useRef(Symbol(`mobile-overlay`)),f=Q.useRef(n);f.current=n;let[p,m]=Q.useState(!1),[h,g]=Q.useState(!1);if(typeof document<`u`&&!u.current&&(u.current=Xr()),Q.useEffect(()=>{if(!e){m(!1),g(!1);return}let t=window.setTimeout(()=>m(!0),Wr),n=window.setTimeout(()=>g(!0),266);return()=>{window.clearTimeout(t),window.clearTimeout(n)}},[e]),Q.useLayoutEffect(()=>{if(e)return Yr===0&&window.dispatchEvent(new Event(`oc:mobile-overlay-opened`)),Yr+=1,()=>{Yr=Math.max(0,Yr-1),Yr===0&&window.dispatchEvent(new Event(`oc:mobile-overlay-closed`))}},[e]),Q.useEffect(()=>{if(!e)return;let t=d.current;Kr.push(t),qr===0&&(Jr=document.body.style.overflow),qr+=1,document.body.style.overflow=`hidden`;let n=e=>{e.key===`Escape`&&Kr[Kr.length-1]===t&&f.current()};return document.addEventListener(`keydown`,n),()=>{let e=Kr.lastIndexOf(t);e>=0&&Kr.splice(e,1),qr=Math.max(0,qr-1),qr===0&&(document.body.style.overflow=Jr),document.removeEventListener(`keydown`,n)}},[e]),!e||!u.current)return null;let _=o??`max-h-[min(70vh,520px)]`,v=(0,Z.jsx)(`div`,{className:U(`oc-keyboard-inset-surface fixed inset-0 z-[60] flex flex-col bg-[rgb(0_0_0_/_0.45)] transition-opacity duration-200 ease-out`,!h&&`oc-keyboard-inset-snap`,p?`opacity-100`:`opacity-0`),role:`dialog`,"aria-modal":`true`,"aria-label":t,onPointerDown:Ne,onClick:e=>{Le(e)&&n()},children:(0,Z.jsxs)(`div`,{className:U(`mt-auto flex max-h-[calc(100dvh-0.75rem)] min-h-0 w-full flex-col rounded-t-xl border-x border-t border-border/50 bg-background pb-[max(0.5rem,var(--oc-app-bottom-safe,0px),var(--oc-safe-area-bottom,env(safe-area-inset-bottom,0px)))] shadow-none pwa-overlay-panel`,`mx-auto max-w-lg`,a),style:{transform:p?`none`:`translateY(100%)`,transition:`transform ${Gr}ms cubic-bezier(0.32, 0.72, 0, 1)`},onClick:e=>e.stopPropagation(),children:[(()=>{let e=(0,Z.jsx)(`button`,{type:`button`,onClick:n,className:U(`flex items-center justify-center rounded-lg text-muted-foreground hover:bg-interactive-hover`,c?`size-11`:`h-8 w-8`),"aria-label":l??t,children:(0,Z.jsx)(G,{name:`close`,className:`h-4 w-4`})});return s?s(e):(0,Z.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border/40`,children:[(0,Z.jsx)(`h2`,{className:`typography-ui-label font-semibold text-foreground`,children:t}),e]})})(),c?(0,Z.jsx)(`div`,{className:U(`flex min-h-0 flex-1 flex-col overflow-hidden`,_),children:r}):(0,Z.jsx)(qe,{useScrollShadow:!0,disableHorizontal:!0,preventOverscroll:!0,outerClassName:U(`min-h-0 flex-1`,_),className:`px-2 py-2 pwa-overlay-scroll`,children:r}),i?(0,Z.jsx)(`div`,{className:`shrink-0 border-t border-border/40 px-3 py-2`,children:i}):null]})});return(0,Hr.createPortal)(v,u.current)},Qr=e=>e??i()?.github,$r=(e=t())=>c.github.auth(e),ei=async(e,t)=>{if(e)return e.authStatus();let n=await r(`/api/github/auth/status`,{method:`GET`,headers:{Accept:`application/json`},signal:t}),i=await n.json().catch(()=>null);if(!n.ok||!i)throw Error(i?.error||n.statusText||`Failed to load GitHub status`);return i},ti=(e,n=t())=>{let r=Qr(e);return{queryKey:$r(n),queryFn:async({signal:e})=>ei(r,e),retry:2}},ni=e=>!!e&&typeof e==`object`&&`authStatus`in e,ri=e=>{let t=(0,K.c)(5),n=ni(e)?e:void 0,r=ni(e)?void 0:e?.enabled,i;t[0]===n?i=t[1]:(i=ti(n),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i?(a={...i,enabled:r},t[2]=r,t[3]=i,t[4]=a):a=t[4],M(a)},ii=(e=u,n=t())=>e.getQueryData($r(n))??null,ai=async(e,n,r)=>t()===r?e.fetchQuery({...ti(n,r),staleTime:0}):e.getQueryData($r(r))??null,oi=(e=u,n,r=t())=>{e.setQueryData($r(r),n)},si=P.define(ce),ci=R.data.of({commentTokens:{line:`//`,block:{open:`/*`,close:`*/`}}});function li(e){let t=e.trim().toLowerCase();switch(t){case`bash`:case`sh`:case`zsh`:case`shell`:case`shellsession`:case`console`:return si;case`json`:case`jsonc`:case`json5`:return oe().language;case`js`:case`javascript`:return I().language;case`jsx`:return I({jsx:!0}).language;case`ts`:case`typescript`:return I({typescript:!0}).language;case`tsx`:return I({typescript:!0,jsx:!0}).language;case`html`:return L().language;case`css`:return F().language;case`py`:case`python`:return z().language;case`md`:case`markdown`:case`mdown`:case`mkd`:return se().language;case`heex`:case`eex`:case`leex`:return L().language;default:return ae.matchLanguageName(Je,t,!0)}}var ui=e=>e.split(`/`).pop()?.toLowerCase()??``,di=e=>{let t=ui(e);return t?ae.matchFilename(Je,t):null},fi=()=>re(ie.define([{tag:[N.heading1,N.heading2,N.heading3,N.heading4,N.heading5,N.heading6],fontWeight:`600`},{tag:N.strong,fontWeight:`600`},{tag:N.emphasis,fontStyle:`italic`},{tag:N.strikethrough,textDecoration:`line-through`},{tag:[N.link,N.url],color:`var(--markdown-link, currentColor)`,textDecoration:`underline`},{tag:N.monospace,color:`var(--markdown-inline-code, currentColor)`,backgroundColor:`var(--markdown-inline-code-bg, transparent)`},{tag:N.quote,color:`var(--markdown-blockquote, currentColor)`,fontStyle:`italic`},{tag:N.list,color:`color-mix(in srgb, var(--muted-foreground) 40%, var(--foreground) 60%)`},{tag:N.heading,color:`var(--markdown-heading1, currentColor)`}]));function pi(e){let t=e.toLowerCase();switch(ui(t)){case`makefile`:case`gnumakefile`:return si}let n=t.lastIndexOf(`.`),r=n>=0?t.slice(n+1):``;switch(r){case`ts`:case`tsx`:case`mts`:case`cts`:return I({typescript:!0,jsx:r===`tsx`});case`js`:case`jsx`:case`mjs`:case`cjs`:return I({typescript:!1,jsx:r===`jsx`});case`jsonc`:case`json5`:return[oe(),ci];case`json`:case`jsonl`:case`ndjson`:case`geojson`:return oe();case`css`:case`scss`:case`sass`:case`less`:return F();case`html`:case`htm`:case`xml`:case`drawio`:case`dio`:return L();case`md`:case`mdx`:case`markdown`:case`mdown`:case`mkd`:return[se({codeLanguages:li}),fi()];case`sh`:case`bash`:case`zsh`:case`fish`:case`env`:return si;case`py`:case`pyw`:case`pyi`:return z();default:return null}}async function mi(e){let t=di(e);if(!t)return null;if(t.support)return t.support;try{return await t.load()}catch{return null}}var hi=60,gi=400;function _i(e){let t=e.replace(/\s+/g,` `).trim();if(!t)return[];let n=t.match(/[^.!?…]+[.!?…]+["')\]]*\s*|[^.!?…]+$/g)??[t],r=[],i=``;for(let e of n)for(let t=0;t<e.length;t+=gi){let n=e.slice(t,t+gi);i&&i.length+n.length>gi&&(r.push(i.trim()),i=``),i+=n,i.length>=hi&&/[.!?…]["')\]]*\s*$/.test(i)&&(r.push(i.trim()),i=``)}if(i.trim()&&r.push(i.trim()),r.length>0&&r[0].length>120){let e=r[0],t=/[,;:]\s/g,n=-1,i;for(;(i=t.exec(e))!==null;){let e=i.index+1;if(!(e<40)){if(e>160)break;n=e;break}}if(n>0){let t=e.slice(0,n).trim(),i=e.slice(n).trim();r.splice(0,1,t,i)}}return r}var vi=null;function yi(){return vi||=new(window.AudioContext||window.webkitAudioContext),vi}function bi(){let[e,t]=(0,Q.useState)(!1),[n,i]=(0,Q.useState)(null),a=(0,Q.useRef)(null),o=(0,Q.useRef)(null),s=(0,Q.useCallback)(async()=>{try{let e=yi();e.state===`suspended`&&await e.resume();let t=e.createBuffer(1,1,22050),n=e.createBufferSource();n.buffer=t,n.connect(e.destination),n.start(0)}catch{}},[]),c=(0,Q.useCallback)(()=>{let e=o.current;if(e&&(e.cancelled=!0,e.abort.abort(),o.current=null),a.current){try{a.current.onended=null,a.current.stop()}catch{}a.current=null}t(!1)},[]),l=(0,Q.useCallback)(async(e,n)=>{c();let s=_i(e);if(s.length===0){i(`No text to speak`),n?.onError?.(`No text to speak`);return}i(null);let l={cancelled:!1,abort:new AbortController};o.current=l;let u=async e=>{let t=await r(`/api/dictation/tts/speak`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({text:e,...typeof n?.speakerId==`number`?{speakerId:n.speakerId}:{},...typeof n?.speed==`number`?{speed:n.speed}:{}}),signal:l.abort.signal});if(!t.ok){let e=await t.json().catch(()=>({error:`Unknown error`}));throw Error(e.error||`HTTP ${t.status}`)}return(await t.blob()).arrayBuffer()},d=async e=>{let t=yi();t.state===`suspended`&&await t.resume();let n=await t.decodeAudioData(e);l.cancelled||await new Promise(e=>{let r=t.createBufferSource();r.buffer=n,r.connect(t.destination),a.current=r,r.onended=()=>{a.current===r&&(a.current=null),e()},r.start(0)})};try{t(!0),n?.onStart?.();let e=u(s[0]);for(let t=0;t<s.length;t+=1){let n=await e;if(l.cancelled||(t+1<s.length&&(e=u(s[t+1])),await d(n),l.cancelled))return}t(!1),n?.onEnd?.()}catch(e){if(e.name===`AbortError`||l.cancelled)return;let r=e instanceof Error?e.message:`Failed to speak`;i(r),n?.onError?.(r),t(!1)}finally{o.current===l&&(o.current=null)}},[c]);return(0,Q.useEffect)(()=>()=>{c()},[c]),{isPlaying:e,error:n,speak:l,stop:c,unlockAudio:s}}var xi=new class{recognition=null;isListening=!1;currentLang=`en-US`;onResultCallback=null;onErrorCallback=null;restartOnEnd=!1;conversationMode=!1;isSpeaking=!1;audioContext=null;audioUnlockRequired=!1;isSupported(){let e=`SpeechRecognition`in window||`webkitSpeechRecognition`in window,t=`speechSynthesis`in window;return e&&t}getSupportDetails(){return{recognition:`SpeechRecognition`in window||`webkitSpeechRecognition`in window,synthesis:`speechSynthesis`in window,prefixed:!(`SpeechRecognition`in window)&&`webkitSpeechRecognition`in window,secureContext:window.isSecureContext}}setConversationMode(e){this.conversationMode=e,e||(this.restartOnEnd=!1)}isConversationMode(){return this.conversationMode}pauseListening(){if(this.restartOnEnd=!1,this.recognition)try{this.recognition.stop()}catch{}this.isListening=!1}resumeListening(){if(this.conversationMode,this.onResultCallback,this.isSpeaking,this.currentLang,this.conversationMode&&this.onResultCallback&&!this.isSpeaking)try{this.startListeningSync(this.currentLang,this.onResultCallback,this.onErrorCallback||void 0)}catch(e){console.error(`[BrowserVoiceService] Failed to resume listening:`,e)}}async checkMicrophonePermission(){try{return`permissions`in navigator&&(await navigator.permissions.query({name:`microphone`})).state===`granted`}catch{return!1}}async prepareListening(){if(!this.isSupported())throw Error(`Web Speech API not supported in this browser`);if(typeof navigator>`u`||typeof navigator.mediaDevices?.getUserMedia!=`function`)return!0;try{return(await navigator.mediaDevices.getUserMedia({audio:!0})).getTracks().forEach(e=>e.stop()),!0}catch(e){let t=typeof e==`object`&&e&&`name`in e?String(e.name):``;if(t===`NotAllowedError`)throw Error(`Microphone permission denied`);if(t===`NotFoundError`)throw Error(`No microphone found`);let n=e instanceof Error?e.message:`Unable to access microphone`;throw Error(n)}}startListeningSync(e,t,n){if(!this.isSupported()){let e=`Web Speech API not supported in this browser`;throw n?.(e),Error(e)}this.stopListening();let r=window.SpeechRecognition||window.webkitSpeechRecognition;if(!r){let e=`Web Speech API not supported in this browser`;throw n?.(e),Error(e)}let i=new r;this.recognition=i,this.currentLang=e,this.onResultCallback=t,this.onErrorCallback=n||null,i.continuous=!0,i.interimResults=!0,i.lang=e,i.onstart=()=>{this.isListening=!0,this.restartOnEnd=!0},i.onaudiostart=()=>{},i.onsoundstart=()=>{},i.onresult=e=>{e.results.length;let t=``,n=``;for(let r=e.resultIndex;r<e.results.length;r++){let i=e.results[r];i.isFinal?t+=i[0].transcript:n+=i[0].transcript}n&&this.onResultCallback?.(n,!1),t&&this.onResultCallback?.(t,!0)},i.onerror=e=>{if(e.error===`aborted`)return;let t=this.getErrorMessage(e.error);this.onErrorCallback?.(t),(e.error===`not-allowed`||e.error===`service-not-allowed`||e.error===`network`)&&(this.restartOnEnd=!1,this.isListening=!1)},i.onend=()=>{if(this.isListening=!1,this.restartOnEnd&&this.recognition&&!this.isSpeaking)try{this.recognition.start()}catch{}};try{i.start()}catch(e){let t=e instanceof Error?e.message:`Failed to start speech recognition`;throw n?.(t),Error(t)}}async startListening(e,t,n){this.startListeningSync(e,t,n)}stopListening(){if(this.restartOnEnd=!1,this.recognition){try{this.recognition.stop()}catch{}this.recognition=null}this.isListening=!1}getIsListening(){return this.isListening}getCurrentLang(){return this.currentLang}async resumeAudioContext(){this.audioContext||=new(window.AudioContext||window.webkitAudioContext),this.audioContext.state===`suspended`&&await this.audioContext.resume()}isAudioUnlockRequired(){return this.audioUnlockRequired}async unlockAudio(){try{let e=new Audio;if(e.src=`data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA`,e.volume=.01,await e.play(),await this.resumeAudioContext(),this.isMobileDevice()&&`speechSynthesis`in window){let e=new SpeechSynthesisUtterance(``);e.volume=0,window.speechSynthesis.speak(e),window.speechSynthesis.cancel()}return this.audioUnlockRequired=!1,!0}catch(e){return console.error(`[BrowserVoiceService] Failed to unlock audio:`,e),!1}}async speakText(e,t,n,r){if(!(`speechSynthesis`in window))throw Error(`Speech synthesis not supported`);await this.resumeAudioContext();let i=await this.waitForVoices();await new Promise(e=>setTimeout(e,50)),this.isSpeaking=!0,this.pauseListening(),window.speechSynthesis.cancel();let a=new SpeechSynthesisUtterance(e);a.lang=t,a.rate=r?.rate??1,a.pitch=r?.pitch??1,a.volume=r?.volume??1;let o=null;return r?.voiceName&&(o=i.find(e=>e.name===r.voiceName)||null,o?`${o.name}${o.lang}`:console.warn(`[BrowserVoiceService] Selected voice "${r.voiceName}" not found, falling back to language match`)),o||(o=this.findBestVoice(i,t),o?`${o.name}${o.lang}`:console.warn(`[BrowserVoiceService] No voice found for language: ${t}, using default`)),o&&(a.voice=o),`${e.length}${t}`,new Promise((e,t)=>{let r=!1;a.onstart=()=>{r=!0,e()},a.onend=()=>{this.isSpeaking=!1,n?.()},a.onerror=e=>{this.isSpeaking=!1,console.error(`[BrowserVoiceService] Speech synthesis error:`,e.error),(e.error===`not-allowed`||e.error===`interrupted`)&&(this.audioUnlockRequired=!0);let n=`Speech synthesis error: ${e.error||`unknown`}`;e.error===`not-allowed`?n=`Audio blocked by browser autoplay policy. Please interact with the page first.`:e.error===`interrupted`&&(n=`Speech was interrupted. Please try again.`),t(Error(n))},setTimeout(()=>{r||(console.warn(`[BrowserVoiceService] Speech start timeout - audio may be blocked`),this.audioUnlockRequired=!0)},2e3),window.speechSynthesis.speak(a)})}cancelSpeech(){`speechSynthesis`in window&&window.speechSynthesis.cancel()}getVoices(){return`speechSynthesis`in window?window.speechSynthesis.getVoices():[]}async waitForVoices(){if(!(`speechSynthesis`in window))return[];let e=window.speechSynthesis.getVoices();return e.length>0?e:new Promise(e=>{let t=()=>{e(window.speechSynthesis.getVoices()),window.speechSynthesis.onvoiceschanged=null};window.speechSynthesis.onvoiceschanged=t,setTimeout(()=>{e(window.speechSynthesis.getVoices()),window.speechSynthesis.onvoiceschanged=null},1e3)})}findBestVoice(e,t){let n=e.find(e=>e.lang===t);if(!n){let r=t.split(`-`)[0];n=e.find(e=>e.lang.startsWith(r))}return n||=e.find(e=>e.lang.startsWith(t.split(`-`)[0])&&e.localService),n||null}isMobileDevice(){if(typeof navigator>`u`)return!1;let e=navigator.userAgent.toLowerCase();return/iphone|ipad|ipod|android|mobile|webos|blackberry|iemobile|opera mini/i.test(e)}isIOSSafari(){if(typeof navigator>`u`)return!1;let e=navigator.userAgent.toLowerCase(),t=/iphone|ipad|ipod/i.test(e),n=/safari/i.test(e)&&!/chrome|crios|crmo/i.test(e);return t&&n}getErrorMessage(e){let t=this.isMobileDevice(),n=this.isIOSSafari();return{"no-speech":`No speech detected`,aborted:`Speech recognition aborted`,"audio-capture":`No microphone found`,network:`Network error - check connection`,"not-allowed":t?`Microphone permission denied. Check Settings > Safari > Microphone`:`Microphone permission denied`,"service-not-allowed":n?`Speech recognition requires a user gesture. Please tap the microphone button again.`:`Speech recognition service not allowed`,"bad-grammar":`Grammar error`,"language-not-supported":`Language not supported`}[e]||`Speech recognition error: ${e}`}},Si=e=>{if(e===`12h`)return!0;if(e===`24h`)return!1},Ci=(e,t,n={})=>{let r=e instanceof Date?e:new Date(e);return Number.isFinite(r.getTime())?r.toLocaleTimeString(B(),{hour:n.hour??`numeric`,minute:`2-digit`,second:n.precision===`second`?`2-digit`:void 0,hour12:Si(t)}):n.fallback??``},wi=(e,t,n)=>{let r=e instanceof Date?e:new Date(e);return Number.isFinite(r.getTime())?r.toLocaleString(B(),{...n,hour12:n.hour?Si(t):n.hour12}):``},Ti=Q.memo(function(e){let t=(0,K.c)(24),{checked:n,onChange:r,disabled:i,ariaLabel:a,className:o,iconClassName:s}=e,c=i!==void 0&&i,l;t[0]!==n||t[1]!==c||t[2]!==r?(l=e=>{e.preventDefault(),e.stopPropagation(),!c&&!n&&r()},t[0]=n,t[1]=c,t[2]=r,t[3]=l):l=t[3];let u=l,d;t[4]!==n||t[5]!==c||t[6]!==r?(d=e=>{(e.key===` `||e.key===`Enter`)&&(e.preventDefault(),!c&&!n&&r())},t[4]=n,t[5]=c,t[6]=r,t[7]=d):d=t[7];let f=d,p=n?`bg-[color-mix(in_srgb,var(--primary-base)_80%,transparent)] shadow-none hover:bg-[var(--primary-base)]`:`bg-[var(--surface-muted)] shadow-[inset_0_0_0_1px_var(--interactive-border)] hover:bg-[var(--interactive-hover)]`,m;t[8]!==o||t[9]!==p?(m=U(`group/radio relative flex h-[14px] w-[14px] min-h-[14px] min-w-[14px] shrink-0 self-center items-center justify-center rounded-full outline-none`,`transition-[background-color,box-shadow] duration-200 ease-out`,p,`focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)] focus-visible:ring-offset-1 focus-visible:ring-offset-background`,`disabled:cursor-not-allowed disabled:opacity-50`,o),t[8]=o,t[9]=p,t[10]=m):m=t[10];let h=!n&&`opacity-0`,g;t[11]!==s||t[12]!==h?(g=U(`block h-[5px] w-[5px] rounded-full bg-white`,h,s),t[11]=s,t[12]=h,t[13]=g):g=t[13];let _;t[14]===g?_=t[15]:(_=(0,Z.jsx)(`span`,{"aria-hidden":!0,className:g}),t[14]=g,t[15]=_);let v;return t[16]!==a||t[17]!==n||t[18]!==c||t[19]!==u||t[20]!==f||t[21]!==m||t[22]!==_?(v=(0,Z.jsx)(`button`,{type:`button`,role:`radio`,onClick:u,onKeyDown:f,disabled:c,"aria-checked":n,"aria-label":a,className:m,children:_}),t[16]=a,t[17]=n,t[18]=c,t[19]=u,t[20]=f,t[21]=m,t[22]=_,t[23]=v):v=t[23],v}),$=e=>pe(fe.getState().dictionary,e),Ei=e=>typeof e!=`number`||!Number.isFinite(e)?null:Math.max(0,Math.min(100,Math.round(e))),Di=e=>typeof e!=`number`||!Number.isFinite(e)?`-`:`${Math.round(e)}%`,Oi=(e,t)=>e??Di(t),ki=(e,t,n=`auto`)=>{if(!e)return t??``;try{let r=new Date(e);if(!Number.isFinite(r.getTime()))return t??``;let i=new Date;return r.toDateString()===i.toDateString()?Ci(r,n,{fallback:t??``}):wi(r,n,{month:`short`,day:`numeric`,weekday:`short`,hour:`numeric`,minute:`2-digit`})}catch{return t??``}},Ai=e=>e===null?`safe`:e>=80?`critical`:e>=50?`warn`:`safe`,ji=e=>e===`5h`?$(`quota.window.5h`):e===`7d`?$(`quota.window.7d`):e===`7d-sonnet`?$(`quota.window.7dSonnet`):e===`7d-opus`?$(`quota.window.7dOpus`):e===`weekly`?$(`quota.window.weekly`):e===`daily`?$(`quota.window.daily`):e===`monthly`?$(`quota.window.monthly`):e===`credits`?$(`quota.window.credits`):e===`credits_balance`?$(`quota.window.creditsBalance`):e===`billing_cycle`?$(`quota.window.billingCycle`):e===`auto`?$(`quota.window.auto`):e===`api`?$(`quota.window.api`):e===`plan_limit`?$(`quota.window.planLimit`):e===`on_demand`?$(`quota.window.onDemand`):e===`session`?$(`quota.window.session`):e===`premium`?$(`quota.window.premium`):e===`chat`?$(`quota.window.chat`):e===`completions`?$(`quota.window.completions`):e===`premium_interactions`?$(`quota.window.premiumInteractions`):e,Mi=e=>{let t=e.toLowerCase().trim();if(t===`5h`)return 18e3;if(t===`7d`||t===`weekly`||t===`7d-sonnet`||t===`7d-opus`)return 604800;if(t===`monthly`)return 2592e3;if(t===`24h`||t===`daily`)return 86400;if(t===`1h`)return 3600;let n=t.match(/^(\d+)h$/);if(n)return parseInt(n[1],10)*3600;let r=t.match(/^(\d+)d$/);return r?parseInt(r[1],10)*86400:null},Ni=(e,t,n,r)=>{let i=n;if(i===null&&r&&(i=Mi(r)),e===null||t===null||i===null||i<=0)return null;let a=Math.max(0,(t-Date.now())/1e3),o=Math.max(0,Math.min(i,i-a)),s=Math.max(0,Math.min(1,o/i)),c=e/100,l=e>=100&&a>0,u;u=s>.01?Math.min(999,c/s*100):e;let d;d=l?`exhausted`:c<=s?`on-track`:u<=130?`slightly-fast`:`too-fast`;let f=i>=432e3,p=f?86400:3600,m=f?`d`:`h`,h=i/p,g=e/Math.max(o/p,h*.01),_=Number.isFinite(g)?`${Math.min(999.9,Math.max(0,g)).toFixed(1)}%/${m}`:`-`,v=u>100?`+${Math.round(u)}%`:`${Math.round(u)}%`,y=null,b=i/86400;return b>=7&&(y=100/b),{elapsedRatio:s,usageRatio:c,predictedFinalPercent:u,remainingSeconds:a,isExhausted:l,elapsedSeconds:o,totalSeconds:i,status:d,paceRateText:_,predictText:v,dailyAllocationPercent:y}},Pi=e=>{switch(e){case`exhausted`:case`too-fast`:return`var(--status-error)`;case`slightly-fast`:return`var(--status-warning)`;case`on-track`:return`var(--status-success)`}},Fi=e=>{let t=Math.floor(Math.max(0,Math.floor(e))/60),n=Math.floor(t/60),r=Math.floor(n/24),i=n%24,a=t%60;return r>0?`${r}d ${i}h`:n>0?`${n}h`:t===0?`<1m`:`${a}m`},Ii=e=>Math.min(100,Math.max(0,e*100)),Li=(e,t)=>pe(fe.getState().dictionary,e,t),Ri=e=>{let t=new Date(e),n=new Date,r=(e,t)=>e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate(),i=new Date(n);return i.setDate(n.getDate()-1),r(t,n)?Li(`common.date.today`):r(t,i)?Li(`common.date.yesterday`):t.toLocaleDateString(B(),{month:`short`,day:`numeric`,year:`numeric`}).replace(`,`,``)},zi=e=>{let t=new Date;if(((e,t)=>e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate())(new Date(e),t)){let t=Date.now()-e;return t<6e4?Li(`common.relative.justNow`):t<36e5?Li(`common.relative.minutesAgoShort`,{count:Math.floor(t/6e4)}):Li(`common.relative.hoursAgoShort`,{count:Math.floor(t/36e5)})}return Ri(e)},Bi=e=>{let t=Math.max(0,Date.now()-e),n=6e4,r=60*n,i=24*r,a=7*i,o=365*i;return t<r?Li(`common.relative.minutesAgoCompact`,{count:Math.max(1,Math.floor(t/n))}):t<i?Li(`common.relative.hoursAgoCompact`,{count:Math.floor(t/r)}):t<a?Li(`common.relative.daysAgoCompact`,{count:Math.floor(t/i)}):t<5*a?Li(`common.relative.weeksAgoCompact`,{count:Math.floor(t/a)}):t<o?Li(`common.relative.monthsAgoCompact`,{count:Math.floor(t/2592e6)}):Li(`common.relative.yearsAgoCompact`,{count:Math.floor(t/o)})},Vi=(e,t)=>Hi(l(e),l(t)),Hi=(e,t)=>!e||!t?!1:e===t?!0:t===`/`?e.startsWith(`/`):e.startsWith(`${t}/`),Ui=e=>e.toLowerCase().replace(/^opencode[/-]?/i,``).replace(/[-_]/g,``).trim(),Wi=(e,t)=>e?Ui(e)!==Ui(t):!1,Gi=e=>{if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`&&e.trim().length>0){let t=Number(e);if(Number.isFinite(t))return t}},Ki=e=>Gi(e.time?.created)??0,qi=(e,t,n)=>{let r=n.has(e.id),i=n.has(t.id);return r===i?r&&i?Ki(t)-Ki(e):_e(t)-_e(e):r?-1:1},Ji=e=>{let t=new Map;return e.forEach(e=>{t.set(e.id,e)}),Array.from(t.values())},Yi=e=>`__archived__:${e}`,Xi=(e,t)=>{let n=l(e.directory??null),r=l(e.project?.worktree??null),i=n??r;if(!i)return`unassigned`;if(t&&i===t)return`project root`;let a=(t&&i.startsWith(`${t}/`)?i.slice(t.length+1):i).split(`/`).filter(Boolean);return a[a.length-1]??`unassigned`},Zi=`box-border w-full px-2 py-1.5 text-left typography-micro text-muted-foreground/70 select-none`,Qi=`bg-[color-mix(in_srgb,var(--surface-foreground)_6%,transparent)] dark:bg-[color-mix(in_srgb,var(--surface-foreground)_11%,transparent)]`,$i=`hover:bg-[color-mix(in_srgb,var(--surface-foreground)_3.5%,transparent)] dark:hover:bg-[color-mix(in_srgb,var(--surface-foreground)_8%,transparent)]`,ea=e=>{let t=Math.max(0,e);return t===0?8:30+(t-1)*14},ta=(e,t)=>{if(!t)return e;let n=e.toLowerCase(),r=t.toLowerCase(),i=r.length;if(i===0)return e;let a=[],o=0,s=n.indexOf(r,o);for(;s!==-1;){s>o&&a.push(e.slice(o,s));let t=e.slice(s,s+i);a.push((0,Z.jsx)(`mark`,{className:`bg-primary text-primary-foreground ring-1 ring-primary/90`,children:t},`${s}-${t}`)),o=s+i,s=n.indexOf(r,o)}return o<e.length&&a.push(e.slice(o)),a.length>0?a:e},na=[`standalone`,`minimal-ui`,`fullscreen`,`window-controls-overlay`],ra=`openchamber.pwaRecentSessions`,ia=e=>typeof window>`u`||typeof window.matchMedia!=`function`?!1:window.matchMedia(`(display-mode: ${e})`).matches,aa=()=>typeof window>`u`?`browser`:typeof document<`u`&&document.referrer.startsWith(`android-app://`)?`twa`:window.navigator.standalone?`standalone`:na.find(e=>ia(e))??`browser`,oa=864e5,sa=5,ca=864e5,la=e=>e.time?.updated??e.time?.created??0,ua=({sessions:e,currentSessionId:t,cutoffDays:n,keepRecent:r=sa,now:i=Date.now()})=>{if(!Array.isArray(e)||n<=0)return[];let a=i-n*oa,o=[...e].sort((e,t)=>la(t)-la(e)),s=new Set(o.slice(0,r).map(e=>e.id));return o.filter(e=>{if(!e?.id||s.has(e.id)||e.id===t||e.share)return!1;let n=la(e);return n?n<a:!1}).map(e=>e.id)},da=e=>{let t=typeof e==`object`?e:void 0,n=t?.autoRun!==!1,r=typeof e==`boolean`?e:t?.enabled??!0,i=ve(e=>e.currentSessionId),a=ve(e=>e.isLoading),o=be(e=>e.activeSessions),s=be(e=>e.hasLoadedFullCatalog),c=O(e=>e.autoDeleteEnabled),l=O(e=>e.autoDeleteAfterDays),u=O(e=>e.sessionRetentionAction),d=O(e=>e.autoDeleteLastRunAt),f=O(e=>e.setAutoDeleteLastRunAt),[p,m]=Q.useState(!1),h=Q.useRef(!1);Q.useEffect(()=>{if(!r||!n||!c||l<=0)return;let e=window.setTimeout(()=>{Ce(xe())},8e3);return()=>window.clearTimeout(e)},[l,c,n,r]);let g=Q.useMemo(()=>l<=0?[]:ua({sessions:o,currentSessionId:i,cutoffDays:l}),[l,i,o]),_=Q.useCallback(async({force:e=!1}={})=>{if(h.current)return{completedIds:[],failedIds:[],action:u,skippedReason:`running`};if((!c||l<=0)&&!e)return{completedIds:[],failedIds:[],action:u,skippedReason:`disabled`};if(a)return{completedIds:[],failedIds:[],action:u,skippedReason:`loading`};let t=Date.now();if(!e&&d&&t-d<ca)return{completedIds:[],failedIds:[],action:u,skippedReason:`cooldown`};let{activeSessions:n}=await Ce(xe());if(n.length===0)return{completedIds:[],failedIds:[],action:u,skippedReason:`no-candidates`};let r=ua({sessions:n,currentSessionId:i,cutoffDays:l,now:t});if(r.length===0)return f(t),{completedIds:[],failedIds:[],action:u,skippedReason:`no-candidates`};h.current=!0,m(!0);try{let e=new Map(n.map(e=>[e.id,e])),t=[],i=[];for(let n of r){let r=e.get(n),a=r?ye(r):null;if(!a){i.push(n);continue}try{u===`archive`?await D.updateSession(n,{time:{archived:Date.now()}},a):await D.deleteSession(n,a),t.push(n)}catch{i.push(n)}}return u===`archive`?be.getState().archiveSessions(t):be.getState().removeSessions(t),{completedIds:t,failedIds:i,action:u}}finally{h.current=!1,m(!1),f(Date.now())}},[l,c,d,i,a,u,f]);return Q.useEffect(()=>{r&&n&&(!c||l<=0||a||!s||o.length===0||d&&Date.now()-d<ca||_())},[l,c,d,n,r,s,o.length,a,_]),{candidates:g,isRunning:p,runCleanup:_,keepRecentCount:sa,action:u}};export{Xn as $,rt as $t,xi as A,Yt as At,Nr as B,_t as Bt,Fi as C,fn as Ct,Ti as D,un as Dt,Ai as E,sn as Et,ii as F,Vt as Ft,br as G,bt as Gt,hr as H,gt as Ht,ai as I,Ct as It,er as J,Nt as Jt,_r as K,Pt as Kt,oi as L,mt as Lt,li as M,Wt as Mt,pi as N,Bt as Nt,wi as O,hn as Ot,mi as P,Ht as Pt,Qn as Q,nt as Qt,ri as R,vt as Rt,Oi as S,rn as St,Pi as T,ln as Tt,vr as U,xt as Ut,wr as V,ht as Vt,yr as W,St as Wt,Jn as X,It as Xt,Kn as Y,Ft as Yt,Yn as Z,tt as Zt,Xi as _,yn as _t,Qi as a,Hn as at,Ei as b,dn as bt,Ji as c,Ln as ct,Yi as d,Fn as dt,Zn as et,ea as f,zn as ft,ta as g,gn as gt,Ui as h,xn as ht,Zi as i,Bn as it,bi as j,Gt as jt,Ci as k,mn as kt,Bi as l,Rn as lt,Vi as m,jn as mt,ra as n,qn as nt,$i as o,Pn as ot,Wi as p,kn as pt,ar as q,Mt as qt,aa as r,Sn as rt,qi as s,In as st,da as t,$n as tt,zi as u,Vn as ut,Ii as v,_n as vt,ji as w,pn as wt,ki as x,cn as xt,Ni as y,vn as yt,Zr as z,yt as zt};
|
package/dist/assets/{useWorkerHighlightedLines-z7yMKbSr.js → useWorkerHighlightedLines-skoDPLMx.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./runtime-fetch-zIalUnbb.js";import{Cn as n,tn as r}from"./persistence-DwRBC4zl.js";import{nt as i,rt as a}from"./vendor-base-ui-CnHfUmDN.js";import{n as o}from"./platform-DQ5_LNKO.js";import{_ as s}from"./useUIStore-CxOoCv7B.js";import{a as c,n as l}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as u}from"./vendor-react-DLPElpoQ.js";import{n as d}from"./clipboard-CzXos-TI.js";import{t as f}from"./utils-2ZK8yboQ.js";import{n as p}from"./Icon-D1BcR8Tz.js";import{t as m}from"./button-9R-WgVMl.js";import{i as h,n as g,t as _}from"./tooltip-DSjr26A_.js";import{n as v}from"./useThemeSystem-DMzWVJaW.js";import{n as y}from"./markdownTheme-DOfGg-A7.js";import{n as b}from"./MarkdownRenderer-Ck0GdWsh.js";import{a as x,n as S,o as C,t as w}from"./markdown-worker-CptoICmq.js";import{a as T,i as E,o as D,t as ee}from"./imageSource-BlAJJUEI.js";import{t as te}from"./vendor-tanstack-react-virtual-tlDgH6PG.js";var O=e(a(),1),k=u(),A=i(),ne=`w-[min(30rem,calc(100cqw-1rem))] min-w-[280px] max-w-full overflow-hidden rounded-xl shadow-[inset_0_1px_0_0_rgba(255,255,255,0.8),inset_0_0_0_1px_rgba(0,0,0,0.04),0_0_0_1px_rgba(0,0,0,0.10),0_1px_2px_-0.5px_rgba(0,0,0,0.08),0_4px_8px_-2px_rgba(0,0,0,0.08),0_12px_20px_-4px_rgba(0,0,0,0.08)] dark:shadow-[inset_0_1px_0_0_rgba(255,255,255,0.12),inset_0_0_0_1px_rgba(255,255,255,0.08),0_0_0_1px_rgba(0,0,0,0.36),0_1px_1px_-0.5px_rgba(0,0,0,0.22),0_3px_3px_-1.5px_rgba(0,0,0,0.20),0_6px_6px_-3px_rgba(0,0,0,0.16)]`,j={maxWidth:`min(28rem, calc(100cqw - 4ch))`,backgroundColor:`var(--surface-elevated)`,color:`var(--surface-elevated-foreground)`},M=`flex items-center justify-between gap-3 border-b border-[var(--surface-subtle)] px-3 py-2.5`,N=`text-xs font-medium leading-4 text-foreground md:text-[0.8125rem] md:leading-5`,re=`text-xs tabular-nums leading-4 text-muted-foreground md:text-[0.8125rem] md:leading-5`,P=`m-0 list-none divide-y divide-[var(--surface-subtle)] p-0`,F=`${P} max-h-[min(22rem,50vh)] overflow-y-auto`,ie=`${P} w-full`,ae={className:`p-0 rounded-none`,maxHeightClass:`max-h-[46vh]`,disableHorizontal:!0},I=`px-2.5 py-1.5 text-xs leading-4 md:py-2 md:text-[0.8125rem] md:leading-5`,oe=`flex min-w-0 items-center gap-1 text-xs leading-4 text-muted-foreground md:gap-1.5 md:text-[0.8125rem] md:leading-5`,se=`min-w-0 truncate text-xs leading-4 text-foreground md:text-[0.8125rem] md:leading-5`,ce=`inline-flex shrink-0 items-center gap-1 text-xs leading-4 tabular-nums text-muted-foreground md:text-[0.8125rem] md:leading-5`,le=`h-3 w-3 shrink-0 md:h-3.5 md:w-3.5`,ue={in_progress:`text-foreground`,pending:`text-foreground`,completed:`text-muted-foreground line-through`,cancelled:`text-muted-foreground line-through`},L={in_progress:`chat.statusRow.todo.status.inProgress`,pending:`chat.statusRow.todo.status.pending`,completed:`chat.statusRow.todo.status.completed`,cancelled:`chat.statusRow.todo.status.cancelled`},R=e=>{let t=(0,k.c)(26),{todo:n,isActive:r,activeRef:i}=e,{t:a}=d(),o=z.has(n.status)?n.status:`pending`,s=L[o],c;t[0]!==a||t[1]!==s?(c=a(s),t[0]=a,t[1]=s,t[2]=c):c=t[2];let l=c,u;t[3]===o?u=t[4]:(u=o===`in_progress`?(0,A.jsx)(p,{name:`record-circle`,className:`h-3.5 w-3.5 text-[var(--status-info)]`,"aria-hidden":`true`}):o===`completed`?(0,A.jsx)(p,{name:`checkbox-circle`,className:`h-3.5 w-3.5 text-[var(--status-success)]`,"aria-hidden":`true`}):(0,A.jsx)(p,{name:`time`,className:`h-3.5 w-3.5 text-muted-foreground`,"aria-hidden":`true`}),t[3]=o,t[4]=u);let m=u,v=r?`step`:void 0,y=r&&`bg-[var(--surface-muted)] before:absolute before:inset-y-2 before:left-0 before:w-0.5 before:rounded-full before:bg-[var(--status-info)]`,b;t[5]===y?b=t[6]:(b=f(`group relative grid min-w-0 grid-cols-[1rem_minmax(0,1fr)] items-start gap-2.5`,I,y),t[5]=y,t[6]=b);let x;t[7]!==m||t[8]!==l?(x=(0,A.jsx)(h,{asChild:!0,children:(0,A.jsx)(`span`,{className:`flex size-4 items-center justify-center`,"aria-label":l,children:m})}),t[7]=m,t[8]=l,t[9]=x):x=t[9];let S;t[10]===l?S=t[11]:(S=(0,A.jsx)(g,{side:`left`,sideOffset:6,children:l}),t[10]=l,t[11]=S);let C;t[12]!==x||t[13]!==S?(C=(0,A.jsxs)(_,{children:[x,S]}),t[12]=x,t[13]=S,t[14]=C):C=t[14];let w=ue[o],T;t[15]===w?T=t[16]:(T=f(`block whitespace-normal break-words`,w),t[15]=w,t[16]=T);let E;t[17]!==T||t[18]!==n.content?(E=(0,A.jsx)(`span`,{className:`min-w-0 flex-1`,children:(0,A.jsx)(`span`,{className:T,children:n.content})}),t[17]=T,t[18]=n.content,t[19]=E):E=t[19];let D;return t[20]!==i||t[21]!==E||t[22]!==v||t[23]!==b||t[24]!==C?(D=(0,A.jsxs)(`li`,{ref:i,"aria-current":v,className:b,children:[C,E]}),t[20]=i,t[21]=E,t[22]=v,t[23]=b,t[24]=C,t[25]=D):D=t[25],D},z=new Set([`in_progress`,`pending`,`completed`,`cancelled`]),B=`image/png`,V=c(`OpenChamberMedia`),H=e=>{let t=e.toLowerCase().split(`;`)[0]?.trim()||B;if(t===`image/jpeg`||t===`image/jpg`)return`jpg`;if(t===`image/webp`)return`webp`;if(t===`image/gif`)return`gif`;if(t===`image/svg+xml`)return`svg`;if(t===`image/png`)return`png`;let n=t.split(`/`)[1];return n&&/^[a-z0-9.+-]+$/i.test(n)?n:`png`},U=(e,t)=>{let n=`image.${H(t)}`,r=(((e||``).trim()||n).split(/[\\/]/).pop()||n).replace(/[^\w.\- ()[\]]+/g,`_`).replace(/^\.+/,``);return r?/\.[a-z0-9]{1,8}$/i.test(r)?r:`${r}.${H(t)}`:n},W=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{if(typeof r.result==`string`){t(r.result);return}n(Error(`Failed to encode image`))},r.onerror=()=>n(r.error??Error(`Failed to encode image`)),r.readAsDataURL(e)}),de=async e=>{let t=await W(e),n=t.indexOf(`,`);return n>=0?t.slice(n+1):t},fe=(e,t)=>{let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r),window.setTimeout(()=>URL.revokeObjectURL(n),1e3)},G=async(e,t)=>{let n=await fetch(e,{signal:t,cache:`no-store`});if(!n.ok)throw Error(`Image fetch failed (${n.status})`);return n.blob()},pe=async(e,t=B)=>{if(!e.naturalWidth||!e.naturalHeight)return null;let n=e.currentSrc||e.src;if(n&&(/^(?:blob:|data:|openchamber-asset:)/i.test(n)||/^https?:/i.test(n)||/^\/api(?=\/|[?#]|$)/.test(n)))try{let e=await G(n);if(e.size>0)return e}catch{}try{let n=document.createElement(`canvas`);n.width=e.naturalWidth,n.height=e.naturalHeight;let r=n.getContext(`2d`);if(!r)return null;r.drawImage(e,0,0);let i=t.startsWith(`image/`)?t:B,a=await new Promise(e=>{n.toBlob(t=>e(t),i===`image/jpg`?`image/jpeg`:i)});return a&&a.size>0?a:null}catch{return null}},me=async(e,t)=>{let n=``;try{return n=await ee(e,t??new AbortController().signal),await G(n,t)}finally{n&&T(n)}},he=async(e,n)=>{let r=e.effectiveDirectory??``,i=null;e.prefetchedBlob&&e.prefetchedBlob.size>0&&(i=e.prefetchedBlob);let a=e.displayUrl?.trim();if(!i&&a)try{i=await G(a,n)}catch{i=null}if(!i){let a=e.sourceUrl.trim();if(!a)throw Error(`Image source is empty`);if(/^(?:data|blob):/i.test(a)||/^https?:/i.test(a)||/^\/api(?=\/|[?#]|$)/.test(a))i=await G(a,n);else{let e=D(a,r);if(E(e))try{i=await me(e.path,n)}catch{let r=await t(`/api/fs/raw`,{method:`GET`,cache:`no-store`,query:{path:e.path},signal:n});if(!r.ok)throw Error(`Image source request failed with status ${r.status}`);i=await r.blob()}else i=await G(e.source,n)}}if(!i||i.size<=0)throw Error(`Image is empty`);let o=(e.mimeType||(i.type&&i.type.startsWith(`image/`)?i.type:``)||B).split(`;`)[0].trim()||B;return{blob:i,filename:U(e.filename,o),mimeType:o}},ge=()=>!o()||l===void 0?!1:l.isPluginAvailable(`OpenChamberMedia`),_e=async(e,t)=>{let{blob:i,filename:a,mimeType:o}=await he(e,t);if(ge()){let e=await de(i);return await V.saveImage({dataBase64:e,mimeType:o,filename:a}),`saved`}if(r()){let e=n()?.vscode;if(e?.saveImage){let t=await W(i);return await e.saveImage({fileName:a,dataUrl:t}),`saved`}}return fe(i,a),`downloaded`},ve=e=>e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`),ye=e=>e?Object.entries(e).map(([e,t])=>t==null?``:`${e.startsWith(`--`)?e:e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}:${typeof t==`number`?`${t}px`:t};`).join(``):``,K=(e,t,n)=>{let r=e.querySelector(`pre`);r&&(r.style.margin=`0`,r.style.background=`transparent`,r.style.whiteSpace=t?`pre-wrap`:`pre`,t&&(r.style.wordBreak=`break-word`,r.style.overflowWrap=`break-word`));let i=e.querySelector(`code`);if(i){let e=ye(n);e&&i.setAttribute(`style`,`${i.getAttribute(`style`)??``}${e}`)}},be=e=>`<pre><code>${ve(e)}</code></pre>`,xe=e=>{let t=(0,k.c)(21),{code:n,language:r,className:i,style:a,codeStyle:o,wrap:s}=e,c=s!==void 0&&s,{currentTheme:l}=v(),u=O.useRef(null),d;t[0]===l?d=t[1]:(d=y(l),t[0]=l,t[1]=d);let p=d,m,h;t[2]!==n||t[3]!==o||t[4]!==c?(m=()=>{let e=u.current;e&&(e.innerHTML=be(n),K(e,c,o))},h=[n,c,o],t[2]=n,t[3]=o,t[4]=c,t[5]=m,t[6]=h):(m=t[5],h=t[6]),O.useLayoutEffect(m,h);let g,_;t[7]!==n||t[8]!==o||t[9]!==r||t[10]!==c?(g=()=>{let e=u.current;if(!e)return;let t=!0,i=new AbortController;return w(n,(r||`text`).toLowerCase(),{signal:i.signal,priority:`visible`}).then(n=>{!t||!e||!n||(e.innerHTML=n,K(e,c,o))}),()=>{t=!1,i.abort()}},_=[n,r,c,o],t[7]=n,t[8]=o,t[9]=r,t[10]=c,t[11]=g,t[12]=_):(g=t[11],_=t[12]),O.useEffect(g,_);let b;t[13]===i?b=t[14]:(b=f(`typography-code`,i),t[13]=i,t[14]=b);let x=p,S;t[15]!==a||t[16]!==x?(S={...x,...a},t[15]=a,t[16]=x,t[17]=S):S=t[17];let C;return t[18]!==b||t[19]!==S?(C=(0,A.jsx)(`div`,{ref:u,className:b,style:S}),t[18]=b,t[19]=S,t[20]=C):C=t[20],C},Se=e=>{let t=e.replace(/^<file>\s*\n?/,``).replace(/\n?<\/file>\s*$/,``);return t=t.replace(/^\s*\d{5}\|\s?/gm,``),t.trim()},Ce=(e,t=``)=>{if(typeof e==`string`)return e;if(e==null)return t;if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`)return String(e);try{return JSON.stringify(e)}catch{return t}},we=e=>e?e.includes(`<diagnostics`)||e.includes(`<file_diagnostics>`)||e.includes(`LSP errors detected`)||e.includes(`This file has errors`):!1,Te=e=>e?e.replace(/\n{0,2}LSP errors detected[\s\S]*?<diagnostics[^>]*>[\s\S]*?<\/diagnostics>/g,``).replace(/\n{0,2}This file has errors[\s\S]*?<\/file_diagnostics>/g,``).replace(/<diagnostics[^>]*>[\s\S]*?<\/diagnostics>/g,``).replace(/<file_diagnostics>[\s\S]*?<\/file_diagnostics>/g,``).trim():``,Ee=(e,t)=>!e||typeof e!=`object`?String(e):C(e,t||``),q=e=>{if(typeof e==`string`){let t=e.trim();return t.length>0?t:void 0}if(e&&typeof e==`object`){let t=e.patch;if(typeof t==`string`){let e=t.trim();return e.length>0?e:void 0}}},De=e=>{if(!e||typeof e!=`object`)return;let t=q(e.patch)??q(e.diff);if(t)return t;let n=Array.isArray(e.files)?e.files:[];for(let e of n){if(!e||typeof e!=`object`)continue;let t=q(e.patch)??q(e.diff);if(t)return t}},Oe=e=>{if(!e||typeof e!=`string`)return{data:null,isJson:!1};let t=e.trim();if(!t.startsWith(`{`)&&!t.startsWith(`[`)||!t.endsWith(`}`)&&!t.endsWith(`]`)||t.length<2)return{data:null,isJson:!1};try{let e=JSON.parse(t);return typeof e==`object`&&e?{data:e,isJson:!0}:{data:null,isJson:!1}}catch{return{data:null,isJson:!1}}},ke=(e,t,n)=>{let r=Se(e);if((t===`edit`||t===`multiedit`||t===`write`||t===`apply_patch`)&&we(r)&&(r=Te(r)),(t===`edit`||t===`multiedit`||t===`apply_patch`)&&r.trim().length===0){let e=De(n);if(e)return e}return r},Ae=e=>{let t=e.match(/<type>(file|directory)<\/type>/i)?.[1]?.toLowerCase()??`unknown`,n=(e.match(/<content>([\s\S]*?)<\/content>/i)?.[1]??e).replace(/\r\n/g,`
|
|
1
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./runtime-fetch-zIalUnbb.js";import{Cn as n,tn as r}from"./persistence-DwRBC4zl.js";import{nt as i,rt as a}from"./vendor-base-ui-CnHfUmDN.js";import{n as o}from"./platform-DQ5_LNKO.js";import{_ as s}from"./useUIStore-CxOoCv7B.js";import{a as c,n as l}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as u}from"./vendor-react-DLPElpoQ.js";import{n as d}from"./clipboard-GUUNlWIv.js";import{t as f}from"./utils-2ZK8yboQ.js";import{n as p}from"./Icon-D1BcR8Tz.js";import{t as m}from"./button-9R-WgVMl.js";import{i as h,n as g,t as _}from"./tooltip-DSjr26A_.js";import{n as v}from"./useThemeSystem-DMzWVJaW.js";import{n as y}from"./markdownTheme-DOfGg-A7.js";import{n as b}from"./MarkdownRenderer-yZjjvjP5.js";import{a as x,n as S,o as C,t as w}from"./markdown-worker-CptoICmq.js";import{a as T,i as E,o as D,t as ee}from"./imageSource-BlAJJUEI.js";import{t as te}from"./vendor-tanstack-react-virtual-tlDgH6PG.js";var O=e(a(),1),k=u(),A=i(),ne=`w-[min(30rem,calc(100cqw-1rem))] min-w-[280px] max-w-full overflow-hidden rounded-xl shadow-[inset_0_1px_0_0_rgba(255,255,255,0.8),inset_0_0_0_1px_rgba(0,0,0,0.04),0_0_0_1px_rgba(0,0,0,0.10),0_1px_2px_-0.5px_rgba(0,0,0,0.08),0_4px_8px_-2px_rgba(0,0,0,0.08),0_12px_20px_-4px_rgba(0,0,0,0.08)] dark:shadow-[inset_0_1px_0_0_rgba(255,255,255,0.12),inset_0_0_0_1px_rgba(255,255,255,0.08),0_0_0_1px_rgba(0,0,0,0.36),0_1px_1px_-0.5px_rgba(0,0,0,0.22),0_3px_3px_-1.5px_rgba(0,0,0,0.20),0_6px_6px_-3px_rgba(0,0,0,0.16)]`,j={maxWidth:`min(28rem, calc(100cqw - 4ch))`,backgroundColor:`var(--surface-elevated)`,color:`var(--surface-elevated-foreground)`},M=`flex items-center justify-between gap-3 border-b border-[var(--surface-subtle)] px-3 py-2.5`,N=`text-xs font-medium leading-4 text-foreground md:text-[0.8125rem] md:leading-5`,re=`text-xs tabular-nums leading-4 text-muted-foreground md:text-[0.8125rem] md:leading-5`,P=`m-0 list-none divide-y divide-[var(--surface-subtle)] p-0`,F=`${P} max-h-[min(22rem,50vh)] overflow-y-auto`,ie=`${P} w-full`,ae={className:`p-0 rounded-none`,maxHeightClass:`max-h-[46vh]`,disableHorizontal:!0},I=`px-2.5 py-1.5 text-xs leading-4 md:py-2 md:text-[0.8125rem] md:leading-5`,oe=`flex min-w-0 items-center gap-1 text-xs leading-4 text-muted-foreground md:gap-1.5 md:text-[0.8125rem] md:leading-5`,se=`min-w-0 truncate text-xs leading-4 text-foreground md:text-[0.8125rem] md:leading-5`,ce=`inline-flex shrink-0 items-center gap-1 text-xs leading-4 tabular-nums text-muted-foreground md:text-[0.8125rem] md:leading-5`,le=`h-3 w-3 shrink-0 md:h-3.5 md:w-3.5`,ue={in_progress:`text-foreground`,pending:`text-foreground`,completed:`text-muted-foreground line-through`,cancelled:`text-muted-foreground line-through`},L={in_progress:`chat.statusRow.todo.status.inProgress`,pending:`chat.statusRow.todo.status.pending`,completed:`chat.statusRow.todo.status.completed`,cancelled:`chat.statusRow.todo.status.cancelled`},R=e=>{let t=(0,k.c)(26),{todo:n,isActive:r,activeRef:i}=e,{t:a}=d(),o=z.has(n.status)?n.status:`pending`,s=L[o],c;t[0]!==a||t[1]!==s?(c=a(s),t[0]=a,t[1]=s,t[2]=c):c=t[2];let l=c,u;t[3]===o?u=t[4]:(u=o===`in_progress`?(0,A.jsx)(p,{name:`record-circle`,className:`h-3.5 w-3.5 text-[var(--status-info)]`,"aria-hidden":`true`}):o===`completed`?(0,A.jsx)(p,{name:`checkbox-circle`,className:`h-3.5 w-3.5 text-[var(--status-success)]`,"aria-hidden":`true`}):(0,A.jsx)(p,{name:`time`,className:`h-3.5 w-3.5 text-muted-foreground`,"aria-hidden":`true`}),t[3]=o,t[4]=u);let m=u,v=r?`step`:void 0,y=r&&`bg-[var(--surface-muted)] before:absolute before:inset-y-2 before:left-0 before:w-0.5 before:rounded-full before:bg-[var(--status-info)]`,b;t[5]===y?b=t[6]:(b=f(`group relative grid min-w-0 grid-cols-[1rem_minmax(0,1fr)] items-start gap-2.5`,I,y),t[5]=y,t[6]=b);let x;t[7]!==m||t[8]!==l?(x=(0,A.jsx)(h,{asChild:!0,children:(0,A.jsx)(`span`,{className:`flex size-4 items-center justify-center`,"aria-label":l,children:m})}),t[7]=m,t[8]=l,t[9]=x):x=t[9];let S;t[10]===l?S=t[11]:(S=(0,A.jsx)(g,{side:`left`,sideOffset:6,children:l}),t[10]=l,t[11]=S);let C;t[12]!==x||t[13]!==S?(C=(0,A.jsxs)(_,{children:[x,S]}),t[12]=x,t[13]=S,t[14]=C):C=t[14];let w=ue[o],T;t[15]===w?T=t[16]:(T=f(`block whitespace-normal break-words`,w),t[15]=w,t[16]=T);let E;t[17]!==T||t[18]!==n.content?(E=(0,A.jsx)(`span`,{className:`min-w-0 flex-1`,children:(0,A.jsx)(`span`,{className:T,children:n.content})}),t[17]=T,t[18]=n.content,t[19]=E):E=t[19];let D;return t[20]!==i||t[21]!==E||t[22]!==v||t[23]!==b||t[24]!==C?(D=(0,A.jsxs)(`li`,{ref:i,"aria-current":v,className:b,children:[C,E]}),t[20]=i,t[21]=E,t[22]=v,t[23]=b,t[24]=C,t[25]=D):D=t[25],D},z=new Set([`in_progress`,`pending`,`completed`,`cancelled`]),B=`image/png`,V=c(`OpenChamberMedia`),H=e=>{let t=e.toLowerCase().split(`;`)[0]?.trim()||B;if(t===`image/jpeg`||t===`image/jpg`)return`jpg`;if(t===`image/webp`)return`webp`;if(t===`image/gif`)return`gif`;if(t===`image/svg+xml`)return`svg`;if(t===`image/png`)return`png`;let n=t.split(`/`)[1];return n&&/^[a-z0-9.+-]+$/i.test(n)?n:`png`},U=(e,t)=>{let n=`image.${H(t)}`,r=(((e||``).trim()||n).split(/[\\/]/).pop()||n).replace(/[^\w.\- ()[\]]+/g,`_`).replace(/^\.+/,``);return r?/\.[a-z0-9]{1,8}$/i.test(r)?r:`${r}.${H(t)}`:n},W=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{if(typeof r.result==`string`){t(r.result);return}n(Error(`Failed to encode image`))},r.onerror=()=>n(r.error??Error(`Failed to encode image`)),r.readAsDataURL(e)}),de=async e=>{let t=await W(e),n=t.indexOf(`,`);return n>=0?t.slice(n+1):t},fe=(e,t)=>{let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r),window.setTimeout(()=>URL.revokeObjectURL(n),1e3)},G=async(e,t)=>{let n=await fetch(e,{signal:t,cache:`no-store`});if(!n.ok)throw Error(`Image fetch failed (${n.status})`);return n.blob()},pe=async(e,t=B)=>{if(!e.naturalWidth||!e.naturalHeight)return null;let n=e.currentSrc||e.src;if(n&&(/^(?:blob:|data:|openchamber-asset:)/i.test(n)||/^https?:/i.test(n)||/^\/api(?=\/|[?#]|$)/.test(n)))try{let e=await G(n);if(e.size>0)return e}catch{}try{let n=document.createElement(`canvas`);n.width=e.naturalWidth,n.height=e.naturalHeight;let r=n.getContext(`2d`);if(!r)return null;r.drawImage(e,0,0);let i=t.startsWith(`image/`)?t:B,a=await new Promise(e=>{n.toBlob(t=>e(t),i===`image/jpg`?`image/jpeg`:i)});return a&&a.size>0?a:null}catch{return null}},me=async(e,t)=>{let n=``;try{return n=await ee(e,t??new AbortController().signal),await G(n,t)}finally{n&&T(n)}},he=async(e,n)=>{let r=e.effectiveDirectory??``,i=null;e.prefetchedBlob&&e.prefetchedBlob.size>0&&(i=e.prefetchedBlob);let a=e.displayUrl?.trim();if(!i&&a)try{i=await G(a,n)}catch{i=null}if(!i){let a=e.sourceUrl.trim();if(!a)throw Error(`Image source is empty`);if(/^(?:data|blob):/i.test(a)||/^https?:/i.test(a)||/^\/api(?=\/|[?#]|$)/.test(a))i=await G(a,n);else{let e=D(a,r);if(E(e))try{i=await me(e.path,n)}catch{let r=await t(`/api/fs/raw`,{method:`GET`,cache:`no-store`,query:{path:e.path},signal:n});if(!r.ok)throw Error(`Image source request failed with status ${r.status}`);i=await r.blob()}else i=await G(e.source,n)}}if(!i||i.size<=0)throw Error(`Image is empty`);let o=(e.mimeType||(i.type&&i.type.startsWith(`image/`)?i.type:``)||B).split(`;`)[0].trim()||B;return{blob:i,filename:U(e.filename,o),mimeType:o}},ge=()=>!o()||l===void 0?!1:l.isPluginAvailable(`OpenChamberMedia`),_e=async(e,t)=>{let{blob:i,filename:a,mimeType:o}=await he(e,t);if(ge()){let e=await de(i);return await V.saveImage({dataBase64:e,mimeType:o,filename:a}),`saved`}if(r()){let e=n()?.vscode;if(e?.saveImage){let t=await W(i);return await e.saveImage({fileName:a,dataUrl:t}),`saved`}}return fe(i,a),`downloaded`},ve=e=>e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`),ye=e=>e?Object.entries(e).map(([e,t])=>t==null?``:`${e.startsWith(`--`)?e:e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}:${typeof t==`number`?`${t}px`:t};`).join(``):``,K=(e,t,n)=>{let r=e.querySelector(`pre`);r&&(r.style.margin=`0`,r.style.background=`transparent`,r.style.whiteSpace=t?`pre-wrap`:`pre`,t&&(r.style.wordBreak=`break-word`,r.style.overflowWrap=`break-word`));let i=e.querySelector(`code`);if(i){let e=ye(n);e&&i.setAttribute(`style`,`${i.getAttribute(`style`)??``}${e}`)}},be=e=>`<pre><code>${ve(e)}</code></pre>`,xe=e=>{let t=(0,k.c)(21),{code:n,language:r,className:i,style:a,codeStyle:o,wrap:s}=e,c=s!==void 0&&s,{currentTheme:l}=v(),u=O.useRef(null),d;t[0]===l?d=t[1]:(d=y(l),t[0]=l,t[1]=d);let p=d,m,h;t[2]!==n||t[3]!==o||t[4]!==c?(m=()=>{let e=u.current;e&&(e.innerHTML=be(n),K(e,c,o))},h=[n,c,o],t[2]=n,t[3]=o,t[4]=c,t[5]=m,t[6]=h):(m=t[5],h=t[6]),O.useLayoutEffect(m,h);let g,_;t[7]!==n||t[8]!==o||t[9]!==r||t[10]!==c?(g=()=>{let e=u.current;if(!e)return;let t=!0,i=new AbortController;return w(n,(r||`text`).toLowerCase(),{signal:i.signal,priority:`visible`}).then(n=>{!t||!e||!n||(e.innerHTML=n,K(e,c,o))}),()=>{t=!1,i.abort()}},_=[n,r,c,o],t[7]=n,t[8]=o,t[9]=r,t[10]=c,t[11]=g,t[12]=_):(g=t[11],_=t[12]),O.useEffect(g,_);let b;t[13]===i?b=t[14]:(b=f(`typography-code`,i),t[13]=i,t[14]=b);let x=p,S;t[15]!==a||t[16]!==x?(S={...x,...a},t[15]=a,t[16]=x,t[17]=S):S=t[17];let C;return t[18]!==b||t[19]!==S?(C=(0,A.jsx)(`div`,{ref:u,className:b,style:S}),t[18]=b,t[19]=S,t[20]=C):C=t[20],C},Se=e=>{let t=e.replace(/^<file>\s*\n?/,``).replace(/\n?<\/file>\s*$/,``);return t=t.replace(/^\s*\d{5}\|\s?/gm,``),t.trim()},Ce=(e,t=``)=>{if(typeof e==`string`)return e;if(e==null)return t;if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`)return String(e);try{return JSON.stringify(e)}catch{return t}},we=e=>e?e.includes(`<diagnostics`)||e.includes(`<file_diagnostics>`)||e.includes(`LSP errors detected`)||e.includes(`This file has errors`):!1,Te=e=>e?e.replace(/\n{0,2}LSP errors detected[\s\S]*?<diagnostics[^>]*>[\s\S]*?<\/diagnostics>/g,``).replace(/\n{0,2}This file has errors[\s\S]*?<\/file_diagnostics>/g,``).replace(/<diagnostics[^>]*>[\s\S]*?<\/diagnostics>/g,``).replace(/<file_diagnostics>[\s\S]*?<\/file_diagnostics>/g,``).trim():``,Ee=(e,t)=>!e||typeof e!=`object`?String(e):C(e,t||``),q=e=>{if(typeof e==`string`){let t=e.trim();return t.length>0?t:void 0}if(e&&typeof e==`object`){let t=e.patch;if(typeof t==`string`){let e=t.trim();return e.length>0?e:void 0}}},De=e=>{if(!e||typeof e!=`object`)return;let t=q(e.patch)??q(e.diff);if(t)return t;let n=Array.isArray(e.files)?e.files:[];for(let e of n){if(!e||typeof e!=`object`)continue;let t=q(e.patch)??q(e.diff);if(t)return t}},Oe=e=>{if(!e||typeof e!=`string`)return{data:null,isJson:!1};let t=e.trim();if(!t.startsWith(`{`)&&!t.startsWith(`[`)||!t.endsWith(`}`)&&!t.endsWith(`]`)||t.length<2)return{data:null,isJson:!1};try{let e=JSON.parse(t);return typeof e==`object`&&e?{data:e,isJson:!0}:{data:null,isJson:!1}}catch{return{data:null,isJson:!1}}},ke=(e,t,n)=>{let r=Se(e);if((t===`edit`||t===`multiedit`||t===`write`||t===`apply_patch`)&&we(r)&&(r=Te(r)),(t===`edit`||t===`multiedit`||t===`apply_patch`)&&r.trim().length===0){let e=De(n);if(e)return e}return r},Ae=e=>{let t=e.match(/<type>(file|directory)<\/type>/i)?.[1]?.toLowerCase()??`unknown`,n=(e.match(/<content>([\s\S]*?)<\/content>/i)?.[1]??e).replace(/\r\n/g,`
|
|
2
2
|
`).split(`
|
|
3
3
|
`),r=e=>/\(\s*File has more lines\..*offset.*\)/i.test(e.trim());return{type:t,lines:n.map(e=>{let n=e.trim(),i=n.startsWith(`(`)&&n.endsWith(`)`)||r(n);if(t!==`directory`){let t=e.match(/^(\d+):\s?(.*)$/);if(t){let e=t[2],n=e.trim(),i=n.startsWith(`(`)&&n.endsWith(`)`)||r(n);return{lineNumber:i?null:Number(t[1]),text:e,isInfo:i}}}return{lineNumber:null,text:e,isInfo:i}}).filter((e,t,n)=>{if(e.text.trim().length>0)return!0;let r=n[t-1],i=n[t+1],a=!!(r?.isInfo||i?.isInfo),o=e.lineNumber!==null;return!(a&&o)})}},je=(e,t)=>{try{let n=e.trim().split(`
|
|
4
4
|
`).filter(Boolean);if(n.length===0)return null;let r=[];return n.forEach(e=>{let t=e.match(/^(\s*)(.+)$/);if(t){let[,e,n]=t,i=Math.floor(e.length/2),a=!n.endsWith(`/`);r.push({name:n.replace(/\/$/,``),depth:i,isFile:a})}}),(0,A.jsx)(`div`,{className:f(`w-full min-w-0 font-mono space-y-0.5`,t?.unstyled?null:`p-3 bg-muted/20 rounded-xl border border-border/30`),style:s.tool.popup,children:r.map((e,t)=>(0,A.jsx)(`div`,{className:`min-w-0`,style:{paddingLeft:`${e.depth*20}px`},children:e.isFile?(0,A.jsx)(`span`,{className:`text-foreground/90 block truncate`,children:e.name}):(0,A.jsxs)(`span`,{className:`font-semibold text-foreground block truncate`,children:[e.name,`/`]})},t))})}catch{return null}},Me={backgroundColor:`var(--status-info)`,opacity:.6},Ne=(e,t,n)=>{try{let r=e.trim().split(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var e={"settings.globalConfig.title":`全局配置`,"settings.globalConfig.description":`编辑 ~/.config/opencode 中当前生效的配置文件。`,"settings.globalConfig.actions.reload":`重新加载文件`,"settings.globalConfig.restartHint":`保存后重启 OpenCode,使配置变更生效。`,"settings.globalConfig.toast.loadFailed":`加载配置文件失败`,"settings.globalConfig.toast.saveFailed":`保存配置文件失败`,"settings.globalConfig.toast.saved":`配置已保存。重启 OpenCode 后生效。`,"settings.providers.page.openCodeGo.title":`OpenCode Go 用量跟踪`,"settings.providers.page.openCodeGo.description":`连接 OpenCode Go 控制面板以显示滚动、每周和每月配额。`,"settings.providers.page.openCodeGo.workspaceId":`工作区 ID`,"settings.providers.page.openCodeGo.authCookie":`身份验证 Cookie`,"settings.providers.page.openCodeGo.help":`从控制面板网址复制工作区 ID,并从浏览器开发者工具复制 auth Cookie。OpenChamber 绝不会扫描浏览器 Cookie 存储。`,"settings.providers.page.openCodeGo.save":`保存并验证`,"settings.providers.page.openCodeGo.replace":`替换`,"settings.providers.page.openCodeGo.validate":`验证`,"settings.providers.page.openCodeGo.delete":`删除`,"settings.providers.page.quotaCredentials.saved":`已保存 {provider} 凭据。`,"settings.providers.page.openCodeGo.saveFailed":`无法验证 OpenCode Go 凭据。`,"settings.providers.page.openCodeGo.valid":`OpenCode Go 凭据有效。`,"settings.providers.page.openCodeGo.invalid":`OpenCode Go 凭据无效或已过期。`,"settings.providers.page.openCodeGo.deleted":`已删除 OpenCode Go 凭据。`,"settings.providers.page.openCodeGo.deleteFailed":`无法删除 OpenCode Go 凭据。`,"settings.appearance.language.label":`语言`,"settings.appearance.language.description":`选择界面语言。`,"settings.appearance.language.select":`选择语言`,"settings.window.description":`OpenChamber 设置窗口。`,"settings.view.home.title":`设置`,"settings.view.home.description":`跳转到常用页面。`,"settings.view.home.cards.providers.title":`提供商`,"settings.view.home.cards.providers.description":`连接模型和凭据`,"settings.view.home.cards.agents.title":`Agent`,"settings.view.home.cards.agents.description":`提示词、工具、权限`,"settings.view.home.cards.skillsCatalog.title":`技能目录`,"settings.view.home.cards.skillsCatalog.description":`从目录安装技能`,"settings.view.home.cards.mcp.title":`MCP`,"settings.view.home.cards.mcp.description":`配置 MCP 服务器和连接`,"settings.view.home.cards.plugins.title":`插件`,"settings.view.home.cards.plugins.description":`管理 OpenCode 插件`,"settings.view.home.cards.usage.title":`用量`,"settings.view.home.cards.usage.description":`配额和花费可见性`,"settings.view.unavailable.title":`不可用`,"settings.view.unavailable.description":`此设置页面在当前运行环境中不可用。`,"settings.view.badge.beta":`测试版`,"settings.view.actions.reloadOpenCode":`重新加载 OpenCode`,"settings.view.actions.reloadOpenCodeTooltip":`重启 OpenCode 并重新加载其配置。`,"settings.view.actions.backToSettings":`返回设置`,"settings.view.actions.closeSettings":`关闭设置`,"settings.view.actions.openSectionList":`打开分组列表`,"settings.view.actions.closeSettingsWithShortcut":`关闭设置({shortcut}+,)`,"settings.view.actions.back":`返回`,"settings.view.actions.resizeNavigation":`调整设置导航宽度`,"settings.view.navigation.groups.connection":`连接`,"settings.view.navigation.groups.personalization":`个性化`,"settings.view.navigation.groups.workspace":`工作区`,"settings.view.navigation.groups.opencode":`OpenCode`,"settings.view.navigation.groups.content":`内容与自动化`,"settings.view.navigation.groups.system":`系统`,"settings.view.search.placeholder":`搜索设置`,"settings.view.search.aria":`搜索设置`,"settings.view.search.clear":`清除设置搜索`,"settings.view.search.noResults":`没有匹配的设置`,"settings.page.projects.title":`项目`,"settings.page.remoteInstances.title":`远程实例`,"settings.page.providers.title":`提供商`,"settings.page.usage.title":`用量`,"settings.page.agents.title":`Agent`,"settings.page.commands.title":`命令`,"settings.page.mcp.title":`MCP`,"settings.page.plugins.title":`插件`,"settings.page.skills.title":`技能`,"settings.page.skillsCatalog.title":`技能目录`,"settings.page.git.title":`Git`,"settings.page.appearance.title":`外观`,"settings.page.chat.title":`聊天`,"settings.page.shortcuts.title":`快捷键`,"settings.page.sessions.title":`会话`,"settings.page.summaryAI.title":`智能摘要`,"settings.page.magicPrompts.title":`魔法提示词`,"settings.page.notifications.title":`通知`,"settings.page.voice.title":`语音`,"settings.page.about.title":`关于`,"settings.page.snippets.title":`代码片段`,"settings.snippets.sidebar.title":`代码片段`,"settings.snippets.sidebar.total":`共 {count} 个`,"settings.snippets.sidebar.actions.create":`创建代码片段`,"settings.snippets.sidebar.actions.more":`{name} 的更多操作`,"settings.snippets.sidebar.toast.deleted":`代码片段已删除`,"settings.snippets.sidebar.toast.deleteFailed":`删除代码片段失败`,"settings.snippets.sidebar.dialog.deleteTitle":`删除代码片段?`,"settings.snippets.sidebar.dialog.deleteDescription":`这将永久删除 #{name}。`,"settings.snippets.page.empty.title":`选择代码片段`,"settings.snippets.page.empty.description":`从侧边栏选择代码片段进行编辑。`,"settings.snippets.page.title.new":`新建代码片段`,"settings.snippets.page.field.namePlaceholder":`snippet-name`,"settings.snippets.page.field.descriptionPlaceholder":`这个代码片段的作用`,"settings.snippets.page.field.aliases":`别名`,"settings.snippets.page.field.aliasesPlaceholder":`safe, careful`,"settings.snippets.page.field.content":`内容`,"settings.snippets.page.field.contentPlaceholder":`代码片段 Markdown...`,"settings.snippets.page.hint":`在提示词中使用 #name。支持别名和与 opencode-snippets 兼容的 prepend/append 块。`,"settings.snippets.page.toast.nameRequired":`代码片段名称为必填项`,"settings.snippets.page.toast.contentRequired":`代码片段内容为必填项`,"settings.snippets.page.toast.saveFailed":`保存代码片段失败`,"settings.snippets.page.toast.saved":`代码片段已保存`,"settings.magicPrompts.sidebar.title":`魔法提示词`,"settings.magicPrompts.sidebar.description":`选择要编辑的提示词模板。`,"settings.magicPrompts.sidebar.group.git":`Git`,"settings.magicPrompts.sidebar.group.github":`GitHub`,"settings.magicPrompts.sidebar.group.session":`会话`,"settings.magicPrompts.sidebar.item.gitCommitGenerate":`提交生成`,"settings.magicPrompts.sidebar.item.gitPrGenerate":`PR 生成`,"settings.magicPrompts.sidebar.item.gitConflictResolve":`合并/Rebase 冲突解决`,"settings.magicPrompts.sidebar.item.gitCherrypickConflictResolve":`Cherry-pick 冲突解决`,"settings.magicPrompts.sidebar.item.githubPrReview":`PR 审查`,"settings.magicPrompts.sidebar.item.githubIssueReview":`Issue 审查`,"settings.magicPrompts.sidebar.item.githubPrFailedChecksReview":`PR 失败检查审查`,"settings.magicPrompts.sidebar.item.githubPrCommentsReview":`PR 评论审查`,"settings.magicPrompts.sidebar.item.githubSinglePrCommentReview":`单条 PR 评论审查`,"settings.magicPrompts.sidebar.item.sessionSummary":`会话总结`,"settings.magicPrompts.sidebar.item.sessionWorkspaceReview":`工作区审查`,"settings.magicPrompts.sidebar.item.sessionExplore":`代码库导览`,"settings.magicPrompts.sidebar.item.sessionCraftGoal":`创建 Goal`,"settings.magicPrompts.page.group.sessionCraftGoal.title":`创建 Goal`,"settings.magicPrompts.page.group.sessionCraftGoal.description":`由 /craft-goal 斜杠命令使用的提示词:可见用户消息 + 隐藏说明。通过引导式探索将想法或任务转化为清晰且有证据可验证的 Goal。`,"settings.magicPrompts.sidebar.item.sessionCatchUp":`快速回顾`,"settings.magicPrompts.sidebar.item.sessionDebug":`调试`,"settings.magicPrompts.sidebar.item.sessionWeigh":`权衡方案`,"settings.magicPrompts.sidebar.item.sessionFusion":`融合`,"settings.remoteInstances.sidebar.title":`远程实例`,"settings.remoteInstances.sidebar.description":`通过导入链接或 SSH 连接其他 OpenChamber 服务器。`,"settings.remoteInstances.sidebar.empty":`暂无远程实例。可导入链接或添加 SSH 连接。`,"settings.remoteInstances.channel.link":`链接`,"settings.remoteInstances.channel.ssh":`SSH`,"settings.remoteInstances.sidebar.total":`总计 {count}`,"settings.remoteInstances.sidebar.newSshInstanceName":`新的 SSH 连接`,"settings.remoteInstances.sidebar.actions.addSshInstance":`添加 SSH 连接`,"settings.remoteInstances.sidebar.actions.connect":`连接`,"settings.remoteInstances.sidebar.actions.disconnect":`断开连接`,"settings.remoteInstances.sidebar.actions.retry":`重试`,"settings.remoteInstances.sidebar.actions.remove":`移除`,"settings.remoteInstances.sidebar.confirm.localPortInUseRetry":`本地端口已被占用。是否选择一个随机空闲本地端口并重试?`,"settings.remoteInstances.sidebar.toast.createFailed":`无法创建 SSH 连接`,"settings.remoteInstances.sidebar.toast.retriedWithRandomPort":`已使用随机本地端口重试`,"settings.remoteInstances.sidebar.toast.connectFailed":`连接实例失败`,"settings.remoteInstances.sidebar.toast.disconnectFailed":`断开实例连接失败`,"settings.remoteInstances.sidebar.toast.retryFailed":`重试连接失败`,"settings.remoteInstances.sidebar.toast.removeFailed":`移除实例失败`,"settings.remoteInstances.direct.sidebarTitle":`服务器链接`,"settings.remoteInstances.direct.sidebarDescription":`使用配对链接连接`,"settings.remoteInstances.direct.title":`其他 OpenChamber 服务器`,"settings.remoteInstances.direct.description":`此应用可切换到的服务器。从另一台服务器导入配对链接。`,"settings.remoteInstances.direct.import.description":`粘贴来自另一个 OpenChamber 服务器的连接链接。`,"settings.remoteInstances.direct.import.placeholder":`openchamber://connect?...`,"settings.remoteInstances.direct.import.action":`导入链接`,"settings.remoteInstances.direct.error.invalidConnectLink":`无效的 OpenChamber 连接链接。`,"settings.remoteInstances.direct.state.loading":`正在加载服务器...`,"settings.remoteInstances.direct.state.empty":`尚未导入其他服务器。`,"settings.remoteInstances.clientAuth.title":`连接到此服务器`,"settings.remoteInstances.clientAuth.description":`创建安全链接或令牌,让 OpenChamber Desktop 可以连接到此服务器。`,"settings.remoteInstances.clientAuth.field.labelPlaceholder":`实例名称 — 例如 家里的电脑`,"settings.remoteInstances.clientAuth.field.labelHint":`对面设备会用这个名字显示此服务器。`,"settings.remoteInstances.clientAuth.actions.create":`创建令牌`,"settings.remoteInstances.clientAuth.actions.pair":`创建链接`,"settings.remoteInstances.clientAuth.actions.revoke":`撤销`,"settings.remoteInstances.clientAuth.actions.clearRevoked":`清除已撤销`,"settings.remoteInstances.clientAuth.qrAlt":`OpenChamber connection QR code`,"settings.remoteInstances.clientAuth.qrEnlarge":`放大二维码`,"settings.remoteInstances.clientAuth.qrScanHint":`用另一台设备上的 OpenChamber 应用扫描。一次性使用且会过期。`,"settings.remoteInstances.clientAuth.qrDialogTitle":`扫码连接`,"settings.remoteInstances.clientAuth.actions.addDevice":`添加设备`,"settings.remoteInstances.clientAuth.actions.copied":`已复制`,"settings.remoteInstances.clientAuth.addDevice.transportLabel":`你会在哪里使用这台设备?`,"settings.remoteInstances.clientAuth.addDevice.subtitle":`创建一次性二维码,把另一台设备连接到此服务器。`,"settings.remoteInstances.clientAuth.addDevice.transport.local":`仅本机`,"settings.remoteInstances.clientAuth.addDevice.transport.localHint":`供同一台电脑上的应用使用。`,"settings.remoteInstances.clientAuth.addDevice.transport.lan":`仅家庭网络`,"settings.remoteInstances.clientAuth.addDevice.transport.lanHint":`通过 Wi-Fi 直接连接。离开此网络后无法使用。`,"settings.remoteInstances.clientAuth.addDevice.transport.relay":`任何地方`,"settings.remoteInstances.clientAuth.addDevice.transport.relayHint":`在家和外出都可用。外出时流量经由 OpenChamber Private Relay(端到端加密隧道)传输,无需配置。`,"settings.remoteInstances.clientAuth.addDevice.fallback.relay":`外出时也允许通过加密中继连接`,"settings.remoteInstances.clientAuth.addDevice.fallback.preferLocal":`在家时优先使用直接连接`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLabel":`Relay 服务端`,"settings.remoteInstances.clientAuth.addDevice.relayUrlHint":`使用 OpenChamber 官方 Relay,或输入你自己的 ws:// 或 wss:// 地址。设备会保存二维码中的该地址。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlDeployLink":`可部署自己的 Relay 服务。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLockedHint":`此服务器已通过 OPENCHAMBER_RELAY_URL 固定 Relay 地址。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlRemoteHostHint":`由所连主机决定,配对将使用该主机当前的 Relay 地址。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlCustomOption":`自定义地址…`,"settings.remoteInstances.clientAuth.addDevice.relayUrlInvalid":`请输入以 ws:// 或 wss:// 开头的有效 Relay 地址。`,"settings.remoteInstances.clientAuth.addDevice.create":`创建二维码`,"settings.remoteInstances.clientAuth.addDevice.targetLabel":`目标实例`,"settings.remoteInstances.clientAuth.addDevice.target.local":`本机`,"settings.remoteInstances.clientAuth.addDevice.target.sshEmpty":`暂无已连接的 SSH 实例`,"settings.remoteInstances.clientAuth.addDevice.target.sshNotReady":`请先连接该 SSH 实例`,"settings.remoteInstances.sidebar.actions.switchInstanceDisabled":`请先连接该 SSH 实例再切换`,"settings.remoteInstances.sidebar.actions.syncConfigDisabled":`请先连接该实例再同步配置`,"settings.remoteInstances.sidebar.actions.syncConfig":`同步配置`,"settings.remoteInstances.clientAuth.addDevice.done":`完成`,"settings.remoteInstances.clientAuth.addDevice.connectedToast":`设备已连接。`,"settings.remoteInstances.clientAuth.pairingUrl":`连接链接`,"settings.remoteInstances.clientAuth.createdToken":`请立即复制此令牌。出于安全考虑,它不会再次显示。`,"settings.remoteInstances.clientAuth.state.loading":`正在加载令牌...`,"settings.remoteInstances.clientAuth.state.empty":`尚无已连接设备。`,"settings.remoteInstances.clientAuth.state.revoked":`已撤销`,"settings.remoteInstances.clientAuth.state.thisDevice":`此设备`,"settings.remoteInstances.clientAuth.state.pending":`等待连接…`,"settings.remoteInstances.clientAuth.state.viaRelay":`Relay`,"settings.remoteInstances.clientAuth.state.connectedDirect":`已连接 · 局域网`,"settings.remoteInstances.clientAuth.state.connectedRelay":`已连接 · 中继`,"settings.remoteInstances.clientAuth.lastUsed":`上次使用 {date}`,"settings.remoteInstances.clientAuth.neverUsed":`从未使用`,"settings.remoteInstances.relay.title":`OpenChamber Relay`,"settings.remoteInstances.relay.autoHint":`通过中继配对设备时自动开启。`,"settings.remoteInstances.relay.description":`无需开放端口,即可让你的其他设备从任何地方连接。流量端到端加密,中继无法读取内容。`,"settings.remoteInstances.relay.enableHint":`在此服务器上启用中继之前,不会共享任何内容。`,"settings.remoteInstances.relay.actions.enable":`启用中继`,"settings.remoteInstances.relay.actions.disable":`停用`,"settings.remoteInstances.relay.confirm.disable":`停用中继?通过它连接的设备将立即断开。`,"settings.remoteInstances.relay.state.loading":`正在检查中继状态...`,"settings.remoteInstances.relay.state.disabled":`已停用`,"settings.remoteInstances.relay.state.connecting":`连接中`,"settings.remoteInstances.relay.state.connected":`已连接`,"settings.remoteInstances.relay.state.reconnecting":`重新连接中`,"settings.remoteInstances.relay.state.error":`错误`,"settings.remoteInstances.relay.status.clientsOne":`已连接 {count} 台设备`,"settings.remoteInstances.relay.status.clientsMany":`已连接 {count} 台设备`,"settings.remoteInstances.relay.pair.title":`配对设备`,"settings.remoteInstances.relay.pair.labelPlaceholder":`设备名称(可选)`,"settings.remoteInstances.relay.pair.includeToken":`包含访问令牌(扫一次即完成配对)`,"settings.remoteInstances.relay.pair.noTokenHint":`不包含令牌时,设备连接后需使用此服务器的界面密码登录。`,"settings.remoteInstances.relay.pair.generate":`创建配对链接`,"settings.remoteInstances.relay.pair.requiresConnected":`中继连接后即可配对。`,"settings.remoteInstances.relay.pair.linkLabel":`配对链接`,"settings.remoteInstances.relay.pair.warning":`此链接可访问此服务器,请勿分享。`,"settings.remoteInstances.relay.pair.qrAlt":`中继配对二维码`,"settings.remoteInstances.relay.pair.showQr":`显示二维码`,"settings.remoteInstances.relay.pair.qrDialogTitle":`扫描配对`,"settings.remoteInstances.relay.pair.qrDialogDescription":`用其他设备上的 OpenChamber 应用扫描此二维码。`,"settings.remoteInstances.relay.pair.manageHint":`可在上方“连接到此服务器”列表中管理或吊销已配对的设备。`,"settings.remoteInstances.relay.toast.enableFailed":`无法启用中继`,"settings.remoteInstances.relay.toast.disableFailed":`无法停用中继`,"settings.remoteInstances.relay.toast.offerFailed":`无法创建配对链接`,"settings.remoteInstances.relay.toast.linkCopied":`已复制配对链接`,"settings.remoteInstances.sidebar.phase.ready":`就绪`,"settings.remoteInstances.sidebar.phase.error":`错误`,"settings.remoteInstances.sidebar.phase.reconnect":`重连`,"settings.remoteInstances.sidebar.phase.installing":`安装中`,"settings.remoteInstances.sidebar.phase.updating":`更新中`,"settings.remoteInstances.sidebar.phase.forwarding":`转发中`,"settings.remoteInstances.sidebar.phase.starting":`启动中`,"settings.remoteInstances.sidebar.phase.connecting":`连接中`,"settings.remoteInstances.sidebar.phase.idle":`空闲`,"settings.remoteInstances.page.section.instance":`实例`,"settings.remoteInstances.page.section.instanceDescription":`为此连接选择 SSH 命令和显示名称。`,"settings.remoteInstances.page.field.mode":`模式`,"settings.remoteInstances.page.field.modeHint":`选择是由 OpenChamber 为你启动服务器,还是连接到已在运行的服务器。`,"settings.remoteInstances.page.field.modePlaceholder":`选择模式`,"settings.remoteInstances.page.field.modeManaged":`帮我启动`,"settings.remoteInstances.page.field.modeExternal":`已在运行`,"settings.remoteInstances.page.field.preferredRemotePort":`首选远程端口`,"settings.remoteInstances.page.field.preferredRemotePortHint":`远程机器上使用的端口。留空则自动选择。`,"settings.remoteInstances.page.field.keepServerRunning":`保持服务运行`,"settings.remoteInstances.page.field.keepServerRunningHint":`断开连接后仍让 OpenChamber 在远程机器上运行。`,"settings.remoteInstances.page.field.bindHost":`绑定主机`,"settings.remoteInstances.page.field.bindHostHint":`本地连接监听的地址。除非需要局域网访问,否则请使用 127.0.0.1 或 localhost。`,"settings.remoteInstances.page.field.preferredLocalPort":`首选本地端口`,"settings.remoteInstances.page.field.preferredLocalPortHint":`为此连接打开的本地端口。留空则自动选择。`,"settings.remoteInstances.page.field.forwardType":`转发类型`,"settings.remoteInstances.page.field.localListen":`本地监听`,"settings.remoteInstances.page.field.localTarget":`本地目标`,"settings.remoteInstances.page.field.remoteListen":`远程监听`,"settings.remoteInstances.page.field.remoteTarget":`远程目标`,"settings.remoteInstances.page.field.localHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.remoteHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.auto":`自动`,"settings.remoteInstances.page.confirm.bindAllInterfaces":`绑定到 0.0.0.0 会将转发端口暴露到本地网络。是否继续?`,"settings.remoteInstances.page.preview.localSocks5":`(本地 SOCKS5)`,"settings.remoteInstances.page.preview.local":`(本地)`,"settings.remoteInstances.page.preview.remote":`(远程)`,"settings.remoteInstances.page.toast.openLocalEndpointFailed":`无法打开本地地址`,"settings.remoteInstances.page.toast.localUrlCopied":`本地 URL 已复制`,"settings.remoteInstances.page.actions.copyLocalUrl":`复制本地 URL`,"settings.remoteInstances.page.actions.open":`打开`,"settings.remoteInstances.page.logsDialog.selectedInstanceFallback":`所选实例`,"settings.remoteInstances.page.patternDialog.descriptionWithHost":`{host} 需要一个具体目标地址。`,"settings.remoteInstances.page.patternDialog.description":`输入目标地址。`,"settings.common.actions.cancel":`取消`,"settings.common.actions.create":`创建`,"settings.common.actions.delete":`删除`,"settings.common.actions.reset":`重置`,"settings.common.actions.rename":`重命名`,"settings.common.actions.duplicate":`复制`,"settings.common.actions.import":`导入`,"settings.common.actions.copyAll":`全部复制`,"settings.common.actions.clear":`清除`,"settings.common.actions.saving":`保存中...`,"settings.common.actions.saveChanges":`保存更改`,"settings.common.scope.global":`全局`,"settings.common.scope.project":`项目`,"settings.common.field.description":`描述`,"settings.common.badge.new":`新建`,"settings.common.badge.modified":`已修改`,"settings.common.permission.allow":`允许`,"settings.common.permission.ask":`询问`,"settings.common.permission.deny":`拒绝`,"settings.common.state.comingSoon":`即将推出...`,"settings.projects.actions.title":`操作`,"settings.projects.actions.description":`按项目显示在项目名旁边表头中的命令。`,"settings.projects.actions.validation.fillNameAndCommand":`保存前请填写操作名称和命令。`,"settings.projects.actions.state.loading":`加载中...`,"settings.projects.actions.state.empty":`尚未配置任何操作。`,"settings.projects.actions.state.untitled":`未命名操作`,"settings.projects.actions.state.noDesktopSshForwards":`没有可用的本地 SSH 转发。`,"settings.projects.actions.field.selectIconAria":`选择图标`,"settings.projects.actions.field.iconAria":`图标 {icon}`,"settings.projects.actions.field.actionNamePlaceholder":`操作名称`,"settings.projects.actions.field.command":`命令`,"settings.projects.actions.field.commandPlaceholder":`例如 bun run lint`,"settings.projects.actions.field.autoOpenUrl":`自动打开 URL`,"settings.projects.actions.field.autoOpenUrlForAria":`为 {title} 自动打开 URL`,"settings.projects.actions.field.autoOpenUrlDescription":`从输出中打开 URL,或使用下面的自定义 URL`,"settings.projects.actions.field.overrideUrlPlaceholder":`覆盖 URL(可选)`,"settings.projects.actions.field.overrideUrlTooltip":`如果填写此字段,将使用自定义 URL。为空时,应用会从输出中选择最佳 URL 打开。`,"settings.projects.actions.field.desktopSshForward":`桌面 SSH 转发`,"settings.projects.actions.field.useOutputManualUrl":`使用输出/手动 URL`,"settings.projects.actions.actions.add":`添加操作`,"settings.projects.actions.actions.save":`保存操作`,"settings.projects.actions.toast.saveFailed":`保存操作失败`,"settings.projects.actions.toast.saved":`项目操作已保存`,"settings.openchamber.about.title":`关于 OpenChamber`,"settings.openchamber.about.field.version":`版本`,"settings.openchamber.about.field.clientVersion":`客户端`,"settings.openchamber.about.field.webBundle":`Web 包`,"settings.openchamber.about.field.instanceOpenChamberVersion":`OpenChamber`,"settings.openchamber.about.field.instanceOpenCodeVersion":`OpenCode`,"settings.openchamber.about.field.openCodeVersion":`OpenCode 版本`,"settings.openchamber.about.state.checking":`检查中...`,"settings.openchamber.about.state.upToDate":`已是最新`,"settings.openchamber.about.state.unknown":`未知`,"settings.openchamber.about.state.builtin":`内置`,"settings.openchamber.about.actions.checkUpdates":`检查更新`,"settings.openchamber.about.actions.update":`更新`,"settings.openchamber.about.actions.updateToVersion":`更新到 {version}`,"settings.openchamber.about.actions.applyOtaToVersion":`一键更新到 {version}`,"settings.openchamber.about.actions.installNativeToVersion":`安装 {version}`,"settings.openchamber.about.actions.checkForUpdates":`检查更新`,"settings.openchamber.about.actions.submitFeedback":`提交反馈`,"settings.openchamber.about.toast.latestVersion":`你已是最新版本`,"settings.openchamber.about.toast.checkFailed":`无法检查更新`,"settings.openchamber.about.betaUpdates.label":`加入 Beta 更新渠道`,"settings.openchamber.about.betaUpdates.description":`在此设备上提前接收应用更新。`,"settings.openchamber.about.betaUpdates.rollback.title":`回退到稳定版?`,"settings.openchamber.about.betaUpdates.rollback.description":`当前运行的是 Beta 版本。关闭 Beta 更新渠道后,OpenChamber 将回退到稳定版 v{version}。重启应用后生效。`,"settings.openchamber.about.betaUpdates.rollback.actions.cancel":`保留 Beta`,"settings.openchamber.about.betaUpdates.rollback.actions.confirm":`回退到稳定版`,"settings.openchamber.about.diagnostics.label":`诊断日志`,"settings.openchamber.about.diagnostics.description":`导出本机诊断 feat,用于分析展示与同步问题。不包含消息正文或令牌。`,"settings.openchamber.about.diagnostics.export":`导出日志`,"settings.openchamber.about.diagnostics.exporting":`正在导出…`,"settings.openchamber.about.diagnostics.enable":`记录诊断 feat`,"settings.openchamber.about.diagnostics.enableHint":`仅测试版可用。在本机记录会话同步与展示生命周期,不含正文。`,"settings.openchamber.about.diagnostics.toast.exported":`已导出诊断日志`,"settings.openchamber.about.diagnostics.toast.failed":`无法导出诊断日志`,"settings.openchamber.about.diagnostics.toast.empty":`已导出诊断日志。尚未记录任何事件。`,"settings.agents.sidebar.title":`Agent`,"settings.agents.sidebar.total":`总计 {count}`,"settings.agents.sidebar.empty.title":`未配置 Agent`,"settings.agents.sidebar.empty.description":`使用上方 + 按钮创建一个`,"settings.agents.sidebar.section.builtIn":`内置 Agent`,"settings.agents.sidebar.section.custom":`自定义 Agent`,"settings.agents.sidebar.badge.system":`系统`,"settings.agents.sidebar.dialog.deleteTitle":`删除 Agent`,"settings.agents.sidebar.dialog.resetTitle":`重置 Agent`,"settings.agents.sidebar.dialog.deleteDescription":`确定要删除 Agent“{name}”吗?`,"settings.agents.sidebar.dialog.resetDescription":`确定要将 Agent“{name}”重置为默认配置吗?`,"settings.agents.sidebar.renameDialog.title":`重命名 Agent`,"settings.agents.sidebar.renameDialog.description":`为 Agent“@{name}”输入新名称`,"settings.agents.sidebar.renameDialog.placeholder":`新 Agent 名称...`,"settings.agents.sidebar.toast.builtInCannotDelete":`内置 Agent 无法删除`,"settings.agents.sidebar.toast.agentDeleted":`Agent“{name}”已删除`,"settings.agents.sidebar.toast.agentReset":`Agent“{name}”已重置为默认值`,"settings.agents.sidebar.toast.deleteFailed":`删除 Agent 失败`,"settings.agents.sidebar.toast.definitionNotFound":`未找到 Agent 定义。未进行任何更改。`,"settings.agents.sidebar.toast.resetFailed":`重置 Agent 失败`,"settings.agents.sidebar.toast.agentNameRequired":`Agent 名称为必填项`,"settings.agents.sidebar.toast.agentExists":`已存在同名 Agent`,"settings.agents.sidebar.toast.removeOldAfterRenameFailed":`重命名后移除旧 Agent 失败`,"settings.agents.sidebar.toast.renameFailed":`重命名 Agent 失败`,"settings.agents.sidebar.toast.agentRenamed":`Agent 已重命名为 "{name}"`,"settings.agents.page.toast.permissionNameRequired":`权限名称为必填项`,"settings.agents.page.toast.created":`Agent 创建成功`,"settings.agents.page.toast.updated":`Agent 更新成功`,"settings.agents.page.toast.createFailed":`创建 Agent 失败`,"settings.agents.page.toast.updateFailed":`更新 Agent 失败`,"settings.agents.page.toast.saveUnexpectedError":`保存时发生错误`,"settings.agents.page.toast.savedManualRestart":`已保存到磁盘。请重启已连接的 OpenCode 服务器以应用更改。`,"settings.agents.page.empty.title":`从侧边栏选择一个 Agent`,"settings.agents.page.empty.description":`或新建一个 Agent`,"settings.agents.page.title.new":`新建 Agent`,"settings.agents.page.subtitle.new":`配置新的助手人格`,"settings.agents.page.subtitle.edit":`编辑 Agent 设置`,"settings.agents.page.section.identityRole":`身份与角色`,"settings.agents.page.section.modelParameters":`模型与参数`,"settings.agents.page.section.systemPrompt":`系统提示词`,"settings.agents.page.section.toolPermissions":`工具权限`,"settings.agents.page.field.agentName":`Agent 名称`,"settings.agents.page.field.agentNamePlaceholder":`agent-name`,"settings.agents.page.field.scopePlaceholder":`作用域`,"settings.agents.page.field.descriptionPlaceholder":`这个 Agent 的作用是什么?`,"settings.agents.page.field.mode":`模式`,"settings.agents.page.field.modeTooltip":`主 Agent 与子 Agent 可见性`,"settings.agents.page.field.overrideModel":`覆盖模型`,"settings.agents.page.field.variant":`思考变体`,"settings.agents.page.field.variantTooltip":`可选。如果模型支持推理,变体控制推理深度。`,"settings.agents.page.field.variantHint":`模型特定(如 Anthropic variant)`,"settings.agents.page.field.variantPlaceholder":`例如 high, max, low, none`,"settings.agents.page.field.temperature":`Temperature`,"settings.agents.page.field.temperatureTooltip":`控制随机性。越高越有创造性,越低越聚焦。`,"settings.agents.page.field.temperatureRange":`0.0 到 2.0`,"settings.agents.page.field.clearTemperatureAria":`清除 Temperature 覆盖`,"settings.agents.page.field.topP":`Top P`,"settings.agents.page.field.topPTooltip":`核采样多样性。越低越倾向高概率 token。`,"settings.agents.page.field.topPRange":`0.0 到 1.0`,"settings.agents.page.field.clearTopPAria":`清除 Top P 覆盖`,"settings.agents.page.field.systemPromptPlaceholder":`你是一名专业编码助手...`,"settings.agents.page.mode.primary":`主 Agent`,"settings.agents.page.mode.subagent":`子 Agent`,"settings.agents.page.mode.all":`全部`,"settings.agents.page.permissions.defaultLabel":`默认`,"settings.agents.page.permissions.hideEditor":`隐藏编辑器`,"settings.agents.page.permissions.advancedEditor":`高级编辑器`,"settings.agents.page.permissions.globalSummary":`全局:{summary}`,"settings.agents.page.permissions.rulesSummary":`规则:{summary}`,"settings.agents.page.permissions.globalDefault":`全局默认`,"settings.agents.page.permissions.pattern":`模式`,"settings.agents.page.permissions.addCustomRule":`添加自定义规则`,"settings.agents.page.permissions.permissionPlaceholder":`权限...`,"settings.agents.page.permissions.patternPlaceholder":`模式(例如 *)`,"settings.page.behavior.title":`行为`,"settings.behavior.page.title":`行为`,"settings.behavior.page.warning.title":`全局规则会与项目规则合并使用`,"settings.behavior.page.warning.description":`此处所做的更改会更新 {path}。当项目级 AGENTS.md 存在时,OpenCode 也会包含它。`,"settings.behavior.page.section.systemPrompt":`全局 AGENTS.md`,"settings.behavior.page.field.systemPromptPlaceholder":`你是一个有帮助的 AI 助手...
|
|
1
|
+
var e={"settings.globalConfig.title":`全局配置`,"settings.globalConfig.description":`编辑 ~/.config/opencode 中当前生效的配置文件。`,"settings.globalConfig.actions.reload":`重新加载文件`,"settings.globalConfig.restartHint":`保存后重启 OpenCode,使配置变更生效。`,"settings.globalConfig.toast.loadFailed":`加载配置文件失败`,"settings.globalConfig.toast.saveFailed":`保存配置文件失败`,"settings.globalConfig.toast.saved":`配置已保存。重启 OpenCode 后生效。`,"settings.providers.page.openCodeGo.title":`OpenCode Go 用量跟踪`,"settings.providers.page.openCodeGo.description":`连接 OpenCode Go 控制面板以显示滚动、每周和每月配额。`,"settings.providers.page.openCodeGo.workspaceId":`工作区 ID`,"settings.providers.page.openCodeGo.authCookie":`身份验证 Cookie`,"settings.providers.page.openCodeGo.help":`从控制面板网址复制工作区 ID,并从浏览器开发者工具复制 auth Cookie。OpenChamber 绝不会扫描浏览器 Cookie 存储。`,"settings.providers.page.openCodeGo.save":`保存并验证`,"settings.providers.page.openCodeGo.replace":`替换`,"settings.providers.page.openCodeGo.validate":`验证`,"settings.providers.page.openCodeGo.delete":`删除`,"settings.providers.page.quotaCredentials.saved":`已保存 {provider} 凭据。`,"settings.providers.page.openCodeGo.saveFailed":`无法验证 OpenCode Go 凭据。`,"settings.providers.page.openCodeGo.valid":`OpenCode Go 凭据有效。`,"settings.providers.page.openCodeGo.invalid":`OpenCode Go 凭据无效或已过期。`,"settings.providers.page.openCodeGo.deleted":`已删除 OpenCode Go 凭据。`,"settings.providers.page.openCodeGo.deleteFailed":`无法删除 OpenCode Go 凭据。`,"settings.appearance.language.label":`语言`,"settings.appearance.language.description":`选择界面语言。`,"settings.appearance.language.select":`选择语言`,"settings.window.description":`OpenChamber 设置窗口。`,"settings.view.home.title":`设置`,"settings.view.home.description":`跳转到常用页面。`,"settings.view.home.cards.providers.title":`提供商`,"settings.view.home.cards.providers.description":`连接模型和凭据`,"settings.view.home.cards.agents.title":`Agent`,"settings.view.home.cards.agents.description":`提示词、工具、权限`,"settings.view.home.cards.skillsCatalog.title":`技能目录`,"settings.view.home.cards.skillsCatalog.description":`从目录安装技能`,"settings.view.home.cards.mcp.title":`MCP`,"settings.view.home.cards.mcp.description":`配置 MCP 服务器和连接`,"settings.view.home.cards.plugins.title":`插件`,"settings.view.home.cards.plugins.description":`管理 OpenCode 插件`,"settings.view.home.cards.usage.title":`用量`,"settings.view.home.cards.usage.description":`配额和花费可见性`,"settings.view.unavailable.title":`不可用`,"settings.view.unavailable.description":`此设置页面在当前运行环境中不可用。`,"settings.view.badge.beta":`测试版`,"settings.view.actions.reloadOpenCode":`重新加载 OpenCode`,"settings.view.actions.reloadOpenCodeTooltip":`重启 OpenCode 并重新加载其配置。`,"settings.view.actions.backToSettings":`返回设置`,"settings.view.actions.closeSettings":`关闭设置`,"settings.view.actions.openSectionList":`打开分组列表`,"settings.view.actions.closeSettingsWithShortcut":`关闭设置({shortcut}+,)`,"settings.view.actions.back":`返回`,"settings.view.actions.resizeNavigation":`调整设置导航宽度`,"settings.view.navigation.groups.connection":`连接`,"settings.view.navigation.groups.personalization":`个性化`,"settings.view.navigation.groups.workspace":`工作区`,"settings.view.navigation.groups.opencode":`OpenCode`,"settings.view.navigation.groups.content":`内容与自动化`,"settings.view.navigation.groups.system":`系统`,"settings.view.search.placeholder":`搜索设置`,"settings.view.search.aria":`搜索设置`,"settings.view.search.clear":`清除设置搜索`,"settings.view.search.noResults":`没有匹配的设置`,"settings.page.projects.title":`项目`,"settings.page.remoteInstances.title":`远程实例`,"settings.page.providers.title":`提供商`,"settings.page.usage.title":`用量`,"settings.page.agents.title":`Agent`,"settings.page.commands.title":`命令`,"settings.page.mcp.title":`MCP`,"settings.page.plugins.title":`插件`,"settings.page.skills.title":`技能`,"settings.page.skillsCatalog.title":`技能目录`,"settings.page.git.title":`Git`,"settings.page.appearance.title":`外观`,"settings.page.chat.title":`聊天`,"settings.page.shortcuts.title":`快捷键`,"settings.page.sessions.title":`会话`,"settings.page.archivedSessions.title":`已归档会话`,"settings.page.summaryAI.title":`智能摘要`,"settings.page.magicPrompts.title":`魔法提示词`,"settings.page.notifications.title":`通知`,"settings.page.voice.title":`语音`,"settings.page.about.title":`关于`,"settings.page.snippets.title":`代码片段`,"settings.snippets.sidebar.title":`代码片段`,"settings.snippets.sidebar.total":`共 {count} 个`,"settings.snippets.sidebar.actions.create":`创建代码片段`,"settings.snippets.sidebar.actions.more":`{name} 的更多操作`,"settings.snippets.sidebar.toast.deleted":`代码片段已删除`,"settings.snippets.sidebar.toast.deleteFailed":`删除代码片段失败`,"settings.snippets.sidebar.dialog.deleteTitle":`删除代码片段?`,"settings.snippets.sidebar.dialog.deleteDescription":`这将永久删除 #{name}。`,"settings.snippets.page.empty.title":`选择代码片段`,"settings.snippets.page.empty.description":`从侧边栏选择代码片段进行编辑。`,"settings.snippets.page.title.new":`新建代码片段`,"settings.snippets.page.field.namePlaceholder":`snippet-name`,"settings.snippets.page.field.descriptionPlaceholder":`这个代码片段的作用`,"settings.snippets.page.field.aliases":`别名`,"settings.snippets.page.field.aliasesPlaceholder":`safe, careful`,"settings.snippets.page.field.content":`内容`,"settings.snippets.page.field.contentPlaceholder":`代码片段 Markdown...`,"settings.snippets.page.hint":`在提示词中使用 #name。支持别名和与 opencode-snippets 兼容的 prepend/append 块。`,"settings.snippets.page.toast.nameRequired":`代码片段名称为必填项`,"settings.snippets.page.toast.contentRequired":`代码片段内容为必填项`,"settings.snippets.page.toast.saveFailed":`保存代码片段失败`,"settings.snippets.page.toast.saved":`代码片段已保存`,"settings.magicPrompts.sidebar.title":`魔法提示词`,"settings.magicPrompts.sidebar.description":`选择要编辑的提示词模板。`,"settings.magicPrompts.sidebar.group.git":`Git`,"settings.magicPrompts.sidebar.group.github":`GitHub`,"settings.magicPrompts.sidebar.group.session":`会话`,"settings.magicPrompts.sidebar.item.gitCommitGenerate":`提交生成`,"settings.magicPrompts.sidebar.item.gitPrGenerate":`PR 生成`,"settings.magicPrompts.sidebar.item.gitConflictResolve":`合并/Rebase 冲突解决`,"settings.magicPrompts.sidebar.item.gitCherrypickConflictResolve":`Cherry-pick 冲突解决`,"settings.magicPrompts.sidebar.item.githubPrReview":`PR 审查`,"settings.magicPrompts.sidebar.item.githubIssueReview":`Issue 审查`,"settings.magicPrompts.sidebar.item.githubPrFailedChecksReview":`PR 失败检查审查`,"settings.magicPrompts.sidebar.item.githubPrCommentsReview":`PR 评论审查`,"settings.magicPrompts.sidebar.item.githubSinglePrCommentReview":`单条 PR 评论审查`,"settings.magicPrompts.sidebar.item.sessionSummary":`会话总结`,"settings.magicPrompts.sidebar.item.sessionWorkspaceReview":`工作区审查`,"settings.magicPrompts.sidebar.item.sessionExplore":`代码库导览`,"settings.magicPrompts.sidebar.item.sessionCraftGoal":`创建 Goal`,"settings.magicPrompts.page.group.sessionCraftGoal.title":`创建 Goal`,"settings.magicPrompts.page.group.sessionCraftGoal.description":`由 /craft-goal 斜杠命令使用的提示词:可见用户消息 + 隐藏说明。通过引导式探索将想法或任务转化为清晰且有证据可验证的 Goal。`,"settings.magicPrompts.sidebar.item.sessionCatchUp":`快速回顾`,"settings.magicPrompts.sidebar.item.sessionDebug":`调试`,"settings.magicPrompts.sidebar.item.sessionWeigh":`权衡方案`,"settings.magicPrompts.sidebar.item.sessionFusion":`融合`,"settings.remoteInstances.sidebar.title":`远程实例`,"settings.remoteInstances.sidebar.description":`通过导入链接或 SSH 连接其他 OpenChamber 服务器。`,"settings.remoteInstances.sidebar.empty":`暂无远程实例。可导入链接或添加 SSH 连接。`,"settings.remoteInstances.channel.link":`链接`,"settings.remoteInstances.channel.ssh":`SSH`,"settings.remoteInstances.sidebar.total":`总计 {count}`,"settings.remoteInstances.sidebar.newSshInstanceName":`新的 SSH 连接`,"settings.remoteInstances.sidebar.actions.addSshInstance":`添加 SSH 连接`,"settings.remoteInstances.sidebar.actions.connect":`连接`,"settings.remoteInstances.sidebar.actions.disconnect":`断开连接`,"settings.remoteInstances.sidebar.actions.retry":`重试`,"settings.remoteInstances.sidebar.actions.remove":`移除`,"settings.remoteInstances.sidebar.confirm.localPortInUseRetry":`本地端口已被占用。是否选择一个随机空闲本地端口并重试?`,"settings.remoteInstances.sidebar.toast.createFailed":`无法创建 SSH 连接`,"settings.remoteInstances.sidebar.toast.retriedWithRandomPort":`已使用随机本地端口重试`,"settings.remoteInstances.sidebar.toast.connectFailed":`连接实例失败`,"settings.remoteInstances.sidebar.toast.disconnectFailed":`断开实例连接失败`,"settings.remoteInstances.sidebar.toast.retryFailed":`重试连接失败`,"settings.remoteInstances.sidebar.toast.removeFailed":`移除实例失败`,"settings.remoteInstances.direct.sidebarTitle":`服务器链接`,"settings.remoteInstances.direct.sidebarDescription":`使用配对链接连接`,"settings.remoteInstances.direct.title":`其他 OpenChamber 服务器`,"settings.remoteInstances.direct.description":`此应用可切换到的服务器。从另一台服务器导入配对链接。`,"settings.remoteInstances.direct.import.description":`粘贴来自另一个 OpenChamber 服务器的连接链接。`,"settings.remoteInstances.direct.import.placeholder":`openchamber://connect?...`,"settings.remoteInstances.direct.import.action":`导入链接`,"settings.remoteInstances.direct.error.invalidConnectLink":`无效的 OpenChamber 连接链接。`,"settings.remoteInstances.direct.state.loading":`正在加载服务器...`,"settings.remoteInstances.direct.state.empty":`尚未导入其他服务器。`,"settings.remoteInstances.clientAuth.title":`连接到此服务器`,"settings.remoteInstances.clientAuth.description":`创建安全链接或令牌,让 OpenChamber Desktop 可以连接到此服务器。`,"settings.remoteInstances.clientAuth.field.labelPlaceholder":`实例名称 — 例如 家里的电脑`,"settings.remoteInstances.clientAuth.field.labelHint":`对面设备会用这个名字显示此服务器。`,"settings.remoteInstances.clientAuth.actions.create":`创建令牌`,"settings.remoteInstances.clientAuth.actions.pair":`创建链接`,"settings.remoteInstances.clientAuth.actions.revoke":`撤销`,"settings.remoteInstances.clientAuth.actions.clearRevoked":`清除已撤销`,"settings.remoteInstances.clientAuth.qrAlt":`OpenChamber connection QR code`,"settings.remoteInstances.clientAuth.qrEnlarge":`放大二维码`,"settings.remoteInstances.clientAuth.qrScanHint":`用另一台设备上的 OpenChamber 应用扫描。一次性使用且会过期。`,"settings.remoteInstances.clientAuth.qrDialogTitle":`扫码连接`,"settings.remoteInstances.clientAuth.actions.addDevice":`添加设备`,"settings.remoteInstances.clientAuth.actions.copied":`已复制`,"settings.remoteInstances.clientAuth.addDevice.transportLabel":`你会在哪里使用这台设备?`,"settings.remoteInstances.clientAuth.addDevice.subtitle":`创建一次性二维码,把另一台设备连接到此服务器。`,"settings.remoteInstances.clientAuth.addDevice.transport.local":`仅本机`,"settings.remoteInstances.clientAuth.addDevice.transport.localHint":`供同一台电脑上的应用使用。`,"settings.remoteInstances.clientAuth.addDevice.transport.lan":`仅家庭网络`,"settings.remoteInstances.clientAuth.addDevice.transport.lanHint":`通过 Wi-Fi 直接连接。离开此网络后无法使用。`,"settings.remoteInstances.clientAuth.addDevice.transport.relay":`任何地方`,"settings.remoteInstances.clientAuth.addDevice.transport.relayHint":`在家和外出都可用。外出时流量经由 OpenChamber Private Relay(端到端加密隧道)传输,无需配置。`,"settings.remoteInstances.clientAuth.addDevice.fallback.relay":`外出时也允许通过加密中继连接`,"settings.remoteInstances.clientAuth.addDevice.fallback.preferLocal":`在家时优先使用直接连接`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLabel":`Relay 服务端`,"settings.remoteInstances.clientAuth.addDevice.relayUrlHint":`使用 OpenChamber 官方 Relay,或输入你自己的 ws:// 或 wss:// 地址。设备会保存二维码中的该地址。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlDeployLink":`可部署自己的 Relay 服务。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLockedHint":`此服务器已通过 OPENCHAMBER_RELAY_URL 固定 Relay 地址。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlRemoteHostHint":`由所连主机决定,配对将使用该主机当前的 Relay 地址。`,"settings.remoteInstances.clientAuth.addDevice.relayUrlCustomOption":`自定义地址…`,"settings.remoteInstances.clientAuth.addDevice.relayUrlInvalid":`请输入以 ws:// 或 wss:// 开头的有效 Relay 地址。`,"settings.remoteInstances.clientAuth.addDevice.create":`创建二维码`,"settings.remoteInstances.clientAuth.addDevice.targetLabel":`目标实例`,"settings.remoteInstances.clientAuth.addDevice.target.local":`本机`,"settings.remoteInstances.clientAuth.addDevice.target.sshEmpty":`暂无已连接的 SSH 实例`,"settings.remoteInstances.clientAuth.addDevice.target.sshNotReady":`请先连接该 SSH 实例`,"settings.remoteInstances.sidebar.actions.switchInstanceDisabled":`请先连接该 SSH 实例再切换`,"settings.remoteInstances.sidebar.actions.syncConfigDisabled":`请先连接该实例再同步配置`,"settings.remoteInstances.sidebar.actions.syncConfig":`同步配置`,"settings.remoteInstances.clientAuth.addDevice.done":`完成`,"settings.remoteInstances.clientAuth.addDevice.connectedToast":`设备已连接。`,"settings.remoteInstances.clientAuth.pairingUrl":`连接链接`,"settings.remoteInstances.clientAuth.createdToken":`请立即复制此令牌。出于安全考虑,它不会再次显示。`,"settings.remoteInstances.clientAuth.state.loading":`正在加载令牌...`,"settings.remoteInstances.clientAuth.state.empty":`尚无已连接设备。`,"settings.remoteInstances.clientAuth.state.revoked":`已撤销`,"settings.remoteInstances.clientAuth.state.thisDevice":`此设备`,"settings.remoteInstances.clientAuth.state.pending":`等待连接…`,"settings.remoteInstances.clientAuth.state.viaRelay":`Relay`,"settings.remoteInstances.clientAuth.state.connectedDirect":`已连接 · 局域网`,"settings.remoteInstances.clientAuth.state.connectedRelay":`已连接 · 中继`,"settings.remoteInstances.clientAuth.lastUsed":`上次使用 {date}`,"settings.remoteInstances.clientAuth.neverUsed":`从未使用`,"settings.remoteInstances.relay.title":`OpenChamber Relay`,"settings.remoteInstances.relay.autoHint":`通过中继配对设备时自动开启。`,"settings.remoteInstances.relay.description":`无需开放端口,即可让你的其他设备从任何地方连接。流量端到端加密,中继无法读取内容。`,"settings.remoteInstances.relay.enableHint":`在此服务器上启用中继之前,不会共享任何内容。`,"settings.remoteInstances.relay.actions.enable":`启用中继`,"settings.remoteInstances.relay.actions.disable":`停用`,"settings.remoteInstances.relay.confirm.disable":`停用中继?通过它连接的设备将立即断开。`,"settings.remoteInstances.relay.state.loading":`正在检查中继状态...`,"settings.remoteInstances.relay.state.disabled":`已停用`,"settings.remoteInstances.relay.state.connecting":`连接中`,"settings.remoteInstances.relay.state.connected":`已连接`,"settings.remoteInstances.relay.state.reconnecting":`重新连接中`,"settings.remoteInstances.relay.state.error":`错误`,"settings.remoteInstances.relay.status.clientsOne":`已连接 {count} 台设备`,"settings.remoteInstances.relay.status.clientsMany":`已连接 {count} 台设备`,"settings.remoteInstances.relay.pair.title":`配对设备`,"settings.remoteInstances.relay.pair.labelPlaceholder":`设备名称(可选)`,"settings.remoteInstances.relay.pair.includeToken":`包含访问令牌(扫一次即完成配对)`,"settings.remoteInstances.relay.pair.noTokenHint":`不包含令牌时,设备连接后需使用此服务器的界面密码登录。`,"settings.remoteInstances.relay.pair.generate":`创建配对链接`,"settings.remoteInstances.relay.pair.requiresConnected":`中继连接后即可配对。`,"settings.remoteInstances.relay.pair.linkLabel":`配对链接`,"settings.remoteInstances.relay.pair.warning":`此链接可访问此服务器,请勿分享。`,"settings.remoteInstances.relay.pair.qrAlt":`中继配对二维码`,"settings.remoteInstances.relay.pair.showQr":`显示二维码`,"settings.remoteInstances.relay.pair.qrDialogTitle":`扫描配对`,"settings.remoteInstances.relay.pair.qrDialogDescription":`用其他设备上的 OpenChamber 应用扫描此二维码。`,"settings.remoteInstances.relay.pair.manageHint":`可在上方“连接到此服务器”列表中管理或吊销已配对的设备。`,"settings.remoteInstances.relay.toast.enableFailed":`无法启用中继`,"settings.remoteInstances.relay.toast.disableFailed":`无法停用中继`,"settings.remoteInstances.relay.toast.offerFailed":`无法创建配对链接`,"settings.remoteInstances.relay.toast.linkCopied":`已复制配对链接`,"settings.remoteInstances.sidebar.phase.ready":`就绪`,"settings.remoteInstances.sidebar.phase.error":`错误`,"settings.remoteInstances.sidebar.phase.reconnect":`重连`,"settings.remoteInstances.sidebar.phase.installing":`安装中`,"settings.remoteInstances.sidebar.phase.updating":`更新中`,"settings.remoteInstances.sidebar.phase.forwarding":`转发中`,"settings.remoteInstances.sidebar.phase.starting":`启动中`,"settings.remoteInstances.sidebar.phase.connecting":`连接中`,"settings.remoteInstances.sidebar.phase.idle":`空闲`,"settings.remoteInstances.page.section.instance":`实例`,"settings.remoteInstances.page.section.instanceDescription":`为此连接选择 SSH 命令和显示名称。`,"settings.remoteInstances.page.field.mode":`模式`,"settings.remoteInstances.page.field.modeHint":`选择是由 OpenChamber 为你启动服务器,还是连接到已在运行的服务器。`,"settings.remoteInstances.page.field.modePlaceholder":`选择模式`,"settings.remoteInstances.page.field.modeManaged":`帮我启动`,"settings.remoteInstances.page.field.modeExternal":`已在运行`,"settings.remoteInstances.page.field.preferredRemotePort":`首选远程端口`,"settings.remoteInstances.page.field.preferredRemotePortHint":`远程机器上使用的端口。留空则自动选择。`,"settings.remoteInstances.page.field.keepServerRunning":`保持服务运行`,"settings.remoteInstances.page.field.keepServerRunningHint":`断开连接后仍让 OpenChamber 在远程机器上运行。`,"settings.remoteInstances.page.field.bindHost":`绑定主机`,"settings.remoteInstances.page.field.bindHostHint":`本地连接监听的地址。除非需要局域网访问,否则请使用 127.0.0.1 或 localhost。`,"settings.remoteInstances.page.field.preferredLocalPort":`首选本地端口`,"settings.remoteInstances.page.field.preferredLocalPortHint":`为此连接打开的本地端口。留空则自动选择。`,"settings.remoteInstances.page.field.forwardType":`转发类型`,"settings.remoteInstances.page.field.localListen":`本地监听`,"settings.remoteInstances.page.field.localTarget":`本地目标`,"settings.remoteInstances.page.field.remoteListen":`远程监听`,"settings.remoteInstances.page.field.remoteTarget":`远程目标`,"settings.remoteInstances.page.field.localHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.remoteHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.auto":`自动`,"settings.remoteInstances.page.confirm.bindAllInterfaces":`绑定到 0.0.0.0 会将转发端口暴露到本地网络。是否继续?`,"settings.remoteInstances.page.preview.localSocks5":`(本地 SOCKS5)`,"settings.remoteInstances.page.preview.local":`(本地)`,"settings.remoteInstances.page.preview.remote":`(远程)`,"settings.remoteInstances.page.toast.openLocalEndpointFailed":`无法打开本地地址`,"settings.remoteInstances.page.toast.localUrlCopied":`本地 URL 已复制`,"settings.remoteInstances.page.actions.copyLocalUrl":`复制本地 URL`,"settings.remoteInstances.page.actions.open":`打开`,"settings.remoteInstances.page.logsDialog.selectedInstanceFallback":`所选实例`,"settings.remoteInstances.page.patternDialog.descriptionWithHost":`{host} 需要一个具体目标地址。`,"settings.remoteInstances.page.patternDialog.description":`输入目标地址。`,"settings.common.actions.cancel":`取消`,"settings.common.actions.create":`创建`,"settings.common.actions.delete":`删除`,"settings.common.actions.reset":`重置`,"settings.common.actions.rename":`重命名`,"settings.common.actions.duplicate":`复制`,"settings.common.actions.import":`导入`,"settings.common.actions.copyAll":`全部复制`,"settings.common.actions.clear":`清除`,"settings.common.actions.saving":`保存中...`,"settings.common.actions.saveChanges":`保存更改`,"settings.common.scope.global":`全局`,"settings.common.scope.project":`项目`,"settings.common.field.description":`描述`,"settings.common.badge.new":`新建`,"settings.common.badge.modified":`已修改`,"settings.common.permission.allow":`允许`,"settings.common.permission.ask":`询问`,"settings.common.permission.deny":`拒绝`,"settings.common.state.comingSoon":`即将推出...`,"settings.projects.actions.title":`操作`,"settings.projects.actions.description":`按项目显示在项目名旁边表头中的命令。`,"settings.projects.actions.validation.fillNameAndCommand":`保存前请填写操作名称和命令。`,"settings.projects.actions.state.loading":`加载中...`,"settings.projects.actions.state.empty":`尚未配置任何操作。`,"settings.projects.actions.state.untitled":`未命名操作`,"settings.projects.actions.state.noDesktopSshForwards":`没有可用的本地 SSH 转发。`,"settings.projects.actions.field.selectIconAria":`选择图标`,"settings.projects.actions.field.iconAria":`图标 {icon}`,"settings.projects.actions.field.actionNamePlaceholder":`操作名称`,"settings.projects.actions.field.command":`命令`,"settings.projects.actions.field.commandPlaceholder":`例如 bun run lint`,"settings.projects.actions.field.autoOpenUrl":`自动打开 URL`,"settings.projects.actions.field.autoOpenUrlForAria":`为 {title} 自动打开 URL`,"settings.projects.actions.field.autoOpenUrlDescription":`从输出中打开 URL,或使用下面的自定义 URL`,"settings.projects.actions.field.overrideUrlPlaceholder":`覆盖 URL(可选)`,"settings.projects.actions.field.overrideUrlTooltip":`如果填写此字段,将使用自定义 URL。为空时,应用会从输出中选择最佳 URL 打开。`,"settings.projects.actions.field.desktopSshForward":`桌面 SSH 转发`,"settings.projects.actions.field.useOutputManualUrl":`使用输出/手动 URL`,"settings.projects.actions.actions.add":`添加操作`,"settings.projects.actions.actions.save":`保存操作`,"settings.projects.actions.toast.saveFailed":`保存操作失败`,"settings.projects.actions.toast.saved":`项目操作已保存`,"settings.openchamber.about.title":`关于 OpenChamber`,"settings.openchamber.about.field.version":`版本`,"settings.openchamber.about.field.clientVersion":`客户端`,"settings.openchamber.about.field.webBundle":`Web 包`,"settings.openchamber.about.field.instanceOpenChamberVersion":`OpenChamber`,"settings.openchamber.about.field.instanceOpenCodeVersion":`OpenCode`,"settings.openchamber.about.field.openCodeVersion":`OpenCode 版本`,"settings.openchamber.about.state.checking":`检查中...`,"settings.openchamber.about.state.upToDate":`已是最新`,"settings.openchamber.about.state.unknown":`未知`,"settings.openchamber.about.state.builtin":`内置`,"settings.openchamber.about.actions.checkUpdates":`检查更新`,"settings.openchamber.about.actions.update":`更新`,"settings.openchamber.about.actions.updateToVersion":`更新到 {version}`,"settings.openchamber.about.actions.applyOtaToVersion":`一键更新到 {version}`,"settings.openchamber.about.actions.installNativeToVersion":`安装 {version}`,"settings.openchamber.about.actions.checkForUpdates":`检查更新`,"settings.openchamber.about.actions.submitFeedback":`提交反馈`,"settings.openchamber.about.toast.latestVersion":`你已是最新版本`,"settings.openchamber.about.toast.checkFailed":`无法检查更新`,"settings.openchamber.about.betaUpdates.label":`加入 Beta 更新渠道`,"settings.openchamber.about.betaUpdates.description":`在此设备上提前接收应用更新。`,"settings.openchamber.about.betaUpdates.rollback.title":`回退到稳定版?`,"settings.openchamber.about.betaUpdates.rollback.description":`当前运行的是 Beta 版本。关闭 Beta 更新渠道后,OpenChamber 将回退到稳定版 v{version}。重启应用后生效。`,"settings.openchamber.about.betaUpdates.rollback.actions.cancel":`保留 Beta`,"settings.openchamber.about.betaUpdates.rollback.actions.confirm":`回退到稳定版`,"settings.openchamber.about.diagnostics.label":`诊断日志`,"settings.openchamber.about.diagnostics.description":`导出本机诊断 feat,用于分析展示与同步问题。不包含消息正文或令牌。`,"settings.openchamber.about.diagnostics.export":`导出日志`,"settings.openchamber.about.diagnostics.exporting":`正在导出…`,"settings.openchamber.about.diagnostics.enable":`记录诊断 feat`,"settings.openchamber.about.diagnostics.enableHint":`仅测试版可用。在本机记录会话同步与展示生命周期,不含正文。`,"settings.openchamber.about.diagnostics.toast.exported":`已导出诊断日志`,"settings.openchamber.about.diagnostics.toast.failed":`无法导出诊断日志`,"settings.openchamber.about.diagnostics.toast.empty":`已导出诊断日志。尚未记录任何事件。`,"settings.agents.sidebar.title":`Agent`,"settings.agents.sidebar.total":`总计 {count}`,"settings.agents.sidebar.empty.title":`未配置 Agent`,"settings.agents.sidebar.empty.description":`使用上方 + 按钮创建一个`,"settings.agents.sidebar.section.builtIn":`内置 Agent`,"settings.agents.sidebar.section.custom":`自定义 Agent`,"settings.agents.sidebar.badge.system":`系统`,"settings.agents.sidebar.dialog.deleteTitle":`删除 Agent`,"settings.agents.sidebar.dialog.resetTitle":`重置 Agent`,"settings.agents.sidebar.dialog.deleteDescription":`确定要删除 Agent“{name}”吗?`,"settings.agents.sidebar.dialog.resetDescription":`确定要将 Agent“{name}”重置为默认配置吗?`,"settings.agents.sidebar.renameDialog.title":`重命名 Agent`,"settings.agents.sidebar.renameDialog.description":`为 Agent“@{name}”输入新名称`,"settings.agents.sidebar.renameDialog.placeholder":`新 Agent 名称...`,"settings.agents.sidebar.toast.builtInCannotDelete":`内置 Agent 无法删除`,"settings.agents.sidebar.toast.agentDeleted":`Agent“{name}”已删除`,"settings.agents.sidebar.toast.agentReset":`Agent“{name}”已重置为默认值`,"settings.agents.sidebar.toast.deleteFailed":`删除 Agent 失败`,"settings.agents.sidebar.toast.definitionNotFound":`未找到 Agent 定义。未进行任何更改。`,"settings.agents.sidebar.toast.resetFailed":`重置 Agent 失败`,"settings.agents.sidebar.toast.agentNameRequired":`Agent 名称为必填项`,"settings.agents.sidebar.toast.agentExists":`已存在同名 Agent`,"settings.agents.sidebar.toast.removeOldAfterRenameFailed":`重命名后移除旧 Agent 失败`,"settings.agents.sidebar.toast.renameFailed":`重命名 Agent 失败`,"settings.agents.sidebar.toast.agentRenamed":`Agent 已重命名为 "{name}"`,"settings.agents.page.toast.permissionNameRequired":`权限名称为必填项`,"settings.agents.page.toast.created":`Agent 创建成功`,"settings.agents.page.toast.updated":`Agent 更新成功`,"settings.agents.page.toast.createFailed":`创建 Agent 失败`,"settings.agents.page.toast.updateFailed":`更新 Agent 失败`,"settings.agents.page.toast.saveUnexpectedError":`保存时发生错误`,"settings.agents.page.toast.savedManualRestart":`已保存到磁盘。请重启已连接的 OpenCode 服务器以应用更改。`,"settings.agents.page.empty.title":`从侧边栏选择一个 Agent`,"settings.agents.page.empty.description":`或新建一个 Agent`,"settings.agents.page.title.new":`新建 Agent`,"settings.agents.page.subtitle.new":`配置新的助手人格`,"settings.agents.page.subtitle.edit":`编辑 Agent 设置`,"settings.agents.page.section.identityRole":`身份与角色`,"settings.agents.page.section.modelParameters":`模型与参数`,"settings.agents.page.section.systemPrompt":`系统提示词`,"settings.agents.page.section.toolPermissions":`工具权限`,"settings.agents.page.field.agentName":`Agent 名称`,"settings.agents.page.field.agentNamePlaceholder":`agent-name`,"settings.agents.page.field.scopePlaceholder":`作用域`,"settings.agents.page.field.descriptionPlaceholder":`这个 Agent 的作用是什么?`,"settings.agents.page.field.mode":`模式`,"settings.agents.page.field.modeTooltip":`主 Agent 与子 Agent 可见性`,"settings.agents.page.field.overrideModel":`覆盖模型`,"settings.agents.page.field.variant":`思考变体`,"settings.agents.page.field.variantTooltip":`可选。如果模型支持推理,变体控制推理深度。`,"settings.agents.page.field.variantHint":`模型特定(如 Anthropic variant)`,"settings.agents.page.field.variantPlaceholder":`例如 high, max, low, none`,"settings.agents.page.field.temperature":`Temperature`,"settings.agents.page.field.temperatureTooltip":`控制随机性。越高越有创造性,越低越聚焦。`,"settings.agents.page.field.temperatureRange":`0.0 到 2.0`,"settings.agents.page.field.clearTemperatureAria":`清除 Temperature 覆盖`,"settings.agents.page.field.topP":`Top P`,"settings.agents.page.field.topPTooltip":`核采样多样性。越低越倾向高概率 token。`,"settings.agents.page.field.topPRange":`0.0 到 1.0`,"settings.agents.page.field.clearTopPAria":`清除 Top P 覆盖`,"settings.agents.page.field.systemPromptPlaceholder":`你是一名专业编码助手...`,"settings.agents.page.mode.primary":`主 Agent`,"settings.agents.page.mode.subagent":`子 Agent`,"settings.agents.page.mode.all":`全部`,"settings.agents.page.permissions.defaultLabel":`默认`,"settings.agents.page.permissions.hideEditor":`隐藏编辑器`,"settings.agents.page.permissions.advancedEditor":`高级编辑器`,"settings.agents.page.permissions.globalSummary":`全局:{summary}`,"settings.agents.page.permissions.rulesSummary":`规则:{summary}`,"settings.agents.page.permissions.globalDefault":`全局默认`,"settings.agents.page.permissions.pattern":`模式`,"settings.agents.page.permissions.addCustomRule":`添加自定义规则`,"settings.agents.page.permissions.permissionPlaceholder":`权限...`,"settings.agents.page.permissions.patternPlaceholder":`模式(例如 *)`,"settings.page.behavior.title":`行为`,"settings.behavior.page.title":`行为`,"settings.behavior.page.warning.title":`全局规则会与项目规则合并使用`,"settings.behavior.page.warning.description":`此处所做的更改会更新 {path}。当项目级 AGENTS.md 存在时,OpenCode 也会包含它。`,"settings.behavior.page.section.systemPrompt":`全局 AGENTS.md`,"settings.behavior.page.field.systemPromptPlaceholder":`你是一个有帮助的 AI 助手...
|
|
2
2
|
|
|
3
3
|
使用此空间定义 AI 在所有会话和提供商中的绝对行为规则。`,"settings.behavior.page.section.responseStyle":`回复风格`,"settings.behavior.page.responseStyle.tooltip":`启用后,这些说明会指导助手在每个新对话中的回复方式。它们会随你的第一条消息一起发送,不会更改全局 AGENTS.md 规则。`,"settings.behavior.page.responseStyle.enableAria":`启用回复风格说明`,"settings.behavior.page.responseStyle.enable":`向新对话添加回复风格说明`,"settings.behavior.page.responseStyle.preset":`预设`,"settings.behavior.page.responseStyle.option.concise":`简洁`,"settings.behavior.page.responseStyle.option.detailed":`详细`,"settings.behavior.page.responseStyle.option.mentor":`导师`,"settings.behavior.page.responseStyle.option.pushback":`反驳`,"settings.behavior.page.responseStyle.option.noFiller":`无废话`,"settings.behavior.page.responseStyle.option.matchEnergy":`匹配我的语气`,"settings.behavior.page.responseStyle.option.warmPeer":`亲近的同事`,"settings.behavior.page.responseStyle.option.custom":`自定义`,"settings.behavior.page.responseStyle.customPlaceholder":`编写要添加到第一条消息的说明...`,"settings.behavior.page.toast.saved":`行为保存成功`,"settings.behavior.page.toast.saveFailed":`行为保存失败`,"settings.commands.sidebar.title":`命令`,"settings.commands.sidebar.total":`总计 {count}`,"settings.commands.sidebar.empty.title":`未配置命令`,"settings.commands.sidebar.empty.description":`使用上方 + 按钮创建一个`,"settings.commands.sidebar.section.builtIn":`内置命令`,"settings.commands.sidebar.section.custom":`自定义命令`,"settings.commands.sidebar.dialog.deleteTitle":`删除命令`,"settings.commands.sidebar.dialog.resetTitle":`重置命令`,"settings.commands.sidebar.dialog.deleteDescription":`确定要删除命令“{name}”吗?`,"settings.commands.sidebar.dialog.resetDescription":`确定要将命令“{name}”重置为默认配置吗?`,"settings.commands.sidebar.renameDialog.title":`重命名命令`,"settings.commands.sidebar.renameDialog.description":`为命令“/{name}”输入新名称`,"settings.commands.sidebar.renameDialog.placeholder":`新命令名称...`,"settings.commands.sidebar.toast.builtInCannotDelete":`内置命令无法删除`,"settings.commands.sidebar.toast.commandDeleted":`命令“{name}”已删除`,"settings.commands.sidebar.toast.commandReset":`命令“{name}”已重置为默认值`,"settings.commands.sidebar.toast.deleteFailed":`删除命令失败`,"settings.commands.sidebar.toast.resetFailed":`重置命令失败`,"settings.commands.sidebar.toast.commandNameRequired":`命令名称为必填项`,"settings.commands.sidebar.toast.commandExists":`已存在同名命令`,"settings.commands.sidebar.toast.removeOldAfterRenameFailed":`重命名后移除旧命令失败`,"settings.commands.sidebar.toast.renameFailed":`重命名命令失败`,"settings.commands.page.toast.templateRequired":`命令模板为必填项`,"settings.commands.page.toast.created":`命令创建成功`,"settings.commands.page.toast.updated":`命令更新成功`,"settings.commands.page.toast.createFailed":`创建命令失败`,"settings.commands.page.toast.updateFailed":`更新命令失败`,"settings.commands.page.toast.saveUnexpectedError":`保存时发生错误`,"settings.commands.page.empty.title":`从侧边栏选择一个命令`,"settings.commands.page.empty.description":`或新建一个命令`,"settings.commands.page.title.new":`新建命令`,"settings.commands.page.subtitle.new":`配置新的斜杠命令`,"settings.commands.page.subtitle.edit":`编辑命令设置`,"settings.commands.page.section.identity":`身份`,"settings.commands.page.section.executionContext":`执行上下文`,"settings.commands.page.section.template":`命令模板`,"settings.commands.page.field.commandName":`命令名称`,"settings.commands.page.field.commandNamePlaceholder":`command-name`,"settings.commands.page.field.descriptionPlaceholder":`这个命令的作用是什么?`,"settings.commands.page.field.overrideAgent":`覆盖 Agent`,"settings.commands.page.field.templatePlaceholder":`在此输入命令模板...
|
|
4
4
|
|