@openchambery/web 1.18.2-beta.27 → 1.18.2-beta.29
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/AssistantView-Coj_BqNe.js +1 -0
- package/dist/assets/{ChatContainer-MbXH0_9-.js → ChatContainer-rXg0ZK5d.js} +23 -23
- package/dist/assets/{DiagramView-ot0ecLsz.js → DiagramView-CmN3auk-.js} +1 -1
- package/dist/assets/{MarkdownRendererImpl-C64z6iQo.js → MarkdownRendererImpl-BdH1ynSb.js} +2 -2
- package/dist/assets/{MobileDetailNavigation-CbNp5lEK.js → MobileDetailNavigation-DpfpKgPu.js} +1 -1
- package/dist/assets/MobileShareBridge-d58Vzm3O.js +4 -0
- package/dist/assets/MobileSurface-S6hr1_7p.js +2 -0
- package/dist/assets/{MultiRunWindow-gR076nZ1.js → MultiRunWindow-C4Ike8AX.js} +1 -1
- package/dist/assets/{OnboardingScreen-CYeRZznl.js → OnboardingScreen-CW21rCqC.js} +1 -1
- package/dist/assets/OverlayScrollbar-BsFmRX3b.js +1 -0
- package/dist/assets/{SettingsView-DPVCp_I9.js → SettingsView-DLxzV2rK.js} +12 -11
- package/dist/assets/{SettingsWindow-DVJ_vexV.js → SettingsWindow-B-iCDv5r.js} +1 -1
- package/dist/assets/{TerminalView-BRJIrylk.js → TerminalView-jsjZJ-hn.js} +1 -1
- package/dist/assets/{ToolOutputDialog-Cfi4K06k.js → ToolOutputDialog-RCrRpjSt.js} +1 -1
- package/dist/assets/appThemeRegistry-CnlbpoIa.js +2 -0
- package/dist/assets/capgoAdapter-LvGrONDp.js +1 -0
- package/dist/assets/{clipboard-BnElHSnO.js → clipboard-ByPKHEt8.js} +1 -1
- package/dist/assets/{context-menu-DOTwr5ee.js → context-menu-CvnY05Eg.js} +1 -1
- package/dist/assets/{dialog-COrLBm9O.js → dialog-CQLvE6F6.js} +1 -1
- package/dist/assets/{es-DIVYdoxi.js → es-ZHyqPb3M.js} +1 -1
- package/dist/assets/{fr-CNTlVypq.js → fr-nXAAl4qu.js} +1 -1
- package/dist/assets/{gitApi-BDGB8ZAu.js → gitApi-itjXkp9E.js} +6 -6
- package/dist/assets/insertionBoundaries-BumXctlh.js +1 -0
- package/dist/assets/{ja-C_eW5ZM8.js → ja-CLcxQZ5K.js} +1 -1
- package/dist/assets/{ko-CE3cOv7v.js → ko-KgjBt0nP.js} +1 -1
- package/dist/assets/main-BWyu53zj.js +172 -0
- package/dist/assets/main-Drfmhboy.js +2 -0
- package/dist/assets/miniChat-CC3awYO5.js +2 -0
- package/dist/assets/mobile-DbOR4vtC.js +2 -0
- package/dist/assets/multirun-CrlXzIhD.js +4 -0
- package/dist/assets/{pl-BZKZOE99.js → pl-ZJkD7N-8.js} +1 -1
- package/dist/assets/platform-G8Cxe5wN.js +2 -0
- package/dist/assets/{projectMeta-DSKfl_Jm.js → projectMeta-C-VsUy14.js} +1 -1
- package/dist/assets/{pt-BR-DHDgp8S3.js → pt-BR-B6nleSMM.js} +1 -1
- package/dist/assets/{radio-BNJ2-y1d.js → radio-CaoU7Lu-.js} +1 -1
- package/dist/assets/renderElectronMiniChatApp-BX-vxTMr.js +2 -0
- package/dist/assets/renderMobileApp-CSH0JwGO.js +23 -0
- package/dist/assets/runtimeConfig-D6Btfpc2.js +2 -0
- package/dist/assets/runtimeEndpointReset-DfILEKXr.js +145 -0
- package/dist/assets/{sortable-tabs-strip-A9XB-XsC.js → sortable-tabs-strip-DULPi5Jt.js} +1 -1
- package/dist/assets/{src-7UHu0sNZ.css → src-F6gEZAFJ.css} +1 -1
- package/dist/assets/{store-CUWqzRt7.js → store-BDxgw-Hx.js} +2 -2
- package/dist/assets/terminalApi-os4uWEou.js +1 -0
- package/dist/assets/types-BuiqMmh_.js +1 -0
- package/dist/assets/{uk-CfQK6cz1.js → uk-KTDMzdyl.js} +1 -1
- package/dist/assets/{useAppFontEffects-D357X5CO.js → useAppFontEffects-DGq7jjOF.js} +5 -5
- package/dist/assets/{useDesktopWindowControlsLayout-COoaoLe8.js → useDesktopWindowControlsLayout-DzesmOSh.js} +1 -1
- package/dist/assets/useEffectiveDirectory-BR3d8iyN.js +1 -0
- package/dist/assets/{useFontPreferences-92Qg-98H.js → useFontPreferences-B2QwnhAp.js} +1 -1
- package/dist/assets/{useMobileNavigationStore-B1PyYZet.js → useMobileNavigationStore-BSreVaq2.js} +11 -11
- package/dist/assets/useSessionAutoCleanup-BNXZ_4Tj.js +1 -0
- package/dist/assets/{useWorkerHighlightedLines-1ioGRcL8.js → useWorkerHighlightedLines-BCqkyru3.js} +1 -1
- package/dist/assets/{zh-CN-DvY2fKWp.js → zh-CN-BilLDIh_.js} +1 -1
- package/dist/assets/{zh-TW-eWe0lm3-.js → zh-TW-DBDsyRLQ.js} +1 -1
- package/dist/index.html +7 -5
- package/dist/mini-chat.html +7 -5
- package/dist/mobile.html +7 -5
- package/package.json +1 -1
- package/dist/assets/AssistantView-CYHGrhVg.js +0 -1
- package/dist/assets/MobileShareBridge-DOn-hxzP.js +0 -4
- package/dist/assets/MobileSurface-CeZhl-lw.js +0 -2
- package/dist/assets/OverlayScrollbar-BMacFRhB.js +0 -1
- package/dist/assets/appThemeRegistry-qxM2cfNQ.js +0 -2
- package/dist/assets/gitApiHttp-BxGAFLTf.js +0 -2
- package/dist/assets/insertionBoundaries-CleTjJ9-.js +0 -1
- package/dist/assets/main-D7RyTbS_.js +0 -2
- package/dist/assets/main-NcWTs_u-.js +0 -172
- package/dist/assets/miniChat-BW298aAZ.js +0 -2
- package/dist/assets/mobile-ClbnzzLq.js +0 -2
- package/dist/assets/multirun-BUYZ43vi.js +0 -4
- package/dist/assets/renderElectronMiniChatApp-rtopJsrU.js +0 -2
- package/dist/assets/renderMobileApp-MHbwmExD.js +0 -23
- package/dist/assets/runtimeConfig-BXCt7ZsQ.js +0 -1
- package/dist/assets/runtimeEndpointReset-D6GYnoPP.js +0 -145
- package/dist/assets/terminalApi-DpiAJlil.js +0 -1
- package/dist/assets/useEffectiveDirectory-f6pNNjRH.js +0 -1
- package/dist/assets/useSessionAutoCleanup-hkAbHGAN.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{$ as t,J as n,X as r,Y as i,Z as a,nt as o,rt as s}from"./vendor-base-ui-CnHfUmDN.js";import{n as c}from"./vendor-react-DLPElpoQ.js";import{n as l}from"./clipboard-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{$ as t,J as n,X as r,Y as i,Z as a,nt as o,rt as s}from"./vendor-base-ui-CnHfUmDN.js";import{n as c}from"./vendor-react-DLPElpoQ.js";import{n as l}from"./clipboard-ByPKHEt8.js";import{t as u}from"./utils-BxJEIWv5.js";import{t as d}from"./SettingsView-DLxzV2rK.js";var f=c(),p=e(s(),1),m=o(),h=e=>{let o=(0,f.c)(19),{open:s,onOpenChange:c}=e,{t:h}=l(),_=p.useId(),v=g,y;o[0]===c?y=o[1]:(y=e=>{!e&&v()||c(e)},o[0]=c,o[1]=y);let b;o[2]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,m.jsx)(t,{className:u(`fixed inset-0 z-50 bg-black/50 dark:bg-black/75`,`transition-opacity duration-150 ease-out`,`data-[starting-style]:opacity-0 data-[ending-style]:opacity-0`)}),o[2]=b):b=o[2];let x;o[3]===Symbol.for(`react.memo_cache_sentinel`)?(x=u(`relative pointer-events-auto`,`w-[90vw] max-w-[1200px] h-[85vh] max-h-[900px]`,`rounded-xl border shadow-none overflow-hidden origin-center`,`bg-background`,`transition-all duration-150 ease-out`,`data-[starting-style]:opacity-0 data-[starting-style]:scale-[0.98]`,`data-[ending-style]:opacity-0 data-[ending-style]:scale-[0.98]`,`data-[nested-dialog-open]:brightness-[0.55] dark:data-[nested-dialog-open]:brightness-[0.4]`),o[3]=x):x=o[3];let S;o[4]===h?S=o[5]:(S=h(`settings.window.description`),o[4]=h,o[5]=S);let C;o[6]!==_||o[7]!==S?(C=(0,m.jsx)(a,{id:_,className:`sr-only`,children:S}),o[6]=_,o[7]=S,o[8]=C):C=o[8];let w;o[9]===c?w=o[10]:(w=(0,m.jsx)(d,{onClose:()=>c(!1),isWindowed:!0}),o[9]=c,o[10]=w);let T;o[11]!==_||o[12]!==C||o[13]!==w?(T=(0,m.jsxs)(i,{children:[b,(0,m.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center pointer-events-none`,children:(0,m.jsxs)(r,{"aria-describedby":_,className:x,children:[C,w]})})]}),o[11]=_,o[12]=C,o[13]=w,o[14]=T):T=o[14];let E;return o[15]!==s||o[16]!==y||o[17]!==T?(E=(0,m.jsx)(n,{open:s,onOpenChange:y,children:T}),o[15]=s,o[16]=y,o[17]=T,o[18]=E):E=o[18],E};function g(){return typeof document>`u`?!1:!!document.querySelector(`[data-slot="dropdown-menu-content"][data-open], [data-slot="select-content"][data-open]`)}export{h as SettingsWindow};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{c as t,s as n,t as r}from"./useUIStore-5agS8bsW.js";import{Xt as i,kn as a}from"./persistence-D1lIuyqO.js";import{nt as o,rt as s,tt as c}from"./vendor-base-ui-CnHfUmDN.js";import{o as l}from"./terminalApi-DpiAJlil.js";import{n as u,r as d,t as f}from"./vendor-ghostty-web-HohRXr3g.js";import{n as ee,t as p}from"./clipboard-BnElHSnO.js";import{l as m}from"./useMobileNavigationStore-B1PyYZet.js";import{t as h}from"./utils-BxJEIWv5.js";import{n as g}from"./Icon-DiIuWOuC.js";import{t as _}from"./button-DaAoVF4X.js";import{n as v}from"./useThemeSystem-DMzWVJaW.js";import{i as y,t as b}from"./OverlayScrollbar-BMacFRhB.js";import{n as te}from"./useRuntimeAPIs-DSLXJybW.js";import{n as x}from"./useEffectiveDirectory-f6pNNjRH.js";import{t as S}from"./sortable-tabs-strip-A9XB-XsC.js";import{n as C,t as w}from"./useFontPreferences-92Qg-98H.js";import{r as T}from"./projectActions-CWvNGKfA.js";var E=e(s(),1);function ne(e){let{colors:t}=e,n=t.syntax.base;return{background:t.surface.background,foreground:n.foreground,cursor:t.interactive.cursor,cursorAccent:t.surface.background,selectionBackground:t.interactive.selection,selectionForeground:t.interactive.selectionForeground,selectionInactiveBackground:t.interactive.selection+`50`,black:t.surface.muted,red:t.status.error,green:t.status.success,yellow:t.status.warning,blue:n.function,magenta:n.keyword,cyan:n.type,white:n.foreground,brightBlack:n.comment,brightRed:t.status.error,brightGreen:t.status.success,brightYellow:t.status.warning,brightBlue:n.function,brightMagenta:n.keyword,brightCyan:n.type,brightWhite:t.surface.elevatedForeground}}function re(e,t,n,r,i=!1){return{cursorBlink:!1,cursorStyle:`bar`,fontSize:t,lineHeight:1.15,fontFamily:`${e}, "JetBrainsMonoNL Nerd Font", "FiraCode Nerd Font", "Cascadia Code PL", "Fira Code", "JetBrains Mono", "SFMono-Regular", Menlo, Consolas, "Liberation Mono", "Courier New", monospace`,allowTransparency:!1,theme:{background:n.background,foreground:n.foreground,cursor:n.cursor,cursorAccent:n.cursorAccent,selectionBackground:n.selectionBackground,selectionForeground:n.selectionForeground,black:n.black,red:n.red,green:n.green,yellow:n.yellow,blue:n.blue,magenta:n.magenta,cyan:n.cyan,white:n.white,brightBlack:n.brightBlack,brightRed:n.brightRed,brightGreen:n.brightGreen,brightYellow:n.brightYellow,brightBlue:n.brightBlue,brightMagenta:n.brightMagenta,brightCyan:n.brightCyan,brightWhite:n.brightWhite},scrollback:1e4,ghostty:r,disableStdin:i}}var ie=e(c(),1),D=o(),O=null;function k(){return O||=d.load(),O}function ae(e){if(typeof window>`u`)return null;let t=[e,...Array.from(e.querySelectorAll(`*`))],n=null;for(let e of t){let t=window.getComputedStyle(e).overflowY;if(t===`auto`||t===`scroll`){if(e.scrollHeight-e.clientHeight>2)return e;n||=e}}return n}var oe=E.forwardRef(({sessionKey:e,chunks:t,onInput:n,onResize:r,theme:i,fontFamily:a,fontSize:o,className:s,enableTouchScroll:c,autoFocus:l=!0,isVisible:d=!0},m)=>{let{t:g}=ee(),_=E.useRef(null),v=E.useRef(null),y=E.useRef(null),te=E.useRef(null),x=E.useRef(n),S=E.useRef(r),C=E.useRef(null),w=E.useRef(``),T=E.useRef(null),ne=E.useRef(!1),O=E.useRef(null),oe=E.useRef(!0),A=E.useRef(null),j=E.useRef(null),se=E.useRef(0),ce=E.useRef(null),M=E.useRef(null),N=E.useRef(!1),P=E.useRef(!1),le=E.useRef(null),ue=E.useRef(null),de=E.useRef(null),F=E.useRef(``),fe=E.useRef(null),pe=E.useRef(!c),me=E.useRef(d),[,he]=E.useReducer(e=>e+1,0),[ge,_e]=E.useReducer(e=>e+1,0);x.current=n,S.current=r;let ve=typeof navigator<`u`&&(/Android/i.test(navigator.userAgent)||navigator.userAgentData?.platform===`Android`),I=!!c;E.useEffect(()=>{if(!c){pe.current=!0,me.current=d;return}!me.current&&d&&(pe.current=!1),me.current=d},[c,d]);let ye=E.useCallback(()=>{if(!I)return;let e=_.current,t=ce.current;if(!e)return;let n=[];e.getAttribute(`contenteditable`)===`true`&&n.push(e),n.push(...Array.from(e.querySelectorAll(`[contenteditable="true"]`))),n.forEach(e=>{e.setAttribute(`data-terminal-disabled-contenteditable`,`true`),e.setAttribute(`contenteditable`,`false`),e.setAttribute(`aria-hidden`,`true`),e.tabIndex=-1,e.style.setProperty(`caret-color`,`transparent`),e.style.color=`transparent`,e.style.setProperty(`-webkit-text-fill-color`,`transparent`),e.style.background=`transparent`,e.style.outline=`none`,e.style.boxShadow=`none`,e.style.textShadow=`none`,e.style.setProperty(`user-select`,`none`),e.style.setProperty(`-webkit-user-select`,`none`)}),e.tabIndex=-1,e.removeAttribute(`role`),e.removeAttribute(`aria-multiline`),Array.from(e.querySelectorAll(`textarea`)).forEach(e=>{e.style.setProperty(`caret-color`,`transparent`),e.style.color=`transparent`,e.style.setProperty(`-webkit-text-fill-color`,`transparent`),e.style.background=`transparent`,e.style.border=`0`,e.style.outline=`none`,e.style.boxShadow=`none`,e.style.textShadow=`none`,e.style.fontSize=`0`,e.style.lineHeight=`0`,e!==t&&e.getAttribute(`data-terminal-disabled-input`)!==`true`&&(e.setAttribute(`data-terminal-disabled-input`,`true`),e.setAttribute(`aria-hidden`,`true`),e.tabIndex=-1,e.disabled=!0,e.style.position=`absolute`,e.style.opacity=`0`,e.style.width=`0px`,e.style.height=`0px`,e.style.pointerEvents=`none`,e.style.zIndex=`-1`)})},[I]),L=E.useCallback(e=>{if(fe.current===e)return;let t=y.current;if(t)try{if(typeof t.setOption==`function`){t.setOption(`cursorBlink`,e),fe.current=e;return}t.options&&(t.options.cursorBlink=e,fe.current=e)}catch{}},[]),R=I&&ve,z=E.useCallback((e,t)=>{let n=R?M.current:ce.current,r=_.current;if(!n||!r)return;let i=r.getBoundingClientRect(),a=typeof window<`u`?window.innerWidth:i.width,o=typeof window<`u`?window.innerHeight:i.height,s=i.left+i.width/2,c=i.top+i.height-12,l=typeof e==`number`?e:s,u=typeof t==`number`?t:c,d=Math.max(8,Math.min(a-8,l)),f=Math.max(8,Math.min(o-8,u));n.style.left=`${d}px`,n.style.top=`${f}px`,n.style.bottom=``,(n instanceof HTMLTextAreaElement||n instanceof HTMLInputElement)&&(n.disabled=!1,n.readOnly=!1,n.removeAttribute(`disabled`),n.removeAttribute(`readonly`));try{n.focus({preventScroll:!0})}catch{try{n.focus()}catch{}}},[R]),B=E.useCallback(()=>{if(I){z(),L(!0);return}y.current?.focus(),L(!0)},[z,L,I]),V=E.useCallback(e=>e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement?e.value:e.textContent??``,[]),H=E.useCallback(e=>{if(e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement){e.value=``;return}e.textContent=``},[]),be=E.useCallback(e=>{if(typeof window>`u`||R)return;de.current!==null&&(window.clearTimeout(de.current),de.current=null);let t=0,n=()=>{de.current=window.setTimeout(()=>{de.current=null;let r=V(e);if(!r){if(t+=1,t<3){n();return}return}let i=F.current;F.current=r;let a=r.startsWith(i)?r.slice(i.length):r;a&&x.current(a.replace(/\r\n|\r|\n/g,`\r`)),H(e),F.current=``},t===0?0:24)};n()},[H,V,R]);E.useEffect(()=>{let e=_.current;if(!I||!e||c)return;let t=t=>{let n=t.target;if(n&&n.getAttribute(`data-terminal-hidden-input`)!==`true`&&e.contains(n)){try{n.blur()}catch{}z()}};return e.addEventListener(`focusin`,t,!0),()=>{e.removeEventListener(`focusin`,t,!0)}},[c,I,z]);let U=E.useCallback(()=>{let e=y.current;if(!e||typeof e.getSelection!=`function`)return``;let t=e.getSelection();return typeof t==`string`?t:``},[]),xe=E.useCallback(()=>{if(typeof window>`u`)return``;let e=window.getSelection();if(!e)return``;let t=e.toString();if(!t.trim())return``;let n=_.current;if(!n)return``;let r=e.anchorNode,i=e.focusNode;return r&&!n.contains(r)||i&&!n.contains(i)?``:t},[]),Se=E.useCallback(async()=>{if(typeof document>`u`)return;let e=U()||xe();e.trim()&&await p(e)},[xe,U]),Ce=E.useCallback(()=>U().trim()?!0:!!xe().trim(),[xe,U]);E.useEffect(()=>{if(typeof window>`u`)return;let e=e=>{Ce()&&(e.preventDefault(),Se())};return window.addEventListener(`openchamber:copy`,e),()=>{window.removeEventListener(`openchamber:copy`,e)}},[Se,Ce]);let W=E.useCallback(()=>{w.current=``,T.current!==null&&typeof window<`u`&&window.cancelAnimationFrame(T.current),T.current=null,ne.current=!1,O.current=null},[]),G=E.useCallback(()=>{let e=te.current,t=y.current,n=_.current;if(!e||!t||!n)return;let r=n.getBoundingClientRect();if(!(r.width<24||r.height<24))try{e.fit();let n={cols:t.cols,rows:t.rows},r=C.current;(!r||r.cols!==n.cols||r.rows!==n.rows)&&(C.current=n,S.current(n.cols,n.rows))}catch{}},[]),K=E.useCallback(()=>{if(ne.current)return;let e=y.current;if(!e){W();return}if(!w.current)return;let t=w.current;w.current=``,ne.current=!0,e.write(t,()=>{ne.current=!1,w.current&&(typeof window<`u`?T.current=window.requestAnimationFrame(()=>{T.current=null,K()}):K())})},[W]),we=E.useCallback(()=>{T.current===null&&(typeof window<`u`?T.current=window.requestAnimationFrame(()=>{T.current=null,K()}):K())},[K]),q=E.useCallback(e=>{e&&(w.current+=e,we())},[we]),Te=E.useCallback(()=>{if(A.current?.(),A.current=null,j.current!==null&&typeof window<`u`&&(window.clearTimeout(j.current),j.current=null),!c){se.current=0;return}let e=_.current;if(!e)return;let t=y.current;if(!t)return;se.current=0;let n=2.2,r=2.8,i=.25,a=.05,s=.015,l={lastY:null,lastTime:null,velocity:0,rafId:null,startX:null,startY:null,didMove:!1},u=()=>typeof performance<`u`?performance.now():Date.now(),d=Math.max(12,Math.round(o*1.35)),f=0,ee=e=>{if(!e)return!1;let n=t.getViewportY(),r=f+e,i=Math.trunc(r/d);return f=r-i*d,i!==0&&t.scrollLines(i),t.getViewportY()!==n},p=()=>{l.rafId!==null&&typeof window<`u`&&window.cancelAnimationFrame(l.rafId),l.rafId=null},m={passive:!1,capture:!1};if(typeof window<`u`&&`PointerEvent`in window){let t=Object.assign(l,{pointerId:null,startX:null,startY:null,moved:!1}),o=n=>{if(n.pointerType===`touch`){p(),t.pointerId=n.pointerId,t.startX=n.clientX,t.startY=n.clientY,t.moved=!1,t.lastY=n.clientY,t.lastTime=u(),t.velocity=0;try{e.setPointerCapture(n.pointerId)}catch{}}},d=e=>{if(e.pointerType!==`touch`||t.pointerId!==e.pointerId)return;if(t.startX!==null&&t.startY!==null&&!t.moved){let n=e.clientX-t.startX,r=e.clientY-t.startY;Math.hypot(n,r)>=6&&(t.moved=!0)}if(t.lastY===null){t.lastY=e.clientY,t.lastTime=u();return}let a=t.lastY,o=t.lastTime??u(),s=u();t.lastY=e.clientY,t.lastTime=s;let c=a-e.clientY;if(Math.abs(c)<1)return;let l=Math.max(s-o,8),d=c*(n+Math.min(r,Math.abs(c)/25)),f=d/l;t.velocity=t.velocity*.75+f*i,t.velocity>8?t.velocity=8:t.velocity<-8&&(t.velocity=-8),t.moved&&(e.cancelable&&e.preventDefault(),e.stopPropagation()),ee(d)},f=n=>{if(n.pointerType!==`touch`||t.pointerId!==n.pointerId)return;let r=!t.moved;t.pointerId=null,t.startX=null,t.startY=null,t.moved=!1,t.lastY=null,t.lastTime=null;try{e.releasePointerCapture(n.pointerId)}catch{}if(r){I?z(n.clientX,n.clientY):c&&!pe.current&&(pe.current=!0,y.current?.focus());return}if(typeof window>`u`)return;if(Math.abs(t.velocity)<a){t.velocity=0;return}let i=u(),o=()=>{let e=u(),n=Math.max(e-i,8);i=e;let r=ee(t.velocity*n)??!1,c=Math.sign(t.velocity),l=Math.max(0,Math.abs(t.velocity)-s*n);if(t.velocity=l*c,!r||l<=a){p(),t.velocity=0;return}t.rafId=window.requestAnimationFrame(o)};t.rafId=window.requestAnimationFrame(o)};e.addEventListener(`pointerdown`,o,m),e.addEventListener(`pointermove`,d,m),e.addEventListener(`pointerup`,f,m),e.addEventListener(`pointercancel`,f,m);let h=e.style.touchAction,g=e.style.overscrollBehaviorY;e.style.touchAction=`none`,e.style.overscrollBehaviorY=`contain`,A.current=()=>{p(),j.current!==null&&typeof window<`u`&&(window.clearTimeout(j.current),j.current=null),se.current=0,e.removeEventListener(`pointerdown`,o,m),e.removeEventListener(`pointermove`,d,m),e.removeEventListener(`pointerup`,f,m),e.removeEventListener(`pointercancel`,f,m),e.style.touchAction=h,e.style.overscrollBehaviorY=g};return}let h=e=>{e.touches.length===1&&(p(),l.lastY=e.touches[0].clientY,l.lastTime=u(),l.velocity=0,l.startX=e.touches[0].clientX,l.startY=e.touches[0].clientY,l.didMove=!1)},g=e=>{if(e.touches.length!==1){l.lastY=null,l.lastTime=null,l.velocity=0,l.startX=null,l.startY=null,l.didMove=!1,p();return}let t=e.touches[0].clientX,a=e.touches[0].clientY;if(l.startX!==null&&l.startY!==null&&!l.didMove){let e=t-l.startX,n=a-l.startY;Math.hypot(e,n)>=6&&(l.didMove=!0)}if(l.lastY===null){l.lastY=a,l.lastTime=u();return}let o=l.lastY,s=l.lastTime??u(),c=u();l.lastY=a,l.lastTime=c;let d=o-a;if(Math.abs(d)<1)return;let f=Math.max(c-s,8),m=d*(n+Math.min(r,Math.abs(d)/25)),h=m/f;l.velocity=l.velocity*.75+h*i,l.velocity>8?l.velocity=8:l.velocity<-8&&(l.velocity=-8),l.didMove&&(e.preventDefault(),e.stopPropagation()),ee(m)},v=e=>{let t=!l.didMove;l.lastY=null,l.lastTime=null;let n=l.velocity;if(l.startX=null,l.startY=null,l.didMove=!1,t){let t=e.changedTouches?.[0];I?z(t?.clientX,t?.clientY):c&&!pe.current&&(pe.current=!0,y.current?.focus());return}if(typeof window>`u`)return;if(Math.abs(n)<a){l.velocity=0;return}let r=u(),i=()=>{let e=u(),t=Math.max(e-r,8);r=e;let n=ee(l.velocity*t)??!1,o=Math.sign(l.velocity),c=Math.max(0,Math.abs(l.velocity)-s*t);if(l.velocity=c*o,!n||c<=a){p(),l.velocity=0;return}l.rafId=window.requestAnimationFrame(i)};l.rafId=window.requestAnimationFrame(i)};e.addEventListener(`touchstart`,h,m),e.addEventListener(`touchmove`,g,m),e.addEventListener(`touchend`,v,m),e.addEventListener(`touchcancel`,v,m);let b=e.style.touchAction,te=e.style.overscrollBehaviorY;e.style.touchAction=`none`,e.style.overscrollBehaviorY=`contain`,A.current=()=>{p(),j.current!==null&&typeof window<`u`&&(window.clearTimeout(j.current),j.current=null),se.current=0,e.removeEventListener(`touchstart`,h,m),e.removeEventListener(`touchmove`,g,m),e.removeEventListener(`touchend`,v,m),e.removeEventListener(`touchcancel`,v,m),e.style.touchAction=b,e.style.overscrollBehaviorY=te}},[c,I,z,o]);E.useEffect(()=>{let e=!1,t=null,n=null,r=null,s=[],l=null,d=null,ee=null,p=_.current;if(!p)return;if(p.tabIndex=I?-1:0,I){let e=p.focus.bind(p),t=p;t.focus=((...e)=>{z()}),ee=()=>{t.focus=e}}let m=()=>{L(!0)},h=()=>{L(!1)},g=e=>{let t=e.target;if(t&&p.contains(t)){if(I&&t instanceof HTMLElement){window.setTimeout(()=>{t.blur(),z()},0),L(!1);return}if(c&&!pe.current&&t instanceof HTMLElement){window.setTimeout(()=>{t.blur()},0),L(!1);return}L(!0);return}L(!1)},b=()=>{L(!1)},S=null;return(async()=>{try{let ee=await k();if(e)return;let g=re(a,o,i,ee,!1),_=new u(g);oe.current=!0,I&&(_.focus=()=>{});let b=_;if(typeof b.scrollToBottom==`function`){let e=b.scrollToBottom.bind(b);b.scrollToBottom=()=>{oe.current&&e()},l=()=>{b.scrollToBottom=e}}let C=new f;if(t=_,y.current=_,te.current=C,_.loadAddon(C),_.open(p),c){let e=_.renderer;if(e&&typeof e.renderScrollbar==`function`){let t=e.renderScrollbar.bind(e);e.renderScrollbar=()=>{},d=()=>{e.renderScrollbar=t}}}_e(),fe.current=!1,S=_.textarea??p.querySelector(`textarea`),S&&(S.addEventListener(`focus`,m),S.addEventListener(`blur`,h)),ye(),typeof MutationObserver<`u`&&(r=new MutationObserver(()=>{ye()}),r.observe(p,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`contenteditable`,`role`,`tabindex`,`aria-label`]}));let w=ae(p);w?(w.classList.add(`overlay-scrollbar-target`,`overlay-scrollbar-container`),v.current=w,he()):v.current=null,G();let T=C;typeof T.observeResize==`function`&&T.observeResize(),Te(),s=[_.onData(e=>{x.current(e)}),_.onScroll(e=>{if(typeof e==`number`&&Number.isFinite(e)){let t=typeof _.hasSelection==`function`&&_.hasSelection();oe.current=!t&&e<=.5}}),_.onSelectionChange(()=>{if(typeof _.hasSelection==`function`&&_.hasSelection()){oe.current=!1;return}let e=typeof _.getViewportY==`function`?_.getViewportY():0;oe.current=e<=.5})],n=new ResizeObserver(()=>{G()}),n.observe(p),typeof window<`u`&&window.setTimeout(()=>{G()},0)}catch{}})(),document.addEventListener(`focusin`,g,!0),window.addEventListener(`blur`,b),()=>{e=!0,A.current?.(),A.current=null,document.removeEventListener(`focusin`,g,!0),window.removeEventListener(`blur`,b),s.forEach(e=>e.dispose()),l?.(),l=null,d?.(),d=null,S&&(S.removeEventListener(`focus`,m),S.removeEventListener(`blur`,h)),n?.disconnect(),r?.disconnect(),ee?.(),t?.dispose(),y.current=null,te.current=null,v.current=null,C.current=null,fe.current=null,W()}},[ye,c,G,z,a,o,Te,i,W,L,I]),E.useEffect(()=>{let e=y.current;e&&(e.reset(),W(),C.current=null,G())},[e,ge,G,W]),E.useEffect(()=>{l&&y.current&&B()},[l,B,e,ge]),E.useEffect(()=>(Te(),()=>{A.current?.(),A.current=null}),[Te,e]),E.useEffect(()=>{let e=y.current;if(!e)return;if(t.length===0){O.current!==null&&(e.reset(),W(),G());return}let n=O.current,r;if(n===null)r=t;else{let e=t.findIndex(e=>e.id===n);r=e>=0?t.slice(e+1):t}r.length>0&&q(r.map(e=>e.data).join(``)),O.current=t[t.length-1].id},[t,ge,q,G,W]),E.useImperativeHandle(m,()=>({focus:()=>{B()},clear:()=>{let e=y.current;e&&(e.reset(),W(),G())},fit:()=>{G()}}),[B,G,W]);let J=E.useCallback(e=>{if(!I)return;let t=_.current,n=e.relatedTarget,r=n?.tagName;r===`INPUT`||r===`TEXTAREA`||n?.isContentEditable,n?.getAttribute(`data-terminal-hidden-input`),n&&t?.contains(n)},[I]),Y=E.useCallback(e=>{let t=e.nativeEvent,n=t?.inputType??``,r=typeof t?.data==`string`?t.data:``;if(ue.current=typeof performance<`u`?performance.now():Date.now(),n===`insertCompositionText`){N.current=!0;return}if(!n&&r){if(N.current)return;e.preventDefault(),x.current(r),le.current={type:`insertText`,at:typeof performance<`u`?performance.now():Date.now()},P.current=!0;return}if(n===`insertText`&&r){if(N.current)return;e.preventDefault(),x.current(r),le.current={type:n,at:typeof performance<`u`?performance.now():Date.now()},P.current=!0;return}if(n===`insertLineBreak`){if(N.current)return;e.preventDefault(),x.current(`\r`),le.current={type:n,at:typeof performance<`u`?performance.now():Date.now()},P.current=!0;return}if(n===`deleteContentBackward`){if(N.current)return;e.preventDefault(),x.current(``),le.current={type:n,at:typeof performance<`u`?performance.now():Date.now()},P.current=!0}},[]),X=E.useCallback(e=>{let t=e.currentTarget;if(ue.current=typeof performance<`u`?performance.now():Date.now(),N.current)return;if(P.current){let e=le.current,n=typeof performance<`u`?performance.now():Date.now();if(e&&n-e.at<50){P.current=!1,H(t);return}P.current=!1}let n=V(t);if(!n)return;F.current=n;let r=n.replace(/\r\n|\r|\n/g,`\r`);x.current(r),H(t),F.current=``},[H,V]),Ee=E.useCallback(e=>{e.stopPropagation();let t=e.key.toLowerCase(),n=e.metaKey&&!e.ctrlKey&&!e.altKey&&t===`c`,r=e.ctrlKey&&e.shiftKey&&!e.metaKey&&!e.altKey&&t===`c`;if((n||r)&&Ce()){e.preventDefault(),Se();return}if(e.ctrlKey&&!e.metaKey&&!e.altKey&&e.key.length===1){let t=e.key.toUpperCase();if(t>=`A`&&t<=`Z`){e.preventDefault(),e.nativeEvent?.stopImmediatePropagation(),x.current(String.fromCharCode(t.charCodeAt(0)-64)),H(e.currentTarget);return}}if(e.altKey&&!e.ctrlKey&&!e.metaKey&&e.key.length===1){e.preventDefault(),e.nativeEvent?.stopImmediatePropagation(),x.current(`\x1B`+e.key),H(e.currentTarget);return}let i={ArrowUp:`\x1B[A`,ArrowDown:`\x1B[B`,ArrowRight:`\x1B[C`,ArrowLeft:`\x1B[D`,Escape:`\x1B`,Tab:` `,Delete:`\x1B[3~`,Home:`\x1B[H`,End:`\x1B[F`}[e.key];if(i){e.preventDefault(),x.current(i),H(e.currentTarget);return}let a=e.currentTarget;if(e.nativeEvent?.isComposing)return;let o=le.current,s=typeof performance<`u`?performance.now():Date.now(),c=!!(o&&s-o.at<50);if(e.key===`Enter`){if(c&&o?.type===`insertLineBreak`)return;e.preventDefault(),x.current(`\r`),H(a);return}if(e.key===`Backspace`){if(e.preventDefault(),c&&o?.type===`deleteContentBackward`)return;V(a)||x.current(``)}if(e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey){let t=ue.current;t&&s-t<50||(e.preventDefault(),x.current(e.key),P.current=!0,le.current={type:`keydown-text`,at:s})}be(a)},[H,Se,Ce,V,be]),De=E.useCallback(e=>{e.stopPropagation();let t=e.currentTarget;e.nativeEvent?.isComposing||be(t)},[be]),Oe=E.useCallback(e=>{let t=e.currentTarget;N.current=!1;let n=e.data||V(t);if(ue.current=typeof performance<`u`?performance.now():Date.now(),!n)return;let r=n.replace(/\r\n|\r|\n/g,`\r`);x.current(r),H(t),le.current={type:`compositionend`,at:typeof performance<`u`?performance.now():Date.now()},P.current=!0},[H,V]),ke=E.useCallback(e=>{e.stopPropagation();let t=e.clipboardData?.getData(`text`)??``;if(!t)return;e.preventDefault();let n=y.current?.hasBracketedPaste?.()?`\x1b[200~${t}\x1b[201~`:t;x.current(n)},[]),Ae={position:`fixed`,left:0,top:0,width:1,height:1,opacity:0,zIndex:-1,background:`transparent`,color:`transparent`,WebkitTextFillColor:`transparent`,caretColor:`transparent`,textShadow:`none`,WebkitAppearance:`none`,appearance:`none`,resize:`none`,overflow:`hidden`,whiteSpace:`nowrap`,border:`0`,padding:0,margin:0,outline:`none`,outlineOffset:0,fontSize:16,fontWeight:400,pointerEvents:`none`,WebkitUserSelect:`none`,userSelect:`none`};return(0,D.jsxs)(`div`,{ref:_,className:h(`relative h-full w-full terminal-viewport-container`,s),"data-hidden-input-overlay-active":I?`true`:void 0,style:{backgroundColor:i.background},onTouchStart:e=>{if(!(!I||c)&&!Ce()){let t=e.touches?.[0];z(t?.clientX,t?.clientY)}},onClick:e=>{if(!c)if(I){if(Ce())return;z(e.clientX,e.clientY)}else y.current?.focus()},onMouseUp:()=>{!c&&Ce()&&Se()},onTouchEnd:()=>{!c&&Ce()&&Se()},children:[I&&typeof document<`u`?(0,ie.createPortal)((0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`input`,{ref:M,type:`text`,inputMode:`text`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,tabIndex:-1,enterKeyHint:`send`,"data-terminal-hidden-input":`true`,"aria-label":g(`terminalView.viewport.inputAria`),"aria-hidden":`true`,style:{...Ae,display:R?`block`:`none`},onBlur:J,onBeforeInput:Y,onCompositionStart:()=>{N.current=!0},onInput:X,onKeyDown:Ee,onKeyUp:De,onCompositionEnd:Oe,onPaste:ke}),(0,D.jsx)(`textarea`,{ref:ce,inputMode:`text`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,tabIndex:-1,enterKeyHint:`send`,"data-terminal-hidden-input":`true`,"aria-label":g(`terminalView.viewport.inputAria`),"aria-hidden":`true`,style:{...Ae,display:R?`none`:`block`},onBlur:J,onBeforeInput:Y,onCompositionStart:()=>{N.current=!0},onInput:X,onKeyDown:Ee,onKeyUp:De,onCompositionEnd:Oe,onPaste:ke})]}),document.body):null,v.current&&!c?(0,D.jsx)(b,{containerRef:v,disableHorizontal:!0,className:`overlay-scrollbar--flush overlay-scrollbar--dense overlay-scrollbar--zero`}):null]})});oe.displayName=`TerminalViewport`;var A=RegExp(`\x1B\\[[0-9;?]*[ -/]*[@-~]`,`g`),j=/(https?:\/\/(?:localhost|127\.0\.0\.1|0\.0\.0\.0|\[(?:::1|::)\])(?::\d{2,5})?(?:\/[^\s<>'"`]*)?)/gi,se=/(?:➜\s*(?:Local|Network):)|\b(?:local|network|loopback|serving|listening|available|ready|started|running|server|vite|webpack|next\.js|astro|sveltekit|nuxt)\b/i,ce=/Serving HTTP on .*? port (\d{2,5})/i,M=new Set([`.`,`,`,`;`,`:`,`!`,`?`]),N=e=>{let t=e;for(;t.length>0;){let e=t[t.length-1];if(e===`)`||e===`]`||e===`}`||e===`>`){let n=e===`)`?`(`:e===`]`?`[`:e===`}`?`{`:`<`,r=t.slice(0,-1);if((r.match(RegExp(`\\${n}`,`g`))||[]).length>(r.match(RegExp(`\\${e}`,`g`))||[]).length)break;t=r;continue}if(M.has(e)){t=t.slice(0,-1);continue}break}return t},P=e=>{let t=N(e);return t=t.replace(`0.0.0.0`,`127.0.0.1`),t=t.replace(`[::1]`,`127.0.0.1`),t=t.replace(`[::]`,`127.0.0.1`),t},le=e=>{if(!e)return null;let t=e.replace(A,``),n=t.match(ce);if(n?.[1]){let e=Number.parseInt(n[1],10);if(Number.isFinite(e)&&e>0&&e<=65535)return`http://127.0.0.1:${e}/`}let r=t.split(`
|
|
1
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{c as t,s as n,t as r}from"./useUIStore-5agS8bsW.js";import{Xt as i,kn as a}from"./persistence-D1lIuyqO.js";import{nt as o,rt as s,tt as c}from"./vendor-base-ui-CnHfUmDN.js";import{o as l}from"./terminalApi-os4uWEou.js";import{n as u,r as d,t as f}from"./vendor-ghostty-web-HohRXr3g.js";import{n as ee,t as p}from"./clipboard-ByPKHEt8.js";import{l as m}from"./useMobileNavigationStore-BSreVaq2.js";import{t as h}from"./utils-BxJEIWv5.js";import{n as g}from"./Icon-DiIuWOuC.js";import{t as _}from"./button-DaAoVF4X.js";import{n as v}from"./useThemeSystem-DMzWVJaW.js";import{i as y,t as b}from"./OverlayScrollbar-BsFmRX3b.js";import{n as te}from"./useRuntimeAPIs-DSLXJybW.js";import{n as x}from"./useEffectiveDirectory-BR3d8iyN.js";import{t as S}from"./sortable-tabs-strip-DULPi5Jt.js";import{n as C,t as w}from"./useFontPreferences-B2QwnhAp.js";import{r as T}from"./projectActions-CWvNGKfA.js";var E=e(s(),1);function ne(e){let{colors:t}=e,n=t.syntax.base;return{background:t.surface.background,foreground:n.foreground,cursor:t.interactive.cursor,cursorAccent:t.surface.background,selectionBackground:t.interactive.selection,selectionForeground:t.interactive.selectionForeground,selectionInactiveBackground:t.interactive.selection+`50`,black:t.surface.muted,red:t.status.error,green:t.status.success,yellow:t.status.warning,blue:n.function,magenta:n.keyword,cyan:n.type,white:n.foreground,brightBlack:n.comment,brightRed:t.status.error,brightGreen:t.status.success,brightYellow:t.status.warning,brightBlue:n.function,brightMagenta:n.keyword,brightCyan:n.type,brightWhite:t.surface.elevatedForeground}}function re(e,t,n,r,i=!1){return{cursorBlink:!1,cursorStyle:`bar`,fontSize:t,lineHeight:1.15,fontFamily:`${e}, "JetBrainsMonoNL Nerd Font", "FiraCode Nerd Font", "Cascadia Code PL", "Fira Code", "JetBrains Mono", "SFMono-Regular", Menlo, Consolas, "Liberation Mono", "Courier New", monospace`,allowTransparency:!1,theme:{background:n.background,foreground:n.foreground,cursor:n.cursor,cursorAccent:n.cursorAccent,selectionBackground:n.selectionBackground,selectionForeground:n.selectionForeground,black:n.black,red:n.red,green:n.green,yellow:n.yellow,blue:n.blue,magenta:n.magenta,cyan:n.cyan,white:n.white,brightBlack:n.brightBlack,brightRed:n.brightRed,brightGreen:n.brightGreen,brightYellow:n.brightYellow,brightBlue:n.brightBlue,brightMagenta:n.brightMagenta,brightCyan:n.brightCyan,brightWhite:n.brightWhite},scrollback:1e4,ghostty:r,disableStdin:i}}var ie=e(c(),1),D=o(),O=null;function k(){return O||=d.load(),O}function ae(e){if(typeof window>`u`)return null;let t=[e,...Array.from(e.querySelectorAll(`*`))],n=null;for(let e of t){let t=window.getComputedStyle(e).overflowY;if(t===`auto`||t===`scroll`){if(e.scrollHeight-e.clientHeight>2)return e;n||=e}}return n}var oe=E.forwardRef(({sessionKey:e,chunks:t,onInput:n,onResize:r,theme:i,fontFamily:a,fontSize:o,className:s,enableTouchScroll:c,autoFocus:l=!0,isVisible:d=!0},m)=>{let{t:g}=ee(),_=E.useRef(null),v=E.useRef(null),y=E.useRef(null),te=E.useRef(null),x=E.useRef(n),S=E.useRef(r),C=E.useRef(null),w=E.useRef(``),T=E.useRef(null),ne=E.useRef(!1),O=E.useRef(null),oe=E.useRef(!0),A=E.useRef(null),j=E.useRef(null),se=E.useRef(0),ce=E.useRef(null),M=E.useRef(null),N=E.useRef(!1),P=E.useRef(!1),le=E.useRef(null),ue=E.useRef(null),de=E.useRef(null),F=E.useRef(``),fe=E.useRef(null),pe=E.useRef(!c),me=E.useRef(d),[,he]=E.useReducer(e=>e+1,0),[ge,_e]=E.useReducer(e=>e+1,0);x.current=n,S.current=r;let ve=typeof navigator<`u`&&(/Android/i.test(navigator.userAgent)||navigator.userAgentData?.platform===`Android`),I=!!c;E.useEffect(()=>{if(!c){pe.current=!0,me.current=d;return}!me.current&&d&&(pe.current=!1),me.current=d},[c,d]);let ye=E.useCallback(()=>{if(!I)return;let e=_.current,t=ce.current;if(!e)return;let n=[];e.getAttribute(`contenteditable`)===`true`&&n.push(e),n.push(...Array.from(e.querySelectorAll(`[contenteditable="true"]`))),n.forEach(e=>{e.setAttribute(`data-terminal-disabled-contenteditable`,`true`),e.setAttribute(`contenteditable`,`false`),e.setAttribute(`aria-hidden`,`true`),e.tabIndex=-1,e.style.setProperty(`caret-color`,`transparent`),e.style.color=`transparent`,e.style.setProperty(`-webkit-text-fill-color`,`transparent`),e.style.background=`transparent`,e.style.outline=`none`,e.style.boxShadow=`none`,e.style.textShadow=`none`,e.style.setProperty(`user-select`,`none`),e.style.setProperty(`-webkit-user-select`,`none`)}),e.tabIndex=-1,e.removeAttribute(`role`),e.removeAttribute(`aria-multiline`),Array.from(e.querySelectorAll(`textarea`)).forEach(e=>{e.style.setProperty(`caret-color`,`transparent`),e.style.color=`transparent`,e.style.setProperty(`-webkit-text-fill-color`,`transparent`),e.style.background=`transparent`,e.style.border=`0`,e.style.outline=`none`,e.style.boxShadow=`none`,e.style.textShadow=`none`,e.style.fontSize=`0`,e.style.lineHeight=`0`,e!==t&&e.getAttribute(`data-terminal-disabled-input`)!==`true`&&(e.setAttribute(`data-terminal-disabled-input`,`true`),e.setAttribute(`aria-hidden`,`true`),e.tabIndex=-1,e.disabled=!0,e.style.position=`absolute`,e.style.opacity=`0`,e.style.width=`0px`,e.style.height=`0px`,e.style.pointerEvents=`none`,e.style.zIndex=`-1`)})},[I]),L=E.useCallback(e=>{if(fe.current===e)return;let t=y.current;if(t)try{if(typeof t.setOption==`function`){t.setOption(`cursorBlink`,e),fe.current=e;return}t.options&&(t.options.cursorBlink=e,fe.current=e)}catch{}},[]),R=I&&ve,z=E.useCallback((e,t)=>{let n=R?M.current:ce.current,r=_.current;if(!n||!r)return;let i=r.getBoundingClientRect(),a=typeof window<`u`?window.innerWidth:i.width,o=typeof window<`u`?window.innerHeight:i.height,s=i.left+i.width/2,c=i.top+i.height-12,l=typeof e==`number`?e:s,u=typeof t==`number`?t:c,d=Math.max(8,Math.min(a-8,l)),f=Math.max(8,Math.min(o-8,u));n.style.left=`${d}px`,n.style.top=`${f}px`,n.style.bottom=``,(n instanceof HTMLTextAreaElement||n instanceof HTMLInputElement)&&(n.disabled=!1,n.readOnly=!1,n.removeAttribute(`disabled`),n.removeAttribute(`readonly`));try{n.focus({preventScroll:!0})}catch{try{n.focus()}catch{}}},[R]),B=E.useCallback(()=>{if(I){z(),L(!0);return}y.current?.focus(),L(!0)},[z,L,I]),V=E.useCallback(e=>e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement?e.value:e.textContent??``,[]),H=E.useCallback(e=>{if(e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement){e.value=``;return}e.textContent=``},[]),be=E.useCallback(e=>{if(typeof window>`u`||R)return;de.current!==null&&(window.clearTimeout(de.current),de.current=null);let t=0,n=()=>{de.current=window.setTimeout(()=>{de.current=null;let r=V(e);if(!r){if(t+=1,t<3){n();return}return}let i=F.current;F.current=r;let a=r.startsWith(i)?r.slice(i.length):r;a&&x.current(a.replace(/\r\n|\r|\n/g,`\r`)),H(e),F.current=``},t===0?0:24)};n()},[H,V,R]);E.useEffect(()=>{let e=_.current;if(!I||!e||c)return;let t=t=>{let n=t.target;if(n&&n.getAttribute(`data-terminal-hidden-input`)!==`true`&&e.contains(n)){try{n.blur()}catch{}z()}};return e.addEventListener(`focusin`,t,!0),()=>{e.removeEventListener(`focusin`,t,!0)}},[c,I,z]);let U=E.useCallback(()=>{let e=y.current;if(!e||typeof e.getSelection!=`function`)return``;let t=e.getSelection();return typeof t==`string`?t:``},[]),xe=E.useCallback(()=>{if(typeof window>`u`)return``;let e=window.getSelection();if(!e)return``;let t=e.toString();if(!t.trim())return``;let n=_.current;if(!n)return``;let r=e.anchorNode,i=e.focusNode;return r&&!n.contains(r)||i&&!n.contains(i)?``:t},[]),Se=E.useCallback(async()=>{if(typeof document>`u`)return;let e=U()||xe();e.trim()&&await p(e)},[xe,U]),Ce=E.useCallback(()=>U().trim()?!0:!!xe().trim(),[xe,U]);E.useEffect(()=>{if(typeof window>`u`)return;let e=e=>{Ce()&&(e.preventDefault(),Se())};return window.addEventListener(`openchamber:copy`,e),()=>{window.removeEventListener(`openchamber:copy`,e)}},[Se,Ce]);let W=E.useCallback(()=>{w.current=``,T.current!==null&&typeof window<`u`&&window.cancelAnimationFrame(T.current),T.current=null,ne.current=!1,O.current=null},[]),G=E.useCallback(()=>{let e=te.current,t=y.current,n=_.current;if(!e||!t||!n)return;let r=n.getBoundingClientRect();if(!(r.width<24||r.height<24))try{e.fit();let n={cols:t.cols,rows:t.rows},r=C.current;(!r||r.cols!==n.cols||r.rows!==n.rows)&&(C.current=n,S.current(n.cols,n.rows))}catch{}},[]),K=E.useCallback(()=>{if(ne.current)return;let e=y.current;if(!e){W();return}if(!w.current)return;let t=w.current;w.current=``,ne.current=!0,e.write(t,()=>{ne.current=!1,w.current&&(typeof window<`u`?T.current=window.requestAnimationFrame(()=>{T.current=null,K()}):K())})},[W]),we=E.useCallback(()=>{T.current===null&&(typeof window<`u`?T.current=window.requestAnimationFrame(()=>{T.current=null,K()}):K())},[K]),q=E.useCallback(e=>{e&&(w.current+=e,we())},[we]),Te=E.useCallback(()=>{if(A.current?.(),A.current=null,j.current!==null&&typeof window<`u`&&(window.clearTimeout(j.current),j.current=null),!c){se.current=0;return}let e=_.current;if(!e)return;let t=y.current;if(!t)return;se.current=0;let n=2.2,r=2.8,i=.25,a=.05,s=.015,l={lastY:null,lastTime:null,velocity:0,rafId:null,startX:null,startY:null,didMove:!1},u=()=>typeof performance<`u`?performance.now():Date.now(),d=Math.max(12,Math.round(o*1.35)),f=0,ee=e=>{if(!e)return!1;let n=t.getViewportY(),r=f+e,i=Math.trunc(r/d);return f=r-i*d,i!==0&&t.scrollLines(i),t.getViewportY()!==n},p=()=>{l.rafId!==null&&typeof window<`u`&&window.cancelAnimationFrame(l.rafId),l.rafId=null},m={passive:!1,capture:!1};if(typeof window<`u`&&`PointerEvent`in window){let t=Object.assign(l,{pointerId:null,startX:null,startY:null,moved:!1}),o=n=>{if(n.pointerType===`touch`){p(),t.pointerId=n.pointerId,t.startX=n.clientX,t.startY=n.clientY,t.moved=!1,t.lastY=n.clientY,t.lastTime=u(),t.velocity=0;try{e.setPointerCapture(n.pointerId)}catch{}}},d=e=>{if(e.pointerType!==`touch`||t.pointerId!==e.pointerId)return;if(t.startX!==null&&t.startY!==null&&!t.moved){let n=e.clientX-t.startX,r=e.clientY-t.startY;Math.hypot(n,r)>=6&&(t.moved=!0)}if(t.lastY===null){t.lastY=e.clientY,t.lastTime=u();return}let a=t.lastY,o=t.lastTime??u(),s=u();t.lastY=e.clientY,t.lastTime=s;let c=a-e.clientY;if(Math.abs(c)<1)return;let l=Math.max(s-o,8),d=c*(n+Math.min(r,Math.abs(c)/25)),f=d/l;t.velocity=t.velocity*.75+f*i,t.velocity>8?t.velocity=8:t.velocity<-8&&(t.velocity=-8),t.moved&&(e.cancelable&&e.preventDefault(),e.stopPropagation()),ee(d)},f=n=>{if(n.pointerType!==`touch`||t.pointerId!==n.pointerId)return;let r=!t.moved;t.pointerId=null,t.startX=null,t.startY=null,t.moved=!1,t.lastY=null,t.lastTime=null;try{e.releasePointerCapture(n.pointerId)}catch{}if(r){I?z(n.clientX,n.clientY):c&&!pe.current&&(pe.current=!0,y.current?.focus());return}if(typeof window>`u`)return;if(Math.abs(t.velocity)<a){t.velocity=0;return}let i=u(),o=()=>{let e=u(),n=Math.max(e-i,8);i=e;let r=ee(t.velocity*n)??!1,c=Math.sign(t.velocity),l=Math.max(0,Math.abs(t.velocity)-s*n);if(t.velocity=l*c,!r||l<=a){p(),t.velocity=0;return}t.rafId=window.requestAnimationFrame(o)};t.rafId=window.requestAnimationFrame(o)};e.addEventListener(`pointerdown`,o,m),e.addEventListener(`pointermove`,d,m),e.addEventListener(`pointerup`,f,m),e.addEventListener(`pointercancel`,f,m);let h=e.style.touchAction,g=e.style.overscrollBehaviorY;e.style.touchAction=`none`,e.style.overscrollBehaviorY=`contain`,A.current=()=>{p(),j.current!==null&&typeof window<`u`&&(window.clearTimeout(j.current),j.current=null),se.current=0,e.removeEventListener(`pointerdown`,o,m),e.removeEventListener(`pointermove`,d,m),e.removeEventListener(`pointerup`,f,m),e.removeEventListener(`pointercancel`,f,m),e.style.touchAction=h,e.style.overscrollBehaviorY=g};return}let h=e=>{e.touches.length===1&&(p(),l.lastY=e.touches[0].clientY,l.lastTime=u(),l.velocity=0,l.startX=e.touches[0].clientX,l.startY=e.touches[0].clientY,l.didMove=!1)},g=e=>{if(e.touches.length!==1){l.lastY=null,l.lastTime=null,l.velocity=0,l.startX=null,l.startY=null,l.didMove=!1,p();return}let t=e.touches[0].clientX,a=e.touches[0].clientY;if(l.startX!==null&&l.startY!==null&&!l.didMove){let e=t-l.startX,n=a-l.startY;Math.hypot(e,n)>=6&&(l.didMove=!0)}if(l.lastY===null){l.lastY=a,l.lastTime=u();return}let o=l.lastY,s=l.lastTime??u(),c=u();l.lastY=a,l.lastTime=c;let d=o-a;if(Math.abs(d)<1)return;let f=Math.max(c-s,8),m=d*(n+Math.min(r,Math.abs(d)/25)),h=m/f;l.velocity=l.velocity*.75+h*i,l.velocity>8?l.velocity=8:l.velocity<-8&&(l.velocity=-8),l.didMove&&(e.preventDefault(),e.stopPropagation()),ee(m)},v=e=>{let t=!l.didMove;l.lastY=null,l.lastTime=null;let n=l.velocity;if(l.startX=null,l.startY=null,l.didMove=!1,t){let t=e.changedTouches?.[0];I?z(t?.clientX,t?.clientY):c&&!pe.current&&(pe.current=!0,y.current?.focus());return}if(typeof window>`u`)return;if(Math.abs(n)<a){l.velocity=0;return}let r=u(),i=()=>{let e=u(),t=Math.max(e-r,8);r=e;let n=ee(l.velocity*t)??!1,o=Math.sign(l.velocity),c=Math.max(0,Math.abs(l.velocity)-s*t);if(l.velocity=c*o,!n||c<=a){p(),l.velocity=0;return}l.rafId=window.requestAnimationFrame(i)};l.rafId=window.requestAnimationFrame(i)};e.addEventListener(`touchstart`,h,m),e.addEventListener(`touchmove`,g,m),e.addEventListener(`touchend`,v,m),e.addEventListener(`touchcancel`,v,m);let b=e.style.touchAction,te=e.style.overscrollBehaviorY;e.style.touchAction=`none`,e.style.overscrollBehaviorY=`contain`,A.current=()=>{p(),j.current!==null&&typeof window<`u`&&(window.clearTimeout(j.current),j.current=null),se.current=0,e.removeEventListener(`touchstart`,h,m),e.removeEventListener(`touchmove`,g,m),e.removeEventListener(`touchend`,v,m),e.removeEventListener(`touchcancel`,v,m),e.style.touchAction=b,e.style.overscrollBehaviorY=te}},[c,I,z,o]);E.useEffect(()=>{let e=!1,t=null,n=null,r=null,s=[],l=null,d=null,ee=null,p=_.current;if(!p)return;if(p.tabIndex=I?-1:0,I){let e=p.focus.bind(p),t=p;t.focus=((...e)=>{z()}),ee=()=>{t.focus=e}}let m=()=>{L(!0)},h=()=>{L(!1)},g=e=>{let t=e.target;if(t&&p.contains(t)){if(I&&t instanceof HTMLElement){window.setTimeout(()=>{t.blur(),z()},0),L(!1);return}if(c&&!pe.current&&t instanceof HTMLElement){window.setTimeout(()=>{t.blur()},0),L(!1);return}L(!0);return}L(!1)},b=()=>{L(!1)},S=null;return(async()=>{try{let ee=await k();if(e)return;let g=re(a,o,i,ee,!1),_=new u(g);oe.current=!0,I&&(_.focus=()=>{});let b=_;if(typeof b.scrollToBottom==`function`){let e=b.scrollToBottom.bind(b);b.scrollToBottom=()=>{oe.current&&e()},l=()=>{b.scrollToBottom=e}}let C=new f;if(t=_,y.current=_,te.current=C,_.loadAddon(C),_.open(p),c){let e=_.renderer;if(e&&typeof e.renderScrollbar==`function`){let t=e.renderScrollbar.bind(e);e.renderScrollbar=()=>{},d=()=>{e.renderScrollbar=t}}}_e(),fe.current=!1,S=_.textarea??p.querySelector(`textarea`),S&&(S.addEventListener(`focus`,m),S.addEventListener(`blur`,h)),ye(),typeof MutationObserver<`u`&&(r=new MutationObserver(()=>{ye()}),r.observe(p,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`contenteditable`,`role`,`tabindex`,`aria-label`]}));let w=ae(p);w?(w.classList.add(`overlay-scrollbar-target`,`overlay-scrollbar-container`),v.current=w,he()):v.current=null,G();let T=C;typeof T.observeResize==`function`&&T.observeResize(),Te(),s=[_.onData(e=>{x.current(e)}),_.onScroll(e=>{if(typeof e==`number`&&Number.isFinite(e)){let t=typeof _.hasSelection==`function`&&_.hasSelection();oe.current=!t&&e<=.5}}),_.onSelectionChange(()=>{if(typeof _.hasSelection==`function`&&_.hasSelection()){oe.current=!1;return}let e=typeof _.getViewportY==`function`?_.getViewportY():0;oe.current=e<=.5})],n=new ResizeObserver(()=>{G()}),n.observe(p),typeof window<`u`&&window.setTimeout(()=>{G()},0)}catch{}})(),document.addEventListener(`focusin`,g,!0),window.addEventListener(`blur`,b),()=>{e=!0,A.current?.(),A.current=null,document.removeEventListener(`focusin`,g,!0),window.removeEventListener(`blur`,b),s.forEach(e=>e.dispose()),l?.(),l=null,d?.(),d=null,S&&(S.removeEventListener(`focus`,m),S.removeEventListener(`blur`,h)),n?.disconnect(),r?.disconnect(),ee?.(),t?.dispose(),y.current=null,te.current=null,v.current=null,C.current=null,fe.current=null,W()}},[ye,c,G,z,a,o,Te,i,W,L,I]),E.useEffect(()=>{let e=y.current;e&&(e.reset(),W(),C.current=null,G())},[e,ge,G,W]),E.useEffect(()=>{l&&y.current&&B()},[l,B,e,ge]),E.useEffect(()=>(Te(),()=>{A.current?.(),A.current=null}),[Te,e]),E.useEffect(()=>{let e=y.current;if(!e)return;if(t.length===0){O.current!==null&&(e.reset(),W(),G());return}let n=O.current,r;if(n===null)r=t;else{let e=t.findIndex(e=>e.id===n);r=e>=0?t.slice(e+1):t}r.length>0&&q(r.map(e=>e.data).join(``)),O.current=t[t.length-1].id},[t,ge,q,G,W]),E.useImperativeHandle(m,()=>({focus:()=>{B()},clear:()=>{let e=y.current;e&&(e.reset(),W(),G())},fit:()=>{G()}}),[B,G,W]);let J=E.useCallback(e=>{if(!I)return;let t=_.current,n=e.relatedTarget,r=n?.tagName;r===`INPUT`||r===`TEXTAREA`||n?.isContentEditable,n?.getAttribute(`data-terminal-hidden-input`),n&&t?.contains(n)},[I]),Y=E.useCallback(e=>{let t=e.nativeEvent,n=t?.inputType??``,r=typeof t?.data==`string`?t.data:``;if(ue.current=typeof performance<`u`?performance.now():Date.now(),n===`insertCompositionText`){N.current=!0;return}if(!n&&r){if(N.current)return;e.preventDefault(),x.current(r),le.current={type:`insertText`,at:typeof performance<`u`?performance.now():Date.now()},P.current=!0;return}if(n===`insertText`&&r){if(N.current)return;e.preventDefault(),x.current(r),le.current={type:n,at:typeof performance<`u`?performance.now():Date.now()},P.current=!0;return}if(n===`insertLineBreak`){if(N.current)return;e.preventDefault(),x.current(`\r`),le.current={type:n,at:typeof performance<`u`?performance.now():Date.now()},P.current=!0;return}if(n===`deleteContentBackward`){if(N.current)return;e.preventDefault(),x.current(``),le.current={type:n,at:typeof performance<`u`?performance.now():Date.now()},P.current=!0}},[]),X=E.useCallback(e=>{let t=e.currentTarget;if(ue.current=typeof performance<`u`?performance.now():Date.now(),N.current)return;if(P.current){let e=le.current,n=typeof performance<`u`?performance.now():Date.now();if(e&&n-e.at<50){P.current=!1,H(t);return}P.current=!1}let n=V(t);if(!n)return;F.current=n;let r=n.replace(/\r\n|\r|\n/g,`\r`);x.current(r),H(t),F.current=``},[H,V]),Ee=E.useCallback(e=>{e.stopPropagation();let t=e.key.toLowerCase(),n=e.metaKey&&!e.ctrlKey&&!e.altKey&&t===`c`,r=e.ctrlKey&&e.shiftKey&&!e.metaKey&&!e.altKey&&t===`c`;if((n||r)&&Ce()){e.preventDefault(),Se();return}if(e.ctrlKey&&!e.metaKey&&!e.altKey&&e.key.length===1){let t=e.key.toUpperCase();if(t>=`A`&&t<=`Z`){e.preventDefault(),e.nativeEvent?.stopImmediatePropagation(),x.current(String.fromCharCode(t.charCodeAt(0)-64)),H(e.currentTarget);return}}if(e.altKey&&!e.ctrlKey&&!e.metaKey&&e.key.length===1){e.preventDefault(),e.nativeEvent?.stopImmediatePropagation(),x.current(`\x1B`+e.key),H(e.currentTarget);return}let i={ArrowUp:`\x1B[A`,ArrowDown:`\x1B[B`,ArrowRight:`\x1B[C`,ArrowLeft:`\x1B[D`,Escape:`\x1B`,Tab:` `,Delete:`\x1B[3~`,Home:`\x1B[H`,End:`\x1B[F`}[e.key];if(i){e.preventDefault(),x.current(i),H(e.currentTarget);return}let a=e.currentTarget;if(e.nativeEvent?.isComposing)return;let o=le.current,s=typeof performance<`u`?performance.now():Date.now(),c=!!(o&&s-o.at<50);if(e.key===`Enter`){if(c&&o?.type===`insertLineBreak`)return;e.preventDefault(),x.current(`\r`),H(a);return}if(e.key===`Backspace`){if(e.preventDefault(),c&&o?.type===`deleteContentBackward`)return;V(a)||x.current(``)}if(e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey){let t=ue.current;t&&s-t<50||(e.preventDefault(),x.current(e.key),P.current=!0,le.current={type:`keydown-text`,at:s})}be(a)},[H,Se,Ce,V,be]),De=E.useCallback(e=>{e.stopPropagation();let t=e.currentTarget;e.nativeEvent?.isComposing||be(t)},[be]),Oe=E.useCallback(e=>{let t=e.currentTarget;N.current=!1;let n=e.data||V(t);if(ue.current=typeof performance<`u`?performance.now():Date.now(),!n)return;let r=n.replace(/\r\n|\r|\n/g,`\r`);x.current(r),H(t),le.current={type:`compositionend`,at:typeof performance<`u`?performance.now():Date.now()},P.current=!0},[H,V]),ke=E.useCallback(e=>{e.stopPropagation();let t=e.clipboardData?.getData(`text`)??``;if(!t)return;e.preventDefault();let n=y.current?.hasBracketedPaste?.()?`\x1b[200~${t}\x1b[201~`:t;x.current(n)},[]),Ae={position:`fixed`,left:0,top:0,width:1,height:1,opacity:0,zIndex:-1,background:`transparent`,color:`transparent`,WebkitTextFillColor:`transparent`,caretColor:`transparent`,textShadow:`none`,WebkitAppearance:`none`,appearance:`none`,resize:`none`,overflow:`hidden`,whiteSpace:`nowrap`,border:`0`,padding:0,margin:0,outline:`none`,outlineOffset:0,fontSize:16,fontWeight:400,pointerEvents:`none`,WebkitUserSelect:`none`,userSelect:`none`};return(0,D.jsxs)(`div`,{ref:_,className:h(`relative h-full w-full terminal-viewport-container`,s),"data-hidden-input-overlay-active":I?`true`:void 0,style:{backgroundColor:i.background},onTouchStart:e=>{if(!(!I||c)&&!Ce()){let t=e.touches?.[0];z(t?.clientX,t?.clientY)}},onClick:e=>{if(!c)if(I){if(Ce())return;z(e.clientX,e.clientY)}else y.current?.focus()},onMouseUp:()=>{!c&&Ce()&&Se()},onTouchEnd:()=>{!c&&Ce()&&Se()},children:[I&&typeof document<`u`?(0,ie.createPortal)((0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`input`,{ref:M,type:`text`,inputMode:`text`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,tabIndex:-1,enterKeyHint:`send`,"data-terminal-hidden-input":`true`,"aria-label":g(`terminalView.viewport.inputAria`),"aria-hidden":`true`,style:{...Ae,display:R?`block`:`none`},onBlur:J,onBeforeInput:Y,onCompositionStart:()=>{N.current=!0},onInput:X,onKeyDown:Ee,onKeyUp:De,onCompositionEnd:Oe,onPaste:ke}),(0,D.jsx)(`textarea`,{ref:ce,inputMode:`text`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,tabIndex:-1,enterKeyHint:`send`,"data-terminal-hidden-input":`true`,"aria-label":g(`terminalView.viewport.inputAria`),"aria-hidden":`true`,style:{...Ae,display:R?`none`:`block`},onBlur:J,onBeforeInput:Y,onCompositionStart:()=>{N.current=!0},onInput:X,onKeyDown:Ee,onKeyUp:De,onCompositionEnd:Oe,onPaste:ke})]}),document.body):null,v.current&&!c?(0,D.jsx)(b,{containerRef:v,disableHorizontal:!0,className:`overlay-scrollbar--flush overlay-scrollbar--dense overlay-scrollbar--zero`}):null]})});oe.displayName=`TerminalViewport`;var A=RegExp(`\x1B\\[[0-9;?]*[ -/]*[@-~]`,`g`),j=/(https?:\/\/(?:localhost|127\.0\.0\.1|0\.0\.0\.0|\[(?:::1|::)\])(?::\d{2,5})?(?:\/[^\s<>'"`]*)?)/gi,se=/(?:➜\s*(?:Local|Network):)|\b(?:local|network|loopback|serving|listening|available|ready|started|running|server|vite|webpack|next\.js|astro|sveltekit|nuxt)\b/i,ce=/Serving HTTP on .*? port (\d{2,5})/i,M=new Set([`.`,`,`,`;`,`:`,`!`,`?`]),N=e=>{let t=e;for(;t.length>0;){let e=t[t.length-1];if(e===`)`||e===`]`||e===`}`||e===`>`){let n=e===`)`?`(`:e===`]`?`[`:e===`}`?`{`:`<`,r=t.slice(0,-1);if((r.match(RegExp(`\\${n}`,`g`))||[]).length>(r.match(RegExp(`\\${e}`,`g`))||[]).length)break;t=r;continue}if(M.has(e)){t=t.slice(0,-1);continue}break}return t},P=e=>{let t=N(e);return t=t.replace(`0.0.0.0`,`127.0.0.1`),t=t.replace(`[::1]`,`127.0.0.1`),t=t.replace(`[::]`,`127.0.0.1`),t},le=e=>{if(!e)return null;let t=e.replace(A,``),n=t.match(ce);if(n?.[1]){let e=Number.parseInt(n[1],10);if(Number.isFinite(e)&&e>0&&e<=65535)return`http://127.0.0.1:${e}/`}let r=t.split(`
|
|
2
2
|
`);for(let e of r){if(!se.test(e))continue;let t=Array.from(e.matchAll(j));if(t.length!==0)return P((t.find(e=>{try{return!!new URL(P(e[1])).port}catch{return!1}})??t[0])[1])}return null},ue=async(e,t=1500)=>{if(!e||typeof window>`u`)return!1;let n;try{n=new URL(e)}catch{return!1}if(n.protocol!==`http:`&&n.protocol!==`https:`)return!1;let r=n.hostname.toLowerCase();if(r!==`localhost`&&r!==`127.0.0.1`&&r!==`0.0.0.0`&&r!==`::1`&&r!==`::`)return!1;let i=new AbortController,o=window.setTimeout(()=>i.abort(),t);try{let e=await a(`/api/system/probe-url`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({url:n.toString()}),cache:`no-store`,signal:i.signal});return e.ok?(await e.json().catch(()=>null))?.ok===!0:!1}catch{return!1}finally{window.clearTimeout(o)}},de={esc:`\x1B`,tab:` `,enter:`\r`,"arrow-up":`\x1B[A`,"arrow-down":`\x1B[B`,"arrow-left":`\x1B[D`,"arrow-right":`\x1B[C`},F={ctrl:`5`,cmd:`3`},fe={retry:{maxRetries:3,initialDelayMs:500,maxDelayMs:8e3},connectionTimeoutMs:1e4},pe={retry:{maxRetries:8,initialDelayMs:400,maxDelayMs:8e3},connectionTimeoutMs:15e3},me=(e,t)=>{if(t)switch(e){case`arrow-up`:return`\u001b[1;${F[t]}A`;case`arrow-down`:return`\u001b[1;${F[t]}B`;case`arrow-right`:return`\u001b[1;${F[t]}C`;case`arrow-left`:return`\u001b[1;${F[t]}D`}return de[e]??null},he=()=>{let{t:e}=ee(),{terminal:a,runtime:o}=te(),{currentTheme:s}=v(),{monoFont:c}=w(),u=r(e=>e.terminalFontSize),d=r(e=>e.bottomTerminalHeight),f=r(e=>e.isBottomTerminalExpanded),{isMobile:p,isTablet:b,hasTouchOnlyPointer:re}=y(),ie=p||b,O=(ie||re)&&o.platform===`web`,k=o.platform!==`vscode`,ae=r(e=>e.showTerminalQuickKeysOnDesktop),A=!i()&&(ie||ae),j=m(e=>e.currentSessionId),se=m(e=>e.newSessionDraft),ce=j!==null||se?.open===!0,M=x()??null,N=C(e=>e.sessions),P=C(e=>e.hasHydrated),de=C(e=>e.ensureDirectory),F=C(e=>e.createTab),he=C(e=>e.setActiveTab),ge=C(e=>e.closeTab),_e=C(e=>e.setTabSessionId),ve=C(e=>e.setTabLifecycle),I=C(e=>e.setConnecting),ye=C(e=>e.appendToBuffer),L=C(e=>e.setTabPreviewUrl),R=C(e=>e.clearBuffer),z=r(e=>e.openContextPreview),B=E.useMemo(()=>{if(M)return N.get(M)},[N,M]),V=E.useMemo(()=>B?k?B.activeTabId??B.tabs[0]?.id??null:B.tabs[0]?.id??null:null,[B,k]),H=E.useMemo(()=>{if(B)return V?B.tabs.find(e=>e.id===V)??B.tabs[0]:B.tabs[0]},[B,V]),be=E.useMemo(()=>(B?.tabs??[]).map(t=>({icon:(()=>{let e=t.iconKey?T[t.iconKey]??`terminal`:`terminal`;return(0,D.jsx)(g,{name:e,className:`h-4 w-4`})})(),id:t.id,label:t.label,title:t.label,closeLabel:e(`terminalView.tabs.closeTabTitle`)})),[B?.tabs,e]),U=H?.terminalSessionId??null,xe=H?.lifecycle??`idle`,Se=H?.bufferChunks??[],Ce=H?.isConnecting??!1,W=H?.previewUrl??null,[G,K]=E.useState(null),[we,q]=E.useState(!1),[Te,J]=E.useState(!1),[Y,X]=E.useState(null),[Ee,De]=E.useState(!1),[Oe,ke]=E.useState(0),Ae=E.useRef(null),je=E.useRef(null),Me=E.useRef(V),Ne=E.useRef(U),Pe=E.useRef(M),Fe=E.useRef(null),Ie=E.useRef(null),Le=E.useRef(!1),Re=E.useRef(!1),ze=E.useRef(null),Be=E.useRef(null),Ve=E.useRef(new Set),He=E.useRef(!1),Ue=E.useRef(``),We=E.useRef(new Set),Ge=E.useRef(0),Ke=E.useCallback(()=>{Ue.current=``,We.current.clear(),Ge.current+=1},[]),qe=E.useCallback(()=>{O||typeof document<`u`&&!document.hasFocus()||Fe.current?.focus()},[O]),Je=E.useCallback(()=>{O||Fe.current?.focus()},[O]);E.useEffect(()=>{if(!P||He.current)return;He.current=!0;let e=new Set;for(let[,t]of C.getState().sessions.entries())for(let n of t.tabs)n.terminalSessionId&&e.add(n.terminalSessionId);Ve.current=e},[P]);let Ye=r(e=>e.activeMainTab),Xe=r(e=>e.isBottomTerminalOpen),Ze=r(e=>e.setBottomTerminalOpen),Qe=r(e=>e.setBottomTerminalExpanded),$e=Ye===`terminal`,Z=$e||Xe,[et,tt]=E.useState(Z);E.useEffect(()=>{!Z||o.platform===`vscode`||l()},[Z,o.platform]),E.useEffect(()=>{Z&&tt(!0)},[Z]),E.useEffect(()=>{Re.current=Z},[Z]),E.useEffect(()=>{Ne.current=U},[U]),E.useEffect(()=>{Me.current=V,Ke()},[V,Ke]),E.useEffect(()=>{Pe.current=M},[M]),E.useEffect(()=>{!A&&Y!==null&&X(null)},[A,Y,X]),E.useEffect(()=>{!U&&Y!==null&&X(null)},[U,Y,X]);let Q=E.useCallback(()=>{Ae.current?.(),Ae.current=null,je.current=null,ze.current=null,J(!1)},[]);E.useEffect(()=>()=>{Q(),Ne.current=null},[Q]);let nt=E.useCallback((e,t,n)=>{if(!n)return;let r=`${Ue.current}${n}`.replace(/\r\n|\r/g,`
|
|
3
3
|
`),i=r.split(`
|
|
4
4
|
`),a=r.endsWith(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{g as t}from"./useUIStore-5agS8bsW.js";import{kn as n}from"./persistence-D1lIuyqO.js";import{nt as r,rt as i,tt as a}from"./vendor-base-ui-CnHfUmDN.js";import{n as o}from"./vendor-react-DLPElpoQ.js";import{n as s}from"./vendor-reactuses-core-DDoDDyM9.js";import{n as c}from"./clipboard-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{g as t}from"./useUIStore-5agS8bsW.js";import{kn as n}from"./persistence-D1lIuyqO.js";import{nt as r,rt as i,tt as a}from"./vendor-base-ui-CnHfUmDN.js";import{n as o}from"./vendor-react-DLPElpoQ.js";import{n as s}from"./vendor-reactuses-core-DDoDDyM9.js";import{n as c}from"./clipboard-ByPKHEt8.js";import{t as l}from"./utils-BxJEIWv5.js";import{n as u}from"./Icon-DiIuWOuC.js";import{n as d,t as f}from"./dialog-CQLvE6F6.js";import{t as p}from"./button-DaAoVF4X.js";import{n as m,t as h}from"./useThemeSystem-DMzWVJaW.js";import{l as g,n as _,v,x as y}from"./markdownTheme-D-aLQZaM.js";import{c as b,i as ee,t as x}from"./appThemeRegistry-CnlbpoIa.js";import{p as S}from"./markdown-worker-BDyY0vt6.js";import{n as C}from"./useEffectiveDirectory-BR3d8iyN.js";import{_ as te,d as ne,f as w,g as T,h as re,l as E,m as ie,n as D,p as O,r as k,s as A,t as j,u as M}from"./useWorkerHighlightedLines-BCqkyru3.js";import{t as N}from"./vendor-tanstack-react-virtual-tlDgH6PG.js";import{a as P,i as F}from"./vendor-pierre-diffs-BenIz2TM.js";var I=e(a(),1),L=o(),R=e(i(),1),z=r(),B=80,ae=20,V=R.memo(e=>{let t=(0,L.c)(26),{lines:n,language:r,maxHeight:i,showLineNumbers:a,lineStyles:o}=e,s=i===void 0?`60vh`:i,c=a===void 0||a,{currentTheme:l}=m(),u;t[0]===l?u=t[1]:(u=_(l),t[0]=l,t[1]=u);let d=u,f;t[2]===n?f=t[3]:(f=n.map(W).join(`
|
|
2
2
|
`),t[2]=n,t[3]=f);let p=j(f,r);if(!(n.length>B)){let e=d,r;t[4]!==s||t[5]!==e?(r={...e,maxHeight:s,overflow:`auto`},t[4]=s,t[5]=e,t[6]=r):r=t[6];let i;if(t[7]!==p||t[8]!==o||t[9]!==n||t[10]!==c){let e;t[12]!==p||t[13]!==o||t[14]!==c?(e=(e,t)=>(0,z.jsx)(U,{line:e,html:p?.[t],showLineNumbers:c,style:o?.(e)},t),t[12]=p,t[13]=o,t[14]=c,t[15]=e):e=t[15],i=n.map(e),t[7]=p,t[8]=o,t[9]=n,t[10]=c,t[11]=i}else i=t[11];let a;return t[16]!==r||t[17]!==i?(a=(0,z.jsx)(`div`,{className:`typography-code font-mono w-full min-w-0`,style:r,children:i}),t[16]=r,t[17]=i,t[18]=a):a=t[18],a}let h;return t[19]!==p||t[20]!==o||t[21]!==n||t[22]!==s||t[23]!==c||t[24]!==d?(h=(0,z.jsx)(H,{lines:n,highlighted:p,syntaxVars:d,maxHeight:s,showLineNumbers:c,lineStyles:o}),t[19]=p,t[20]=o,t[21]=n,t[22]=s,t[23]=c,t[24]=d,t[25]=h):h=t[25],h});V.displayName=`VirtualizedCodeBlock`;var H=R.memo(({lines:e,highlighted:t,syntaxVars:n,maxHeight:r,showLineNumbers:i,lineStyles:a})=>{let o=R.useRef(null),s=`min(${e.length*ae}px, ${r})`,c=N({count:e.length,getScrollElement:()=>o.current,estimateSize:()=>ae,overscan:20}),l=c.getVirtualItems();return(0,z.jsx)(`div`,{ref:o,className:`typography-code font-mono w-full min-w-0`,style:{...n,height:s,maxHeight:r,overflow:`auto`},children:(0,z.jsx)(`div`,{style:{height:c.getTotalSize(),position:`relative`},children:l.map(n=>{let r=e[n.index];return r?(0,z.jsx)(`div`,{"data-index":n.index,ref:c.measureElement,style:{position:`absolute`,top:0,left:0,width:`100%`,transform:`translateY(${n.start}px)`},children:(0,z.jsx)(U,{line:r,html:t?.[n.index],showLineNumbers:i,style:a?.(r)})},n.index):null})})})});H.displayName=`VirtualizedRows`;var U=R.memo(e=>{let t=(0,L.c)(12),{line:n,html:r,showLineNumbers:i,style:a}=e,o;t[0]!==n.isInfo||t[1]!==n.lineNumber||t[2]!==i?(o=i&&(0,z.jsx)(`span`,{className:`w-10 flex-shrink-0 text-right pr-3 select-none border-r mr-3 -my-0.5 py-0.5`,style:{color:`var(--tools-edit-line-number)`,borderColor:`var(--tools-border)`},children:!n.isInfo&&n.lineNumber!=null?n.lineNumber:``}),t[0]=n.isInfo,t[1]=n.lineNumber,t[2]=i,t[3]=o):o=t[3];let s;t[4]!==r||t[5]!==n.isInfo||t[6]!==n.text?(s=(0,z.jsx)(`div`,{className:`flex-1 min-w-0`,children:n.isInfo?(0,z.jsx)(`div`,{className:`whitespace-pre-wrap break-words text-muted-foreground/70 italic`,children:n.text}):r===void 0?(0,z.jsx)(`div`,{className:`whitespace-pre`,children:n.text}):(0,z.jsx)(`div`,{className:`whitespace-pre`,dangerouslySetInnerHTML:{__html:r}})}),t[4]=r,t[5]=n.isInfo,t[6]=n.text,t[7]=s):s=t[7];let c;return t[8]!==a||t[9]!==o||t[10]!==s?(c=(0,z.jsxs)(`div`,{className:`typography-code font-mono flex w-full min-w-0`,style:a,children:[o,s]}),t[8]=a,t[9]=o,t[10]=s,t[11]=c):c=t[11],c});U.displayName=`VirtualizedCodeBlock.Row`;function W(e){return e.text}var G=R.memo(function({jsonString:e,className:t,maxHeight:n=`100%`,initiallyExpandedDepth:r=2}){let{t:i}=c(),a=R.useRef(null),[o,s]=R.useState(null),l=R.useMemo(()=>{try{let t=e.trim();if(!t)return s(i(`jsonTreeView.error.emptyJson`)),null;let n=JSON.parse(t);return s(null),n}catch(e){return s(e instanceof Error?e.message:i(`jsonTreeView.error.invalidJson`)),null}},[e,i]),d=R.useCallback(()=>{a.current?.expandAll()},[]),f=R.useCallback(()=>{a.current?.collapseAll()},[]);return o?(0,z.jsx)(`div`,{className:t,children:(0,z.jsxs)(`div`,{className:`rounded-md border border-[var(--interactive-border)] bg-[var(--syntax-base-background)] p-4`,children:[(0,z.jsx)(`div`,{className:`mb-1 font-medium text-[var(--surface-foreground)]`,children:i(`jsonTreeView.error.invalidJsonTitle`)}),(0,z.jsx)(`div`,{className:`font-mono text-xs text-[var(--surface-mutedForeground)]`,children:o})]})}):l===null?null:(0,z.jsxs)(`div`,{className:t,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-1 border-b border-[var(--interactive-border)] px-2 py-1`,children:[(0,z.jsxs)(p,{variant:`ghost`,size:`xs`,onClick:d,className:`gap-1 text-xs text-muted-foreground`,children:[(0,z.jsx)(u,{name:`arrow-down-s`,className:`h-3 w-3`}),i(`jsonTreeView.actions.expandAll`)]}),(0,z.jsxs)(p,{variant:`ghost`,size:`xs`,onClick:f,className:`gap-1 text-xs text-muted-foreground`,children:[(0,z.jsx)(u,{name:`arrow-up-s`,className:`h-3 w-3`}),i(`jsonTreeView.actions.collapseAll`)]})]}),(0,z.jsx)(`div`,{className:`bg-[var(--syntax-base-background)] py-1`,style:{maxHeight:n,overflow:`auto`},children:(0,z.jsx)(k,{ref:a,data:l,maxHeight:n,initiallyExpandedDepth:r})})]})}),K=class extends Error{key;params;constructor(e,t){super(e),this.name=`MermaidLoadFailure`,this.key=e,this.params=t}},q=(e,t)=>new K(e,t),oe=e=>e instanceof K,se=e=>e+1,ce=(e,t)=>e===t,J=e=>{let t=e.indexOf(`,`);if(t<0)throw q(`chat.toolOutputDialog.mermaid.dataUrlMalformed`);let n=e.slice(0,t).toLowerCase(),r=e.slice(t+1);return n.includes(`;base64`)?atob(r):decodeURIComponent(r)},le=e=>Promise.resolve().then(()=>J(e)),Y=1,X=56,Z=(e,t,n)=>Math.min(n,Math.max(t,e)),ue=({isMobile:e,pointerType:t,cancelled:n,moved:r,suppressTap:i,targetWasCanvas:a,start:o,end:s,startScale:c,hasMultipleImages:l})=>{if(n||i)return`none`;let u={x:s.x-o.x,y:s.y-o.y},d=Math.hypot(u.x,u.y),f=t!==`mouse`;if(e&&f&&c<=1.01&&Math.abs(u.x)>=X&&Math.abs(u.x)>Math.abs(u.y)*1.2)return l?u.x<0?`next`:`previous`:`none`;let p=!r&&d<=10;return e&&f&&p||!e&&t===`mouse`&&p&&a?`close`:`none`},de=(e,t)=>{if(e.width<=0||e.height<=0||t.width<=0||t.height<=0)return{width:1,height:1};let n=Math.min(t.width/e.width,t.height/e.height);return{width:Math.max(1,e.width*n),height:Math.max(1,e.height*n)}},fe=(e,t)=>{let n=t.minScale??Y,r=t.maxScale??5,i=Z(e.scale,n,r),a=Math.max(0,(t.image.width*i-t.viewport.width)/2),o=Math.max(0,(t.image.height*i-t.viewport.height)/2);return{scale:i,x:Z(e.x,-a,a),y:Z(e.y,-o,o)}},pe=(e,t,n,r,i)=>{let a=Z(t,i.minScale??Y,i.maxScale??5),o=a/e.scale;return fe({scale:a,x:n.x-r.x-(n.x-r.x-e.x)*o,y:n.y-r.y-(n.y-r.y-e.y)*o},i)},me=(e,t,n)=>fe({...e,x:e.x+t.x,y:e.y+t.y},n),he=(e,t,n,r,i,a)=>{let o=Z(r,a.minScale??Y,a.maxScale??5),s=o/e.scale;return fe({scale:o,x:n.x-i.x-(t.x-i.x-e.x)*s,y:n.y-i.y-(t.y-i.y-e.y)*s},a)},Q=500,$=24,ge=(e,t={})=>{let n=t.target??(typeof document>`u`?null:document);if(!n)return()=>{};let r=t.durationMs??Q,i=t.maxDistance??$,a=!0,o,s=()=>{a&&(a=!1,n.removeEventListener(`click`,c,!0),o!==void 0&&globalThis.clearTimeout(o))},c=t=>{let n=t;typeof n.clientX==`number`&&typeof n.clientY==`number`&&(Math.hypot(n.clientX-e.x,n.clientY-e.y)>i||(s(),t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation()))};return n.addEventListener(`click`,c,!0),o=globalThis.setTimeout(s,r),s},_e=(e,t,n={})=>{ge(e,n),t()},ve=500,ye=400,be=(e,t)=>new K(e,t),xe=e=>{let t=`h-3.5 w-3.5 flex-shrink-0`,n=e.toLowerCase();return n===`reasoning`?(0,z.jsx)(u,{name:`brain-ai-3`,className:t}):n===`image-preview`?(0,z.jsx)(u,{name:`file-image`,className:t}):n===`mermaid-preview`?(0,z.jsx)(u,{name:`file-list-2`,className:t}):n===`edit`||n===`multiedit`||n===`apply_patch`||n===`str_replace`||n===`str_replace_based_edit_tool`?(0,z.jsx)(u,{name:`pencil-ai`,className:t}):n===`write`||n===`create`||n===`file_write`||n===`read`||n===`view`||n===`file_read`||n===`cat`?(0,z.jsx)(u,{name:`file-pdf`,className:t}):n===`bash`||n===`shell`||n===`cmd`||n===`terminal`?(0,z.jsx)(u,{name:`terminal-box`,className:t}):n===`list`||n===`ls`||n===`dir`||n===`list_files`?(0,z.jsx)(u,{name:`folder-6`,className:t}):n===`search`||n===`grep`||n===`find`||n===`ripgrep`?(0,z.jsx)(u,{name:`search`,className:t}):n===`glob`?(0,z.jsx)(u,{name:`file-search`,className:t}):n===`fetch`||n===`curl`||n===`wget`||n===`webfetch`?(0,z.jsx)(u,{name:`global`,className:t}):n===`web-search`||n===`websearch`||n===`search_web`||n===`google`||n===`bing`||n===`duckduckgo`?(0,z.jsx)(u,{name:`search`,className:t}):n===`todowrite`||n===`todoread`?(0,z.jsx)(u,{name:`list-check-3`,className:t}):n===`plan_enter`?(0,z.jsx)(u,{name:`file-list-2`,className:t}):n===`plan_exit`?(0,z.jsx)(u,{name:`task`,className:t}):n.startsWith(`git`)?(0,z.jsx)(u,{name:`git-branch`,className:t}):(0,z.jsx)(u,{name:`tools`,className:t})},Se=150,Ce=40,we=120,Te=3,Ee={style:{background:`transparent`,backgroundColor:`transparent`,fontSize:`inherit`}},De={download:!1,copy:!1,showPanZoomControls:!0},Oe=`
|
|
3
3
|
[data-diff-header],
|
|
4
4
|
[data-diff] {
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MarkdownRendererImpl-BdH1ynSb.js","assets/rolldown-runtime-C0FnF6B9.js","assets/useUIStore-5agS8bsW.js","assets/vendor-zustand-B4dlGEM2.js","assets/vendor-base-ui-CnHfUmDN.js","assets/persistence-D1lIuyqO.js","assets/vendor-pathe-vBmvQE8f.js","assets/vendor-react-DLPElpoQ.js","assets/vendor-tanstack-query-core-BWz0ose6.js","assets/platform-G8Cxe5wN.js","assets/vendor-opencode-sdk-C07HQypa.js","assets/vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js","assets/vendor-reactuses-core-DDoDDyM9.js","assets/vendor-lodash-es-DfLbG5Af.js","assets/vendor-js-cookie-hSOiFTtX.js","assets/clipboard-ByPKHEt8.js","assets/store-BDxgw-Hx.js","assets/useMobileNavigationStore-BSreVaq2.js","assets/vendor-tanstack-react-query-D7pys_c9.js","assets/vendor-sonner-DVzioF3d.js","assets/useAssistantUIStore-Bq3cPj2x.js","assets/vendor-fuse.js-DB5wDJbI.js","assets/utils-BxJEIWv5.js","assets/vendor-class-variance-authority-BLUaYARZ.js","assets/vendor-tailwind-merge-BicNWLTg.js","assets/useThemeSystem-DMzWVJaW.js","assets/markdownTheme-D-aLQZaM.js","assets/vendor-pierre-diffs-BenIz2TM.js","assets/vendor-hast-util-to-html-B0p1k5Xa.js","assets/vendor-character-entities-legacy-Wut6vMuj.js","assets/vendor-character-entities-html4-DlN_yAFd.js","assets/vendor-ccount-CyGsA0u7.js","assets/vendor-comma-separated-tokens-B9ouxNNS.js","assets/vendor-oniguruma-to-es-CrHzjjSU.js","assets/vendor-oniguruma-parser-D2DIvhSP.js","assets/vendor-diff-Dq7CZNim.js","assets/vendor-lru_map-DpDied8H.js","assets/useRuntimeAPIs-DSLXJybW.js","assets/url-DMs_PgIC.js","assets/markdown-worker-BDyY0vt6.js","assets/useEffectiveDirectory-BR3d8iyN.js","assets/FadeInOnReveal-CKKU6fKI.js","assets/vendor-morphdom-BbKiNDAu.js","assets/vendor-beautiful-mermaid-DykqIK5D.js","assets/vendor-marked-WVekxjAN.js","assets/vendor-remend-C3cXc-tf.js","assets/vendor-katex-CNGgSigB.js","assets/vendor-dompurify-CeJNOzik.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{nt as t,rt as n}from"./vendor-base-ui-CnHfUmDN.js";import{n as r}from"./platform-G8Cxe5wN.js";import{a as i,n as a,o}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{n as s}from"./vendor-react-DLPElpoQ.js";import{n as c}from"./vendor-reactuses-core-DDoDDyM9.js";import{t as l}from"./utils-BxJEIWv5.js";import{a as u,c as d,i as f}from"./markdown-worker-BDyY0vt6.js";import{r as p}from"./vendor-pierre-diffs-BenIz2TM.js";var m=s(),h=e(n(),1),g=`openchamber:chunk-import-reload`,_=250,v=3e4,y=[/Importing a module script failed/i,/Failed to fetch dynamically imported module/i,/error loading dynamically imported module/i,/Loading chunk \S+ failed/i,/ChunkLoadError/i];function b(e){if(e instanceof Error)return`${e.name}\n${e.message}\n${e.stack??``}`;if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}function x(e){let t=b(e);return y.some(e=>e.test(t))}function ee(e){return`1.18.2-beta.29:${b(e).slice(0,500)}`}function S(e){if(typeof window>`u`)return;let t=Date.now(),n=ee(e),r=null;try{let e=window.sessionStorage.getItem(g);if(e)try{r=JSON.parse(e)}catch{r=null}}catch{return}let i=typeof r?.timestamp==`number`?r.timestamp:0;if(!(r?.signature===n&&t-i<v)){try{window.sessionStorage.setItem(g,JSON.stringify({signature:n,timestamp:t}))}catch{return}console.error(`[refresh-debug] chunk-import-reload`,{error:b(e).slice(0,1e3)}),window.setTimeout(()=>{window.location.reload()},0)}}async function te(e,t={}){let n=t.retries??1,r;for(let t=0;t<=n;t+=1)try{return await e()}catch(e){if(r=e,!x(e)||t>=n)break;await new Promise(e=>setTimeout(e,_*(t+1)))}throw x(r)&&S(r),r}var C=e=>(0,h.lazy)(()=>te(e)),w=`__openchamberMobileBackRoute`,T=()=>typeof window>`u`||r()?null:{currentState:()=>window.history.state&&typeof window.history.state==`object`?window.history.state:null,pushState:e=>window.history.pushState(e,``,window.location.href),back:()=>window.history.back(),subscribe:e=>{let t=t=>e(t.state&&typeof t.state==`object`?t.state:null);return window.addEventListener(`popstate`,t),()=>window.removeEventListener(`popstate`,t)}},E=e=>{let t=e?.[w];return typeof t==`number`&&Number.isFinite(t)?t:null},D=new class{routes=[];listeners=new Set;nextToken=1;history;removeHistoryListener=null;programmaticHistoryBackToken=null;pendingHistoryRemovals=new Map;animatedBackDriver=null;presentationCancelDriver=null;constructor(e=T()){this.history=e}subscribe=e=>(this.listeners.add(e),()=>this.listeners.delete(e));getTopRoute=()=>this.routes.at(-1)??null;register=e=>{let t=this.pendingHistoryRemovals.get(e.id);this.pendingHistoryRemovals.delete(e.id);let n=!!(this.history&&t!==void 0&&E(this.history.currentState())===t),r={...e,token:n&&t!==void 0?t:this.nextToken++};this.routes.push(r),this.ensureHistoryListener(),this.history&&!n&&this.history.pushState({...this.history.currentState()??{},[w]:r.token}),this.notify();let i=!0;return()=>{if(!i)return;i=!1;let e=this.routes.indexOf(r);e<0||(this.routes.splice(e,1),this.history&&E(this.history.currentState())===r.token?(this.pendingHistoryRemovals.set(r.id,r.token),queueMicrotask(()=>{if(this.pendingHistoryRemovals.get(r.id)===r.token){if(this.pendingHistoryRemovals.delete(r.id),!this.history||E(this.history.currentState())!==r.token){this.routes.length===0&&this.pendingHistoryRemovals.size===0&&this.disposeHistoryListener();return}this.programmaticHistoryBackToken=r.token,this.history.back(),this.routes.length===0&&this.pendingHistoryRemovals.size===0&&this.disposeHistoryListener()}})):this.routes.length===0&&this.pendingHistoryRemovals.size===0&&this.disposeHistoryListener(),this.notify())}};backImmediately=e=>{let t=this.getTopRoute();return!t||e&&t.layer!==e?!1:t.onBack()!==!1};requestAnimatedBack=e=>{let t=this.getTopRoute();return!t||e&&t.layer!==e?!1:this.animatedBackDriver?.(t)?!0:this.backImmediately(e)};setAnimatedBackDriver=e=>(this.animatedBackDriver=e,()=>{this.animatedBackDriver===e&&(this.animatedBackDriver=null)});setPresentationCancelDriver=e=>(this.presentationCancelDriver=e,()=>{this.presentationCancelDriver===e&&(this.presentationCancelDriver=null)});cancelPresentation=()=>{this.presentationCancelDriver?.()};requestBrowserBack=()=>{let e=this.getTopRoute();return e?this.history&&E(this.history.currentState())===e.token?(this.history.back(),!0):e.onBack()!==!1:!1};ensureHistoryListener(){!this.history||this.removeHistoryListener||(this.removeHistoryListener=this.history.subscribe(e=>{if(this.programmaticHistoryBackToken!==null){this.programmaticHistoryBackToken=null;return}let t=this.getTopRoute();t&&E(e)!==t.token&&t.onBack()===!1&&this.history&&this.history.pushState({...this.history.currentState()??{},[w]:t.token})}))}disposeHistoryListener(){this.removeHistoryListener?.(),this.removeHistoryListener=null,this.programmaticHistoryBackToken=null,this.pendingHistoryRemovals.clear()}notify(){this.listeners.forEach(e=>e())}},ne=e=>{let t=(0,m.c)(8),{id:n,active:r,layer:i,onBack:a,surfaceRef:o,underlayRef:s}=e,l=i===void 0?`root`:i,u=c(a),d,f;t[0]!==r||t[1]!==u||t[2]!==n||t[3]!==l||t[4]!==o||t[5]!==s?(d=()=>{if(r)return D.register({id:n,layer:l,onBack:u,getSurface:()=>o.current,getUnderlay:()=>s?.current??null})},f=[r,u,n,l,o,s],t[0]=r,t[1]=u,t[2]=n,t[3]=l,t[4]=o,t[5]=s,t[6]=d,t[7]=f):(d=t[6],f=t[7]),h.useEffect(d,f)},O=i(`OpenChamberNavigation`),k=e=>Math.min(1,Math.max(0,Number.isFinite(e)?e:0)),A=(e,t)=>!e||!t?!1:e.onBack()!==!1,j=e=>{let t=k(e.progress),n=e.commit?1-t:t;if(n<=.001)return 0;let r=Math.max(1,e.viewportWidth??390),i=Math.abs(e.velocityX??0)/r,a=n/Math.max(e.commit?2.4:2.8,i)*1e3,o=e.commit?90:100,s=e.commit?320:260;return Math.round(Math.min(s,Math.max(o,a)))},M=e=>{let{surface:t,underlay:n,surfaceTransition:r,surfaceAnimation:i,underlayTransition:a,underlayAnimation:o}=e;t.style.removeProperty(`transform`),t.style.removeProperty(`opacity`),t.style.removeProperty(`will-change`),t.style.removeProperty(`box-shadow`),t.style.transition=r,t.style.animation=i,n&&(n.style.removeProperty(`transform`),n.style.removeProperty(`opacity`),n.style.removeProperty(`will-change`),n.style.transition=a??``,n.style.animation=o??``)},N=(e,t)=>{let n=k(t),{surface:r}=e;r.style.transform=`translate3d(${n*100}%, 0, 0)`},re=e=>!e.surfaceConnected||e.topRouteToken!==e.routeToken||e.routeSurface!==e.outgoingSurface,ie=async(e,t,n,r)=>{if(!r&&typeof e.animate==`function`){let r=e.style.transform||`translate3d(0%, 0, 0)`,i=`translate3d(${t}%, 0, 0)`,a=e.animate([{transform:r},{transform:i}],{duration:n,easing:`cubic-bezier(0.22, 1, 0.36, 1)`,fill:`forwards`}),o=!1;try{await a.finished,o=!0}catch{}finally{o&&(e.style.transform=i),a.cancel()}return}e.style.transform=`translate3d(${t}%, 0, 0)`},ae=async(e,t,n=typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches,r=j({progress:Number.parseFloat(e.style.transform.match(/translate3d\(([-\d.]+)%/)?.[1]??`0`)/100,commit:t}))=>ie(e,t?100:0,r,n),oe=class{pending=0;enqueue(){this.pending+=1}take(){return this.pending!==0&&(--this.pending,!0)}clear(){this.pending=0}},se=e=>{let t=(0,m.c)(4),{enabled:n,rootRoutesBlocked:i}=e,o,s;t[0]!==n||t[1]!==i?(o=()=>{if(!n||!r()||a.getPlatform()===`web`)return;let e=!1,t=null,o=null,s=0,c=0,l=0,u=new oe,d=[],f=e=>!!e&&(!i||e?.layer===`overlay`),p=()=>{let e=f(D.getTopRoute());O.setEnabled({enabled:e}).catch(ce)},m=()=>{if(D.cancelPresentation(),o)return;let e=D.getTopRoute();if(!f(e))return;let n=e.getSurface();if(!n)return;n.getAnimations().forEach(le),o=null;let r=e.layer===`root`?e.getUnderlay():null,i=n.style.transition,a=n.style.animation,s=r?.style.transition??null,c=r?.style.animation??null;r?.getAnimations().forEach(P),n.style.transition=`none`,n.style.animation=`none`,n.style.willChange=`transform`,r&&(r.style.removeProperty(`transform`),r.style.removeProperty(`will-change`)),l+=1,t={route:e,surface:n,underlay:r,surfaceTransition:i,surfaceAnimation:a,underlayTransition:s,underlayAnimation:c},N(t,0)},h=e=>{c=k(e),!s&&(s=window.requestAnimationFrame(()=>{s=0,t&&N(t,c)}))},g=F,_=(n,r,i)=>{if(o)return n&&f(D.getTopRoute())?(u.enqueue(),!0):!1;s&&=(window.cancelAnimationFrame(s),0),t||m(),t&&r!==void 0&&N(t,r);let a=t,d=l;if(t=null,!a){if(!n)return!1;let e=D.getTopRoute();return A(e,f(e))}o=a;let p=window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches??!1,h=j({progress:k(r??c),commit:n,velocityX:i,viewportWidth:window.innerWidth});return ae(a.surface,n,p,h).then(async()=>{d===l&&(!e&&n&&(a.route.onBack(),await g(a)),d===l&&(M(a),o===a&&(o=null),!e&&u.take()&&_(!0,0,0)))}),!0},v=D.setAnimatedBackDriver(e=>e!==D.getTopRoute()||!f(e)?!1:_(!0,0,0)),y=D.subscribe(p);return(async()=>{let t=await O.addListener(`backStarted`,m),n=await O.addListener(`backProgressed`,e=>h(e.progress??0)),r=await O.addListener(`backCancelled`,e=>_(!1,e.progress,e.velocityX)),i=await O.addListener(`backInvoked`,e=>_(!0,e.progress,e.velocityX));if(e){await Promise.all([t.remove(),n.remove(),r.remove(),i.remove()]);return}d.push(t,n,r,i),p()})().catch(I),p(),()=>{e=!0,l+=1,u.clear(),y(),v(),s&&window.cancelAnimationFrame(s),t&&M(t),o&&(o.surface.getAnimations().forEach(L),o.underlay?.getAnimations().forEach(R),M(o)),t=null,o=null,O.setEnabled({enabled:!1}).catch(z),d.forEach(B)}},s=[n,i],t[0]=n,t[1]=i,t[2]=o,t[3]=s):(o=t[2],s=t[3]),h.useEffect(o,s)};function ce(){}function le(e){return e.cancel()}function P(e){return e.cancel()}function F(e){return new Promise(t=>{let n=0,r=12,i=!1,a=()=>{i||(i=!0,c(),n&&window.cancelAnimationFrame(n),t())},o=()=>{let t=D.getTopRoute();return re({surfaceConnected:e.surface.isConnected,routeToken:e.route.token,topRouteToken:t?.token??null,routeSurface:e.route.getSurface(),outgoingSurface:e.surface})},s=()=>{if(o()||r<=0){a();return}--r,n=window.requestAnimationFrame(s)},c=D.subscribe(()=>{o()&&a()});s()})}function I(){}function L(e){return e.cancel()}function R(e){return e.cancel()}function z(){}function B(e){e.remove()}var V=null,H=()=>(V??=o(()=>import(`./MarkdownRendererImpl-BdH1ynSb.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47])).catch(e=>{throw V=null,e}),V),U=()=>{H().catch(()=>void 0)},W=h.createContext(!0),G=()=>h.useContext(W),K=t(),ue=C(()=>H().then(e=>({default:e.MarkdownRenderer}))),de=C(()=>H().then(e=>({default:e.SimpleMarkdownRenderer}))),fe=e=>e===`tool`?`markdown-content markdown-tool`:e===`reasoning`?`markdown-content markdown-reasoning`:`markdown-content leading-relaxed`,q=e=>{let t=(0,m.c)(14),n=typeof e.content==`string`?e.content:``,r=typeof e.variant==`string`?e.variant:`assistant`,i;t[0]!==n||t[1]!==e.reserveMeasuredHeight||t[2]!==r?(i=e.reserveMeasuredHeight?u(f(n,r)):void 0,t[0]=n,t[1]=e.reserveMeasuredHeight,t[2]=r,t[3]=i):i=t[3];let a=i,o;t[4]!==e.className||t[5]!==e.variant?(o=l(`relative break-words w-full min-w-0`,fe(e.variant),typeof e.className==`string`?e.className:void 0),t[4]=e.className,t[5]=e.variant,t[6]=o):o=t[6];let s;t[7]!==n||t[8]!==e.animated||t[9]!==a?(s=(0,K.jsx)(d,{animated:e.animated,content:n,reservedHeight:a}),t[7]=n,t[8]=e.animated,t[9]=a,t[10]=s):s=t[10];let c;return t[11]!==o||t[12]!==s?(c=(0,K.jsx)(`div`,{className:o,"aria-busy":`true`,"data-markdown-hydration":`deferred`,children:s}),t[11]=o,t[12]=s,t[13]=c):c=t[13],c},pe=e=>{let t=(0,m.c)(4);if(!G()&&e.isStreaming!==!0){let n;return t[0]===e?n=t[1]:(n=(0,K.jsx)(q,{...e,animated:!1,reserveMeasuredHeight:!0}),t[0]=e,t[1]=n),n}let n;return t[2]===e?n=t[3]:(n=(0,K.jsx)(h.Suspense,{fallback:(0,K.jsx)(q,{...e,reserveMeasuredHeight:!0}),children:(0,K.jsx)(ue,{...e})}),t[2]=e,t[3]=n),n},me=e=>{let t=(0,m.c)(4);if(!G()){let n;return t[0]===e?n=t[1]:(n=(0,K.jsx)(q,{...e,animated:!1}),t[0]=e,t[1]=n),n}let n;return t[2]===e?n=t[3]:(n=(0,K.jsx)(h.Suspense,{fallback:(0,K.jsx)(q,{...e}),children:(0,K.jsx)(de,{...e})}),t[2]=e,t[3]=n),n},he=e=>/^#[0-9a-fA-F]{6}$/.test(e),ge=e=>/^#[0-9a-fA-F]{8}$/.test(e),_e=(e,t)=>/^[0-9a-fA-F]{2}$/.test(t)?he(e)?`${e}${t}`:ge(e)?`${e.slice(0,7)}${t}`:e:e,J=(e,t)=>typeof e==`string`&&e.trim().length>0?e:t,Y=e=>{let t=e.colors.syntax.base,n=e.colors.syntax.tokens??{},r=(e,t)=>J(n[e],t);return[{name:`plain`,scope:[`source`,`support.type.property-name.css`],settings:{foreground:t.foreground}},{name:`classes`,scope:[`entity.name.type.class`],settings:{foreground:r(`className`,r(`class`,t.function))}},{name:`interfaces`,scope:[`entity.name.type.interface`,`entity.name.type`],settings:{foreground:r(`interface`,t.type)}},{name:`structs`,scope:[`entity.name.type.struct`],settings:{foreground:r(`struct`,t.function)}},{name:`enums`,scope:[`entity.name.type.enum`],settings:{foreground:r(`enum`,t.function)}},{name:`keys`,scope:[`meta.object-literal.key`,`support.type.property-name`],settings:{foreground:r(`key`,t.function)}},{name:`methods`,scope:[`entity.name.function.method`,`meta.function.method`],settings:{foreground:r(`method`,e.colors.status.success)}},{name:`functions`,scope:[`entity.name.function`,`support.function`,`meta.function-call.generic`],settings:{foreground:t.function,fontStyle:`bold`}},{name:`variables`,scope:[`variable`,`meta.variable`,`variable.other.object.property`],settings:{foreground:t.variable}},{name:`variablesOther`,scope:[`variable.other.object`,`variable.other.readwrite.alias`],settings:{foreground:r(`variableOther`,r(`method`,e.colors.status.success))}},{name:`globalVariables`,scope:[`variable.other.global`,`variable.language.this`],settings:{foreground:r(`variableGlobal`,t.number)}},{name:`localVariables`,scope:[`variable.other.local`],settings:{foreground:r(`variableLocal`,e.colors.surface.elevated)}},{name:`parameters`,scope:[`variable.parameter`,`meta.parameter`],settings:{foreground:r(`parameter`,t.foreground)}},{name:`properties`,scope:[`variable.other.property`,`meta.property`],settings:{foreground:r(`variableProperty`,e.colors.status.info)}},{name:`strings`,scope:[`string`,`string.other.link`,`markup.inline.raw.string.markdown`],settings:{foreground:t.string}},{name:`stringEscapeSequences`,scope:[`constant.character.escape`,`constant.other.placeholder`],settings:{foreground:r(`stringEscape`,t.foreground)}},{name:`keywords`,scope:[`keyword`],settings:{foreground:t.keyword}},{name:`keywordsControl`,scope:[`keyword.control.import`,`keyword.control.from`,`keyword.import`],settings:{foreground:r(`keywordImport`,t.operator)}},{name:`storageModifiers`,scope:[`storage.modifier`,`keyword.modifier`,`storage.type`],settings:{foreground:r(`storageModifier`,t.keyword)}},{name:`comments`,scope:[`comment`,`punctuation.definition.comment`],settings:{foreground:t.comment}},{name:`docComments`,scope:[`comment.documentation`,`comment.line.documentation`],settings:{foreground:r(`commentDoc`,e.colors.surface.mutedForeground)}},{name:`numbers`,scope:[`constant.numeric`],settings:{foreground:t.number}},{name:`booleans`,scope:[`constant.language.boolean`,`constant.language.json`],settings:{foreground:r(`boolean`,t.type)}},{name:`operators`,scope:[`keyword.operator`],settings:{foreground:t.operator}},{name:`macros`,scope:[`entity.name.function.preprocessor`,`meta.preprocessor`],settings:{foreground:r(`macro`,t.keyword)}},{name:`preprocessor`,scope:[`meta.preprocessor`],settings:{foreground:r(`preprocessor`,r(`label`,t.number))}},{name:`urls`,scope:[`markup.underline.link`],settings:{foreground:r(`url`,e.colors.status.info)}},{name:`tags`,scope:[`entity.name.tag`],settings:{foreground:r(`tag`,t.keyword)}},{name:`jsxTags`,scope:[`support.class.component`],settings:{foreground:r(`jsxTag`,r(`label`,t.number))}},{name:`attributes`,scope:[`entity.other.attribute-name`,`meta.attribute`],settings:{foreground:r(`tagAttribute`,t.type)}},{name:`types`,scope:[`support.type`],settings:{foreground:t.type}},{name:`constants`,scope:[`variable.other.constant`,`variable.readonly`],settings:{foreground:r(`constant`,t.foreground)}},{name:`labels`,scope:[`entity.name.label`,`punctuation.definition.label`],settings:{foreground:r(`label`,r(`variableGlobal`,t.number))}},{name:`namespaces`,scope:[`entity.name.namespace`,`storage.modifier.namespace`,`markup.bold.markdown`],settings:{foreground:r(`namespace`,t.type)}},{name:`modules`,scope:[`entity.name.module`,`storage.modifier.module`],settings:{foreground:r(`module`,t.operator)}},{name:`typeParameters`,scope:[`variable.type.parameter`,`variable.parameter.type`],settings:{foreground:r(`typeParameter`,t.function)}},{name:`exceptions`,scope:[`keyword.control.exception`,`keyword.control.trycatch`],settings:{foreground:r(`exception`,r(`label`,t.number))}},{name:`decorators`,scope:[`meta.decorator`,`punctuation.decorator`,`entity.name.function.decorator`],settings:{foreground:r(`decorator`,t.type)}},{name:`calls`,scope:[`variable.function`],settings:{foreground:t.foreground}},{name:`punctuation`,scope:[`punctuation`,`punctuation.terminator`,`punctuation.definition.tag`,`punctuation.separator`,`punctuation.definition.string`,`punctuation.section.block`],settings:{foreground:r(`punctuation`,t.comment)}},{name:`yellow`,scope:[`storage.type.numeric.go`,`storage.type.byte.go`,`storage.type.boolean.go`,`storage.type.string.go`,`storage.type.uintptr.go`,`storage.type.error.go`,`storage.type.rune.go`,`constant.language.go`,`support.class.dart`,`keyword.other.documentation`,`storage.modifier.import.java`,`punctuation.definition.list.begin.markdown`,`punctuation.definition.quote.begin.markdown`,`meta.separator.markdown`,`entity.name.section.markdown`],settings:{foreground:t.type}},{name:`green`,scope:[],settings:{foreground:r(`method`,e.colors.status.success)}},{name:`cyan`,scope:[`markup.italic.markdown`,`support.type.python`,`variable.legacy.builtin.python`,`support.constant.property-value.css`,`storage.modifier.attribute.swift`],settings:{foreground:t.string}},{name:`blue`,scope:[],settings:{foreground:t.keyword}},{name:`purple`,scope:[`keyword.channel.go`,`keyword.other.platform.os.swift`],settings:{foreground:t.number}},{name:`magenta`,scope:[`punctuation.definition.heading.markdown`],settings:{foreground:r(`label`,r(`variableGlobal`,t.number))}},{name:`red`,scope:[],settings:{foreground:t.operator}},{name:`orange`,scope:[],settings:{foreground:t.function}}]},ve=e=>{let t=e.colors.surface,n=e.colors.interactive,r=e.colors.status,i=e.colors.syntax.base,a=e.colors.syntax.highlights??{},o=J(a.diffAddedBackground,r.successBackground),s=J(a.diffRemovedBackground,r.errorBackground);return{"editor.background":t.background,"editor.foreground":t.foreground,"editor.hoverHighlightBackground":J(n.hover,t.subtle),"editor.lineHighlightBackground":t.muted,"editor.selectionBackground":n.selection,"editor.selectionHighlightBackground":n.selection,"editor.findMatchBackground":i.type,"editor.findMatchHighlightBackground":_e(i.type,`cc`),"editor.findRangeHighlightBackground":t.muted,"editor.inactiveSelectionBackground":t.elevated,"editor.lineHighlightBorder":t.elevated,"editor.rangeHighlightBackground":J(n.active,n.borderHover),"notifications.background":t.elevated,"editorInlayHint.typeBackground":t.subtle,"editorInlayHint.typeForeground":t.foreground,"editorWhitespace.foreground":n.borderHover,"editorIndentGuide.background1":t.subtle,"editorHoverWidget.background":t.elevated,"editorLineNumber.activeForeground":J(a.lineNumberActive,t.foreground),"editorLineNumber.foreground":J(a.lineNumber,t.mutedForeground),"editorGutter.background":t.background,"editorGutter.modifiedBackground":r.info,"editorGutter.addedBackground":r.success,"editorGutter.deletedBackground":r.error,"editorBracketMatch.background":t.elevated,"editorBracketMatch.border":t.subtle,"editorError.foreground":r.error,"editorWarning.foreground":r.warning,"editorInfo.foreground":r.info,"diffEditor.insertedTextBackground":o,"diffEditor.removedTextBackground":s,"editorGroupHeader.tabsBackground":t.background,"editorGroup.border":n.border,"tab.activeBackground":t.background,"tab.inactiveBackground":t.muted,"tab.inactiveForeground":t.mutedForeground,"tab.activeForeground":t.foreground,"tab.hoverBackground":t.subtle,"tab.unfocusedHoverBackground":t.subtle,"tab.border":n.border,"tab.activeModifiedBorder":i.type,"tab.inactiveModifiedBorder":r.info,"tab.unfocusedActiveModifiedBorder":i.type,"tab.unfocusedInactiveModifiedBorder":r.info,"editorWidget.background":t.muted,"editorWidget.border":n.border,"editorSuggestWidget.background":t.background,"editorSuggestWidget.border":n.border,"editorSuggestWidget.foreground":t.foreground,"editorSuggestWidget.highlightForeground":t.mutedForeground,"editorSuggestWidget.selectedBackground":t.subtle,"peekView.border":n.border,"peekViewEditor.background":t.background,"peekViewEditor.matchHighlightBackground":t.subtle,"peekViewResult.background":t.muted,"peekViewResult.fileForeground":t.foreground,"peekViewResult.lineForeground":t.mutedForeground,"peekViewResult.matchHighlightBackground":t.subtle,"peekViewResult.selectionBackground":t.elevated,"peekViewResult.selectionForeground":t.mutedForeground,"peekViewTitle.background":t.subtle,"peekViewTitleDescription.foreground":t.mutedForeground,"peekViewTitleLabel.foreground":t.foreground,"merge.currentHeaderBackground":r.success,"merge.currentContentBackground":J(a.diffAdded,r.success),"merge.incomingHeaderBackground":r.info,"merge.incomingContentBackground":J(a.diffModified,r.info),"merge.border":n.border,"merge.commonContentBackground":t.subtle,"merge.commonHeaderBackground":t.muted,"panel.background":t.background,"panel.border":n.border,"panelTitle.activeBorder":n.borderHover,"panelTitle.activeForeground":t.foreground,"panelTitle.inactiveForeground":t.mutedForeground,"statusBar.background":t.background,"statusBar.foreground":t.foreground,"statusBar.border":n.border,"statusBar.debuggingBackground":r.error,"statusBar.debuggingForeground":r.errorForeground,"statusBar.noFolderBackground":t.subtle,"statusBar.noFolderForeground":t.mutedForeground,"titleBar.activeBackground":t.background,"titleBar.activeForeground":t.foreground,"titleBar.inactiveBackground":t.muted,"titleBar.inactiveForeground":t.mutedForeground,"titleBar.border":n.border,"menu.foreground":t.foreground,"menu.background":t.background,"menu.selectionForeground":t.foreground,"menu.selectionBackground":t.subtle,"menu.border":n.border,"editorInlayHint.foreground":t.mutedForeground,"editorInlayHint.background":t.subtle,"terminal.foreground":t.foreground,"terminal.background":t.background,"terminalCursor.foreground":t.foreground,"terminalCursor.background":t.background,"terminal.ansiRed":J(a.diffRemoved,r.error),"terminal.ansiGreen":J(a.diffAdded,r.success),"terminal.ansiYellow":r.warning,"terminal.ansiBlue":J(a.diffModified,r.info),"terminal.ansiMagenta":i.keyword,"terminal.ansiCyan":i.type,"activityBar.background":t.background,"activityBar.foreground":t.foreground,"activityBar.inactiveForeground":t.mutedForeground,"activityBar.activeBorder":t.foreground,"activityBar.border":n.border,"sideBar.background":t.background,"sideBar.foreground":t.foreground,"sideBar.border":n.border,"sideBarTitle.foreground":t.foreground,"sideBarSectionHeader.background":t.muted,"sideBarSectionHeader.foreground":t.foreground,"sideBarSectionHeader.border":n.border,"sideBar.activeBackground":t.subtle,"sideBar.activeForeground":t.foreground,"sideBar.hoverBackground":t.muted,"sideBar.hoverForeground":t.foreground,"list.warningForeground":r.warning,"list.errorForeground":r.error,"list.inactiveSelectionBackground":t.subtle,"list.activeSelectionBackground":t.elevated,"list.inactiveSelectionForeground":t.foreground,"list.activeSelectionForeground":t.foreground,"list.hoverForeground":t.foreground,"list.hoverBackground":t.muted,"input.background":t.muted,"input.foreground":t.foreground,"input.border":n.border,"input.placeholderForeground":t.mutedForeground,"inputOption.activeBorder":n.border,"inputOption.activeBackground":t.elevated,"inputOption.activeForeground":t.foreground,"inputValidation.infoBackground":r.infoBackground,"inputValidation.infoBorder":r.infoBorder,"inputValidation.warningBackground":r.warningBackground,"inputValidation.warningBorder":r.warningBorder,"inputValidation.errorBackground":r.errorBackground,"inputValidation.errorBorder":r.errorBorder,"dropdown.background":t.muted,"dropdown.foreground":t.foreground,"dropdown.border":n.border,"dropdown.listBackground":t.background,"badge.background":e.colors.primary.base,"activityBarBadge.background":e.colors.primary.base,"button.background":e.colors.primary.base,"button.foreground":J(e.colors.primary.foreground,t.background),"badge.foreground":J(e.colors.primary.foreground,t.background),"activityBarBadge.foreground":J(e.colors.primary.foreground,t.background)}};function ye(e){return{name:e.metadata.name,type:e.metadata.variant,colors:ve(e),tokenColors:Y(e)}}var be=e=>/^#[0-9a-fA-F]{8}$/.test(e),X=e=>be(e)?e.slice(0,7):e;function xe(e,t){return Object.defineProperty(e,"toString",{value:()=>t,enumerable:!1,configurable:!0}),Object.defineProperty(e,Symbol.toPrimitive,{value:()=>t,enumerable:!1,configurable:!0}),e}var Z=new Map,Q=new Set,Se=(e,t)=>{let n=e.colors?.[`editor.background`],r=e.colors?.[`editor.foreground`],i=n?X(n):void 0,a=r?X(r):void 0;if(!i||!a)throw Error(`Theme "${t}" is missing editor.background/editor.foreground`);let o=e.tokenColors??[];return xe({...e,name:t,fg:a,bg:i,settings:o},t)},Ce=e=>ye(e),$=e=>{let t=Z.get(e.metadata.id);if(t)return t;let n=Se(Ce(e),e.metadata.id);return Z.set(e.metadata.id,n),n},we=e=>{let t=e.metadata.id;if(Q.has(t))return;let n=$(e);p(t,async()=>n),Q.add(t)};export{W as a,ne as c,me as i,se as l,$ as n,U as o,pe as r,D as s,we as t,C as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-C0FnF6B9.js";import{a as t,n}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";import{t as r}from"./types-BuiqMmh_.js";var i=e({getCapgoUpdater:()=>u,isCapgoUpdaterSupported:()=>d}),a=t(`CapacitorUpdater`),o=()=>{if(typeof window>`u`)return!1;try{return n.isNativePlatform()&&n.isPluginAvailable(`CapacitorUpdater`)}catch{return!1}},s=()=>{throw new r},c=()=>({async notifyAppReady(){return o()||s(),a.notifyAppReady()},async download(e){return o()||s(),a.download(e)},async next(e){return o()||s(),a.next(e)},async reload(){return o()||s(),a.reload()},async current(){return o()||s(),a.current()},async getDeviceId(){return o()||s(),a.getDeviceId()},async addListener(e,t){return o()||s(),a.addListener(e,t)}}),l,u=async()=>l===void 0?o()?(l=c(),l):(l=null,null):l,d=()=>o();export{u as n,d as r,i as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{Kt as t,Xt as n,qt as r}from"./persistence-D1lIuyqO.js";import{nt as i,rt as a}from"./vendor-base-ui-CnHfUmDN.js";import{n as o}from"./vendor-react-DLPElpoQ.js";import{a as s,i as c,o as l,t as u}from"./store-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{Kt as t,Xt as n,qt as r}from"./persistence-D1lIuyqO.js";import{nt as i,rt as a}from"./vendor-base-ui-CnHfUmDN.js";import{n as o}from"./vendor-react-DLPElpoQ.js";import{a as s,i as c,o as l,t as u}from"./store-BDxgw-Hx.js";var d=e(a(),1),f=o(),p=async(e,n)=>{if(!t())throw Error(`Desktop runtime is not available`);return r(e,n)},m=async()=>{if(n())try{await p(`desktop_start_window_drag`)}catch{}},h=async e=>{if(n())try{await p(`desktop_set_window_title`,{title:e})}catch{}},g=async(e,t)=>{if(n())try{await p(`desktop_set_window_theme`,{themeMode:e,themeVariant:t})}catch{}},_=async e=>{if(n())try{await p(`desktop_set_menu_locale`,{locale:e})}catch{}},v=async()=>{if(!n())return null;try{let e=await p(`desktop_get_app_version`);return typeof e==`string`&&e.trim().length>0?e:null}catch{return null}},y=d.createContext(null),b=i(),x=e=>{let t=(0,f.c)(19),{children:n}=e,r=c(S),i=c(C),a=c(w),o=c(T),p,m;t[0]===r?(p=t[1],m=t[2]):(p=()=>{typeof document>`u`||(document.documentElement.lang=r)},m=[r],t[0]=r,t[1]=p,t[2]=m),d.useEffect(p,m);let h,g;t[3]!==a||t[4]!==r?(h=()=>{a===null&&_(r)},g=[r,a],t[3]=a,t[4]=r,t[5]=h,t[6]=g):(h=t[5],g=t[6]),d.useEffect(h,g);let v;t[7]===i?v=t[8]:(v=(e,t)=>u(i,e,t),t[7]=i,t[8]=v);let x=v,E;t[9]===x?E=t[10]:(E=e=>x(l[e]),t[9]=x,t[10]=E);let D;t[11]!==r||t[12]!==o||t[13]!==x||t[14]!==E?(D={locale:r,locales:s,setLocale:o,label:E,t:x},t[11]=r,t[12]=o,t[13]=x,t[14]=E,t[15]=D):D=t[15];let O=D,k;return t[16]!==n||t[17]!==O?(k=(0,b.jsx)(y.Provider,{value:O,children:n}),t[16]=n,t[17]=O,t[18]=k):k=t[18],k};function S(e){return e.locale}function C(e){return e.dictionary}function w(e){return e.loadingLocale}function T(e){return e.setLocale}var E={en:`en-US`,fr:`fr-FR`,"zh-CN":`zh-CN`,"zh-TW":`zh-TW`,uk:`uk-UA`,es:`es-ES`,"pt-BR":`pt-BR`,ko:`ko-KR`,pl:`pl-PL`,ja:`ja-JP`},D=e=>E[e]??`en-US`,O=()=>D(c.getState().locale);function k(){let e=d.useContext(y);if(!e)throw Error(`useI18n must be used within I18nProvider`);return e}async function A(e){let t=null;if(typeof navigator<`u`&&navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),{ok:!0,method:`clipboard`}}catch(e){t=e instanceof Error?e.message:String(e)}if(typeof document<`u`&&document.body){let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,``),t.style.position=`fixed`,t.style.top=`-1000px`,t.style.left=`-1000px`,document.body.appendChild(t),t.select(),t.setSelectionRange(0,t.value.length);let n=document.execCommand(`copy`);if(document.body.removeChild(t),n)return{ok:!0,method:`execCommand`}}return{ok:!1,error:t??`Clipboard access denied in current context`}}export{v as a,h as c,x as i,m as l,k as n,p as o,O as r,g as s,A as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./rolldown-runtime-C0FnF6B9.js";import{E as e,F as t,I as n,N as r,P as i,a,i as o,nt as s,rt as c}from"./vendor-base-ui-CnHfUmDN.js";import{n as l}from"./vendor-react-DLPElpoQ.js";import{t as u}from"./utils-BxJEIWv5.js";import{F as d,I as f,P as p}from"./radio-
|
|
1
|
+
import"./rolldown-runtime-C0FnF6B9.js";import{E as e,F as t,I as n,N as r,P as i,a,i as o,nt as s,rt as c}from"./vendor-base-ui-CnHfUmDN.js";import{n as l}from"./vendor-react-DLPElpoQ.js";import{t as u}from"./utils-BxJEIWv5.js";import{F as d,I as f,P as p}from"./radio-CaoU7Lu-.js";var m=l();c();var h=s();function g(e){let t=(0,m.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,h.jsx)(a,{...n}),t[2]=n,t[3]=r),r}function _(e){let t=(0,m.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,h.jsx)(o,{...n}),t[2]=n,t[3]=r),r}function v(e){let n=(0,m.c)(20),a,o,s,c,l;n[0]===e?(a=n[1],o=n[2],s=n[3],c=n[4],l=n[5]):({className:o,positionerClassName:s,children:a,style:l,...c}=e,n[0]=e,n[1]=a,n[2]=o,n[3]=s,n[4]=c,n[5]=l);let f;n[6]===s?f=n[7]:(f=u(`app-region-no-drag z-50`,s),n[6]=s,n[7]=f);let p;n[8]===l?p=n[9]:(p={backgroundColor:`var(--surface-elevated)`,color:`var(--surface-elevated-foreground)`,...l},n[8]=l,n[9]=p);let g;n[10]===o?g=n[11]:(g=u(d,o),n[10]=o,n[11]=g);let _;n[12]!==a||n[13]!==c||n[14]!==p||n[15]!==g?(_=(0,h.jsx)(t,{"data-slot":`dropdown-menu-content`,style:p,className:g,...c,children:a}),n[12]=a,n[13]=c,n[14]=p,n[15]=g,n[16]=_):_=n[16];let v;return n[17]!==f||n[18]!==_?(v=(0,h.jsx)(i,{children:(0,h.jsx)(r,{className:f,children:_})}),n[17]=f,n[18]=_,n[19]=v):v=n[19],v}function y(e){let t=(0,m.c)(8),r,i;t[0]===e?(r=t[1],i=t[2]):({className:r,...i}=e,t[0]=e,t[1]=r,t[2]=i);let a;t[3]===r?a=t[4]:(a=u(p,r),t[3]=r,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,h.jsx)(n,{className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}function b(t){let n=(0,m.c)(8),r,i;n[0]===t?(r=n[1],i=n[2]):({className:r,...i}=t,n[0]=t,n[1]=r,n[2]=i);let a;n[3]===r?a=n[4]:(a=u(f,r),n[3]=r,n[4]=a);let o;return n[5]!==i||n[6]!==a?(o=(0,h.jsx)(e,{className:a,...i}),n[5]=i,n[6]=a,n[7]=o):o=n[7],o}export{_ as a,b as i,v as n,y as r,g as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{$ as t,J as n,K as r,Q as i,X as a,Y as o,Z as s,nt as c,q as l,rt as u}from"./vendor-base-ui-CnHfUmDN.js";import{n as d}from"./vendor-react-DLPElpoQ.js";import{n as f}from"./clipboard-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{$ as t,J as n,K as r,Q as i,X as a,Y as o,Z as s,nt as c,q as l,rt as u}from"./vendor-base-ui-CnHfUmDN.js";import{n as d}from"./vendor-react-DLPElpoQ.js";import{n as f}from"./clipboard-ByPKHEt8.js";import{t as p}from"./utils-BxJEIWv5.js";import{n as m}from"./Icon-DiIuWOuC.js";var h=d(),g=e(u(),1),_=c(),v=0;function y(e,t){return e&&g.isValidElement(t)?{render:t}:{children:t}}function b(e){let t=(0,h.c)(4),r;t[0]===e?r=t[1]:({...r}=e,t[0]=e,t[1]=r);let i;return t[2]===r?i=t[3]:(i=(0,_.jsx)(n,{...r}),t[2]=r,t[3]=i),i}function x(e){let t=(0,h.c)(10),n,i,a;t[0]===e?(n=t[1],i=t[2],a=t[3]):({asChild:n,children:i,...a}=e,t[0]=e,t[1]=n,t[2]=i,t[3]=a);let o;t[4]!==n||t[5]!==i?(o=y(n,i),t[4]=n,t[5]=i,t[6]=o):o=t[6];let s=o,c;return t[7]!==a||t[8]!==s?(c=(0,_.jsx)(r,{"data-slot":`dialog-trigger`,...a,...s}),t[7]=a,t[8]=s,t[9]=c):c=t[9],c}function S(e){let t=(0,h.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,_.jsx)(o,{...n}),t[2]=n,t[3]=r),r}var C=g.forwardRef((e,n)=>{let r=(0,h.c)(10),i,a;r[0]===e?(i=r[1],a=r[2]):({className:i,...a}=e,r[0]=e,r[1]=i,r[2]=a);let o;r[3]===Symbol.for(`react.memo_cache_sentinel`)?(o=[],r[3]=o):o=r[3],g.useEffect(A,o);let s=n,c;r[4]===i?c=r[5]:(c=p(`fixed inset-0 z-50 bg-black/50 dark:bg-black/75`,`transition-opacity duration-150 ease-out`,`data-[starting-style]:opacity-0 data-[ending-style]:opacity-0`,i),r[4]=i,r[5]=c);let l;return r[6]!==a||r[7]!==s||r[8]!==c?(l=(0,_.jsx)(t,{ref:s,"data-slot":`dialog-overlay`,className:c,...a}),r[6]=a,r[7]=s,r[8]=c,r[9]=l):l=r[9],l});C.displayName=`DialogOverlay`;function w(e){let t=(0,h.c)(29),n,r,o,s,c,l;t[0]===e?(n=t[1],r=t[2],o=t[3],s=t[4],c=t[5],l=t[6]):({className:r,overlayClassName:s,containerClassName:o,children:n,showCloseButton:l,...c}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=o,t[4]=s,t[5]=c,t[6]=l);let u=l===void 0||l,{t:d}=f(),g;t[7]===s?g=t[8]:(g=p(`rounded-none`,s),t[7]=s,t[8]=g);let v;t[9]===g?v=t[10]:(v=(0,_.jsx)(C,{className:g}),t[9]=g,t[10]=v);let y=o??`items-center p-4`,b;t[11]===y?b=t[12]:(b=p(`fixed inset-0 z-50 flex justify-center pointer-events-none`,y),t[11]=y,t[12]=b);let x;t[13]===r?x=t[14]:(x=p(`relative pointer-events-auto bg-background text-foreground flex flex-col w-full max-w-lg max-h-full gap-4 rounded-xl border p-6 shadow-none overflow-y-auto pwa-dialog-content origin-center`,`transition-all duration-150 ease-out`,`data-[starting-style]:opacity-0 data-[starting-style]:scale-[0.98]`,`data-[ending-style]:opacity-0 data-[ending-style]:scale-[0.98]`,`data-[nested-dialog-open]:brightness-[0.55] dark:data-[nested-dialog-open]:brightness-[0.4]`,r),t[13]=r,t[14]=x);let w;t[15]!==u||t[16]!==d?(w=u&&(0,_.jsxs)(i,{"data-slot":`dialog-close`,className:`ring-offset-background focus:ring-ring data-[open]:bg-interactive-active data-[open]:text-foreground absolute top-2 right-2 rounded-lg opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none text-muted-foreground hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,children:[(0,_.jsx)(m,{name:`close`}),(0,_.jsx)(`span`,{className:`sr-only`,children:d(`dialog.common.actions.close`)})]}),t[15]=u,t[16]=d,t[17]=w):w=t[17];let T;t[18]!==n||t[19]!==c||t[20]!==x||t[21]!==w?(T=(0,_.jsxs)(a,{"data-slot":`dialog-content`,"data-state-slot":`dialog`,className:x,...c,children:[n,w]}),t[18]=n,t[19]=c,t[20]=x,t[21]=w,t[22]=T):T=t[22];let E;t[23]!==b||t[24]!==T?(E=(0,_.jsx)(`div`,{className:b,children:T}),t[23]=b,t[24]=T,t[25]=E):E=t[25];let D;return t[26]!==v||t[27]!==E?(D=(0,_.jsxs)(S,{children:[v,E]}),t[26]=v,t[27]=E,t[28]=D):D=t[28],D}function T(e){let t=(0,h.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=p(`flex flex-col gap-2 text-center sm:text-left`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,_.jsx)(`div`,{"data-slot":`dialog-header`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function E(e){let t=(0,h.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=p(`flex flex-col-reverse gap-2 bottom-safe-area sm:flex-row sm:justify-end`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,_.jsx)(`div`,{"data-slot":`dialog-footer`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function D(e){let t=(0,h.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=p(`typography-markdown leading-none font-semibold text-foreground`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,_.jsx)(l,{"data-slot":`dialog-title`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function O(e){let t=(0,h.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=p(`text-muted-foreground typography-ui-label`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,_.jsx)(s,{"data-slot":`dialog-description`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function k(){v=Math.max(0,v-1),v===0&&document.documentElement.classList.remove(`oc-dialog-open`)}function A(){return v+=1,document.documentElement.classList.add(`oc-dialog-open`),k}export{T as a,E as i,w as n,D as o,O as r,x as s,b as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var e={"settings.globalConfig.title":`Configuración global`,"settings.globalConfig.description":`Edita los archivos de configuración activos en ~/.config/opencode.`,"settings.globalConfig.actions.reload":`Recargar archivo`,"settings.globalConfig.restartHint":`Reinicia OpenCode después de guardar para aplicar los cambios de configuración.`,"settings.globalConfig.toast.loadFailed":`No se pudo cargar el archivo de configuración`,"settings.globalConfig.toast.saveFailed":`No se pudo guardar el archivo de configuración`,"settings.globalConfig.toast.saved":`Configuración guardada. Reinicia OpenCode para aplicarla.`,"settings.providers.page.openCodeGo.title":`Seguimiento de uso de OpenCode Go`,"settings.providers.page.openCodeGo.description":`Conecta el panel de OpenCode Go para ver las cuotas móvil, semanal y mensual.`,"settings.providers.page.openCodeGo.workspaceId":`ID del espacio de trabajo`,"settings.providers.page.openCodeGo.authCookie":`Cookie de autenticación`,"settings.providers.page.openCodeGo.help":`Copia el ID desde la URL del panel y la cookie auth desde las herramientas del navegador. OpenChamber nunca examina las cookies del navegador.`,"settings.providers.page.openCodeGo.save":`Guardar y validar`,"settings.providers.page.openCodeGo.replace":`Reemplazar`,"settings.providers.page.openCodeGo.validate":`Validar`,"settings.providers.page.openCodeGo.delete":`Eliminar`,"settings.providers.page.quotaCredentials.saved":`Credenciales de {provider} guardadas.`,"settings.providers.page.openCodeGo.saveFailed":`No se pudieron validar las credenciales de OpenCode Go.`,"settings.providers.page.openCodeGo.valid":`Las credenciales de OpenCode Go son válidas.`,"settings.providers.page.openCodeGo.invalid":`Las credenciales de OpenCode Go no son válidas o han caducado.`,"settings.providers.page.openCodeGo.deleted":`Credenciales de OpenCode Go eliminadas.`,"settings.providers.page.openCodeGo.deleteFailed":`No se pudieron eliminar las credenciales de OpenCode Go.`,"settings.appearance.language.label":`Idioma`,"settings.appearance.language.description":`Elige el idioma de la interfaz.`,"settings.appearance.language.select":`Seleccionar idioma`,"settings.window.description":`Ventana de configuración de OpenChamber.`,"settings.view.home.title":`Configuración`,"settings.view.home.description":`Saltar a páginas comunes.`,"settings.view.home.cards.providers.title":`Proveedores`,"settings.view.home.cards.providers.description":`Conectar modelos + credenciales`,"settings.view.home.cards.agents.title":`Agentes`,"settings.view.home.cards.agents.description":`Prompts, herramientas, permisos`,"settings.view.home.cards.skillsCatalog.title":`Catálogo de habilidades`,"settings.view.home.cards.skillsCatalog.description":`Instalar habilidades desde catálogos`,"settings.view.home.cards.mcp.title":`MCP`,"settings.view.home.cards.mcp.description":`Configurar servidores + conexiones MCP`,"settings.view.home.cards.plugins.title":`Plugins`,"settings.view.home.cards.plugins.description":`Manage opencode plugins`,"settings.view.home.cards.usage.title":`Uso`,"settings.view.home.cards.usage.description":`Cuota + visibilidad del gasto`,"settings.view.unavailable.title":`No disponible`,"settings.view.unavailable.description":`Esta página de configuración no está disponible en este entorno de ejecución.`,"settings.view.badge.beta":`beta`,"settings.view.actions.reloadOpenCode":`Recargar OpenCode`,"settings.view.actions.reloadOpenCodeTooltip":`Restablecer OpenCode y recargar su configuración.`,"settings.view.actions.backToSettings":`Volver a Configuración`,"settings.view.actions.closeSettings":`Cerrar configuración`,"settings.view.actions.openSectionList":`Abrir lista de secciones`,"settings.view.actions.closeSettingsWithShortcut":`Cerrar configuración ({shortcut}+,)`,"settings.view.actions.back":`Atrás`,"settings.view.actions.resizeNavigation":`Ajustar tamaño de la navegación`,"settings.view.navigation.groups.connection":`Conexión`,"settings.view.navigation.groups.personalization":`Personalización`,"settings.view.navigation.groups.workspace":`Espacio de trabajo`,"settings.view.navigation.groups.opencode":`OpenCode`,"settings.view.navigation.groups.content":`Contenido y automatización`,"settings.view.navigation.groups.system":`Sistema`,"settings.view.search.placeholder":`Buscar configuración`,"settings.view.search.aria":`Buscar configuración`,"settings.view.search.clear":`Borrar búsqueda de configuración`,"settings.view.search.noResults":`No hay configuraciones coincidentes`,"settings.page.projects.title":`Proyectos`,"settings.page.remoteInstances.title":`Instancias remotas`,"settings.page.providers.title":`Proveedores`,"settings.page.usage.title":`Uso`,"settings.page.agents.title":`Agentes`,"settings.page.commands.title":`Comandos`,"settings.page.mcp.title":`MCP`,"settings.page.plugins.title":`Plugins`,"settings.page.skills.title":`Habilidades`,"settings.page.skillsCatalog.title":`Catálogo de habilidades`,"settings.page.git.title":`Git`,"settings.page.appearance.title":`Apariencia`,"settings.page.chat.title":`Chat`,"settings.page.shortcuts.title":`Atajos`,"settings.page.sessions.title":`Sesiones`,"settings.page.summaryAI.title":`Resúmenes de IA`,"settings.page.magicPrompts.title":`Prompts mágicos`,"settings.page.notifications.title":`Notificaciones`,"settings.page.voice.title":`Voz`,"settings.page.about.title":`Acerca de`,"settings.page.snippets.title":`Snippets`,"settings.snippets.sidebar.title":`Snippets`,"settings.snippets.sidebar.total":`Total: {count}`,"settings.snippets.sidebar.actions.create":`Crear snippet`,"settings.snippets.sidebar.actions.more":`Más acciones para {name}`,"settings.snippets.sidebar.toast.deleted":`Snippet eliminado`,"settings.snippets.sidebar.toast.deleteFailed":`No se pudo eliminar el snippet`,"settings.snippets.sidebar.dialog.deleteTitle":`¿Eliminar snippet?`,"settings.snippets.sidebar.dialog.deleteDescription":`Esto eliminará permanentemente #{name}.`,"settings.snippets.page.empty.title":`Selecciona un snippet`,"settings.snippets.page.empty.description":`Elige un snippet de la barra lateral para editarlo.`,"settings.snippets.page.title.new":`Nuevo snippet`,"settings.snippets.page.field.namePlaceholder":`snippet-name`,"settings.snippets.page.field.descriptionPlaceholder":`Qué hace este snippet`,"settings.snippets.page.field.aliases":`Alias`,"settings.snippets.page.field.aliasesPlaceholder":`safe, careful`,"settings.snippets.page.field.content":`Contenido`,"settings.snippets.page.field.contentPlaceholder":`Markdown del snippet...`,"settings.snippets.page.hint":`Usa #name en los prompts. Admite alias y bloques prepend/append compatibles con opencode-snippets.`,"settings.snippets.page.toast.nameRequired":`El nombre del snippet es obligatorio`,"settings.snippets.page.toast.contentRequired":`El contenido del snippet es obligatorio`,"settings.snippets.page.toast.saveFailed":`No se pudo guardar el snippet`,"settings.snippets.page.toast.saved":`Snippet guardado`,"settings.magicPrompts.sidebar.title":`Prompts mágicos`,"settings.magicPrompts.sidebar.description":`Selecciona una plantilla de prompt para editar.`,"settings.magicPrompts.sidebar.group.git":`Git`,"settings.magicPrompts.sidebar.group.github":`GitHub`,"settings.magicPrompts.sidebar.group.planning":`Planificación`,"settings.magicPrompts.sidebar.group.session":`Sesión`,"settings.magicPrompts.sidebar.item.gitCommitGenerate":`Generación de commit`,"settings.magicPrompts.sidebar.item.gitPrGenerate":`Generación de PR`,"settings.magicPrompts.sidebar.item.gitConflictResolve":`Resolución de conflicto de merge/rebase`,"settings.magicPrompts.sidebar.item.gitCherrypickConflictResolve":`Resolución de conflicto de cherry-pick`,"settings.magicPrompts.sidebar.item.githubPrReview":`Revisión de PR`,"settings.magicPrompts.sidebar.item.githubIssueReview":`Revisión de issue`,"settings.magicPrompts.sidebar.item.githubPrFailedChecksReview":`Revisión de PR con comprobaciones fallidas`,"settings.magicPrompts.sidebar.item.githubPrCommentsReview":`Revisión de comentarios de PR`,"settings.magicPrompts.sidebar.item.githubSinglePrCommentReview":`Revisión de comentario único de PR`,"settings.magicPrompts.sidebar.item.planTodo":`Planificar Todo`,"settings.magicPrompts.sidebar.item.planImprove":`Mejorar plan`,"settings.magicPrompts.sidebar.item.planImplement":`Implementar plan`,"settings.magicPrompts.sidebar.item.sessionSummary":`Resumen de sesión`,"settings.magicPrompts.sidebar.item.sessionWorkspaceReview":`Revisión del espacio de trabajo`,"settings.magicPrompts.sidebar.item.sessionExplore":`Recorrido del código`,"settings.magicPrompts.sidebar.item.sessionFeaturePlan":`Planificación de funciones`,"settings.magicPrompts.sidebar.item.sessionCraftGoal":`Creación de Goal`,"settings.magicPrompts.page.group.sessionCraftGoal.title":`Creación de Goal`,"settings.magicPrompts.page.group.sessionCraftGoal.description":`Prompts usados por el comando /craft-goal: mensaje visible del usuario + instrucciones ocultas. Convierte una idea o tarea en un Goal claro y verificable mediante un diálogo guiado.`,"settings.magicPrompts.sidebar.item.sessionCatchUp":`Ponerse al día`,"settings.magicPrompts.sidebar.item.sessionDebug":`Depuración`,"settings.magicPrompts.sidebar.item.sessionWeigh":`Comparar enfoques`,"settings.magicPrompts.sidebar.item.sessionFusion":`Fusion`,"settings.remoteInstances.sidebar.title":`Instancias remotas`,"settings.remoteInstances.sidebar.description":`Conéctate a otros servidores de OpenChamber con un enlace de importación o SSH.`,"settings.remoteInstances.sidebar.empty":`Aún no hay instancias remotas. Importa un enlace o añade una conexión SSH.`,"settings.remoteInstances.channel.link":`Enlace`,"settings.remoteInstances.channel.ssh":`SSH`,"settings.remoteInstances.sidebar.total":`Total {count}`,"settings.remoteInstances.sidebar.newSshInstanceName":`Nueva conexión SSH`,"settings.remoteInstances.sidebar.actions.addSshInstance":`Añadir conexión SSH`,"settings.remoteInstances.sidebar.actions.connect":`Conectar`,"settings.remoteInstances.sidebar.actions.disconnect":`Desconectar`,"settings.remoteInstances.sidebar.actions.retry":`Reintentar`,"settings.remoteInstances.sidebar.actions.remove":`Eliminar`,"settings.remoteInstances.sidebar.confirm.localPortInUseRetry":`El puerto local ya está en uso. ¿Elegir un puerto libre aleatorio y reintentar?`,"settings.remoteInstances.sidebar.toast.createFailed":`No se pudo crear la conexión SSH`,"settings.remoteInstances.sidebar.toast.retriedWithRandomPort":`Reintentado con un puerto local aleatorio`,"settings.remoteInstances.sidebar.toast.connectFailed":`No se pudo conectar la instancia`,"settings.remoteInstances.sidebar.toast.disconnectFailed":`No se pudo desconectar la instancia`,"settings.remoteInstances.sidebar.toast.retryFailed":`No se pudo reintentar la conexión`,"settings.remoteInstances.sidebar.toast.removeFailed":`No se pudo eliminar la instancia`,"settings.remoteInstances.direct.sidebarTitle":`Enlaces a servidores`,"settings.remoteInstances.direct.sidebarDescription":`Conecta con un enlace de emparejamiento`,"settings.remoteInstances.direct.title":`Otros servidores de OpenChamber`,"settings.remoteInstances.direct.description":`Servidores a los que esta aplicación puede cambiar. Importa un enlace de conexión de otro servidor.`,"settings.remoteInstances.direct.import.description":`Pega un enlace de conexión de otro servidor de OpenChamber.`,"settings.remoteInstances.direct.import.placeholder":`openchamber://connect?...`,"settings.remoteInstances.direct.import.action":`Importar enlace`,"settings.remoteInstances.direct.error.invalidConnectLink":`Enlace de conexión de OpenChamber no válido.`,"settings.remoteInstances.direct.state.loading":`Cargando servidores...`,"settings.remoteInstances.direct.state.empty":`Todavía no se han importado otros servidores.`,"settings.remoteInstances.clientAuth.title":`Conectarse a este servidor`,"settings.remoteInstances.clientAuth.description":`Crea un enlace o token seguro para que OpenChamber Desktop pueda conectarse a este servidor.`,"settings.remoteInstances.clientAuth.field.labelPlaceholder":`Nombre de la instancia — p. ej. Mac de casa`,"settings.remoteInstances.clientAuth.field.labelHint":`El otro dispositivo mostrará este nombre para este servidor.`,"settings.remoteInstances.clientAuth.actions.create":`Crear token`,"settings.remoteInstances.clientAuth.actions.pair":`Crear enlace`,"settings.remoteInstances.clientAuth.actions.revoke":`Revocar`,"settings.remoteInstances.clientAuth.actions.clearRevoked":`Borrar revocados`,"settings.remoteInstances.clientAuth.qrAlt":`OpenChamber connection QR code`,"settings.remoteInstances.clientAuth.qrEnlarge":`Ampliar código QR`,"settings.remoteInstances.clientAuth.qrScanHint":`Escanéalo con la app de OpenChamber en tu otro dispositivo. Es de un solo uso y caduca.`,"settings.remoteInstances.clientAuth.qrDialogTitle":`Escanear para conectar`,"settings.remoteInstances.clientAuth.actions.addDevice":`Añadir un dispositivo`,"settings.remoteInstances.clientAuth.actions.copied":`Copiado`,"settings.remoteInstances.clientAuth.addDevice.transportLabel":`¿Dónde usarás este dispositivo?`,"settings.remoteInstances.clientAuth.addDevice.subtitle":`Crea un código QR de un solo uso que conecta otro dispositivo a este servidor.`,"settings.remoteInstances.clientAuth.addDevice.transport.local":`Solo este equipo`,"settings.remoteInstances.clientAuth.addDevice.transport.localHint":`Para aplicaciones en esta misma máquina.`,"settings.remoteInstances.clientAuth.addDevice.transport.lan":`Solo red doméstica`,"settings.remoteInstances.clientAuth.addDevice.transport.lanHint":`Se conecta directamente por tu Wi-Fi. No funciona fuera de esta red.`,"settings.remoteInstances.clientAuth.addDevice.transport.relay":`En cualquier lugar`,"settings.remoteInstances.clientAuth.addDevice.transport.relayHint":`Funciona en casa y fuera. Fuera de casa el tráfico pasa por OpenChamber Private Relay, un túnel cifrado de extremo a extremo. Sin configuración.`,"settings.remoteInstances.clientAuth.addDevice.fallback.relay":`Permitir también el relay cifrado fuera de casa`,"settings.remoteInstances.clientAuth.addDevice.fallback.preferLocal":`Preferir la conexión doméstica directa cuando esté disponible`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLabel":`Servidor Relay`,"settings.remoteInstances.clientAuth.addDevice.relayUrlHint":`Usa el Relay oficial de OpenChamber o introduce tu propio endpoint ws:// o wss://. El dispositivo guardará el endpoint incluido en el código QR.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlDeployLink":`Despliega tu propio Relay.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLockedHint":`Este servidor fija el endpoint Relay mediante OPENCHAMBER_RELAY_URL.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlInvalid":`Introduce un endpoint Relay válido que empiece por ws:// o wss://.`,"settings.remoteInstances.clientAuth.addDevice.create":`Crear código QR`,"settings.remoteInstances.clientAuth.addDevice.targetLabel":`Instancia de destino`,"settings.remoteInstances.clientAuth.addDevice.target.local":`Este escritorio`,"settings.remoteInstances.clientAuth.addDevice.target.sshEmpty":`No hay instancias SSH conectadas`,"settings.remoteInstances.clientAuth.addDevice.target.sshNotReady":`Conecta primero la instancia SSH`,"settings.remoteInstances.sidebar.actions.mobileConnect":`Conectar teléfono`,"settings.remoteInstances.sidebar.actions.mobileConnectAria":`Crear QR de emparejamiento del teléfono para {instance}`,"settings.remoteInstances.sidebar.actions.mobileConnectDisabled":`Conecta esta instancia SSH antes de emparejar un teléfono`,"settings.remoteInstances.sidebar.actions.syncConfigDisabled":`Conecta esta instancia para sincronizar su configuración`,"settings.remoteInstances.sidebar.actions.syncConfig":`Sincronizar configuración`,"settings.remoteInstances.clientAuth.addDevice.done":`Listo`,"settings.remoteInstances.clientAuth.addDevice.connectedToast":`Dispositivo conectado.`,"settings.remoteInstances.clientAuth.pairingUrl":`Enlace de conexión`,"settings.remoteInstances.clientAuth.createdToken":`Copia este token ahora. Por seguridad, no se volverá a mostrar.`,"settings.remoteInstances.clientAuth.state.loading":`Cargando tokens...`,"settings.remoteInstances.clientAuth.state.empty":`Todavía no hay dispositivos conectados.`,"settings.remoteInstances.clientAuth.state.revoked":`Revocado`,"settings.remoteInstances.clientAuth.state.thisDevice":`Este dispositivo`,"settings.remoteInstances.clientAuth.state.pending":`Esperando conexión…`,"settings.remoteInstances.clientAuth.state.viaRelay":`Relay`,"settings.remoteInstances.clientAuth.state.connectedDirect":`Conectado · Red local`,"settings.remoteInstances.clientAuth.state.connectedRelay":`Conectado · Relay`,"settings.remoteInstances.clientAuth.lastUsed":`Último uso {date}`,"settings.remoteInstances.clientAuth.neverUsed":`Nunca usado`,"settings.remoteInstances.relay.title":`OpenChamber Relay`,"settings.remoteInstances.relay.autoHint":`Se activa automáticamente al vincular un dispositivo por relay.`,"settings.remoteInstances.relay.description":`Permite que tus otros dispositivos se conecten desde cualquier lugar sin abrir puertos. El tráfico está cifrado de extremo a extremo: el relay no puede leerlo.`,"settings.remoteInstances.relay.enableHint":`No se comparte nada hasta que actives el relay en este servidor.`,"settings.remoteInstances.relay.actions.enable":`Activar Relay`,"settings.remoteInstances.relay.actions.disable":`Desactivar`,"settings.remoteInstances.relay.confirm.disable":`¿Desactivar el relay? Los dispositivos conectados a través de él se desconectarán de inmediato.`,"settings.remoteInstances.relay.state.loading":`Comprobando el estado del relay...`,"settings.remoteInstances.relay.state.disabled":`Desactivado`,"settings.remoteInstances.relay.state.connecting":`Conectando`,"settings.remoteInstances.relay.state.connected":`Conectado`,"settings.remoteInstances.relay.state.reconnecting":`Reconectando`,"settings.remoteInstances.relay.state.error":`Error`,"settings.remoteInstances.relay.status.clientsOne":`{count} dispositivo conectado`,"settings.remoteInstances.relay.status.clientsMany":`{count} dispositivos conectados`,"settings.remoteInstances.relay.pair.title":`Emparejar un dispositivo`,"settings.remoteInstances.relay.pair.labelPlaceholder":`Nombre del dispositivo (opcional)`,"settings.remoteInstances.relay.pair.includeToken":`Incluir token de acceso (emparejamiento con un solo escaneo)`,"settings.remoteInstances.relay.pair.noTokenHint":`Sin token, el dispositivo inicia sesión con la contraseña de la interfaz de este servidor tras conectarse.`,"settings.remoteInstances.relay.pair.generate":`Crear enlace de emparejamiento`,"settings.remoteInstances.relay.pair.requiresConnected":`El emparejamiento estará disponible cuando el relay esté conectado.`,"settings.remoteInstances.relay.pair.linkLabel":`Enlace de emparejamiento`,"settings.remoteInstances.relay.pair.warning":`Este enlace concede acceso a este servidor. No lo compartas.`,"settings.remoteInstances.relay.pair.qrAlt":`Código QR de emparejamiento del relay`,"settings.remoteInstances.relay.pair.showQr":`Mostrar código QR`,"settings.remoteInstances.relay.pair.qrDialogTitle":`Escanear para emparejar`,"settings.remoteInstances.relay.pair.qrDialogDescription":`Escanea este código QR con la app de OpenChamber en tu otro dispositivo.`,"settings.remoteInstances.relay.pair.manageHint":`Gestiona o revoca los dispositivos emparejados en la lista «Conexión a este servidor» de arriba.`,"settings.remoteInstances.relay.toast.enableFailed":`No se pudo activar el relay`,"settings.remoteInstances.relay.toast.disableFailed":`No se pudo desactivar el relay`,"settings.remoteInstances.relay.toast.offerFailed":`No se pudo crear el enlace de emparejamiento`,"settings.remoteInstances.relay.toast.linkCopied":`Enlace de emparejamiento copiado`,"settings.remoteInstances.sidebar.phase.ready":`Listo`,"settings.remoteInstances.sidebar.phase.error":`Error`,"settings.remoteInstances.sidebar.phase.reconnect":`Reconectar`,"settings.remoteInstances.sidebar.phase.installing":`Instalando`,"settings.remoteInstances.sidebar.phase.updating":`Actualizando`,"settings.remoteInstances.sidebar.phase.forwarding":`Redirigiendo`,"settings.remoteInstances.sidebar.phase.starting":`Iniciando`,"settings.remoteInstances.sidebar.phase.connecting":`Conectando`,"settings.remoteInstances.sidebar.phase.idle":`Inactivo`,"settings.remoteInstances.page.section.instance":`Instancia`,"settings.remoteInstances.page.section.instanceDescription":`Choose the SSH command and a display name for this connection.`,"settings.remoteInstances.page.field.mode":`Modo`,"settings.remoteInstances.page.field.modeHint":`Elige si OpenChamber debe iniciar el servidor por ti o conectarse a uno que ya está en marcha.`,"settings.remoteInstances.page.field.modePlaceholder":`Seleccionar modo`,"settings.remoteInstances.page.field.modeManaged":`Iniciarlo por mí`,"settings.remoteInstances.page.field.modeExternal":`Ya está en marcha`,"settings.remoteInstances.page.field.preferredRemotePort":`Puerto remoto preferido`,"settings.remoteInstances.page.field.preferredRemotePortHint":`Port to use on the remote machine. Leave empty to choose one automatically.`,"settings.remoteInstances.page.field.keepServerRunning":`Mantener servidor en ejecución`,"settings.remoteInstances.page.field.keepServerRunningHint":`Keep OpenChamber running on the remote machine after you disconnect.`,"settings.remoteInstances.page.field.bindHost":`Host de enlace`,"settings.remoteInstances.page.field.bindHostHint":`Where the local connection should listen. Use 127.0.0.1 or localhost unless you need LAN access.`,"settings.remoteInstances.page.field.preferredLocalPort":`Puerto local preferido`,"settings.remoteInstances.page.field.preferredLocalPortHint":`Local port to open for this connection. Leave empty to choose one automatically.`,"settings.remoteInstances.page.field.forwardType":`Tipo de redirección`,"settings.remoteInstances.page.field.localListen":`Escucha local`,"settings.remoteInstances.page.field.localTarget":`Destino local`,"settings.remoteInstances.page.field.remoteListen":`Escucha remota`,"settings.remoteInstances.page.field.remoteTarget":`Destino remoto`,"settings.remoteInstances.page.field.localHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.remoteHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.auto":`Automático`,"settings.remoteInstances.page.confirm.bindAllInterfaces":`Vincular a 0.0.0.0 expone los puertos redirigidos a tu red local. ¿Continuar?`,"settings.remoteInstances.page.preview.localSocks5":`(local SOCKS5)`,"settings.remoteInstances.page.preview.local":`(local)`,"settings.remoteInstances.page.preview.remote":`(remoto)`,"settings.remoteInstances.page.toast.openLocalEndpointFailed":`No se pudo abrir la dirección local`,"settings.remoteInstances.page.toast.localUrlCopied":`URL local copiada`,"settings.remoteInstances.page.actions.copyLocalUrl":`Copiar URL local`,"settings.remoteInstances.page.actions.open":`Abrir`,"settings.remoteInstances.page.logsDialog.selectedInstanceFallback":`Instancia seleccionada`,"settings.remoteInstances.page.patternDialog.descriptionWithHost":`{host} requiere un destino concreto.`,"settings.remoteInstances.page.patternDialog.description":`Introduce destino.`,"settings.common.actions.cancel":`Cancelar`,"settings.common.actions.create":`Crear`,"settings.common.actions.delete":`Eliminar`,"settings.common.actions.reset":`Restablecer`,"settings.common.actions.rename":`Cambiar nombre`,"settings.common.actions.duplicate":`Duplicar`,"settings.common.actions.import":`Importar`,"settings.common.actions.copyAll":`Copiar todo`,"settings.common.actions.clear":`Limpiar`,"settings.common.actions.saving":`Guardando...`,"settings.common.actions.saveChanges":`Guardar cambios`,"settings.common.scope.global":`Global`,"settings.common.scope.project":`Proyecto`,"settings.common.field.description":`Descripción`,"settings.common.badge.new":`Nuevo`,"settings.common.badge.modified":`Modificado`,"settings.common.permission.allow":`Permitir`,"settings.common.permission.ask":`Preguntar`,"settings.common.permission.deny":`Denegar`,"settings.common.state.comingSoon":`Próximamente...`,"settings.projects.actions.title":`Acciones`,"settings.projects.actions.description":`Comandos por proyecto mostrados en el encabezado junto al nombre del proyecto.`,"settings.projects.actions.validation.fillNameAndCommand":`Completa el nombre de la acción y el comando antes de guardar.`,"settings.projects.actions.state.loading":`Cargando...`,"settings.projects.actions.state.empty":`No hay acciones configuradas aún.`,"settings.projects.actions.state.untitled":`Acción sin título`,"settings.projects.actions.state.noDesktopSshForwards":`No hay forwards SSH locales habilitados disponibles.`,"settings.projects.actions.field.selectIconAria":`Seleccionar icono`,"settings.projects.actions.field.iconAria":`Icono {icon}`,"settings.projects.actions.field.actionNamePlaceholder":`Nombre de la acción`,"settings.projects.actions.field.command":`Comando`,"settings.projects.actions.field.commandPlaceholder":`p. ej. bun run lint`,"settings.projects.actions.field.autoOpenUrl":`Abrir URL automáticamente`,"settings.projects.actions.field.autoOpenUrlForAria":`Abrir URL automáticamente para {title}`,"settings.projects.actions.field.autoOpenUrlDescription":`Abrir URL desde la salida o la URL personalizada de abajo`,"settings.projects.actions.field.overrideUrlPlaceholder":`URL de reemplazo (opcional)`,"settings.projects.actions.field.overrideUrlTooltip":`Si este campo está lleno, se usa la URL personalizada. Si está vacío, la aplicación abre la mejor URL de la salida.`,"settings.projects.actions.field.desktopSshForward":`Forward SSH de escritorio`,"settings.projects.actions.field.useOutputManualUrl":`Usar URL de salida/manual`,"settings.projects.actions.actions.add":`Añadir acción`,"settings.projects.actions.actions.save":`Guardar acciones`,"settings.projects.actions.toast.saveFailed":`No se pudieron guardar las acciones`,"settings.projects.actions.toast.saved":`Acciones del proyecto guardadas`,"settings.openchamber.about.title":`Acerca de OpenChamber`,"settings.openchamber.about.field.version":`Versión`,"settings.openchamber.about.field.clientVersion":`Cliente`,"settings.openchamber.about.field.instanceOpenChamberVersion":`OpenChamber`,"settings.openchamber.about.field.instanceOpenCodeVersion":`OpenCode`,"settings.openchamber.about.field.openCodeVersion":`Versión de OpenCode`,"settings.openchamber.about.state.checking":`Comprobando...`,"settings.openchamber.about.state.upToDate":`Actualizado`,"settings.openchamber.about.state.unknown":`desconocido`,"settings.openchamber.about.actions.checkUpdates":`Comprobar actualizaciones`,"settings.openchamber.about.actions.update":`Actualizar`,"settings.openchamber.about.actions.updateToVersion":`Actualizar a {version}`,"settings.openchamber.about.actions.checkForUpdates":`Comprobar actualizaciones`,"settings.openchamber.about.toast.latestVersion":`Ya estás en la última versión`,"settings.openchamber.about.toast.checkFailed":`No se pudo comprobar actualizaciones`,"settings.openchamber.about.diagnostics.label":`Registro de diagnóstico`,"settings.openchamber.about.diagnostics.description":`Exporta los feat de diagnóstico locales para analizar problemas de visualización y sincronización. No incluye cuerpos de mensajes ni tokens.`,"settings.openchamber.about.diagnostics.export":`Exportar registro`,"settings.openchamber.about.diagnostics.exporting":`Exportando…`,"settings.openchamber.about.diagnostics.enable":`Registrar feat de diagnóstico`,"settings.openchamber.about.diagnostics.enableHint":`Disponible en versiones beta. Registra en este dispositivo el ciclo de sincronización y visualización de la sesión, sin el cuerpo del mensaje.`,"settings.openchamber.about.diagnostics.toast.exported":`Registro de diagnóstico exportado`,"settings.openchamber.about.diagnostics.toast.failed":`No se pudo exportar el registro de diagnóstico`,"settings.openchamber.about.diagnostics.toast.empty":`Registro de diagnóstico exportado. Aún no se registró ningún evento.`,"settings.agents.sidebar.title":`Agentes`,"settings.agents.sidebar.total":`Total {count}`,"settings.agents.sidebar.empty.title":`No hay agentes configurados`,"settings.agents.sidebar.empty.description":`Usa el botón + arriba para crear uno`,"settings.agents.sidebar.section.builtIn":`Agentes incorporados`,"settings.agents.sidebar.section.custom":`Agentes personalizados`,"settings.agents.sidebar.badge.system":`sistema`,"settings.agents.sidebar.dialog.deleteTitle":`Eliminar agente`,"settings.agents.sidebar.dialog.resetTitle":`Restablecer agente`,"settings.agents.sidebar.dialog.deleteDescription":`¿Seguro que quieres eliminar el agente "{name}"?`,"settings.agents.sidebar.dialog.resetDescription":`¿Seguro que quieres restablecer el agente "{name}" a su configuración predeterminada?`,"settings.agents.sidebar.renameDialog.title":`Cambiar nombre del agente`,"settings.agents.sidebar.renameDialog.description":`Introduce un nuevo nombre para el agente "@{name}"`,"settings.agents.sidebar.renameDialog.placeholder":`Nuevo nombre del agente...`,"settings.agents.sidebar.toast.builtInCannotDelete":`Los agentes incorporados no pueden eliminarse`,"settings.agents.sidebar.toast.agentDeleted":`Agente "{name}" eliminado correctamente`,"settings.agents.sidebar.toast.agentReset":`Agente "{name}" restablecido a la configuración predeterminada`,"settings.agents.sidebar.toast.deleteFailed":`No se pudo eliminar el agente`,"settings.agents.sidebar.toast.definitionNotFound":`No se encontró la definición del agente. No se cambió nada.`,"settings.agents.sidebar.toast.resetFailed":`No se pudo restablecer el agente`,"settings.agents.sidebar.toast.agentNameRequired":`Se requiere el nombre del agente`,"settings.agents.sidebar.toast.agentExists":`Ya existe un agente con este nombre`,"settings.agents.sidebar.toast.removeOldAfterRenameFailed":`No se pudo eliminar el antiguo agente después del cambio de nombre`,"settings.agents.sidebar.toast.renameFailed":`No se pudo cambiar el nombre del agente`,"settings.agents.sidebar.toast.agentRenamed":`Agente renombrado a "{name}"`,"settings.agents.page.toast.permissionNameRequired":`Se requiere el nombre del permiso`,"settings.agents.page.toast.created":`Agente creado correctamente`,"settings.agents.page.toast.updated":`Agente actualizado correctamente`,"settings.agents.page.toast.createFailed":`No se pudo crear el agente`,"settings.agents.page.toast.updateFailed":`No se pudo actualizar el agente`,"settings.agents.page.toast.saveUnexpectedError":`Ocurrió un error al guardar`,"settings.agents.page.toast.savedManualRestart":`Guardado en disco. Reinicia tu servidor OpenCode conectado para aplicar los cambios.`,"settings.agents.page.empty.title":`Selecciona un agente desde la barra lateral`,"settings.agents.page.empty.description":`o crea uno nuevo`,"settings.agents.page.title.new":`Nuevo agente`,"settings.agents.page.subtitle.new":`Configura una nueva asistente`,"settings.agents.page.subtitle.edit":`Editar configuración del agente`,"settings.agents.page.section.identityRole":`Identidad y rol`,"settings.agents.page.section.modelParameters":`Modelo y parámetros`,"settings.agents.page.section.systemPrompt":`Prompt del sistema`,"settings.agents.page.section.toolPermissions":`Permisos de herramientas`,"settings.agents.page.field.agentName":`Nombre del agente`,"settings.agents.page.field.agentNamePlaceholder":`nombre-agente`,"settings.agents.page.field.scopePlaceholder":`Ámbito`,"settings.agents.page.field.descriptionPlaceholder":`¿Qué hace este agente?`,"settings.agents.page.field.mode":`Modo`,"settings.agents.page.field.modeTooltip":`Visibilidad principal vs subagente`,"settings.agents.page.field.overrideModel":`Sobrescribir modelo`,"settings.agents.page.field.variant":`Variante de pensamiento`,"settings.agents.page.field.variantTooltip":`Opcional. Si el modelo admite razonamiento, la variante controla la profundidad del razonamiento.`,"settings.agents.page.field.variantHint":`Específico del modelo (p. ej. variante de Anthropic)`,"settings.agents.page.field.variantPlaceholder":`p. ej. high, max, low, none`,"settings.agents.page.field.temperature":`Temperatura`,"settings.agents.page.field.temperatureTooltip":`Controla la aleatoriedad. Mayor = más creativo, menor = más enfocado.`,"settings.agents.page.field.temperatureRange":`0.0 a 2.0`,"settings.agents.page.field.clearTemperatureAria":`Limpiar sobrescritura de temperatura`,"settings.agents.page.field.topP":`Top P`,"settings.agents.page.field.topPTooltip":`Diversidad de muestreo del núcleo. Más bajo = solo tokens más probables.`,"settings.agents.page.field.topPRange":`0.0 a 1.0`,"settings.agents.page.field.clearTopPAria":`Limpiar sobrescritura de top p`,"settings.agents.page.field.systemPromptPlaceholder":`Eres un asistente experto en programación...`,"settings.agents.page.mode.primary":`Primario`,"settings.agents.page.mode.subagent":`Subagente`,"settings.agents.page.mode.all":`Todos`,"settings.agents.page.permissions.defaultLabel":`Predeterminado`,"settings.agents.page.permissions.hideEditor":`Ocultar editor`,"settings.agents.page.permissions.advancedEditor":`Editor avanzado`,"settings.agents.page.permissions.globalSummary":`Global: {summary}`,"settings.agents.page.permissions.rulesSummary":`Reglas: {summary}`,"settings.agents.page.permissions.globalDefault":`Predeterminado global`,"settings.agents.page.permissions.pattern":`Patrón`,"settings.agents.page.permissions.addCustomRule":`Añadir regla personalizada`,"settings.agents.page.permissions.permissionPlaceholder":`Permiso...`,"settings.agents.page.permissions.patternPlaceholder":`Patrón (ej. *)`,"settings.page.behavior.title":`Comportamiento`,"settings.behavior.page.title":`Comportamiento`,"settings.behavior.page.warning.title":`Las reglas globales se combinan con las reglas del proyecto`,"settings.behavior.page.warning.description":`Los cambios realizados aquí actualizan {path}. OpenCode también incluye cualquier AGENTS.md a nivel de proyecto cuando existe.`,"settings.behavior.page.section.systemPrompt":`AGENTS.md global`,"settings.behavior.page.field.systemPromptPlaceholder":`Eres un asistente de IA útil...
|
|
1
|
+
var e={"settings.globalConfig.title":`Configuración global`,"settings.globalConfig.description":`Edita los archivos de configuración activos en ~/.config/opencode.`,"settings.globalConfig.actions.reload":`Recargar archivo`,"settings.globalConfig.restartHint":`Reinicia OpenCode después de guardar para aplicar los cambios de configuración.`,"settings.globalConfig.toast.loadFailed":`No se pudo cargar el archivo de configuración`,"settings.globalConfig.toast.saveFailed":`No se pudo guardar el archivo de configuración`,"settings.globalConfig.toast.saved":`Configuración guardada. Reinicia OpenCode para aplicarla.`,"settings.providers.page.openCodeGo.title":`Seguimiento de uso de OpenCode Go`,"settings.providers.page.openCodeGo.description":`Conecta el panel de OpenCode Go para ver las cuotas móvil, semanal y mensual.`,"settings.providers.page.openCodeGo.workspaceId":`ID del espacio de trabajo`,"settings.providers.page.openCodeGo.authCookie":`Cookie de autenticación`,"settings.providers.page.openCodeGo.help":`Copia el ID desde la URL del panel y la cookie auth desde las herramientas del navegador. OpenChamber nunca examina las cookies del navegador.`,"settings.providers.page.openCodeGo.save":`Guardar y validar`,"settings.providers.page.openCodeGo.replace":`Reemplazar`,"settings.providers.page.openCodeGo.validate":`Validar`,"settings.providers.page.openCodeGo.delete":`Eliminar`,"settings.providers.page.quotaCredentials.saved":`Credenciales de {provider} guardadas.`,"settings.providers.page.openCodeGo.saveFailed":`No se pudieron validar las credenciales de OpenCode Go.`,"settings.providers.page.openCodeGo.valid":`Las credenciales de OpenCode Go son válidas.`,"settings.providers.page.openCodeGo.invalid":`Las credenciales de OpenCode Go no son válidas o han caducado.`,"settings.providers.page.openCodeGo.deleted":`Credenciales de OpenCode Go eliminadas.`,"settings.providers.page.openCodeGo.deleteFailed":`No se pudieron eliminar las credenciales de OpenCode Go.`,"settings.appearance.language.label":`Idioma`,"settings.appearance.language.description":`Elige el idioma de la interfaz.`,"settings.appearance.language.select":`Seleccionar idioma`,"settings.window.description":`Ventana de configuración de OpenChamber.`,"settings.view.home.title":`Configuración`,"settings.view.home.description":`Saltar a páginas comunes.`,"settings.view.home.cards.providers.title":`Proveedores`,"settings.view.home.cards.providers.description":`Conectar modelos + credenciales`,"settings.view.home.cards.agents.title":`Agentes`,"settings.view.home.cards.agents.description":`Prompts, herramientas, permisos`,"settings.view.home.cards.skillsCatalog.title":`Catálogo de habilidades`,"settings.view.home.cards.skillsCatalog.description":`Instalar habilidades desde catálogos`,"settings.view.home.cards.mcp.title":`MCP`,"settings.view.home.cards.mcp.description":`Configurar servidores + conexiones MCP`,"settings.view.home.cards.plugins.title":`Plugins`,"settings.view.home.cards.plugins.description":`Manage opencode plugins`,"settings.view.home.cards.usage.title":`Uso`,"settings.view.home.cards.usage.description":`Cuota + visibilidad del gasto`,"settings.view.unavailable.title":`No disponible`,"settings.view.unavailable.description":`Esta página de configuración no está disponible en este entorno de ejecución.`,"settings.view.badge.beta":`beta`,"settings.view.actions.reloadOpenCode":`Recargar OpenCode`,"settings.view.actions.reloadOpenCodeTooltip":`Restablecer OpenCode y recargar su configuración.`,"settings.view.actions.backToSettings":`Volver a Configuración`,"settings.view.actions.closeSettings":`Cerrar configuración`,"settings.view.actions.openSectionList":`Abrir lista de secciones`,"settings.view.actions.closeSettingsWithShortcut":`Cerrar configuración ({shortcut}+,)`,"settings.view.actions.back":`Atrás`,"settings.view.actions.resizeNavigation":`Ajustar tamaño de la navegación`,"settings.view.navigation.groups.connection":`Conexión`,"settings.view.navigation.groups.personalization":`Personalización`,"settings.view.navigation.groups.workspace":`Espacio de trabajo`,"settings.view.navigation.groups.opencode":`OpenCode`,"settings.view.navigation.groups.content":`Contenido y automatización`,"settings.view.navigation.groups.system":`Sistema`,"settings.view.search.placeholder":`Buscar configuración`,"settings.view.search.aria":`Buscar configuración`,"settings.view.search.clear":`Borrar búsqueda de configuración`,"settings.view.search.noResults":`No hay configuraciones coincidentes`,"settings.page.projects.title":`Proyectos`,"settings.page.remoteInstances.title":`Instancias remotas`,"settings.page.providers.title":`Proveedores`,"settings.page.usage.title":`Uso`,"settings.page.agents.title":`Agentes`,"settings.page.commands.title":`Comandos`,"settings.page.mcp.title":`MCP`,"settings.page.plugins.title":`Plugins`,"settings.page.skills.title":`Habilidades`,"settings.page.skillsCatalog.title":`Catálogo de habilidades`,"settings.page.git.title":`Git`,"settings.page.appearance.title":`Apariencia`,"settings.page.chat.title":`Chat`,"settings.page.shortcuts.title":`Atajos`,"settings.page.sessions.title":`Sesiones`,"settings.page.summaryAI.title":`Resúmenes de IA`,"settings.page.magicPrompts.title":`Prompts mágicos`,"settings.page.notifications.title":`Notificaciones`,"settings.page.voice.title":`Voz`,"settings.page.about.title":`Acerca de`,"settings.page.snippets.title":`Snippets`,"settings.snippets.sidebar.title":`Snippets`,"settings.snippets.sidebar.total":`Total: {count}`,"settings.snippets.sidebar.actions.create":`Crear snippet`,"settings.snippets.sidebar.actions.more":`Más acciones para {name}`,"settings.snippets.sidebar.toast.deleted":`Snippet eliminado`,"settings.snippets.sidebar.toast.deleteFailed":`No se pudo eliminar el snippet`,"settings.snippets.sidebar.dialog.deleteTitle":`¿Eliminar snippet?`,"settings.snippets.sidebar.dialog.deleteDescription":`Esto eliminará permanentemente #{name}.`,"settings.snippets.page.empty.title":`Selecciona un snippet`,"settings.snippets.page.empty.description":`Elige un snippet de la barra lateral para editarlo.`,"settings.snippets.page.title.new":`Nuevo snippet`,"settings.snippets.page.field.namePlaceholder":`snippet-name`,"settings.snippets.page.field.descriptionPlaceholder":`Qué hace este snippet`,"settings.snippets.page.field.aliases":`Alias`,"settings.snippets.page.field.aliasesPlaceholder":`safe, careful`,"settings.snippets.page.field.content":`Contenido`,"settings.snippets.page.field.contentPlaceholder":`Markdown del snippet...`,"settings.snippets.page.hint":`Usa #name en los prompts. Admite alias y bloques prepend/append compatibles con opencode-snippets.`,"settings.snippets.page.toast.nameRequired":`El nombre del snippet es obligatorio`,"settings.snippets.page.toast.contentRequired":`El contenido del snippet es obligatorio`,"settings.snippets.page.toast.saveFailed":`No se pudo guardar el snippet`,"settings.snippets.page.toast.saved":`Snippet guardado`,"settings.magicPrompts.sidebar.title":`Prompts mágicos`,"settings.magicPrompts.sidebar.description":`Selecciona una plantilla de prompt para editar.`,"settings.magicPrompts.sidebar.group.git":`Git`,"settings.magicPrompts.sidebar.group.github":`GitHub`,"settings.magicPrompts.sidebar.group.planning":`Planificación`,"settings.magicPrompts.sidebar.group.session":`Sesión`,"settings.magicPrompts.sidebar.item.gitCommitGenerate":`Generación de commit`,"settings.magicPrompts.sidebar.item.gitPrGenerate":`Generación de PR`,"settings.magicPrompts.sidebar.item.gitConflictResolve":`Resolución de conflicto de merge/rebase`,"settings.magicPrompts.sidebar.item.gitCherrypickConflictResolve":`Resolución de conflicto de cherry-pick`,"settings.magicPrompts.sidebar.item.githubPrReview":`Revisión de PR`,"settings.magicPrompts.sidebar.item.githubIssueReview":`Revisión de issue`,"settings.magicPrompts.sidebar.item.githubPrFailedChecksReview":`Revisión de PR con comprobaciones fallidas`,"settings.magicPrompts.sidebar.item.githubPrCommentsReview":`Revisión de comentarios de PR`,"settings.magicPrompts.sidebar.item.githubSinglePrCommentReview":`Revisión de comentario único de PR`,"settings.magicPrompts.sidebar.item.planTodo":`Planificar Todo`,"settings.magicPrompts.sidebar.item.planImprove":`Mejorar plan`,"settings.magicPrompts.sidebar.item.planImplement":`Implementar plan`,"settings.magicPrompts.sidebar.item.sessionSummary":`Resumen de sesión`,"settings.magicPrompts.sidebar.item.sessionWorkspaceReview":`Revisión del espacio de trabajo`,"settings.magicPrompts.sidebar.item.sessionExplore":`Recorrido del código`,"settings.magicPrompts.sidebar.item.sessionFeaturePlan":`Planificación de funciones`,"settings.magicPrompts.sidebar.item.sessionCraftGoal":`Creación de Goal`,"settings.magicPrompts.page.group.sessionCraftGoal.title":`Creación de Goal`,"settings.magicPrompts.page.group.sessionCraftGoal.description":`Prompts usados por el comando /craft-goal: mensaje visible del usuario + instrucciones ocultas. Convierte una idea o tarea en un Goal claro y verificable mediante un diálogo guiado.`,"settings.magicPrompts.sidebar.item.sessionCatchUp":`Ponerse al día`,"settings.magicPrompts.sidebar.item.sessionDebug":`Depuración`,"settings.magicPrompts.sidebar.item.sessionWeigh":`Comparar enfoques`,"settings.magicPrompts.sidebar.item.sessionFusion":`Fusion`,"settings.remoteInstances.sidebar.title":`Instancias remotas`,"settings.remoteInstances.sidebar.description":`Conéctate a otros servidores de OpenChamber con un enlace de importación o SSH.`,"settings.remoteInstances.sidebar.empty":`Aún no hay instancias remotas. Importa un enlace o añade una conexión SSH.`,"settings.remoteInstances.channel.link":`Enlace`,"settings.remoteInstances.channel.ssh":`SSH`,"settings.remoteInstances.sidebar.total":`Total {count}`,"settings.remoteInstances.sidebar.newSshInstanceName":`Nueva conexión SSH`,"settings.remoteInstances.sidebar.actions.addSshInstance":`Añadir conexión SSH`,"settings.remoteInstances.sidebar.actions.connect":`Conectar`,"settings.remoteInstances.sidebar.actions.disconnect":`Desconectar`,"settings.remoteInstances.sidebar.actions.retry":`Reintentar`,"settings.remoteInstances.sidebar.actions.remove":`Eliminar`,"settings.remoteInstances.sidebar.confirm.localPortInUseRetry":`El puerto local ya está en uso. ¿Elegir un puerto libre aleatorio y reintentar?`,"settings.remoteInstances.sidebar.toast.createFailed":`No se pudo crear la conexión SSH`,"settings.remoteInstances.sidebar.toast.retriedWithRandomPort":`Reintentado con un puerto local aleatorio`,"settings.remoteInstances.sidebar.toast.connectFailed":`No se pudo conectar la instancia`,"settings.remoteInstances.sidebar.toast.disconnectFailed":`No se pudo desconectar la instancia`,"settings.remoteInstances.sidebar.toast.retryFailed":`No se pudo reintentar la conexión`,"settings.remoteInstances.sidebar.toast.removeFailed":`No se pudo eliminar la instancia`,"settings.remoteInstances.direct.sidebarTitle":`Enlaces a servidores`,"settings.remoteInstances.direct.sidebarDescription":`Conecta con un enlace de emparejamiento`,"settings.remoteInstances.direct.title":`Otros servidores de OpenChamber`,"settings.remoteInstances.direct.description":`Servidores a los que esta aplicación puede cambiar. Importa un enlace de conexión de otro servidor.`,"settings.remoteInstances.direct.import.description":`Pega un enlace de conexión de otro servidor de OpenChamber.`,"settings.remoteInstances.direct.import.placeholder":`openchamber://connect?...`,"settings.remoteInstances.direct.import.action":`Importar enlace`,"settings.remoteInstances.direct.error.invalidConnectLink":`Enlace de conexión de OpenChamber no válido.`,"settings.remoteInstances.direct.state.loading":`Cargando servidores...`,"settings.remoteInstances.direct.state.empty":`Todavía no se han importado otros servidores.`,"settings.remoteInstances.clientAuth.title":`Conectarse a este servidor`,"settings.remoteInstances.clientAuth.description":`Crea un enlace o token seguro para que OpenChamber Desktop pueda conectarse a este servidor.`,"settings.remoteInstances.clientAuth.field.labelPlaceholder":`Nombre de la instancia — p. ej. Mac de casa`,"settings.remoteInstances.clientAuth.field.labelHint":`El otro dispositivo mostrará este nombre para este servidor.`,"settings.remoteInstances.clientAuth.actions.create":`Crear token`,"settings.remoteInstances.clientAuth.actions.pair":`Crear enlace`,"settings.remoteInstances.clientAuth.actions.revoke":`Revocar`,"settings.remoteInstances.clientAuth.actions.clearRevoked":`Borrar revocados`,"settings.remoteInstances.clientAuth.qrAlt":`OpenChamber connection QR code`,"settings.remoteInstances.clientAuth.qrEnlarge":`Ampliar código QR`,"settings.remoteInstances.clientAuth.qrScanHint":`Escanéalo con la app de OpenChamber en tu otro dispositivo. Es de un solo uso y caduca.`,"settings.remoteInstances.clientAuth.qrDialogTitle":`Escanear para conectar`,"settings.remoteInstances.clientAuth.actions.addDevice":`Añadir un dispositivo`,"settings.remoteInstances.clientAuth.actions.copied":`Copiado`,"settings.remoteInstances.clientAuth.addDevice.transportLabel":`¿Dónde usarás este dispositivo?`,"settings.remoteInstances.clientAuth.addDevice.subtitle":`Crea un código QR de un solo uso que conecta otro dispositivo a este servidor.`,"settings.remoteInstances.clientAuth.addDevice.transport.local":`Solo este equipo`,"settings.remoteInstances.clientAuth.addDevice.transport.localHint":`Para aplicaciones en esta misma máquina.`,"settings.remoteInstances.clientAuth.addDevice.transport.lan":`Solo red doméstica`,"settings.remoteInstances.clientAuth.addDevice.transport.lanHint":`Se conecta directamente por tu Wi-Fi. No funciona fuera de esta red.`,"settings.remoteInstances.clientAuth.addDevice.transport.relay":`En cualquier lugar`,"settings.remoteInstances.clientAuth.addDevice.transport.relayHint":`Funciona en casa y fuera. Fuera de casa el tráfico pasa por OpenChamber Private Relay, un túnel cifrado de extremo a extremo. Sin configuración.`,"settings.remoteInstances.clientAuth.addDevice.fallback.relay":`Permitir también el relay cifrado fuera de casa`,"settings.remoteInstances.clientAuth.addDevice.fallback.preferLocal":`Preferir la conexión doméstica directa cuando esté disponible`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLabel":`Servidor Relay`,"settings.remoteInstances.clientAuth.addDevice.relayUrlHint":`Usa el Relay oficial de OpenChamber o introduce tu propio endpoint ws:// o wss://. El dispositivo guardará el endpoint incluido en el código QR.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlDeployLink":`Despliega tu propio Relay.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLockedHint":`Este servidor fija el endpoint Relay mediante OPENCHAMBER_RELAY_URL.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlInvalid":`Introduce un endpoint Relay válido que empiece por ws:// o wss://.`,"settings.remoteInstances.clientAuth.addDevice.create":`Crear código QR`,"settings.remoteInstances.clientAuth.addDevice.targetLabel":`Instancia de destino`,"settings.remoteInstances.clientAuth.addDevice.target.local":`Este escritorio`,"settings.remoteInstances.clientAuth.addDevice.target.sshEmpty":`No hay instancias SSH conectadas`,"settings.remoteInstances.clientAuth.addDevice.target.sshNotReady":`Conecta primero la instancia SSH`,"settings.remoteInstances.sidebar.actions.mobileConnect":`Conectar teléfono`,"settings.remoteInstances.sidebar.actions.mobileConnectAria":`Crear QR de emparejamiento del teléfono para {instance}`,"settings.remoteInstances.sidebar.actions.mobileConnectDisabled":`Conecta esta instancia SSH antes de emparejar un teléfono`,"settings.remoteInstances.sidebar.actions.syncConfigDisabled":`Conecta esta instancia para sincronizar su configuración`,"settings.remoteInstances.sidebar.actions.syncConfig":`Sincronizar configuración`,"settings.remoteInstances.clientAuth.addDevice.done":`Listo`,"settings.remoteInstances.clientAuth.addDevice.connectedToast":`Dispositivo conectado.`,"settings.remoteInstances.clientAuth.pairingUrl":`Enlace de conexión`,"settings.remoteInstances.clientAuth.createdToken":`Copia este token ahora. Por seguridad, no se volverá a mostrar.`,"settings.remoteInstances.clientAuth.state.loading":`Cargando tokens...`,"settings.remoteInstances.clientAuth.state.empty":`Todavía no hay dispositivos conectados.`,"settings.remoteInstances.clientAuth.state.revoked":`Revocado`,"settings.remoteInstances.clientAuth.state.thisDevice":`Este dispositivo`,"settings.remoteInstances.clientAuth.state.pending":`Esperando conexión…`,"settings.remoteInstances.clientAuth.state.viaRelay":`Relay`,"settings.remoteInstances.clientAuth.state.connectedDirect":`Conectado · Red local`,"settings.remoteInstances.clientAuth.state.connectedRelay":`Conectado · Relay`,"settings.remoteInstances.clientAuth.lastUsed":`Último uso {date}`,"settings.remoteInstances.clientAuth.neverUsed":`Nunca usado`,"settings.remoteInstances.relay.title":`OpenChamber Relay`,"settings.remoteInstances.relay.autoHint":`Se activa automáticamente al vincular un dispositivo por relay.`,"settings.remoteInstances.relay.description":`Permite que tus otros dispositivos se conecten desde cualquier lugar sin abrir puertos. El tráfico está cifrado de extremo a extremo: el relay no puede leerlo.`,"settings.remoteInstances.relay.enableHint":`No se comparte nada hasta que actives el relay en este servidor.`,"settings.remoteInstances.relay.actions.enable":`Activar Relay`,"settings.remoteInstances.relay.actions.disable":`Desactivar`,"settings.remoteInstances.relay.confirm.disable":`¿Desactivar el relay? Los dispositivos conectados a través de él se desconectarán de inmediato.`,"settings.remoteInstances.relay.state.loading":`Comprobando el estado del relay...`,"settings.remoteInstances.relay.state.disabled":`Desactivado`,"settings.remoteInstances.relay.state.connecting":`Conectando`,"settings.remoteInstances.relay.state.connected":`Conectado`,"settings.remoteInstances.relay.state.reconnecting":`Reconectando`,"settings.remoteInstances.relay.state.error":`Error`,"settings.remoteInstances.relay.status.clientsOne":`{count} dispositivo conectado`,"settings.remoteInstances.relay.status.clientsMany":`{count} dispositivos conectados`,"settings.remoteInstances.relay.pair.title":`Emparejar un dispositivo`,"settings.remoteInstances.relay.pair.labelPlaceholder":`Nombre del dispositivo (opcional)`,"settings.remoteInstances.relay.pair.includeToken":`Incluir token de acceso (emparejamiento con un solo escaneo)`,"settings.remoteInstances.relay.pair.noTokenHint":`Sin token, el dispositivo inicia sesión con la contraseña de la interfaz de este servidor tras conectarse.`,"settings.remoteInstances.relay.pair.generate":`Crear enlace de emparejamiento`,"settings.remoteInstances.relay.pair.requiresConnected":`El emparejamiento estará disponible cuando el relay esté conectado.`,"settings.remoteInstances.relay.pair.linkLabel":`Enlace de emparejamiento`,"settings.remoteInstances.relay.pair.warning":`Este enlace concede acceso a este servidor. No lo compartas.`,"settings.remoteInstances.relay.pair.qrAlt":`Código QR de emparejamiento del relay`,"settings.remoteInstances.relay.pair.showQr":`Mostrar código QR`,"settings.remoteInstances.relay.pair.qrDialogTitle":`Escanear para emparejar`,"settings.remoteInstances.relay.pair.qrDialogDescription":`Escanea este código QR con la app de OpenChamber en tu otro dispositivo.`,"settings.remoteInstances.relay.pair.manageHint":`Gestiona o revoca los dispositivos emparejados en la lista «Conexión a este servidor» de arriba.`,"settings.remoteInstances.relay.toast.enableFailed":`No se pudo activar el relay`,"settings.remoteInstances.relay.toast.disableFailed":`No se pudo desactivar el relay`,"settings.remoteInstances.relay.toast.offerFailed":`No se pudo crear el enlace de emparejamiento`,"settings.remoteInstances.relay.toast.linkCopied":`Enlace de emparejamiento copiado`,"settings.remoteInstances.sidebar.phase.ready":`Listo`,"settings.remoteInstances.sidebar.phase.error":`Error`,"settings.remoteInstances.sidebar.phase.reconnect":`Reconectar`,"settings.remoteInstances.sidebar.phase.installing":`Instalando`,"settings.remoteInstances.sidebar.phase.updating":`Actualizando`,"settings.remoteInstances.sidebar.phase.forwarding":`Redirigiendo`,"settings.remoteInstances.sidebar.phase.starting":`Iniciando`,"settings.remoteInstances.sidebar.phase.connecting":`Conectando`,"settings.remoteInstances.sidebar.phase.idle":`Inactivo`,"settings.remoteInstances.page.section.instance":`Instancia`,"settings.remoteInstances.page.section.instanceDescription":`Choose the SSH command and a display name for this connection.`,"settings.remoteInstances.page.field.mode":`Modo`,"settings.remoteInstances.page.field.modeHint":`Elige si OpenChamber debe iniciar el servidor por ti o conectarse a uno que ya está en marcha.`,"settings.remoteInstances.page.field.modePlaceholder":`Seleccionar modo`,"settings.remoteInstances.page.field.modeManaged":`Iniciarlo por mí`,"settings.remoteInstances.page.field.modeExternal":`Ya está en marcha`,"settings.remoteInstances.page.field.preferredRemotePort":`Puerto remoto preferido`,"settings.remoteInstances.page.field.preferredRemotePortHint":`Port to use on the remote machine. Leave empty to choose one automatically.`,"settings.remoteInstances.page.field.keepServerRunning":`Mantener servidor en ejecución`,"settings.remoteInstances.page.field.keepServerRunningHint":`Keep OpenChamber running on the remote machine after you disconnect.`,"settings.remoteInstances.page.field.bindHost":`Host de enlace`,"settings.remoteInstances.page.field.bindHostHint":`Where the local connection should listen. Use 127.0.0.1 or localhost unless you need LAN access.`,"settings.remoteInstances.page.field.preferredLocalPort":`Puerto local preferido`,"settings.remoteInstances.page.field.preferredLocalPortHint":`Local port to open for this connection. Leave empty to choose one automatically.`,"settings.remoteInstances.page.field.forwardType":`Tipo de redirección`,"settings.remoteInstances.page.field.localListen":`Escucha local`,"settings.remoteInstances.page.field.localTarget":`Destino local`,"settings.remoteInstances.page.field.remoteListen":`Escucha remota`,"settings.remoteInstances.page.field.remoteTarget":`Destino remoto`,"settings.remoteInstances.page.field.localHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.remoteHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.auto":`Automático`,"settings.remoteInstances.page.confirm.bindAllInterfaces":`Vincular a 0.0.0.0 expone los puertos redirigidos a tu red local. ¿Continuar?`,"settings.remoteInstances.page.preview.localSocks5":`(local SOCKS5)`,"settings.remoteInstances.page.preview.local":`(local)`,"settings.remoteInstances.page.preview.remote":`(remoto)`,"settings.remoteInstances.page.toast.openLocalEndpointFailed":`No se pudo abrir la dirección local`,"settings.remoteInstances.page.toast.localUrlCopied":`URL local copiada`,"settings.remoteInstances.page.actions.copyLocalUrl":`Copiar URL local`,"settings.remoteInstances.page.actions.open":`Abrir`,"settings.remoteInstances.page.logsDialog.selectedInstanceFallback":`Instancia seleccionada`,"settings.remoteInstances.page.patternDialog.descriptionWithHost":`{host} requiere un destino concreto.`,"settings.remoteInstances.page.patternDialog.description":`Introduce destino.`,"settings.common.actions.cancel":`Cancelar`,"settings.common.actions.create":`Crear`,"settings.common.actions.delete":`Eliminar`,"settings.common.actions.reset":`Restablecer`,"settings.common.actions.rename":`Cambiar nombre`,"settings.common.actions.duplicate":`Duplicar`,"settings.common.actions.import":`Importar`,"settings.common.actions.copyAll":`Copiar todo`,"settings.common.actions.clear":`Limpiar`,"settings.common.actions.saving":`Guardando...`,"settings.common.actions.saveChanges":`Guardar cambios`,"settings.common.scope.global":`Global`,"settings.common.scope.project":`Proyecto`,"settings.common.field.description":`Descripción`,"settings.common.badge.new":`Nuevo`,"settings.common.badge.modified":`Modificado`,"settings.common.permission.allow":`Permitir`,"settings.common.permission.ask":`Preguntar`,"settings.common.permission.deny":`Denegar`,"settings.common.state.comingSoon":`Próximamente...`,"settings.projects.actions.title":`Acciones`,"settings.projects.actions.description":`Comandos por proyecto mostrados en el encabezado junto al nombre del proyecto.`,"settings.projects.actions.validation.fillNameAndCommand":`Completa el nombre de la acción y el comando antes de guardar.`,"settings.projects.actions.state.loading":`Cargando...`,"settings.projects.actions.state.empty":`No hay acciones configuradas aún.`,"settings.projects.actions.state.untitled":`Acción sin título`,"settings.projects.actions.state.noDesktopSshForwards":`No hay forwards SSH locales habilitados disponibles.`,"settings.projects.actions.field.selectIconAria":`Seleccionar icono`,"settings.projects.actions.field.iconAria":`Icono {icon}`,"settings.projects.actions.field.actionNamePlaceholder":`Nombre de la acción`,"settings.projects.actions.field.command":`Comando`,"settings.projects.actions.field.commandPlaceholder":`p. ej. bun run lint`,"settings.projects.actions.field.autoOpenUrl":`Abrir URL automáticamente`,"settings.projects.actions.field.autoOpenUrlForAria":`Abrir URL automáticamente para {title}`,"settings.projects.actions.field.autoOpenUrlDescription":`Abrir URL desde la salida o la URL personalizada de abajo`,"settings.projects.actions.field.overrideUrlPlaceholder":`URL de reemplazo (opcional)`,"settings.projects.actions.field.overrideUrlTooltip":`Si este campo está lleno, se usa la URL personalizada. Si está vacío, la aplicación abre la mejor URL de la salida.`,"settings.projects.actions.field.desktopSshForward":`Forward SSH de escritorio`,"settings.projects.actions.field.useOutputManualUrl":`Usar URL de salida/manual`,"settings.projects.actions.actions.add":`Añadir acción`,"settings.projects.actions.actions.save":`Guardar acciones`,"settings.projects.actions.toast.saveFailed":`No se pudieron guardar las acciones`,"settings.projects.actions.toast.saved":`Acciones del proyecto guardadas`,"settings.openchamber.about.title":`Acerca de OpenChamber`,"settings.openchamber.about.field.version":`Versión`,"settings.openchamber.about.field.clientVersion":`Cliente`,"settings.openchamber.about.field.webBundle":`Paquete web`,"settings.openchamber.about.field.instanceOpenChamberVersion":`OpenChamber`,"settings.openchamber.about.field.instanceOpenCodeVersion":`OpenCode`,"settings.openchamber.about.field.openCodeVersion":`Versión de OpenCode`,"settings.openchamber.about.state.checking":`Comprobando...`,"settings.openchamber.about.state.upToDate":`Actualizado`,"settings.openchamber.about.state.unknown":`desconocido`,"settings.openchamber.about.state.builtin":`integrado`,"settings.openchamber.about.actions.checkUpdates":`Comprobar actualizaciones`,"settings.openchamber.about.actions.update":`Actualizar`,"settings.openchamber.about.actions.updateToVersion":`Actualizar a {version}`,"settings.openchamber.about.actions.checkForUpdates":`Comprobar actualizaciones`,"settings.openchamber.about.toast.latestVersion":`Ya estás en la última versión`,"settings.openchamber.about.toast.checkFailed":`No se pudo comprobar actualizaciones`,"settings.openchamber.about.diagnostics.label":`Registro de diagnóstico`,"settings.openchamber.about.diagnostics.description":`Exporta los feat de diagnóstico locales para analizar problemas de visualización y sincronización. No incluye cuerpos de mensajes ni tokens.`,"settings.openchamber.about.diagnostics.export":`Exportar registro`,"settings.openchamber.about.diagnostics.exporting":`Exportando…`,"settings.openchamber.about.diagnostics.enable":`Registrar feat de diagnóstico`,"settings.openchamber.about.diagnostics.enableHint":`Disponible en versiones beta. Registra en este dispositivo el ciclo de sincronización y visualización de la sesión, sin el cuerpo del mensaje.`,"settings.openchamber.about.diagnostics.toast.exported":`Registro de diagnóstico exportado`,"settings.openchamber.about.diagnostics.toast.failed":`No se pudo exportar el registro de diagnóstico`,"settings.openchamber.about.diagnostics.toast.empty":`Registro de diagnóstico exportado. Aún no se registró ningún evento.`,"settings.agents.sidebar.title":`Agentes`,"settings.agents.sidebar.total":`Total {count}`,"settings.agents.sidebar.empty.title":`No hay agentes configurados`,"settings.agents.sidebar.empty.description":`Usa el botón + arriba para crear uno`,"settings.agents.sidebar.section.builtIn":`Agentes incorporados`,"settings.agents.sidebar.section.custom":`Agentes personalizados`,"settings.agents.sidebar.badge.system":`sistema`,"settings.agents.sidebar.dialog.deleteTitle":`Eliminar agente`,"settings.agents.sidebar.dialog.resetTitle":`Restablecer agente`,"settings.agents.sidebar.dialog.deleteDescription":`¿Seguro que quieres eliminar el agente "{name}"?`,"settings.agents.sidebar.dialog.resetDescription":`¿Seguro que quieres restablecer el agente "{name}" a su configuración predeterminada?`,"settings.agents.sidebar.renameDialog.title":`Cambiar nombre del agente`,"settings.agents.sidebar.renameDialog.description":`Introduce un nuevo nombre para el agente "@{name}"`,"settings.agents.sidebar.renameDialog.placeholder":`Nuevo nombre del agente...`,"settings.agents.sidebar.toast.builtInCannotDelete":`Los agentes incorporados no pueden eliminarse`,"settings.agents.sidebar.toast.agentDeleted":`Agente "{name}" eliminado correctamente`,"settings.agents.sidebar.toast.agentReset":`Agente "{name}" restablecido a la configuración predeterminada`,"settings.agents.sidebar.toast.deleteFailed":`No se pudo eliminar el agente`,"settings.agents.sidebar.toast.definitionNotFound":`No se encontró la definición del agente. No se cambió nada.`,"settings.agents.sidebar.toast.resetFailed":`No se pudo restablecer el agente`,"settings.agents.sidebar.toast.agentNameRequired":`Se requiere el nombre del agente`,"settings.agents.sidebar.toast.agentExists":`Ya existe un agente con este nombre`,"settings.agents.sidebar.toast.removeOldAfterRenameFailed":`No se pudo eliminar el antiguo agente después del cambio de nombre`,"settings.agents.sidebar.toast.renameFailed":`No se pudo cambiar el nombre del agente`,"settings.agents.sidebar.toast.agentRenamed":`Agente renombrado a "{name}"`,"settings.agents.page.toast.permissionNameRequired":`Se requiere el nombre del permiso`,"settings.agents.page.toast.created":`Agente creado correctamente`,"settings.agents.page.toast.updated":`Agente actualizado correctamente`,"settings.agents.page.toast.createFailed":`No se pudo crear el agente`,"settings.agents.page.toast.updateFailed":`No se pudo actualizar el agente`,"settings.agents.page.toast.saveUnexpectedError":`Ocurrió un error al guardar`,"settings.agents.page.toast.savedManualRestart":`Guardado en disco. Reinicia tu servidor OpenCode conectado para aplicar los cambios.`,"settings.agents.page.empty.title":`Selecciona un agente desde la barra lateral`,"settings.agents.page.empty.description":`o crea uno nuevo`,"settings.agents.page.title.new":`Nuevo agente`,"settings.agents.page.subtitle.new":`Configura una nueva asistente`,"settings.agents.page.subtitle.edit":`Editar configuración del agente`,"settings.agents.page.section.identityRole":`Identidad y rol`,"settings.agents.page.section.modelParameters":`Modelo y parámetros`,"settings.agents.page.section.systemPrompt":`Prompt del sistema`,"settings.agents.page.section.toolPermissions":`Permisos de herramientas`,"settings.agents.page.field.agentName":`Nombre del agente`,"settings.agents.page.field.agentNamePlaceholder":`nombre-agente`,"settings.agents.page.field.scopePlaceholder":`Ámbito`,"settings.agents.page.field.descriptionPlaceholder":`¿Qué hace este agente?`,"settings.agents.page.field.mode":`Modo`,"settings.agents.page.field.modeTooltip":`Visibilidad principal vs subagente`,"settings.agents.page.field.overrideModel":`Sobrescribir modelo`,"settings.agents.page.field.variant":`Variante de pensamiento`,"settings.agents.page.field.variantTooltip":`Opcional. Si el modelo admite razonamiento, la variante controla la profundidad del razonamiento.`,"settings.agents.page.field.variantHint":`Específico del modelo (p. ej. variante de Anthropic)`,"settings.agents.page.field.variantPlaceholder":`p. ej. high, max, low, none`,"settings.agents.page.field.temperature":`Temperatura`,"settings.agents.page.field.temperatureTooltip":`Controla la aleatoriedad. Mayor = más creativo, menor = más enfocado.`,"settings.agents.page.field.temperatureRange":`0.0 a 2.0`,"settings.agents.page.field.clearTemperatureAria":`Limpiar sobrescritura de temperatura`,"settings.agents.page.field.topP":`Top P`,"settings.agents.page.field.topPTooltip":`Diversidad de muestreo del núcleo. Más bajo = solo tokens más probables.`,"settings.agents.page.field.topPRange":`0.0 a 1.0`,"settings.agents.page.field.clearTopPAria":`Limpiar sobrescritura de top p`,"settings.agents.page.field.systemPromptPlaceholder":`Eres un asistente experto en programación...`,"settings.agents.page.mode.primary":`Primario`,"settings.agents.page.mode.subagent":`Subagente`,"settings.agents.page.mode.all":`Todos`,"settings.agents.page.permissions.defaultLabel":`Predeterminado`,"settings.agents.page.permissions.hideEditor":`Ocultar editor`,"settings.agents.page.permissions.advancedEditor":`Editor avanzado`,"settings.agents.page.permissions.globalSummary":`Global: {summary}`,"settings.agents.page.permissions.rulesSummary":`Reglas: {summary}`,"settings.agents.page.permissions.globalDefault":`Predeterminado global`,"settings.agents.page.permissions.pattern":`Patrón`,"settings.agents.page.permissions.addCustomRule":`Añadir regla personalizada`,"settings.agents.page.permissions.permissionPlaceholder":`Permiso...`,"settings.agents.page.permissions.patternPlaceholder":`Patrón (ej. *)`,"settings.page.behavior.title":`Comportamiento`,"settings.behavior.page.title":`Comportamiento`,"settings.behavior.page.warning.title":`Las reglas globales se combinan con las reglas del proyecto`,"settings.behavior.page.warning.description":`Los cambios realizados aquí actualizan {path}. OpenCode también incluye cualquier AGENTS.md a nivel de proyecto cuando existe.`,"settings.behavior.page.section.systemPrompt":`AGENTS.md global`,"settings.behavior.page.field.systemPromptPlaceholder":`Eres un asistente de IA útil...
|
|
2
2
|
|
|
3
3
|
Usa este espacio para definir reglas absolutas sobre cómo la IA debe comportarse en todas las sesiones y proveedores.`,"settings.behavior.page.section.responseStyle":`Estilo de respuesta`,"settings.behavior.page.responseStyle.tooltip":`Cuando está habilitado, estas instrucciones guían cómo responde el asistente en cada conversación nueva. Se envían con tu primer mensaje y no cambian tus reglas globales de AGENTS.md.`,"settings.behavior.page.responseStyle.enableAria":`Habilitar instrucciones de estilo de respuesta`,"settings.behavior.page.responseStyle.enable":`Agregar instrucciones de estilo de respuesta a conversaciones nuevas`,"settings.behavior.page.responseStyle.preset":`Preset`,"settings.behavior.page.responseStyle.option.concise":`Conciso`,"settings.behavior.page.responseStyle.option.detailed":`Detallado`,"settings.behavior.page.responseStyle.option.mentor":`Mentor`,"settings.behavior.page.responseStyle.option.pushback":`Réplica`,"settings.behavior.page.responseStyle.option.noFiller":`Sin relleno`,"settings.behavior.page.responseStyle.option.matchEnergy":`Igualar mi tono`,"settings.behavior.page.responseStyle.option.warmPeer":`Colega cercano`,"settings.behavior.page.responseStyle.option.custom":`Personalizado`,"settings.behavior.page.responseStyle.customPlaceholder":`Escribe la instrucción que se agregará al primer mensaje...`,"settings.behavior.page.toast.saved":`Comportamiento guardado correctamente`,"settings.behavior.page.toast.saveFailed":`Error al guardar el comportamiento`,"settings.commands.sidebar.title":`Comandos`,"settings.commands.sidebar.total":`Total {count}`,"settings.commands.sidebar.empty.title":`No hay comandos configurados`,"settings.commands.sidebar.empty.description":`Usa el botón + arriba para crear uno`,"settings.commands.sidebar.section.builtIn":`Comandos incorporados`,"settings.commands.sidebar.section.custom":`Comandos personalizados`,"settings.commands.sidebar.dialog.deleteTitle":`Eliminar comando`,"settings.commands.sidebar.dialog.resetTitle":`Restablecer comando`,"settings.commands.sidebar.dialog.deleteDescription":`¿Estás seguro de que quieres eliminar el comando "{name}"?`,"settings.commands.sidebar.dialog.resetDescription":`¿Estás seguro de que quieres restablecer el comando "{name}" a su configuración predeterminada?`,"settings.commands.sidebar.renameDialog.title":`Cambiar nombre del comando`,"settings.commands.sidebar.renameDialog.description":`Introduce un nuevo nombre para el comando "/{name}"`,"settings.commands.sidebar.renameDialog.placeholder":`Nuevo nombre del comando...`,"settings.commands.sidebar.toast.builtInCannotDelete":`Los comandos incorporados no pueden eliminarse`,"settings.commands.sidebar.toast.commandDeleted":`Comando "{name}" eliminado`,"settings.commands.sidebar.toast.commandReset":`Comando "{name}" restablecido al valor predeterminado`,"settings.commands.sidebar.toast.deleteFailed":`No se pudo eliminar el comando`,"settings.commands.sidebar.toast.resetFailed":`No se pudo restablecer el comando`,"settings.commands.sidebar.toast.commandNameRequired":`Se requiere nombre del comando`,"settings.commands.sidebar.toast.commandExists":`Ya existe un comando con este nombre`,"settings.commands.sidebar.toast.removeOldAfterRenameFailed":`No se pudo eliminar el comando antiguo después del cambio de nombre`,"settings.commands.sidebar.toast.renameFailed":`No se pudo cambiar el nombre del comando`,"settings.commands.page.toast.templateRequired":`Se requiere plantilla del comando`,"settings.commands.page.toast.created":`Comando creado`,"settings.commands.page.toast.updated":`Comando actualizado`,"settings.commands.page.toast.createFailed":`No se pudo crear el comando`,"settings.commands.page.toast.updateFailed":`No se pudo actualizar el comando`,"settings.commands.page.toast.saveUnexpectedError":`Ocurrió un error al guardar`,"settings.commands.page.empty.title":`Selecciona un comando de la barra lateral`,"settings.commands.page.empty.description":`o crea uno nuevo`,"settings.commands.page.title.new":`Nuevo comando`,"settings.commands.page.subtitle.new":`Configura un nuevo comando slash`,"settings.commands.page.subtitle.edit":`Editar configuración del comando`,"settings.commands.page.section.identity":`Identidad`,"settings.commands.page.section.executionContext":`Contexto de ejecución`,"settings.commands.page.section.template":`Plantilla del comando`,"settings.commands.page.field.commandName":`Nombre del comando`,"settings.commands.page.field.commandNamePlaceholder":`nombre-del-comando`,"settings.commands.page.field.descriptionPlaceholder":`¿Qué hace este comando?`,"settings.commands.page.field.overrideAgent":`Sobrescribir agente`,"settings.commands.page.field.templatePlaceholder":`Tu plantilla de comando aquí...
|
|
4
4
|
|