@mangostudio/cli-linux-x64 0.1.0-canary.e0fbdae → 0.1.0-canary.ea530eb

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.
@@ -160,16 +160,15 @@ async function executeViaApi(name, args, stdinMux) {
160
160
  : typeof response.result === 'string'
161
161
  ? response.result
162
162
  : 'Tool execution failed.';
163
- writeEvent({ type: 'tool_result', id, name, result: message, isError: true });
164
163
  return {
165
164
  content: [{ type: 'text', text: message }],
166
165
  isError: true,
167
166
  };
168
167
  }
169
168
 
170
- const result = response.result === undefined ? '' : response.result;
171
- writeEvent({ type: 'tool_result', id, name, result, isError: false });
172
- return result;
169
+ if (typeof response.result === 'string') return response.result;
170
+ if (response.result !== undefined) return response.result;
171
+ return '';
173
172
  }
174
173
 
175
174
  function extractAssistantText(event) {
package/mangostudio CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mangostudio/cli-linux-x64",
3
- "version": "0.1.0-canary.e0fbdae",
3
+ "version": "0.1.0-canary.ea530eb",
4
4
  "description": "MangoStudio prebuilt binary for linux-x64.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/shiki-B3FV0nsK.js","assets/index-BLb-08lM.js","assets/rolldown-runtime-BYbx6iT9.js","assets/vendor-TU_R2f75.js","assets/ui-BEql6gkw.js","assets/vendor-deps-C4ULb-aw.js","assets/index-BYDs1qLs.css","assets/syntax-core-BoMshe5A.js"])))=>i.map(i=>d[i]);
2
- import{a as e}from"./rolldown-runtime-BYbx6iT9.js";import{i as t,r as n}from"./ui-BEql6gkw.js";import{i as r,n as i,r as a}from"./index-BLb-08lM.js";import{n as o,t as s}from"./markdown-parser-B0W8Yv4o.js";var c=e(t(),1),l=n(),u=`<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>`,d=`<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>`;function f({content:e,className:t,copyCodeLabel:n,codeCopiedLabel:i}){let{t:o}=r(),s=(0,c.useRef)(null),{resolvedCodeTheme:u}=a(),[d,f]=(0,c.useState)(null),[_,v]=(0,c.useState)(0),y=n??o.chat.copyCode,b=i??o.chat.codeCopied,x=(0,c.useMemo)(()=>k(e).join(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/shiki-CXvr9CXa.js","assets/index-DPVVPEXE.js","assets/rolldown-runtime-BYbx6iT9.js","assets/vendor-TU_R2f75.js","assets/ui-BEql6gkw.js","assets/vendor-deps-C4ULb-aw.js","assets/index-BYDs1qLs.css","assets/syntax-core-BoMshe5A.js"])))=>i.map(i=>d[i]);
2
+ import{a as e}from"./rolldown-runtime-BYbx6iT9.js";import{i as t,r as n}from"./ui-BEql6gkw.js";import{i as r,n as i,r as a}from"./index-DPVVPEXE.js";import{n as o,t as s}from"./markdown-parser-B0W8Yv4o.js";var c=e(t(),1),l=n(),u=`<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>`,d=`<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>`;function f({content:e,className:t,copyCodeLabel:n,codeCopiedLabel:i}){let{t:o}=r(),s=(0,c.useRef)(null),{resolvedCodeTheme:u}=a(),[d,f]=(0,c.useState)(null),[_,v]=(0,c.useState)(0),y=n??o.chat.copyCode,b=i??o.chat.codeCopied,x=(0,c.useMemo)(()=>k(e).join(`
3
3
  `),[e]);p((0,c.useMemo)(()=>x?x.split(`
4
- `):[],[x]),f,v),m(s,y,b);let S=h(e,(0,c.useMemo)(()=>g(u,y,d),[u,y,d,_]));return(0,l.jsx)(`div`,{ref:s,className:`markdown-content ${t??``}`,dangerouslySetInnerHTML:{__html:S}})}function p(e,t,n){(0,c.useEffect)(()=>{if(e.length===0)return;let r=!1;return A(e).then(e=>{r||(t(e),n(e=>e+1))}),()=>{r=!0}},[e,t,n])}function m(e,t,n){(0,c.useEffect)(()=>{let r=e.current;if(!r)return;let i=new Set,a=j(i,t,n);return r.addEventListener(`click`,a),()=>{r.removeEventListener(`click`,a);for(let e of i)clearTimeout(e)}},[e,t,n])}function h(e,t){return(0,c.useMemo)(()=>D(t,e),[e,t])}function g(e,t,n){return new s({gfm:!0,breaks:!0,renderer:_(e,t,n)})}function _(e,t,n){let r=new o;return r.link=v,r.image=y,r.html=e=>z(`text`in e?e.text:``),r.code=r=>w(r.text,r.lang,e,t,n),r}function v({href:e,title:t,tokens:n}){let r=n?.map(e=>`text`in e?e.text:e.raw).join(``)??``,i=C(e),a=t?` title="${z(t)}"`:``;return`<a href="${z(i)}" target="_blank" rel="noopener noreferrer"${a}>${r}</a>`}function y({href:e,title:t,text:n}){let r=C(e),i=t?` title="${z(t)}"`:``,a=n||r;return`<a href="${z(r)}" target="_blank" rel="noopener noreferrer" class="markdown-image-link"${i}>${z(a)}</a>`}var b=new Set([`http:`,`https:`,`mailto:`]),x=`#`,S=`https://markdown.invalid/`;function C(e){if(!e)return x;let t;try{t=new URL(e,S).protocol}catch{return x}return b.has(t)?e:x}function w(e,t,n,r,i){let a=t??``,o=a?i?.highlightCode(e,a,n):null;return o?T(o,a,r):E(e,a,r)}function T(e,t,n){return e.replace(`<pre `,`<pre data-lang="${z(t)}" `).replace(`</pre>`,`${R(n)}</pre>`)}function E(e,t,n){let r=t?` class="language-${z(t)}"`:``;return`<pre${t?` data-lang="${z(t)}"`:``}><code${r}>${z(e)}</code>${R(n)}</pre>`}function D(e,t){return t?e.parse(t,{async:!1}):``}var O=new s({gfm:!0,breaks:!0});function k(e){if(!e)return[];let t=new Set;return O.walkTokens(O.lexer(e),e=>{e.type===`code`&&`lang`in e&&e.lang&&t.add(e.lang)}),[...t].sort()}async function A(e){let t=await i(()=>import(`./shiki-B3FV0nsK.js`),__vite__mapDeps([0,1,2,3,4,5,6,7]));return await t.preloadCodeLanguages(e),t}function j(e,t,n){return r=>{M(r,e,t,n)}}async function M(e,t,n,r){let i=e.target.closest(`.copy-code-btn`);if(!i)return;let a=N(i);a!==null&&await P(i,a,t,n,r)}function N(e){let t=e.closest(`pre`);return t?t.querySelector(`code`)?.textContent??t.textContent??``:null}async function P(e,t,n,r,i){try{await navigator.clipboard.writeText(t),F(e,n,r,i)}catch{}}function F(e,t,n,r){e.innerHTML=d,e.setAttribute(`aria-label`,r),e.classList.add(`copy-code-btn--copied`),I(e,t,n)}function I(e,t,n){let r=setTimeout(()=>{t.delete(r),L(e,n)},2e3);t.add(r)}function L(e,t){e.innerHTML=u,e.setAttribute(`aria-label`,t),e.classList.remove(`copy-code-btn--copied`)}function R(e){return`<button class="copy-code-btn" type="button" aria-label="${z(e)}">${u}</button>`}function z(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`).replaceAll(`'`,`&#39;`)}export{f as MarkdownContentRenderer};
4
+ `):[],[x]),f,v),m(s,y,b);let S=h(e,(0,c.useMemo)(()=>g(u,y,d),[u,y,d,_]));return(0,l.jsx)(`div`,{ref:s,className:`markdown-content ${t??``}`,dangerouslySetInnerHTML:{__html:S}})}function p(e,t,n){(0,c.useEffect)(()=>{if(e.length===0)return;let r=!1;return A(e).then(e=>{r||(t(e),n(e=>e+1))}),()=>{r=!0}},[e,t,n])}function m(e,t,n){(0,c.useEffect)(()=>{let r=e.current;if(!r)return;let i=new Set,a=j(i,t,n);return r.addEventListener(`click`,a),()=>{r.removeEventListener(`click`,a);for(let e of i)clearTimeout(e)}},[e,t,n])}function h(e,t){return(0,c.useMemo)(()=>D(t,e),[e,t])}function g(e,t,n){return new s({gfm:!0,breaks:!0,renderer:_(e,t,n)})}function _(e,t,n){let r=new o;return r.link=v,r.image=y,r.html=e=>z(`text`in e?e.text:``),r.code=r=>w(r.text,r.lang,e,t,n),r}function v({href:e,title:t,tokens:n}){let r=n?.map(e=>`text`in e?e.text:e.raw).join(``)??``,i=C(e),a=t?` title="${z(t)}"`:``;return`<a href="${z(i)}" target="_blank" rel="noopener noreferrer"${a}>${r}</a>`}function y({href:e,title:t,text:n}){let r=C(e),i=t?` title="${z(t)}"`:``,a=n||r;return`<a href="${z(r)}" target="_blank" rel="noopener noreferrer" class="markdown-image-link"${i}>${z(a)}</a>`}var b=new Set([`http:`,`https:`,`mailto:`]),x=`#`,S=`https://markdown.invalid/`;function C(e){if(!e)return x;let t;try{t=new URL(e,S).protocol}catch{return x}return b.has(t)?e:x}function w(e,t,n,r,i){let a=t??``,o=a?i?.highlightCode(e,a,n):null;return o?T(o,a,r):E(e,a,r)}function T(e,t,n){return e.replace(`<pre `,`<pre data-lang="${z(t)}" `).replace(`</pre>`,`${R(n)}</pre>`)}function E(e,t,n){let r=t?` class="language-${z(t)}"`:``;return`<pre${t?` data-lang="${z(t)}"`:``}><code${r}>${z(e)}</code>${R(n)}</pre>`}function D(e,t){return t?e.parse(t,{async:!1}):``}var O=new s({gfm:!0,breaks:!0});function k(e){if(!e)return[];let t=new Set;return O.walkTokens(O.lexer(e),e=>{e.type===`code`&&`lang`in e&&e.lang&&t.add(e.lang)}),[...t].sort()}async function A(e){let t=await i(()=>import(`./shiki-CXvr9CXa.js`),__vite__mapDeps([0,1,2,3,4,5,6,7]));return await t.preloadCodeLanguages(e),t}function j(e,t,n){return r=>{M(r,e,t,n)}}async function M(e,t,n,r){let i=e.target.closest(`.copy-code-btn`);if(!i)return;let a=N(i);a!==null&&await P(i,a,t,n,r)}function N(e){let t=e.closest(`pre`);return t?t.querySelector(`code`)?.textContent??t.textContent??``:null}async function P(e,t,n,r,i){try{await navigator.clipboard.writeText(t),F(e,n,r,i)}catch{}}function F(e,t,n,r){e.innerHTML=d,e.setAttribute(`aria-label`,r),e.classList.add(`copy-code-btn--copied`),I(e,t,n)}function I(e,t,n){let r=setTimeout(()=>{t.delete(r),L(e,n)},2e3);t.add(r)}function L(e,t){e.innerHTML=u,e.setAttribute(`aria-label`,t),e.classList.remove(`copy-code-btn--copied`)}function R(e){return`<button class="copy-code-btn" type="button" aria-label="${z(e)}">${u}</button>`}function z(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`).replaceAll(`'`,`&#39;`)}export{f as MarkdownContentRenderer};
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MarkdownContentRenderer-DwrywcVv.js","assets/rolldown-runtime-BYbx6iT9.js","assets/ui-BEql6gkw.js","assets/markdown-parser-B0W8Yv4o.js"])))=>i.map(i=>d[i]);
2
- import{a as e}from"./rolldown-runtime-BYbx6iT9.js";import{i as t,n,r,t as i}from"./ui-BEql6gkw.js";import{$ as a,A as o,At as s,B as c,C as l,D as u,Dt as d,E as f,Et as p,F as m,Ft as h,G as g,H as _,I as v,It as y,J as b,K as x,L as S,Lt as C,M as w,Mt as T,N as ee,Nt as te,O as ne,Ot as E,P as re,Pt as ie,Q as ae,R as oe,Rt as se,S as ce,T as le,U as ue,V as de,W as fe,X as pe,Y as me,Z as he,_ as ge,a as _e,at as D,b as ve,c as ye,ct as O,d as be,et as xe,f as Se,g as Ce,h as we,i as Te,it as Ee,j as De,jt as Oe,k as ke,kt as Ae,l as je,lt as Me,m as Ne,n as Pe,nt as Fe,o as Ie,ot as Le,p as Re,q as ze,r as Be,rt as Ve,s as He,st as k,t as Ue,tt as We,u as A,ut as j,v as Ge,w as Ke,x as qe,y as Je,z as Ye}from"./vendor-TU_R2f75.js";import{a as Xe,i as Ze,n as M,o as Qe,r as $e,t as et}from"./vendor-deps-C4ULb-aw.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var N=e(t(),1),tt=d();function nt(){return typeof window<`u`&&window.location?.origin?window.location.origin:`http://localhost:3001`}var P=p({baseURL:nt(),basePath:`/api/auth`}),rt=null;function it(e){rt=e}function at(){rt?.()}var ot=new Qe({defaultOptions:{queries:{retry:1,refetchOnWindowFocus:!1,refetchOnReconnect:!0,staleTime:1e3*30}}}),F=r(),st=(0,N.createContext)(null);function ct({children:e}){let[t,n]=(0,N.useState)([]),r=(0,N.useCallback)((e,t=`info`)=>{let r=crypto.randomUUID();n(n=>[...n,{id:r,message:e,type:t}]),setTimeout(()=>{n(e=>e.filter(e=>e.id!==r))},4e3)},[]),i=(0,N.useCallback)(e=>{n(t=>t.filter(t=>t.id!==e))},[]),a={success:`border-success/30 text-success`,error:`border-error/30 text-error`,info:`border-outline-variant/30 text-on-surface`};return(0,F.jsxs)(st,{value:{toast:r},children:[e,(0,F.jsx)(`div`,{className:`fixed bottom-4 right-4 z-50 flex flex-col gap-2 pointer-events-none`,children:t.map(e=>(0,F.jsxs)(`div`,{className:`glass-panel pointer-events-auto flex items-center gap-3 px-4 py-3 rounded-xl border text-sm max-w-sm ${a[e.type]}`,children:[(0,F.jsx)(`span`,{className:`flex-1`,children:e.message}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>i(e.id),className:`shrink-0 opacity-50 hover:opacity-100 transition-opacity cursor-pointer`,children:(0,F.jsx)(Be,{size:14})})]},e.id))})]})}function lt(){let e=(0,N.use)(st);if(!e)throw Error(`useToast deve ser usado dentro de ToastProvider`);return e}var I={auth:{loginTitle:`Mango Studio`,signupTitle:`Create Account`,emailLabel:`Email`,emailPlaceholder:`you@email.com`,passwordLabel:`Password`,passwordPlaceholder:`••••••••`,signupPasswordLabel:`Password (8 characters minimum)`,nameLabel:`Name`,namePlaceholder:`Your name`,loginButton:`Sign In`,loginLoading:`Signing in...`,signupButton:`Create Account`,signupLoading:`Creating...`,loginLink:`Sign in`,signupLink:`Create account`,noAccount:`Don't have an account?`,hasAccount:`Already have an account?`,loginError:`Login failed`,signupError:`Account creation failed`,logoutButton:`Sign Out`,logoutLoading:`Signing out...`,logoutError:`Logout failed. Please try again.`},chat:{newChat:`New Chat`,empty:`Start a conversation`,deleted:`Chat deleted`,editTitle:`Edit title`,deleteTitle:`Delete chat`,sectionLabel:`Chats`,stopGenerating:`Stop`,streaming:`Generating...`,input:{modeChat:`Chat`,modeAgent:`Agent`,modeImage:`Create Image`,send:`Send`,generate:`Generate`,stop:`Stop`,placeholder:`Ask the AI model anything...`,imagePlaceholder:`Describe your image...`,addReferenceImage:`Add reference image`,createImages:`Create images`,createImagesHint:`Hint to the model to use the image generation tool`,selectAgent:`Select agent`,agentsLoading:`Loading agents...`},feed:{emptyTitle:`Start a conversation or create an image`,emptySubtitle:`Switch to Create Image mode to generate art`,generatingImage:`Generating image...`,statusGenerating:`Generating`,statusThinking:`Thinking`,statusGenerated:`Generated`,statusReplied:`Replied`,modelFallback:`AI model`,modelStatus:`{status} with: {model}`,download:`Download`,saveToGallery:`Save to Gallery`,regenerate:`Regenerate`,imageUnavailable:`Image no longer available`,imageUnavailableHint:`The image was deleted, moved, or is not accessible yet.`,generatedImageAlt:`Generated image`,imageGenerationFailed:`Image generation failed`,styleParams:`Style Parameters`,thoughtFor:`Thought for {time}`,respondedIn:`Responded in {time}`,noResponse:`No response`,neuralDiffusionPath:`Using Neural Diffusion Path.`,createImageBadge:`Create Image`,subagentTrace:`Subagent trace`,subagentPendingName:`Subagent`,subagentStatusCompleted:`Completed`,subagentStatusFailed:`Failed`,subagentStatusAborted:`Aborted`,subagentStatusTimeout:`Timed out`,subagentTools:`{count} tools`,subagentNoTools:`No tools`,subagentLastMessage:`Last message`,subagentMessages:`Messages`,subagentToolCalls:`Tool calls`,subagentLifecycle:`Lifecycle`,subagentLifecycleDelegationStarted:`Delegation started`,subagentLifecycleDelegationCompleted:`Delegation completed`,subagentLifecycleDelegationFailed:`Delegation failed`,subagentLifecycleAttempt:`Attempt {attempt}`,subagentLifecycleRecovered:`Recovered response`,subagentLifecycleTimeout:`Timed out`,subagentLifecycleFallback:`Fallback response created`},context:{label:`Context`,tokens:`~{used} / {limit} tokens`,modeStateful:`Stateful`,modeReplay:`Replay`,modeCompacted:`Compacted`,modeDegraded:`Degraded`,warning:`This conversation is approaching the model context limit.`,danger:`MangoStudio may need to compact or leave stateful mode.`,critical:`This conversation can no longer remain stateful on the current provider.`,keepHistory:`Original messages stay in chat history by default.`,compactAction:`Compact and continue`,newChatAction:`Start summarized chat`,continueAction:`Continue anyway`,compactPending:`Compacting...`,newChatPending:`Starting chat...`,compactedSuccess:`Chat compacted`,summarizedChatSuccess:`Summarized chat started`,compactFailed:`Failed to compact chat`,summarizedChatFailed:`Failed to start summarized chat`},fallback:{toReplay:`Stateful continuation is no longer available. Continuing with transcript replay.`,generic:`Conversation mode changed from {from} to {to}.`},continuation:{title:{providerChanged:`{fromProvider} {fromMode} state cannot be reused by {provider}. Replayed transcript and started {provider} {toMode} continuation.`,modelChanged:`Model changed to {model}. Replayed transcript on {provider} {toMode}.`,systemPromptChanged:`System prompt changed. Replayed transcript on {provider} {toMode}.`,toolsetChanged:`Toolset changed. Replayed transcript on {provider} {toMode}.`,agentChanged:`Agent changed. Replayed transcript on {provider} {toMode}.`,agentRuntimeChanged:`Agent settings changed. Replayed transcript on {provider} {toMode}.`,cursorExpired:`{provider} {fromMode} cursor expired. Falling back to transcript replay.`,cursorInvalid:`{provider} {fromMode} cursor was invalidated. Falling back to transcript replay.`,toolResultCursorLoss:`{provider} {fromMode} cursor was lost during tool execution. Response may be incomplete.`,envelopeMalformed:`Stored continuation state was unreadable. Restarting with transcript replay.`},recovered:`(recovered)`,notRecovered:`(not recovered)`},cursorLost:`Cursor lost — fallback to {detail}`,toolLoopExhausted:`Tool loop limit reached`,genericFailure:`Generation failed`,copyCode:`Copy code`,codeCopied:`Copied!`,copyMessage:`Copy message`,messageCopied:`Message copied!`,scrollToBottom:`Scroll to bottom`,emptyGreeting:`Hello, {name}!`,emptySubtitle:`How can I help you today?`,suggestion1:`Explain a complex concept simply`,suggestion2:`Write a Python script to...`,suggestion3:`Help me debug a problem`,suggestion4:`Create an image`,systemEvents:{chatCompacted:`Context compacted into a summary`,summaryHandoff:`This chat started from a summarized handoff`,cursorInternalToolCall:`Cursor used {tool}`},titleGenerationFailed:`Failed to generate chat title`},studio:{title:`Studio`,empty:`Image creation workspace — coming soon.`},gallery:{title:`Gallery`,empty:`Your creations will appear here.`,download:`Download Full Image`,view:`View`},settings:{title:`Settings`,tabs:{general:`General`,connectors:`Connectors`,providers:`Providers`,appearance:`Appearance`,context:`Context`,agents:`Agents`,prompts:`Prompts`,tools:`Tools`,metrics:`Metrics`,logs:`Logs`},context:{title:`Context`,description:`Control when MangoStudio warns, compacts, or starts a summarized handoff.`,keepHistory:`Compaction keeps the original chat transcript unless you clean it up later.`,behaviorLabel:`Compaction behavior`,behaviorDescription:`Choose what happens when a chat reaches your warning threshold.`,behaviorOptions:{ask:`Ask every time`,autoCompact:`Auto compact current chat`,newChat:`Continue in summarized chat`,off:`Turn prompts off`},providerCompactionLabel:`Allow provider-side compaction`,providerCompactionDescription:`When supported, let the provider compact cursor-based state near your warning threshold.`,warningThresholdLabel:`Warning threshold`,warningThresholdDescription:`Show compaction choices when context usage reaches this value.`,dangerThresholdLabel:`Danger threshold`,dangerThresholdDescription:`Escalate the warning tone before the hard stop threshold.`,hardStopThresholdLabel:`Hard stop threshold`,hardStopThresholdDescription:`Treat context pressure as critical at or above this value.`,summaryModelLabel:`Preferred summary model`,summaryModelDescription:`Use the current chat model or force a specific text model for summaries.`,summaryModelCurrent:`Use current chat model`,thresholdHint:`{value}% of context`},prompts:{defaultPromptsLabel:`Default Prompts`,ruleFilesLabel:`Rule Files`,customRulesLabel:`Custom Rules`,customRulesDescription:`Add paths to custom .md files to be included in generation requests.`,textSystemPromptLabel:`Default Text System Prompt`,textSystemPromptPlaceholder:`e.g. You are a helpful creative partner. Be concise and insightful...`,imageSystemPromptLabel:`Default Image System Prompt`,imageSystemPromptPlaceholder:`e.g. Always generate images in a cinematic style with dramatic lighting...`,agentsMdLabel:`AGENTS.md`,agentsMdDescription:`Repository rules defined in the AGENTS.md file.`,claudeMdLabel:`CLAUDE.md`,claudeMdDescription:`Global instructions defined in the CLAUDE.md file.`,enabledLabel:`Enabled`,injectionRoleLabel:`Injection Role`,injectionRoleSystem:`Send as System Prompt`,injectionRoleUser:`Send as User Prompt`,frequencyLabel:`Frequency`,frequencyFirstTurn:`Send only in first prompt`,frequencyFirstTurnHint:`Recommended`,frequencyEveryTurn:`Send every time`,addRule:`Add Rule`,removeRule:`Remove`,rulePathLabel:`Path`,rulePathPlaceholder:`e.g. ~/my-projects/rules.md`},agents:{title:`Agents`,description:`Configure built-in and Markdown agents for focused workflows.`,create:`Create Agent`,createTitle:`New Agent`,newAgentName:`New Agent`,newAgentDescription:`Describe when this agent should be used.`,builtIn:`Built-in`,user:`User`,name:`Name`,slug:`File Slug`,agentDescription:`Description`,role:`Role`,roles:{primary:`Primary`,subagent:`Subagent`,both:`Both`},systemPrompt:`System Prompt`,model:`Model Override`,modelDefaultOption:`Use the agent default model`,thinking:`Enable Thinking`,reasoningEffort:`Reasoning Effort`,reasoningEfforts:{low:`Low`,medium:`Medium`,high:`High`,xhigh:`Extra High`,max:`Maximum`},maxToolIterations:`Max Tool Iterations`,toolsEnabled:`Tools Enabled`,toolAllowlist:`Allowed Tools`,noTools:`No tools available.`,subagents:`Allowed Subagents`,noSubagents:`No eligible subagents exist yet.`,path:`Path`,friendlyMode:`Fields`,rawMode:`Markdown`,rawMarkdown:`Raw Markdown`,preview:`Preview`,previewing:`Previewing...`,save:`Save`,saving:`Saving...`,reset:`Reset`,delete:`Delete`,cancel:`Cancel`,retry:`Retry`,saved:`Agent saved`,deleted:`Agent deleted`,previewed:`Markdown validated`,loadError:`Failed to load agents`,saveError:`Failed to save agent`,createError:`Failed to create agent`,deleteError:`Failed to delete agent`,previewError:`Failed to preview agent`,deleteTitle:`Delete agent`,deleteDescription:`This Markdown-backed agent will be removed from disk.`,deleteConfirm:`Delete agent`,deleting:`Deleting...`,sectionIdentity:`Identity`,sectionBehavior:`Behavior`,sectionReasoning:`Reasoning`,sectionTools:`Tools`,unsavedChanges:`Unsaved changes`,confirmResetTitle:`Discard changes?`,confirmResetDescription:`Any unsaved changes will be lost.`,confirmReset:`Discard`,emptyStateTitle:`No agents yet`,emptyStateDescription:`Create your first agent to get started.`,selectAgent:`Select an agent`,builtInAgents:`Built-in Agents`,userAgents:`Custom Agents`},general:{languageLabel:`Language`,languageDescription:`User interface language`,textPromptLabel:`Default Text System Prompt`,textPromptPlaceholder:`e.g. You are a helpful creative partner. Be concise and insightful...`,imagePromptLabel:`Default Image System Prompt`,imagePromptPlaceholder:`e.g. Always generate images in a cinematic style with dramatic lighting...`,imageQualityLabel:`Default Image Quality`,maxToolIterationsLabel:`Max Tool Iterations`,maxToolIterationsDescription:`Upper bound on how many tool-calling rounds the model may take in a single turn.`,maxToolIterationsHint:`{value} of 1000`,chatTitlesLabel:`Chat Titles`,chatTitlesDescription:`Automatically rename timestamped new chats from the first user prompt.`,chatTitlesToggleLabel:`Auto rename new chats`,chatTitleSourceLabel:`Title source`,chatTitleSourcePrompt:`First prompt text`,chatTitleSourceModel:`Generate with a model`,chatTitleModelLabel:`Title model`,chatTitleModelDescription:`Use the current chat model or force a specific text model for title generation.`,chatTitleModelCurrent:`Use the current chat model`,chatTitlePrefixLengthLabel:`Prompt title length`,chatTitlePrefixLengthDescription:`Use the first characters from the prompt when a timestamped chat gets its first message.`,chatTitlePrefixLengthHint:`{value} characters`,multiAgentLabel:`Multi-agent turns`,multiAgentDescription:`Allow agents to delegate bounded work to configured subagents during a turn.`,multiAgentEnabledLabel:`Enable delegation`,chatDelegationEnabledLabel:`Allow Chat mode delegation`,traceVisibilityLabel:`Trace visibility`,traceVisibilityCompact:`Compact`,traceVisibilityFull:`Full`,traceVisibilityOff:`Off`,maxDepthLabel:`Max delegation depth`,maxSubagentCallsLabel:`Max subagent calls`,timeoutLabel:`Subagent timeout`,defaultMaxTurnsLabel:`Default subagent turns`,secondsHint:`{value}s`},connectors:{title:`AI Connectors`,addButton:`Add Connector`,emptyTitle:`No Connectors Found`,emptyDescription:`Add your first API key to start generating.`,deleteConfirm:`Are you sure you want to delete this connector?`,addModalTitle:`Add Connector`,addModalDescription:`Choose the provider, configure the API key and storage.`,providerLabel:`Provider`,selectProvider:`Select Provider`,baseUrlLabel:`Base URL`,baseUrlRequired:`Base URL is required for OpenAI Compatible connectors.`,baseUrlPlaceholder:`https://api.example.com/v1`,deepseekBaseUrlPlaceholder:`https://api.deepseek.com`,organizationIdLabel:`Organization ID (optional)`,organizationIdPlaceholder:`org-...`,organizationIdHelper:`Required only for keys scoped to a specific OpenAI organization.`,projectIdLabel:`Project ID (optional)`,projectIdPlaceholder:`proj_...`,projectIdHelper:`Required for project-scoped keys in the OpenAI API.`,nameLabel:`Name`,namePlaceholder:`e.g. Personal Project`,apiKeyLabel:`API Key`,apiKeyPlaceholder:`sk-...`,saveToLabel:`Save To`,sources:{bunSecrets:`OS Secret Store`,bunSecretsDesc:`Native secure storage`,configFile:`config.toml`,configFileDesc:`~/.mango/config.toml`,envFile:`.env File`,envFileDesc:`App root .env`},cancelButton:`Cancel`,addConnectorButton:`Add Connector`,validating:`Validating...`,cursorNodeRequired:`You need NodeJS installed to run Cursor SDK Agents.`,cursorNodeNotFound:"`node` binary not found",cursorNodeVersionInsufficient:`Node.js {minVersion}+ is required for Cursor SDK Agents (found {version}).`,cursorSidecarMissing:`Cursor SDK sidecar script is missing.`,cursorSidecarMissingAt:`Cursor SDK sidecar script is missing at {path}.`,cursorSdkMissing:`Cursor SDK package is missing from the sidecar. Reinstall MangoStudio.`,cursorSdkMissingAt:`Cursor SDK package is missing from the sidecar at {path}. Reinstall MangoStudio.`,cursorSdkIncomplete:`Cursor SDK package is incomplete. Reinstall MangoStudio.`,cursorSdkIncompleteAt:`Cursor SDK package is incomplete at {path}. Reinstall MangoStudio.`,cursorNativeRuntimeMissing:`This platform has no Cursor native runtime in the sidecar. Reinstall MangoStudio.`,cursorNativeRuntimeMissingPackage:`Cursor native runtime package {packageName} is missing. Reinstall MangoStudio.`,modalsModalTitle:`Choose Available Models`,modelsModalTitle:`Choose Available Models`,modelsModalDescription:`Models enabled for`,modelsModalDescriptionSuffix:`will be available in the chat.`,textModelsLabel:`Text Models`,imageModelsLabel:`Image Models`,doneButton:`Done`,configureModels:`Configure Models`,deleteConnector:`Delete Connector`,sharedConnector:`Shared`,managedExternally:`Managed externally via environment configuration.`,sharedDeleteBlocked:`This shared connector must be removed from the configuration file.`,searchModelsPlaceholder:`Search models by name or ID...`,noModelsDiscovered:`No models have been discovered for this connector yet.`,addSuccess:`Connector added successfully!`,deleteSuccess:`Connector deleted successfully!`,updateModelsSuccess:`Models updated successfully!`,errorRequired:`Name and API Key are required.`,failedToLoad:`Failed to load connectors`,failedToAdd:`Failed to add connector`,failedToDelete:`Failed to delete connector`,failedToUpdateModels:`Failed to update models`,unknownError:`An unknown error occurred`,noSearchResults:`No models match your search`},providers:{title:`AI Providers`,backToMenu:`Back to providers`,sectionReasoning:`Reasoning & Thinking`,sectionTools:`Tool Configuration`,sectionCache:`Prompt Caching`,sectionAdvanced:`Advanced`,save:`Save`,saving:`Saving...`,cancel:`Cancel`,reset:`Reset to defaults`,saved:`Settings saved`,saveError:`Failed to save provider settings`,loadError:`Failed to load providers`,invalidProvider:`Provider not found`,perProviderSettings:`Per-provider runtime settings override global defaults.`,noProviders:`No AI providers available.`,modelsEnabled:`{count} models enabled`,connectorsCount:`{count} connectors`,thinkingEnabled:`Enable thinking`,reasoningEffort:`Reasoning effort`,maxOutputTokens:`Max output tokens`,maxToolIterations:`Max tool iterations`,parallelToolCalls:`Parallel tool calls`,compaction:`Provider-side compaction`,cachePreference:`Prompt cache preference`,cacheAuto:`Auto`,cacheStablePrefix:`Stable prefix`,cacheOff:`Off`,capabilityThinking:`Thinking`,capabilityTools:`Tools`,capabilityCaching:`Caching`,capabilityCompaction:`Compaction`,reservedForFuture:`Reserved for future settings`,maxOutputTokensPlaceholder:`1 – {limit}`},tools:{title:`Tools`,description:`Enable or disable tools and configure their parameters.`,categories:{system:`System`,image:`Image`,interaction:`Interaction`},enabled:`Enabled`,disabled:`Disabled`,cannotDisable:`This tool cannot be disabled.`,save:`Save`,saving:`Saving...`,saved:`Settings saved`,saveError:`Failed to save tool settings`,loadError:`Failed to load tools`,noTools:`No tools available.`,maxToolIterationsLabel:`Max Tool Iterations`,maxToolIterationsDescription:`Upper bound on how many tool-calling rounds the model may take in a single turn.`,maxToolIterationsHint:`{value} of 1000`,executionTitle:`Execution`,autoModelOption:`Auto (first available)`,letAiDecideQualityLabel:`Let AI decide quality`,letAiDecideQualityDescription:`When enabled, the AI can choose different image sizes per request.`,toolNames:{readFile:`Read file`,writeFile:`Write file`,listDirectory:`List directory`,glob:`Glob`,grep:`Grep`},toolDescriptions:{readFile:`Allows the AI to read text files from disk.`,writeFile:`Allows the AI to write text content to files on disk.`,listDirectory:`Allows the AI to list files and directories on disk.`,glob:`Allows the AI to find files and directories by glob pattern.`,grep:`Allows the AI to search file contents with regular expressions.`},parameters:{allowedPathsLabel:`Allowed paths`,allowedPathsDescription:`Paths the tool is allowed to access. Leave empty to allow all.`,deniedPathsLabel:`Denied paths`,deniedPathsDescription:`Paths the tool is denied from accessing. Leave empty to deny none.`},pathList:{add:`Add`,edit:`Edit`,delete:`Delete`,save:`Save`,cancel:`Cancel`,pathPlaceholder:`e.g. /home/user/projects`,noPaths:`No paths configured.`}},metrics:{title:`Metrics`,description:`Live in-memory counters for provider cache hit rates and probe timeout totals.`,refresh:`Refresh`,failedToLoad:`Failed to load metrics`,empty:`No provider metrics have been recorded yet.`,generatedAtLabel:`Last updated: {value}`,totalProbeTimeoutsLabel:`Probe timeouts: {value}`,cacheSectionTitle:`Cache Hit Rate`,probeSectionTitle:`Probe Timeouts by Operation`,cacheLabel:`Cache`,hitsLabel:`Hits`,missesLabel:`Misses`,hitRateLabel:`Hit rate`,caches:{sdkClient:`SDK client`,preparedRuntime:`Prepared runtime`,providerRoute:`Provider route`},operations:{healthcheck:`Healthcheck`,modelList:`Model listing`}},logs:{title:`Logs`,description:`Recent provider probe timeouts captured by the current runtime process.`,refresh:`Refresh`,failedToLoad:`Failed to load logs`,empty:`No recent provider probe timeout events.`,providerLabel:`Provider`,operationLabel:`Operation`,eventKinds:{probeTimeout:`Probe timeout`},operations:{healthcheck:`Healthcheck`,modelList:`Model listing`}},appearance:{title:`Appearance`,appTheme:{label:`App Theme`,description:`Choose the visual theme for the application`,dark:`Dark`,light:`Light`,system:`System`,comingSoon:`Coming soon`},fontSize:{label:`Font Size`,description:`Adjust the text size in chat messages`,small:`Small`,default:`Default`,large:`Large`},chatDensity:{label:`Chat Density`,description:`Control spacing between messages`,compact:`Compact`,default:`Default`,comfortable:`Comfortable`},codeTheme:{label:`Code Theme`,description:`Choose the syntax highlighting theme for code blocks`,auto:`Auto (match app theme)`,manual:`Manual`,darkPreference:`Dark preference`,lightPreference:`Light preference`,oneDarkPro:`One Dark Pro`,githubDarkDimmed:`GitHub Dark Dimmed`,githubLight:`GitHub Light`,oneLight:`One Light`}},app:{loadError:`Failed to load app settings`,saveError:`Failed to save app settings`}},common:{loading:`Loading...`,appName:`Mango Studio`,downloadFilenamePrefix:`mangostudio`,mangoStudioLogo:`Mango Studio Logo`,retry:`Retry`,noResultsFor:`No results for "{query}"`,contextIndicator:`Context usage indicator`,settingsNavigation:`Settings navigation`,openMenu:`Open menu`,closeMenu:`Close menu`,disclaimer:`Artificial Intelligence can make mistakes. Please double-check the results.`},providers:{gemini:`Google Gemini`,anthropic:`Anthropic`,openai:`OpenAI`,"openai-compatible":`OpenAI Compatible`,deepseek:`DeepSeek`,cursor:`Cursor`,openrouter:`OpenRouter`},thinking:{label:`Thought process`,labelContinued:`Continued thinking`,streaming:`Thinking...`,streamingContinued:`Thinking again...`,toggle:`View reasoning`,enable:`Thinking`,enabled:`Thinking enabled`,disabled:`Thinking disabled`,effort:`Effort`,effortLow:`Low`,effortMedium:`Medium`,effortHigh:`High`,effortXHigh:`Extra High`,effortMax:`Maximum`,reasoningBadge:`Reasoning`},tools:{calling:`Calling...`,running:`Running tool`,done:`Done`,error:`Tool error`,moreCount:`+{count} more`,argsLabel:`args`,errorLabel:`error`,resultLabel:`result`,labels:{list_directory:`List`,read_file:`Read`,write_file:`Write`,glob:`Glob`,grep:`Grep`,generate_image:`Generate Image`,get_current_datetime:`Date`,bash:`Bash`,zsh:`Zsh`,powershell:`PowerShell`}},errors:{unknown:`An unknown error occurred`,imageNotSupported:`This provider does not support image generation.`,referenceImageUploadFailed:`Failed to upload reference image. Please try again.`,textGenerationFailed:`Failed to get a response. Please try again.`,imageGenerationFailed:`Failed to generate image. Please try again.`,streamRequestFailed:`Stream request failed`,streamResponseNoBody:`Stream response has no body`},models:{loading:`Loading models...`,unavailable:`Models unavailable`,noModelsAvailable:`No models available`,preview:`Preview`},api:{unauthorized:`Unauthorized`},generation:{toolLoopExhausted:`The model exceeded the maximum number of tool interactions.`}},ut={auth:{loginTitle:`Mango Studio`,signupTitle:`Criar Conta`,emailLabel:`Email`,emailPlaceholder:`seu@email.com`,passwordLabel:`Senha`,passwordPlaceholder:`••••••••`,signupPasswordLabel:`Senha (mínimo 8 caracteres)`,nameLabel:`Nome`,namePlaceholder:`Seu nome`,loginButton:`Entrar`,loginLoading:`Entrando...`,signupButton:`Criar Conta`,signupLoading:`Criando...`,loginLink:`Fazer login`,signupLink:`Criar conta`,noAccount:`Não tem conta?`,hasAccount:`Já tem conta?`,loginError:`Erro ao fazer login`,signupError:`Erro ao criar conta`,logoutButton:`Sair`,logoutLoading:`Saindo...`,logoutError:`Erro ao sair. Tente novamente.`},chat:{newChat:`Novo Chat`,empty:`Inicie uma conversa`,deleted:`Chat excluído`,editTitle:`Editar título`,deleteTitle:`Excluir chat`,sectionLabel:`Chats`,stopGenerating:`Parar`,streaming:`Gerando...`,input:{modeChat:`Chat`,modeAgent:`Agente`,modeImage:`Criar Imagem`,send:`Enviar`,generate:`Gerar`,stop:`Parar`,placeholder:`Pergunte ao modelo de IA...`,imagePlaceholder:`Descreva sua imagem...`,addReferenceImage:`Adicionar imagem de referência`,createImages:`Criar imagens`,createImagesHint:`Sugerir ao modelo que use a ferramenta de geração de imagens`,selectAgent:`Selecionar agente`,agentsLoading:`Carregando agentes...`},feed:{emptyTitle:`Inicie uma conversa ou crie uma imagem`,emptySubtitle:`Mude para o modo Criar Imagem para gerar arte`,generatingImage:`Gerando imagem...`,statusGenerating:`Gerando`,statusThinking:`Pensando`,statusGenerated:`Gerado`,statusReplied:`Respondido`,modelFallback:`Modelo de IA`,modelStatus:`{status} com: {model}`,download:`Baixar`,saveToGallery:`Salvar na Galeria`,regenerate:`Regenerar`,imageUnavailable:`Imagem não disponível`,imageUnavailableHint:`A imagem foi excluída, movida ou ainda não está acessível.`,generatedImageAlt:`Imagem gerada`,imageGenerationFailed:`Falha ao gerar imagem`,styleParams:`Parâmetros de Estilo`,thoughtFor:`Pensou por {time}`,respondedIn:`Respondeu em {time}`,noResponse:`Sem resposta`,neuralDiffusionPath:`Usando Neural Diffusion Path.`,createImageBadge:`Criar Imagem`,subagentTrace:`Trace de subagente`,subagentPendingName:`Subagente`,subagentStatusCompleted:`Concluído`,subagentStatusFailed:`Falhou`,subagentStatusAborted:`Abortado`,subagentStatusTimeout:`Tempo esgotado`,subagentTools:`{count} ferramentas`,subagentNoTools:`Sem ferramentas`,subagentLastMessage:`Última mensagem`,subagentMessages:`Mensagens`,subagentToolCalls:`Chamadas de ferramenta`,subagentLifecycle:`Ciclo de vida`,subagentLifecycleDelegationStarted:`Delegação iniciada`,subagentLifecycleDelegationCompleted:`Delegação concluída`,subagentLifecycleDelegationFailed:`Delegação falhou`,subagentLifecycleAttempt:`Tentativa {attempt}`,subagentLifecycleRecovered:`Resposta recuperada`,subagentLifecycleTimeout:`Tempo esgotado`,subagentLifecycleFallback:`Resposta fallback criada`},context:{label:`Contexto`,tokens:`~{used} / {limit} tokens`,modeStateful:`Stateful`,modeReplay:`Replay`,modeCompacted:`Compactado`,modeDegraded:`Degradado`,warning:`Esta conversa está se aproximando do limite de contexto do modelo.`,danger:`O MangoStudio pode precisar compactar ou sair do modo stateful.`,critical:`Esta conversa não pode mais permanecer stateful no provedor atual.`,keepHistory:`As mensagens originais continuam no histórico por padrão.`,compactAction:`Compactar e continuar`,newChatAction:`Iniciar chat resumido`,continueAction:`Continuar assim mesmo`,compactPending:`Compactando...`,newChatPending:`Iniciando chat...`,compactedSuccess:`Chat compactado`,summarizedChatSuccess:`Chat resumido iniciado`,compactFailed:`Falha ao compactar o chat`,summarizedChatFailed:`Falha ao iniciar o chat resumido`},fallback:{toReplay:`Continuação stateful não está mais disponível. Continuando com replay do transcript.`,generic:`Modo da conversa alterado de {from} para {to}.`},continuation:{title:{providerChanged:`Estado {fromProvider} {fromMode} não pode ser reutilizado por {provider}. Transcript reproduzido e continuação {provider} {toMode} iniciada.`,modelChanged:`Modelo alterado para {model}. Transcript reproduzido em {provider} {toMode}.`,systemPromptChanged:`System prompt alterado. Transcript reproduzido em {provider} {toMode}.`,toolsetChanged:`Conjunto de ferramentas alterado. Transcript reproduzido em {provider} {toMode}.`,agentChanged:`Agente alterado. Transcript reproduzido em {provider} {toMode}.`,agentRuntimeChanged:`Configurações do agente alteradas. Transcript reproduzido em {provider} {toMode}.`,cursorExpired:`Cursor {provider} {fromMode} expirou. Usando replay do transcript.`,cursorInvalid:`Cursor {provider} {fromMode} foi invalidado. Usando replay do transcript.`,toolResultCursorLoss:`Cursor {provider} {fromMode} perdido durante execução de ferramenta. Resposta pode estar incompleta.`,envelopeMalformed:`Estado de continuação armazenado era inválido. Reiniciando com replay do transcript.`},recovered:`(recuperado)`,notRecovered:`(não recuperado)`},cursorLost:`Cursor perdido — fallback para {detail}`,toolLoopExhausted:`Limite de iterações de ferramentas atingido`,genericFailure:`Falha na geração`,copyCode:`Copiar código`,codeCopied:`Copiado!`,copyMessage:`Copiar mensagem`,messageCopied:`Mensagem copiada!`,scrollToBottom:`Ir para o final`,emptyGreeting:`Olá, {name}!`,emptySubtitle:`Como posso te ajudar hoje?`,suggestion1:`Explique um conceito complexo de forma simples`,suggestion2:`Escreva um script em Python para...`,suggestion3:`Me ajude a depurar um problema`,suggestion4:`Crie uma imagem`,systemEvents:{chatCompacted:`Contexto compactado em um resumo`,summaryHandoff:`Este chat começou a partir de um resumo anterior`,cursorInternalToolCall:`Cursor usou {tool}`},titleGenerationFailed:`Falha ao gerar título do chat`},studio:{title:`Studio`,empty:`Espaço de criação de imagens — em breve.`},gallery:{title:`Galeria`,empty:`Suas criações aparecerão aqui.`,download:`Baixar imagem completa`,view:`Ver`},settings:{title:`Configurações`,tabs:{general:`Geral`,connectors:`Conectores`,providers:`Provedores`,appearance:`Aparência`,context:`Contexto`,agents:`Agentes`,prompts:`Prompts`,tools:`Ferramentas`,metrics:`Métricas`,logs:`Logs`},context:{title:`Contexto`,description:`Controle quando o MangoStudio avisa, compacta ou continua em um chat resumido.`,keepHistory:`A compactação mantém o transcript original salvo até você limpá-lo depois.`,behaviorLabel:`Comportamento de compactação`,behaviorDescription:`Escolha o que acontece quando uma conversa atinge o limite de aviso.`,behaviorOptions:{ask:`Perguntar sempre`,autoCompact:`Compactar o chat atual automaticamente`,newChat:`Continuar em um chat resumido`,off:`Desativar avisos`},providerCompactionLabel:`Permitir compactação pelo provider`,providerCompactionDescription:`Quando disponível, deixe o provider compactar o estado com cursor perto do limite de aviso.`,warningThresholdLabel:`Limite de aviso`,warningThresholdDescription:`Mostrar ações de compactação quando o uso de contexto atingir este valor.`,dangerThresholdLabel:`Limite de perigo`,dangerThresholdDescription:`Intensificar o aviso antes de atingir o limite crítico.`,hardStopThresholdLabel:`Limite crítico`,hardStopThresholdDescription:`Tratar a pressão de contexto como crítica neste valor ou acima dele.`,summaryModelLabel:`Modelo preferido para resumo`,summaryModelDescription:`Use o modelo atual do chat ou force um modelo de texto específico para os resumos.`,summaryModelCurrent:`Usar o modelo atual do chat`,thresholdHint:`{value}% do contexto`},prompts:{defaultPromptsLabel:`Prompts Padrão`,ruleFilesLabel:`Arquivos de Regras`,customRulesLabel:`Regras Personalizadas`,customRulesDescription:`Adicione caminhos para arquivos .md personalizados que serão incluídos nas requisições.`,textSystemPromptLabel:`System Prompt de Texto Padrão`,textSystemPromptPlaceholder:`ex. Você é um parceiro criativo útil. Seja conciso e perspicaz...`,imageSystemPromptLabel:`System Prompt de Imagem Padrão`,imageSystemPromptPlaceholder:`ex. Sempre gere imagens em estilo cinemático com iluminação dramática...`,agentsMdLabel:`AGENTS.md`,agentsMdDescription:`Regras do repositório definidas no arquivo AGENTS.md.`,claudeMdLabel:`CLAUDE.md`,claudeMdDescription:`Instruções globais definidas no arquivo CLAUDE.md.`,enabledLabel:`Ativado`,injectionRoleLabel:`Função de Injeção`,injectionRoleSystem:`Enviar como System Prompt`,injectionRoleUser:`Enviar como User Prompt`,frequencyLabel:`Frequência`,frequencyFirstTurn:`Enviar apenas no primeiro prompt`,frequencyFirstTurnHint:`Recomendado`,frequencyEveryTurn:`Enviar sempre`,addRule:`Adicionar Regra`,removeRule:`Remover`,rulePathLabel:`Caminho`,rulePathPlaceholder:`ex. ~/meus-projetos/regras.md`},agents:{title:`Agentes`,description:`Configure agentes integrados e agentes em Markdown para fluxos de trabalho.`,create:`Criar Agente`,createTitle:`Novo Agente`,newAgentName:`Novo Agente`,newAgentDescription:`Descreva quando este agente deve ser usado.`,builtIn:`Integrado`,user:`Usuário`,name:`Nome`,slug:`Slug do Arquivo`,agentDescription:`Descrição`,role:`Função`,roles:{primary:`Primário`,subagent:`Subagente`,both:`Ambos`},systemPrompt:`System Prompt`,model:`Modelo Sobrescrito`,modelDefaultOption:`Usar o modelo padrão do agente`,thinking:`Ativar Raciocínio`,reasoningEffort:`Esforço de Raciocínio`,reasoningEfforts:{low:`Baixo`,medium:`Médio`,high:`Alto`,xhigh:`Extra Alto`,max:`Máximo`},maxToolIterations:`Máx. Iterações de Ferramentas`,toolsEnabled:`Ferramentas Ativadas`,toolAllowlist:`Ferramentas Permitidas`,noTools:`Nenhuma ferramenta disponível.`,subagents:`Subagentes Permitidos`,noSubagents:`Nenhum subagente elegível existe ainda.`,path:`Caminho`,friendlyMode:`Campos`,rawMode:`Markdown`,rawMarkdown:`Markdown Bruto`,preview:`Pré-visualizar`,previewing:`Pré-visualizando...`,save:`Salvar`,saving:`Salvando...`,reset:`Restaurar`,delete:`Excluir`,cancel:`Cancelar`,retry:`Tentar novamente`,saved:`Agente salvo`,deleted:`Agente excluído`,previewed:`Markdown validado`,loadError:`Falha ao carregar agentes`,saveError:`Falha ao salvar agente`,createError:`Falha ao criar agente`,deleteError:`Falha ao excluir agente`,previewError:`Falha ao pré-visualizar agente`,deleteTitle:`Excluir agente`,deleteDescription:`Este agente em Markdown será removido do disco.`,deleteConfirm:`Excluir agente`,deleting:`Excluindo...`,sectionIdentity:`Identidade`,sectionBehavior:`Comportamento`,sectionReasoning:`Raciocínio`,sectionTools:`Ferramentas`,unsavedChanges:`Alterações não salvas`,confirmResetTitle:`Descartar alterações?`,confirmResetDescription:`Quaisquer alterações não salvas serão perdidas.`,confirmReset:`Descartar`,emptyStateTitle:`Nenhum agente ainda`,emptyStateDescription:`Crie seu primeiro agente para começar.`,selectAgent:`Selecionar um agente`,builtInAgents:`Agentes Integrados`,userAgents:`Agentes Personalizados`},general:{languageLabel:`Idioma`,languageDescription:`Idioma da interface do usuário`,textPromptLabel:`System Prompt de Texto Padrão`,textPromptPlaceholder:`ex. Você é um parceiro criativo útil. Seja conciso e perspicaz...`,imagePromptLabel:`System Prompt de Imagem Padrão`,imagePromptPlaceholder:`ex. Sempre gere imagens em estilo cinemático com iluminação dramática...`,imageQualityLabel:`Qualidade de Imagem Padrão`,maxToolIterationsLabel:`Iterações Máximas de Ferramentas`,maxToolIterationsDescription:`Limite máximo de rodadas de chamada de ferramentas que o modelo pode executar em um turno.`,maxToolIterationsHint:`{value} de 1000`,chatTitlesLabel:`Títulos dos Chats`,chatTitlesDescription:`Renomeie automaticamente novos chats com timestamp a partir do primeiro prompt do usuário.`,chatTitlesToggleLabel:`Renomear novos chats automaticamente`,chatTitleSourceLabel:`Origem do título`,chatTitleSourcePrompt:`Texto inicial do prompt`,chatTitleSourceModel:`Gerar com um modelo`,chatTitleModelLabel:`Modelo para título`,chatTitleModelDescription:`Use o modelo atual do chat ou force um modelo de texto específico para gerar títulos.`,chatTitleModelCurrent:`Usar o modelo atual do chat`,chatTitlePrefixLengthLabel:`Tamanho do título por prompt`,chatTitlePrefixLengthDescription:`Use os primeiros caracteres do prompt quando um chat com timestamp receber a primeira mensagem.`,chatTitlePrefixLengthHint:`{value} caracteres`,multiAgentLabel:`Turnos multiagente`,multiAgentDescription:`Permita que agentes deleguem trabalho delimitado a subagentes configurados durante um turno.`,multiAgentEnabledLabel:`Ativar delegação`,chatDelegationEnabledLabel:`Permitir delegação no modo Chat`,traceVisibilityLabel:`Visibilidade do trace`,traceVisibilityCompact:`Compacto`,traceVisibilityFull:`Completo`,traceVisibilityOff:`Desativado`,maxDepthLabel:`Profundidade máxima de delegação`,maxSubagentCallsLabel:`Máx. chamadas de subagentes`,timeoutLabel:`Timeout do subagente`,defaultMaxTurnsLabel:`Turnos padrão do subagente`,secondsHint:`{value}s`},connectors:{title:`Conectores de IA`,addButton:`Adicionar Conector`,emptyTitle:`Nenhum Conector Encontrado`,emptyDescription:`Adicione sua primeira chave de API para começar a gerar.`,deleteConfirm:`Tem certeza que deseja excluir este conector?`,addModalTitle:`Adicionar Conector`,addModalDescription:`Escolha o provider, configure a chave de API e o armazenamento.`,providerLabel:`Provider`,selectProvider:`Selecione o Provider`,baseUrlLabel:`URL Base`,baseUrlRequired:`URL Base é obrigatória para conectores OpenAI Compatível.`,baseUrlPlaceholder:`https://api.example.com/v1`,deepseekBaseUrlPlaceholder:`https://api.deepseek.com`,organizationIdLabel:`Organization ID (opcional)`,organizationIdPlaceholder:`org-...`,organizationIdHelper:`Necessário apenas para chaves associadas a uma organização específica.`,projectIdLabel:`Project ID (opcional)`,projectIdPlaceholder:`proj_...`,projectIdHelper:`Necessário para chaves de projeto restrito no OpenAI.`,nameLabel:`Nome`,namePlaceholder:`ex. Projeto Pessoal`,apiKeyLabel:`Chave de API`,apiKeyPlaceholder:`sk-...`,saveToLabel:`Salvar em`,sources:{bunSecrets:`Armazenamento Seguro do SO`,bunSecretsDesc:`Armazenamento seguro nativo`,configFile:`config.toml`,configFileDesc:`~/.mango/config.toml`,envFile:`Arquivo .env`,envFileDesc:`.env na raiz do app`},cancelButton:`Cancelar`,addConnectorButton:`Adicionar Conector`,validating:`Validando...`,cursorNodeRequired:`Você precisa do Node.js instalado para executar agentes Cursor SDK.`,cursorNodeNotFound:"Binário `node` não encontrado.",cursorNodeVersionInsufficient:`Node.js {minVersion}+ é necessário para agentes Cursor SDK (encontrado {version}).`,cursorSidecarMissing:`O script sidecar do Cursor SDK está ausente.`,cursorSidecarMissingAt:`O script sidecar do Cursor SDK está ausente em {path}.`,cursorSdkMissing:`O pacote Cursor SDK está ausente do sidecar. Reinstale o MangoStudio.`,cursorSdkMissingAt:`O pacote Cursor SDK está ausente do sidecar em {path}. Reinstale o MangoStudio.`,cursorSdkIncomplete:`O pacote Cursor SDK está incompleto. Reinstale o MangoStudio.`,cursorSdkIncompleteAt:`O pacote Cursor SDK está incompleto em {path}. Reinstale o MangoStudio.`,cursorNativeRuntimeMissing:`Esta plataforma não tem runtime nativo do Cursor no sidecar. Reinstale o MangoStudio.`,cursorNativeRuntimeMissingPackage:`O pacote de runtime nativo do Cursor {packageName} está ausente. Reinstale o MangoStudio.`,modalsModalTitle:`Escolher Modelos Disponíveis`,modelsModalTitle:`Escolher Modelos Disponíveis`,modelsModalDescription:`Os modelos habilitados para`,modelsModalDescriptionSuffix:`estarão disponíveis no chat.`,textModelsLabel:`Modelos de Texto`,imageModelsLabel:`Modelos de Imagem`,doneButton:`Concluído`,configureModels:`Configurar Modelos`,deleteConnector:`Excluir Conector`,sharedConnector:`Compartilhado`,managedExternally:`Gerenciado externamente via configuração do ambiente.`,sharedDeleteBlocked:`Este conector compartilhado precisa ser removido do arquivo de configuração.`,searchModelsPlaceholder:`Buscar modelos por nome ou ID...`,noModelsDiscovered:`Nenhum modelo foi descoberto para este conector ainda.`,addSuccess:`Conector adicionado com sucesso!`,deleteSuccess:`Conector excluído com sucesso!`,updateModelsSuccess:`Modelos atualizados com sucesso!`,errorRequired:`Nome e Chave de API são obrigatórios.`,failedToLoad:`Falha ao carregar conectores`,failedToAdd:`Falha ao adicionar conector`,failedToDelete:`Falha ao excluir conector`,failedToUpdateModels:`Falha ao atualizar modelos`,unknownError:`Ocorreu um erro desconhecido`,noSearchResults:`Nenhum modelo corresponde à sua pesquisa`},providers:{title:`Provedores de IA`,backToMenu:`Voltar para provedores`,sectionReasoning:`Raciocínio`,sectionTools:`Configuração de Ferramentas`,sectionCache:`Cache de Prompt`,sectionAdvanced:`Avançado`,save:`Salvar`,saving:`Salvando...`,cancel:`Cancelar`,reset:`Restaurar padrões`,saved:`Configurações salvas`,saveError:`Falha ao salvar configurações do provedor`,loadError:`Falha ao carregar provedores`,invalidProvider:`Provedor não encontrado`,perProviderSettings:`Configurações por provedor substituem os padrões globais.`,noProviders:`Nenhum provedor de IA disponível.`,modelsEnabled:`{count} modelos habilitados`,connectorsCount:`{count} conectores`,thinkingEnabled:`Ativar raciocínio`,reasoningEffort:`Esforço de raciocínio`,maxOutputTokens:`Máx. tokens de saída`,maxToolIterations:`Máx. iterações de ferramentas`,parallelToolCalls:`Chamadas paralelas de ferramentas`,compaction:`Compactação pelo provedor`,cachePreference:`Preferência de cache de prompt`,cacheAuto:`Automático`,cacheStablePrefix:`Prefixo estável`,cacheOff:`Desligado`,capabilityThinking:`Raciocínio`,capabilityTools:`Ferramentas`,capabilityCaching:`Cache`,capabilityCompaction:`Compactação`,reservedForFuture:`Reservado para configurações futuras`,maxOutputTokensPlaceholder:`1 – {limit}`},tools:{title:`Ferramentas`,description:`Ative ou desative ferramentas e configure seus parâmetros.`,categories:{system:`Sistema`,image:`Imagem`,interaction:`Interação`},enabled:`Ativada`,disabled:`Desativada`,cannotDisable:`Esta ferramenta não pode ser desativada.`,save:`Salvar`,saving:`Salvando...`,saved:`Configurações salvas`,saveError:`Falha ao salvar configurações da ferramenta`,loadError:`Falha ao carregar ferramentas`,noTools:`Nenhuma ferramenta disponível.`,maxToolIterationsLabel:`Iterações Máximas de Ferramentas`,maxToolIterationsDescription:`Limite máximo de rodadas de chamada de ferramentas que o modelo pode executar em um turno.`,maxToolIterationsHint:`{value} de 1000`,executionTitle:`Execução`,autoModelOption:`Automático (primeiro disponível)`,letAiDecideQualityLabel:`IA decide a qualidade`,letAiDecideQualityDescription:`Quando ativado, a IA pode escolher diferentes tamanhos de imagem por solicitação.`,toolNames:{readFile:`Ler arquivo`,writeFile:`Escrever arquivo`,listDirectory:`Listar diretório`,glob:`Glob`,grep:`Grep`},toolDescriptions:{readFile:`Permite que a IA leia arquivos de texto do disco.`,writeFile:`Permite que a IA escreva conteúdo de texto em arquivos no disco.`,listDirectory:`Permite que a IA liste arquivos e diretórios no disco.`,glob:`Permite que a IA encontre arquivos e diretórios por padrão glob.`,grep:`Permite que a IA pesquise o conteúdo de arquivos com expressões regulares.`},parameters:{allowedPathsLabel:`Caminhos permitidos`,allowedPathsDescription:`Caminhos que a ferramenta pode acessar. Deixe vazio para permitir todos.`,deniedPathsLabel:`Caminhos negados`,deniedPathsDescription:`Caminhos que a ferramenta não pode acessar. Deixe vazio para não negar nenhum.`},pathList:{add:`Adicionar`,edit:`Editar`,delete:`Excluir`,save:`Salvar`,cancel:`Cancelar`,pathPlaceholder:`ex. /home/usuario/projetos`,noPaths:`Nenhum caminho configurado.`}},metrics:{title:`Métricas`,description:`Contadores em memória para taxa de acerto de cache dos providers e total de timeouts de probes.`,refresh:`Atualizar`,failedToLoad:`Falha ao carregar métricas`,empty:`Nenhuma métrica de provider foi registrada ainda.`,generatedAtLabel:`Última atualização: {value}`,totalProbeTimeoutsLabel:`Timeouts de probe: {value}`,cacheSectionTitle:`Taxa de Acerto de Cache`,probeSectionTitle:`Timeouts de Probe por Operação`,cacheLabel:`Cache`,hitsLabel:`Acertos`,missesLabel:`Falhas`,hitRateLabel:`Taxa de acerto`,caches:{sdkClient:`Cliente SDK`,preparedRuntime:`Runtime preparado`,providerRoute:`Roteamento do provider`},operations:{healthcheck:`Healthcheck`,modelList:`Listagem de modelos`}},logs:{title:`Logs`,description:`Timeouts recentes de probes de provider capturados pelo processo atual.`,refresh:`Atualizar`,failedToLoad:`Falha ao carregar logs`,empty:`Nenhum evento recente de timeout de probe de provider.`,providerLabel:`Provider`,operationLabel:`Operação`,eventKinds:{probeTimeout:`Timeout de probe`},operations:{healthcheck:`Healthcheck`,modelList:`Listagem de modelos`}},appearance:{title:`Aparência`,appTheme:{label:`Tema do Aplicativo`,description:`Escolha o tema visual para o aplicativo`,dark:`Escuro`,light:`Claro`,system:`Sistema`,comingSoon:`Em breve`},fontSize:{label:`Tamanho de Fonte`,description:`Ajuste o tamanho do texto nas mensagens do chat`,small:`Pequeno`,default:`Padrão`,large:`Grande`},chatDensity:{label:`Densidade do Chat`,description:`Controle o espaçamento entre as mensagens`,compact:`Compacto`,default:`Padrão`,comfortable:`Confortável`},codeTheme:{label:`Tema de Código`,description:`Escolha o tema de destaque de sintaxe para blocos de código`,auto:`Automático (seguir tema do app)`,manual:`Manual`,darkPreference:`Preferência escura`,lightPreference:`Preferência clara`,oneDarkPro:`One Dark Pro`,githubDarkDimmed:`GitHub Dark Dimmed`,githubLight:`GitHub Light`,oneLight:`One Light`}},app:{loadError:`Falha ao carregar configurações do app`,saveError:`Falha ao salvar configurações do app`}},common:{loading:`Carregando...`,appName:`Mango Studio`,downloadFilenamePrefix:`mangostudio`,mangoStudioLogo:`Logo do Mango Studio`,retry:`Tentar novamente`,noResultsFor:`Nenhum resultado para "{query}"`,contextIndicator:`Indicador de uso de contexto`,settingsNavigation:`Navegação de configurações`,openMenu:`Abrir menu`,closeMenu:`Fechar menu`,disclaimer:`A Inteligencia Artificial pode cometer erros, verifique os resultados com cautela`},providers:{gemini:`Google Gemini`,anthropic:`Anthropic`,openai:`OpenAI`,"openai-compatible":`OpenAI Compatível`,deepseek:`DeepSeek`,cursor:`Cursor`,openrouter:`OpenRouter`},thinking:{label:`Processo de raciocínio`,labelContinued:`Continuação do raciocínio`,streaming:`Pensando...`,streamingContinued:`Pensando novamente...`,toggle:`Ver raciocínio`,enable:`Raciocinar`,enabled:`Raciocínio ativo`,disabled:`Raciocínio desativado`,effort:`Esforço`,effortLow:`Baixo`,effortMedium:`Médio`,effortHigh:`Alto`,effortXHigh:`Extra Alto`,effortMax:`Máximo`,reasoningBadge:`Reasoning`},tools:{calling:`Chamando...`,running:`Executando ferramenta`,done:`Concluído`,error:`Erro na ferramenta`,moreCount:`+{count} mais`,argsLabel:`argumentos`,errorLabel:`erro`,resultLabel:`resultado`,labels:{list_directory:`Listar`,read_file:`Leu`,write_file:`Escreveu`,glob:`Glob`,grep:`Grep`,generate_image:`Gerar Imagem`,get_current_datetime:`Data`,bash:`Bash`,zsh:`Zsh`,powershell:`PowerShell`}},errors:{unknown:`Ocorreu um erro desconhecido`,imageNotSupported:`Este provider não suporta geração de imagens.`,referenceImageUploadFailed:`Falha ao enviar a imagem de referência. Tente novamente.`,textGenerationFailed:`Falha ao obter uma resposta. Tente novamente.`,imageGenerationFailed:`Falha ao gerar imagem. Tente novamente.`,streamRequestFailed:`Falha na requisição de stream`,streamResponseNoBody:`Resposta do stream sem corpo`},models:{loading:`Carregando modelos...`,unavailable:`Modelos indisponíveis`,noModelsAvailable:`Nenhum modelo disponível`,preview:`Pré-visualização`},api:{unauthorized:`Unauthorized`},generation:{toolLoopExhausted:`O modelo excedeu o número máximo de interações com ferramentas.`}},dt=`mangostudio:locale`,ft={"pt-BR":ut,en:I};function pt(){let e=localStorage.getItem(dt);return e===`pt-BR`||e===`en`?e:navigator.language.startsWith(`pt`)?`pt-BR`:`en`}var mt=(0,N.createContext)(null);function ht({children:e}){let[t,n]=(0,N.useState)(()=>pt());return(0,F.jsx)(mt,{value:{t:(0,N.useMemo)(()=>ft[t],[t]),locale:t,setLocale:(0,N.useCallback)(e=>{n(e),localStorage.setItem(dt,e)},[])},children:e})}function L(){let e=(0,N.use)(mt);if(!e)throw Error(`useI18n deve ser usado dentro de I18nProvider`);return e}var gt=`mango-studio-theme`,_t={mode:`auto`,darkTheme:`one-dark-pro`,lightTheme:`github-light`},vt={appTheme:`dark`,codeTheme:_t,fontSize:`default`,chatDensity:`default`},yt=(0,N.createContext)(null);function bt(){try{let e=localStorage.getItem(gt);if(e){let t=JSON.parse(e);return typeof t.codeTheme==`string`&&(t.codeTheme={..._t,darkTheme:t.codeTheme}),{...vt,...t}}}catch{}return vt}function xt({children:e}){let[t,n]=(0,N.useState)(bt),[r,i]=(0,N.useState)(()=>window.matchMedia(`(prefers-color-scheme: dark)`).matches),a=(0,N.useMemo)(()=>t.appTheme===`system`?r?`dark`:`light`:t.appTheme,[t.appTheme,r]),o=(0,N.useMemo)(()=>t.codeTheme.mode===`manual`||a===`dark`?t.codeTheme.darkTheme:t.codeTheme.lightTheme,[t.codeTheme,a]);(0,N.useEffect)(()=>{try{localStorage.setItem(gt,JSON.stringify(t))}catch{}document.documentElement.dataset.theme=a,document.documentElement.dataset.fontSize=t.fontSize,document.documentElement.dataset.chatDensity=t.chatDensity},[t,a]),(0,N.useEffect)(()=>{if(t.appTheme!==`system`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`),n=()=>i(e.matches);return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[t.appTheme]);let s=(0,N.useCallback)(e=>{n(t=>({...t,...e}))},[]);return(0,F.jsx)(yt,{value:(0,N.useMemo)(()=>({config:t,resolvedTheme:a,resolvedCodeTheme:o,setConfig:s}),[t,a,o,s]),children:e})}function St(){let e=(0,N.use)(yt);if(!e)throw Error(`useTheme must be used inside ThemeProvider`);return e}var Ct=te()({component:()=>(0,F.jsx)(Me,{client:ot,children:(0,F.jsx)(xt,{children:(0,F.jsx)(ht,{children:(0,F.jsx)(ct,{children:(0,F.jsx)(Oe,{})})})})})}),wt={primary:`bg-primary text-on-primary shadow-lg shadow-primary/20 hover:opacity-90`,secondary:`bg-surface-container-high text-on-surface hover:bg-surface-container-highest`,ghost:`text-on-surface/70 hover:text-on-surface hover:bg-surface-container-high`},Tt={sm:`px-3 py-1.5 text-xs`,md:`px-4 py-2 text-sm`};function R({variant:e=`primary`,size:t=`md`,loading:n=!1,disabled:r,className:i=``,children:a,...o}){return(0,F.jsxs)(`button`,{disabled:r||n,className:`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MarkdownContentRenderer-fly_E11y.js","assets/rolldown-runtime-BYbx6iT9.js","assets/ui-BEql6gkw.js","assets/markdown-parser-B0W8Yv4o.js"])))=>i.map(i=>d[i]);
2
+ import{a as e}from"./rolldown-runtime-BYbx6iT9.js";import{i as t,n,r,t as i}from"./ui-BEql6gkw.js";import{$ as a,A as o,At as s,B as c,C as l,D as u,Dt as d,E as f,Et as p,F as m,Ft as h,G as g,H as _,I as v,It as y,J as b,K as x,L as S,Lt as C,M as w,Mt as T,N as ee,Nt as te,O as ne,Ot as E,P as re,Pt as ie,Q as ae,R as oe,Rt as se,S as ce,T as le,U as ue,V as de,W as fe,X as pe,Y as me,Z as he,_ as ge,a as _e,at as D,b as ve,c as ye,ct as O,d as be,et as xe,f as Se,g as Ce,h as we,i as Te,it as Ee,j as De,jt as Oe,k as ke,kt as Ae,l as je,lt as Me,m as Ne,n as Pe,nt as Fe,o as Ie,ot as Le,p as Re,q as ze,r as Be,rt as Ve,s as He,st as k,t as Ue,tt as We,u as A,ut as j,v as Ge,w as Ke,x as qe,y as Je,z as Ye}from"./vendor-TU_R2f75.js";import{a as Xe,i as Ze,n as M,o as Qe,r as $e,t as et}from"./vendor-deps-C4ULb-aw.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var N=e(t(),1),tt=d();function nt(){return typeof window<`u`&&window.location?.origin?window.location.origin:`http://localhost:3001`}var P=p({baseURL:nt(),basePath:`/api/auth`}),rt=null;function it(e){rt=e}function at(){rt?.()}var ot=new Qe({defaultOptions:{queries:{retry:1,refetchOnWindowFocus:!1,refetchOnReconnect:!0,staleTime:1e3*30}}}),F=r(),st=(0,N.createContext)(null);function ct({children:e}){let[t,n]=(0,N.useState)([]),r=(0,N.useCallback)((e,t=`info`)=>{let r=crypto.randomUUID();n(n=>[...n,{id:r,message:e,type:t}]),setTimeout(()=>{n(e=>e.filter(e=>e.id!==r))},4e3)},[]),i=(0,N.useCallback)(e=>{n(t=>t.filter(t=>t.id!==e))},[]),a={success:`border-success/30 text-success`,error:`border-error/30 text-error`,info:`border-outline-variant/30 text-on-surface`};return(0,F.jsxs)(st,{value:{toast:r},children:[e,(0,F.jsx)(`div`,{className:`fixed bottom-4 right-4 z-50 flex flex-col gap-2 pointer-events-none`,children:t.map(e=>(0,F.jsxs)(`div`,{className:`glass-panel pointer-events-auto flex items-center gap-3 px-4 py-3 rounded-xl border text-sm max-w-sm ${a[e.type]}`,children:[(0,F.jsx)(`span`,{className:`flex-1`,children:e.message}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>i(e.id),className:`shrink-0 opacity-50 hover:opacity-100 transition-opacity cursor-pointer`,children:(0,F.jsx)(Be,{size:14})})]},e.id))})]})}function lt(){let e=(0,N.use)(st);if(!e)throw Error(`useToast deve ser usado dentro de ToastProvider`);return e}var I={auth:{loginTitle:`Mango Studio`,signupTitle:`Create Account`,emailLabel:`Email`,emailPlaceholder:`you@email.com`,passwordLabel:`Password`,passwordPlaceholder:`••••••••`,signupPasswordLabel:`Password (8 characters minimum)`,nameLabel:`Name`,namePlaceholder:`Your name`,loginButton:`Sign In`,loginLoading:`Signing in...`,signupButton:`Create Account`,signupLoading:`Creating...`,loginLink:`Sign in`,signupLink:`Create account`,noAccount:`Don't have an account?`,hasAccount:`Already have an account?`,loginError:`Login failed`,signupError:`Account creation failed`,logoutButton:`Sign Out`,logoutLoading:`Signing out...`,logoutError:`Logout failed. Please try again.`},chat:{newChat:`New Chat`,empty:`Start a conversation`,deleted:`Chat deleted`,editTitle:`Edit title`,deleteTitle:`Delete chat`,sectionLabel:`Chats`,stopGenerating:`Stop`,streaming:`Generating...`,input:{modeChat:`Chat`,modeAgent:`Agent`,modeImage:`Create Image`,send:`Send`,generate:`Generate`,stop:`Stop`,placeholder:`Ask the AI model anything...`,imagePlaceholder:`Describe your image...`,addReferenceImage:`Add reference image`,createImages:`Create images`,createImagesHint:`Hint to the model to use the image generation tool`,selectAgent:`Select agent`,agentsLoading:`Loading agents...`},feed:{emptyTitle:`Start a conversation or create an image`,emptySubtitle:`Switch to Create Image mode to generate art`,generatingImage:`Generating image...`,statusGenerating:`Generating`,statusThinking:`Thinking`,statusGenerated:`Generated`,statusReplied:`Replied`,modelFallback:`AI model`,modelStatus:`{status} with: {model}`,download:`Download`,saveToGallery:`Save to Gallery`,regenerate:`Regenerate`,imageUnavailable:`Image no longer available`,imageUnavailableHint:`The image was deleted, moved, or is not accessible yet.`,generatedImageAlt:`Generated image`,imageGenerationFailed:`Image generation failed`,styleParams:`Style Parameters`,thoughtFor:`Thought for {time}`,respondedIn:`Responded in {time}`,noResponse:`No response`,neuralDiffusionPath:`Using Neural Diffusion Path.`,createImageBadge:`Create Image`,subagentTrace:`Subagent trace`,subagentPendingName:`Subagent`,subagentStatusCompleted:`Completed`,subagentStatusFailed:`Failed`,subagentStatusAborted:`Aborted`,subagentStatusTimeout:`Timed out`,subagentTools:`{count} tools`,subagentNoTools:`No tools`,subagentLastMessage:`Last message`,subagentMessages:`Messages`,subagentToolCalls:`Tool calls`,subagentLifecycle:`Lifecycle`,subagentLifecycleDelegationStarted:`Delegation started`,subagentLifecycleDelegationCompleted:`Delegation completed`,subagentLifecycleDelegationFailed:`Delegation failed`,subagentLifecycleAttempt:`Attempt {attempt}`,subagentLifecycleRecovered:`Recovered response`,subagentLifecycleTimeout:`Timed out`,subagentLifecycleFallback:`Fallback response created`},context:{label:`Context`,tokens:`~{used} / {limit} tokens`,modeStateful:`Stateful`,modeReplay:`Replay`,modeCompacted:`Compacted`,modeDegraded:`Degraded`,warning:`This conversation is approaching the model context limit.`,danger:`MangoStudio may need to compact or leave stateful mode.`,critical:`This conversation can no longer remain stateful on the current provider.`,keepHistory:`Original messages stay in chat history by default.`,compactAction:`Compact and continue`,newChatAction:`Start summarized chat`,continueAction:`Continue anyway`,compactPending:`Compacting...`,newChatPending:`Starting chat...`,compactedSuccess:`Chat compacted`,summarizedChatSuccess:`Summarized chat started`,compactFailed:`Failed to compact chat`,summarizedChatFailed:`Failed to start summarized chat`},fallback:{toReplay:`Stateful continuation is no longer available. Continuing with transcript replay.`,generic:`Conversation mode changed from {from} to {to}.`},continuation:{title:{providerChanged:`{fromProvider} {fromMode} state cannot be reused by {provider}. Replayed transcript and started {provider} {toMode} continuation.`,modelChanged:`Model changed to {model}. Replayed transcript on {provider} {toMode}.`,systemPromptChanged:`System prompt changed. Replayed transcript on {provider} {toMode}.`,toolsetChanged:`Toolset changed. Replayed transcript on {provider} {toMode}.`,agentChanged:`Agent changed. Replayed transcript on {provider} {toMode}.`,agentRuntimeChanged:`Agent settings changed. Replayed transcript on {provider} {toMode}.`,cursorExpired:`{provider} {fromMode} cursor expired. Falling back to transcript replay.`,cursorInvalid:`{provider} {fromMode} cursor was invalidated. Falling back to transcript replay.`,toolResultCursorLoss:`{provider} {fromMode} cursor was lost during tool execution. Response may be incomplete.`,envelopeMalformed:`Stored continuation state was unreadable. Restarting with transcript replay.`},recovered:`(recovered)`,notRecovered:`(not recovered)`},cursorLost:`Cursor lost — fallback to {detail}`,toolLoopExhausted:`Tool loop limit reached`,genericFailure:`Generation failed`,copyCode:`Copy code`,codeCopied:`Copied!`,copyMessage:`Copy message`,messageCopied:`Message copied!`,scrollToBottom:`Scroll to bottom`,emptyGreeting:`Hello, {name}!`,emptySubtitle:`How can I help you today?`,suggestion1:`Explain a complex concept simply`,suggestion2:`Write a Python script to...`,suggestion3:`Help me debug a problem`,suggestion4:`Create an image`,systemEvents:{chatCompacted:`Context compacted into a summary`,summaryHandoff:`This chat started from a summarized handoff`,cursorInternalToolCall:`Cursor used {tool}`},titleGenerationFailed:`Failed to generate chat title`},studio:{title:`Studio`,empty:`Image creation workspace — coming soon.`},gallery:{title:`Gallery`,empty:`Your creations will appear here.`,download:`Download Full Image`,view:`View`},settings:{title:`Settings`,tabs:{general:`General`,connectors:`Connectors`,providers:`Providers`,appearance:`Appearance`,context:`Context`,agents:`Agents`,prompts:`Prompts`,tools:`Tools`,metrics:`Metrics`,logs:`Logs`},context:{title:`Context`,description:`Control when MangoStudio warns, compacts, or starts a summarized handoff.`,keepHistory:`Compaction keeps the original chat transcript unless you clean it up later.`,behaviorLabel:`Compaction behavior`,behaviorDescription:`Choose what happens when a chat reaches your warning threshold.`,behaviorOptions:{ask:`Ask every time`,autoCompact:`Auto compact current chat`,newChat:`Continue in summarized chat`,off:`Turn prompts off`},providerCompactionLabel:`Allow provider-side compaction`,providerCompactionDescription:`When supported, let the provider compact cursor-based state near your warning threshold.`,warningThresholdLabel:`Warning threshold`,warningThresholdDescription:`Show compaction choices when context usage reaches this value.`,dangerThresholdLabel:`Danger threshold`,dangerThresholdDescription:`Escalate the warning tone before the hard stop threshold.`,hardStopThresholdLabel:`Hard stop threshold`,hardStopThresholdDescription:`Treat context pressure as critical at or above this value.`,summaryModelLabel:`Preferred summary model`,summaryModelDescription:`Use the current chat model or force a specific text model for summaries.`,summaryModelCurrent:`Use current chat model`,thresholdHint:`{value}% of context`},prompts:{defaultPromptsLabel:`Default Prompts`,ruleFilesLabel:`Rule Files`,customRulesLabel:`Custom Rules`,customRulesDescription:`Add paths to custom .md files to be included in generation requests.`,textSystemPromptLabel:`Default Text System Prompt`,textSystemPromptPlaceholder:`e.g. You are a helpful creative partner. Be concise and insightful...`,imageSystemPromptLabel:`Default Image System Prompt`,imageSystemPromptPlaceholder:`e.g. Always generate images in a cinematic style with dramatic lighting...`,agentsMdLabel:`AGENTS.md`,agentsMdDescription:`Repository rules defined in the AGENTS.md file.`,claudeMdLabel:`CLAUDE.md`,claudeMdDescription:`Global instructions defined in the CLAUDE.md file.`,enabledLabel:`Enabled`,injectionRoleLabel:`Injection Role`,injectionRoleSystem:`Send as System Prompt`,injectionRoleUser:`Send as User Prompt`,frequencyLabel:`Frequency`,frequencyFirstTurn:`Send only in first prompt`,frequencyFirstTurnHint:`Recommended`,frequencyEveryTurn:`Send every time`,addRule:`Add Rule`,removeRule:`Remove`,rulePathLabel:`Path`,rulePathPlaceholder:`e.g. ~/my-projects/rules.md`},agents:{title:`Agents`,description:`Configure built-in and Markdown agents for focused workflows.`,create:`Create Agent`,createTitle:`New Agent`,newAgentName:`New Agent`,newAgentDescription:`Describe when this agent should be used.`,builtIn:`Built-in`,user:`User`,name:`Name`,slug:`File Slug`,agentDescription:`Description`,role:`Role`,roles:{primary:`Primary`,subagent:`Subagent`,both:`Both`},systemPrompt:`System Prompt`,model:`Model Override`,modelDefaultOption:`Use the agent default model`,thinking:`Enable Thinking`,reasoningEffort:`Reasoning Effort`,reasoningEfforts:{low:`Low`,medium:`Medium`,high:`High`,xhigh:`Extra High`,max:`Maximum`},maxToolIterations:`Max Tool Iterations`,toolsEnabled:`Tools Enabled`,toolAllowlist:`Allowed Tools`,noTools:`No tools available.`,subagents:`Allowed Subagents`,noSubagents:`No eligible subagents exist yet.`,path:`Path`,friendlyMode:`Fields`,rawMode:`Markdown`,rawMarkdown:`Raw Markdown`,preview:`Preview`,previewing:`Previewing...`,save:`Save`,saving:`Saving...`,reset:`Reset`,delete:`Delete`,cancel:`Cancel`,retry:`Retry`,saved:`Agent saved`,deleted:`Agent deleted`,previewed:`Markdown validated`,loadError:`Failed to load agents`,saveError:`Failed to save agent`,createError:`Failed to create agent`,deleteError:`Failed to delete agent`,previewError:`Failed to preview agent`,deleteTitle:`Delete agent`,deleteDescription:`This Markdown-backed agent will be removed from disk.`,deleteConfirm:`Delete agent`,deleting:`Deleting...`,sectionIdentity:`Identity`,sectionBehavior:`Behavior`,sectionReasoning:`Reasoning`,sectionTools:`Tools`,unsavedChanges:`Unsaved changes`,confirmResetTitle:`Discard changes?`,confirmResetDescription:`Any unsaved changes will be lost.`,confirmReset:`Discard`,emptyStateTitle:`No agents yet`,emptyStateDescription:`Create your first agent to get started.`,selectAgent:`Select an agent`,builtInAgents:`Built-in Agents`,userAgents:`Custom Agents`},general:{languageLabel:`Language`,languageDescription:`User interface language`,textPromptLabel:`Default Text System Prompt`,textPromptPlaceholder:`e.g. You are a helpful creative partner. Be concise and insightful...`,imagePromptLabel:`Default Image System Prompt`,imagePromptPlaceholder:`e.g. Always generate images in a cinematic style with dramatic lighting...`,imageQualityLabel:`Default Image Quality`,maxToolIterationsLabel:`Max Tool Iterations`,maxToolIterationsDescription:`Upper bound on how many tool-calling rounds the model may take in a single turn.`,maxToolIterationsHint:`{value} of 1000`,chatTitlesLabel:`Chat Titles`,chatTitlesDescription:`Automatically rename timestamped new chats from the first user prompt.`,chatTitlesToggleLabel:`Auto rename new chats`,chatTitleSourceLabel:`Title source`,chatTitleSourcePrompt:`First prompt text`,chatTitleSourceModel:`Generate with a model`,chatTitleModelLabel:`Title model`,chatTitleModelDescription:`Use the current chat model or force a specific text model for title generation.`,chatTitleModelCurrent:`Use the current chat model`,chatTitlePrefixLengthLabel:`Prompt title length`,chatTitlePrefixLengthDescription:`Use the first characters from the prompt when a timestamped chat gets its first message.`,chatTitlePrefixLengthHint:`{value} characters`,multiAgentLabel:`Multi-agent turns`,multiAgentDescription:`Allow agents to delegate bounded work to configured subagents during a turn.`,multiAgentEnabledLabel:`Enable delegation`,chatDelegationEnabledLabel:`Allow Chat mode delegation`,traceVisibilityLabel:`Trace visibility`,traceVisibilityCompact:`Compact`,traceVisibilityFull:`Full`,traceVisibilityOff:`Off`,maxDepthLabel:`Max delegation depth`,maxSubagentCallsLabel:`Max subagent calls`,timeoutLabel:`Subagent timeout`,defaultMaxTurnsLabel:`Default subagent turns`,secondsHint:`{value}s`},connectors:{title:`AI Connectors`,addButton:`Add Connector`,emptyTitle:`No Connectors Found`,emptyDescription:`Add your first API key to start generating.`,deleteConfirm:`Are you sure you want to delete this connector?`,addModalTitle:`Add Connector`,addModalDescription:`Choose the provider, configure the API key and storage.`,providerLabel:`Provider`,selectProvider:`Select Provider`,baseUrlLabel:`Base URL`,baseUrlRequired:`Base URL is required for OpenAI Compatible connectors.`,baseUrlPlaceholder:`https://api.example.com/v1`,deepseekBaseUrlPlaceholder:`https://api.deepseek.com`,organizationIdLabel:`Organization ID (optional)`,organizationIdPlaceholder:`org-...`,organizationIdHelper:`Required only for keys scoped to a specific OpenAI organization.`,projectIdLabel:`Project ID (optional)`,projectIdPlaceholder:`proj_...`,projectIdHelper:`Required for project-scoped keys in the OpenAI API.`,nameLabel:`Name`,namePlaceholder:`e.g. Personal Project`,apiKeyLabel:`API Key`,apiKeyPlaceholder:`sk-...`,saveToLabel:`Save To`,sources:{bunSecrets:`OS Secret Store`,bunSecretsDesc:`Native secure storage`,configFile:`config.toml`,configFileDesc:`~/.mango/config.toml`,envFile:`.env File`,envFileDesc:`App root .env`},cancelButton:`Cancel`,addConnectorButton:`Add Connector`,validating:`Validating...`,cursorNodeRequired:`You need NodeJS installed to run Cursor SDK Agents.`,cursorNodeNotFound:"`node` binary not found",cursorNodeVersionInsufficient:`Node.js {minVersion}+ is required for Cursor SDK Agents (found {version}).`,cursorSidecarMissing:`Cursor SDK sidecar script is missing.`,cursorSidecarMissingAt:`Cursor SDK sidecar script is missing at {path}.`,modalsModalTitle:`Choose Available Models`,modelsModalTitle:`Choose Available Models`,modelsModalDescription:`Models enabled for`,modelsModalDescriptionSuffix:`will be available in the chat.`,textModelsLabel:`Text Models`,imageModelsLabel:`Image Models`,doneButton:`Done`,configureModels:`Configure Models`,deleteConnector:`Delete Connector`,sharedConnector:`Shared`,managedExternally:`Managed externally via environment configuration.`,sharedDeleteBlocked:`This shared connector must be removed from the configuration file.`,searchModelsPlaceholder:`Search models by name or ID...`,noModelsDiscovered:`No models have been discovered for this connector yet.`,addSuccess:`Connector added successfully!`,deleteSuccess:`Connector deleted successfully!`,updateModelsSuccess:`Models updated successfully!`,errorRequired:`Name and API Key are required.`,failedToLoad:`Failed to load connectors`,failedToAdd:`Failed to add connector`,failedToDelete:`Failed to delete connector`,failedToUpdateModels:`Failed to update models`,unknownError:`An unknown error occurred`,noSearchResults:`No models match your search`},providers:{title:`AI Providers`,backToMenu:`Back to providers`,sectionReasoning:`Reasoning & Thinking`,sectionTools:`Tool Configuration`,sectionCache:`Prompt Caching`,sectionAdvanced:`Advanced`,save:`Save`,saving:`Saving...`,cancel:`Cancel`,reset:`Reset to defaults`,saved:`Settings saved`,saveError:`Failed to save provider settings`,loadError:`Failed to load providers`,invalidProvider:`Provider not found`,perProviderSettings:`Per-provider runtime settings override global defaults.`,noProviders:`No AI providers available.`,modelsEnabled:`{count} models enabled`,connectorsCount:`{count} connectors`,thinkingEnabled:`Enable thinking`,reasoningEffort:`Reasoning effort`,maxOutputTokens:`Max output tokens`,maxToolIterations:`Max tool iterations`,parallelToolCalls:`Parallel tool calls`,compaction:`Provider-side compaction`,cachePreference:`Prompt cache preference`,cacheAuto:`Auto`,cacheStablePrefix:`Stable prefix`,cacheOff:`Off`,capabilityThinking:`Thinking`,capabilityTools:`Tools`,capabilityCaching:`Caching`,capabilityCompaction:`Compaction`,reservedForFuture:`Reserved for future settings`,maxOutputTokensPlaceholder:`1 – {limit}`},tools:{title:`Tools`,description:`Enable or disable tools and configure their parameters.`,categories:{system:`System`,image:`Image`,interaction:`Interaction`},enabled:`Enabled`,disabled:`Disabled`,cannotDisable:`This tool cannot be disabled.`,save:`Save`,saving:`Saving...`,saved:`Settings saved`,saveError:`Failed to save tool settings`,loadError:`Failed to load tools`,noTools:`No tools available.`,maxToolIterationsLabel:`Max Tool Iterations`,maxToolIterationsDescription:`Upper bound on how many tool-calling rounds the model may take in a single turn.`,maxToolIterationsHint:`{value} of 1000`,executionTitle:`Execution`,autoModelOption:`Auto (first available)`,letAiDecideQualityLabel:`Let AI decide quality`,letAiDecideQualityDescription:`When enabled, the AI can choose different image sizes per request.`,toolNames:{readFile:`Read file`,writeFile:`Write file`,listDirectory:`List directory`,glob:`Glob`,grep:`Grep`},toolDescriptions:{readFile:`Allows the AI to read text files from disk.`,writeFile:`Allows the AI to write text content to files on disk.`,listDirectory:`Allows the AI to list files and directories on disk.`,glob:`Allows the AI to find files and directories by glob pattern.`,grep:`Allows the AI to search file contents with regular expressions.`},parameters:{allowedPathsLabel:`Allowed paths`,allowedPathsDescription:`Paths the tool is allowed to access. Leave empty to allow all.`,deniedPathsLabel:`Denied paths`,deniedPathsDescription:`Paths the tool is denied from accessing. Leave empty to deny none.`},pathList:{add:`Add`,edit:`Edit`,delete:`Delete`,save:`Save`,cancel:`Cancel`,pathPlaceholder:`e.g. /home/user/projects`,noPaths:`No paths configured.`}},metrics:{title:`Metrics`,description:`Live in-memory counters for provider cache hit rates and probe timeout totals.`,refresh:`Refresh`,failedToLoad:`Failed to load metrics`,empty:`No provider metrics have been recorded yet.`,generatedAtLabel:`Last updated: {value}`,totalProbeTimeoutsLabel:`Probe timeouts: {value}`,cacheSectionTitle:`Cache Hit Rate`,probeSectionTitle:`Probe Timeouts by Operation`,cacheLabel:`Cache`,hitsLabel:`Hits`,missesLabel:`Misses`,hitRateLabel:`Hit rate`,caches:{sdkClient:`SDK client`,preparedRuntime:`Prepared runtime`,providerRoute:`Provider route`},operations:{healthcheck:`Healthcheck`,modelList:`Model listing`}},logs:{title:`Logs`,description:`Recent provider probe timeouts captured by the current runtime process.`,refresh:`Refresh`,failedToLoad:`Failed to load logs`,empty:`No recent provider probe timeout events.`,providerLabel:`Provider`,operationLabel:`Operation`,eventKinds:{probeTimeout:`Probe timeout`},operations:{healthcheck:`Healthcheck`,modelList:`Model listing`}},appearance:{title:`Appearance`,appTheme:{label:`App Theme`,description:`Choose the visual theme for the application`,dark:`Dark`,light:`Light`,system:`System`,comingSoon:`Coming soon`},fontSize:{label:`Font Size`,description:`Adjust the text size in chat messages`,small:`Small`,default:`Default`,large:`Large`},chatDensity:{label:`Chat Density`,description:`Control spacing between messages`,compact:`Compact`,default:`Default`,comfortable:`Comfortable`},codeTheme:{label:`Code Theme`,description:`Choose the syntax highlighting theme for code blocks`,auto:`Auto (match app theme)`,manual:`Manual`,darkPreference:`Dark preference`,lightPreference:`Light preference`,oneDarkPro:`One Dark Pro`,githubDarkDimmed:`GitHub Dark Dimmed`,githubLight:`GitHub Light`,oneLight:`One Light`}},app:{loadError:`Failed to load app settings`,saveError:`Failed to save app settings`}},common:{loading:`Loading...`,appName:`Mango Studio`,downloadFilenamePrefix:`mangostudio`,mangoStudioLogo:`Mango Studio Logo`,retry:`Retry`,noResultsFor:`No results for "{query}"`,contextIndicator:`Context usage indicator`,settingsNavigation:`Settings navigation`,openMenu:`Open menu`,closeMenu:`Close menu`,disclaimer:`Artificial Intelligence can make mistakes. Please double-check the results.`},providers:{gemini:`Google Gemini`,anthropic:`Anthropic`,openai:`OpenAI`,"openai-compatible":`OpenAI Compatible`,deepseek:`DeepSeek`,cursor:`Cursor`,openrouter:`OpenRouter`},thinking:{label:`Thought process`,labelContinued:`Continued thinking`,streaming:`Thinking...`,streamingContinued:`Thinking again...`,toggle:`View reasoning`,enable:`Thinking`,enabled:`Thinking enabled`,disabled:`Thinking disabled`,effort:`Effort`,effortLow:`Low`,effortMedium:`Medium`,effortHigh:`High`,effortXHigh:`Extra High`,effortMax:`Maximum`,reasoningBadge:`Reasoning`},tools:{calling:`Calling...`,running:`Running tool`,done:`Done`,error:`Tool error`,moreCount:`+{count} more`,argsLabel:`args`,errorLabel:`error`,resultLabel:`result`,labels:{list_directory:`List`,read_file:`Read`,write_file:`Write`,glob:`Glob`,grep:`Grep`,generate_image:`Generate Image`,get_current_datetime:`Date`,bash:`Bash`,zsh:`Zsh`,powershell:`PowerShell`}},errors:{unknown:`An unknown error occurred`,imageNotSupported:`This provider does not support image generation.`,referenceImageUploadFailed:`Failed to upload reference image. Please try again.`,textGenerationFailed:`Failed to get a response. Please try again.`,imageGenerationFailed:`Failed to generate image. Please try again.`,streamRequestFailed:`Stream request failed`,streamResponseNoBody:`Stream response has no body`},models:{loading:`Loading models...`,unavailable:`Models unavailable`,noModelsAvailable:`No models available`,preview:`Preview`},api:{unauthorized:`Unauthorized`},generation:{toolLoopExhausted:`The model exceeded the maximum number of tool interactions.`}},ut={auth:{loginTitle:`Mango Studio`,signupTitle:`Criar Conta`,emailLabel:`Email`,emailPlaceholder:`seu@email.com`,passwordLabel:`Senha`,passwordPlaceholder:`••••••••`,signupPasswordLabel:`Senha (mínimo 8 caracteres)`,nameLabel:`Nome`,namePlaceholder:`Seu nome`,loginButton:`Entrar`,loginLoading:`Entrando...`,signupButton:`Criar Conta`,signupLoading:`Criando...`,loginLink:`Fazer login`,signupLink:`Criar conta`,noAccount:`Não tem conta?`,hasAccount:`Já tem conta?`,loginError:`Erro ao fazer login`,signupError:`Erro ao criar conta`,logoutButton:`Sair`,logoutLoading:`Saindo...`,logoutError:`Erro ao sair. Tente novamente.`},chat:{newChat:`Novo Chat`,empty:`Inicie uma conversa`,deleted:`Chat excluído`,editTitle:`Editar título`,deleteTitle:`Excluir chat`,sectionLabel:`Chats`,stopGenerating:`Parar`,streaming:`Gerando...`,input:{modeChat:`Chat`,modeAgent:`Agente`,modeImage:`Criar Imagem`,send:`Enviar`,generate:`Gerar`,stop:`Parar`,placeholder:`Pergunte ao modelo de IA...`,imagePlaceholder:`Descreva sua imagem...`,addReferenceImage:`Adicionar imagem de referência`,createImages:`Criar imagens`,createImagesHint:`Sugerir ao modelo que use a ferramenta de geração de imagens`,selectAgent:`Selecionar agente`,agentsLoading:`Carregando agentes...`},feed:{emptyTitle:`Inicie uma conversa ou crie uma imagem`,emptySubtitle:`Mude para o modo Criar Imagem para gerar arte`,generatingImage:`Gerando imagem...`,statusGenerating:`Gerando`,statusThinking:`Pensando`,statusGenerated:`Gerado`,statusReplied:`Respondido`,modelFallback:`Modelo de IA`,modelStatus:`{status} com: {model}`,download:`Baixar`,saveToGallery:`Salvar na Galeria`,regenerate:`Regenerar`,imageUnavailable:`Imagem não disponível`,imageUnavailableHint:`A imagem foi excluída, movida ou ainda não está acessível.`,generatedImageAlt:`Imagem gerada`,imageGenerationFailed:`Falha ao gerar imagem`,styleParams:`Parâmetros de Estilo`,thoughtFor:`Pensou por {time}`,respondedIn:`Respondeu em {time}`,noResponse:`Sem resposta`,neuralDiffusionPath:`Usando Neural Diffusion Path.`,createImageBadge:`Criar Imagem`,subagentTrace:`Trace de subagente`,subagentPendingName:`Subagente`,subagentStatusCompleted:`Concluído`,subagentStatusFailed:`Falhou`,subagentStatusAborted:`Abortado`,subagentStatusTimeout:`Tempo esgotado`,subagentTools:`{count} ferramentas`,subagentNoTools:`Sem ferramentas`,subagentLastMessage:`Última mensagem`,subagentMessages:`Mensagens`,subagentToolCalls:`Chamadas de ferramenta`,subagentLifecycle:`Ciclo de vida`,subagentLifecycleDelegationStarted:`Delegação iniciada`,subagentLifecycleDelegationCompleted:`Delegação concluída`,subagentLifecycleDelegationFailed:`Delegação falhou`,subagentLifecycleAttempt:`Tentativa {attempt}`,subagentLifecycleRecovered:`Resposta recuperada`,subagentLifecycleTimeout:`Tempo esgotado`,subagentLifecycleFallback:`Resposta fallback criada`},context:{label:`Contexto`,tokens:`~{used} / {limit} tokens`,modeStateful:`Stateful`,modeReplay:`Replay`,modeCompacted:`Compactado`,modeDegraded:`Degradado`,warning:`Esta conversa está se aproximando do limite de contexto do modelo.`,danger:`O MangoStudio pode precisar compactar ou sair do modo stateful.`,critical:`Esta conversa não pode mais permanecer stateful no provedor atual.`,keepHistory:`As mensagens originais continuam no histórico por padrão.`,compactAction:`Compactar e continuar`,newChatAction:`Iniciar chat resumido`,continueAction:`Continuar assim mesmo`,compactPending:`Compactando...`,newChatPending:`Iniciando chat...`,compactedSuccess:`Chat compactado`,summarizedChatSuccess:`Chat resumido iniciado`,compactFailed:`Falha ao compactar o chat`,summarizedChatFailed:`Falha ao iniciar o chat resumido`},fallback:{toReplay:`Continuação stateful não está mais disponível. Continuando com replay do transcript.`,generic:`Modo da conversa alterado de {from} para {to}.`},continuation:{title:{providerChanged:`Estado {fromProvider} {fromMode} não pode ser reutilizado por {provider}. Transcript reproduzido e continuação {provider} {toMode} iniciada.`,modelChanged:`Modelo alterado para {model}. Transcript reproduzido em {provider} {toMode}.`,systemPromptChanged:`System prompt alterado. Transcript reproduzido em {provider} {toMode}.`,toolsetChanged:`Conjunto de ferramentas alterado. Transcript reproduzido em {provider} {toMode}.`,agentChanged:`Agente alterado. Transcript reproduzido em {provider} {toMode}.`,agentRuntimeChanged:`Configurações do agente alteradas. Transcript reproduzido em {provider} {toMode}.`,cursorExpired:`Cursor {provider} {fromMode} expirou. Usando replay do transcript.`,cursorInvalid:`Cursor {provider} {fromMode} foi invalidado. Usando replay do transcript.`,toolResultCursorLoss:`Cursor {provider} {fromMode} perdido durante execução de ferramenta. Resposta pode estar incompleta.`,envelopeMalformed:`Estado de continuação armazenado era inválido. Reiniciando com replay do transcript.`},recovered:`(recuperado)`,notRecovered:`(não recuperado)`},cursorLost:`Cursor perdido — fallback para {detail}`,toolLoopExhausted:`Limite de iterações de ferramentas atingido`,genericFailure:`Falha na geração`,copyCode:`Copiar código`,codeCopied:`Copiado!`,copyMessage:`Copiar mensagem`,messageCopied:`Mensagem copiada!`,scrollToBottom:`Ir para o final`,emptyGreeting:`Olá, {name}!`,emptySubtitle:`Como posso te ajudar hoje?`,suggestion1:`Explique um conceito complexo de forma simples`,suggestion2:`Escreva um script em Python para...`,suggestion3:`Me ajude a depurar um problema`,suggestion4:`Crie uma imagem`,systemEvents:{chatCompacted:`Contexto compactado em um resumo`,summaryHandoff:`Este chat começou a partir de um resumo anterior`,cursorInternalToolCall:`Cursor usou {tool}`},titleGenerationFailed:`Falha ao gerar título do chat`},studio:{title:`Studio`,empty:`Espaço de criação de imagens — em breve.`},gallery:{title:`Galeria`,empty:`Suas criações aparecerão aqui.`,download:`Baixar imagem completa`,view:`Ver`},settings:{title:`Configurações`,tabs:{general:`Geral`,connectors:`Conectores`,providers:`Provedores`,appearance:`Aparência`,context:`Contexto`,agents:`Agentes`,prompts:`Prompts`,tools:`Ferramentas`,metrics:`Métricas`,logs:`Logs`},context:{title:`Contexto`,description:`Controle quando o MangoStudio avisa, compacta ou continua em um chat resumido.`,keepHistory:`A compactação mantém o transcript original salvo até você limpá-lo depois.`,behaviorLabel:`Comportamento de compactação`,behaviorDescription:`Escolha o que acontece quando uma conversa atinge o limite de aviso.`,behaviorOptions:{ask:`Perguntar sempre`,autoCompact:`Compactar o chat atual automaticamente`,newChat:`Continuar em um chat resumido`,off:`Desativar avisos`},providerCompactionLabel:`Permitir compactação pelo provider`,providerCompactionDescription:`Quando disponível, deixe o provider compactar o estado com cursor perto do limite de aviso.`,warningThresholdLabel:`Limite de aviso`,warningThresholdDescription:`Mostrar ações de compactação quando o uso de contexto atingir este valor.`,dangerThresholdLabel:`Limite de perigo`,dangerThresholdDescription:`Intensificar o aviso antes de atingir o limite crítico.`,hardStopThresholdLabel:`Limite crítico`,hardStopThresholdDescription:`Tratar a pressão de contexto como crítica neste valor ou acima dele.`,summaryModelLabel:`Modelo preferido para resumo`,summaryModelDescription:`Use o modelo atual do chat ou force um modelo de texto específico para os resumos.`,summaryModelCurrent:`Usar o modelo atual do chat`,thresholdHint:`{value}% do contexto`},prompts:{defaultPromptsLabel:`Prompts Padrão`,ruleFilesLabel:`Arquivos de Regras`,customRulesLabel:`Regras Personalizadas`,customRulesDescription:`Adicione caminhos para arquivos .md personalizados que serão incluídos nas requisições.`,textSystemPromptLabel:`System Prompt de Texto Padrão`,textSystemPromptPlaceholder:`ex. Você é um parceiro criativo útil. Seja conciso e perspicaz...`,imageSystemPromptLabel:`System Prompt de Imagem Padrão`,imageSystemPromptPlaceholder:`ex. Sempre gere imagens em estilo cinemático com iluminação dramática...`,agentsMdLabel:`AGENTS.md`,agentsMdDescription:`Regras do repositório definidas no arquivo AGENTS.md.`,claudeMdLabel:`CLAUDE.md`,claudeMdDescription:`Instruções globais definidas no arquivo CLAUDE.md.`,enabledLabel:`Ativado`,injectionRoleLabel:`Função de Injeção`,injectionRoleSystem:`Enviar como System Prompt`,injectionRoleUser:`Enviar como User Prompt`,frequencyLabel:`Frequência`,frequencyFirstTurn:`Enviar apenas no primeiro prompt`,frequencyFirstTurnHint:`Recomendado`,frequencyEveryTurn:`Enviar sempre`,addRule:`Adicionar Regra`,removeRule:`Remover`,rulePathLabel:`Caminho`,rulePathPlaceholder:`ex. ~/meus-projetos/regras.md`},agents:{title:`Agentes`,description:`Configure agentes integrados e agentes em Markdown para fluxos de trabalho.`,create:`Criar Agente`,createTitle:`Novo Agente`,newAgentName:`Novo Agente`,newAgentDescription:`Descreva quando este agente deve ser usado.`,builtIn:`Integrado`,user:`Usuário`,name:`Nome`,slug:`Slug do Arquivo`,agentDescription:`Descrição`,role:`Função`,roles:{primary:`Primário`,subagent:`Subagente`,both:`Ambos`},systemPrompt:`System Prompt`,model:`Modelo Sobrescrito`,modelDefaultOption:`Usar o modelo padrão do agente`,thinking:`Ativar Raciocínio`,reasoningEffort:`Esforço de Raciocínio`,reasoningEfforts:{low:`Baixo`,medium:`Médio`,high:`Alto`,xhigh:`Extra Alto`,max:`Máximo`},maxToolIterations:`Máx. Iterações de Ferramentas`,toolsEnabled:`Ferramentas Ativadas`,toolAllowlist:`Ferramentas Permitidas`,noTools:`Nenhuma ferramenta disponível.`,subagents:`Subagentes Permitidos`,noSubagents:`Nenhum subagente elegível existe ainda.`,path:`Caminho`,friendlyMode:`Campos`,rawMode:`Markdown`,rawMarkdown:`Markdown Bruto`,preview:`Pré-visualizar`,previewing:`Pré-visualizando...`,save:`Salvar`,saving:`Salvando...`,reset:`Restaurar`,delete:`Excluir`,cancel:`Cancelar`,retry:`Tentar novamente`,saved:`Agente salvo`,deleted:`Agente excluído`,previewed:`Markdown validado`,loadError:`Falha ao carregar agentes`,saveError:`Falha ao salvar agente`,createError:`Falha ao criar agente`,deleteError:`Falha ao excluir agente`,previewError:`Falha ao pré-visualizar agente`,deleteTitle:`Excluir agente`,deleteDescription:`Este agente em Markdown será removido do disco.`,deleteConfirm:`Excluir agente`,deleting:`Excluindo...`,sectionIdentity:`Identidade`,sectionBehavior:`Comportamento`,sectionReasoning:`Raciocínio`,sectionTools:`Ferramentas`,unsavedChanges:`Alterações não salvas`,confirmResetTitle:`Descartar alterações?`,confirmResetDescription:`Quaisquer alterações não salvas serão perdidas.`,confirmReset:`Descartar`,emptyStateTitle:`Nenhum agente ainda`,emptyStateDescription:`Crie seu primeiro agente para começar.`,selectAgent:`Selecionar um agente`,builtInAgents:`Agentes Integrados`,userAgents:`Agentes Personalizados`},general:{languageLabel:`Idioma`,languageDescription:`Idioma da interface do usuário`,textPromptLabel:`System Prompt de Texto Padrão`,textPromptPlaceholder:`ex. Você é um parceiro criativo útil. Seja conciso e perspicaz...`,imagePromptLabel:`System Prompt de Imagem Padrão`,imagePromptPlaceholder:`ex. Sempre gere imagens em estilo cinemático com iluminação dramática...`,imageQualityLabel:`Qualidade de Imagem Padrão`,maxToolIterationsLabel:`Iterações Máximas de Ferramentas`,maxToolIterationsDescription:`Limite máximo de rodadas de chamada de ferramentas que o modelo pode executar em um turno.`,maxToolIterationsHint:`{value} de 1000`,chatTitlesLabel:`Títulos dos Chats`,chatTitlesDescription:`Renomeie automaticamente novos chats com timestamp a partir do primeiro prompt do usuário.`,chatTitlesToggleLabel:`Renomear novos chats automaticamente`,chatTitleSourceLabel:`Origem do título`,chatTitleSourcePrompt:`Texto inicial do prompt`,chatTitleSourceModel:`Gerar com um modelo`,chatTitleModelLabel:`Modelo para título`,chatTitleModelDescription:`Use o modelo atual do chat ou force um modelo de texto específico para gerar títulos.`,chatTitleModelCurrent:`Usar o modelo atual do chat`,chatTitlePrefixLengthLabel:`Tamanho do título por prompt`,chatTitlePrefixLengthDescription:`Use os primeiros caracteres do prompt quando um chat com timestamp receber a primeira mensagem.`,chatTitlePrefixLengthHint:`{value} caracteres`,multiAgentLabel:`Turnos multiagente`,multiAgentDescription:`Permita que agentes deleguem trabalho delimitado a subagentes configurados durante um turno.`,multiAgentEnabledLabel:`Ativar delegação`,chatDelegationEnabledLabel:`Permitir delegação no modo Chat`,traceVisibilityLabel:`Visibilidade do trace`,traceVisibilityCompact:`Compacto`,traceVisibilityFull:`Completo`,traceVisibilityOff:`Desativado`,maxDepthLabel:`Profundidade máxima de delegação`,maxSubagentCallsLabel:`Máx. chamadas de subagentes`,timeoutLabel:`Timeout do subagente`,defaultMaxTurnsLabel:`Turnos padrão do subagente`,secondsHint:`{value}s`},connectors:{title:`Conectores de IA`,addButton:`Adicionar Conector`,emptyTitle:`Nenhum Conector Encontrado`,emptyDescription:`Adicione sua primeira chave de API para começar a gerar.`,deleteConfirm:`Tem certeza que deseja excluir este conector?`,addModalTitle:`Adicionar Conector`,addModalDescription:`Escolha o provider, configure a chave de API e o armazenamento.`,providerLabel:`Provider`,selectProvider:`Selecione o Provider`,baseUrlLabel:`URL Base`,baseUrlRequired:`URL Base é obrigatória para conectores OpenAI Compatível.`,baseUrlPlaceholder:`https://api.example.com/v1`,deepseekBaseUrlPlaceholder:`https://api.deepseek.com`,organizationIdLabel:`Organization ID (opcional)`,organizationIdPlaceholder:`org-...`,organizationIdHelper:`Necessário apenas para chaves associadas a uma organização específica.`,projectIdLabel:`Project ID (opcional)`,projectIdPlaceholder:`proj_...`,projectIdHelper:`Necessário para chaves de projeto restrito no OpenAI.`,nameLabel:`Nome`,namePlaceholder:`ex. Projeto Pessoal`,apiKeyLabel:`Chave de API`,apiKeyPlaceholder:`sk-...`,saveToLabel:`Salvar em`,sources:{bunSecrets:`Armazenamento Seguro do SO`,bunSecretsDesc:`Armazenamento seguro nativo`,configFile:`config.toml`,configFileDesc:`~/.mango/config.toml`,envFile:`Arquivo .env`,envFileDesc:`.env na raiz do app`},cancelButton:`Cancelar`,addConnectorButton:`Adicionar Conector`,validating:`Validando...`,cursorNodeRequired:`Você precisa do Node.js instalado para executar agentes Cursor SDK.`,cursorNodeNotFound:"Binário `node` não encontrado.",cursorNodeVersionInsufficient:`Node.js {minVersion}+ é necessário para agentes Cursor SDK (encontrado {version}).`,cursorSidecarMissing:`O script sidecar do Cursor SDK está ausente.`,cursorSidecarMissingAt:`O script sidecar do Cursor SDK está ausente em {path}.`,modalsModalTitle:`Escolher Modelos Disponíveis`,modelsModalTitle:`Escolher Modelos Disponíveis`,modelsModalDescription:`Os modelos habilitados para`,modelsModalDescriptionSuffix:`estarão disponíveis no chat.`,textModelsLabel:`Modelos de Texto`,imageModelsLabel:`Modelos de Imagem`,doneButton:`Concluído`,configureModels:`Configurar Modelos`,deleteConnector:`Excluir Conector`,sharedConnector:`Compartilhado`,managedExternally:`Gerenciado externamente via configuração do ambiente.`,sharedDeleteBlocked:`Este conector compartilhado precisa ser removido do arquivo de configuração.`,searchModelsPlaceholder:`Buscar modelos por nome ou ID...`,noModelsDiscovered:`Nenhum modelo foi descoberto para este conector ainda.`,addSuccess:`Conector adicionado com sucesso!`,deleteSuccess:`Conector excluído com sucesso!`,updateModelsSuccess:`Modelos atualizados com sucesso!`,errorRequired:`Nome e Chave de API são obrigatórios.`,failedToLoad:`Falha ao carregar conectores`,failedToAdd:`Falha ao adicionar conector`,failedToDelete:`Falha ao excluir conector`,failedToUpdateModels:`Falha ao atualizar modelos`,unknownError:`Ocorreu um erro desconhecido`,noSearchResults:`Nenhum modelo corresponde à sua pesquisa`},providers:{title:`Provedores de IA`,backToMenu:`Voltar para provedores`,sectionReasoning:`Raciocínio`,sectionTools:`Configuração de Ferramentas`,sectionCache:`Cache de Prompt`,sectionAdvanced:`Avançado`,save:`Salvar`,saving:`Salvando...`,cancel:`Cancelar`,reset:`Restaurar padrões`,saved:`Configurações salvas`,saveError:`Falha ao salvar configurações do provedor`,loadError:`Falha ao carregar provedores`,invalidProvider:`Provedor não encontrado`,perProviderSettings:`Configurações por provedor substituem os padrões globais.`,noProviders:`Nenhum provedor de IA disponível.`,modelsEnabled:`{count} modelos habilitados`,connectorsCount:`{count} conectores`,thinkingEnabled:`Ativar raciocínio`,reasoningEffort:`Esforço de raciocínio`,maxOutputTokens:`Máx. tokens de saída`,maxToolIterations:`Máx. iterações de ferramentas`,parallelToolCalls:`Chamadas paralelas de ferramentas`,compaction:`Compactação pelo provedor`,cachePreference:`Preferência de cache de prompt`,cacheAuto:`Automático`,cacheStablePrefix:`Prefixo estável`,cacheOff:`Desligado`,capabilityThinking:`Raciocínio`,capabilityTools:`Ferramentas`,capabilityCaching:`Cache`,capabilityCompaction:`Compactação`,reservedForFuture:`Reservado para configurações futuras`,maxOutputTokensPlaceholder:`1 – {limit}`},tools:{title:`Ferramentas`,description:`Ative ou desative ferramentas e configure seus parâmetros.`,categories:{system:`Sistema`,image:`Imagem`,interaction:`Interação`},enabled:`Ativada`,disabled:`Desativada`,cannotDisable:`Esta ferramenta não pode ser desativada.`,save:`Salvar`,saving:`Salvando...`,saved:`Configurações salvas`,saveError:`Falha ao salvar configurações da ferramenta`,loadError:`Falha ao carregar ferramentas`,noTools:`Nenhuma ferramenta disponível.`,maxToolIterationsLabel:`Iterações Máximas de Ferramentas`,maxToolIterationsDescription:`Limite máximo de rodadas de chamada de ferramentas que o modelo pode executar em um turno.`,maxToolIterationsHint:`{value} de 1000`,executionTitle:`Execução`,autoModelOption:`Automático (primeiro disponível)`,letAiDecideQualityLabel:`IA decide a qualidade`,letAiDecideQualityDescription:`Quando ativado, a IA pode escolher diferentes tamanhos de imagem por solicitação.`,toolNames:{readFile:`Ler arquivo`,writeFile:`Escrever arquivo`,listDirectory:`Listar diretório`,glob:`Glob`,grep:`Grep`},toolDescriptions:{readFile:`Permite que a IA leia arquivos de texto do disco.`,writeFile:`Permite que a IA escreva conteúdo de texto em arquivos no disco.`,listDirectory:`Permite que a IA liste arquivos e diretórios no disco.`,glob:`Permite que a IA encontre arquivos e diretórios por padrão glob.`,grep:`Permite que a IA pesquise o conteúdo de arquivos com expressões regulares.`},parameters:{allowedPathsLabel:`Caminhos permitidos`,allowedPathsDescription:`Caminhos que a ferramenta pode acessar. Deixe vazio para permitir todos.`,deniedPathsLabel:`Caminhos negados`,deniedPathsDescription:`Caminhos que a ferramenta não pode acessar. Deixe vazio para não negar nenhum.`},pathList:{add:`Adicionar`,edit:`Editar`,delete:`Excluir`,save:`Salvar`,cancel:`Cancelar`,pathPlaceholder:`ex. /home/usuario/projetos`,noPaths:`Nenhum caminho configurado.`}},metrics:{title:`Métricas`,description:`Contadores em memória para taxa de acerto de cache dos providers e total de timeouts de probes.`,refresh:`Atualizar`,failedToLoad:`Falha ao carregar métricas`,empty:`Nenhuma métrica de provider foi registrada ainda.`,generatedAtLabel:`Última atualização: {value}`,totalProbeTimeoutsLabel:`Timeouts de probe: {value}`,cacheSectionTitle:`Taxa de Acerto de Cache`,probeSectionTitle:`Timeouts de Probe por Operação`,cacheLabel:`Cache`,hitsLabel:`Acertos`,missesLabel:`Falhas`,hitRateLabel:`Taxa de acerto`,caches:{sdkClient:`Cliente SDK`,preparedRuntime:`Runtime preparado`,providerRoute:`Roteamento do provider`},operations:{healthcheck:`Healthcheck`,modelList:`Listagem de modelos`}},logs:{title:`Logs`,description:`Timeouts recentes de probes de provider capturados pelo processo atual.`,refresh:`Atualizar`,failedToLoad:`Falha ao carregar logs`,empty:`Nenhum evento recente de timeout de probe de provider.`,providerLabel:`Provider`,operationLabel:`Operação`,eventKinds:{probeTimeout:`Timeout de probe`},operations:{healthcheck:`Healthcheck`,modelList:`Listagem de modelos`}},appearance:{title:`Aparência`,appTheme:{label:`Tema do Aplicativo`,description:`Escolha o tema visual para o aplicativo`,dark:`Escuro`,light:`Claro`,system:`Sistema`,comingSoon:`Em breve`},fontSize:{label:`Tamanho de Fonte`,description:`Ajuste o tamanho do texto nas mensagens do chat`,small:`Pequeno`,default:`Padrão`,large:`Grande`},chatDensity:{label:`Densidade do Chat`,description:`Controle o espaçamento entre as mensagens`,compact:`Compacto`,default:`Padrão`,comfortable:`Confortável`},codeTheme:{label:`Tema de Código`,description:`Escolha o tema de destaque de sintaxe para blocos de código`,auto:`Automático (seguir tema do app)`,manual:`Manual`,darkPreference:`Preferência escura`,lightPreference:`Preferência clara`,oneDarkPro:`One Dark Pro`,githubDarkDimmed:`GitHub Dark Dimmed`,githubLight:`GitHub Light`,oneLight:`One Light`}},app:{loadError:`Falha ao carregar configurações do app`,saveError:`Falha ao salvar configurações do app`}},common:{loading:`Carregando...`,appName:`Mango Studio`,downloadFilenamePrefix:`mangostudio`,mangoStudioLogo:`Logo do Mango Studio`,retry:`Tentar novamente`,noResultsFor:`Nenhum resultado para "{query}"`,contextIndicator:`Indicador de uso de contexto`,settingsNavigation:`Navegação de configurações`,openMenu:`Abrir menu`,closeMenu:`Fechar menu`,disclaimer:`A Inteligencia Artificial pode cometer erros, verifique os resultados com cautela`},providers:{gemini:`Google Gemini`,anthropic:`Anthropic`,openai:`OpenAI`,"openai-compatible":`OpenAI Compatível`,deepseek:`DeepSeek`,cursor:`Cursor`,openrouter:`OpenRouter`},thinking:{label:`Processo de raciocínio`,labelContinued:`Continuação do raciocínio`,streaming:`Pensando...`,streamingContinued:`Pensando novamente...`,toggle:`Ver raciocínio`,enable:`Raciocinar`,enabled:`Raciocínio ativo`,disabled:`Raciocínio desativado`,effort:`Esforço`,effortLow:`Baixo`,effortMedium:`Médio`,effortHigh:`Alto`,effortXHigh:`Extra Alto`,effortMax:`Máximo`,reasoningBadge:`Reasoning`},tools:{calling:`Chamando...`,running:`Executando ferramenta`,done:`Concluído`,error:`Erro na ferramenta`,moreCount:`+{count} mais`,argsLabel:`argumentos`,errorLabel:`erro`,resultLabel:`resultado`,labels:{list_directory:`Listar`,read_file:`Leu`,write_file:`Escreveu`,glob:`Glob`,grep:`Grep`,generate_image:`Gerar Imagem`,get_current_datetime:`Data`,bash:`Bash`,zsh:`Zsh`,powershell:`PowerShell`}},errors:{unknown:`Ocorreu um erro desconhecido`,imageNotSupported:`Este provider não suporta geração de imagens.`,referenceImageUploadFailed:`Falha ao enviar a imagem de referência. Tente novamente.`,textGenerationFailed:`Falha ao obter uma resposta. Tente novamente.`,imageGenerationFailed:`Falha ao gerar imagem. Tente novamente.`,streamRequestFailed:`Falha na requisição de stream`,streamResponseNoBody:`Resposta do stream sem corpo`},models:{loading:`Carregando modelos...`,unavailable:`Modelos indisponíveis`,noModelsAvailable:`Nenhum modelo disponível`,preview:`Pré-visualização`},api:{unauthorized:`Unauthorized`},generation:{toolLoopExhausted:`O modelo excedeu o número máximo de interações com ferramentas.`}},dt=`mangostudio:locale`,ft={"pt-BR":ut,en:I};function pt(){let e=localStorage.getItem(dt);return e===`pt-BR`||e===`en`?e:navigator.language.startsWith(`pt`)?`pt-BR`:`en`}var mt=(0,N.createContext)(null);function ht({children:e}){let[t,n]=(0,N.useState)(()=>pt());return(0,F.jsx)(mt,{value:{t:(0,N.useMemo)(()=>ft[t],[t]),locale:t,setLocale:(0,N.useCallback)(e=>{n(e),localStorage.setItem(dt,e)},[])},children:e})}function L(){let e=(0,N.use)(mt);if(!e)throw Error(`useI18n deve ser usado dentro de I18nProvider`);return e}var gt=`mango-studio-theme`,_t={mode:`auto`,darkTheme:`one-dark-pro`,lightTheme:`github-light`},vt={appTheme:`dark`,codeTheme:_t,fontSize:`default`,chatDensity:`default`},yt=(0,N.createContext)(null);function bt(){try{let e=localStorage.getItem(gt);if(e){let t=JSON.parse(e);return typeof t.codeTheme==`string`&&(t.codeTheme={..._t,darkTheme:t.codeTheme}),{...vt,...t}}}catch{}return vt}function xt({children:e}){let[t,n]=(0,N.useState)(bt),[r,i]=(0,N.useState)(()=>window.matchMedia(`(prefers-color-scheme: dark)`).matches),a=(0,N.useMemo)(()=>t.appTheme===`system`?r?`dark`:`light`:t.appTheme,[t.appTheme,r]),o=(0,N.useMemo)(()=>t.codeTheme.mode===`manual`||a===`dark`?t.codeTheme.darkTheme:t.codeTheme.lightTheme,[t.codeTheme,a]);(0,N.useEffect)(()=>{try{localStorage.setItem(gt,JSON.stringify(t))}catch{}document.documentElement.dataset.theme=a,document.documentElement.dataset.fontSize=t.fontSize,document.documentElement.dataset.chatDensity=t.chatDensity},[t,a]),(0,N.useEffect)(()=>{if(t.appTheme!==`system`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`),n=()=>i(e.matches);return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[t.appTheme]);let s=(0,N.useCallback)(e=>{n(t=>({...t,...e}))},[]);return(0,F.jsx)(yt,{value:(0,N.useMemo)(()=>({config:t,resolvedTheme:a,resolvedCodeTheme:o,setConfig:s}),[t,a,o,s]),children:e})}function St(){let e=(0,N.use)(yt);if(!e)throw Error(`useTheme must be used inside ThemeProvider`);return e}var Ct=te()({component:()=>(0,F.jsx)(Me,{client:ot,children:(0,F.jsx)(xt,{children:(0,F.jsx)(ht,{children:(0,F.jsx)(ct,{children:(0,F.jsx)(Oe,{})})})})})}),wt={primary:`bg-primary text-on-primary shadow-lg shadow-primary/20 hover:opacity-90`,secondary:`bg-surface-container-high text-on-surface hover:bg-surface-container-highest`,ghost:`text-on-surface/70 hover:text-on-surface hover:bg-surface-container-high`},Tt={sm:`px-3 py-1.5 text-xs`,md:`px-4 py-2 text-sm`};function R({variant:e=`primary`,size:t=`md`,loading:n=!1,disabled:r,className:i=``,children:a,...o}){return(0,F.jsxs)(`button`,{disabled:r||n,className:`
3
3
  inline-flex items-center justify-center gap-2 rounded-xl font-bold
4
4
  transition-all duration-200 active:scale-95 cursor-pointer
5
5
  disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100
@@ -15,13 +15,13 @@ import{a as e}from"./rolldown-runtime-BYbx6iT9.js";import{i as t,n,r,t as i}from
15
15
  ${r}
16
16
  `.trim(),...i}),t&&(0,F.jsx)(`p`,{className:`text-xs text-error`,children:t})]})}var Dt=`/assets/logo-DsGvk33E.png`;function Ot({className:e=``,alt:t}){let{t:n}=L();return(0,F.jsx)(`img`,{src:Dt,alt:t??n.common.mangoStudioLogo,className:`object-contain ${e}`,draggable:!1})}var kt=T(`/signup`)({component:At});function At(){let e=h(),{t}=L(),[n,r]=(0,N.useState)(``),[i,a]=(0,N.useState)(``),[o,s]=(0,N.useState)(``),[c,l]=(0,N.useState)(``),[u,d]=(0,N.useState)(!1),f=async r=>{r.preventDefault(),d(!0),l(``),await P.signUp.email({name:n,email:i,password:o},{onSuccess:()=>{e({to:`/`})},onError:e=>{l(e.error.message||t.auth.signupError)}}),d(!1)};return(0,F.jsx)(`div`,{className:`min-h-screen flex items-center justify-center bg-surface-dim px-4`,children:(0,F.jsx)(z,{variant:`glass`,className:`w-full max-w-sm`,children:(0,F.jsxs)(`form`,{id:`signup-form`,onSubmit:e=>void f(e),method:`post`,action:`#`,className:`space-y-5`,children:[(0,F.jsxs)(`div`,{className:`flex flex-col items-center gap-2 mb-4`,children:[(0,F.jsx)(Ot,{className:`w-24 h-24`}),(0,F.jsx)(`h1`,{className:`font-headline text-2xl font-semibold text-center text-on-surface`,children:t.auth.signupTitle})]}),c&&(0,F.jsx)(`p`,{className:`text-xs text-error text-center bg-error/10 rounded-lg px-3 py-2`,children:c}),(0,F.jsx)(B,{type:`text`,id:`name`,name:`name`,label:t.auth.nameLabel,placeholder:t.auth.namePlaceholder,value:n,onChange:e=>r(e.target.value),autoComplete:`name`,required:!0}),(0,F.jsx)(B,{type:`email`,id:`email`,name:`email`,label:t.auth.emailLabel,placeholder:t.auth.emailPlaceholder,value:i,onChange:e=>a(e.target.value),autoComplete:`email`,required:!0}),(0,F.jsx)(B,{type:`password`,id:`password`,name:`password`,label:t.auth.signupPasswordLabel,placeholder:t.auth.passwordPlaceholder,value:o,onChange:e=>s(e.target.value),autoComplete:`new-password`,minLength:8,required:!0}),(0,F.jsx)(R,{type:`submit`,variant:`primary`,loading:u,className:`w-full`,children:u?t.auth.signupLoading:t.auth.signupButton}),(0,F.jsxs)(`p`,{className:`text-sm text-center text-on-surface/50`,children:[t.auth.hasAccount,` `,(0,F.jsx)(ie,{to:`/login`,className:`text-primary hover:underline`,children:t.auth.loginLink})]})]})})})}var jt=/[\u0000-\u001F\u007F]/g;function Mt(e){if(!e)return`/`;let t=e.trim().replace(jt,``);if(!t)return`/`;if(t.startsWith(`/`))return t[1]===`/`||t[1]===`\\`?`/`:t;try{let e=new URL(t);return e.origin===window.location.origin&&e.pathname+e.search+e.hash||`/`}catch{return`/`}}var Nt=T(`/login`)({validateSearch:e=>typeof e.redirect==`string`?{redirect:Mt(e.redirect)}:{},component:Pt});function Pt(){let e=C(),{t}=L(),{data:n,isPending:r}=P.useSession(),{redirect:i}=Nt.useSearch(),[a,o]=(0,N.useState)(``),[s,c]=(0,N.useState)(``),[l,u]=(0,N.useState)(``),[d,f]=(0,N.useState)(!1);(0,N.useEffect)(()=>{!r&&n?.user&&e.history.push(i??`/`)},[n?.user,r,e,i]);let p=async e=>{e.preventDefault(),f(!0),u(``),await P.signIn.email({email:a,password:s},{onError:e=>{u(e.error.message||t.auth.loginError)}}),f(!1)};return(0,F.jsx)(`div`,{className:`min-h-screen flex items-center justify-center bg-surface-dim px-4`,children:(0,F.jsx)(z,{variant:`glass`,className:`w-full max-w-sm`,children:(0,F.jsxs)(`form`,{id:`login-form`,onSubmit:e=>void p(e),method:`post`,action:`#`,className:`space-y-5`,children:[(0,F.jsxs)(`div`,{className:`flex flex-col items-center gap-2 mb-4`,children:[(0,F.jsx)(Ot,{className:`w-24 h-24`}),(0,F.jsx)(`h1`,{className:`font-headline text-2xl font-semibold text-center text-on-surface`,children:t.auth.loginTitle})]}),l&&(0,F.jsx)(`p`,{className:`text-xs text-error text-center bg-error/10 rounded-lg px-3 py-2`,children:l}),(0,F.jsx)(B,{type:`email`,id:`email`,name:`email`,label:t.auth.emailLabel,placeholder:t.auth.emailPlaceholder,value:a,onChange:e=>o(e.target.value),autoComplete:`email`,required:!0}),(0,F.jsx)(B,{type:`password`,id:`password`,name:`password`,label:t.auth.passwordLabel,placeholder:t.auth.passwordPlaceholder,value:s,onChange:e=>c(e.target.value),autoComplete:`current-password`,required:!0}),(0,F.jsx)(R,{type:`submit`,variant:`primary`,loading:d,className:`w-full`,children:d?t.auth.loginLoading:t.auth.loginButton}),(0,F.jsxs)(`p`,{className:`text-sm text-center text-on-surface/50`,children:[t.auth.noAccount,` `,(0,F.jsx)(ie,{to:`/signup`,className:`text-primary hover:underline`,children:t.auth.signupLink})]})]})})})}var Ft=I.errors.unknown;function It(...e){return Ze(Xe(e))}function V(e,t=Ft){if(typeof e==`string`)return e||t;if(e&&typeof e==`object`){let t=e;if(typeof t.error==`string`&&t.error)return t.error}return t}var Lt={configured:!1,status:`idle`,allModels:[],textModels:[],imageModels:[],discoveredTextModels:[],discoveredImageModels:[]};function Rt(e,t){return!!e&&t.some(t=>t.modelId===e)}function zt(e,t){return e&&Rt(e,t)?e:t[0]?.modelId??``}function Bt(e,t,n){return e&&Rt(e,n)?e:zt(t,n)}function Vt(e,t){return e.status===`loading`?t.loading:e.status===`error`?t.unavailable:t.noModelsAvailable}function Ht({activeModel:e,activeModels:t,isDisabled:r,onSelect:a,modelCatalog:o,lockedProvider:s}){let[c,u]=(0,N.useState)(!1),d=(0,N.useRef)(null),{t:f}=L(),p=t.find(t=>t.modelId===e),m=Vt(o,{loading:f.models.loading,unavailable:f.models.unavailable,noModelsAvailable:f.models.noModelsAvailable});(0,N.useEffect)(()=>{function e(e){d.current&&!d.current.contains(e.target)&&u(!1)}return c&&document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[c]);let h=()=>{r||u(!c)},g=e=>{a(e),u(!1)},_=t.reduce((e,t)=>{let n=t.provider??`other`;return e[n]||(e[n]=[]),e[n].push(t),e},{}),v=e=>e in f.providers?f.providers[e]:e,y=e=>{let t=e.toLowerCase();return t.includes(`flash`)?(0,F.jsx)(Pe,{className:`w-3.5 h-3.5 text-amber-400`}):t.includes(`pro`)?(0,F.jsx)(Ye,{className:`w-3.5 h-3.5 text-primary`}):t.includes(`lite`)?(0,F.jsx)(Ve,{className:`w-3.5 h-3.5 text-emerald-400`}):(0,F.jsx)(A,{className:`w-3.5 h-3.5 text-blue-400`})};return(0,F.jsxs)(`div`,{className:`relative`,ref:d,children:[(0,F.jsxs)(`button`,{type:`button`,onClick:h,disabled:r,className:It(`flex items-center gap-2 px-3 py-1.5 rounded-lg transition-all duration-200 border border-transparent`,`group hover:bg-surface-container-high active:scale-95`,c&&`bg-surface-container-high border-primary/20`,r&&`opacity-50 cursor-not-allowed`),children:[(0,F.jsx)(`span`,{className:`font-headline text-lg font-bold tracking-tight text-on-background group-hover:text-primary transition-colors`,children:p?.displayName||m}),(0,F.jsx)(b,{className:It(`w-4 h-4 text-on-background/40 group-hover:text-primary transition-all duration-200`,c&&`rotate-180 text-primary`)})]}),(0,F.jsx)(n,{children:c&&(0,F.jsx)(i.div,{initial:{opacity:0,y:8,scale:.95},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:8,scale:.95},transition:{duration:.15,ease:`easeOut`},className:`dropdown-panel absolute left-0 top-full mt-3 w-[19rem] max-h-[70vh] hide-scrollbar overflow-y-auto`,children:(0,F.jsx)(`div`,{className:`py-2`,children:Object.keys(_).length===0?(0,F.jsx)(`div`,{className:`px-4 py-3 text-sm text-on-surface-variant italic`,children:f.models.noModelsAvailable}):Object.entries(_).map(([t,n])=>(0,F.jsxs)(`div`,{className:`mb-2 last:mb-0`,children:[(0,F.jsx)(`div`,{className:`px-4 py-1.5 text-[10px] font-bold uppercase tracking-wider text-on-surface-variant/50`,children:v(t)}),n.map(t=>{let n=s!=null&&t.provider!==s;return(0,F.jsxs)(`button`,{type:`button`,onClick:()=>!n&&g(t.modelId),disabled:n,className:It(`w-full flex items-center justify-between px-4 py-2.5 text-left transition-all duration-150`,!n&&`hover:bg-primary/10 active:bg-primary/20 group/item`,e===t.modelId&&!n&&`bg-primary/5`,n&&`opacity-40 cursor-not-allowed`),children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,F.jsx)(`div`,{className:`flex-shrink-0 w-5 h-5 flex items-center justify-center`,children:n?(0,F.jsx)(l,{className:`w-3.5 h-3.5 text-on-surface-variant`}):y(t.displayName)}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`div`,{className:It(`text-sm font-medium transition-colors`,e===t.modelId&&!n?`text-primary`:`text-on-surface group-hover/item:text-on-surface`),children:t.displayName}),(0,F.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[t.modelId.includes(`preview`)&&(0,F.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded-full bg-surface-container-highest text-on-surface-variant border border-outline-variant/30`,children:f.models.preview}),t.capabilities?.reasoning&&!n&&(0,F.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded-full bg-primary/15 text-primary border border-primary/30`,children:f.thinking.reasoningBadge})]})]})]}),e===t.modelId&&!n&&(0,F.jsx)(me,{className:`w-4 h-4 text-primary`})]},t.modelId)})]},t))})})})]})}function Ut({activeModel:e,activeModels:t,isModelSelectorDisabled:n,currentChatId:r,currentPage:i,onUpdateChatModel:a,onSetPageModel:o,onNewChat:s,onNavigateToSettings:c,modelCatalog:l,lockedProvider:u,onMobileMenuToggle:d}){let f=h(),{data:p}=P.useSession(),{toast:m}=lt(),{t:g}=L(),[_,v]=(0,N.useState)(!1);(0,N.useEffect)(()=>{_&&!p?.user&&f({to:`/login`})},[_,p?.user,f]);let y=async()=>{v(!0),await P.signOut({fetchOptions:{onError:()=>{v(!1),m(g.auth.logoutError,`error`)}}})};return(0,F.jsxs)(`header`,{className:`bg-surface-dim flex justify-between items-center px-3 sm:px-4 md:px-6 py-3 md:py-4 w-full sticky top-0 z-40 border-b border-outline-variant/10`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-2 sm:gap-3 md:gap-4 min-w-0 flex-1`,children:[(0,F.jsx)(`button`,{type:`button`,onClick:d,className:`md:hidden p-2 rounded-lg hover:bg-surface-container-high transition-colors text-on-surface shrink-0`,"aria-label":g.common.openMenu,children:(0,F.jsx)(qe,{size:20})}),i!==`studio`&&(0,F.jsx)(`div`,{className:`min-w-0 flex-1 max-w-[60vw] sm:max-w-none`,children:(0,F.jsx)(Ht,{activeModel:e,activeModels:t,isDisabled:n,onSelect:e=>r?a(r,e):o(e),modelCatalog:l,lockedProvider:u})})]}),(0,F.jsxs)(`div`,{className:`flex items-center gap-2 sm:gap-3 shrink-0 ml-2`,children:[i===`chat`&&(0,F.jsxs)(`button`,{type:`button`,onClick:s,className:`flex items-center gap-2 px-3 sm:px-4 py-2 rounded-full bg-surface-container-high hover:bg-surface-container-highest transition-colors text-sm font-medium text-on-surface active:scale-95 duration-200 shrink-0`,children:[(0,F.jsx)(ge,{size:16}),(0,F.jsx)(`span`,{className:`hidden sm:inline`,children:g.chat.newChat})]}),(0,F.jsx)(`button`,{type:`button`,onClick:c,className:`p-2 rounded-full transition-all duration-200 active:scale-95 shrink-0 ${i===`settings`?`bg-primary/10 text-primary`:`bg-surface-container-high text-on-surface hover:bg-surface-container-highest cursor-pointer`}`,title:g.settings.title,children:(0,F.jsx)(Se,{size:18})}),p?.user&&(0,F.jsxs)(`div`,{className:`flex items-center gap-2 sm:gap-3 ml-1 sm:ml-2 pl-2 sm:pl-4 border-l border-outline-variant/20 shrink-0`,children:[(0,F.jsx)(`span`,{className:`text-sm font-medium text-on-surface hidden md:inline max-w-[120px] truncate`,children:p.user.name}),(0,F.jsxs)(`button`,{type:`button`,onClick:()=>void y(),disabled:_,"data-testid":`logout-button`,className:`text-xs px-2 sm:px-3 py-1.5 rounded-full bg-surface-container-high hover:bg-surface-container-highest transition-colors cursor-pointer text-on-surface disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-1.5 shrink-0`,children:[_&&(0,F.jsx)(`span`,{className:`w-3 h-3 rounded-full border-2 border-current border-t-transparent animate-spin`}),(0,F.jsx)(`span`,{className:`hidden sm:inline`,children:_?g.auth.logoutLoading:g.auth.logoutButton}),(0,F.jsx)(`span`,{className:`sm:hidden`,children:_?g.auth.logoutLoading:g.auth.logoutButton.slice(0,4)})]})]})]})]})}function Wt({ratio:e,severity:t}){let{t:n}=L(),r=2.5,i=(20-r)/2,a=2*Math.PI*i,o=a*(1-Math.min(e,1)),s=Math.round(e*100),c=t===`critical`||t===`danger`?`stroke-error`:t===`warning`?`stroke-warning`:`stroke-primary`;return(0,F.jsxs)(`div`,{className:`relative flex items-center justify-center shrink-0`,style:{width:20,height:20},children:[(0,F.jsxs)(`svg`,{width:20,height:20,className:`-rotate-90`,children:[(0,F.jsx)(`title`,{children:n.common.contextIndicator}),(0,F.jsx)(`circle`,{cx:20/2,cy:20/2,r:i,fill:`none`,className:`stroke-on-surface/10`,strokeWidth:r}),(0,F.jsx)(`circle`,{cx:20/2,cy:20/2,r:i,fill:`none`,className:c,strokeWidth:r,strokeDasharray:a,strokeDashoffset:o,strokeLinecap:`round`})]}),(0,F.jsx)(`span`,{className:`absolute text-[7px] font-bold tabular-nums text-on-surface-variant`,children:s})]})}function Gt({currentPage:e,onNavigate:t,chats:n,currentChatId:r,onSelectChat:i,onUpdateChatTitle:a,onDeleteChat:o,onNewChat:s,contextCache:c,isMobileOpen:l=!1,onMobileClose:d}){let[f,p]=(0,N.useState)(null),[m,h]=(0,N.useState)(``),g=(0,N.useRef)(null),{toast:_}=lt(),{t:v}=L();(0,N.useEffect)(()=>{f&&g.current&&(g.current.focus(),g.current.select())},[f]);let y=(e,t)=>{t.stopPropagation(),p(e.id),h(e.title)},b=e=>{m.trim()&&m!==n.find(t=>t.id===e)?.title&&a(e,m.trim()),p(null)},x=()=>{p(null)},S=(e,t)=>{t.stopPropagation(),o(e),_(v.chat.deleted,`success`)},C=(e,t)=>{e.key===`Enter`?b(t):e.key===`Escape`&&x()},w=e=>{t(e),d?.()},T=t=>`flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-300 w-full text-left ${e===t?`text-primary bg-surface-container-high`:`text-on-surface/70 hover:bg-surface-container-high hover:text-on-surface`}`;return(0,F.jsxs)(F.Fragment,{children:[l&&(0,F.jsx)(`div`,{className:`fixed inset-0 bg-black/60 backdrop-blur-sm z-40 md:hidden`,onClick:d,"aria-hidden":`true`}),(0,F.jsxs)(`aside`,{className:`bg-surface-container-low flex-col h-full border-r border-outline-variant/20 w-64 fixed left-0 top-0 z-50 transition-transform duration-300 ease-out
17
17
  ${l?`flex translate-x-0`:`hidden -translate-x-full`} md:flex md:translate-x-0
18
- `,children:[(0,F.jsxs)(`div`,{className:`px-6 py-6 mb-4 flex items-center gap-3`,children:[(0,F.jsx)(Ot,{className:`w-10 h-10 shrink-0`}),(0,F.jsx)(`h1`,{className:`font-headline text-lg font-semibold text-on-background tracking-tight truncate`,children:v.common.appName}),(0,F.jsx)(`button`,{type:`button`,onClick:d,className:`ml-auto md:hidden p-2 rounded-lg hover:bg-surface-container-high transition-colors text-on-surface`,"aria-label":v.common.closeMenu,children:(0,F.jsx)(Be,{size:20})})]}),(0,F.jsx)(`div`,{className:`px-4 mb-4 flex items-center gap-2`,children:(0,F.jsxs)(`button`,{type:`button`,onClick:s,className:`flex-1 flex items-center justify-center gap-2 py-2.5 bg-primary text-on-primary rounded-xl font-bold transition-transform active:scale-95 shadow-lg shadow-primary/20`,children:[(0,F.jsx)(ge,{size:18}),(0,F.jsx)(`span`,{children:v.chat.newChat})]})}),(0,F.jsx)(`div`,{className:`px-4 mb-4 md:hidden`,"data-testid":`mobile-shortcuts`,children:(0,F.jsxs)(`div`,{className:`grid grid-cols-3 gap-2`,children:[(0,F.jsxs)(`button`,{type:`button`,onClick:()=>w(`studio`),className:`flex flex-col items-center justify-center gap-1 p-2 rounded-lg transition-all duration-200 text-xs font-medium ${e===`studio`?`text-primary bg-surface-container-high`:`text-on-surface/70 hover:bg-surface-container-high hover:text-on-surface`}`,children:[(0,F.jsx)(u,{size:20}),(0,F.jsx)(`span`,{children:v.studio.title})]}),(0,F.jsxs)(`button`,{type:`button`,onClick:()=>w(`gallery`),className:`flex flex-col items-center justify-center gap-1 p-2 rounded-lg transition-all duration-200 text-xs font-medium ${e===`gallery`?`text-primary bg-surface-container-high`:`text-on-surface/70 hover:bg-surface-container-high hover:text-on-surface`}`,children:[(0,F.jsx)(le,{size:20}),(0,F.jsx)(`span`,{children:v.gallery.title})]}),(0,F.jsxs)(`button`,{type:`button`,onClick:()=>w(`settings`),className:`flex flex-col items-center justify-center gap-1 p-2 rounded-lg transition-all duration-200 text-xs font-medium ${e===`settings`?`text-primary bg-surface-container-high`:`text-on-surface/70 hover:bg-surface-container-high hover:text-on-surface`}`,children:[(0,F.jsx)(Se,{size:20}),(0,F.jsx)(`span`,{children:v.settings.title})]})]})}),(0,F.jsxs)(`nav`,{className:`flex-1 px-4 overflow-y-auto hide-scrollbar space-y-1`,children:[(0,F.jsx)(`div`,{className:`text-xs font-label text-on-surface-variant/50 uppercase tracking-wider px-4 py-2 mt-2`,children:v.chat.sectionLabel}),n.map(t=>{let n=c?.get(t.id),a=()=>{f!==t.id&&(i(t.id),w(`chat`))};return(0,F.jsxs)(`div`,{role:`button`,tabIndex:0,className:`group relative flex items-center gap-3 px-4 py-2.5 rounded-lg transition-all duration-300 w-full text-left truncate cursor-pointer ${e===`chat`&&r===t.id?`text-primary bg-surface-container-high`:`text-on-surface/70 hover:bg-surface-container-high hover:text-on-surface`}`,onClick:a,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),a())},children:[n?(0,F.jsx)(Wt,{ratio:n.estimatedUsageRatio,severity:n.severity}):(0,F.jsx)(ve,{size:16,className:`shrink-0`}),f===t.id?(0,F.jsx)(`div`,{className:`flex items-center gap-1 w-full mr-1`,children:(0,F.jsx)(`input`,{ref:g,type:`text`,value:m,onChange:e=>h(e.target.value),onKeyDown:e=>C(e,t.id),onBlur:()=>b(t.id),className:`bg-surface-container-highest text-on-surface px-1 py-0.5 rounded border border-primary outline-none text-sm w-full`})}):(0,F.jsx)(`span`,{className:`font-body text-sm truncate flex-1`,children:t.title}),f!==t.id&&(0,F.jsxs)(`div`,{className:`opacity-0 group-hover:opacity-100 flex items-center gap-1 transition-opacity shrink-0`,children:[(0,F.jsx)(`button`,{type:`button`,onClick:e=>y(t,e),className:`p-1 hover:text-primary transition-colors`,title:v.chat.editTitle,children:(0,F.jsx)(Ge,{size:14})}),(0,F.jsx)(`button`,{type:`button`,onClick:e=>S(t.id,e),className:`p-1 hover:text-error transition-colors`,title:v.chat.deleteTitle,children:(0,F.jsx)(He,{size:14})})]})]},t.id)})]}),(0,F.jsxs)(`div`,{className:`p-4 mt-auto border-t border-outline-variant/10 space-y-1 hidden md:block`,children:[(0,F.jsxs)(`button`,{type:`button`,onClick:()=>w(`studio`),className:T(`studio`),children:[(0,F.jsx)(u,{size:18}),(0,F.jsx)(`span`,{className:`font-label font-medium text-sm`,children:v.studio.title})]}),(0,F.jsxs)(`button`,{type:`button`,onClick:()=>w(`gallery`),className:T(`gallery`),children:[(0,F.jsx)(le,{size:18}),(0,F.jsx)(`span`,{className:`font-label font-medium text-sm`,children:v.gallery.title})]}),(0,F.jsxs)(`button`,{type:`button`,onClick:()=>w(`settings`),className:T(`settings`),children:[(0,F.jsx)(Se,{size:18}),(0,F.jsx)(`span`,{className:`font-label font-medium text-sm`,children:v.settings.title})]})]})]})]})}function Kt({children:e,currentPage:t,onNavigate:n,chats:r,currentChatId:i,onSelectChat:a,onUpdateChatTitle:o,onDeleteChat:s,onNewChat:c,contextCache:l,isMobileSidebarOpen:u=!1,onMobileSidebarClose:d}){return(0,F.jsxs)(`div`,{className:`flex h-screen overflow-hidden bg-surface text-on-surface font-body selection:bg-primary/30`,children:[(0,F.jsx)(Gt,{currentPage:t,onNavigate:n,chats:r,currentChatId:i,onSelectChat:a,onUpdateChatTitle:o,onDeleteChat:s,onNewChat:c,contextCache:l,isMobileOpen:u,onMobileClose:d}),(0,F.jsx)(`main`,{className:`flex-1 md:ml-64 flex flex-col h-full relative w-full min-w-0`,children:e})]})}var qt={sm:`w-4 h-4`,md:`w-6 h-6`,lg:`w-10 h-10`};function Jt({size:e=`md`,className:t=``}){return(0,F.jsx)(`div`,{className:`${qt[e]} rounded-full border-2 border-primary border-t-transparent animate-spin ${t}`})}var Yt=!1;function Xt(){Yt||window.location.pathname===`/login`||window.location.pathname===`/signup`||(Yt=!0,setTimeout(()=>{at(),Yt=!1},100))}var H=$e(nt(),{fetcher:(async(e,t)=>{let n=await fetch(e,{...t,credentials:`include`});return n.status===401&&Xt(),n})}),U={all:[`chats`],lists:()=>[...U.all,`list`],list:e=>[...U.lists(),{filters:e}],details:()=>[...U.all,`detail`],detail:e=>[...U.details(),e]},Zt=()=>k({queryKey:U.lists(),queryFn:async()=>{let{data:e,error:t}=await H.api.chats.get();if(t)throw Error(V(t.value));return e}});function Qt(e,t){e.setQueriesData({queryKey:U.lists()},e=>t(e??[]))}function $t(e,t){return{...e,...t}}function en(){return O(Zt())}function tn(){let e=j();return D({mutationFn:async e=>{let{data:t,error:n}=await H.api.chats.post(e);if(n)throw Error(V(n.value));return t},onSuccess:t=>{e.setQueryData(U.detail(t.id),t),Qt(e,e=>[t,...e.filter(e=>e.id!==t.id)])}})}function nn(){let e=j();return D({mutationFn:async({id:e,updates:t})=>{let{data:n,error:r}=await H.api.chats({id:e}).put(t);if(r)throw Error(V(r.value));return n},onSuccess:(t,n)=>{e.setQueryData(U.detail(n.id),e=>e&&$t(e,n.updates)),Qt(e,e=>e.map(e=>e.id===n.id?$t(e,n.updates):e))}})}function rn(){let e=j();return D({mutationFn:async e=>{let{data:t,error:n}=await H.api.chats({id:e}).delete();if(n)throw Error(V(n.value));return t},onSuccess:(t,n)=>{e.removeQueries({queryKey:U.detail(n),exact:!0}),Qt(e,e=>e.filter(e=>e.id!==n))}})}var W={all:[`messages`],lists:()=>[...W.all,`list`],list:e=>[...W.lists(),e]},an=e=>Le({queryKey:W.list(e),queryFn:async({pageParam:t})=>{let n=t?{cursor:t,limit:`50`}:{limit:`50`},{data:r,error:i}=await H.api.chats({id:e}).messages.get({query:n});if(i)throw Error(V(i.value));return r},initialPageParam:null,getNextPageParam:e=>e.nextCursor});function on(e){return Ee({...an(e??``),enabled:!!e})}var sn={all:[`agent-settings`],list:()=>[...sn.all,`list`]};function cn(){return k({queryKey:sn.list(),staleTime:3e4,queryFn:async()=>{let{data:e,error:t}=await H.api.settings.agents.get();if(t)throw Error(V(t.value,I.settings.agents.loadError));return e}})}var G=1e3,ln=1e3,un=1e3,dn=1e3,fn=1e3,pn=1e3,mn=`New Chat`,hn=/^New Chat \[[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}\]$/;function gn(e){return String(e).padStart(2,`0`)}function _n(e=new Date){return`${mn} [${e.getFullYear()}-${gn(e.getMonth()+1)}-${gn(e.getDate())} ${gn(e.getHours())}:${gn(e.getMinutes())}]`}function vn(e){return hn.test(e)}function yn(e){if(!Number.isFinite(e))return 30;let t=Math.round(e);return t<10?10:t>80?80:t}function bn(e,t=30){let n=e.replace(/\s+/g,` `).trim();if(n.length===0)return null;let r=yn(t);return n.length<=r?n:`${n.slice(0,r).trimEnd()}...`}var xn=`current_model`,Sn=[`512px`,`1K`,`2K`,`4K`],Cn={textSystemPrompt:``,imageSystemPrompt:``,agentsMd:{id:`agentsMd`,label:`AGENTS.md`,path:`~/.mango/AGENTS.md`,enabled:!1,injectionRole:`system`,sendFrequency:`first-turn`},claudeMd:{id:`claudeMd`,label:`CLAUDE.md`,path:`~/.claude/CLAUDE.md`,enabled:!1,injectionRole:`system`,sendFrequency:`first-turn`},customRules:[]},K={compactionBehavior:`ask`,warningThreshold:.85,dangerThreshold:.92,hardStopThreshold:.97,preferredSummaryModel:`current_model`,providerCompactionEnabled:!0},wn={autoRenameEnabled:!0,strategy:`prompt_prefix`,promptPrefixLength:30,preferredModel:xn},q={enabled:!0,chatDelegationEnabled:!1,traceVisibility:`compact`,maxDepth:1,maxSubagentCalls:dn,timeoutMs:900*1e3,defaultMaxTurns:pn},J={promptSettings:Cn,globalImageQuality:`1K`,thinkingEnabled:!1,reasoningEffort:`medium`,maxToolIterations:ln,multiAgentSettings:q,contextSettings:K,chatTitleSettings:wn};function Tn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function En(e){return e===`system`||e===`user`}function Dn(e){return e===`first-turn`||e===`every-turn`}function On(e){return e===`ask`||e===`auto_compact_current_chat`||e===`continue_with_summary_new_chat`||e===`off`}function kn(e){return e===`low`||e===`medium`||e===`high`||e===`xhigh`||e===`max`}function An(e){return typeof e==`string`&&Sn.includes(e)}function jn(e){return e===`prompt_prefix`||e===`model`}function Mn(e){return e===`compact`||e===`full`||e===`off`}function Nn(e,t){return Number.isFinite(e)?Math.min(.99,Math.max(.5,Math.round(e*100)/100)):t}function Pn(e,t,n,r){return typeof e!=`number`||!Number.isFinite(e)?t:Math.min(r,Math.max(n,Math.round(e)))}function Fn(e,t){return Tn(e)?{id:typeof e.id==`string`&&e.id.length>0?e.id:t.id,label:typeof e.label==`string`?e.label:t.label,path:typeof e.path==`string`?e.path:t.path,enabled:typeof e.enabled==`boolean`?e.enabled:t.enabled,injectionRole:En(e.injectionRole)?e.injectionRole:t.injectionRole,sendFrequency:Dn(e.sendFrequency)?e.sendFrequency:t.sendFrequency}:t}function In(e){return Tn(e)?{textSystemPrompt:typeof e.textSystemPrompt==`string`?e.textSystemPrompt:``,imageSystemPrompt:typeof e.imageSystemPrompt==`string`?e.imageSystemPrompt:``,agentsMd:Fn(e.agentsMd,Cn.agentsMd),claudeMd:Fn(e.claudeMd,Cn.claudeMd),customRules:Array.isArray(e.customRules)?e.customRules.map((e,t)=>Fn(e,{id:`custom-rule-${t+1}`,label:``,path:``,enabled:!1,injectionRole:`system`,sendFrequency:`first-turn`})):[]}:Cn}function Ln(e){if(!Number.isFinite(e))return ln;let t=Math.round(e);return t<1?1:t>1e3?G:t}function Rn(e){if(!Tn(e))return K;let[t,n,r]=[Nn(typeof e.warningThreshold==`number`?e.warningThreshold:K.warningThreshold,K.warningThreshold),Nn(typeof e.dangerThreshold==`number`?e.dangerThreshold:K.dangerThreshold,K.dangerThreshold),Nn(typeof e.hardStopThreshold==`number`?e.hardStopThreshold:K.hardStopThreshold,K.hardStopThreshold)].sort((e,t)=>e-t);return{compactionBehavior:On(e.compactionBehavior)?e.compactionBehavior:K.compactionBehavior,warningThreshold:t,dangerThreshold:n,hardStopThreshold:r,preferredSummaryModel:typeof e.preferredSummaryModel==`string`&&e.preferredSummaryModel.length>0?e.preferredSummaryModel:K.preferredSummaryModel,providerCompactionEnabled:typeof e.providerCompactionEnabled==`boolean`?e.providerCompactionEnabled:K.providerCompactionEnabled}}function zn(e){return Tn(e)?{autoRenameEnabled:typeof e.autoRenameEnabled==`boolean`?e.autoRenameEnabled:wn.autoRenameEnabled,strategy:jn(e.strategy)?e.strategy:wn.strategy,promptPrefixLength:yn(typeof e.promptPrefixLength==`number`?e.promptPrefixLength:wn.promptPrefixLength),preferredModel:typeof e.preferredModel==`string`&&e.preferredModel.length>0?e.preferredModel:wn.preferredModel}:wn}function Bn(e){return Tn(e)?{enabled:typeof e.enabled==`boolean`?e.enabled:q.enabled,chatDelegationEnabled:typeof e.chatDelegationEnabled==`boolean`?e.chatDelegationEnabled:q.chatDelegationEnabled,traceVisibility:Mn(e.traceVisibility)?e.traceVisibility:q.traceVisibility,maxDepth:Pn(e.maxDepth,q.maxDepth,0,3),maxSubagentCalls:Pn(e.maxSubagentCalls,q.maxSubagentCalls,0,un),timeoutMs:Pn(e.timeoutMs,q.timeoutMs,1e3,36e5),defaultMaxTurns:Pn(e.defaultMaxTurns,q.defaultMaxTurns,1,fn)}:q}function Vn(e){return Tn(e)?{promptSettings:In(e.promptSettings),globalImageQuality:An(e.globalImageQuality)?e.globalImageQuality:J.globalImageQuality,thinkingEnabled:typeof e.thinkingEnabled==`boolean`?e.thinkingEnabled:J.thinkingEnabled,reasoningEffort:kn(e.reasoningEffort)?e.reasoningEffort:J.reasoningEffort,maxToolIterations:Ln(typeof e.maxToolIterations==`number`?e.maxToolIterations:J.maxToolIterations),multiAgentSettings:Bn(e.multiAgentSettings),contextSettings:Rn(e.contextSettings),chatTitleSettings:zn(e.chatTitleSettings)}:J}var Hn=M.Union([M.Literal(`chat`),M.Literal(`agent`),M.Literal(`image`)]),Un=M.Union([M.Literal(`image`),M.Literal(`text`),M.Literal(`pdf`),M.Literal(`data`),M.Literal(`unknown`)]),Wn=M.Union([M.Literal(`stateful`),M.Literal(`stateless-loop`),M.Literal(`replay`),M.Literal(`compacted`),M.Literal(`degraded`)]),Gn=M.Union([M.Literal(`normal`),M.Literal(`info`),M.Literal(`warning`),M.Literal(`danger`),M.Literal(`critical`)]),Kn=M.Union([M.Literal(`ask`),M.Literal(`auto_compact_current_chat`),M.Literal(`continue_with_summary_new_chat`),M.Literal(`off`)]),qn=M.Object({estimatedInputTokens:M.Number(),contextLimit:M.Number(),estimatedUsageRatio:M.Number(),mode:Wn,severity:Gn}),Jn=M.Object({compactionBehavior:Kn,warningThreshold:M.Number({minimum:.5,maximum:.99}),dangerThreshold:M.Number({minimum:.5,maximum:.99}),hardStopThreshold:M.Number({minimum:.5,maximum:.99}),preferredSummaryModel:M.String(),providerCompactionEnabled:M.Boolean()}),Yn=M.Object({id:M.String(),chatId:M.String(),messageId:M.Optional(M.Union([M.String(),M.Null()])),originalName:M.String(),mimeType:M.String(),sizeBytes:M.Number(),kind:Un,url:M.String(),createdAt:M.Number()});M.Object({attachment:Yn}),M.Object({title:M.String(),model:M.Optional(M.String())}),M.Object({prompt:M.String(),model:M.String()}),M.Object({title:M.String()}),M.Object({title:M.Optional(M.String()),model:M.Optional(M.String()),textModel:M.Optional(M.String()),imageModel:M.Optional(M.String()),lastUsedMode:M.Optional(Hn),selectedAgentId:M.Optional(M.String())}),M.Object({model:M.Optional(M.String())}),M.Object({model:M.Optional(M.String())}),M.Object({chatId:M.String(),summaryMessageId:M.String(),contextInfo:M.Union([qn,M.Null()])}),M.Object({id:M.String(),chatId:M.String(),role:M.Union([M.Literal(`user`),M.Literal(`ai`)]),text:M.String(),imageUrl:M.Optional(M.String()),referenceImage:M.Optional(M.String()),timestamp:M.Number(),isGenerating:M.Optional(M.Boolean()),generationTime:M.Optional(M.String()),modelName:M.Optional(M.String()),styleParams:M.Optional(M.Array(M.String())),interactionMode:M.Optional(Hn)}),M.Object({text:M.Optional(M.String()),imageUrl:M.Optional(M.String()),isGenerating:M.Optional(M.Boolean()),generationTime:M.Optional(M.String()),modelName:M.Optional(M.String()),styleParams:M.Optional(M.Array(M.String()))});var Xn=M.Union([M.Literal(`agents`),M.Literal(`claude`)]),Zn=M.Union([M.Literal(`system`),M.Literal(`user`)]),Qn=M.Union([M.Literal(`first-turn`),M.Literal(`every-turn`)]),$n=M.Object({id:M.String(),label:M.String(),path:M.String(),enabled:M.Boolean(),injectionRole:Zn,sendFrequency:Qn}),er=M.Object({textSystemPrompt:M.String(),imageSystemPrompt:M.String(),agentsMd:$n,claudeMd:$n,customRules:M.Array($n)}),tr=M.Object({kind:M.Optional(Xn),label:M.String(),path:M.String(),exists:M.Boolean(),readable:M.Boolean(),sizeBytes:M.Optional(M.Integer({minimum:0})),error:M.Optional(M.String())});M.Object({path:M.String({minLength:1})}),M.Composite([tr,M.Object({content:M.Optional(M.String()),truncated:M.Boolean()})]),M.Object({files:M.Array(tr)});function nr(e,t){return M.Unsafe(M.Array(e,t))}var rr=M.Union([M.Literal(`gemini`),M.Literal(`openai`),M.Literal(`openai-compatible`),M.Literal(`anthropic`),M.Literal(`deepseek`),M.Literal(`cursor`)]),ir=M.Literal(`provider`),Y=M.Union([M.Literal(`low`),M.Literal(`medium`),M.Literal(`high`),M.Literal(`xhigh`),M.Literal(`max`)]),ar=M.Union([M.Literal(`auto`),M.Literal(`stable-prefix`),M.Literal(`off`)]),or=M.Object({supportedEfforts:nr(Y,{minItems:1}),defaultEffort:Y,maxEffort:M.Optional(Y),thinkingToggleSupported:M.Boolean(),reasoningWithToolsSupported:M.Boolean()}),sr=M.Object({provider:rr,thinkingEnabled:M.Optional(M.Boolean()),reasoningEffort:M.Optional(Y),maxOutputTokens:M.Optional(M.Integer({minimum:1,maximum:1e6})),maxToolIterations:M.Optional(M.Integer({minimum:1,maximum:G})),providerCompactionEnabled:M.Optional(M.Boolean()),promptCachePreference:M.Optional(ar),parallelToolCallsEnabled:M.Optional(M.Boolean())}),cr=`22.13`,lr=M.Union([M.Literal(`cursor.node_not_found`),M.Literal(`cursor.version_insufficient`),M.Literal(`cursor.sidecar_missing`),M.Literal(`cursor.sdk_missing`),M.Literal(`cursor.sdk_incomplete`),M.Literal(`cursor.native_runtime_missing`)]),ur=M.Object({foundVersion:M.Optional(M.String()),packageName:M.Optional(M.String()),sidecarPath:M.Optional(M.String())});M.Object({thinkingEnabled:M.Optional(M.Boolean()),reasoningEffort:M.Optional(Y),maxOutputTokens:M.Optional(M.Integer({minimum:1,maximum:1e6})),maxToolIterations:M.Optional(M.Integer({minimum:1,maximum:G})),providerCompactionEnabled:M.Optional(M.Boolean()),promptCachePreference:M.Optional(ar),parallelToolCallsEnabled:M.Optional(M.Boolean())});var dr=M.Object({provider:rr,displayName:M.String(),scope:ir,reasoning:or,promptCachingSupported:M.Boolean(),toolUseSupported:M.Boolean(),structuredOutputSupported:M.Boolean(),maxOutputTokensLimit:M.Integer({minimum:1}),settings:sr,runtimeAvailable:M.Boolean(),runtimeUnavailableReason:M.Optional(lr),runtimeUnavailableReasonParams:M.Optional(ur)});M.Object({providers:M.Array(dr)});var fr=M.Union([M.Literal(`512px`),M.Literal(`1K`),M.Literal(`2K`),M.Literal(`4K`)]),pr=M.Object({autoRenameEnabled:M.Boolean(),strategy:M.Union([M.Literal(`prompt_prefix`),M.Literal(`model`)]),promptPrefixLength:M.Integer({minimum:10,maximum:80}),preferredModel:M.String()}),mr=M.Object({enabled:M.Boolean(),chatDelegationEnabled:M.Boolean(),traceVisibility:M.Union([M.Literal(`compact`),M.Literal(`full`),M.Literal(`off`)]),maxDepth:M.Integer({minimum:0,maximum:3}),maxSubagentCalls:M.Integer({minimum:0,maximum:un}),timeoutMs:M.Integer({minimum:1e3,maximum:36e5}),defaultMaxTurns:M.Integer({minimum:1,maximum:fn})});M.Object({promptSettings:er,globalImageQuality:fr,thinkingEnabled:M.Boolean(),reasoningEffort:Y,maxToolIterations:M.Integer({minimum:1,maximum:G}),multiAgentSettings:mr,contextSettings:Jn,chatTitleSettings:pr});var X={all:[`app-settings`],current:()=>[...X.all,`current`]};function hr(){return k({queryKey:X.current(),staleTime:3e4,queryFn:async()=>{let{data:e,error:t}=await H.api.settings.app.get();if(t)throw Error(V(t.value,I.settings.app.loadError));return Vn(e??J)}})}function gr(){let[e,t]=(0,N.useState)(null),{data:n,isLoading:r,error:i,refetch:a}=en(),o=tn(),s=nn(),c=rn(),l=(0,N.useMemo)(()=>n||[],[n]),u=i?i.message:null,d=e??(l.length>0?l[0].id:null),f=(0,N.useCallback)(async()=>{await a()},[a]),p=(0,N.useCallback)(async e=>{let n=await o.mutateAsync({title:e||_n()});return t(n.id),n},[o]),m=(0,N.useCallback)(async(e,t,n)=>{await s.mutateAsync({id:e,updates:{[t]:n}})},[s]),h=(0,N.useCallback)(async(e,t)=>{await s.mutateAsync({id:e,updates:{title:t}})},[s]),g=(0,N.useCallback)(async(e,t)=>{await s.mutateAsync({id:e,updates:t})},[s]),_=(0,N.useCallback)(async n=>{if(await c.mutateAsync(n),e===n){let e=l.filter(e=>e.id!==n);t(e.length>0?e[0].id:null)}},[c,e,l]),v=(0,N.useCallback)(e=>{t(e)},[]);return{chats:l,currentChatId:d,currentChat:l.find(e=>e.id===d)||null,isLoading:r,error:u,loadChats:f,createChat:p,updateChatModel:m,updateChatTitle:h,updateChatAgentSelection:g,deleteChat:_,selectChat:v,setCurrentChatId:t}}function _r(){let e=j();return{appendOptimisticMessages:(0,N.useCallback)((t,n)=>{e.setQueryData(W.list(t),e=>{let t=e??{pages:[{messages:[],nextCursor:null}],pageParams:[null]},r=t.pages[0];return r?{...t,pages:[{...r,messages:[...r.messages,...n]},...t.pages.slice(1)]}:t})},[e]),replaceOptimisticMessages:(0,N.useCallback)((t,n,r)=>{e.setQueryData(W.list(t),e=>{if(!e)return{pages:[{messages:r,nextCursor:null}],pageParams:[null]};let t=e.pages.map(t=>{let i=t.messages.filter(e=>!n.includes(e.id));return{...t,messages:t===e.pages[0]?[...i,...r]:i}});return{...e,pages:t}})},[e]),updateOptimisticMessage:(0,N.useCallback)((t,n,r)=>{e.setQueryData(W.list(t),e=>{if(!e)return e;let t=e.pages.map(e=>({...e,messages:e.messages.map(e=>e.id===n?{...e,...r}:e)}));return{...e,pages:t}})},[e])}}var vr=[`chat`,`default`,`explore`],yr=/^user:[a-z0-9]+(?:-[a-z0-9]+)*$/,br=Object.freeze({id:`chat`,name:`Chat`,description:`General-purpose conversational chat agent.`,kind:`builtin`,role:`primary`,source:{type:`builtin`},systemPrompt:``,toolNames:[],toolsEnabled:!0,subagentIds:[],metadata:{}}),xr=Object.freeze({id:`default`,name:`Default`,description:`Default task-focused agent profile.`,kind:`builtin`,role:`both`,source:{type:`builtin`},systemPrompt:``,toolNames:[],toolsEnabled:!0,subagentIds:[`explore`],metadata:{}}),Sr=Object.freeze({id:`explore`,name:`Explore`,description:`Built-in subagent for bounded research and codebase exploration.`,kind:`builtin`,role:`subagent`,source:{type:`builtin`},systemPrompt:`Explore the requested problem space carefully. Gather relevant context, inspect available files or tools when useful, and return a concise, concrete final report.
18
+ `,children:[(0,F.jsxs)(`div`,{className:`px-6 py-6 mb-4 flex items-center gap-3`,children:[(0,F.jsx)(Ot,{className:`w-10 h-10 shrink-0`}),(0,F.jsx)(`h1`,{className:`font-headline text-lg font-semibold text-on-background tracking-tight truncate`,children:v.common.appName}),(0,F.jsx)(`button`,{type:`button`,onClick:d,className:`ml-auto md:hidden p-2 rounded-lg hover:bg-surface-container-high transition-colors text-on-surface`,"aria-label":v.common.closeMenu,children:(0,F.jsx)(Be,{size:20})})]}),(0,F.jsx)(`div`,{className:`px-4 mb-4 flex items-center gap-2`,children:(0,F.jsxs)(`button`,{type:`button`,onClick:s,className:`flex-1 flex items-center justify-center gap-2 py-2.5 bg-primary text-on-primary rounded-xl font-bold transition-transform active:scale-95 shadow-lg shadow-primary/20`,children:[(0,F.jsx)(ge,{size:18}),(0,F.jsx)(`span`,{children:v.chat.newChat})]})}),(0,F.jsx)(`div`,{className:`px-4 mb-4 md:hidden`,"data-testid":`mobile-shortcuts`,children:(0,F.jsxs)(`div`,{className:`grid grid-cols-3 gap-2`,children:[(0,F.jsxs)(`button`,{type:`button`,onClick:()=>w(`studio`),className:`flex flex-col items-center justify-center gap-1 p-2 rounded-lg transition-all duration-200 text-xs font-medium ${e===`studio`?`text-primary bg-surface-container-high`:`text-on-surface/70 hover:bg-surface-container-high hover:text-on-surface`}`,children:[(0,F.jsx)(u,{size:20}),(0,F.jsx)(`span`,{children:v.studio.title})]}),(0,F.jsxs)(`button`,{type:`button`,onClick:()=>w(`gallery`),className:`flex flex-col items-center justify-center gap-1 p-2 rounded-lg transition-all duration-200 text-xs font-medium ${e===`gallery`?`text-primary bg-surface-container-high`:`text-on-surface/70 hover:bg-surface-container-high hover:text-on-surface`}`,children:[(0,F.jsx)(le,{size:20}),(0,F.jsx)(`span`,{children:v.gallery.title})]}),(0,F.jsxs)(`button`,{type:`button`,onClick:()=>w(`settings`),className:`flex flex-col items-center justify-center gap-1 p-2 rounded-lg transition-all duration-200 text-xs font-medium ${e===`settings`?`text-primary bg-surface-container-high`:`text-on-surface/70 hover:bg-surface-container-high hover:text-on-surface`}`,children:[(0,F.jsx)(Se,{size:20}),(0,F.jsx)(`span`,{children:v.settings.title})]})]})}),(0,F.jsxs)(`nav`,{className:`flex-1 px-4 overflow-y-auto hide-scrollbar space-y-1`,children:[(0,F.jsx)(`div`,{className:`text-xs font-label text-on-surface-variant/50 uppercase tracking-wider px-4 py-2 mt-2`,children:v.chat.sectionLabel}),n.map(t=>{let n=c?.get(t.id),a=()=>{f!==t.id&&(i(t.id),w(`chat`))};return(0,F.jsxs)(`div`,{role:`button`,tabIndex:0,className:`group relative flex items-center gap-3 px-4 py-2.5 rounded-lg transition-all duration-300 w-full text-left truncate cursor-pointer ${e===`chat`&&r===t.id?`text-primary bg-surface-container-high`:`text-on-surface/70 hover:bg-surface-container-high hover:text-on-surface`}`,onClick:a,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),a())},children:[n?(0,F.jsx)(Wt,{ratio:n.estimatedUsageRatio,severity:n.severity}):(0,F.jsx)(ve,{size:16,className:`shrink-0`}),f===t.id?(0,F.jsx)(`div`,{className:`flex items-center gap-1 w-full mr-1`,children:(0,F.jsx)(`input`,{ref:g,type:`text`,value:m,onChange:e=>h(e.target.value),onKeyDown:e=>C(e,t.id),onBlur:()=>b(t.id),className:`bg-surface-container-highest text-on-surface px-1 py-0.5 rounded border border-primary outline-none text-sm w-full`})}):(0,F.jsx)(`span`,{className:`font-body text-sm truncate flex-1`,children:t.title}),f!==t.id&&(0,F.jsxs)(`div`,{className:`opacity-0 group-hover:opacity-100 flex items-center gap-1 transition-opacity shrink-0`,children:[(0,F.jsx)(`button`,{type:`button`,onClick:e=>y(t,e),className:`p-1 hover:text-primary transition-colors`,title:v.chat.editTitle,children:(0,F.jsx)(Ge,{size:14})}),(0,F.jsx)(`button`,{type:`button`,onClick:e=>S(t.id,e),className:`p-1 hover:text-error transition-colors`,title:v.chat.deleteTitle,children:(0,F.jsx)(He,{size:14})})]})]},t.id)})]}),(0,F.jsxs)(`div`,{className:`p-4 mt-auto border-t border-outline-variant/10 space-y-1 hidden md:block`,children:[(0,F.jsxs)(`button`,{type:`button`,onClick:()=>w(`studio`),className:T(`studio`),children:[(0,F.jsx)(u,{size:18}),(0,F.jsx)(`span`,{className:`font-label font-medium text-sm`,children:v.studio.title})]}),(0,F.jsxs)(`button`,{type:`button`,onClick:()=>w(`gallery`),className:T(`gallery`),children:[(0,F.jsx)(le,{size:18}),(0,F.jsx)(`span`,{className:`font-label font-medium text-sm`,children:v.gallery.title})]}),(0,F.jsxs)(`button`,{type:`button`,onClick:()=>w(`settings`),className:T(`settings`),children:[(0,F.jsx)(Se,{size:18}),(0,F.jsx)(`span`,{className:`font-label font-medium text-sm`,children:v.settings.title})]})]})]})]})}function Kt({children:e,currentPage:t,onNavigate:n,chats:r,currentChatId:i,onSelectChat:a,onUpdateChatTitle:o,onDeleteChat:s,onNewChat:c,contextCache:l,isMobileSidebarOpen:u=!1,onMobileSidebarClose:d}){return(0,F.jsxs)(`div`,{className:`flex h-screen overflow-hidden bg-surface text-on-surface font-body selection:bg-primary/30`,children:[(0,F.jsx)(Gt,{currentPage:t,onNavigate:n,chats:r,currentChatId:i,onSelectChat:a,onUpdateChatTitle:o,onDeleteChat:s,onNewChat:c,contextCache:l,isMobileOpen:u,onMobileClose:d}),(0,F.jsx)(`main`,{className:`flex-1 md:ml-64 flex flex-col h-full relative w-full min-w-0`,children:e})]})}var qt={sm:`w-4 h-4`,md:`w-6 h-6`,lg:`w-10 h-10`};function Jt({size:e=`md`,className:t=``}){return(0,F.jsx)(`div`,{className:`${qt[e]} rounded-full border-2 border-primary border-t-transparent animate-spin ${t}`})}var Yt=!1;function Xt(){Yt||window.location.pathname===`/login`||window.location.pathname===`/signup`||(Yt=!0,setTimeout(()=>{at(),Yt=!1},100))}var H=$e(nt(),{fetcher:(async(e,t)=>{let n=await fetch(e,{...t,credentials:`include`});return n.status===401&&Xt(),n})}),U={all:[`chats`],lists:()=>[...U.all,`list`],list:e=>[...U.lists(),{filters:e}],details:()=>[...U.all,`detail`],detail:e=>[...U.details(),e]},Zt=()=>k({queryKey:U.lists(),queryFn:async()=>{let{data:e,error:t}=await H.api.chats.get();if(t)throw Error(V(t.value));return e}});function Qt(e,t){e.setQueriesData({queryKey:U.lists()},e=>t(e??[]))}function $t(e,t){return{...e,...t}}function en(){return O(Zt())}function tn(){let e=j();return D({mutationFn:async e=>{let{data:t,error:n}=await H.api.chats.post(e);if(n)throw Error(V(n.value));return t},onSuccess:t=>{e.setQueryData(U.detail(t.id),t),Qt(e,e=>[t,...e.filter(e=>e.id!==t.id)])}})}function nn(){let e=j();return D({mutationFn:async({id:e,updates:t})=>{let{data:n,error:r}=await H.api.chats({id:e}).put(t);if(r)throw Error(V(r.value));return n},onSuccess:(t,n)=>{e.setQueryData(U.detail(n.id),e=>e&&$t(e,n.updates)),Qt(e,e=>e.map(e=>e.id===n.id?$t(e,n.updates):e))}})}function rn(){let e=j();return D({mutationFn:async e=>{let{data:t,error:n}=await H.api.chats({id:e}).delete();if(n)throw Error(V(n.value));return t},onSuccess:(t,n)=>{e.removeQueries({queryKey:U.detail(n),exact:!0}),Qt(e,e=>e.filter(e=>e.id!==n))}})}var W={all:[`messages`],lists:()=>[...W.all,`list`],list:e=>[...W.lists(),e]},an=e=>Le({queryKey:W.list(e),queryFn:async({pageParam:t})=>{let n=t?{cursor:t,limit:`50`}:{limit:`50`},{data:r,error:i}=await H.api.chats({id:e}).messages.get({query:n});if(i)throw Error(V(i.value));return r},initialPageParam:null,getNextPageParam:e=>e.nextCursor});function on(e){return Ee({...an(e??``),enabled:!!e})}var sn={all:[`agent-settings`],list:()=>[...sn.all,`list`]};function cn(){return k({queryKey:sn.list(),staleTime:3e4,queryFn:async()=>{let{data:e,error:t}=await H.api.settings.agents.get();if(t)throw Error(V(t.value,I.settings.agents.loadError));return e}})}var G=1e3,ln=1e3,un=1e3,dn=1e3,fn=1e3,pn=1e3,mn=`New Chat`,hn=/^New Chat \[[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}\]$/;function gn(e){return String(e).padStart(2,`0`)}function _n(e=new Date){return`${mn} [${e.getFullYear()}-${gn(e.getMonth()+1)}-${gn(e.getDate())} ${gn(e.getHours())}:${gn(e.getMinutes())}]`}function vn(e){return hn.test(e)}function yn(e){if(!Number.isFinite(e))return 30;let t=Math.round(e);return t<10?10:t>80?80:t}function bn(e,t=30){let n=e.replace(/\s+/g,` `).trim();if(n.length===0)return null;let r=yn(t);return n.length<=r?n:`${n.slice(0,r).trimEnd()}...`}var xn=`current_model`,Sn=[`512px`,`1K`,`2K`,`4K`],Cn={textSystemPrompt:``,imageSystemPrompt:``,agentsMd:{id:`agentsMd`,label:`AGENTS.md`,path:`~/.mango/AGENTS.md`,enabled:!1,injectionRole:`system`,sendFrequency:`first-turn`},claudeMd:{id:`claudeMd`,label:`CLAUDE.md`,path:`~/.claude/CLAUDE.md`,enabled:!1,injectionRole:`system`,sendFrequency:`first-turn`},customRules:[]},K={compactionBehavior:`ask`,warningThreshold:.85,dangerThreshold:.92,hardStopThreshold:.97,preferredSummaryModel:`current_model`,providerCompactionEnabled:!0},wn={autoRenameEnabled:!0,strategy:`prompt_prefix`,promptPrefixLength:30,preferredModel:xn},q={enabled:!0,chatDelegationEnabled:!1,traceVisibility:`compact`,maxDepth:1,maxSubagentCalls:dn,timeoutMs:900*1e3,defaultMaxTurns:pn},J={promptSettings:Cn,globalImageQuality:`1K`,thinkingEnabled:!1,reasoningEffort:`medium`,maxToolIterations:ln,multiAgentSettings:q,contextSettings:K,chatTitleSettings:wn};function Tn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function En(e){return e===`system`||e===`user`}function Dn(e){return e===`first-turn`||e===`every-turn`}function On(e){return e===`ask`||e===`auto_compact_current_chat`||e===`continue_with_summary_new_chat`||e===`off`}function kn(e){return e===`low`||e===`medium`||e===`high`||e===`xhigh`||e===`max`}function An(e){return typeof e==`string`&&Sn.includes(e)}function jn(e){return e===`prompt_prefix`||e===`model`}function Mn(e){return e===`compact`||e===`full`||e===`off`}function Nn(e,t){return Number.isFinite(e)?Math.min(.99,Math.max(.5,Math.round(e*100)/100)):t}function Pn(e,t,n,r){return typeof e!=`number`||!Number.isFinite(e)?t:Math.min(r,Math.max(n,Math.round(e)))}function Fn(e,t){return Tn(e)?{id:typeof e.id==`string`&&e.id.length>0?e.id:t.id,label:typeof e.label==`string`?e.label:t.label,path:typeof e.path==`string`?e.path:t.path,enabled:typeof e.enabled==`boolean`?e.enabled:t.enabled,injectionRole:En(e.injectionRole)?e.injectionRole:t.injectionRole,sendFrequency:Dn(e.sendFrequency)?e.sendFrequency:t.sendFrequency}:t}function In(e){return Tn(e)?{textSystemPrompt:typeof e.textSystemPrompt==`string`?e.textSystemPrompt:``,imageSystemPrompt:typeof e.imageSystemPrompt==`string`?e.imageSystemPrompt:``,agentsMd:Fn(e.agentsMd,Cn.agentsMd),claudeMd:Fn(e.claudeMd,Cn.claudeMd),customRules:Array.isArray(e.customRules)?e.customRules.map((e,t)=>Fn(e,{id:`custom-rule-${t+1}`,label:``,path:``,enabled:!1,injectionRole:`system`,sendFrequency:`first-turn`})):[]}:Cn}function Ln(e){if(!Number.isFinite(e))return ln;let t=Math.round(e);return t<1?1:t>1e3?G:t}function Rn(e){if(!Tn(e))return K;let[t,n,r]=[Nn(typeof e.warningThreshold==`number`?e.warningThreshold:K.warningThreshold,K.warningThreshold),Nn(typeof e.dangerThreshold==`number`?e.dangerThreshold:K.dangerThreshold,K.dangerThreshold),Nn(typeof e.hardStopThreshold==`number`?e.hardStopThreshold:K.hardStopThreshold,K.hardStopThreshold)].sort((e,t)=>e-t);return{compactionBehavior:On(e.compactionBehavior)?e.compactionBehavior:K.compactionBehavior,warningThreshold:t,dangerThreshold:n,hardStopThreshold:r,preferredSummaryModel:typeof e.preferredSummaryModel==`string`&&e.preferredSummaryModel.length>0?e.preferredSummaryModel:K.preferredSummaryModel,providerCompactionEnabled:typeof e.providerCompactionEnabled==`boolean`?e.providerCompactionEnabled:K.providerCompactionEnabled}}function zn(e){return Tn(e)?{autoRenameEnabled:typeof e.autoRenameEnabled==`boolean`?e.autoRenameEnabled:wn.autoRenameEnabled,strategy:jn(e.strategy)?e.strategy:wn.strategy,promptPrefixLength:yn(typeof e.promptPrefixLength==`number`?e.promptPrefixLength:wn.promptPrefixLength),preferredModel:typeof e.preferredModel==`string`&&e.preferredModel.length>0?e.preferredModel:wn.preferredModel}:wn}function Bn(e){return Tn(e)?{enabled:typeof e.enabled==`boolean`?e.enabled:q.enabled,chatDelegationEnabled:typeof e.chatDelegationEnabled==`boolean`?e.chatDelegationEnabled:q.chatDelegationEnabled,traceVisibility:Mn(e.traceVisibility)?e.traceVisibility:q.traceVisibility,maxDepth:Pn(e.maxDepth,q.maxDepth,0,3),maxSubagentCalls:Pn(e.maxSubagentCalls,q.maxSubagentCalls,0,un),timeoutMs:Pn(e.timeoutMs,q.timeoutMs,1e3,36e5),defaultMaxTurns:Pn(e.defaultMaxTurns,q.defaultMaxTurns,1,fn)}:q}function Vn(e){return Tn(e)?{promptSettings:In(e.promptSettings),globalImageQuality:An(e.globalImageQuality)?e.globalImageQuality:J.globalImageQuality,thinkingEnabled:typeof e.thinkingEnabled==`boolean`?e.thinkingEnabled:J.thinkingEnabled,reasoningEffort:kn(e.reasoningEffort)?e.reasoningEffort:J.reasoningEffort,maxToolIterations:Ln(typeof e.maxToolIterations==`number`?e.maxToolIterations:J.maxToolIterations),multiAgentSettings:Bn(e.multiAgentSettings),contextSettings:Rn(e.contextSettings),chatTitleSettings:zn(e.chatTitleSettings)}:J}var Hn=M.Union([M.Literal(`chat`),M.Literal(`agent`),M.Literal(`image`)]),Un=M.Union([M.Literal(`image`),M.Literal(`text`),M.Literal(`pdf`),M.Literal(`data`),M.Literal(`unknown`)]),Wn=M.Union([M.Literal(`stateful`),M.Literal(`stateless-loop`),M.Literal(`replay`),M.Literal(`compacted`),M.Literal(`degraded`)]),Gn=M.Union([M.Literal(`normal`),M.Literal(`info`),M.Literal(`warning`),M.Literal(`danger`),M.Literal(`critical`)]),Kn=M.Union([M.Literal(`ask`),M.Literal(`auto_compact_current_chat`),M.Literal(`continue_with_summary_new_chat`),M.Literal(`off`)]),qn=M.Object({estimatedInputTokens:M.Number(),contextLimit:M.Number(),estimatedUsageRatio:M.Number(),mode:Wn,severity:Gn}),Jn=M.Object({compactionBehavior:Kn,warningThreshold:M.Number({minimum:.5,maximum:.99}),dangerThreshold:M.Number({minimum:.5,maximum:.99}),hardStopThreshold:M.Number({minimum:.5,maximum:.99}),preferredSummaryModel:M.String(),providerCompactionEnabled:M.Boolean()}),Yn=M.Object({id:M.String(),chatId:M.String(),messageId:M.Optional(M.Union([M.String(),M.Null()])),originalName:M.String(),mimeType:M.String(),sizeBytes:M.Number(),kind:Un,url:M.String(),createdAt:M.Number()});M.Object({attachment:Yn}),M.Object({title:M.String(),model:M.Optional(M.String())}),M.Object({prompt:M.String(),model:M.String()}),M.Object({title:M.String()}),M.Object({title:M.Optional(M.String()),model:M.Optional(M.String()),textModel:M.Optional(M.String()),imageModel:M.Optional(M.String()),lastUsedMode:M.Optional(Hn),selectedAgentId:M.Optional(M.String())}),M.Object({model:M.Optional(M.String())}),M.Object({model:M.Optional(M.String())}),M.Object({chatId:M.String(),summaryMessageId:M.String(),contextInfo:M.Union([qn,M.Null()])}),M.Object({id:M.String(),chatId:M.String(),role:M.Union([M.Literal(`user`),M.Literal(`ai`)]),text:M.String(),imageUrl:M.Optional(M.String()),referenceImage:M.Optional(M.String()),timestamp:M.Number(),isGenerating:M.Optional(M.Boolean()),generationTime:M.Optional(M.String()),modelName:M.Optional(M.String()),styleParams:M.Optional(M.Array(M.String())),interactionMode:M.Optional(Hn)}),M.Object({text:M.Optional(M.String()),imageUrl:M.Optional(M.String()),isGenerating:M.Optional(M.Boolean()),generationTime:M.Optional(M.String()),modelName:M.Optional(M.String()),styleParams:M.Optional(M.Array(M.String()))});var Xn=M.Union([M.Literal(`agents`),M.Literal(`claude`)]),Zn=M.Union([M.Literal(`system`),M.Literal(`user`)]),Qn=M.Union([M.Literal(`first-turn`),M.Literal(`every-turn`)]),$n=M.Object({id:M.String(),label:M.String(),path:M.String(),enabled:M.Boolean(),injectionRole:Zn,sendFrequency:Qn}),er=M.Object({textSystemPrompt:M.String(),imageSystemPrompt:M.String(),agentsMd:$n,claudeMd:$n,customRules:M.Array($n)}),tr=M.Object({kind:M.Optional(Xn),label:M.String(),path:M.String(),exists:M.Boolean(),readable:M.Boolean(),sizeBytes:M.Optional(M.Integer({minimum:0})),error:M.Optional(M.String())});M.Object({path:M.String({minLength:1})}),M.Composite([tr,M.Object({content:M.Optional(M.String()),truncated:M.Boolean()})]),M.Object({files:M.Array(tr)});function nr(e,t){return M.Unsafe(M.Array(e,t))}var rr=M.Union([M.Literal(`gemini`),M.Literal(`openai`),M.Literal(`openai-compatible`),M.Literal(`anthropic`),M.Literal(`deepseek`),M.Literal(`cursor`)]),ir=M.Literal(`provider`),Y=M.Union([M.Literal(`low`),M.Literal(`medium`),M.Literal(`high`),M.Literal(`xhigh`),M.Literal(`max`)]),ar=M.Union([M.Literal(`auto`),M.Literal(`stable-prefix`),M.Literal(`off`)]),or=M.Object({supportedEfforts:nr(Y,{minItems:1}),defaultEffort:Y,maxEffort:M.Optional(Y),thinkingToggleSupported:M.Boolean(),reasoningWithToolsSupported:M.Boolean()}),sr=M.Object({provider:rr,thinkingEnabled:M.Optional(M.Boolean()),reasoningEffort:M.Optional(Y),maxOutputTokens:M.Optional(M.Integer({minimum:1,maximum:1e6})),maxToolIterations:M.Optional(M.Integer({minimum:1,maximum:G})),providerCompactionEnabled:M.Optional(M.Boolean()),promptCachePreference:M.Optional(ar),parallelToolCallsEnabled:M.Optional(M.Boolean())}),cr=`22.13`,lr=M.Union([M.Literal(`cursor.node_not_found`),M.Literal(`cursor.version_insufficient`),M.Literal(`cursor.sidecar_missing`)]),ur=M.Object({foundVersion:M.Optional(M.String()),sidecarPath:M.Optional(M.String())});M.Object({thinkingEnabled:M.Optional(M.Boolean()),reasoningEffort:M.Optional(Y),maxOutputTokens:M.Optional(M.Integer({minimum:1,maximum:1e6})),maxToolIterations:M.Optional(M.Integer({minimum:1,maximum:G})),providerCompactionEnabled:M.Optional(M.Boolean()),promptCachePreference:M.Optional(ar),parallelToolCallsEnabled:M.Optional(M.Boolean())});var dr=M.Object({provider:rr,displayName:M.String(),scope:ir,reasoning:or,promptCachingSupported:M.Boolean(),toolUseSupported:M.Boolean(),structuredOutputSupported:M.Boolean(),maxOutputTokensLimit:M.Integer({minimum:1}),settings:sr,runtimeAvailable:M.Boolean(),runtimeUnavailableReason:M.Optional(lr),runtimeUnavailableReasonParams:M.Optional(ur)});M.Object({providers:M.Array(dr)});var fr=M.Union([M.Literal(`512px`),M.Literal(`1K`),M.Literal(`2K`),M.Literal(`4K`)]),pr=M.Object({autoRenameEnabled:M.Boolean(),strategy:M.Union([M.Literal(`prompt_prefix`),M.Literal(`model`)]),promptPrefixLength:M.Integer({minimum:10,maximum:80}),preferredModel:M.String()}),mr=M.Object({enabled:M.Boolean(),chatDelegationEnabled:M.Boolean(),traceVisibility:M.Union([M.Literal(`compact`),M.Literal(`full`),M.Literal(`off`)]),maxDepth:M.Integer({minimum:0,maximum:3}),maxSubagentCalls:M.Integer({minimum:0,maximum:un}),timeoutMs:M.Integer({minimum:1e3,maximum:36e5}),defaultMaxTurns:M.Integer({minimum:1,maximum:fn})});M.Object({promptSettings:er,globalImageQuality:fr,thinkingEnabled:M.Boolean(),reasoningEffort:Y,maxToolIterations:M.Integer({minimum:1,maximum:G}),multiAgentSettings:mr,contextSettings:Jn,chatTitleSettings:pr});var X={all:[`app-settings`],current:()=>[...X.all,`current`]};function hr(){return k({queryKey:X.current(),staleTime:3e4,queryFn:async()=>{let{data:e,error:t}=await H.api.settings.app.get();if(t)throw Error(V(t.value,I.settings.app.loadError));return Vn(e??J)}})}function gr(){let[e,t]=(0,N.useState)(null),{data:n,isLoading:r,error:i,refetch:a}=en(),o=tn(),s=nn(),c=rn(),l=(0,N.useMemo)(()=>n||[],[n]),u=i?i.message:null,d=e??(l.length>0?l[0].id:null),f=(0,N.useCallback)(async()=>{await a()},[a]),p=(0,N.useCallback)(async e=>{let n=await o.mutateAsync({title:e||_n()});return t(n.id),n},[o]),m=(0,N.useCallback)(async(e,t,n)=>{await s.mutateAsync({id:e,updates:{[t]:n}})},[s]),h=(0,N.useCallback)(async(e,t)=>{await s.mutateAsync({id:e,updates:{title:t}})},[s]),g=(0,N.useCallback)(async(e,t)=>{await s.mutateAsync({id:e,updates:t})},[s]),_=(0,N.useCallback)(async n=>{if(await c.mutateAsync(n),e===n){let e=l.filter(e=>e.id!==n);t(e.length>0?e[0].id:null)}},[c,e,l]),v=(0,N.useCallback)(e=>{t(e)},[]);return{chats:l,currentChatId:d,currentChat:l.find(e=>e.id===d)||null,isLoading:r,error:u,loadChats:f,createChat:p,updateChatModel:m,updateChatTitle:h,updateChatAgentSelection:g,deleteChat:_,selectChat:v,setCurrentChatId:t}}function _r(){let e=j();return{appendOptimisticMessages:(0,N.useCallback)((t,n)=>{e.setQueryData(W.list(t),e=>{let t=e??{pages:[{messages:[],nextCursor:null}],pageParams:[null]},r=t.pages[0];return r?{...t,pages:[{...r,messages:[...r.messages,...n]},...t.pages.slice(1)]}:t})},[e]),replaceOptimisticMessages:(0,N.useCallback)((t,n,r)=>{e.setQueryData(W.list(t),e=>{if(!e)return{pages:[{messages:r,nextCursor:null}],pageParams:[null]};let t=e.pages.map(t=>{let i=t.messages.filter(e=>!n.includes(e.id));return{...t,messages:t===e.pages[0]?[...i,...r]:i}});return{...e,pages:t}})},[e]),updateOptimisticMessage:(0,N.useCallback)((t,n,r)=>{e.setQueryData(W.list(t),e=>{if(!e)return e;let t=e.pages.map(e=>({...e,messages:e.messages.map(e=>e.id===n?{...e,...r}:e)}));return{...e,pages:t}})},[e])}}var vr=[`chat`,`default`,`explore`],yr=/^user:[a-z0-9]+(?:-[a-z0-9]+)*$/,br=Object.freeze({id:`chat`,name:`Chat`,description:`General-purpose conversational chat agent.`,kind:`builtin`,role:`primary`,source:{type:`builtin`},systemPrompt:``,toolNames:[],toolsEnabled:!0,subagentIds:[],metadata:{}}),xr=Object.freeze({id:`default`,name:`Default`,description:`Default task-focused agent profile.`,kind:`builtin`,role:`both`,source:{type:`builtin`},systemPrompt:``,toolNames:[],toolsEnabled:!0,subagentIds:[`explore`],metadata:{}}),Sr=Object.freeze({id:`explore`,name:`Explore`,description:`Built-in subagent for bounded research and codebase exploration.`,kind:`builtin`,role:`subagent`,source:{type:`builtin`},systemPrompt:`Explore the requested problem space carefully. Gather relevant context, inspect available files or tools when useful, and return a concise, concrete final report.
19
19
 
20
20
  Final report requirements:
21
21
  - Always end with a "Final Report" section.
22
22
  - Include: key findings, relevant file paths, tools/commands used, risks or unknowns, and recommended next steps.
23
23
  - Do not make changes unless explicitly asked.`,toolNames:[],toolsEnabled:!0,subagentIds:[],metadata:{}});Object.freeze([br,xr,Sr]);function Cr(e){return typeof e==`string`&&wr(e)}function wr(e){return Tr(e)||yr.test(e)}function Tr(e){return vr.some(t=>t===e)}var Er=M.Union([M.Literal(`chat`),M.Literal(`default`),M.Literal(`explore`)]),Dr=M.Unsafe(M.String({pattern:`^user:[a-z0-9]+(?:-[a-z0-9]+)*$`})),Or=M.Union([Er,Dr]);M.Union([M.Literal(`chat`),M.Literal(`agent`)]);var kr=M.Union([M.Literal(`builtin`),M.Literal(`user`)]),Ar=M.Union([M.Literal(`primary`),M.Literal(`subagent`),M.Literal(`both`)]),jr=M.Union([M.Object({type:M.Literal(`builtin`)}),M.Object({type:M.Literal(`markdown`),path:M.Optional(M.String({minLength:1}))})]),Mr=M.Record(M.String(),M.Unknown()),Nr=M.Object({id:Or,name:M.String({minLength:1}),description:M.String(),kind:kr,role:Ar,source:jr,systemPrompt:M.String(),model:M.Optional(M.String({minLength:1})),thinkingEnabled:M.Optional(M.Boolean()),reasoningEffort:M.Optional(Y),maxToolIterations:M.Optional(M.Integer({minimum:1,maximum:G})),toolNames:nr(M.String({minLength:1})),toolsEnabled:M.Boolean(),subagentIds:nr(Or),metadata:Mr});M.Object({agents:M.Array(Nr)});var Pr=M.Object({name:M.String({minLength:1}),description:M.String(),role:Ar,systemPrompt:M.String(),model:M.Optional(M.String({minLength:1})),thinkingEnabled:M.Optional(M.Boolean()),reasoningEffort:M.Optional(Y),maxToolIterations:M.Optional(M.Integer({minimum:1,maximum:G})),toolNames:nr(M.String({minLength:1})),toolsEnabled:M.Boolean(),subagentIds:nr(Or),metadata:Mr});M.Intersect([Pr,M.Object({slug:M.Optional(M.String({minLength:1}))})]),M.Object({markdown:M.String(),id:M.Optional(Dr)}),M.Object({profile:Nr,markdown:M.String()}),M.Object({success:M.Literal(!0)});function Fr({currentChatId:e}){let[t,n]=(0,N.useState)(!1),[r,i]=(0,N.useState)(null),[a,o]=(0,N.useState)(null),s=(0,N.useRef)(null),c=(0,N.useRef)(new Map),[l,u]=(0,N.useState)(0),d=(0,N.useRef)(e);return d.current=e,(0,N.useEffect)(()=>{i(e?c.current.get(e)??null:null),o(null)},[e]),{isGenerating:t,setIsGenerating:n,contextInfo:r,fallbackNotice:a,setFallbackNotice:o,handleStop:(0,N.useCallback)(()=>{s.current?.abort()},[]),abortControllerRef:s,setAbortController:(0,N.useCallback)(e=>{s.current=e},[]),updateContextInfo:(0,N.useCallback)((e,t)=>{i(t),c.current.set(e,t),u(e=>e+1)},[]),seedContextInfo:(0,N.useCallback)((e,t)=>{c.current.set(e,t),u(e=>e+1),e===d.current&&i(t)},[]),contextCache:c.current}}async function Ir(e){let{data:t,error:n}=await H.api.chats[`title-suggestion`].post(e);if(n)throw Error(V(n.value,I.chat.titleGenerationFailed));return t}async function Lr(e,t){let{data:n,error:r}=await H.api.chats({id:e}).compact.post(t);if(r)throw Error(V(r.value));return n}async function Rr(e,t){let{data:n,error:r}=await H.api.chats({id:e})[`summarize-to-new-chat`].post(t);if(r)throw Error(V(r.value));return n}function zr(e,t){if(!e?.length)return t;if(!t?.length)return e;let n=[...e];for(let e of t)n.some(t=>t.event===e.event&&t.attempt===e.attempt&&t.detail===e.detail)||n.push(e);return n}var Br={subagent_delegation_started:`delegation_started`,subagent_delegation_completed:`delegation_completed`,subagent_delegation_failed:`delegation_failed`,subagent_response_attempt:`response_attempt`,subagent_response_recovered:`response_recovered`,subagent_response_timeout:`response_timeout`,subagent_response_fallback:`response_fallback`};function Vr({userMessageId:e,aiMessageId:t}){return{text:``,parts:[],currentUserMessageId:e,currentAiMessageId:t,receivedServerUserMessageId:!1,receivedServerAiMessageId:!1,activeThinkingIndex:null,userMessageUpdate:null,aiMessageUpdate:null}}function Hr(e,t,n){let r=Ur(e);switch(t.type){case`user_message_id`:return ci(r,{id:t.messageId},t.messageId,!0);case`error`:return Wr(r,t.error);case`thinking_start`:return Gr(r);case`thinking`:return Kr(r,t.text);case`text`:return qr(r,t.text);case`tool_call_started`:return Jr(r,t.callId,t.name);case`tool_call_completed`:return Yr(r,t.callId,t.arguments);case`tool_result`:return Xr(r,t.callId,t.result,t.isError);case`subagent_started`:return Zr(r,t);case`subagent_text`:return Qr(r,t.callId,t.text);case`subagent_tool_call_started`:return $r(r,t.callId,t.toolCallId,t.name);case`subagent_completed`:return ei(r,t.callId,t.summary,t.toolCallCount);case`subagent_failed`:return ti(r,t.callId,t.error);case`image_generation_started`:return ni(r,t);case`image_generation_completed`:return ri(r,t);case`image_generation_failed`:return ii(r,t);case`continuation_transition`:return ai(r,t);case`system_event`:return oi(r,t.event,t.detail,n.pendingSubagentName);case`done`:return si(r,t.messageId,t.generationTime);case`context_info`:case`fallback_notice`:return r;default:return t}}function Ur(e){return{...e,userMessageUpdate:null,aiMessageUpdate:null}}function Wr(e,t){let n=[...e.parts,{type:`error`,text:t}];return Z({...e,parts:n},{isGenerating:!1,text:e.text||t,parts:n})}function Gr(e){let t=[...e.parts,{type:`thinking`,text:``}];return Z({...e,parts:t,activeThinkingIndex:t.length-1},{parts:t})}function Kr(e,t){let n=e.activeThinkingIndex===null?Gr(e):e,r=n.activeThinkingIndex;if(r===null)return n;let i=n.parts[r],a=i?.type===`thinking`?i.text:``,o=li(n.parts,r,{type:`thinking`,text:`${a}${t}`});return Z({...n,parts:o},{parts:o})}function qr(e,t){let n=`${e.text}${t}`,r=ui(e.parts,n);return Z({...e,text:n,parts:r,activeThinkingIndex:null},{text:n,parts:r})}function Jr(e,t,n){let r=[...e.parts,{type:`tool_call`,toolCallId:t,name:n,args:{}}];return Z({...e,parts:r,activeThinkingIndex:null},{parts:r})}function Yr(e,t,n){let r=di(n),i=e.parts.map(e=>e.type===`tool_call`&&e.toolCallId===t?{...e,args:r}:e);return Z({...e,parts:i},{parts:i})}function Xr(e,t,n,r){let i=[...e.parts,{type:`tool_result`,toolCallId:t,content:JSON.stringify(n),isError:r}];return Z({...e,parts:i},{parts:i})}function Zr(e,t){let n=pi(e.parts,{type:`subagent_trace`,toolCallId:t.callId,agentId:t.agentId,agentName:t.agentName,status:`running`,summary:t.task,toolCallCount:0,messages:[],tools:[]});return Z({...e,parts:n},{parts:n})}function Qr(e,t,n){let r=mi(e.parts,t,e=>{let t=e.messages.at(-1),r=t?.role===`assistant`?[...e.messages.slice(0,-1),{role:`assistant`,text:`${t.text}${n}`}]:[...e.messages,{role:`assistant`,text:n}],i=r.at(-1)?.text;return{...e,...i?{lastMessage:i}:{},messages:r}});return Z({...e,parts:r},{parts:r})}function $r(e,t,n,r){let i=mi(e.parts,t,e=>({...e,toolCallCount:e.toolCallCount+1,tools:[...e.tools,{callId:n,name:r}]}));return Z({...e,parts:i},{parts:i})}function ei(e,t,n,r){let i=mi(e.parts,t,e=>({...e,status:`completed`,summary:n,toolCallCount:r,lastMessage:n}));return Z({...e,parts:i},{parts:i})}function ti(e,t,n){let r=mi(e.parts,t,e=>({...e,status:`failed`,summary:n,error:n}));return Z({...e,parts:r},{parts:r})}function ni(e,t){let n=fi(e.parts,{type:`generated_image`,imageId:t.imageId,toolCallId:t.toolCallId,status:`generating`,prompt:t.prompt});return Z({...e,parts:n,activeThinkingIndex:null},{parts:n})}function ri(e,t){let n=fi(e.parts,{type:`generated_image`,imageId:t.imageId,toolCallId:t.toolCallId,status:`completed`,prompt:t.prompt,imageUrl:t.imageUrl,modelName:t.modelName,generationTime:t.generationTime});return Z({...e,parts:n},{parts:n})}function ii(e,t){let n=fi(e.parts,{type:`generated_image`,imageId:t.imageId,toolCallId:t.toolCallId,status:`error`,prompt:t.prompt,error:t.error,modelName:t.modelName,generationTime:t.generationTime});return Z({...e,parts:n},{parts:n})}function ai(e,t){let n=[...e.parts,{type:`continuation_transition`,provider:t.provider,modelName:t.modelName,fromProvider:t.fromProvider,fromMode:t.fromMode,toMode:t.toMode,reasonCode:t.reasonCode,detail:t.detail,recovered:!1}];return Z({...e,parts:n},{parts:n})}function oi(e,t,n,r){let i=gi(t,n),a=i?hi(e.parts,i,r):[...e.parts,{type:`system_event`,event:t,detail:n}];return Z({...e,parts:a},{parts:a})}function si(e,t,n){return Z({...e,activeThinkingIndex:null},{isGenerating:!1,text:e.text,parts:[...e.parts],generationTime:n,...t?{id:t}:{}},t,t?!0:e.receivedServerAiMessageId)}function ci(e,t,n=e.currentUserMessageId,r=e.receivedServerUserMessageId){return{...e,currentUserMessageId:n,receivedServerUserMessageId:r,userMessageUpdate:{targetMessageId:e.currentUserMessageId,patch:t}}}function Z(e,t,n=e.currentAiMessageId,r=e.receivedServerAiMessageId){return{...e,currentAiMessageId:n,receivedServerAiMessageId:r,aiMessageUpdate:{targetMessageId:e.currentAiMessageId,patch:t}}}function li(e,t,n){return e.map((e,r)=>r===t?n:e)}function ui(e,t){let n=e.findIndex(e=>e.type===`text`);return n===-1?[...e,{type:`text`,text:t}]:[...e.slice(0,n),...e.slice(n+1),{type:`text`,text:t}]}function di(e){try{return JSON.parse(e)}catch{return{}}}function fi(e,t){let n=e.findIndex(e=>e.type===`generated_image`&&e.imageId===t.imageId&&e.toolCallId===t.toolCallId);return n===-1?[...e,t]:li(e,n,t)}function pi(e,t){let n=e.findIndex(e=>e.type===`subagent_trace`&&e.toolCallId===t.toolCallId);return n===-1?[...e,t]:e.map((e,r)=>r!==n||e.type!==`subagent_trace`?e:{...t,messages:t.messages.length>0?t.messages:e.messages,tools:t.tools.length>0?t.tools:e.tools,events:zr(e.events,t.events)})}function mi(e,t,n){return e.map(e=>e.type!==`subagent_trace`||e.toolCallId!==t?e:n(e))}function hi(e,t,n){let r=e.findIndex(e=>e.type===`subagent_trace`&&e.toolCallId===t.callId),i={event:t.event,...t.attempt===void 0?{}:{attempt:t.attempt},...t.detail?{detail:t.detail}:{}};return r===-1?[...e,{type:`subagent_trace`,toolCallId:t.callId,agentId:t.agentId??t.callId,agentName:t.agentId??n,status:`running`,summary:``,toolCallCount:0,messages:[],tools:[],events:[i]}]:e.map((e,a)=>{if(a!==r||e.type!==`subagent_trace`)return e;let o=e.agentName===n&&t.agentId?t.agentId:e.agentName;return{...e,agentId:t.agentId??e.agentId,agentName:o,events:zr(e.events,[i])}})}function gi(e,t){let n=Br[e];if(!n)return null;let r=_i(t,`call`);if(!r)return null;let i=_i(t,`attempt`),a=i?Number(i):void 0,o=_i(t,`agent`)??_i(t,`target`);return{callId:r,event:n,...o?{agentId:o}:{},...a!==void 0&&Number.isFinite(a)?{attempt:a}:{},...t?{detail:t}:{}}}function _i(e,t){return e?.match(RegExp(`(?:^|\\s)${t}=([^\\s]+)`))?.[1]}async function vi(e,t,n){let r=await fetch(`${nt()}/api/respond/stream`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),credentials:`include`,signal:n});if(!r.ok){let e=I.errors.streamRequestFailed;try{let t=await r.json();t&&typeof t==`object`&&`error`in t&&typeof t.error==`string`&&(e=t.error)}catch{}throw Error(e)}if(!r.body)throw Error(I.errors.streamResponseNoBody);let i=r.body.getReader(),a=new TextDecoder,o=``;try{for(;;){let{value:e,done:n}=await i.read();if(n)break;o+=a.decode(e,{stream:!0});let r=o.split(`
24
- `);o=r.pop()??``;for(let e of r)if(e.startsWith(`data: `))try{t(JSON.parse(e.slice(6)))}catch{}}}finally{i.releaseLock()}}function yi(e,t){return e.preferredSummaryModel===`current_model`?t:e.preferredSummaryModel}function bi(e,t,n){return e.autoRenameEnabled?n?!0:t!==void 0&&vn(t):!1}function xi(e,t){return e.preferredModel===`current_model`?t:e.preferredModel}async function Si(e,t,n){let r=bn(e,t.promptPrefixLength);if(!r||t.strategy===`prompt_prefix`)return r;try{return(await Ir({prompt:e,model:xi(t,n)})).title}catch{return r}}async function Ci({chats:e,chatId:t,prompt:n,chatTitleSettings:r,currentModel:i}){let a=await Si(n,r,i);a&&await e.updateChatTitle(t,a)}function wi(e){Ci(e).catch(e=>{console.warn(`[chat-title] Failed to auto rename chat`,e)})}function Ti(e,t,n){t&&n(e,t.targetMessageId,t.patch)}function Ei({chats:e,getActiveModel:t,systemPrompt:n,promptSettings:r,optimistic:i,thinkingEnabled:a,reasoningEffort:o,maxToolIterations:s,contextSettings:c,chatTitleSettings:l,currentChatId:u,getAgentSelection:d}){let f=j(),{t:p}=L(),m=p.chat.feed.subagentPendingName,h=Fr({currentChatId:u}),{appendOptimisticMessages:g,updateOptimisticMessage:_}=i,[v,y]=(0,N.useState)(null),b=(0,N.useCallback)(e=>{e.contextInfo&&h.seedContextInfo(e.chatId,e.contextInfo)},[h]),x=(0,N.useCallback)(async t=>{await Promise.all([e.loadChats(),f.invalidateQueries({queryKey:W.list(t)})])},[e,f]),S=(0,N.useCallback)(async(i,u)=>{if(h.abortControllerRef.current)return;h.setIsGenerating(!0);let v=e.currentChatId,y=!1,b=e.currentChat?.title;if(!v){let t=await e.createChat();v=t.id,b=t.title,y=!0}let x=t(),S=d(),C=S.mode===`agent`?`agent`:`chat`;bi(l,b,y)&&wi({chats:e,chatId:v,prompt:i,chatTitleSettings:l,currentModel:x});let w=`optimistic-user-${crypto.randomUUID()}`,T=`optimistic-ai-${crypto.randomUUID()}`,ee={id:w,chatId:v,role:`user`,text:i,timestamp:Date.now(),interactionMode:C,...C===`agent`?{agentId:S.agentId,agentName:S.agentName}:{}},te={id:T,chatId:v,role:`ai`,text:``,timestamp:Date.now(),isGenerating:!0,modelName:x,interactionMode:C,...C===`agent`?{agentId:S.agentId,agentName:S.agentName}:{}};g(v,[ee,te]);let ne=new AbortController;h.setAbortController(ne);let E=Vr({userMessageId:w,aiMessageId:T});try{await vi({chatId:v,prompt:i,model:x,systemPrompt:n||void 0,promptSettings:r,thinkingEnabled:a,reasoningEffort:o,maxToolIterations:s,contextSettings:c,toolIntent:u,agentMode:S.mode,agentId:Cr(S.agentId)?S.agentId:void 0},e=>{E=Hr(E,e,{pendingSubagentName:m}),Ti(v,E.userMessageUpdate,_),Ti(v,E.aiMessageUpdate,_),e.type===`context_info`&&h.updateContextInfo(v,{estimatedInputTokens:e.estimatedInputTokens,contextLimit:e.contextLimit,estimatedUsageRatio:e.estimatedUsageRatio,mode:e.mode,severity:e.severity}),e.type===`fallback_notice`&&h.setFallbackNotice({from:e.from,to:e.to,reason:e.reason})},ne.signal)}catch(e){if(e instanceof Error&&e.name===`AbortError`)_(v,E.currentAiMessageId,{isGenerating:!1});else{console.error(`[respond]`,e);let t=e instanceof Error?e.message:p.errors.textGenerationFailed,n=E.parts.some(e=>e.type===`error`)?E.parts:[...E.parts,{type:`error`,text:t}];_(v,E.currentAiMessageId,{isGenerating:!1,text:E.text||t,parts:n})}}finally{h.setAbortController(null),h.setIsGenerating(!1),y&&e.loadChats(),(!E.receivedServerUserMessageId||!E.receivedServerAiMessageId)&&f.invalidateQueries({queryKey:W.list(v)})}},[e,t,n,r,p,g,_,f,a,o,s,c,l,d,h,m]),C=(0,N.useCallback)(async()=>{let n=e.currentChatId;if(!n)throw Error(`No active chat available for compaction.`);y(`compact`);try{b(await Lr(n,{model:yi(c,t())})),await x(n)}finally{y(null)}},[e.currentChatId,c,t,x,b]),w=(0,N.useCallback)(async()=>{let n=e.currentChatId;if(!n)throw Error(`No active chat available for summary handoff.`);y(`new-chat`);try{let r=await Rr(n,{model:yi(c,t())});b(r),await e.loadChats(),e.setCurrentChatId(r.chatId),await f.invalidateQueries({queryKey:W.list(r.chatId)})}finally{y(null)}},[e,c,t,f,b]);return{isGenerating:h.isGenerating,handleRespond:S,handleCompactCurrentChat:C,handleStartSummarizedChat:w,handleStop:h.handleStop,contextInfo:h.contextInfo,fallbackNotice:h.fallbackNotice,seedContextInfo:h.seedContextInfo,contextCache:h.contextCache,isContextActionPending:v!==null}}async function Di(e,t){let{data:n,error:r}=await H.api.settings.providers({provider:e}).put(t);if(r)throw Error(V(r.value,I.settings.providers.saveError));return n}var Q={all:[`provider-settings`],list:()=>[...Q.all,`list`],detail:e=>[...Q.all,`detail`,e]};function Oi(){return k({queryKey:Q.list(),staleTime:3e4,queryFn:async()=>{let{data:e,error:t}=await H.api.settings.providers.get();if(t)throw Error(V(t.value,I.settings.providers.loadError));return e}})}function ki(e){return k({queryKey:Q.detail(e),staleTime:3e4,queryFn:async()=>{let{data:t,error:n}=await H.api.settings.providers({provider:e}).get();if(n)throw Error(V(n.value,I.settings.providers.loadError));return t}})}function Ai(e,t){e.setQueryData(Q.detail(t.provider),t),e.setQueryData(Q.list(),e=>e&&{providers:e.providers.map(e=>e.provider===t.provider?t:e)})}function ji(){let{data:e,isLoading:t,error:n,refetch:r}=O(Oi());return{providers:e?.providers??[],isLoading:t,error:n,refetch:r}}function Mi(e){let t=j(),{data:n,isLoading:r,error:i,refetch:a}=O({...ki(e??``),enabled:!!e});return{descriptor:n??null,isLoading:r,error:i,refetch:a,invalidate:async()=>{e&&(await t.invalidateQueries({queryKey:Q.detail(e)}),await t.invalidateQueries({queryKey:Q.list()}))}}}function Ni(e){let t=j();return D({mutationFn:t=>Di(e,t),onSuccess:e=>{Ai(t,e)}})}function Pi({catalog:e,settings:t,currentTextModel:n}){let r=e.textModels,i=(0,N.useMemo)(()=>Bt(n??void 0,void 0,r),[r,n]),a=(0,N.useCallback)(()=>i,[i]),o=e.status!==`ready`||r.length===0,s=(0,N.useMemo)(()=>n?r.find(e=>e.modelId===n)?.provider??null:null,[r,n]),{descriptor:c}=Mi(s);return{activeModels:r,activeModel:i,getActiveModel:a,isModelSelectorDisabled:o,lockedProvider:s,effectiveThinkingEnabled:c?.settings.thinkingEnabled??t.thinkingEnabled,effectiveReasoningEffort:c?.settings.reasoningEffort??t.reasoningEffort,effectiveMaxToolIterations:c?.settings.maxToolIterations??t.maxToolIterations}}function Fi({currentChatId:e,currentChat:t,updateChatAgentSelection:n}){let[r,i]=(0,N.useState)(null),a=O(cn()),o=(0,N.useMemo)(()=>a.data?.agents??[],[a.data?.agents]),s=(0,N.useMemo)(()=>({mode:t?.lastUsedMode===`agent`?`agent`:`chat`,agentId:t?.selectedAgentId??`default`}),[t?.lastUsedMode,t?.selectedAgentId]),c=r?.chatId===e?r:s,l=c.mode,u=c.agentId,d=(0,N.useMemo)(()=>o.find(e=>e.id===u)??null,[o,u]),f=(0,N.useCallback)((t,r)=>{i({chatId:e,mode:t,agentId:r}),e&&n(e,{lastUsedMode:t,selectedAgentId:t===`agent`?r:`chat`})},[e,n]),p=(0,N.useCallback)(e=>{f(e,e===`agent`?u||`default`:`chat`)},[f,u]),m=(0,N.useCallback)(e=>{f(`agent`,e)},[f]);return{agents:o,isAgentListLoading:a.isLoading,agentExecutionMode:l,selectedAgentId:u,selectedAgent:d,setAgentExecutionMode:p,setSelectedAgentId:m}}function Ii(e,t){(0,N.useEffect)(()=>{for(let n of e)`contextInfo`in n&&n.contextInfo&&t(n.id,n.contextInfo)},[e,t])}function Li({chats:e,navigate:t}){return{handleNewChat:(0,N.useCallback)(async()=>{await e.createChat(),await t({to:`/`})},[e,t]),handleUpdateChatModel:(0,N.useCallback)(async(t,n)=>{await e.updateChatModel(t,`textModel`,n)},[e]),handleSelectChat:(0,N.useCallback)(n=>{e.selectChat(n),t({to:`/`})},[e,t]),handleUpdateChatTitle:(0,N.useCallback)(async(t,n)=>{await e.updateChatTitle(t,n)},[e]),handleDeleteChat:(0,N.useCallback)(async t=>{await e.deleteChat(t)},[e]),handleNavigate:(0,N.useCallback)(e=>{t({to:{chat:`/`,gallery:`/gallery`,settings:`/settings`,studio:`/studio`}[e]})},[t])}}function Ri({handleRespond:e,stopGeneration:t}){let[n,r]=(0,N.useState)(!1);return{imageToolIntent:n,setImageToolIntent:r,handleSubmit:(0,N.useCallback)(t=>{e(t,n?`image_generation_requested`:void 0),r(!1)},[e,n]),handleStop:(0,N.useCallback)(()=>{t(),r(!1)},[t])}}async function zi(e){let{data:t,error:n}=await H.api.settings.app.put(e);if(n)throw Error(V(n.value,I.settings.app.saveError));return t}var Bi=300;function Vi(){return{id:`custom-${Date.now()}`,label:``,path:``,enabled:!1,injectionRole:`system`,sendFrequency:`first-turn`}}function Hi(){let e=j(),t=(0,N.useRef)(null),n=(0,N.useRef)(null),{data:r,isLoading:i,error:a}=O({...hr(),placeholderData:J}),o=D({mutationFn:zi,onMutate:t=>{let n=e.getQueryData(X.current())??J;return e.setQueryData(X.current(),t),{previousSettings:n}},onError:(t,n,r)=>{r?.previousSettings&&e.setQueryData(X.current(),r.previousSettings)},onSuccess:t=>{e.setQueryData(X.current(),Vn(t))}}),s=(0,N.useMemo)(()=>Vn(r??J),[r]),c=(0,N.useCallback)(()=>{n.current&&=(clearTimeout(n.current),null);let e=t.current;e&&(t.current=null,o.mutate(e))},[o]);(0,N.useEffect)(()=>()=>{c()},[c]);let l=(0,N.useCallback)(r=>{let i=Vn(r(Vn(e.getQueryData(X.current())??J)));e.setQueryData(X.current(),i),t.current=i,n.current&&clearTimeout(n.current),n.current=setTimeout(()=>{c()},Bi)},[c,e]),u=(0,N.useCallback)(e=>{l(t=>({...t,promptSettings:e(t.promptSettings)}))},[l]),d=(0,N.useCallback)(e=>{l(t=>({...t,contextSettings:{...t.contextSettings,...e}}))},[l]),f=(0,N.useCallback)(e=>{l(t=>({...t,chatTitleSettings:zn({...t.chatTitleSettings,...e})}))},[l]),p=(0,N.useCallback)(e=>{l(t=>({...t,multiAgentSettings:{...t.multiAgentSettings,...e}}))},[l]),m=(0,N.useCallback)(e=>{u(t=>({...t,textSystemPrompt:e}))},[u]),h=(0,N.useCallback)(e=>{u(t=>({...t,imageSystemPrompt:e}))},[u]),g=(0,N.useCallback)((e,t)=>{u(n=>e===`agentsMd`||e===`claudeMd`?{...n,[e]:{...n[e],...t}}:{...n,customRules:n.customRules.map(n=>n.id===e?{...n,...t}:n)})},[u]),_=(0,N.useCallback)(()=>{u(e=>({...e,customRules:[...e.customRules,Vi()]}))},[u]),v=(0,N.useCallback)(e=>{u(t=>({...t,customRules:t.customRules.filter(t=>t.id!==e)}))},[u]),y=(0,N.useCallback)(()=>{l(()=>J)},[l]);return{isLoading:i,error:a,globalTextSystemPrompt:s.promptSettings.textSystemPrompt,setGlobalTextSystemPrompt:m,globalImageSystemPrompt:s.promptSettings.imageSystemPrompt,setGlobalImageSystemPrompt:h,promptSettings:s.promptSettings,setTextSystemPrompt:m,setImageSystemPrompt:h,updateRuleFileSetting:g,addCustomRule:_,removeCustomRule:v,globalImageQuality:s.globalImageQuality,setGlobalImageQuality:e=>{l(t=>({...t,globalImageQuality:e}))},thinkingEnabled:s.thinkingEnabled,setThinkingEnabled:e=>{l(t=>({...t,thinkingEnabled:e}))},reasoningEffort:s.reasoningEffort,setReasoningEffort:e=>{l(t=>({...t,reasoningEffort:e}))},maxToolIterations:s.maxToolIterations,setMaxToolIterations:e=>{l(t=>({...t,maxToolIterations:Ln(e)}))},contextSettings:s.contextSettings,multiAgentSettings:s.multiAgentSettings,chatTitleSettings:s.chatTitleSettings,setContextCompactionBehavior:e=>d({compactionBehavior:e}),setContextWarningThreshold:e=>d({warningThreshold:e}),setContextDangerThreshold:e=>d({dangerThreshold:e}),setContextHardStopThreshold:e=>d({hardStopThreshold:e}),setPreferredSummaryModel:e=>d({preferredSummaryModel:e}),setProviderCompactionEnabled:e=>d({providerCompactionEnabled:e}),setMultiAgentEnabled:e=>p({enabled:e}),setChatDelegationEnabled:e=>p({chatDelegationEnabled:e}),setTraceVisibility:e=>p({traceVisibility:e}),setMaxDelegationDepth:e=>p({maxDepth:e}),setMaxSubagentCalls:e=>p({maxSubagentCalls:e}),setSubagentTimeoutMs:e=>p({timeoutMs:e}),setDefaultSubagentMaxTurns:e=>p({defaultMaxTurns:e}),setChatAutoRenameEnabled:e=>f({autoRenameEnabled:e}),setChatTitleStrategy:e=>f({strategy:e}),setChatTitlePromptPrefixLength:e=>f({promptPrefixLength:e}),setPreferredChatTitleModel:e=>f({preferredModel:e}),resetSettings:y}}var Ui={all:[`model-catalog`]},Wi=()=>k({queryKey:Ui.all,queryFn:async()=>{let{data:e,error:t}=await H.api.settings.models.get();if(t)throw Error(V(t.value));return e},staleTime:1e3*60*55,gcTime:1e3*60*60*2});function Gi(){let e=j(),{data:t,isLoading:n,error:r,refetch:i}=O(Wi()),a=(0,N.useCallback)(async()=>{await i()},[i]),o=(0,N.useCallback)(t=>{e.setQueryData(Ui.all,t)},[e]);return{catalog:t||Lt,isLoading:n,error:r?r.message:null,refreshCatalog:a,setCatalog:o}}function Ki(){let e=gr(),t=Gi(),n=Hi(),r=h(),i=_r(),a=e.currentChat,o=Pi({catalog:t.catalog,settings:n,currentTextModel:a?.textModel}),s=Fi({currentChatId:e.currentChatId,currentChat:a,updateChatAgentSelection:e.updateChatAgentSelection}),c=Ei({chats:e,getActiveModel:o.getActiveModel,systemPrompt:n.globalTextSystemPrompt,promptSettings:n.promptSettings,optimistic:i,thinkingEnabled:o.effectiveThinkingEnabled,reasoningEffort:o.effectiveReasoningEffort,maxToolIterations:o.effectiveMaxToolIterations,contextSettings:n.contextSettings,chatTitleSettings:n.chatTitleSettings,currentChatId:e.currentChatId,getAgentSelection:()=>({mode:s.agentExecutionMode,agentId:s.agentExecutionMode===`agent`?s.selectedAgentId:`chat`,agentName:s.agentExecutionMode===`agent`?s.selectedAgent?.name:void 0})});Ii(e.chats,c.seedContextInfo);let l=Li({chats:e,navigate:r}),u=Ri({handleRespond:c.handleRespond,stopGeneration:c.handleStop});return{imageToolIntent:u.imageToolIntent,agentExecutionMode:s.agentExecutionMode,selectedAgentId:s.selectedAgentId,agents:s.agents,isAgentListLoading:s.isAgentListLoading,isGenerating:c.isGenerating,chats:e.chats,currentChatId:e.currentChatId,catalog:t.catalog,settings:n,activeModels:o.activeModels,activeModel:o.activeModel,isModelSelectorDisabled:o.isModelSelectorDisabled,contextInfo:c.contextInfo,fallbackNotice:c.fallbackNotice,seedContextInfo:c.seedContextInfo,contextCache:c.contextCache,isContextActionPending:c.isContextActionPending,lockedProvider:o.lockedProvider,setImageToolIntent:u.setImageToolIntent,setAgentExecutionMode:s.setAgentExecutionMode,setSelectedAgentId:s.setSelectedAgentId,handleNewChat:l.handleNewChat,handleUpdateChatModel:l.handleUpdateChatModel,handleUpdateChatTitle:l.handleUpdateChatTitle,handleDeleteChat:l.handleDeleteChat,handleSelectChat:l.handleSelectChat,handleNavigate:l.handleNavigate,handleSubmit:u.handleSubmit,handleStop:u.handleStop,handleCompactCurrentChat:c.handleCompactCurrentChat,handleStartSummarizedChat:c.handleStartSummarizedChat,refreshCatalog:t.refreshCatalog}}var qi=(0,N.createContext)(null);function Ji(){let e=(0,N.use)(qi);if(!e)throw Error(`useApp must be used within AppContext`);return e}var Yi=T(`/_authenticated`)({beforeLoad:({context:e,location:t})=>{e.auth.isAuthenticated||se({to:`/login`,search:{redirect:t.href},throw:!0})},loader:async({context:{queryClient:e}})=>{let t=e.ensureQueryData(Zt());await Promise.all([t,e.ensureQueryData(Wi()),e.ensureQueryData(hr()),e.ensureQueryData(cn())]);let n=(await t)[0]?.id;n&&await e.prefetchInfiniteQuery(an(n))},component:Xi});function Xi(){let{auth:e}=Yi.useRouteContext(),t=h(),n=Ki(),r=E().location.pathname,[i,a]=(0,N.useState)(!1);if(!e.isAuthenticated)return t({to:`/login`}),null;let o=`chat`;return r.includes(`/gallery`)&&(o=`gallery`),r.includes(`/settings`)&&(o=`settings`),r.includes(`/studio`)&&(o=`studio`),(0,F.jsx)(qi,{value:n,children:(0,F.jsxs)(Kt,{currentPage:o,onNavigate:e=>n.handleNavigate(e),chats:n.chats,currentChatId:n.currentChatId,onSelectChat:n.handleSelectChat,onUpdateChatTitle:(e,t)=>void n.handleUpdateChatTitle(e,t),onDeleteChat:e=>void n.handleDeleteChat(e),onNewChat:()=>void n.handleNewChat(),contextCache:n.contextCache,isMobileSidebarOpen:i,onMobileSidebarClose:()=>a(!1),children:[(0,F.jsx)(Ut,{activeModel:n.activeModel,activeModels:n.activeModels,isModelSelectorDisabled:n.isModelSelectorDisabled,currentChatId:n.currentChatId,currentPage:o,onUpdateChatModel:(e,t)=>void n.handleUpdateChatModel(e,t),onSetPageModel:e=>{n.currentChatId&&n.handleUpdateChatModel(n.currentChatId,e)},onNewChat:()=>void n.handleNewChat(),onNavigateToSettings:()=>n.handleNavigate(`settings`),modelCatalog:n.catalog,lockedProvider:n.lockedProvider,onMobileMenuToggle:()=>a(e=>!e)}),(0,F.jsx)(`div`,{className:`flex-1 min-h-0 overflow-hidden flex flex-col`,children:(0,F.jsx)(N.Suspense,{fallback:(0,F.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,F.jsx)(Jt,{size:`lg`})}),children:(0,F.jsx)(Oe,{})})})]})})}var Zi=24;function Qi(e){return e.scrollHeight-e.scrollTop-e.clientHeight<=Zi}function $i(e){return e?.parts?.filter(e=>e.type===`generated_image`).map(e=>`${e.imageId}:${e.status}:${e.imageUrl??``}`).join(`,`)??``}function ea(e,t){let[n,r]=(0,N.useState)(!1),i=(0,N.useRef)(null),a=(0,N.useRef)(!0),o=(0,N.useRef)(null),s=(0,N.useRef)(!0),c=(0,N.useRef)(e),l=t.at(-1),u=l?.id??null,d=l?.isGenerating??!1,f=l?.parts?.length??0,p=l?.text?.length??0,m=$i(l);return(0,N.useEffect)(()=>{c.current!==e&&(c.current=e,a.current=!0,s.current=!0)},[e]),(0,N.useLayoutEffect)(()=>{let e=i.current;!s.current||!e||t.length===0||(e.scrollTop=e.scrollHeight,s.current=!1)},[e,t.length]),(0,N.useLayoutEffect)(()=>{d&&o.current!==u&&(a.current=!0);let e=i.current;!d||!e||!a.current||(e.scrollTop=e.scrollHeight)},[u,d,f,p,m]),(0,N.useEffect)(()=>{o.current=d?u:null},[u,d]),{parentRef:i,showScrollButton:n,handleScroll:(0,N.useCallback)(e=>{let t=Qi(e.currentTarget);a.current=t,r(!t)},[]),scrollToBottom:(0,N.useCallback)(()=>{let e=i.current;e&&(a.current=!0,r(!1),e.scrollTo({top:e.scrollHeight,behavior:`smooth`}))},[])}}function ta(e,t){return`${na(e)||`mangostudio`}-art-${na(String(t))||String(Date.now())}.png`}function na(e){return e.trim().replace(/[^a-zA-Z0-9_-]+/g,`-`).replace(/^-+|-+$/g,``)}function ra(e,t){let n=document.createElement(`a`);n.href=e,n.download=ta(t,Date.now()),document.body.appendChild(n),n.click(),document.body.removeChild(n)}function ia({msg:e}){let{t}=L();return(0,F.jsxs)(`div`,{className:`space-y-6`,children:[e.styleParams&&e.styleParams.length>0&&(0,F.jsxs)(`div`,{className:`bg-surface-container-low p-6 rounded-xl border border-outline-variant/5`,children:[(0,F.jsxs)(`h3`,{className:`font-headline text-sm font-bold mb-4 flex items-center gap-2 text-on-surface`,children:[(0,F.jsx)(A,{className:`text-primary`,size:16}),t.chat.feed.styleParams]}),(0,F.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.styleParams.map(e=>(0,F.jsx)(`span`,{className:`px-3 py-1 bg-surface-container-high text-on-surface-variant text-[10px] font-bold rounded-sm uppercase tracking-wider`,children:e},e))})]}),e.text&&!e.imageUrl&&(0,F.jsx)(`div`,{className:`bg-error/10 border border-error/20 p-4 rounded-xl text-error text-sm font-body`,children:e.text}),!e.text&&!e.imageUrl&&(0,F.jsx)(`div`,{className:`bg-surface-container-lowest p-6 rounded-xl border border-outline-variant/5`,children:(0,F.jsx)(`p`,{className:`font-body text-xs text-on-surface-variant leading-relaxed`,children:t.chat.feed.neuralDiffusionPath})})]})}function aa({msg:e}){let{t}=L(),[n,r]=(0,N.useState)(!1),i=e.imageUrl;return(0,F.jsxs)(`div`,{className:`flex flex-col gap-4 w-full`,children:[e.generationTime&&(0,F.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-on-surface-variant bg-surface-container-lowest py-2 px-3 rounded-lg w-fit border border-outline-variant/10`,children:[(0,F.jsx)(A,{size:12,className:`text-primary`}),(0,F.jsx)(`span`,{children:t.chat.feed.thoughtFor.replace(`{time}`,e.generationTime)})]}),(0,F.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6 items-start w-full`,children:[i&&(0,F.jsx)(`div`,{className:`group relative bg-surface-container-lowest rounded-xl overflow-hidden aspect-[4/5] shadow-2xl transition-transform duration-500 hover:scale-[1.01]`,children:n?(0,F.jsxs)(`div`,{className:`w-full h-full flex flex-col items-center justify-center text-on-surface-variant/50 p-6 text-center bg-surface-container-high`,children:[(0,F.jsx)(ke,{size:48,className:`mb-4 opacity-50`}),(0,F.jsx)(`p`,{className:`font-headline font-bold mb-2`,children:t.chat.feed.imageUnavailable}),(0,F.jsx)(`p`,{className:`text-xs font-body`,children:t.chat.feed.imageUnavailableHint})]}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`img`,{src:i,alt:`Generated`,className:`w-full h-full object-cover grayscale-[20%] group-hover:grayscale-0 transition-[filter] duration-700`,decoding:`async`,onError:()=>r(!0)}),(0,F.jsxs)(`div`,{className:`absolute bottom-4 left-4 right-4 glass-panel rounded-xl p-3 flex justify-between items-center translate-y-12 opacity-0 group-hover:translate-y-0 group-hover:opacity-100 transition-all duration-300`,children:[(0,F.jsxs)(`div`,{className:`flex gap-2`,children:[(0,F.jsx)(`button`,{type:`button`,onClick:()=>ra(i,t.common.downloadFilenamePrefix),className:`w-9 h-9 rounded-lg flex items-center justify-center bg-surface-container-highest/40 hover:bg-primary/20 text-on-surface transition-colors`,title:t.chat.feed.download,children:(0,F.jsx)(S,{size:16})}),(0,F.jsx)(`button`,{type:`button`,className:`w-9 h-9 rounded-lg flex items-center justify-center bg-surface-container-highest/40 hover:bg-primary/20 text-on-surface transition-colors`,title:t.chat.feed.saveToGallery,children:(0,F.jsx)(a,{size:16})})]}),(0,F.jsx)(`button`,{type:`button`,className:`px-4 py-1.5 rounded-lg bg-primary/10 hover:bg-primary/20 text-primary text-xs font-bold transition-colors`,children:t.chat.feed.regenerate})]})]})}),(0,F.jsx)(ia,{msg:e})]})]})}var oa=`modulepreload`,sa=function(e){return`/`+e},ca={},la=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=sa(t,n),t in ca)return;ca[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:oa,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},ua=(0,N.lazy)(()=>la(()=>import(`./MarkdownContentRenderer-DwrywcVv.js`).then(e=>({default:e.MarkdownContentRenderer})),__vite__mapDeps([0,1,2,3])));function da(e){return(0,F.jsx)(N.Suspense,{fallback:(0,F.jsx)(fa,{...e}),children:(0,F.jsx)(ua,{...e})})}function fa({content:e,className:t}){return(0,F.jsx)(`div`,{className:`markdown-content ${t??``}`,children:e})}function pa(e,t){let n=t.chat.continuation.title;switch(e){case`provider_changed`:return n.providerChanged;case`model_changed`:return n.modelChanged;case`system_prompt_changed`:return n.systemPromptChanged;case`toolset_changed`:return n.toolsetChanged;case`agent_changed`:return n.agentChanged;case`agent_runtime_changed`:return n.agentRuntimeChanged;case`cursor_expired`:return n.cursorExpired;case`cursor_invalid`:return n.cursorInvalid;case`tool_result_cursor_loss`:return n.toolResultCursorLoss;case`envelope_malformed`:return n.envelopeMalformed}}function ma(e,t){return e.replace(/{provider}/g,t.provider).replace(/{model}/g,t.model).replace(/{fromProvider}/g,t.fromProvider).replace(/{fromMode}/g,t.fromMode).replace(/{toMode}/g,t.toMode)}var ha=e=>e===`tool_result_cursor_loss`;function ga({provider:e,modelName:t,fromProvider:n,fromMode:r,toMode:i,reasonCode:a,recovered:o}){let{t:s}=L(),c=ma(pa(a,s),{provider:e,model:t,fromProvider:n??e,fromMode:r,toMode:i}),l=o?s.chat.continuation.recovered:s.chat.continuation.notRecovered,u=ha(a),d=u?`text-error/80`:`text-on-surface-variant/60`,f=u?`bg-error/30`:`bg-outline-variant/20`;return(0,F.jsxs)(`div`,{className:`flex items-center gap-2 py-2 text-xs my-1 ${d}`,children:[(0,F.jsx)(`div`,{className:`flex-1 h-px ${f}`}),(0,F.jsxs)(`span`,{className:`font-medium whitespace-nowrap`,children:[c,` `,l]}),(0,F.jsx)(`div`,{className:`flex-1 h-px ${f}`})]})}var _a=`1 / 1`;function va({src:e,alt:t,aspectRatio:n=_a,objectFit:r=`cover`,className:i,imageClassName:a,onLoadError:o}){let[s,c]=(0,N.useState)(!1),l=r===`contain`?`object-contain`:`object-cover`;return(0,F.jsxs)(`div`,{className:`relative overflow-hidden ${i??``}`,style:{aspectRatio:n},children:[(0,F.jsx)(`img`,{src:e,alt:t,className:`absolute inset-0 w-full h-full ${l} transition-opacity duration-300 ${s?`opacity-100`:`opacity-0`} ${a??``}`,decoding:`async`,onLoad:()=>c(!0),onError:o}),!s&&(0,F.jsx)(`div`,{"aria-hidden":!0,className:`absolute inset-0 animate-pulse bg-surface-container-highest/40`})]})}function ya({part:e}){let{t}=L(),[r,o]=(0,N.useState)(!1),[s,c]=(0,N.useState)(!1),l=e.prompt&&e.prompt.length>80?`${e.prompt.slice(0,80)}\u2026`:e.prompt,d=e.generationTime?t.chat.feed.thoughtFor.replace(`{time}`,e.generationTime):null,f=e.modelName??null;if(e.status===`completed`&&e.imageUrl&&!r){let r=e.imageUrl;return(0,F.jsxs)(`div`,{className:`bg-surface-container-lowest rounded-2xl overflow-hidden border border-outline-variant/10 shadow-sm max-w-md`,children:[(0,F.jsxs)(`button`,{type:`button`,onClick:()=>c(e=>!e),className:`w-full flex items-center gap-2.5 px-4 py-2.5 hover:bg-surface-container-high/50 transition-colors cursor-pointer`,children:[(0,F.jsx)(u,{size:14,className:`text-primary shrink-0`}),(0,F.jsx)(`span`,{className:`text-xs text-on-surface-variant/70 font-body truncate flex-1 text-left`,children:l||t.chat.feed.generatedImageAlt}),(0,F.jsx)(b,{size:14,className:`text-on-surface-variant/40 shrink-0 transition-transform duration-300 ${s?``:`rotate-180`}`})]}),(0,F.jsx)(n,{initial:!1,children:!s&&(0,F.jsxs)(i.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:`auto`},exit:{opacity:0,height:0},transition:{duration:.2,ease:`easeOut`},children:[(f||d)&&(0,F.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap px-4 pb-2`,children:[f&&(0,F.jsx)(`span`,{className:`text-[10px] text-on-surface-variant/60 font-mono bg-surface-container-high px-2 py-0.5 rounded-full`,children:f}),d&&(0,F.jsxs)(`span`,{className:`flex items-center gap-1 text-[10px] text-on-surface-variant/60`,children:[(0,F.jsx)(A,{size:10,className:`text-primary/50`}),d]})]}),(0,F.jsxs)(`div`,{className:`group relative`,children:[(0,F.jsx)(va,{src:r,alt:t.chat.feed.generatedImageAlt,className:`bg-surface-container-high`,objectFit:`contain`,onLoadError:()=>o(!0)}),(0,F.jsx)(`div`,{className:`absolute bottom-3 left-3 right-3 glass-panel rounded-xl p-2 flex justify-between items-center translate-y-12 opacity-0 group-hover:translate-y-0 group-hover:opacity-100 transition-all duration-300`,children:(0,F.jsxs)(`div`,{className:`flex gap-2`,children:[(0,F.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),ra(r,t.common.downloadFilenamePrefix)},className:`w-8 h-8 rounded-lg flex items-center justify-center bg-surface-container-highest/40 hover:bg-primary/20 text-on-surface transition-colors`,title:t.chat.feed.download,children:(0,F.jsx)(S,{size:14})}),(0,F.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),ra(r,t.common.downloadFilenamePrefix)},className:`w-8 h-8 rounded-lg flex items-center justify-center bg-surface-container-highest/40 hover:bg-primary/20 text-on-surface transition-colors`,title:t.chat.feed.saveToGallery,children:(0,F.jsx)(a,{size:14})})]})})]})]},`image-content`)})]})}return e.status===`completed`&&r?(0,F.jsxs)(`div`,{className:`bg-surface-container-low rounded-2xl border border-outline-variant/10 p-6 flex flex-col items-center gap-3 text-on-surface-variant/50 max-w-md`,children:[(0,F.jsx)(ke,{size:32}),(0,F.jsx)(`span`,{className:`text-xs font-body`,children:t.chat.feed.imageUnavailable}),f&&(0,F.jsx)(`span`,{className:`text-[10px] text-on-surface-variant/40 font-mono`,children:f})]}):e.status===`error`?(0,F.jsxs)(`div`,{className:`bg-error/10 border border-error/20 p-4 rounded-xl flex items-start gap-3 max-w-md`,children:[(0,F.jsx)(x,{size:16,className:`text-error shrink-0 mt-0.5`}),(0,F.jsxs)(`div`,{className:`flex flex-col gap-1 min-w-0`,children:[(0,F.jsx)(`span`,{className:`text-error text-xs font-bold`,children:t.chat.feed.imageGenerationFailed}),e.error&&(0,F.jsx)(`span`,{className:`text-error/70 text-[11px] font-body leading-relaxed`,children:e.error}),(f||d)&&(0,F.jsx)(`span`,{className:`text-error/40 text-[10px] font-mono mt-0.5`,children:[f,d].filter(Boolean).join(` · `)})]})]}):(0,F.jsxs)(`div`,{className:`bg-surface-container-lowest border border-outline-variant/10 rounded-2xl p-5 flex flex-col gap-3 max-w-md animate-pulse`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,F.jsx)(`div`,{className:`w-10 h-10 rounded-xl bg-surface-container-high flex items-center justify-center shrink-0`,children:(0,F.jsx)(u,{size:20,className:`text-primary/50 shrink-0`})}),(0,F.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,F.jsx)(`span`,{className:`text-xs font-medium text-on-surface`,children:f?t.chat.feed.modelStatus.replace(`{status}`,t.chat.feed.statusGenerating).replace(`{model}`,()=>f):t.chat.feed.generatingImage}),(0,F.jsx)(`span`,{className:`text-[10px] text-on-surface-variant/50 font-body`,children:e.prompt})]})]}),(0,F.jsx)(`div`,{className:`aspect-square bg-surface-container-high rounded-xl`}),(0,F.jsx)(`div`,{className:`h-1 w-full bg-surface-container-high rounded-full overflow-hidden`,children:(0,F.jsx)(`div`,{className:`h-full bg-primary w-1/3 rounded-full animate-[slide_1s_ease-in-out_infinite_alternate]`})})]})}function ba(e,t,n){switch(e){case`cursor_lost`:return{label:n.chat.cursorLost.replace(`{detail}`,t??``),severity:`info`};case`tool_loop_exhausted`:return{label:t?`${n.chat.toolLoopExhausted} — ${t}`:n.chat.toolLoopExhausted,severity:`error`};case`chat_compacted`:return{label:n.chat.systemEvents.chatCompacted,severity:`info`};case`summary_handoff`:return{label:n.chat.systemEvents.summaryHandoff,severity:`info`};case`cursor_internal_tool_call`:return{label:n.chat.systemEvents.cursorInternalToolCall.replace(`{tool}`,t??``),severity:`info`};default:return{label:t??e,severity:`info`}}}function xa({event:e,detail:t}){let{t:n}=L(),{label:r,severity:i}=ba(e,t,n),a=i===`error`?`text-error/80`:`text-on-surface-variant/60`,o=i===`error`?`bg-error/30`:`bg-outline-variant/20`;return(0,F.jsxs)(`div`,{className:`flex items-center gap-2 py-2 text-xs my-1 ${a}`,children:[(0,F.jsx)(`div`,{className:`flex-1 h-px ${o}`}),(0,F.jsx)(`span`,{className:`font-medium whitespace-nowrap`,children:r}),(0,F.jsx)(`div`,{className:`flex-1 h-px ${o}`})]})}var Sa=new Map;function Ca(e){return e.scrollHeight-e.scrollTop-e.clientHeight<=24}function wa({messageId:e,text:t,isStreaming:r}){let{t:a}=L(),o=(0,N.useRef)(Sa.get(e)??{expanded:r,scrollTop:0,shouldAutoFollow:r}),[s,c]=(0,N.useState)(o.current.expanded),l=(0,N.useRef)(null),u=(0,N.useRef)(o.current),d=(0,N.useRef)(r),f=(0,N.useCallback)(t=>{u.current={...u.current,...t},Sa.set(e,u.current)},[e]);return(0,N.useEffect)(()=>{!d.current&&r&&(c(!0),f({expanded:!0,shouldAutoFollow:!0})),d.current&&!r&&(c(!1),f({expanded:!1,shouldAutoFollow:!1})),d.current=r},[r,f]),(0,N.useLayoutEffect)(()=>{if(!s||!l.current)return;let e=l.current,t=Math.max(0,e.scrollHeight-e.clientHeight);if(r&&u.current.shouldAutoFollow){e.scrollTop=t,f({scrollTop:e.scrollTop});return}e.scrollTop=Math.min(u.current.scrollTop,t)},[s,r,t,f]),(0,F.jsxs)(`div`,{className:`mb-3`,children:[(0,F.jsxs)(`button`,{type:`button`,onClick:()=>{let e=!s;c(e),f({expanded:e})},className:`glass-surface flex items-center gap-2 text-xs text-on-surface-variant/70
24
+ `);o=r.pop()??``;for(let e of r)if(e.startsWith(`data: `))try{t(JSON.parse(e.slice(6)))}catch{}}}finally{i.releaseLock()}}function yi(e,t){return e.preferredSummaryModel===`current_model`?t:e.preferredSummaryModel}function bi(e,t,n){return e.autoRenameEnabled?n?!0:t!==void 0&&vn(t):!1}function xi(e,t){return e.preferredModel===`current_model`?t:e.preferredModel}async function Si(e,t,n){let r=bn(e,t.promptPrefixLength);if(!r||t.strategy===`prompt_prefix`)return r;try{return(await Ir({prompt:e,model:xi(t,n)})).title}catch{return r}}async function Ci({chats:e,chatId:t,prompt:n,chatTitleSettings:r,currentModel:i}){let a=await Si(n,r,i);a&&await e.updateChatTitle(t,a)}function wi(e){Ci(e).catch(e=>{console.warn(`[chat-title] Failed to auto rename chat`,e)})}function Ti(e,t,n){t&&n(e,t.targetMessageId,t.patch)}function Ei({chats:e,getActiveModel:t,systemPrompt:n,promptSettings:r,optimistic:i,thinkingEnabled:a,reasoningEffort:o,maxToolIterations:s,contextSettings:c,chatTitleSettings:l,currentChatId:u,getAgentSelection:d}){let f=j(),{t:p}=L(),m=p.chat.feed.subagentPendingName,h=Fr({currentChatId:u}),{appendOptimisticMessages:g,updateOptimisticMessage:_}=i,[v,y]=(0,N.useState)(null),b=(0,N.useCallback)(e=>{e.contextInfo&&h.seedContextInfo(e.chatId,e.contextInfo)},[h]),x=(0,N.useCallback)(async t=>{await Promise.all([e.loadChats(),f.invalidateQueries({queryKey:W.list(t)})])},[e,f]),S=(0,N.useCallback)(async(i,u)=>{if(h.abortControllerRef.current)return;h.setIsGenerating(!0);let v=e.currentChatId,y=!1,b=e.currentChat?.title;if(!v){let t=await e.createChat();v=t.id,b=t.title,y=!0}let x=t(),S=d(),C=S.mode===`agent`?`agent`:`chat`;bi(l,b,y)&&wi({chats:e,chatId:v,prompt:i,chatTitleSettings:l,currentModel:x});let w=`optimistic-user-${crypto.randomUUID()}`,T=`optimistic-ai-${crypto.randomUUID()}`,ee={id:w,chatId:v,role:`user`,text:i,timestamp:Date.now(),interactionMode:C,...C===`agent`?{agentId:S.agentId,agentName:S.agentName}:{}},te={id:T,chatId:v,role:`ai`,text:``,timestamp:Date.now(),isGenerating:!0,modelName:x,interactionMode:C,...C===`agent`?{agentId:S.agentId,agentName:S.agentName}:{}};g(v,[ee,te]);let ne=new AbortController;h.setAbortController(ne);let E=Vr({userMessageId:w,aiMessageId:T});try{await vi({chatId:v,prompt:i,model:x,systemPrompt:n||void 0,promptSettings:r,thinkingEnabled:a,reasoningEffort:o,maxToolIterations:s,contextSettings:c,toolIntent:u,agentMode:S.mode,agentId:Cr(S.agentId)?S.agentId:void 0},e=>{E=Hr(E,e,{pendingSubagentName:m}),Ti(v,E.userMessageUpdate,_),Ti(v,E.aiMessageUpdate,_),e.type===`context_info`&&h.updateContextInfo(v,{estimatedInputTokens:e.estimatedInputTokens,contextLimit:e.contextLimit,estimatedUsageRatio:e.estimatedUsageRatio,mode:e.mode,severity:e.severity}),e.type===`fallback_notice`&&h.setFallbackNotice({from:e.from,to:e.to,reason:e.reason})},ne.signal)}catch(e){if(e instanceof Error&&e.name===`AbortError`)_(v,E.currentAiMessageId,{isGenerating:!1});else{console.error(`[respond]`,e);let t=e instanceof Error?e.message:p.errors.textGenerationFailed,n=E.parts.some(e=>e.type===`error`)?E.parts:[...E.parts,{type:`error`,text:t}];_(v,E.currentAiMessageId,{isGenerating:!1,text:E.text||t,parts:n})}}finally{h.setAbortController(null),h.setIsGenerating(!1),y&&e.loadChats(),(!E.receivedServerUserMessageId||!E.receivedServerAiMessageId)&&f.invalidateQueries({queryKey:W.list(v)})}},[e,t,n,r,p,g,_,f,a,o,s,c,l,d,h,m]),C=(0,N.useCallback)(async()=>{let n=e.currentChatId;if(!n)throw Error(`No active chat available for compaction.`);y(`compact`);try{b(await Lr(n,{model:yi(c,t())})),await x(n)}finally{y(null)}},[e.currentChatId,c,t,x,b]),w=(0,N.useCallback)(async()=>{let n=e.currentChatId;if(!n)throw Error(`No active chat available for summary handoff.`);y(`new-chat`);try{let r=await Rr(n,{model:yi(c,t())});b(r),await e.loadChats(),e.setCurrentChatId(r.chatId),await f.invalidateQueries({queryKey:W.list(r.chatId)})}finally{y(null)}},[e,c,t,f,b]);return{isGenerating:h.isGenerating,handleRespond:S,handleCompactCurrentChat:C,handleStartSummarizedChat:w,handleStop:h.handleStop,contextInfo:h.contextInfo,fallbackNotice:h.fallbackNotice,seedContextInfo:h.seedContextInfo,contextCache:h.contextCache,isContextActionPending:v!==null}}async function Di(e,t){let{data:n,error:r}=await H.api.settings.providers({provider:e}).put(t);if(r)throw Error(V(r.value,I.settings.providers.saveError));return n}var Q={all:[`provider-settings`],list:()=>[...Q.all,`list`],detail:e=>[...Q.all,`detail`,e]};function Oi(){return k({queryKey:Q.list(),staleTime:3e4,queryFn:async()=>{let{data:e,error:t}=await H.api.settings.providers.get();if(t)throw Error(V(t.value,I.settings.providers.loadError));return e}})}function ki(e){return k({queryKey:Q.detail(e),staleTime:3e4,queryFn:async()=>{let{data:t,error:n}=await H.api.settings.providers({provider:e}).get();if(n)throw Error(V(n.value,I.settings.providers.loadError));return t}})}function Ai(e,t){e.setQueryData(Q.detail(t.provider),t),e.setQueryData(Q.list(),e=>e&&{providers:e.providers.map(e=>e.provider===t.provider?t:e)})}function ji(){let{data:e,isLoading:t,error:n,refetch:r}=O(Oi());return{providers:e?.providers??[],isLoading:t,error:n,refetch:r}}function Mi(e){let t=j(),{data:n,isLoading:r,error:i,refetch:a}=O({...ki(e??``),enabled:!!e});return{descriptor:n??null,isLoading:r,error:i,refetch:a,invalidate:async()=>{e&&(await t.invalidateQueries({queryKey:Q.detail(e)}),await t.invalidateQueries({queryKey:Q.list()}))}}}function Ni(e){let t=j();return D({mutationFn:t=>Di(e,t),onSuccess:e=>{Ai(t,e)}})}function Pi({catalog:e,settings:t,currentTextModel:n}){let r=e.textModels,i=(0,N.useMemo)(()=>Bt(n??void 0,void 0,r),[r,n]),a=(0,N.useCallback)(()=>i,[i]),o=e.status!==`ready`||r.length===0,s=(0,N.useMemo)(()=>n?r.find(e=>e.modelId===n)?.provider??null:null,[r,n]),{descriptor:c}=Mi(s);return{activeModels:r,activeModel:i,getActiveModel:a,isModelSelectorDisabled:o,lockedProvider:s,effectiveThinkingEnabled:c?.settings.thinkingEnabled??t.thinkingEnabled,effectiveReasoningEffort:c?.settings.reasoningEffort??t.reasoningEffort,effectiveMaxToolIterations:c?.settings.maxToolIterations??t.maxToolIterations}}function Fi({currentChatId:e,currentChat:t,updateChatAgentSelection:n}){let[r,i]=(0,N.useState)(null),a=O(cn()),o=(0,N.useMemo)(()=>a.data?.agents??[],[a.data?.agents]),s=(0,N.useMemo)(()=>({mode:t?.lastUsedMode===`agent`?`agent`:`chat`,agentId:t?.selectedAgentId??`default`}),[t?.lastUsedMode,t?.selectedAgentId]),c=r?.chatId===e?r:s,l=c.mode,u=c.agentId,d=(0,N.useMemo)(()=>o.find(e=>e.id===u)??null,[o,u]),f=(0,N.useCallback)((t,r)=>{i({chatId:e,mode:t,agentId:r}),e&&n(e,{lastUsedMode:t,selectedAgentId:t===`agent`?r:`chat`})},[e,n]),p=(0,N.useCallback)(e=>{f(e,e===`agent`?u||`default`:`chat`)},[f,u]),m=(0,N.useCallback)(e=>{f(`agent`,e)},[f]);return{agents:o,isAgentListLoading:a.isLoading,agentExecutionMode:l,selectedAgentId:u,selectedAgent:d,setAgentExecutionMode:p,setSelectedAgentId:m}}function Ii(e,t){(0,N.useEffect)(()=>{for(let n of e)`contextInfo`in n&&n.contextInfo&&t(n.id,n.contextInfo)},[e,t])}function Li({chats:e,navigate:t}){return{handleNewChat:(0,N.useCallback)(async()=>{await e.createChat(),await t({to:`/`})},[e,t]),handleUpdateChatModel:(0,N.useCallback)(async(t,n)=>{await e.updateChatModel(t,`textModel`,n)},[e]),handleSelectChat:(0,N.useCallback)(n=>{e.selectChat(n),t({to:`/`})},[e,t]),handleUpdateChatTitle:(0,N.useCallback)(async(t,n)=>{await e.updateChatTitle(t,n)},[e]),handleDeleteChat:(0,N.useCallback)(async t=>{await e.deleteChat(t)},[e]),handleNavigate:(0,N.useCallback)(e=>{t({to:{chat:`/`,gallery:`/gallery`,settings:`/settings`,studio:`/studio`}[e]})},[t])}}function Ri({handleRespond:e,stopGeneration:t}){let[n,r]=(0,N.useState)(!1);return{imageToolIntent:n,setImageToolIntent:r,handleSubmit:(0,N.useCallback)(t=>{e(t,n?`image_generation_requested`:void 0),r(!1)},[e,n]),handleStop:(0,N.useCallback)(()=>{t(),r(!1)},[t])}}async function zi(e){let{data:t,error:n}=await H.api.settings.app.put(e);if(n)throw Error(V(n.value,I.settings.app.saveError));return t}var Bi=300;function Vi(){return{id:`custom-${Date.now()}`,label:``,path:``,enabled:!1,injectionRole:`system`,sendFrequency:`first-turn`}}function Hi(){let e=j(),t=(0,N.useRef)(null),n=(0,N.useRef)(null),{data:r,isLoading:i,error:a}=O({...hr(),placeholderData:J}),o=D({mutationFn:zi,onMutate:t=>{let n=e.getQueryData(X.current())??J;return e.setQueryData(X.current(),t),{previousSettings:n}},onError:(t,n,r)=>{r?.previousSettings&&e.setQueryData(X.current(),r.previousSettings)},onSuccess:t=>{e.setQueryData(X.current(),Vn(t))}}),s=(0,N.useMemo)(()=>Vn(r??J),[r]),c=(0,N.useCallback)(()=>{n.current&&=(clearTimeout(n.current),null);let e=t.current;e&&(t.current=null,o.mutate(e))},[o]);(0,N.useEffect)(()=>()=>{c()},[c]);let l=(0,N.useCallback)(r=>{let i=Vn(r(Vn(e.getQueryData(X.current())??J)));e.setQueryData(X.current(),i),t.current=i,n.current&&clearTimeout(n.current),n.current=setTimeout(()=>{c()},Bi)},[c,e]),u=(0,N.useCallback)(e=>{l(t=>({...t,promptSettings:e(t.promptSettings)}))},[l]),d=(0,N.useCallback)(e=>{l(t=>({...t,contextSettings:{...t.contextSettings,...e}}))},[l]),f=(0,N.useCallback)(e=>{l(t=>({...t,chatTitleSettings:zn({...t.chatTitleSettings,...e})}))},[l]),p=(0,N.useCallback)(e=>{l(t=>({...t,multiAgentSettings:{...t.multiAgentSettings,...e}}))},[l]),m=(0,N.useCallback)(e=>{u(t=>({...t,textSystemPrompt:e}))},[u]),h=(0,N.useCallback)(e=>{u(t=>({...t,imageSystemPrompt:e}))},[u]),g=(0,N.useCallback)((e,t)=>{u(n=>e===`agentsMd`||e===`claudeMd`?{...n,[e]:{...n[e],...t}}:{...n,customRules:n.customRules.map(n=>n.id===e?{...n,...t}:n)})},[u]),_=(0,N.useCallback)(()=>{u(e=>({...e,customRules:[...e.customRules,Vi()]}))},[u]),v=(0,N.useCallback)(e=>{u(t=>({...t,customRules:t.customRules.filter(t=>t.id!==e)}))},[u]),y=(0,N.useCallback)(()=>{l(()=>J)},[l]);return{isLoading:i,error:a,globalTextSystemPrompt:s.promptSettings.textSystemPrompt,setGlobalTextSystemPrompt:m,globalImageSystemPrompt:s.promptSettings.imageSystemPrompt,setGlobalImageSystemPrompt:h,promptSettings:s.promptSettings,setTextSystemPrompt:m,setImageSystemPrompt:h,updateRuleFileSetting:g,addCustomRule:_,removeCustomRule:v,globalImageQuality:s.globalImageQuality,setGlobalImageQuality:e=>{l(t=>({...t,globalImageQuality:e}))},thinkingEnabled:s.thinkingEnabled,setThinkingEnabled:e=>{l(t=>({...t,thinkingEnabled:e}))},reasoningEffort:s.reasoningEffort,setReasoningEffort:e=>{l(t=>({...t,reasoningEffort:e}))},maxToolIterations:s.maxToolIterations,setMaxToolIterations:e=>{l(t=>({...t,maxToolIterations:Ln(e)}))},contextSettings:s.contextSettings,multiAgentSettings:s.multiAgentSettings,chatTitleSettings:s.chatTitleSettings,setContextCompactionBehavior:e=>d({compactionBehavior:e}),setContextWarningThreshold:e=>d({warningThreshold:e}),setContextDangerThreshold:e=>d({dangerThreshold:e}),setContextHardStopThreshold:e=>d({hardStopThreshold:e}),setPreferredSummaryModel:e=>d({preferredSummaryModel:e}),setProviderCompactionEnabled:e=>d({providerCompactionEnabled:e}),setMultiAgentEnabled:e=>p({enabled:e}),setChatDelegationEnabled:e=>p({chatDelegationEnabled:e}),setTraceVisibility:e=>p({traceVisibility:e}),setMaxDelegationDepth:e=>p({maxDepth:e}),setMaxSubagentCalls:e=>p({maxSubagentCalls:e}),setSubagentTimeoutMs:e=>p({timeoutMs:e}),setDefaultSubagentMaxTurns:e=>p({defaultMaxTurns:e}),setChatAutoRenameEnabled:e=>f({autoRenameEnabled:e}),setChatTitleStrategy:e=>f({strategy:e}),setChatTitlePromptPrefixLength:e=>f({promptPrefixLength:e}),setPreferredChatTitleModel:e=>f({preferredModel:e}),resetSettings:y}}var Ui={all:[`model-catalog`]},Wi=()=>k({queryKey:Ui.all,queryFn:async()=>{let{data:e,error:t}=await H.api.settings.models.get();if(t)throw Error(V(t.value));return e},staleTime:1e3*60*55,gcTime:1e3*60*60*2});function Gi(){let e=j(),{data:t,isLoading:n,error:r,refetch:i}=O(Wi()),a=(0,N.useCallback)(async()=>{await i()},[i]),o=(0,N.useCallback)(t=>{e.setQueryData(Ui.all,t)},[e]);return{catalog:t||Lt,isLoading:n,error:r?r.message:null,refreshCatalog:a,setCatalog:o}}function Ki(){let e=gr(),t=Gi(),n=Hi(),r=h(),i=_r(),a=e.currentChat,o=Pi({catalog:t.catalog,settings:n,currentTextModel:a?.textModel}),s=Fi({currentChatId:e.currentChatId,currentChat:a,updateChatAgentSelection:e.updateChatAgentSelection}),c=Ei({chats:e,getActiveModel:o.getActiveModel,systemPrompt:n.globalTextSystemPrompt,promptSettings:n.promptSettings,optimistic:i,thinkingEnabled:o.effectiveThinkingEnabled,reasoningEffort:o.effectiveReasoningEffort,maxToolIterations:o.effectiveMaxToolIterations,contextSettings:n.contextSettings,chatTitleSettings:n.chatTitleSettings,currentChatId:e.currentChatId,getAgentSelection:()=>({mode:s.agentExecutionMode,agentId:s.agentExecutionMode===`agent`?s.selectedAgentId:`chat`,agentName:s.agentExecutionMode===`agent`?s.selectedAgent?.name:void 0})});Ii(e.chats,c.seedContextInfo);let l=Li({chats:e,navigate:r}),u=Ri({handleRespond:c.handleRespond,stopGeneration:c.handleStop});return{imageToolIntent:u.imageToolIntent,agentExecutionMode:s.agentExecutionMode,selectedAgentId:s.selectedAgentId,agents:s.agents,isAgentListLoading:s.isAgentListLoading,isGenerating:c.isGenerating,chats:e.chats,currentChatId:e.currentChatId,catalog:t.catalog,settings:n,activeModels:o.activeModels,activeModel:o.activeModel,isModelSelectorDisabled:o.isModelSelectorDisabled,contextInfo:c.contextInfo,fallbackNotice:c.fallbackNotice,seedContextInfo:c.seedContextInfo,contextCache:c.contextCache,isContextActionPending:c.isContextActionPending,lockedProvider:o.lockedProvider,setImageToolIntent:u.setImageToolIntent,setAgentExecutionMode:s.setAgentExecutionMode,setSelectedAgentId:s.setSelectedAgentId,handleNewChat:l.handleNewChat,handleUpdateChatModel:l.handleUpdateChatModel,handleUpdateChatTitle:l.handleUpdateChatTitle,handleDeleteChat:l.handleDeleteChat,handleSelectChat:l.handleSelectChat,handleNavigate:l.handleNavigate,handleSubmit:u.handleSubmit,handleStop:u.handleStop,handleCompactCurrentChat:c.handleCompactCurrentChat,handleStartSummarizedChat:c.handleStartSummarizedChat,refreshCatalog:t.refreshCatalog}}var qi=(0,N.createContext)(null);function Ji(){let e=(0,N.use)(qi);if(!e)throw Error(`useApp must be used within AppContext`);return e}var Yi=T(`/_authenticated`)({beforeLoad:({context:e,location:t})=>{e.auth.isAuthenticated||se({to:`/login`,search:{redirect:t.href},throw:!0})},loader:async({context:{queryClient:e}})=>{let t=e.ensureQueryData(Zt());await Promise.all([t,e.ensureQueryData(Wi()),e.ensureQueryData(hr()),e.ensureQueryData(cn())]);let n=(await t)[0]?.id;n&&await e.prefetchInfiniteQuery(an(n))},component:Xi});function Xi(){let{auth:e}=Yi.useRouteContext(),t=h(),n=Ki(),r=E().location.pathname,[i,a]=(0,N.useState)(!1);if(!e.isAuthenticated)return t({to:`/login`}),null;let o=`chat`;return r.includes(`/gallery`)&&(o=`gallery`),r.includes(`/settings`)&&(o=`settings`),r.includes(`/studio`)&&(o=`studio`),(0,F.jsx)(qi,{value:n,children:(0,F.jsxs)(Kt,{currentPage:o,onNavigate:e=>n.handleNavigate(e),chats:n.chats,currentChatId:n.currentChatId,onSelectChat:n.handleSelectChat,onUpdateChatTitle:(e,t)=>void n.handleUpdateChatTitle(e,t),onDeleteChat:e=>void n.handleDeleteChat(e),onNewChat:()=>void n.handleNewChat(),contextCache:n.contextCache,isMobileSidebarOpen:i,onMobileSidebarClose:()=>a(!1),children:[(0,F.jsx)(Ut,{activeModel:n.activeModel,activeModels:n.activeModels,isModelSelectorDisabled:n.isModelSelectorDisabled,currentChatId:n.currentChatId,currentPage:o,onUpdateChatModel:(e,t)=>void n.handleUpdateChatModel(e,t),onSetPageModel:e=>{n.currentChatId&&n.handleUpdateChatModel(n.currentChatId,e)},onNewChat:()=>void n.handleNewChat(),onNavigateToSettings:()=>n.handleNavigate(`settings`),modelCatalog:n.catalog,lockedProvider:n.lockedProvider,onMobileMenuToggle:()=>a(e=>!e)}),(0,F.jsx)(`div`,{className:`flex-1 min-h-0 overflow-hidden flex flex-col`,children:(0,F.jsx)(N.Suspense,{fallback:(0,F.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,F.jsx)(Jt,{size:`lg`})}),children:(0,F.jsx)(Oe,{})})})]})})}var Zi=24;function Qi(e){return e.scrollHeight-e.scrollTop-e.clientHeight<=Zi}function $i(e){return e?.parts?.filter(e=>e.type===`generated_image`).map(e=>`${e.imageId}:${e.status}:${e.imageUrl??``}`).join(`,`)??``}function ea(e,t){let[n,r]=(0,N.useState)(!1),i=(0,N.useRef)(null),a=(0,N.useRef)(!0),o=(0,N.useRef)(null),s=(0,N.useRef)(!0),c=(0,N.useRef)(e),l=t.at(-1),u=l?.id??null,d=l?.isGenerating??!1,f=l?.parts?.length??0,p=l?.text?.length??0,m=$i(l);return(0,N.useEffect)(()=>{c.current!==e&&(c.current=e,a.current=!0,s.current=!0)},[e]),(0,N.useLayoutEffect)(()=>{let e=i.current;!s.current||!e||t.length===0||(e.scrollTop=e.scrollHeight,s.current=!1)},[e,t.length]),(0,N.useLayoutEffect)(()=>{d&&o.current!==u&&(a.current=!0);let e=i.current;!d||!e||!a.current||(e.scrollTop=e.scrollHeight)},[u,d,f,p,m]),(0,N.useEffect)(()=>{o.current=d?u:null},[u,d]),{parentRef:i,showScrollButton:n,handleScroll:(0,N.useCallback)(e=>{let t=Qi(e.currentTarget);a.current=t,r(!t)},[]),scrollToBottom:(0,N.useCallback)(()=>{let e=i.current;e&&(a.current=!0,r(!1),e.scrollTo({top:e.scrollHeight,behavior:`smooth`}))},[])}}function ta(e,t){return`${na(e)||`mangostudio`}-art-${na(String(t))||String(Date.now())}.png`}function na(e){return e.trim().replace(/[^a-zA-Z0-9_-]+/g,`-`).replace(/^-+|-+$/g,``)}function ra(e,t){let n=document.createElement(`a`);n.href=e,n.download=ta(t,Date.now()),document.body.appendChild(n),n.click(),document.body.removeChild(n)}function ia({msg:e}){let{t}=L();return(0,F.jsxs)(`div`,{className:`space-y-6`,children:[e.styleParams&&e.styleParams.length>0&&(0,F.jsxs)(`div`,{className:`bg-surface-container-low p-6 rounded-xl border border-outline-variant/5`,children:[(0,F.jsxs)(`h3`,{className:`font-headline text-sm font-bold mb-4 flex items-center gap-2 text-on-surface`,children:[(0,F.jsx)(A,{className:`text-primary`,size:16}),t.chat.feed.styleParams]}),(0,F.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.styleParams.map(e=>(0,F.jsx)(`span`,{className:`px-3 py-1 bg-surface-container-high text-on-surface-variant text-[10px] font-bold rounded-sm uppercase tracking-wider`,children:e},e))})]}),e.text&&!e.imageUrl&&(0,F.jsx)(`div`,{className:`bg-error/10 border border-error/20 p-4 rounded-xl text-error text-sm font-body`,children:e.text}),!e.text&&!e.imageUrl&&(0,F.jsx)(`div`,{className:`bg-surface-container-lowest p-6 rounded-xl border border-outline-variant/5`,children:(0,F.jsx)(`p`,{className:`font-body text-xs text-on-surface-variant leading-relaxed`,children:t.chat.feed.neuralDiffusionPath})})]})}function aa({msg:e}){let{t}=L(),[n,r]=(0,N.useState)(!1),i=e.imageUrl;return(0,F.jsxs)(`div`,{className:`flex flex-col gap-4 w-full`,children:[e.generationTime&&(0,F.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-on-surface-variant bg-surface-container-lowest py-2 px-3 rounded-lg w-fit border border-outline-variant/10`,children:[(0,F.jsx)(A,{size:12,className:`text-primary`}),(0,F.jsx)(`span`,{children:t.chat.feed.thoughtFor.replace(`{time}`,e.generationTime)})]}),(0,F.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6 items-start w-full`,children:[i&&(0,F.jsx)(`div`,{className:`group relative bg-surface-container-lowest rounded-xl overflow-hidden aspect-[4/5] shadow-2xl transition-transform duration-500 hover:scale-[1.01]`,children:n?(0,F.jsxs)(`div`,{className:`w-full h-full flex flex-col items-center justify-center text-on-surface-variant/50 p-6 text-center bg-surface-container-high`,children:[(0,F.jsx)(ke,{size:48,className:`mb-4 opacity-50`}),(0,F.jsx)(`p`,{className:`font-headline font-bold mb-2`,children:t.chat.feed.imageUnavailable}),(0,F.jsx)(`p`,{className:`text-xs font-body`,children:t.chat.feed.imageUnavailableHint})]}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`img`,{src:i,alt:`Generated`,className:`w-full h-full object-cover grayscale-[20%] group-hover:grayscale-0 transition-[filter] duration-700`,decoding:`async`,onError:()=>r(!0)}),(0,F.jsxs)(`div`,{className:`absolute bottom-4 left-4 right-4 glass-panel rounded-xl p-3 flex justify-between items-center translate-y-12 opacity-0 group-hover:translate-y-0 group-hover:opacity-100 transition-all duration-300`,children:[(0,F.jsxs)(`div`,{className:`flex gap-2`,children:[(0,F.jsx)(`button`,{type:`button`,onClick:()=>ra(i,t.common.downloadFilenamePrefix),className:`w-9 h-9 rounded-lg flex items-center justify-center bg-surface-container-highest/40 hover:bg-primary/20 text-on-surface transition-colors`,title:t.chat.feed.download,children:(0,F.jsx)(S,{size:16})}),(0,F.jsx)(`button`,{type:`button`,className:`w-9 h-9 rounded-lg flex items-center justify-center bg-surface-container-highest/40 hover:bg-primary/20 text-on-surface transition-colors`,title:t.chat.feed.saveToGallery,children:(0,F.jsx)(a,{size:16})})]}),(0,F.jsx)(`button`,{type:`button`,className:`px-4 py-1.5 rounded-lg bg-primary/10 hover:bg-primary/20 text-primary text-xs font-bold transition-colors`,children:t.chat.feed.regenerate})]})]})}),(0,F.jsx)(ia,{msg:e})]})]})}var oa=`modulepreload`,sa=function(e){return`/`+e},ca={},la=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=sa(t,n),t in ca)return;ca[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:oa,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},ua=(0,N.lazy)(()=>la(()=>import(`./MarkdownContentRenderer-fly_E11y.js`).then(e=>({default:e.MarkdownContentRenderer})),__vite__mapDeps([0,1,2,3])));function da(e){return(0,F.jsx)(N.Suspense,{fallback:(0,F.jsx)(fa,{...e}),children:(0,F.jsx)(ua,{...e})})}function fa({content:e,className:t}){return(0,F.jsx)(`div`,{className:`markdown-content ${t??``}`,children:e})}function pa(e,t){let n=t.chat.continuation.title;switch(e){case`provider_changed`:return n.providerChanged;case`model_changed`:return n.modelChanged;case`system_prompt_changed`:return n.systemPromptChanged;case`toolset_changed`:return n.toolsetChanged;case`agent_changed`:return n.agentChanged;case`agent_runtime_changed`:return n.agentRuntimeChanged;case`cursor_expired`:return n.cursorExpired;case`cursor_invalid`:return n.cursorInvalid;case`tool_result_cursor_loss`:return n.toolResultCursorLoss;case`envelope_malformed`:return n.envelopeMalformed}}function ma(e,t){return e.replace(/{provider}/g,t.provider).replace(/{model}/g,t.model).replace(/{fromProvider}/g,t.fromProvider).replace(/{fromMode}/g,t.fromMode).replace(/{toMode}/g,t.toMode)}var ha=e=>e===`tool_result_cursor_loss`;function ga({provider:e,modelName:t,fromProvider:n,fromMode:r,toMode:i,reasonCode:a,recovered:o}){let{t:s}=L(),c=ma(pa(a,s),{provider:e,model:t,fromProvider:n??e,fromMode:r,toMode:i}),l=o?s.chat.continuation.recovered:s.chat.continuation.notRecovered,u=ha(a),d=u?`text-error/80`:`text-on-surface-variant/60`,f=u?`bg-error/30`:`bg-outline-variant/20`;return(0,F.jsxs)(`div`,{className:`flex items-center gap-2 py-2 text-xs my-1 ${d}`,children:[(0,F.jsx)(`div`,{className:`flex-1 h-px ${f}`}),(0,F.jsxs)(`span`,{className:`font-medium whitespace-nowrap`,children:[c,` `,l]}),(0,F.jsx)(`div`,{className:`flex-1 h-px ${f}`})]})}var _a=`1 / 1`;function va({src:e,alt:t,aspectRatio:n=_a,objectFit:r=`cover`,className:i,imageClassName:a,onLoadError:o}){let[s,c]=(0,N.useState)(!1),l=r===`contain`?`object-contain`:`object-cover`;return(0,F.jsxs)(`div`,{className:`relative overflow-hidden ${i??``}`,style:{aspectRatio:n},children:[(0,F.jsx)(`img`,{src:e,alt:t,className:`absolute inset-0 w-full h-full ${l} transition-opacity duration-300 ${s?`opacity-100`:`opacity-0`} ${a??``}`,decoding:`async`,onLoad:()=>c(!0),onError:o}),!s&&(0,F.jsx)(`div`,{"aria-hidden":!0,className:`absolute inset-0 animate-pulse bg-surface-container-highest/40`})]})}function ya({part:e}){let{t}=L(),[r,o]=(0,N.useState)(!1),[s,c]=(0,N.useState)(!1),l=e.prompt&&e.prompt.length>80?`${e.prompt.slice(0,80)}\u2026`:e.prompt,d=e.generationTime?t.chat.feed.thoughtFor.replace(`{time}`,e.generationTime):null,f=e.modelName??null;if(e.status===`completed`&&e.imageUrl&&!r){let r=e.imageUrl;return(0,F.jsxs)(`div`,{className:`bg-surface-container-lowest rounded-2xl overflow-hidden border border-outline-variant/10 shadow-sm max-w-md`,children:[(0,F.jsxs)(`button`,{type:`button`,onClick:()=>c(e=>!e),className:`w-full flex items-center gap-2.5 px-4 py-2.5 hover:bg-surface-container-high/50 transition-colors cursor-pointer`,children:[(0,F.jsx)(u,{size:14,className:`text-primary shrink-0`}),(0,F.jsx)(`span`,{className:`text-xs text-on-surface-variant/70 font-body truncate flex-1 text-left`,children:l||t.chat.feed.generatedImageAlt}),(0,F.jsx)(b,{size:14,className:`text-on-surface-variant/40 shrink-0 transition-transform duration-300 ${s?``:`rotate-180`}`})]}),(0,F.jsx)(n,{initial:!1,children:!s&&(0,F.jsxs)(i.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:`auto`},exit:{opacity:0,height:0},transition:{duration:.2,ease:`easeOut`},children:[(f||d)&&(0,F.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap px-4 pb-2`,children:[f&&(0,F.jsx)(`span`,{className:`text-[10px] text-on-surface-variant/60 font-mono bg-surface-container-high px-2 py-0.5 rounded-full`,children:f}),d&&(0,F.jsxs)(`span`,{className:`flex items-center gap-1 text-[10px] text-on-surface-variant/60`,children:[(0,F.jsx)(A,{size:10,className:`text-primary/50`}),d]})]}),(0,F.jsxs)(`div`,{className:`group relative`,children:[(0,F.jsx)(va,{src:r,alt:t.chat.feed.generatedImageAlt,className:`bg-surface-container-high`,objectFit:`contain`,onLoadError:()=>o(!0)}),(0,F.jsx)(`div`,{className:`absolute bottom-3 left-3 right-3 glass-panel rounded-xl p-2 flex justify-between items-center translate-y-12 opacity-0 group-hover:translate-y-0 group-hover:opacity-100 transition-all duration-300`,children:(0,F.jsxs)(`div`,{className:`flex gap-2`,children:[(0,F.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),ra(r,t.common.downloadFilenamePrefix)},className:`w-8 h-8 rounded-lg flex items-center justify-center bg-surface-container-highest/40 hover:bg-primary/20 text-on-surface transition-colors`,title:t.chat.feed.download,children:(0,F.jsx)(S,{size:14})}),(0,F.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),ra(r,t.common.downloadFilenamePrefix)},className:`w-8 h-8 rounded-lg flex items-center justify-center bg-surface-container-highest/40 hover:bg-primary/20 text-on-surface transition-colors`,title:t.chat.feed.saveToGallery,children:(0,F.jsx)(a,{size:14})})]})})]})]},`image-content`)})]})}return e.status===`completed`&&r?(0,F.jsxs)(`div`,{className:`bg-surface-container-low rounded-2xl border border-outline-variant/10 p-6 flex flex-col items-center gap-3 text-on-surface-variant/50 max-w-md`,children:[(0,F.jsx)(ke,{size:32}),(0,F.jsx)(`span`,{className:`text-xs font-body`,children:t.chat.feed.imageUnavailable}),f&&(0,F.jsx)(`span`,{className:`text-[10px] text-on-surface-variant/40 font-mono`,children:f})]}):e.status===`error`?(0,F.jsxs)(`div`,{className:`bg-error/10 border border-error/20 p-4 rounded-xl flex items-start gap-3 max-w-md`,children:[(0,F.jsx)(x,{size:16,className:`text-error shrink-0 mt-0.5`}),(0,F.jsxs)(`div`,{className:`flex flex-col gap-1 min-w-0`,children:[(0,F.jsx)(`span`,{className:`text-error text-xs font-bold`,children:t.chat.feed.imageGenerationFailed}),e.error&&(0,F.jsx)(`span`,{className:`text-error/70 text-[11px] font-body leading-relaxed`,children:e.error}),(f||d)&&(0,F.jsx)(`span`,{className:`text-error/40 text-[10px] font-mono mt-0.5`,children:[f,d].filter(Boolean).join(` · `)})]})]}):(0,F.jsxs)(`div`,{className:`bg-surface-container-lowest border border-outline-variant/10 rounded-2xl p-5 flex flex-col gap-3 max-w-md animate-pulse`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,F.jsx)(`div`,{className:`w-10 h-10 rounded-xl bg-surface-container-high flex items-center justify-center shrink-0`,children:(0,F.jsx)(u,{size:20,className:`text-primary/50 shrink-0`})}),(0,F.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,F.jsx)(`span`,{className:`text-xs font-medium text-on-surface`,children:f?t.chat.feed.modelStatus.replace(`{status}`,t.chat.feed.statusGenerating).replace(`{model}`,()=>f):t.chat.feed.generatingImage}),(0,F.jsx)(`span`,{className:`text-[10px] text-on-surface-variant/50 font-body`,children:e.prompt})]})]}),(0,F.jsx)(`div`,{className:`aspect-square bg-surface-container-high rounded-xl`}),(0,F.jsx)(`div`,{className:`h-1 w-full bg-surface-container-high rounded-full overflow-hidden`,children:(0,F.jsx)(`div`,{className:`h-full bg-primary w-1/3 rounded-full animate-[slide_1s_ease-in-out_infinite_alternate]`})})]})}function ba(e,t,n){switch(e){case`cursor_lost`:return{label:n.chat.cursorLost.replace(`{detail}`,t??``),severity:`info`};case`tool_loop_exhausted`:return{label:t?`${n.chat.toolLoopExhausted} — ${t}`:n.chat.toolLoopExhausted,severity:`error`};case`chat_compacted`:return{label:n.chat.systemEvents.chatCompacted,severity:`info`};case`summary_handoff`:return{label:n.chat.systemEvents.summaryHandoff,severity:`info`};case`cursor_internal_tool_call`:return{label:n.chat.systemEvents.cursorInternalToolCall.replace(`{tool}`,t??``),severity:`info`};default:return{label:t??e,severity:`info`}}}function xa({event:e,detail:t}){let{t:n}=L(),{label:r,severity:i}=ba(e,t,n),a=i===`error`?`text-error/80`:`text-on-surface-variant/60`,o=i===`error`?`bg-error/30`:`bg-outline-variant/20`;return(0,F.jsxs)(`div`,{className:`flex items-center gap-2 py-2 text-xs my-1 ${a}`,children:[(0,F.jsx)(`div`,{className:`flex-1 h-px ${o}`}),(0,F.jsx)(`span`,{className:`font-medium whitespace-nowrap`,children:r}),(0,F.jsx)(`div`,{className:`flex-1 h-px ${o}`})]})}var Sa=new Map;function Ca(e){return e.scrollHeight-e.scrollTop-e.clientHeight<=24}function wa({messageId:e,text:t,isStreaming:r}){let{t:a}=L(),o=(0,N.useRef)(Sa.get(e)??{expanded:r,scrollTop:0,shouldAutoFollow:r}),[s,c]=(0,N.useState)(o.current.expanded),l=(0,N.useRef)(null),u=(0,N.useRef)(o.current),d=(0,N.useRef)(r),f=(0,N.useCallback)(t=>{u.current={...u.current,...t},Sa.set(e,u.current)},[e]);return(0,N.useEffect)(()=>{!d.current&&r&&(c(!0),f({expanded:!0,shouldAutoFollow:!0})),d.current&&!r&&(c(!1),f({expanded:!1,shouldAutoFollow:!1})),d.current=r},[r,f]),(0,N.useLayoutEffect)(()=>{if(!s||!l.current)return;let e=l.current,t=Math.max(0,e.scrollHeight-e.clientHeight);if(r&&u.current.shouldAutoFollow){e.scrollTop=t,f({scrollTop:e.scrollTop});return}e.scrollTop=Math.min(u.current.scrollTop,t)},[s,r,t,f]),(0,F.jsxs)(`div`,{className:`mb-3`,children:[(0,F.jsxs)(`button`,{type:`button`,onClick:()=>{let e=!s;c(e),f({expanded:e})},className:`glass-surface flex items-center gap-2 text-xs text-on-surface-variant/70
25
25
  py-1.5 px-3 rounded-full w-fit border border-outline-variant/20
26
26
  hover:border-outline-variant/40 hover:text-on-surface-variant
27
27
  transition-all duration-200 cursor-pointer`,children:[(0,F.jsx)(he,{size:11,className:`text-primary/70`}),(0,F.jsx)(`span`,{className:`tracking-wide`,children:r?a.thinking.streaming:a.thinking.label}),(0,F.jsx)(b,{size:11,className:`transition-transform duration-300 text-primary/50 ${s?`rotate-180`:``}`})]}),(0,F.jsx)(n,{initial:!1,children:s&&(0,F.jsx)(i.div,{initial:{opacity:0,height:0,y:-4},animate:{opacity:1,height:`auto`,y:0},exit:{opacity:0,height:0,y:-6},transition:{duration:.22,ease:`easeOut`},className:`glass-surface-subtle mt-1.5 rounded-xl border border-outline-variant/15 overflow-hidden`,children:(0,F.jsx)(`div`,{ref:l,onScroll:e=>{let t=e.currentTarget;f({scrollTop:t.scrollTop,shouldAutoFollow:r?Ca(t):u.current.shouldAutoFollow})},className:`p-4 max-h-48 sm:max-h-72 md:max-h-96 overflow-y-auto app-scrollbar`,children:(0,F.jsxs)(`div`,{className:`text-xs text-on-surface-variant/60 leading-relaxed markdown-content--thinking`,children:[(0,F.jsx)(da,{content:t,isStreaming:r,copyCodeLabel:a.chat.copyCode,codeCopiedLabel:a.chat.codeCopied}),r&&(0,F.jsx)(`span`,{className:`inline-block w-0.5 h-[1em] bg-primary/40 ml-0.5 align-middle animate-blink`})]})})},`thinking-body`)})]})}function Ta({toolName:e,className:t}){switch(e){case`list_directory`:return(0,F.jsx)(o,{size:11,className:t});case`read_file`:return(0,F.jsx)(De,{size:11,className:t});case`write_file`:return(0,F.jsx)(ee,{size:11,className:t});case`generate_image`:return(0,F.jsx)(ne,{size:11,className:t});case`get_current_datetime`:return(0,F.jsx)(_,{size:11,className:t});case`bash`:case`zsh`:case`powershell`:return(0,F.jsx)(ye,{size:11,className:t});case`grep`:return(0,F.jsx)(Ne,{size:11,className:t});case`glob`:return(0,F.jsx)(w,{size:11,className:t});default:return(0,F.jsx)(Te,{size:11,className:t})}}function Ea(e){if(typeof e!=`string`||e.trim().length===0)return null;let t=e.trim(),n=t.match(/^\/home\/[^/]+/);return n&&(t=`~${t.slice(n[0].length)}`),t}function Da(e,t){switch(e){case`list_directory`:case`read_file`:case`write_file`:return Ea(t.path);case`bash`:case`zsh`:case`powershell`:return typeof t.command==`string`&&t.command.trim().length>0?t.command.trim():null;case`grep`:case`glob`:return typeof t.pattern==`string`&&t.pattern.trim().length>0?t.pattern.trim():null;default:return null}}function Oa({name:e,args:t,result:r,isError:a,isPending:o}){let{t:s}=L(),[c,l]=(0,N.useState)(!1),u=s.tools.labels?.[e]??e,d=Da(e,t),f=null;if(r)try{f=JSON.parse(r)}catch{f=r}return(0,F.jsxs)(`div`,{className:`mb-3`,children:[(0,F.jsxs)(`button`,{type:`button`,onClick:()=>l(e=>!e),className:`glass-surface flex items-center gap-2 text-xs py-1.5 px-3 rounded-full w-fit max-w-full border
@@ -68,7 +68,7 @@ Final report requirements:
68
68
  border border-outline-variant/20
69
69
  focus:outline-none focus:border-primary/60 focus:ring-1 focus:ring-primary/20
70
70
  transition-colors cursor-pointer
71
- `,children:hs.map(({value:e,label:t})=>(0,F.jsx)(`option`,{value:e,children:t},e))})]}),(0,F.jsxs)(z,{variant:`solid`,className:`space-y-3 p-4 sm:p-6`,children:[(0,F.jsx)(`h3`,{className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:y.imageQualityLabel}),(0,F.jsx)(`div`,{className:`grid grid-cols-2 sm:grid-cols-4 gap-2`,children:ms.map(n=>(0,F.jsx)(R,{variant:e===n?`primary`:`secondary`,size:`md`,onClick:()=>t(n),children:n},n))})]}),(0,F.jsxs)(z,{variant:`solid`,className:`space-y-4 p-4 sm:p-6`,children:[(0,F.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,F.jsxs)(`div`,{className:`space-y-1`,children:[(0,F.jsx)(`h3`,{className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:y.multiAgentLabel}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:y.multiAgentDescription})]}),(0,F.jsx)(`input`,{type:`checkbox`,checked:c.enabled,onChange:e=>l(e.target.checked),"aria-label":y.multiAgentEnabledLabel,className:`mt-1 h-4 w-4 rounded border-outline-variant/30 accent-primary`})]}),(0,F.jsxs)(`label`,{className:`flex items-center gap-2 rounded-xl border border-outline-variant/20 bg-surface-container-lowest px-3 py-2 text-sm text-on-surface`,children:[(0,F.jsx)(`input`,{type:`checkbox`,checked:c.chatDelegationEnabled,onChange:e=>u(e.target.checked),disabled:!c.enabled,className:`accent-primary disabled:opacity-50`}),y.chatDelegationEnabledLabel]}),(0,F.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2 xl:grid-cols-4`,children:[(0,F.jsxs)(`label`,{className:`block space-y-2`,children:[(0,F.jsx)(`span`,{className:`text-sm font-semibold text-on-surface`,children:y.traceVisibilityLabel}),(0,F.jsxs)(`select`,{value:c.traceVisibility,onChange:e=>d(e.target.value),disabled:!c.enabled,className:`w-full rounded-xl px-3 py-2 text-sm bg-surface-container-lowest text-on-surface border border-outline-variant/20 focus:outline-none focus:border-primary/60 focus:ring-1 focus:ring-primary/20 disabled:opacity-50`,children:[(0,F.jsx)(`option`,{value:`compact`,children:y.traceVisibilityCompact}),(0,F.jsx)(`option`,{value:`full`,children:y.traceVisibilityFull}),(0,F.jsx)(`option`,{value:`off`,children:y.traceVisibilityOff})]})]}),(0,F.jsx)(bs,{label:y.maxDepthLabel,value:c.maxDepth,min:0,max:3,disabled:!c.enabled,onChange:f}),(0,F.jsx)(bs,{label:y.maxSubagentCallsLabel,value:c.maxSubagentCalls,min:0,max:un,disabled:!c.enabled,onChange:p}),(0,F.jsx)(bs,{label:y.defaultMaxTurnsLabel,value:c.defaultMaxTurns,min:1,max:fn,disabled:!c.enabled,onChange:h})]}),(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-baseline sm:justify-between gap-1 sm:gap-4`,children:[(0,F.jsx)(`label`,{htmlFor:`subagent-timeout`,className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:y.timeoutLabel}),(0,F.jsx)(`span`,{className:`text-sm font-medium text-on-surface`,children:y.secondsHint.replace(`{value}`,String(Math.round(c.timeoutMs/1e3)))})]}),(0,F.jsx)(`input`,{id:`subagent-timeout`,type:`range`,min:3e4,max:9e5,step:vs,value:c.timeoutMs,onChange:e=>m(Number(e.target.value)),disabled:!c.enabled,className:`w-full h-2 bg-surface-container-lowest rounded-full appearance-none cursor-pointer accent-primary disabled:cursor-not-allowed disabled:opacity-50`})]})]}),(0,F.jsxs)(z,{variant:`solid`,className:`space-y-4 p-4 sm:p-6`,children:[(0,F.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,F.jsxs)(`div`,{className:`space-y-1`,children:[(0,F.jsx)(`h3`,{className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:y.chatTitlesLabel}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:y.chatTitlesDescription})]}),(0,F.jsx)(`input`,{type:`checkbox`,checked:n.autoRenameEnabled,onChange:e=>i(e.target.checked),"aria-label":y.chatTitlesToggleLabel,className:`mt-1 h-4 w-4 rounded border-outline-variant/30 accent-primary`})]}),(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(`label`,{htmlFor:`chat-title-strategy`,className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:y.chatTitleSourceLabel}),(0,F.jsxs)(`select`,{id:`chat-title-strategy`,value:n.strategy,onChange:e=>a(e.target.value),disabled:!n.autoRenameEnabled,className:`w-full rounded-xl px-4 py-2.5 text-sm bg-surface-container-lowest text-on-surface border border-outline-variant/20 focus:outline-none focus:border-primary/60 focus:ring-1 focus:ring-primary/20 transition-colors cursor-pointer disabled:cursor-not-allowed disabled:opacity-50`,children:[(0,F.jsx)(`option`,{value:`prompt_prefix`,children:y.chatTitleSourcePrompt}),(0,F.jsx)(`option`,{value:`model`,children:y.chatTitleSourceModel})]})]}),n.strategy===`model`?(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(`label`,{htmlFor:`chat-title-model`,className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:y.chatTitleModelLabel}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:y.chatTitleModelDescription}),(0,F.jsxs)(`select`,{id:`chat-title-model`,value:n.preferredModel,onChange:e=>s(e.target.value),disabled:!n.autoRenameEnabled,className:`w-full rounded-xl px-4 py-2.5 text-sm bg-surface-container-lowest text-on-surface border border-outline-variant/20 focus:outline-none focus:border-primary/60 focus:ring-1 focus:ring-primary/20 transition-colors cursor-pointer disabled:cursor-not-allowed disabled:opacity-50`,children:[(0,F.jsx)(`option`,{value:`current_model`,children:y.chatTitleModelCurrent}),b.map(e=>(0,F.jsx)(`option`,{value:e.modelId,children:e.displayName},e.modelId)),r.map(e=>(0,F.jsx)(`option`,{value:e.modelId,children:e.displayName},e.modelId))]})]}):null,(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-baseline sm:justify-between gap-1 sm:gap-4`,children:[(0,F.jsx)(`label`,{htmlFor:`chat-title-prefix-length`,className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:y.chatTitlePrefixLengthLabel}),(0,F.jsx)(`span`,{className:`text-sm font-medium text-on-surface`,children:y.chatTitlePrefixLengthHint.replace(`{value}`,String(n.promptPrefixLength))})]}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:y.chatTitlePrefixLengthDescription}),(0,F.jsx)(`input`,{id:`chat-title-prefix-length`,type:`range`,min:gs,max:_s,step:1,value:n.promptPrefixLength,onChange:e=>o(Number(e.target.value)),disabled:!n.autoRenameEnabled,className:`w-full h-2 bg-surface-container-lowest rounded-full appearance-none cursor-pointer accent-primary disabled:cursor-not-allowed disabled:opacity-50`})]})]})]})}function bs({label:e,value:t,min:n,max:r,disabled:i,onChange:a}){return(0,F.jsxs)(`label`,{className:`block space-y-2`,children:[(0,F.jsx)(`span`,{className:`text-sm font-semibold text-on-surface`,children:e}),(0,F.jsx)(`input`,{type:`number`,min:n,max:r,value:t,disabled:i,onChange:e=>a(Number(e.target.value)),className:`w-full rounded-xl border border-outline-variant/20 bg-surface-container-lowest px-3 py-2 text-sm text-on-surface focus:border-primary/60 focus:outline-none focus:ring-1 focus:ring-primary/20 disabled:opacity-50`})]})}var xs=T(`/_authenticated/settings/general`)({component:Ss});function Ss(){let e=Ji();return(0,F.jsx)(ys,{imageQuality:e.settings.globalImageQuality,setImageQuality:e.settings.setGlobalImageQuality,chatTitleSettings:e.settings.chatTitleSettings,availableTitleModels:e.catalog.textModels,setChatAutoRenameEnabled:e.settings.setChatAutoRenameEnabled,setChatTitleStrategy:e.settings.setChatTitleStrategy,setChatTitlePromptPrefixLength:e.settings.setChatTitlePromptPrefixLength,setPreferredChatTitleModel:e.settings.setPreferredChatTitleModel,multiAgentSettings:e.settings.multiAgentSettings,setMultiAgentEnabled:e.settings.setMultiAgentEnabled,setChatDelegationEnabled:e.settings.setChatDelegationEnabled,setTraceVisibility:e.settings.setTraceVisibility,setMaxDelegationDepth:e.settings.setMaxDelegationDepth,setMaxSubagentCalls:e.settings.setMaxSubagentCalls,setSubagentTimeoutMs:e.settings.setSubagentTimeoutMs,setDefaultSubagentMaxTurns:e.settings.setDefaultSubagentMaxTurns})}var Cs=50,ws=99;function Ts(e,t){return t.replace(`{value}`,String(Math.round(e*100)))}function Es(e){return Math.round(e*100)}function Ds({settings:e,availableModels:t,setCompactionBehavior:n,setWarningThreshold:r,setDangerThreshold:i,setHardStopThreshold:a,setPreferredSummaryModel:o,setProviderCompactionEnabled:s}){let{t:c}=L(),l=c.settings.context,u=e.preferredSummaryModel!==`current_model`&&!t.some(t=>t.modelId===e.preferredSummaryModel)?[{modelId:e.preferredSummaryModel,displayName:e.preferredSummaryModel}]:[];return(0,F.jsxs)(`div`,{className:`space-y-4`,children:[(0,F.jsxs)(z,{variant:`solid`,className:`space-y-3 p-4 sm:p-6`,children:[(0,F.jsx)(`h2`,{className:`text-lg font-bold text-on-surface`,children:l.title}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/70`,children:l.description}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:l.keepHistory})]}),(0,F.jsxs)(z,{variant:`solid`,className:`space-y-3 p-4 sm:p-6`,children:[(0,F.jsx)(`h3`,{className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:l.behaviorLabel}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:l.behaviorDescription}),(0,F.jsxs)(`select`,{value:e.compactionBehavior,onChange:e=>n(e.target.value),"aria-label":l.behaviorLabel,className:`w-full rounded-xl px-4 py-2.5 text-sm bg-surface-container-lowest text-on-surface border border-outline-variant/20 focus:outline-none focus:border-primary/60 focus:ring-1 focus:ring-primary/20 transition-colors cursor-pointer`,children:[(0,F.jsx)(`option`,{value:`ask`,children:l.behaviorOptions.ask}),(0,F.jsx)(`option`,{value:`auto_compact_current_chat`,children:l.behaviorOptions.autoCompact}),(0,F.jsx)(`option`,{value:`continue_with_summary_new_chat`,children:l.behaviorOptions.newChat}),(0,F.jsx)(`option`,{value:`off`,children:l.behaviorOptions.off})]})]}),(0,F.jsx)(z,{variant:`solid`,className:`space-y-3 p-4 sm:p-6`,children:(0,F.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,F.jsxs)(`div`,{className:`space-y-1`,children:[(0,F.jsx)(`h3`,{className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:l.providerCompactionLabel}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:l.providerCompactionDescription})]}),(0,F.jsx)(`input`,{type:`checkbox`,checked:e.providerCompactionEnabled,onChange:e=>s(e.target.checked),"aria-label":l.providerCompactionLabel,className:`mt-1 h-4 w-4 rounded border-outline-variant/30 accent-primary`})]})}),(0,F.jsxs)(z,{variant:`solid`,className:`space-y-5 p-4 sm:p-6`,children:[(0,F.jsx)(Os,{label:l.warningThresholdLabel,description:l.warningThresholdDescription,hint:Ts(e.warningThreshold,l.thresholdHint),value:Es(e.warningThreshold),onChange:e=>r(e/100)}),(0,F.jsx)(Os,{label:l.dangerThresholdLabel,description:l.dangerThresholdDescription,hint:Ts(e.dangerThreshold,l.thresholdHint),value:Es(e.dangerThreshold),onChange:e=>i(e/100)}),(0,F.jsx)(Os,{label:l.hardStopThresholdLabel,description:l.hardStopThresholdDescription,hint:Ts(e.hardStopThreshold,l.thresholdHint),value:Es(e.hardStopThreshold),onChange:e=>a(e/100)})]}),(0,F.jsxs)(z,{variant:`solid`,className:`space-y-3 p-4 sm:p-6`,children:[(0,F.jsx)(`h3`,{className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:l.summaryModelLabel}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:l.summaryModelDescription}),(0,F.jsxs)(`select`,{value:e.preferredSummaryModel,onChange:e=>o(e.target.value),"aria-label":l.summaryModelLabel,className:`w-full rounded-xl px-4 py-2.5 text-sm bg-surface-container-lowest text-on-surface border border-outline-variant/20 focus:outline-none focus:border-primary/60 focus:ring-1 focus:ring-primary/20 transition-colors cursor-pointer`,children:[(0,F.jsx)(`option`,{value:`current_model`,children:l.summaryModelCurrent}),u.map(e=>(0,F.jsx)(`option`,{value:e.modelId,children:e.displayName},e.modelId)),t.map(e=>(0,F.jsx)(`option`,{value:e.modelId,children:e.displayName},e.modelId))]})]})]})}function Os({label:e,description:t,hint:n,value:r,onChange:i}){return(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-baseline sm:justify-between gap-1 sm:gap-4`,children:[(0,F.jsx)(`h3`,{className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:e}),(0,F.jsx)(`span`,{className:`text-sm font-medium text-on-surface`,children:n})]}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:t}),(0,F.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,F.jsx)(`input`,{type:`range`,min:Cs,max:ws,step:1,value:r,onChange:e=>i(Number(e.target.value)),"aria-label":e,className:`flex-1 h-2 bg-surface-container-lowest rounded-full appearance-none cursor-pointer accent-primary`}),(0,F.jsx)(`input`,{type:`number`,min:Cs,max:ws,step:1,value:r,onChange:e=>i(Number(e.target.value)),onBlur:e=>i(Number(e.target.value)),"aria-label":e,className:`w-20 rounded-xl px-3 py-2 text-sm text-center bg-surface-container-lowest text-on-surface border border-outline-variant/20 focus:outline-none focus:border-primary/60 focus:ring-1 focus:ring-primary/20 transition-colors`})]})]})}var ks=T(`/_authenticated/settings/context`)({component:As});function As(){let e=Ji();return(0,F.jsx)(Ds,{settings:e.settings.contextSettings,availableModels:e.catalog.textModels,setCompactionBehavior:e.settings.setContextCompactionBehavior,setWarningThreshold:e.settings.setContextWarningThreshold,setDangerThreshold:e.settings.setContextDangerThreshold,setHardStopThreshold:e.settings.setContextHardStopThreshold,setPreferredSummaryModel:e.settings.setPreferredSummaryModel,setProviderCompactionEnabled:e.settings.setProviderCompactionEnabled})}var js=I.settings.connectors;async function Ms(e){let{data:t,error:n}=await H.api.settings.connectors.post(e);if(n)throw Error(V(n.value,js.failedToAdd));return t}async function Ns(e){let{error:t}=await H.api.settings.connectors({id:e}).delete();if(t)throw Error(V(t.value,js.failedToDelete))}async function Ps(e,t){let{error:n}=await H.api.settings.connectors({id:e}).models.put({enabledModels:t});if(n)throw Error(V(n.value,js.failedToUpdateModels))}function Fs(e,t,n){switch(e){case`cursor.node_not_found`:return`${n.cursorNodeRequired} ${n.cursorNodeNotFound}`;case`cursor.version_insufficient`:return n.cursorNodeVersionInsufficient.replace(`{minVersion}`,cr).replace(`{version}`,t?.foundVersion??`?`);case`cursor.sidecar_missing`:return t?.sidecarPath?n.cursorSidecarMissingAt.replace(`{path}`,t.sidecarPath):n.cursorSidecarMissing;case`cursor.sdk_missing`:return t?.sidecarPath?n.cursorSdkMissingAt.replace(`{path}`,t.sidecarPath):n.cursorSdkMissing;case`cursor.sdk_incomplete`:return t?.sidecarPath?n.cursorSdkIncompleteAt.replace(`{path}`,t.sidecarPath):n.cursorSdkIncomplete;case`cursor.native_runtime_missing`:return t?.packageName?n.cursorNativeRuntimeMissingPackage.replace(`{packageName}`,t.packageName):n.cursorNativeRuntimeMissing;default:return}}var Is=[{id:`gemini`},{id:`openai`},{id:`openai-compatible`},{id:`anthropic`},{id:`deepseek`},{id:`cursor`}];function Ls({form:e,setForm:t,isSaving:n,formError:r,showKey:i,setShowKey:a,onSubmit:o,onClose:s}){let{t:c}=L(),l=c.settings.connectors,{data:u}=O(Oi()),d=e=>u?.providers.find(t=>t.provider===e)?.runtimeAvailable===!1,f=e=>{let t=u?.providers.find(t=>t.provider===e);if(t?.runtimeAvailable===!1)return Fs(t.runtimeUnavailableReason,t.runtimeUnavailableReasonParams,l)},p=[{id:`bun-secrets`,label:l.sources.bunSecrets,icon:(0,F.jsx)(be,{size:16}),desc:l.sources.bunSecretsDesc},{id:`config-file`,label:l.sources.configFile,icon:(0,F.jsx)(re,{size:16}),desc:l.sources.configFileDesc},{id:`environment`,label:l.sources.envFile,icon:(0,F.jsx)(oe,{size:16}),desc:l.sources.envFileDesc}],h=Is.flatMap(({id:e})=>{if(!d(e))return[];let t=f(e);return t?[{id:e,hint:t}]:[]});return(0,F.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4 bg-background/80 backdrop-blur-sm animate-in fade-in duration-200`,children:(0,F.jsxs)(`div`,{className:`bg-surface-container-high w-full max-w-lg rounded-3xl p-5 sm:p-8 shadow-2xl border border-outline-variant/20 flex flex-col max-h-[90vh] sm:max-h-[85vh]`,children:[(0,F.jsxs)(`div`,{className:`space-y-2 mb-5 sm:mb-6`,children:[(0,F.jsx)(`h3`,{className:`text-xl font-bold text-on-surface`,children:l.addModalTitle}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/70`,children:l.addModalDescription})]}),(0,F.jsxs)(`div`,{className:`flex-1 overflow-y-auto hide-scrollbar pr-1 space-y-4 min-h-0`,children:[(0,F.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,F.jsx)(`span`,{className:`text-sm font-medium text-on-surface-variant`,children:l.providerLabel}),(0,F.jsx)(`div`,{className:`grid grid-cols-2 sm:grid-cols-3 gap-2`,children:Is.map(({id:n})=>{let r=d(n);return(0,F.jsx)(`button`,{type:`button`,disabled:r,onClick:()=>{r||t({...e,provider:n,baseUrl:n===`openai-compatible`||n===`deepseek`?e.baseUrl:``})},className:`min-h-11 py-2.5 px-3 rounded-xl border text-xs sm:text-sm font-semibold text-center leading-snug transition-all ${r?`opacity-40 cursor-not-allowed bg-surface-container-lowest border-outline-variant/10 text-on-surface-variant`:e.provider===n?`bg-primary/10 border-primary text-primary`:`bg-surface-container-lowest border-outline-variant/10 text-on-surface hover:border-outline-variant/30`}`,children:c.providers[n]},n)})}),h.length>0?(0,F.jsx)(`div`,{className:`mt-1 rounded-xl border border-outline-variant/15 bg-surface-container-lowest px-3 py-2.5 space-y-1.5`,children:h.map(({id:e,hint:t})=>(0,F.jsxs)(`p`,{className:`text-[11px] leading-snug text-on-surface-variant/70`,children:[(0,F.jsxs)(`span`,{className:`font-semibold text-on-surface-variant`,children:[c.providers[e],`:`]}),` `,t]},e))}):null]}),(0,F.jsx)(B,{id:`connector-name`,label:l.nameLabel,type:`text`,value:e.name,onChange:n=>t({...e,name:n.target.value}),placeholder:l.namePlaceholder}),(e.provider===`openai-compatible`||e.provider===`deepseek`)&&(0,F.jsx)(B,{id:`connector-baseurl`,label:l.baseUrlLabel,type:`text`,value:e.baseUrl,onChange:n=>t({...e,baseUrl:n.target.value}),placeholder:e.provider===`deepseek`?l.deepseekBaseUrlPlaceholder:l.baseUrlPlaceholder}),e.provider===`openai`&&(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,F.jsx)(B,{id:`connector-organization-id`,label:l.organizationIdLabel,type:`text`,value:e.organizationId,onChange:n=>t({...e,organizationId:n.target.value}),placeholder:l.organizationIdPlaceholder}),(0,F.jsx)(`p`,{className:`text-[10px] text-on-surface-variant/50 ml-1`,children:l.organizationIdHelper})]}),(0,F.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,F.jsx)(B,{id:`connector-project-id`,label:l.projectIdLabel,type:`text`,value:e.projectId,onChange:n=>t({...e,projectId:n.target.value}),placeholder:l.projectIdPlaceholder}),(0,F.jsx)(`p`,{className:`text-[10px] text-on-surface-variant/50 ml-1`,children:l.projectIdHelper})]})]}),(0,F.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,F.jsx)(`label`,{htmlFor:`connector-apikey`,className:`text-sm font-medium text-on-surface-variant`,children:l.apiKeyLabel}),(0,F.jsxs)(`div`,{className:`flex gap-2`,children:[(0,F.jsx)(`input`,{id:`connector-apikey`,type:i?`text`:`password`,value:e.apiKey,onChange:n=>t({...e,apiKey:n.target.value}),className:`
71
+ `,children:hs.map(({value:e,label:t})=>(0,F.jsx)(`option`,{value:e,children:t},e))})]}),(0,F.jsxs)(z,{variant:`solid`,className:`space-y-3 p-4 sm:p-6`,children:[(0,F.jsx)(`h3`,{className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:y.imageQualityLabel}),(0,F.jsx)(`div`,{className:`grid grid-cols-2 sm:grid-cols-4 gap-2`,children:ms.map(n=>(0,F.jsx)(R,{variant:e===n?`primary`:`secondary`,size:`md`,onClick:()=>t(n),children:n},n))})]}),(0,F.jsxs)(z,{variant:`solid`,className:`space-y-4 p-4 sm:p-6`,children:[(0,F.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,F.jsxs)(`div`,{className:`space-y-1`,children:[(0,F.jsx)(`h3`,{className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:y.multiAgentLabel}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:y.multiAgentDescription})]}),(0,F.jsx)(`input`,{type:`checkbox`,checked:c.enabled,onChange:e=>l(e.target.checked),"aria-label":y.multiAgentEnabledLabel,className:`mt-1 h-4 w-4 rounded border-outline-variant/30 accent-primary`})]}),(0,F.jsxs)(`label`,{className:`flex items-center gap-2 rounded-xl border border-outline-variant/20 bg-surface-container-lowest px-3 py-2 text-sm text-on-surface`,children:[(0,F.jsx)(`input`,{type:`checkbox`,checked:c.chatDelegationEnabled,onChange:e=>u(e.target.checked),disabled:!c.enabled,className:`accent-primary disabled:opacity-50`}),y.chatDelegationEnabledLabel]}),(0,F.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2 xl:grid-cols-4`,children:[(0,F.jsxs)(`label`,{className:`block space-y-2`,children:[(0,F.jsx)(`span`,{className:`text-sm font-semibold text-on-surface`,children:y.traceVisibilityLabel}),(0,F.jsxs)(`select`,{value:c.traceVisibility,onChange:e=>d(e.target.value),disabled:!c.enabled,className:`w-full rounded-xl px-3 py-2 text-sm bg-surface-container-lowest text-on-surface border border-outline-variant/20 focus:outline-none focus:border-primary/60 focus:ring-1 focus:ring-primary/20 disabled:opacity-50`,children:[(0,F.jsx)(`option`,{value:`compact`,children:y.traceVisibilityCompact}),(0,F.jsx)(`option`,{value:`full`,children:y.traceVisibilityFull}),(0,F.jsx)(`option`,{value:`off`,children:y.traceVisibilityOff})]})]}),(0,F.jsx)(bs,{label:y.maxDepthLabel,value:c.maxDepth,min:0,max:3,disabled:!c.enabled,onChange:f}),(0,F.jsx)(bs,{label:y.maxSubagentCallsLabel,value:c.maxSubagentCalls,min:0,max:un,disabled:!c.enabled,onChange:p}),(0,F.jsx)(bs,{label:y.defaultMaxTurnsLabel,value:c.defaultMaxTurns,min:1,max:fn,disabled:!c.enabled,onChange:h})]}),(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-baseline sm:justify-between gap-1 sm:gap-4`,children:[(0,F.jsx)(`label`,{htmlFor:`subagent-timeout`,className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:y.timeoutLabel}),(0,F.jsx)(`span`,{className:`text-sm font-medium text-on-surface`,children:y.secondsHint.replace(`{value}`,String(Math.round(c.timeoutMs/1e3)))})]}),(0,F.jsx)(`input`,{id:`subagent-timeout`,type:`range`,min:3e4,max:9e5,step:vs,value:c.timeoutMs,onChange:e=>m(Number(e.target.value)),disabled:!c.enabled,className:`w-full h-2 bg-surface-container-lowest rounded-full appearance-none cursor-pointer accent-primary disabled:cursor-not-allowed disabled:opacity-50`})]})]}),(0,F.jsxs)(z,{variant:`solid`,className:`space-y-4 p-4 sm:p-6`,children:[(0,F.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,F.jsxs)(`div`,{className:`space-y-1`,children:[(0,F.jsx)(`h3`,{className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:y.chatTitlesLabel}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:y.chatTitlesDescription})]}),(0,F.jsx)(`input`,{type:`checkbox`,checked:n.autoRenameEnabled,onChange:e=>i(e.target.checked),"aria-label":y.chatTitlesToggleLabel,className:`mt-1 h-4 w-4 rounded border-outline-variant/30 accent-primary`})]}),(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(`label`,{htmlFor:`chat-title-strategy`,className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:y.chatTitleSourceLabel}),(0,F.jsxs)(`select`,{id:`chat-title-strategy`,value:n.strategy,onChange:e=>a(e.target.value),disabled:!n.autoRenameEnabled,className:`w-full rounded-xl px-4 py-2.5 text-sm bg-surface-container-lowest text-on-surface border border-outline-variant/20 focus:outline-none focus:border-primary/60 focus:ring-1 focus:ring-primary/20 transition-colors cursor-pointer disabled:cursor-not-allowed disabled:opacity-50`,children:[(0,F.jsx)(`option`,{value:`prompt_prefix`,children:y.chatTitleSourcePrompt}),(0,F.jsx)(`option`,{value:`model`,children:y.chatTitleSourceModel})]})]}),n.strategy===`model`?(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(`label`,{htmlFor:`chat-title-model`,className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:y.chatTitleModelLabel}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:y.chatTitleModelDescription}),(0,F.jsxs)(`select`,{id:`chat-title-model`,value:n.preferredModel,onChange:e=>s(e.target.value),disabled:!n.autoRenameEnabled,className:`w-full rounded-xl px-4 py-2.5 text-sm bg-surface-container-lowest text-on-surface border border-outline-variant/20 focus:outline-none focus:border-primary/60 focus:ring-1 focus:ring-primary/20 transition-colors cursor-pointer disabled:cursor-not-allowed disabled:opacity-50`,children:[(0,F.jsx)(`option`,{value:`current_model`,children:y.chatTitleModelCurrent}),b.map(e=>(0,F.jsx)(`option`,{value:e.modelId,children:e.displayName},e.modelId)),r.map(e=>(0,F.jsx)(`option`,{value:e.modelId,children:e.displayName},e.modelId))]})]}):null,(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-baseline sm:justify-between gap-1 sm:gap-4`,children:[(0,F.jsx)(`label`,{htmlFor:`chat-title-prefix-length`,className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:y.chatTitlePrefixLengthLabel}),(0,F.jsx)(`span`,{className:`text-sm font-medium text-on-surface`,children:y.chatTitlePrefixLengthHint.replace(`{value}`,String(n.promptPrefixLength))})]}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:y.chatTitlePrefixLengthDescription}),(0,F.jsx)(`input`,{id:`chat-title-prefix-length`,type:`range`,min:gs,max:_s,step:1,value:n.promptPrefixLength,onChange:e=>o(Number(e.target.value)),disabled:!n.autoRenameEnabled,className:`w-full h-2 bg-surface-container-lowest rounded-full appearance-none cursor-pointer accent-primary disabled:cursor-not-allowed disabled:opacity-50`})]})]})]})}function bs({label:e,value:t,min:n,max:r,disabled:i,onChange:a}){return(0,F.jsxs)(`label`,{className:`block space-y-2`,children:[(0,F.jsx)(`span`,{className:`text-sm font-semibold text-on-surface`,children:e}),(0,F.jsx)(`input`,{type:`number`,min:n,max:r,value:t,disabled:i,onChange:e=>a(Number(e.target.value)),className:`w-full rounded-xl border border-outline-variant/20 bg-surface-container-lowest px-3 py-2 text-sm text-on-surface focus:border-primary/60 focus:outline-none focus:ring-1 focus:ring-primary/20 disabled:opacity-50`})]})}var xs=T(`/_authenticated/settings/general`)({component:Ss});function Ss(){let e=Ji();return(0,F.jsx)(ys,{imageQuality:e.settings.globalImageQuality,setImageQuality:e.settings.setGlobalImageQuality,chatTitleSettings:e.settings.chatTitleSettings,availableTitleModels:e.catalog.textModels,setChatAutoRenameEnabled:e.settings.setChatAutoRenameEnabled,setChatTitleStrategy:e.settings.setChatTitleStrategy,setChatTitlePromptPrefixLength:e.settings.setChatTitlePromptPrefixLength,setPreferredChatTitleModel:e.settings.setPreferredChatTitleModel,multiAgentSettings:e.settings.multiAgentSettings,setMultiAgentEnabled:e.settings.setMultiAgentEnabled,setChatDelegationEnabled:e.settings.setChatDelegationEnabled,setTraceVisibility:e.settings.setTraceVisibility,setMaxDelegationDepth:e.settings.setMaxDelegationDepth,setMaxSubagentCalls:e.settings.setMaxSubagentCalls,setSubagentTimeoutMs:e.settings.setSubagentTimeoutMs,setDefaultSubagentMaxTurns:e.settings.setDefaultSubagentMaxTurns})}var Cs=50,ws=99;function Ts(e,t){return t.replace(`{value}`,String(Math.round(e*100)))}function Es(e){return Math.round(e*100)}function Ds({settings:e,availableModels:t,setCompactionBehavior:n,setWarningThreshold:r,setDangerThreshold:i,setHardStopThreshold:a,setPreferredSummaryModel:o,setProviderCompactionEnabled:s}){let{t:c}=L(),l=c.settings.context,u=e.preferredSummaryModel!==`current_model`&&!t.some(t=>t.modelId===e.preferredSummaryModel)?[{modelId:e.preferredSummaryModel,displayName:e.preferredSummaryModel}]:[];return(0,F.jsxs)(`div`,{className:`space-y-4`,children:[(0,F.jsxs)(z,{variant:`solid`,className:`space-y-3 p-4 sm:p-6`,children:[(0,F.jsx)(`h2`,{className:`text-lg font-bold text-on-surface`,children:l.title}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/70`,children:l.description}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:l.keepHistory})]}),(0,F.jsxs)(z,{variant:`solid`,className:`space-y-3 p-4 sm:p-6`,children:[(0,F.jsx)(`h3`,{className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:l.behaviorLabel}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:l.behaviorDescription}),(0,F.jsxs)(`select`,{value:e.compactionBehavior,onChange:e=>n(e.target.value),"aria-label":l.behaviorLabel,className:`w-full rounded-xl px-4 py-2.5 text-sm bg-surface-container-lowest text-on-surface border border-outline-variant/20 focus:outline-none focus:border-primary/60 focus:ring-1 focus:ring-primary/20 transition-colors cursor-pointer`,children:[(0,F.jsx)(`option`,{value:`ask`,children:l.behaviorOptions.ask}),(0,F.jsx)(`option`,{value:`auto_compact_current_chat`,children:l.behaviorOptions.autoCompact}),(0,F.jsx)(`option`,{value:`continue_with_summary_new_chat`,children:l.behaviorOptions.newChat}),(0,F.jsx)(`option`,{value:`off`,children:l.behaviorOptions.off})]})]}),(0,F.jsx)(z,{variant:`solid`,className:`space-y-3 p-4 sm:p-6`,children:(0,F.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,F.jsxs)(`div`,{className:`space-y-1`,children:[(0,F.jsx)(`h3`,{className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:l.providerCompactionLabel}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:l.providerCompactionDescription})]}),(0,F.jsx)(`input`,{type:`checkbox`,checked:e.providerCompactionEnabled,onChange:e=>s(e.target.checked),"aria-label":l.providerCompactionLabel,className:`mt-1 h-4 w-4 rounded border-outline-variant/30 accent-primary`})]})}),(0,F.jsxs)(z,{variant:`solid`,className:`space-y-5 p-4 sm:p-6`,children:[(0,F.jsx)(Os,{label:l.warningThresholdLabel,description:l.warningThresholdDescription,hint:Ts(e.warningThreshold,l.thresholdHint),value:Es(e.warningThreshold),onChange:e=>r(e/100)}),(0,F.jsx)(Os,{label:l.dangerThresholdLabel,description:l.dangerThresholdDescription,hint:Ts(e.dangerThreshold,l.thresholdHint),value:Es(e.dangerThreshold),onChange:e=>i(e/100)}),(0,F.jsx)(Os,{label:l.hardStopThresholdLabel,description:l.hardStopThresholdDescription,hint:Ts(e.hardStopThreshold,l.thresholdHint),value:Es(e.hardStopThreshold),onChange:e=>a(e/100)})]}),(0,F.jsxs)(z,{variant:`solid`,className:`space-y-3 p-4 sm:p-6`,children:[(0,F.jsx)(`h3`,{className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:l.summaryModelLabel}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:l.summaryModelDescription}),(0,F.jsxs)(`select`,{value:e.preferredSummaryModel,onChange:e=>o(e.target.value),"aria-label":l.summaryModelLabel,className:`w-full rounded-xl px-4 py-2.5 text-sm bg-surface-container-lowest text-on-surface border border-outline-variant/20 focus:outline-none focus:border-primary/60 focus:ring-1 focus:ring-primary/20 transition-colors cursor-pointer`,children:[(0,F.jsx)(`option`,{value:`current_model`,children:l.summaryModelCurrent}),u.map(e=>(0,F.jsx)(`option`,{value:e.modelId,children:e.displayName},e.modelId)),t.map(e=>(0,F.jsx)(`option`,{value:e.modelId,children:e.displayName},e.modelId))]})]})]})}function Os({label:e,description:t,hint:n,value:r,onChange:i}){return(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-baseline sm:justify-between gap-1 sm:gap-4`,children:[(0,F.jsx)(`h3`,{className:`text-xs uppercase tracking-widest font-bold text-on-surface-variant/80 font-label`,children:e}),(0,F.jsx)(`span`,{className:`text-sm font-medium text-on-surface`,children:n})]}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/60`,children:t}),(0,F.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,F.jsx)(`input`,{type:`range`,min:Cs,max:ws,step:1,value:r,onChange:e=>i(Number(e.target.value)),"aria-label":e,className:`flex-1 h-2 bg-surface-container-lowest rounded-full appearance-none cursor-pointer accent-primary`}),(0,F.jsx)(`input`,{type:`number`,min:Cs,max:ws,step:1,value:r,onChange:e=>i(Number(e.target.value)),onBlur:e=>i(Number(e.target.value)),"aria-label":e,className:`w-20 rounded-xl px-3 py-2 text-sm text-center bg-surface-container-lowest text-on-surface border border-outline-variant/20 focus:outline-none focus:border-primary/60 focus:ring-1 focus:ring-primary/20 transition-colors`})]})]})}var ks=T(`/_authenticated/settings/context`)({component:As});function As(){let e=Ji();return(0,F.jsx)(Ds,{settings:e.settings.contextSettings,availableModels:e.catalog.textModels,setCompactionBehavior:e.settings.setContextCompactionBehavior,setWarningThreshold:e.settings.setContextWarningThreshold,setDangerThreshold:e.settings.setContextDangerThreshold,setHardStopThreshold:e.settings.setContextHardStopThreshold,setPreferredSummaryModel:e.settings.setPreferredSummaryModel,setProviderCompactionEnabled:e.settings.setProviderCompactionEnabled})}var js=I.settings.connectors;async function Ms(e){let{data:t,error:n}=await H.api.settings.connectors.post(e);if(n)throw Error(V(n.value,js.failedToAdd));return t}async function Ns(e){let{error:t}=await H.api.settings.connectors({id:e}).delete();if(t)throw Error(V(t.value,js.failedToDelete))}async function Ps(e,t){let{error:n}=await H.api.settings.connectors({id:e}).models.put({enabledModels:t});if(n)throw Error(V(n.value,js.failedToUpdateModels))}function Fs(e,t,n){switch(e){case`cursor.node_not_found`:return`${n.cursorNodeRequired} ${n.cursorNodeNotFound}`;case`cursor.version_insufficient`:return n.cursorNodeVersionInsufficient.replace(`{minVersion}`,cr).replace(`{version}`,t?.foundVersion??`?`);case`cursor.sidecar_missing`:return t?.sidecarPath?n.cursorSidecarMissingAt.replace(`{path}`,t.sidecarPath):n.cursorSidecarMissing;default:return}}var Is=[{id:`gemini`},{id:`openai`},{id:`openai-compatible`},{id:`anthropic`},{id:`deepseek`},{id:`cursor`}];function Ls({form:e,setForm:t,isSaving:n,formError:r,showKey:i,setShowKey:a,onSubmit:o,onClose:s}){let{t:c}=L(),l=c.settings.connectors,{data:u}=O(Oi()),d=e=>u?.providers.find(t=>t.provider===e)?.runtimeAvailable===!1,f=e=>{let t=u?.providers.find(t=>t.provider===e);if(t?.runtimeAvailable===!1)return Fs(t.runtimeUnavailableReason,t.runtimeUnavailableReasonParams,l)},p=[{id:`bun-secrets`,label:l.sources.bunSecrets,icon:(0,F.jsx)(be,{size:16}),desc:l.sources.bunSecretsDesc},{id:`config-file`,label:l.sources.configFile,icon:(0,F.jsx)(re,{size:16}),desc:l.sources.configFileDesc},{id:`environment`,label:l.sources.envFile,icon:(0,F.jsx)(oe,{size:16}),desc:l.sources.envFileDesc}],h=Is.flatMap(({id:e})=>{if(!d(e))return[];let t=f(e);return t?[{id:e,hint:t}]:[]});return(0,F.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4 bg-background/80 backdrop-blur-sm animate-in fade-in duration-200`,children:(0,F.jsxs)(`div`,{className:`bg-surface-container-high w-full max-w-lg rounded-3xl p-5 sm:p-8 shadow-2xl border border-outline-variant/20 flex flex-col max-h-[90vh] sm:max-h-[85vh]`,children:[(0,F.jsxs)(`div`,{className:`space-y-2 mb-5 sm:mb-6`,children:[(0,F.jsx)(`h3`,{className:`text-xl font-bold text-on-surface`,children:l.addModalTitle}),(0,F.jsx)(`p`,{className:`text-sm text-on-surface-variant/70`,children:l.addModalDescription})]}),(0,F.jsxs)(`div`,{className:`flex-1 overflow-y-auto hide-scrollbar pr-1 space-y-4 min-h-0`,children:[(0,F.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,F.jsx)(`span`,{className:`text-sm font-medium text-on-surface-variant`,children:l.providerLabel}),(0,F.jsx)(`div`,{className:`grid grid-cols-2 sm:grid-cols-3 gap-2`,children:Is.map(({id:n})=>{let r=d(n);return(0,F.jsx)(`button`,{type:`button`,disabled:r,onClick:()=>{r||t({...e,provider:n,baseUrl:n===`openai-compatible`||n===`deepseek`?e.baseUrl:``})},className:`min-h-11 py-2.5 px-3 rounded-xl border text-xs sm:text-sm font-semibold text-center leading-snug transition-all ${r?`opacity-40 cursor-not-allowed bg-surface-container-lowest border-outline-variant/10 text-on-surface-variant`:e.provider===n?`bg-primary/10 border-primary text-primary`:`bg-surface-container-lowest border-outline-variant/10 text-on-surface hover:border-outline-variant/30`}`,children:c.providers[n]},n)})}),h.length>0?(0,F.jsx)(`div`,{className:`mt-1 rounded-xl border border-outline-variant/15 bg-surface-container-lowest px-3 py-2.5 space-y-1.5`,children:h.map(({id:e,hint:t})=>(0,F.jsxs)(`p`,{className:`text-[11px] leading-snug text-on-surface-variant/70`,children:[(0,F.jsxs)(`span`,{className:`font-semibold text-on-surface-variant`,children:[c.providers[e],`:`]}),` `,t]},e))}):null]}),(0,F.jsx)(B,{id:`connector-name`,label:l.nameLabel,type:`text`,value:e.name,onChange:n=>t({...e,name:n.target.value}),placeholder:l.namePlaceholder}),(e.provider===`openai-compatible`||e.provider===`deepseek`)&&(0,F.jsx)(B,{id:`connector-baseurl`,label:l.baseUrlLabel,type:`text`,value:e.baseUrl,onChange:n=>t({...e,baseUrl:n.target.value}),placeholder:e.provider===`deepseek`?l.deepseekBaseUrlPlaceholder:l.baseUrlPlaceholder}),e.provider===`openai`&&(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,F.jsx)(B,{id:`connector-organization-id`,label:l.organizationIdLabel,type:`text`,value:e.organizationId,onChange:n=>t({...e,organizationId:n.target.value}),placeholder:l.organizationIdPlaceholder}),(0,F.jsx)(`p`,{className:`text-[10px] text-on-surface-variant/50 ml-1`,children:l.organizationIdHelper})]}),(0,F.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,F.jsx)(B,{id:`connector-project-id`,label:l.projectIdLabel,type:`text`,value:e.projectId,onChange:n=>t({...e,projectId:n.target.value}),placeholder:l.projectIdPlaceholder}),(0,F.jsx)(`p`,{className:`text-[10px] text-on-surface-variant/50 ml-1`,children:l.projectIdHelper})]})]}),(0,F.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,F.jsx)(`label`,{htmlFor:`connector-apikey`,className:`text-sm font-medium text-on-surface-variant`,children:l.apiKeyLabel}),(0,F.jsxs)(`div`,{className:`flex gap-2`,children:[(0,F.jsx)(`input`,{id:`connector-apikey`,type:i?`text`:`password`,value:e.apiKey,onChange:n=>t({...e,apiKey:n.target.value}),className:`
72
72
  flex-1 rounded-xl px-4 py-2.5 text-sm
73
73
  bg-surface-container-high text-on-surface
74
74
  border border-outline-variant/20
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/bash-DKfk-jqG.js","assets/shellscript-Cd3e2TuR.js","assets/c-6LDlXRu0.js","assets/rolldown-runtime-BYbx6iT9.js","assets/cpp-u2b-vpJ9.js","assets/sql-D3oCX4qf.js","assets/html-UIM7GmnP.js","assets/css-Dc0OpoBJ.js","assets/javascript-okWskhVA.js","assets/java-B8S38LsY.js","assets/jsx-DjqxE-UL.js","assets/php-D9TzMTdN.js","assets/json-BjaDPSOc.js","assets/xml-Lpki4g8-.js","assets/ruby-DjRoLTaK.js","assets/tsx-DcRFScAN.js","assets/typescript-ButPIGrc.js","assets/yaml-sdi5CfWK.js","assets/syntax-themes-Dq65SZkH.js"])))=>i.map(i=>d[i]);
2
- import{n as e,t}from"./index-BLb-08lM.js";import{n,t as r}from"./syntax-core-BoMshe5A.js";var i={bash:()=>e(()=>import(`./bash-DKfk-jqG.js`),__vite__mapDeps([0,1])),c:()=>e(()=>import(`./c-6LDlXRu0.js`).then(e=>e.n),__vite__mapDeps([2,3])),cpp:()=>e(()=>import(`./cpp-u2b-vpJ9.js`),__vite__mapDeps([4,2,3,5])),csharp:()=>e(()=>import(`./csharp-Ceix8dHH.js`),[]),css:()=>e(()=>import(`./css-Dc0OpoBJ.js`),[]),go:()=>e(()=>import(`./go-PnJdfxiR.js`),[]),html:()=>e(()=>import(`./html-UIM7GmnP.js`),__vite__mapDeps([6,7,8])),java:()=>e(()=>import(`./java-B8S38LsY.js`).then(e=>e.n),__vite__mapDeps([9,3])),javascript:()=>e(()=>import(`./javascript-okWskhVA.js`),[]),json:()=>e(()=>import(`./json-BjaDPSOc.js`),[]),jsx:()=>e(()=>import(`./jsx-DjqxE-UL.js`).then(e=>e.n),__vite__mapDeps([10,3])),markdown:()=>e(()=>import(`./markdown-YiYqiPes.js`),[]),php:()=>e(()=>import(`./php-D9TzMTdN.js`),__vite__mapDeps([11,7,6,8,12,5,13,9,3])),powershell:()=>e(()=>import(`./powershell-Dvslkh7q.js`),[]),python:()=>e(()=>import(`./python-DaRRuALo.js`),[]),ruby:()=>e(()=>import(`./ruby-DjRoLTaK.js`),__vite__mapDeps([14,2,3,4,5,7,6,8,10,1,15,16,13,9,17])),rust:()=>e(()=>import(`./rust-CR5Dd4HD.js`),[]),sql:()=>e(()=>import(`./sql-D3oCX4qf.js`),[]),swift:()=>e(()=>import(`./swift-CJSMoxIm.js`),[]),tsx:()=>e(()=>import(`./tsx-DcRFScAN.js`).then(e=>e.n),__vite__mapDeps([15,3])),typescript:()=>e(()=>import(`./typescript-ButPIGrc.js`).then(e=>e.n),__vite__mapDeps([16,3])),xml:()=>e(()=>import(`./xml-Lpki4g8-.js`),__vite__mapDeps([13,9,3])),yaml:()=>e(()=>import(`./yaml-sdi5CfWK.js`),[])},a={"github-dark-dimmed":()=>e(()=>import(`./syntax-themes-Dq65SZkH.js`).then(e=>e.i),__vite__mapDeps([18,3])),"github-light":()=>e(()=>import(`./syntax-themes-Dq65SZkH.js`).then(e=>e.r),__vite__mapDeps([18,3])),"one-dark-pro":()=>e(()=>import(`./syntax-themes-Dq65SZkH.js`).then(e=>e.n),__vite__mapDeps([18,3])),"one-light":()=>e(()=>import(`./syntax-themes-Dq65SZkH.js`).then(e=>e.t),__vite__mapDeps([18,3]))},o=[`typescript`,`javascript`,`tsx`,`jsx`,`json`,`bash`,`python`,`markdown`],s={"c++":`cpp`,cs:`csharp`,csh:`csharp`,htm:`html`,js:`javascript`,md:`markdown`,mjs:`javascript`,ps1:`powershell`,py:`python`,rb:`ruby`,sh:`bash`,shell:`bash`,ts:`typescript`,yml:`yaml`,zsh:`bash`},c=n({langs:i,themes:a,engine:()=>r()}),l=null,u=null,d=new Map;function f(){return l??=c({themes:[...t],langs:[...o]}).then(e=>(u=e,e)),l}async function p(e){let t=h(e);if(t.length===0)return!1;let n=await f();return await Promise.all(t.map(e=>b(n,e))),!0}function m(e,t,n){let r=g(t);if(!u||!r||!y(u,r))return null;try{return u.codeToHtml(e,{lang:r,theme:n})}catch{return null}}function h(e){return[...new Set(e.map(g).filter(v))]}function g(e){let t=_(e);return v(t)?t:s[t]??null}function _(e){return e.trim().split(/\s+/)[0]?.toLowerCase()??``}function v(e){return typeof e==`string`&&e in i}function y(e,t){return e.getLoadedLanguages().includes(t)}function b(e,t){if(y(e,t))return Promise.resolve();let n=d.get(t);if(n)return n;let r=e.loadLanguage(t).finally(()=>{d.delete(t)});return d.set(t,r),r}export{t as CODE_THEMES,m as highlightCode,f as initHighlighter,p as preloadCodeLanguages};
2
+ import{n as e,t}from"./index-DPVVPEXE.js";import{n,t as r}from"./syntax-core-BoMshe5A.js";var i={bash:()=>e(()=>import(`./bash-DKfk-jqG.js`),__vite__mapDeps([0,1])),c:()=>e(()=>import(`./c-6LDlXRu0.js`).then(e=>e.n),__vite__mapDeps([2,3])),cpp:()=>e(()=>import(`./cpp-u2b-vpJ9.js`),__vite__mapDeps([4,2,3,5])),csharp:()=>e(()=>import(`./csharp-Ceix8dHH.js`),[]),css:()=>e(()=>import(`./css-Dc0OpoBJ.js`),[]),go:()=>e(()=>import(`./go-PnJdfxiR.js`),[]),html:()=>e(()=>import(`./html-UIM7GmnP.js`),__vite__mapDeps([6,7,8])),java:()=>e(()=>import(`./java-B8S38LsY.js`).then(e=>e.n),__vite__mapDeps([9,3])),javascript:()=>e(()=>import(`./javascript-okWskhVA.js`),[]),json:()=>e(()=>import(`./json-BjaDPSOc.js`),[]),jsx:()=>e(()=>import(`./jsx-DjqxE-UL.js`).then(e=>e.n),__vite__mapDeps([10,3])),markdown:()=>e(()=>import(`./markdown-YiYqiPes.js`),[]),php:()=>e(()=>import(`./php-D9TzMTdN.js`),__vite__mapDeps([11,7,6,8,12,5,13,9,3])),powershell:()=>e(()=>import(`./powershell-Dvslkh7q.js`),[]),python:()=>e(()=>import(`./python-DaRRuALo.js`),[]),ruby:()=>e(()=>import(`./ruby-DjRoLTaK.js`),__vite__mapDeps([14,2,3,4,5,7,6,8,10,1,15,16,13,9,17])),rust:()=>e(()=>import(`./rust-CR5Dd4HD.js`),[]),sql:()=>e(()=>import(`./sql-D3oCX4qf.js`),[]),swift:()=>e(()=>import(`./swift-CJSMoxIm.js`),[]),tsx:()=>e(()=>import(`./tsx-DcRFScAN.js`).then(e=>e.n),__vite__mapDeps([15,3])),typescript:()=>e(()=>import(`./typescript-ButPIGrc.js`).then(e=>e.n),__vite__mapDeps([16,3])),xml:()=>e(()=>import(`./xml-Lpki4g8-.js`),__vite__mapDeps([13,9,3])),yaml:()=>e(()=>import(`./yaml-sdi5CfWK.js`),[])},a={"github-dark-dimmed":()=>e(()=>import(`./syntax-themes-Dq65SZkH.js`).then(e=>e.i),__vite__mapDeps([18,3])),"github-light":()=>e(()=>import(`./syntax-themes-Dq65SZkH.js`).then(e=>e.r),__vite__mapDeps([18,3])),"one-dark-pro":()=>e(()=>import(`./syntax-themes-Dq65SZkH.js`).then(e=>e.n),__vite__mapDeps([18,3])),"one-light":()=>e(()=>import(`./syntax-themes-Dq65SZkH.js`).then(e=>e.t),__vite__mapDeps([18,3]))},o=[`typescript`,`javascript`,`tsx`,`jsx`,`json`,`bash`,`python`,`markdown`],s={"c++":`cpp`,cs:`csharp`,csh:`csharp`,htm:`html`,js:`javascript`,md:`markdown`,mjs:`javascript`,ps1:`powershell`,py:`python`,rb:`ruby`,sh:`bash`,shell:`bash`,ts:`typescript`,yml:`yaml`,zsh:`bash`},c=n({langs:i,themes:a,engine:()=>r()}),l=null,u=null,d=new Map;function f(){return l??=c({themes:[...t],langs:[...o]}).then(e=>(u=e,e)),l}async function p(e){let t=h(e);if(t.length===0)return!1;let n=await f();return await Promise.all(t.map(e=>b(n,e))),!0}function m(e,t,n){let r=g(t);if(!u||!r||!y(u,r))return null;try{return u.codeToHtml(e,{lang:r,theme:n})}catch{return null}}function h(e){return[...new Set(e.map(g).filter(v))]}function g(e){let t=_(e);return v(t)?t:s[t]??null}function _(e){return e.trim().split(/\s+/)[0]?.toLowerCase()??``}function v(e){return typeof e==`string`&&e in i}function y(e,t){return e.getLoadedLanguages().includes(t)}function b(e,t){if(y(e,t))return Promise.resolve();let n=d.get(t);if(n)return n;let r=e.loadLanguage(t).finally(()=>{d.delete(t)});return d.set(t,r),r}export{t as CODE_THEMES,m as highlightCode,f as initHighlighter,p as preloadCodeLanguages};
package/public/index.html CHANGED
@@ -37,7 +37,7 @@
37
37
  }
38
38
  })();
39
39
  </script>
40
- <script type="module" crossorigin src="/assets/index-BLb-08lM.js"></script>
40
+ <script type="module" crossorigin src="/assets/index-DPVVPEXE.js"></script>
41
41
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-BYbx6iT9.js">
42
42
  <link rel="modulepreload" crossorigin href="/assets/ui-BEql6gkw.js">
43
43
  <link rel="modulepreload" crossorigin href="/assets/vendor-TU_R2f75.js">