@wrongstack/webui 0.293.0 → 0.295.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App.d.ts.map +1 -1
- package/dist/assets/AgentRosterView-y-MCHghy.js +7 -0
- package/dist/assets/AnalyticsDashboard-tGlXeqV5.js +1 -0
- package/dist/assets/AudienceMemoryPanel-D45M-Fr6.js +3 -0
- package/dist/assets/ChangesView-Otr6kwYr.js +1 -0
- package/dist/assets/ChronicleDashboard-BvsfI25e.js +1 -0
- package/dist/assets/CodeEditor-DtD0-wwy.js +1 -0
- package/dist/assets/CodeMap-CVmu16Ec.js +1 -0
- package/dist/assets/ConfirmModal-C7H16wDN.js +1 -0
- package/dist/assets/{CronJobsPanel-ByJqIjCv.js → CronJobsPanel-CT6XRgmQ.js} +1 -1
- package/dist/assets/{DebugDashboard-B0pikasm.js → DebugDashboard-DZy3VUpn.js} +1 -1
- package/dist/assets/DesignGalleryView-CQkuFsfj.js +1 -0
- package/dist/assets/{GoalView-DXO9txQs.js → GoalView-CTqdYc-z.js} +1 -1
- package/dist/assets/KanbanView-DryFcAzY.js +3 -0
- package/dist/assets/{LazyMarkdown-BHoUIDge.js → LazyMarkdown-DWlQpo_8.js} +3 -3
- package/dist/assets/MailboxDetailView-CsI_6HsE.js +1 -0
- package/dist/assets/MemoryManager-D_bjR09v.js +1 -0
- package/dist/assets/{ModelPicker-CEZN673P.js → ModelPicker-fGNsJUXK.js} +1 -1
- package/dist/assets/{OfficeMapPanel-B0j4e2O1.css → OfficeMapPanel-BFIF-EMt.css} +1 -1
- package/dist/assets/OfficeMapPanel-KRrwpmvi.js +4 -0
- package/dist/assets/ProcessMonitor-BtgVvQgx.js +1 -0
- package/dist/assets/{QueuePanel-DMXksqFS.js → QueuePanel-BGSxmdqf.js} +1 -1
- package/dist/assets/{RefreshDebugView-D08bCHA4.js → RefreshDebugView-B_wCBpFb.js} +1 -1
- package/dist/assets/SddHub-BryXNdFd.js +2 -0
- package/dist/assets/{SessionsDashboard-BY77vax1.js → SessionsDashboard-DLOhC9JZ.js} +1 -1
- package/dist/assets/SetupScreen-DsXgzxA1.js +1 -0
- package/dist/assets/SkillDetailView-ChyQLtrl.js +3 -0
- package/dist/assets/{SpecsView-CZg7e2ml.js → SpecsView-Dh9YG8Id.js} +1 -1
- package/dist/assets/TechStackView-RJGVF44_.js +1 -0
- package/dist/assets/{TerminalPanel-SnRvUh6N.js → TerminalPanel-3rZfmUfb.js} +1 -1
- package/dist/assets/Toaster-BzC_AdG5.js +1 -0
- package/dist/assets/activity-7VmgGy-T.js +5 -0
- package/dist/assets/activity-BzwApar4.js +5 -0
- package/dist/assets/activity-CCUWlVKh.js +5 -0
- package/dist/assets/activity-DAHFiOfU.js +5 -0
- package/dist/assets/activity-DkkpH2Tf.js +5 -0
- package/dist/assets/activity-DqsX-GMs.js +5 -0
- package/dist/assets/{activity-Cyx4UukM.js → activity-t0PmZ94i.js} +3 -3
- package/dist/assets/{button-Dy0bAtEY.js → button-GVbauxIJ.js} +1 -1
- package/dist/assets/{chat-store-CUODHW6c.js → chat-store-BEcTB7SD.js} +7 -7
- package/dist/assets/{codemap-activity-store-CgtLR4PV.js → codemap-activity-store-DrrI6G7M.js} +1 -1
- package/dist/assets/{dialog-CBgO-uqz.js → dialog-BjPQYovj.js} +1 -1
- package/dist/assets/empty-state-DJc37Wg1.js +1 -0
- package/dist/assets/{i18n-Dk35g-uV.js → i18n-c37VNlP9.js} +2 -2
- package/dist/assets/index-196U0qsu.js +125 -0
- package/dist/assets/index-n_-BWskP.css +1 -0
- package/dist/assets/{input-B6FY_vtB.js → input-BVi5hYQz.js} +1 -1
- package/dist/assets/{mailbox-store-BY2SVw-s.js → mailbox-store-DSvN5ZEo.js} +1 -1
- package/dist/assets/roster-ws-BD-ATeja.js +1 -0
- package/dist/assets/{session-store-Coiik-Ib.js → session-store-K_ozfq0o.js} +1 -1
- package/dist/assets/{settings-C65WW7Jn.js → settings-24NUQrlz.js} +1 -1
- package/dist/assets/{settings-Dp5NIt-h.js → settings-BcyGqyX3.js} +1 -1
- package/dist/assets/{settings-B9dVH8oJ.js → settings-BhEHLxqK.js} +1 -1
- package/dist/assets/{settings-BBR9xBqW.js → settings-C67tfoiy.js} +1 -1
- package/dist/assets/{settings-BaZcBGA7.js → settings-CvkIXOQE.js} +1 -1
- package/dist/assets/{settings-BXWyZpz5.js → settings-DGTQ4aKo.js} +1 -1
- package/dist/assets/{settings-BK1-R1dO.js → settings-i7lxRYZu.js} +1 -1
- package/dist/assets/shared-BQ9yQXDx.js +1 -0
- package/dist/assets/{stores-CUp_ut8r.js → stores-DVhvmaer.js} +2 -2
- package/dist/assets/ui-store-DxFtiYFb.js +1 -0
- package/dist/assets/useWebSocket-kb2VPjLc.js +28 -0
- package/dist/assets/{utils-DEzFewqr.js → utils-DvgvNCoT.js} +1 -1
- package/dist/assets/{vendor-DffL_bim.js → vendor-BmsAdDhb.js} +30 -30
- package/dist/assets/{view-navigation-BjlXpDXc.js → view-navigation-D8lN47bJ.js} +1 -1
- package/dist/assets/ws-client-BydCS6yi.js +1 -0
- package/dist/components/AgentOfficeView.d.ts.map +1 -1
- package/dist/components/AgentRosterView.d.ts +16 -0
- package/dist/components/AgentRosterView.d.ts.map +1 -0
- package/dist/components/AgentRuntimePolicyEditor.d.ts +8 -0
- package/dist/components/AgentRuntimePolicyEditor.d.ts.map +1 -0
- package/dist/components/AvailabilityCalendarEditor.d.ts +1 -1
- package/dist/components/AvailabilityCalendarEditor.d.ts.map +1 -1
- package/dist/components/ChangesView.d.ts.map +1 -1
- package/dist/components/ChatInput/slash-commands.d.ts.map +1 -1
- package/dist/components/ChatInput/slash-routing.d.ts +2 -0
- package/dist/components/ChatInput/slash-routing.d.ts.map +1 -1
- package/dist/components/ChatInput.d.ts.map +1 -1
- package/dist/components/ChatView/index.d.ts.map +1 -1
- package/dist/components/ChronicleDashboard.d.ts.map +1 -1
- package/dist/components/CodeEditor.d.ts.map +1 -1
- package/dist/components/CodeMap.d.ts.map +1 -1
- package/dist/components/CustomRosterPanel.d.ts +38 -0
- package/dist/components/CustomRosterPanel.d.ts.map +1 -0
- package/dist/components/DesignGalleryView.d.ts.map +1 -1
- package/dist/components/KanbanView.d.ts.map +1 -1
- package/dist/components/MailboxDetailView.d.ts.map +1 -1
- package/dist/components/MailboxPanel.d.ts.map +1 -1
- package/dist/components/MemoryManager/MemoryDetail.d.ts +4 -4
- package/dist/components/MemoryManager/MemoryDetail.d.ts.map +1 -1
- package/dist/components/MemoryManager/MemoryEditor.d.ts.map +1 -1
- package/dist/components/MemoryManager/MemoryFilters.d.ts +4 -4
- package/dist/components/MemoryManager/MemoryFilters.d.ts.map +1 -1
- package/dist/components/MemoryManager/MemoryGraph.d.ts +4 -4
- package/dist/components/MemoryManager/MemoryGraph.d.ts.map +1 -1
- package/dist/components/MemoryManager/MemoryList.d.ts +3 -3
- package/dist/components/MemoryManager/MemoryList.d.ts.map +1 -1
- package/dist/components/MemoryManager/index.d.ts.map +1 -1
- package/dist/components/MemoryManager/shared.d.ts +15 -15
- package/dist/components/MemoryManager/shared.d.ts.map +1 -1
- package/dist/components/MessageBubble/index.d.ts.map +1 -1
- package/dist/components/OfficeMapCanvas/resolve.d.ts +17 -1
- package/dist/components/OfficeMapCanvas/resolve.d.ts.map +1 -1
- package/dist/components/OfficeMapCanvas/use-recently-finished.d.ts +21 -0
- package/dist/components/OfficeMapCanvas/use-recently-finished.d.ts.map +1 -0
- package/dist/components/OfficeMapCanvas.d.ts.map +1 -1
- package/dist/components/ProcessMonitor.d.ts.map +1 -1
- package/dist/components/SettingsPanel/BrainSection.d.ts.map +1 -1
- package/dist/components/SettingsPanel/MCPSection.d.ts +4 -0
- package/dist/components/SettingsPanel/MCPSection.d.ts.map +1 -1
- package/dist/components/SettingsPanel/PluginToggleList.d.ts.map +1 -1
- package/dist/components/SettingsPanel/PreferenceControls.d.ts +3 -1
- package/dist/components/SettingsPanel/PreferenceControls.d.ts.map +1 -1
- package/dist/components/SettingsPanel/PreferenceToggle.d.ts +3 -1
- package/dist/components/SettingsPanel/PreferenceToggle.d.ts.map +1 -1
- package/dist/components/SettingsPanel/ProviderModelsPanel.d.ts.map +1 -1
- package/dist/components/SettingsPanel/ProviderSection.d.ts.map +1 -1
- package/dist/components/SettingsPanel/local-presets.d.ts +2 -29
- package/dist/components/SettingsPanel/local-presets.d.ts.map +1 -1
- package/dist/components/SetupScreen.d.ts.map +1 -1
- package/dist/components/ShortcutsOverlay.d.ts.map +1 -1
- package/dist/components/SidePanel/SkillsList.d.ts.map +1 -1
- package/dist/components/SkillDetailView.d.ts.map +1 -1
- package/dist/components/TechStackView/index.d.ts.map +1 -1
- package/dist/components/VerificationReportPanel.d.ts +15 -0
- package/dist/components/VerificationReportPanel.d.ts.map +1 -0
- package/dist/components/activity-bar/index.d.ts.map +1 -1
- package/dist/components/ui/api-key-display.d.ts +14 -0
- package/dist/components/ui/api-key-display.d.ts.map +1 -0
- package/dist/components/ui/empty-state.d.ts +29 -0
- package/dist/components/ui/empty-state.d.ts.map +1 -0
- package/dist/hooks/useGlobalKeyboardShortcuts.d.ts +1 -1
- package/dist/hooks/useGlobalKeyboardShortcuts.d.ts.map +1 -1
- package/dist/hooks/useWebSocket.d.ts +13 -13
- package/dist/hooks/useWebSocket.d.ts.map +1 -1
- package/dist/hooks/ws-handlers/chat-handlers.d.ts.map +1 -1
- package/dist/hooks/ws-handlers/fleet-handlers.d.ts.map +1 -1
- package/dist/hooks/ws-handlers/session-handlers.d.ts.map +1 -1
- package/dist/hooks/ws-handlers.d.ts +8 -7
- package/dist/hooks/ws-handlers.d.ts.map +1 -1
- package/dist/index.css +251 -0
- package/dist/index.css.map +2 -2
- package/dist/index.html +23 -23
- package/dist/index.js +11542 -7712
- package/dist/index.js.map +4 -4
- package/dist/lib/agent-office.d.ts +22 -0
- package/dist/lib/agent-office.d.ts.map +1 -1
- package/dist/lib/model-calendar.d.ts +1 -1
- package/dist/lib/model-calendar.d.ts.map +1 -1
- package/dist/lib/model-matrix-routes.d.ts +2 -191
- package/dist/lib/model-matrix-routes.d.ts.map +1 -1
- package/dist/lib/plugin-enablement.d.ts +1 -1
- package/dist/lib/plugin-enablement.d.ts.map +1 -1
- package/dist/lib/roster-ws.d.ts +48 -0
- package/dist/lib/roster-ws.d.ts.map +1 -0
- package/dist/lib/view-navigation.d.ts +1 -1
- package/dist/lib/view-navigation.d.ts.map +1 -1
- package/dist/lib/ws-client-utils.d.ts +1 -2
- package/dist/lib/ws-client-utils.d.ts.map +1 -1
- package/dist/lib/ws-client.d.ts +30 -22
- package/dist/lib/ws-client.d.ts.map +1 -1
- package/dist/protocol-compatibility.d.ts +12 -0
- package/dist/protocol-compatibility.d.ts.map +1 -0
- package/dist/providers.json +105 -85
- package/dist/stores/local-prefs.d.ts +2 -2
- package/dist/stores/local-prefs.d.ts.map +1 -1
- package/dist/stores/mailbox-store.d.ts +2 -0
- package/dist/stores/mailbox-store.d.ts.map +1 -1
- package/dist/stores/session-store.d.ts +1 -1
- package/dist/stores/session-store.d.ts.map +1 -1
- package/dist/stores/types.d.ts +1 -1
- package/dist/stores/types.d.ts.map +1 -1
- package/dist/stores/ui-store.d.ts +3 -3
- package/dist/stores/ui-store.d.ts.map +1 -1
- package/dist/stores/viz-store.d.ts.map +1 -1
- package/dist/types.d.ts +363 -68
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -6
- package/dist/assets/AnalyticsDashboard--x-f8QI-.js +0 -1
- package/dist/assets/AudienceMemoryPanel-j9I0RvhP.js +0 -3
- package/dist/assets/ChangesView-Bb5LXWiI.js +0 -1
- package/dist/assets/ChronicleDashboard-D34oKMQ_.js +0 -1
- package/dist/assets/CodeEditor-BkIIR8EU.js +0 -1
- package/dist/assets/CodeMap-Ej4UNFUm.js +0 -1
- package/dist/assets/ConfirmModal-4l0Tyazp.js +0 -1
- package/dist/assets/DesignGalleryView-CgLsdzTx.js +0 -1
- package/dist/assets/KanbanView--bFrj9Xa.js +0 -2
- package/dist/assets/MailboxDetailView-C-Vf3h1d.js +0 -1
- package/dist/assets/MemoryManager-DoHNBnKd.js +0 -1
- package/dist/assets/OfficeMapPanel-BMf4PTWo.js +0 -4
- package/dist/assets/ProcessMonitor-BtfARuHq.js +0 -1
- package/dist/assets/SddHub-QgMFn_rC.js +0 -2
- package/dist/assets/SetupScreen-CU7Mq-5T.js +0 -1
- package/dist/assets/SkillDetailView-6ZIVx1BG.js +0 -3
- package/dist/assets/TechStackView-9hfnNKx-.js +0 -1
- package/dist/assets/Toaster-BNdKxZ1U.js +0 -1
- package/dist/assets/activity-AfUMXtSI.js +0 -5
- package/dist/assets/activity-Bd_pRifE.js +0 -5
- package/dist/assets/activity-Ct_QOdtL.js +0 -5
- package/dist/assets/activity-Dyikq8Zm.js +0 -5
- package/dist/assets/activity-Ukyu3lON.js +0 -5
- package/dist/assets/activity-gaWDc806.js +0 -5
- package/dist/assets/index-DGX8tPCe.css +0 -1
- package/dist/assets/index-OmSX-BAb.js +0 -124
- package/dist/assets/shared-CpXz-tzA.js +0 -1
- package/dist/assets/ui-store-CwOvhFZG.js +0 -1
- package/dist/assets/useWebSocket-BJorYmOi.js +0 -27
- package/dist/assets/ws-client-Fnmzo7vN.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{Bn as t,Ft as n,Pi as r,Rt as i,Si as a,Ti as o,Ui as s,Ur as c,Ut as l,cn as u,ei as d,er as f,ia as p,it as m,mr as h,oa as g,rn as _,t as v,ta as y,tt as b,ur as x,wi as ee}from"./vendor-DffL_bim.js";import"./i18n-Dk35g-uV.js";import{t as S}from"./useWebSocket-BJorYmOi.js";import{t as C}from"./ws-client-Fnmzo7vN.js";import{t as w}from"./utils-DEzFewqr.js";import{j as te}from"./stores-CUp_ut8r.js";import{s as T}from"./view-navigation-BjlXpDXc.js";import{n as E}from"./Toaster-BNdKxZ1U.js";import{a as D,n as ne,o as O,r as re,t as ie}from"./dialog-CBgO-uqz.js";import{t as k}from"./button-Dy0bAtEY.js";import{t as A}from"./input-B6FY_vtB.js";import{_ as j,d as M,o as N,s as P,u as F}from"./index-OmSX-BAb.js";var I=e(g(),1),ae=e(v(),1),L=b();function R(e,t=8e3){return new Promise((n,r)=>{let i=setTimeout(()=>{a(),r(Error(`timeout`))},t),a=e.on(`key.operation_result`,e=>{clearTimeout(i),a(),n(e.payload)})})}var z=[{id:`openai`,name:`OpenAI`,description:`GPT, o-series, and Codex models`,icon:`🤖`,color:`from-success/12 to-success/5 border-success/30 hover:border-success/50`,keyPlaceholder:`sk-...`,docsUrl:`https://platform.openai.com/api-keys`,family:`openai`},{id:`anthropic`,name:`Anthropic`,description:`Claude model access`,icon:`🧠`,color:`from-warning/12 to-warning/5 border-warning/30 hover:border-warning/50`,keyPlaceholder:`sk-ant-...`,docsUrl:`https://console.anthropic.com/settings/keys`,family:`anthropic`},{id:`google`,name:`Google`,description:`Gemini Pro, Flash, and Nano`,icon:`✨`,color:`from-info/12 to-info/5 border-info/30 hover:border-info/50`,keyPlaceholder:`AIza...`,docsUrl:`https://aistudio.google.com/apikey`,family:`google`},{id:`mistral`,name:`Mistral AI`,description:`Mistral Large, Codestral, and Ministral — open-weight frontier models.`,icon:`🌬️`,color:`from-info/12 to-info/5 border-info/30 hover:border-info/50`,keyPlaceholder:`Vz8d...`,docsUrl:`https://console.mistral.ai/api-keys/`,family:`openai-compatible`},{id:`deepseek`,name:`DeepSeek`,description:`High-performance reasoning at low cost`,icon:`🐋`,color:`from-primary/12 to-primary/5 border-primary/30 hover:border-primary/50`,keyPlaceholder:`sk-...`,docsUrl:`https://platform.deepseek.com/api_keys`,family:`openai-compatible`},{id:`openrouter`,name:`OpenRouter`,description:`All models via one key`,icon:`🔀`,color:`from-primary/12 to-primary/5 border-primary/30 hover:border-primary/50`,keyPlaceholder:`sk-or-...`,docsUrl:`https://openrouter.ai/keys`,family:`openai-compatible`},{id:`groq`,name:`GroqCloud`,description:`Ultra-fast inference via LPU hardware — Llama, Mixtral, Gemma, and Qwen models.`,icon:`⚡`,color:`from-warning/12 to-warning/5 border-warning/30 hover:border-warning/50`,keyPlaceholder:`gsk_...`,docsUrl:`https://console.groq.com/keys`,family:`openai-compatible`},{id:`perplexity`,name:`Perplexity Sonar`,description:`Web-augmented chat models with built-in search and citations.`,icon:`🔍`,color:`from-info/12 to-info/5 border-info/30 hover:border-info/50`,keyPlaceholder:`pplx-...`,docsUrl:`https://docs.perplexity.ai/guides/getting-started`,family:`openai-compatible`},{id:`minimax`,name:`MiniMax Token Plan`,description:`Subscribe to one plan and unlock the latest models, including frontier coding capabilities, 1M ultra-long context, and native multimodality.`,icon:`🔮`,color:`from-destructive/10 to-destructive/5 border-destructive/25 hover:border-destructive/45`,keyPlaceholder:`eyJ...`,docsUrl:`https://platform.minimax.io/subscribe/token-plan`,family:`openai-compatible`},{id:`kimi-for-coding`,name:`Kimi Code`,description:`Personal interactive coding with the Kimi Code subscription key. Generate the API key at kimi.com/code/console.`,icon:`🌙`,color:`from-info/12 to-info/5 border-info/30 hover:border-info/50`,keyPlaceholder:`sk-...`,docsUrl:`https://www.kimi.com/code/docs/en/third-party-tools/other-coding-agents.html`,family:`openai-compatible`},{id:`moonshotai`,name:`Moonshot Platform (Metered)`,description:`Metered Moonshot Platform API — pay-as-you-go for automation, background work, and commercial use.`,icon:`🌑`,color:`from-info/12 to-info/5 border-info/30 hover:border-info/50`,keyPlaceholder:`sk-...`,docsUrl:`https://platform.kimi.ai/docs/api/overview`,family:`openai-compatible`},{id:`zai-coding-plan`,name:`Z.AI Coding Plan`,description:`Use your Z.AI Coding Plan subscription. Generate an API key from your Z.AI dashboard.`,icon:`🔷`,color:`from-primary/12 to-primary/5 border-primary/30 hover:border-primary/50`,keyPlaceholder:`...`,docsUrl:`https://docs.z.ai/guides/overview/quick-start`,family:`openai-compatible`},{id:`zai`,name:`Z.AI API (Metered)`,description:`Pay-as-you-go Z.AI GLM access for automation and commercial use.`,icon:`🔷`,color:`from-primary/12 to-primary/5 border-primary/30 hover:border-primary/50`,keyPlaceholder:`...`,docsUrl:`https://docs.z.ai/guides/overview/quick-start`,family:`openai-compatible`},{id:`opencode-go`,name:`OpenCode Go`,description:`Global hosted API for 75+ LLM providers — stable access from US, EU, and Singapore`,icon:`🌍`,color:`from-success/12 to-success/5 border-success/30 hover:border-success/50`,keyPlaceholder:`oc-...`,docsUrl:`https://opencode.ai/go?ref=6VZAER87H4`,family:`openai-compatible`}];async function B(e,t){try{let n=await fetch(e,{signal:t});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=await n.json();if(!Array.isArray(r))throw Error(`Expected JSON array`);let i=r.filter(e=>typeof e.id==`string`&&typeof e.name==`string`&&typeof e.family==`string`);return i.length>0?i:z}catch{return z}}function oe({popular:e,catalogProvider:n,savedProvider:r,onKeySaved:i}){let{t:s}=y(),[u,f]=(0,I.useState)(``),[p,m]=(0,I.useState)(!1),[g,_]=(0,I.useState)(!!r?.apiKeys.some(e=>e.isActive)),[v,b]=(0,I.useState)(!1),[x,S]=(0,I.useState)(!1),[T,j]=(0,I.useState)(!1),[M,N]=(0,I.useState)(null);(0,I.useEffect)(()=>{T&&e.referral&&ae.toDataURL(e.referral.url,{width:200,margin:2,color:{dark:`#000000`,light:`#ffffff`}}).then(e=>N(e)).catch(()=>N(null))},[T,e.referral]);let P=async()=>{if(u.trim()){m(!0);try{let t=C(te.getState().wsUrl),r=R(t);n?t.addKey(e.id,`default`,u.trim()):t.send({type:`provider.add`,payload:{id:e.id,family:e.family,apiKey:u.trim()}});let a=await r;if(!a.success)throw Error(a.message);_(!0),f(``),E.success(s(`setup:screen.toasts.keySaved`,{name:e.name})),i(e.id)}catch(t){let n=t instanceof Error&&t.message&&t.message!==`timeout`?t.message:null;E.error(n??s(`setup:screen.toasts.keySaveFailed`,{name:e.name}))}finally{m(!1)}}},F=e=>{e.key===`Enter`&&u.trim()&&P()},z=async()=>{if(e.referral)try{await navigator.clipboard.writeText(e.referral.url),S(!0),E.success(s(`setup:screen.toasts.referralCopied`)),setTimeout(()=>S(!1),2e3)}catch{E.error(s(`setup:screen.toasts.referralCopyFailed`))}},B=n&&n.modelCount>0;return(0,L.jsxs)(`div`,{className:w(`rounded-xl border p-4 transition-all`,g?`border-success/30 bg-success/5`:`bg-gradient-to-br ${e.color}`),children:[(0,L.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,L.jsx)(`span`,{className:`text-2xl shrink-0 mt-0.5`,children:e.icon}),(0,L.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,L.jsx)(`h3`,{className:`text-sm font-semibold`,children:e.name}),g&&(0,L.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[10px] px-1.5 py-0.5 rounded-full bg-success/10 text-success border border-success/20`,children:[(0,L.jsx)(o,{className:`h-2.5 w-2.5`}),s(`setup:screen.card.keySaved`)]}),e.referral&&!g&&(0,L.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[10px] px-1.5 py-0.5 rounded-full bg-warning/10 text-warning border border-warning/20`,children:[(0,L.jsx)(h,{className:`h-2.5 w-2.5`}),s(`setup:screen.card.referral`)]})]}),(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground mt-0.5`,children:e.description}),e.referral&&!g&&(0,L.jsxs)(`p`,{className:`text-[11px] text-warning/80 mt-1`,children:[`🎁 `,e.referral.reward]}),g?B?(0,L.jsxs)(`button`,{type:`button`,onClick:()=>b(!v),className:`mt-2 text-[11px] text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1`,children:[s(`setup:screen.providers.modelsAvailable`,{count:n?.modelCount??0}),v?(0,L.jsx)(ee,{className:`h-3 w-3`}):(0,L.jsx)(a,{className:`h-3 w-3`})]}):null:(0,L.jsxs)(`div`,{className:`mt-3 space-y-2`,children:[(0,L.jsxs)(`div`,{className:`flex gap-2`,children:[(0,L.jsx)(A,{type:`password`,placeholder:e.keyPlaceholder,value:u,onChange:e=>f(e.target.value),onKeyDown:F,className:`font-mono text-sm`}),(0,L.jsx)(k,{onClick:P,disabled:!u.trim()||p,size:`sm`,className:`shrink-0`,children:p?(0,L.jsx)(t,{className:`h-4 w-4 animate-spin`}):s(`setup:screen.card.save`)})]}),e.docsUrl&&(0,L.jsxs)(`a`,{href:e.docsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[11px] text-muted-foreground hover:text-foreground transition-colors`,children:[s(`setup:screen.card.getKey`),` `,(0,L.jsx)(c,{className:`h-3 w-3`})]}),e.referral&&(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,L.jsx)(`button`,{type:`button`,onClick:z,className:`inline-flex items-center gap-1 text-[11px] text-warning/80 hover:text-warning transition-colors`,children:x?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(o,{className:`h-3 w-3`}),` `,s(`setup:screen.card.copied`)]}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(d,{className:`h-3 w-3`}),` `,s(`setup:screen.card.copyReferral`)]})}),(0,L.jsxs)(`button`,{type:`button`,onClick:()=>j(!0),className:`inline-flex items-center gap-1 text-[11px] text-warning/80 hover:text-warning transition-colors`,children:[(0,L.jsx)(l,{className:`h-3 w-3`}),` `,s(`setup:screen.card.share`)]})]})]})]})]}),(0,L.jsx)(ie,{open:T,onOpenChange:j,children:(0,L.jsxs)(ne,{className:`sm:max-w-md`,children:[(0,L.jsxs)(D,{children:[(0,L.jsxs)(O,{className:`flex items-center gap-2`,children:[(0,L.jsx)(h,{className:`h-4 w-4 text-warning`}),s(`setup:screen.share.title`,{name:e.name})]}),(0,L.jsx)(re,{children:s(`setup:screen.share.description`)})]}),(0,L.jsx)(`div`,{className:`flex flex-col items-center gap-4 py-4`,children:e.referral&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`div`,{className:`text-sm text-center`,children:(0,L.jsxs)(`p`,{className:`font-medium text-warning`,children:[`🎁 `,e.referral.reward]})}),M?(0,L.jsx)(`div`,{className:`rounded-lg border border-border p-2 bg-white`,children:(0,L.jsx)(`img`,{src:M,alt:s(`setup:screen.card.qrAlt`,{name:e.name}),className:`w-[200px] h-[200px]`})}):(0,L.jsx)(`div`,{className:`w-[200px] h-[200px] rounded-lg border border-border flex items-center justify-center bg-muted`,children:(0,L.jsx)(t,{className:`h-6 w-6 animate-spin text-muted-foreground`})}),(0,L.jsxs)(`div`,{className:`w-full space-y-2`,children:[(0,L.jsxs)(`div`,{className:`flex items-center justify-center gap-2`,children:[(0,L.jsxs)(`button`,{type:`button`,onClick:()=>{let t=encodeURIComponent(`Check out ${e.name}! 🎁 ${e.referral.reward}`),n=encodeURIComponent(e.referral.url);window.open(`https://twitter.com/intent/tweet?text=${t}&url=${n}`,`_blank`,`noopener,noreferrer`)},className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-border bg-card text-xs text-foreground hover:bg-muted transition-colors`,title:s(`setup:screen.share.twitter`),children:[(0,L.jsx)(`svg`,{role:`img`,"aria-hidden":`true`,className:`h-3.5 w-3.5`,fill:`currentColor`,viewBox:`0 0 24 24`,children:(0,L.jsx)(`path`,{d:`M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z`})}),`X`]}),(0,L.jsxs)(`button`,{type:`button`,onClick:()=>{let t=encodeURIComponent(e.referral.url),n=encodeURIComponent(`Check out ${e.name}! ${e.referral.reward}`);window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${t}&summary=${n}`,`_blank`,`noopener,noreferrer`)},className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-border bg-card text-xs text-foreground hover:bg-muted transition-colors`,title:s(`setup:screen.share.linkedin`),children:[(0,L.jsx)(`svg`,{role:`img`,"aria-hidden":`true`,className:`h-3.5 w-3.5`,fill:`currentColor`,viewBox:`0 0 24 24`,children:(0,L.jsx)(`path`,{d:`M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z`})}),`LinkedIn`]}),(0,L.jsxs)(`button`,{type:`button`,onClick:()=>{let t=encodeURIComponent(`Check out ${e.name}! 🎁 ${e.referral.reward} ${e.referral.url}`);window.open(`https://t.me/share/url?url=${t}`,`_blank`,`noopener,noreferrer`)},className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-border bg-card text-xs text-foreground hover:bg-muted transition-colors`,title:s(`setup:screen.share.telegram`),children:[(0,L.jsx)(`svg`,{role:`img`,"aria-hidden":`true`,className:`h-3.5 w-3.5`,fill:`currentColor`,viewBox:`0 0 24 24`,children:(0,L.jsx)(`path`,{d:`M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z`})}),`Telegram`]}),(0,L.jsxs)(`button`,{type:`button`,onClick:()=>{let t=encodeURIComponent(`Check out ${e.name}! 🎁 ${e.referral.reward}`),n=encodeURIComponent(e.referral.url);window.open(`https://wa.me/?text=${t}%20${n}`,`_blank`,`noopener,noreferrer`)},className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-border bg-card text-xs text-foreground hover:bg-muted transition-colors`,title:s(`setup:screen.share.whatsapp`),children:[(0,L.jsx)(`svg`,{role:`img`,"aria-hidden":`true`,className:`h-3.5 w-3.5`,fill:`currentColor`,viewBox:`0 0 24 24`,children:(0,L.jsx)(`path`,{d:`M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.134 1.585 5.934L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z`})}),`WhatsApp`]}),(0,L.jsxs)(`button`,{type:`button`,onClick:()=>{let t=encodeURIComponent(e.referral.url),n=encodeURIComponent(`${e.name} - ${e.referral.reward}`);window.open(`https://www.reddit.com/submit?url=${t}&title=${n}`,`_blank`,`noopener,noreferrer`)},className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-border bg-card text-xs text-foreground hover:bg-muted transition-colors`,title:s(`setup:screen.share.reddit`),children:[(0,L.jsx)(`svg`,{role:`img`,"aria-hidden":`true`,className:`h-3.5 w-3.5`,fill:`currentColor`,viewBox:`0 0 24 24`,children:(0,L.jsx)(`path`,{d:`M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm5.01 4.744c.688 0 1.25.561 1.25 1.249a1.25 1.25 0 0 1-2.498.056l-2.597-.547-.8 3.747c1.824.07 3.48.632 4.674 1.488.308-.309.73-.491 1.207-.491.968 0 1.754.786 1.754 1.754 0 .716-.435 1.333-1.01 1.614a3.111 3.111 0 0 1 .042.52c0 2.694-3.13 4.87-7.004 4.87-3.874 0-7.004-2.176-7.004-4.87 0-.183.015-.366.043-.534A1.748 1.748 0 0 1 4.028 12c0-.968.786-1.754 1.754-1.754.463 0 .898.196 1.207.49 1.207-.883 2.878-1.43 4.744-1.487l.885-4.182a.342.342 0 0 1 .14-.197.35.35 0 0 1 .238-.042l2.906.617a1.214 1.214 0 0 0 1.108-.701 1.25 1.25 0 0 1 2.144.33zm-8.811 8.748c-.968 0-1.754.786-1.754 1.754 0 .968.786 1.754 1.754 1.754.968 0 1.754-.786 1.754-1.754 0-.968-.786-1.754-1.754-1.754zm7.944 0c-.968 0-1.754.786-1.754 1.754 0 .968.786 1.754 1.754 1.754.968 0 1.754-.786 1.754-1.754 0-.968-.786-1.754-1.754-1.754z`})}),`Reddit`]}),(0,L.jsxs)(`button`,{type:`button`,onClick:()=>{let t=encodeURIComponent(`Check out ${e.name}! 🎁 ${e.referral.reward}`),n=encodeURIComponent(e.referral.url);window.open(`https://www.facebook.com/sharer/sharer.php?u=${n}"e=${t}`,`_blank`,`noopener,noreferrer`)},className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-border bg-card text-xs text-foreground hover:bg-muted transition-colors`,title:s(`setup:screen.share.facebook`),children:[(0,L.jsx)(`svg`,{role:`img`,"aria-hidden":`true`,className:`h-3.5 w-3.5`,fill:`currentColor`,viewBox:`0 0 24 24`,children:(0,L.jsx)(`path`,{d:`M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z`})}),`Facebook`]}),(0,L.jsxs)(`button`,{type:`button`,onClick:()=>{let t=encodeURIComponent(`Check out ${e.name}! 🎁 ${e.referral.reward}`),n=encodeURIComponent(e.referral.url);window.open(`mailto:?subject=${t}&body=${n}`,`_blank`,`noopener,noreferrer`)},className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg bg-muted text-muted-foreground text-xs hover:bg-muted/80 transition-colors`,title:s(`setup:screen.share.email`),children:[(0,L.jsx)(`svg`,{role:`img`,"aria-hidden":`true`,className:`h-3.5 w-3.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,viewBox:`0 0 24 24`,children:(0,L.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M21.75 6.75v10.5a2.25 2.25 0 01-2.25 2.25H4.5a2.25 2.25 0 01-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25m19.5 0v.243a2.25 2.25 0 01-1.07 1.916l-7.5 4.615a2.25 2.25 0 01-2.36 0L3.32 8.91a2.25 2.25 0 01-1.07-1.916V6.75`})}),`Email`]})]}),(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,L.jsx)(A,{value:e.referral.url,readOnly:!0,className:`font-mono text-xs flex-1`}),(0,L.jsx)(k,{size:`sm`,variant:`outline`,onClick:z,className:`shrink-0`,children:x?(0,L.jsx)(o,{className:`h-4 w-4`}):(0,L.jsx)(d,{className:`h-4 w-4`})})]}),(0,L.jsx)(`p`,{className:`text-[11px] text-muted-foreground text-center`,children:s(`setup:screen.share.hint`)})]})]})})]})})]})}function se({onKeySaved:e}){let{t:n}=y(),[r,i]=(0,I.useState)(!1),[o,s]=(0,I.useState)(``),[c,l]=(0,I.useState)(`openai-compatible`),[d,f]=(0,I.useState)(``),[p,m]=(0,I.useState)(``),[h,g]=(0,I.useState)(!1),{setFieldRef:_,handleKeyDown:v}=P(),b=async()=>{if(o.trim()){g(!0);try{let t=C(te.getState().wsUrl),r=R(t);t.send({type:`provider.add`,payload:{id:o.trim(),family:c,baseUrl:d.trim()||void 0,apiKey:p.trim()||void 0}});let a=await r;if(!a.success)throw Error(a.message);E.success(n(`setup:screen.toasts.providerAdded`,{id:o.trim()})),e(o.trim()),s(``),f(``),m(``),i(!1)}catch(e){let t=e instanceof Error&&e.message&&e.message!==`timeout`?e.message:null;E.error(t??n(`setup:screen.toasts.providerAddFailed`))}finally{g(!1)}}};return(0,L.jsxs)(`div`,{className:`rounded-xl border border-dashed border-border/60 overflow-hidden`,children:[(0,L.jsxs)(`button`,{type:`button`,onClick:()=>i(!r),className:`w-full flex items-center gap-3 p-4 text-left hover:bg-muted/30 transition-colors`,children:[(0,L.jsx)(`div`,{className:`w-10 h-10 rounded-lg bg-muted/50 flex items-center justify-center`,children:(0,L.jsx)(u,{className:`h-5 w-5 text-muted-foreground`})}),(0,L.jsxs)(`div`,{className:`flex-1`,children:[(0,L.jsx)(`h3`,{className:`text-sm font-medium`,children:n(`setup:screen.custom.title`)}),(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n(`setup:screen.custom.description`)})]}),(0,L.jsx)(a,{className:w(`h-4 w-4 text-muted-foreground transition-transform`,r&&`rotate-90`)})]}),r&&(0,L.jsxs)(`div`,{className:`px-4 pb-4 space-y-3 border-t border-border/40`,children:[(0,L.jsxs)(`div`,{className:`space-y-1.5 pt-3`,children:[(0,L.jsx)(`span`,{className:`text-[11px] font-medium text-muted-foreground block`,children:n(`setup:screen.custom.localServers`)}),(0,L.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:N.map(e=>(0,L.jsx)(k,{type:`button`,size:`sm`,variant:o===e.id?`default`:`outline`,onClick:()=>{s(e.id),l(`openai-compatible`),f(e.defaultBaseUrl),e.noAuth&&m(``)},title:e.hint,children:e.label},e.id))})]}),(0,L.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`span`,{className:`text-[11px] font-medium text-muted-foreground mb-1 block`,children:n(`setup:screen.custom.providerId`)}),(0,L.jsx)(A,{placeholder:`e.g. my-llm`,value:o,onChange:e=>s(e.target.value),className:`text-sm`,ref:_(0),onKeyDown:e=>v(e,0)})]}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`span`,{className:`text-[11px] font-medium text-muted-foreground mb-1 block`,children:n(`setup:screen.custom.family`)}),(0,L.jsxs)(`select`,{value:c,onChange:e=>l(e.target.value),className:`flex h-9 w-full rounded-md border border-input bg-transparent px-3 text-sm`,ref:_(1),onKeyDown:e=>v(e,1),children:[(0,L.jsx)(`option`,{value:`openai-compatible`,children:n(`setup:screen.custom.familyOpenAiCompatible`)}),(0,L.jsx)(`option`,{value:`openai`,children:`OpenAI`}),(0,L.jsx)(`option`,{value:`anthropic`,children:`Anthropic`}),(0,L.jsx)(`option`,{value:`google`,children:`Google`})]})]})]}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`span`,{className:`text-[11px] font-medium text-muted-foreground mb-1 block`,children:n(`setup:screen.custom.baseUrl`)}),(0,L.jsx)(A,{placeholder:`e.g. http://localhost:11434/v1`,value:d,onChange:e=>f(e.target.value),className:`text-sm font-mono`,ref:_(2),onKeyDown:e=>v(e,2)})]}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`span`,{className:`text-[11px] font-medium text-muted-foreground mb-1 block`,children:n(`setup:screen.custom.apiKey`)}),(0,L.jsx)(A,{type:`password`,placeholder:n(`setup:screen.custom.apiKeyPlaceholder`),value:p,onChange:e=>m(e.target.value),className:`text-sm font-mono`,ref:_(3),onKeyDown:e=>v(e,3)})]}),(0,L.jsxs)(k,{onClick:b,disabled:!o.trim()||h,size:`sm`,ref:_(4),onKeyDown:e=>v(e,4,b),children:[h?(0,L.jsx)(t,{className:`h-4 w-4 animate-spin mr-2`}):null,n(`setup:screen.custom.add`)]})]})]})}function ce(){let{t:e}=y(),{model:c,setProvider:l,setModel:u,wsConnected:d,wsUrl:h}=te(m(e=>({model:e.model,setProvider:e.setProvider,setModel:e.setModel,wsConnected:e.wsConnected,wsUrl:e.wsUrl})));S();let[g,v]=(0,I.useState)(`keys`),[b,ee]=(0,I.useState)([]),[D,ne]=(0,I.useState)({}),[O,re]=(0,I.useState)([]),[ie,A]=(0,I.useState)(!1),[N,P]=(0,I.useState)(null),[ae,R]=(0,I.useState)(0),[ce,le]=(0,I.useState)(new Set),[ue,de]=(0,I.useState)(z),[V,H]=(0,I.useState)(!1),[fe,pe]=(0,I.useState)(0),[me,he]=(0,I.useState)(0),[U,ge]=(0,I.useState)(null),W=(0,I.useRef)(!0);(0,I.useEffect)(()=>{let e=new AbortController,t=`${window.location.origin}/providers.json`;return H(!0),B(t,e.signal).then(t=>{if(t!==z){if(de(t),H(!1),!W.current){let e=t.length-me;e>0?E.success(p.t(`setup:screen.toasts.providersLoadedNew`,{count:t.length,diff:e})):e<0?E.success(p.t(`setup:screen.toasts.providersLoadedRemoved`,{count:t.length,diff:Math.abs(e)})):E.success(p.t(`setup:screen.toasts.providersLoadedNoChanges`,{count:t.length})),he(t.length)}ge(new Date);return}return B(`https://raw.githubusercontent.com/WrongStack/WrongStack/main/packages/webui/public/providers.json`,e.signal)}).then(e=>{if(e){if(de(e),!W.current){let t=e.length-me;t>0?E.success(p.t(`setup:screen.toasts.providersLoadedNew`,{count:e.length,diff:t})):t<0?E.success(p.t(`setup:screen.toasts.providersLoadedRemoved`,{count:e.length,diff:Math.abs(t)})):E.success(p.t(`setup:screen.toasts.providersLoadedNoChanges`,{count:e.length})),he(e.length)}ge(new Date)}}).catch(()=>{W.current||E.error(p.t(`setup:screen.toasts.providersRefreshFailed`))}).finally(()=>{H(!1),W.current=!1}),()=>e.abort()},[fe]);let[G,K]=(0,I.useState)(null),[q,J]=(0,I.useState)(null),[_e,ve]=(0,I.useState)(!1);(0,I.useEffect)(()=>{if(!d)return;let e=C(h),t=setTimeout(()=>{t=null,A(!1),P(p.t(`setup:screen.errors.backendNotResponding`))},8e3),n=()=>{t&&=(clearTimeout(t),null)},r=e.on(`provider.catalog`,e=>{if(e.type===`provider.catalog`){n(),P(null);let t=e.payload.providers.sort((e,t)=>e.id.localeCompare(t.id));ee(t),A(!1)}}),i=e.on(`provider.models`,e=>{if(e.type===`provider.models`){let t=e.payload;ne(e=>({...e,[t.provider]:t.models})),ve(!1),t.models.length===1?J(t.models[0].id):c&&t.models.some(e=>e.id===c)&&J(c)}}),a=e.on(`providers.saved`,e=>{if(e.type===`providers.saved`){let t=e.payload.providers.sort((e,t)=>e.id.localeCompare(t.id));re(t);let n=new Set(t.filter(e=>e.apiKeys.some(e=>e.isActive)).map(e=>e.id));le(n)}});return P(null),A(!0),e.listProviders(),()=>{n(),r?.(),i?.(),a?.()}},[d,h,c,ae]);let ye=(0,I.useCallback)(()=>{P(null),R(e=>e+1)},[]),be=(0,I.useCallback)(()=>{pe(e=>e+1)},[]),xe=(0,I.useCallback)(t=>{let n=new Date().getTime()-t.getTime(),r=Math.floor(n/1e3);if(r<10)return e(`setup:screen.time.justNow`);if(r<60)return e(`setup:screen.time.secondsAgo`,{count:r});let i=Math.floor(r/60);if(i<60)return e(`setup:screen.time.minutesAgo`,{count:i});let a=Math.floor(i/60);if(a<24)return e(`setup:screen.time.hoursAgo`,{count:a});let o=Math.floor(a/24);return e(`setup:screen.time.daysAgo`,{count:o})},[e]),Y=(0,I.useCallback)(e=>{le(t=>new Set([...t,e]))},[]),X=ce.size>0,Se=(0,I.useCallback)(()=>{if(!X){if(O.length>0){let e=O[0];K(e.id),v(`done`)}return}let e=O.find(e=>e.apiKeys.some(e=>e.isActive));e&&(K(e.id),v(`done`))},[X,O]);(0,I.useEffect)(()=>{if(!G||!d||g!==`done`)return;let e=C(h);D[G]||(ve(!0),e.listProviderModels(G))},[G,d,h,D,g]);let Ce=G?D[G]??[]:[],we=(0,I.useCallback)(()=>{if(!G||!q)return;l(G),u(q);let e=C(h);e.switchModel(G,q);let t=null,n=()=>{t&&clearTimeout(t)},r=e.on(`key.operation_result`,t=>{let i=t.payload;n(),r(),i.success?(e.newSession(),T(`chat`)):E.error(i.message)});t=setTimeout(()=>{n(),r(),E.error(p.t(`setup:screen.errors.modelSwitchTimeout`))},5e3)},[G,q,l,u,h]),Te=new Set(ue.map(e=>e.id)),Ee=b.filter(e=>!Te.has(e.id)).sort((e,t)=>e.id.localeCompare(t.id)),Z=M(Ee,10,g),Q=M(O,9,g),$=M(Ce,12,G);return(0,L.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col`,children:[(0,L.jsxs)(`header`,{className:`flex shrink-0 flex-col gap-3 border-b bg-card px-4 py-4 sm:flex-row sm:items-center sm:justify-between sm:px-6`,children:[(0,L.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,L.jsx)(`img`,{src:`/wrongstack.svg`,alt:`WrongStack`,draggable:!1,className:`ws-brand-logo h-10 w-10 shrink-0 border border-border/70 shadow-sm`}),(0,L.jsxs)(`div`,{className:`min-w-0`,children:[(0,L.jsx)(`h1`,{className:`truncate text-lg font-semibold`,children:e(`setup:screen.header.title`)}),(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground sm:truncate`,children:e(`setup:screen.header.subtitle`)})]})]}),X&&(0,L.jsxs)(k,{onClick:Se,size:`sm`,className:`w-full sm:w-auto`,children:[e(`setup:screen.header.continue`),(0,L.jsx)(s,{className:`h-4 w-4 ml-1.5`})]})]}),(0,L.jsx)(j,{className:`min-h-0 flex-1`,children:g===`keys`?(0,L.jsxs)(`div`,{className:`mx-auto max-w-3xl space-y-8 p-4 sm:p-6`,children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1 text-sm`,children:[(0,L.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5 text-primary font-medium`,children:[(0,L.jsx)(f,{className:`h-4 w-4`}),(0,L.jsx)(`span`,{children:e(`setup:screen.steps.addKeys`)})]}),(0,L.jsx)(a,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,L.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5 text-muted-foreground`,children:[(0,L.jsx)(r,{className:`h-4 w-4`}),(0,L.jsx)(`span`,{children:e(`setup:screen.steps.pickModel`)})]}),(0,L.jsx)(a,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,L.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5 text-muted-foreground`,children:[(0,L.jsx)(n,{className:`h-4 w-4`}),(0,L.jsx)(`span`,{children:e(`setup:screen.steps.start`)})]})]}),(0,L.jsxs)(`div`,{className:`flex items-start gap-3 rounded-xl border border-primary/20 bg-primary/5 p-4`,children:[(0,L.jsx)(i,{className:`h-5 w-5 text-primary shrink-0 mt-0.5`}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`p`,{className:`text-sm font-medium`,children:e(`setup:screen.security.title`)}),(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground mt-0.5`,children:e(`setup:screen.security.body`)})]})]}),N?(0,L.jsxs)(`div`,{className:`flex flex-col items-center text-center gap-4 py-12 rounded-xl border border-destructive/30 bg-destructive/5 px-6`,children:[(0,L.jsx)(`div`,{className:`w-12 h-12 rounded-xl bg-destructive/10 border border-destructive/30 flex items-center justify-center`,children:(0,L.jsx)(x,{className:`h-6 w-6 text-destructive`})}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`p`,{className:`text-sm font-medium text-destructive`,children:e(`setup:screen.errors.backendUnreachable`)}),(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1 max-w-sm`,children:N})]}),(0,L.jsxs)(k,{onClick:ye,size:`sm`,variant:`outline`,children:[(0,L.jsx)(t,{className:`h-4 w-4 mr-2`}),e(`setup:screen.errors.retry`)]})]}):(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,L.jsx)(`h2`,{className:`text-sm font-medium text-muted-foreground uppercase tracking-wider`,children:e(`setup:screen.providers.popular`)}),(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[V&&(0,L.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[11px] text-muted-foreground`,children:[(0,L.jsx)(t,{className:`h-3 w-3 animate-spin`}),e(`setup:screen.providers.updating`)]}),U&&!V&&(0,L.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,title:U.toLocaleString(),children:xe(U)}),(0,L.jsxs)(`button`,{type:`button`,onClick:be,disabled:V,className:`inline-flex items-center gap-1 text-[11px] text-muted-foreground hover:text-foreground transition-colors disabled:opacity-50 disabled:cursor-not-allowed`,title:e(`setup:screen.providers.refreshTitle`),children:[(0,L.jsx)(_,{className:w(`h-3 w-3`,V&&`animate-spin`)}),e(`setup:screen.providers.refresh`)]})]})]}),(0,L.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:ue.map(e=>(0,L.jsx)(oe,{popular:e,catalogProvider:b.find(t=>t.id===e.id),savedProvider:O.find(t=>t.id===e.id),onKeySaved:Y},e.id))})]}),Ee.length>0&&(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(`h2`,{className:`text-sm font-medium text-muted-foreground uppercase tracking-wider`,children:e(`setup:screen.providers.more`)}),(0,L.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:Z.pageItems.map(t=>(0,L.jsx)(oe,{popular:{id:t.id,name:t.name,description:e(`setup:screen.providers.catalogDescription`,{family:t.family,count:t.modelCount}),icon:`🔗`,color:`from-muted/60 to-muted/20 border-border hover:border-primary/40`,keyPlaceholder:`API key`,family:t.family},catalogProvider:t,savedProvider:O.find(e=>e.id===t.id),onKeySaved:Y},t.id))}),(0,L.jsx)(F,{page:Z.page,pageSize:Z.pageSize,totalItems:Z.totalItems,onPageChange:Z.setPage,itemLabel:`providers`})]}),(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(`h2`,{className:`text-sm font-medium text-muted-foreground uppercase tracking-wider`,children:e(`setup:screen.providers.selfHosted`)}),(0,L.jsx)(se,{onKeySaved:Y})]})]}),ie&&(0,L.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,L.jsx)(t,{className:`h-6 w-6 animate-spin text-muted-foreground`})}),X&&(0,L.jsx)(`div`,{className:`sticky bottom-0 -mx-4 border-t bg-background/80 px-4 py-4 backdrop-blur-sm sm:-mx-6 sm:px-6`,children:(0,L.jsxs)(k,{onClick:Se,className:`w-full`,size:`lg`,children:[(0,L.jsx)(r,{className:`h-4 w-4 mr-2`}),e(`setup:screen.start.pickAndStart`),(0,L.jsx)(s,{className:`h-4 w-4 ml-2`})]})})]}):(0,L.jsxs)(`div`,{className:`mx-auto max-w-2xl space-y-8 p-4 sm:p-6`,children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1 text-sm`,children:[(0,L.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5 text-success`,children:[(0,L.jsx)(o,{className:`h-4 w-4`}),(0,L.jsx)(`span`,{children:e(`setup:screen.steps.keys`)})]}),(0,L.jsx)(a,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,L.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5 text-primary font-medium`,children:[(0,L.jsx)(r,{className:`h-4 w-4`}),(0,L.jsx)(`span`,{children:e(`setup:screen.steps.pickModel`)})]}),(0,L.jsx)(a,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,L.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5 text-muted-foreground`,children:[(0,L.jsx)(n,{className:`h-4 w-4`}),(0,L.jsx)(`span`,{children:e(`setup:screen.steps.start`)})]})]}),(0,L.jsx)(`button`,{type:`button`,onClick:()=>v(`keys`),className:`text-xs text-muted-foreground hover:text-foreground transition-colors`,children:e(`setup:screen.start.addMoreKeys`)}),(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsxs)(`h2`,{className:`text-base font-semibold flex items-center gap-2`,children:[(0,L.jsx)(r,{className:`h-4 w-4 text-primary`}),e(`setup:screen.start.chooseProvider`)]}),(0,L.jsx)(`div`,{className:`grid grid-cols-2 sm:grid-cols-3 gap-2`,children:Q.pageItems.map(t=>(0,L.jsxs)(`button`,{type:`button`,onClick:()=>{K(t.id),J(null)},className:w(`rounded-lg border p-3 text-left transition-all text-sm`,G===t.id?`border-primary bg-primary/10 ring-1 ring-primary/30`:`border-border hover:border-primary/40 hover:bg-primary/5`),children:[(0,L.jsx)(`span`,{className:`font-medium`,children:t.id}),(0,L.jsx)(`span`,{className:`block text-[11px] text-muted-foreground mt-0.5`,children:e(`setup:screen.start.activeKeys`,{count:t.apiKeys.filter(e=>e.isActive).length})})]},t.id))}),(0,L.jsx)(F,{page:Q.page,pageSize:Q.pageSize,totalItems:Q.totalItems,onPageChange:Q.setPage,itemLabel:`saved providers`})]}),G&&(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsxs)(`h2`,{className:`text-base font-semibold flex items-center gap-2`,children:[(0,L.jsx)(n,{className:`h-4 w-4 text-primary`}),e(`setup:screen.start.chooseModel`)]}),(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`setup:screen.start.modelsFor`,{provider:G})}),_e?(0,L.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,L.jsx)(t,{className:`h-6 w-6 animate-spin text-muted-foreground`})}):Ce.length>0?(0,L.jsx)(`div`,{className:`grid grid-cols-1 gap-2`,children:$.pageItems.map(e=>{let t=e.contextWindow?`${(e.contextWindow/1e6).toFixed(0)}M ctx`:null;return(0,L.jsx)(`button`,{type:`button`,onClick:()=>J(e.id),className:w(`w-full text-left rounded-xl border p-3 transition-all`,`hover:border-primary/40 hover:bg-primary/5`,q===e.id?`border-primary bg-primary/10 ring-1 ring-primary/30`:`border-border bg-card`),children:(0,L.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,L.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,L.jsx)(`span`,{className:`font-medium text-sm`,children:e.name}),(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 mt-1`,children:[t&&(0,L.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded bg-muted text-muted-foreground`,children:t}),e.capabilities.slice(0,3).map(e=>(0,L.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded bg-primary/10 text-primary border border-primary/20`,children:e},e))]})]}),q===e.id&&(0,L.jsx)(`div`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-primary`,children:(0,L.jsx)(o,{className:`h-3 w-3 text-primary-foreground`})})]})},e.id)})}):(0,L.jsx)(`p`,{className:`text-sm text-muted-foreground py-8 text-center`,children:e(`setup:screen.errors.noModels`)}),(0,L.jsx)(F,{page:$.page,pageSize:$.pageSize,totalItems:$.totalItems,onPageChange:$.setPage,itemLabel:`models`})]}),G&&q&&(0,L.jsxs)(`div`,{className:`sticky bottom-0 -mx-4 border-t bg-background/80 px-4 py-4 backdrop-blur-sm sm:-mx-6 sm:px-6`,children:[(0,L.jsx)(`div`,{className:`mb-3 flex min-w-0 items-center justify-between gap-2 text-sm text-muted-foreground`,children:(0,L.jsxs)(`span`,{className:`min-w-0 truncate`,children:[G,` / `,q]})}),(0,L.jsxs)(k,{onClick:we,className:`w-full`,size:`lg`,children:[(0,L.jsx)(r,{className:`h-4 w-4 mr-2`}),e(`setup:screen.start.startSession`),(0,L.jsx)(s,{className:`h-4 w-4 ml-2`})]})]})]})})]})}export{ce as SetupScreen};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-DffL_bim.js","assets/rolldown-runtime-QTnfLwEv.js","assets/monaco-C7izDJhg.js","assets/monaco-Br_kD0ds.css","assets/markdown-L6DLSM7f.js","assets/vendor-BMdWcCR4.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{Bi as t,Bn as n,Ci as r,Ct as i,Fi as ee,Ft as te,Jr as ne,Or as re,Si as a,Sr as ie,Ti as ae,_n as oe,ei as se,fn as ce,ia as o,oa as s,ot as c,rn as le,ta as l,tt as u,ur as ue}from"./vendor-DffL_bim.js";import"./i18n-Dk35g-uV.js";import{n as d}from"./ui-store-CwOvhFZG.js";import{s as f}from"./monaco-C7izDJhg.js";import{t as de}from"./useWebSocket-BJorYmOi.js";import{t as p}from"./utils-DEzFewqr.js";import{s as fe}from"./view-navigation-BjlXpDXc.js";import{a as pe,n as me,o as he,t as ge}from"./dialog-CBgO-uqz.js";import{d as _e}from"./markdown-L6DLSM7f.js";import{s as ve,t as ye}from"./LazyMarkdown-BHoUIDge.js";import{v as be}from"./index-OmSX-BAb.js";var m=e(s(),1),h=u(),xe=(0,m.lazy)(()=>f(()=>import(`./vendor-DffL_bim.js`).then(e=>e.S),__vite__mapDeps([0,1,2,3,4,5])));function g(e){return e===`project`||e===`user`}function Se(e){let t=e.match(/^(.+?)\/SKILL(?:\.save)?\.md$/);return t?t[1]:null}function Ce({source:e}){let{t}=l(),n=e===`project`?`project`:e===`user`?`user`:`bundled`;return(0,h.jsx)(`span`,{className:p(`inline-flex items-center rounded-md border px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide`,n===`project`&&`border-success/25 bg-success/8 text-success`,n===`user`&&`border-primary/25 bg-primary/10 text-primary`,n===`bundled`&&`border-border/70 bg-muted/60 text-muted-foreground`),children:t(`activity:skillDetail.${{project:`scopeProject`,user:`scopeGlobal`,bundled:`scopeBundled`}[n]}`)})}function _({className:e}){let{t:s}=l(),{client:u}=de(),f=d(e=>e.skillsState),_=d(e=>e.setSkillsState),v=f.selectedSkill,y=f.navHistory,b=f.historyIndex,[x,S]=(0,m.useState)(null),[we,C]=(0,m.useState)(!1),[w,T]=(0,m.useState)(null),Te=be(`skill-detail`,!!x),[E,D]=(0,m.useState)(!1),[O,k]=(0,m.useState)(``),[A,j]=(0,m.useState)(!1),[M,N]=(0,m.useState)(null),[P,F]=(0,m.useState)(!1),[I,L]=(0,m.useState)(null),[R,z]=(0,m.useState)(!1),B=(0,m.useRef)(``),[V,Ee]=(0,m.useState)(!1),[H,U]=(0,m.useState)(null),[De,Oe]=(0,m.useState)(!1),[W,G]=(0,m.useState)(null),[K,ke]=(0,m.useState)(!1),[Ae,je]=(0,m.useState)([]),q=(0,m.useRef)(f);q.current=f;let J=(0,m.useRef)(!1),Y=(0,m.useMemo)(()=>O?{lines:O.split(`
|
|
3
|
-
`).length,words:O.trim()?O.trim().split(/\s+/).length:0,chars:O.length}:{lines:0,words:0,chars:0},[O]),X=(0,m.useMemo)(()=>{if(!O)return null;let e=5*1024*1024,t=new Blob([O]).size;return t>=e?{level:`critical`,used:t,limit:e}:t>=4194304?{level:`warn`,used:t,limit:e}:null},[O]);(0,m.useEffect)(()=>{if(!I)return;let e=setTimeout(()=>L(null),2e3);return()=>clearTimeout(e)},[I]),(0,m.useEffect)(()=>{if(!E||!v)return;let e=setInterval(()=>{O&&O!==B.current&&(B.current=O,localStorage.setItem(`skills_draft_${v.name}`,JSON.stringify({content:O,savedAt:Date.now()})),L(Date.now()))},5e3);return()=>clearInterval(e)},[E,O,v]),(0,m.useEffect)(()=>{if(!v||!E)return;let e=localStorage.getItem(`skills_draft_${v.name}`);if(e)try{let{content:t}=JSON.parse(e);t&&t!==O&&t!==B.current&&(k(t),B.current=t,z(!0))}catch{}},[v?.name,E]),(0,m.useEffect)(()=>{if(!u||!v)return;C(!0),S(null),T(null);let e=setTimeout(()=>{C(!1),T(o.t(`activity:skillDetail.timeoutError`))},1e4),t=t=>{clearTimeout(e);let n=t;n.payload.error?T(n.payload.error):n.payload.name&&S(n.payload),C(!1)},n=e=>{let t=e;Ee(!1);let n=q.current;if(t.payload.success){let e={...n.knownRefs};for(let n of t.payload.updated??[])e[n.name]=n.newRef;_({...n,knownRefs:e,updateAvailableCount:0}),U({updated:t.payload.updated??[],unchanged:t.payload.unchanged??[],errors:t.payload.errors??[]}),u.send({type:`skills.list`},{echoToChat:!1})}else U({updated:[],unchanged:[],errors:[{name:``,error:t.payload.error??o.t(`activity:skillDetail.updateFailed`)}]})},r=e=>{let t=e;t.payload.skills&&je(t.payload.skills)};return u.on(`skills.content`,t),u.on(`skills.updated`,n),u.on(`skills.list`,r),u.send({type:`skills.content`,payload:{name:v.name,source:v.source}}),()=>{clearTimeout(e),u.off(`skills.content`,t),u.off(`skills.updated`,n),u.off(`skills.list`,r)}},[u,v?.name,v?.source]),(0,m.useEffect)(()=>{E&&(D(!1),k(``),N(null))},[v?.name]);let Z=(0,m.useCallback)(e=>Ae.find(t=>t.name.toLowerCase()===e.toLowerCase()),[Ae]),Q=(0,m.useCallback)(e=>{let t=Z(e);if(t){J.current=!1;let e=y.slice(0,b+1);e.push(t),_({...q.current,selectedSkill:t,navHistory:e,historyIndex:e.length-1}),D(!1),k(``),U(null)}},[Z,y,b,_]),Me=(0,m.useCallback)(()=>{if(b<=0)return;J.current=!0;let e=b-1,t=y[e];_({...q.current,selectedSkill:t,historyIndex:e}),D(!1),k(``),U(null)},[b,y,_]),Ne=(0,m.useCallback)(()=>{if(b>=y.length-1)return;J.current=!0;let e=b+1,t=y[e];_({...q.current,selectedSkill:t,historyIndex:e}),D(!1),k(``),U(null)},[b,y,_]),$=(0,m.useCallback)(()=>{fe(`chat`)},[]),Pe=(0,m.useCallback)(()=>{x&&(k(x.body),B.current=x.body,z(!1),N(null),D(!0),F(!1))},[x]),Fe=(0,m.useCallback)(()=>{D(!1),k(``),N(null),F(!1),z(!1),v&&localStorage.removeItem(`skills_draft_${v.name}`)},[v]),Ie=(0,m.useCallback)(()=>{!v||!x||(z(!1),k(x.body),B.current=x.body,v&&localStorage.removeItem(`skills_draft_${v.name}`))},[v,x]),Le=(0,m.useCallback)(()=>{if(!u||!v||!O.trim())return;j(!0),N(null);let e=t=>{let n=t;j(!1),n.payload.success?(B.current=``,localStorage.removeItem(`skills_draft_${v.name}`),z(!1),D(!1),u.send({type:`skills.content`,payload:{name:v.name,source:v.source}}),u.send({type:`skills.list`},{echoToChat:!1})):N(n.payload.error??o.t(`activity:skillDetail.saveFailed`)),u.off(`skills.edited`,e)};u.on(`skills.edited`,e),u.editSkill(v.name,O)},[u,v,O]),Re=(0,m.useCallback)(()=>{!u||!v||(Ee(!0),U(null),u.checkForUpdates(v.name,v.source===`user`))},[u,v]),ze=(0,m.useCallback)(()=>{v?.sourceUrl&&navigator.clipboard.writeText(v.sourceUrl).then(()=>{Oe(!0),setTimeout(()=>Oe(!1),2e3)})},[v]),Be=(0,m.useCallback)(()=>{if(!x?.body)return;let e=new Blob([x.body],{type:`text/markdown`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`${x.name.replace(/\//g,`_`)}-SKILL.md`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)},[x]),Ve=(0,m.useCallback)(async e=>{if(!u||!e)return;ke(!0);let t=e=>{let n=e;ke(!1),n.payload.success?(G(null),u.send({type:`skills.list`},{echoToChat:!1}),$()):N(n.payload.error??o.t(`activity:skillDetail.uninstallFailed`)),u.off(`skills.uninstalled`,t)};u.on(`skills.uninstalled`,t),u.uninstallSkill(e.name,e.source===`user`)},[u,$]);return v?(0,h.jsxs)(`div`,{className:p(`flex h-full min-h-0 min-w-0 flex-col gap-3 overflow-hidden bg-[hsl(var(--surface-2)/0.45)] p-3`,e),children:[(0,h.jsxs)(`div`,{className:`shrink-0 rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,h.jsxs)(`div`,{className:`flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between`,children:[(0,h.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,h.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,h.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,h.jsx)(te,{className:`h-4 w-4`})}),(0,h.jsx)(`h1`,{className:`min-w-0 truncate text-base font-semibold`,children:v.name}),v.version&&(0,h.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`v`,v.version]}),(0,h.jsx)(Ce,{source:v.source})]}),(0,h.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1 line-clamp-2`,children:v.description||v.trigger}),v.sourceUrl&&(0,h.jsxs)(`div`,{className:`mt-2 flex min-w-0 items-center gap-1`,children:[(0,h.jsxs)(`a`,{href:`https://${v.sourceUrl.replace(`github:`,``)}`,target:`_blank`,rel:`noopener noreferrer`,className:`flex min-w-0 items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground`,title:s(`activity:skillDetail.openSourceRepo`),children:[(0,h.jsx)(ue,{className:`h-3 w-3 shrink-0`}),(0,h.jsx)(`span`,{className:`truncate font-mono`,children:v.sourceUrl})]}),(0,h.jsx)(`button`,{type:`button`,onClick:ze,className:`flex shrink-0 items-center text-muted-foreground transition-colors hover:text-foreground`,title:s(`activity:skillDetail.copySourceUrl`),children:De?(0,h.jsx)(ae,{className:`h-3 w-3 text-success`}):(0,h.jsx)(se,{className:`h-3 w-3`})})]}),v.scope.length>0&&(0,h.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-2`,children:v.scope.map(e=>(0,h.jsx)(`span`,{className:`px-1.5 py-0.5 text-[10px] rounded bg-muted text-muted-foreground`,children:e},e))}),H&&(0,h.jsxs)(`div`,{className:`mt-2 text-xs space-y-1`,children:[H.updated.length>0&&(0,h.jsx)(`div`,{className:`text-success`,children:s(`activity:skillDetail.updatedLabel`,{list:H.updated.map(e=>`${e.name} (${e.oldRef} → ${e.newRef})`).join(`, `)})}),H.unchanged.length>0&&(0,h.jsx)(`div`,{className:`text-muted-foreground`,children:s(`activity:skillDetail.upToDateLabel`,{list:H.unchanged.join(`, `)})}),H.errors.length>0&&(0,h.jsx)(`div`,{className:`text-destructive`,children:s(`activity:skillDetail.errorsLabel`,{list:H.errors.map(e=>`${e.name?`${e.name}: `:``}${e.error}`).join(`; `)})})]})]}),(0,h.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1 lg:ml-auto lg:shrink-0 lg:justify-end`,children:[g(v.source)&&v.sourceUrl&&(0,h.jsx)(`button`,{type:`button`,onClick:Re,disabled:V,className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:opacity-50`,title:s(`activity:skillDetail.checkUpdatesTitle`),children:V?(0,h.jsx)(n,{className:`h-3.5 w-3.5 animate-spin`}):(0,h.jsx)(le,{className:`h-3.5 w-3.5`})}),v.source!==`bundled`&&!E&&(0,h.jsx)(`button`,{type:`button`,onClick:Be,className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,title:s(`activity:skillDetail.exportTitle`),children:(0,h.jsx)(ne,{className:`h-3.5 w-3.5`})}),g(v.source)&&!E&&(0,h.jsx)(`button`,{type:`button`,onClick:Pe,className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,title:s(`activity:skillDetail.editTitle`),children:(0,h.jsx)(ce,{className:`h-3.5 w-3.5`})}),g(v.source)&&(0,h.jsx)(`button`,{type:`button`,onClick:()=>G(v),className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive`,title:s(`activity:skillDetail.uninstallTitle`),children:(0,h.jsx)(i,{className:`h-3.5 w-3.5`})}),(0,h.jsx)(`button`,{type:`button`,onClick:$,className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground`,title:s(`activity:skillDetail.closeTitle`),children:(0,h.jsx)(c,{className:`h-4 w-4`})})]})]}),y.length>1&&(0,h.jsxs)(`div`,{className:`mt-3 flex min-w-0 items-center gap-1 rounded-lg border border-border/60 bg-muted/35 px-2 py-1`,children:[(0,h.jsx)(`button`,{type:`button`,onClick:Me,disabled:b<=0,className:p(`rounded p-1 transition-colors`,b<=0?`text-muted-foreground/65 cursor-not-allowed`:`hover:bg-accent text-muted-foreground cursor-pointer`),title:s(`activity:skillDetail.backTitle`),children:(0,h.jsx)(r,{className:`h-4 w-4`})}),(0,h.jsx)(`button`,{type:`button`,onClick:Ne,disabled:b>=y.length-1,className:p(`rounded p-1 transition-colors`,b>=y.length-1?`text-muted-foreground/65 cursor-not-allowed`:`hover:bg-accent text-muted-foreground cursor-pointer`),title:s(`activity:skillDetail.forwardTitle`),children:(0,h.jsx)(a,{className:`h-4 w-4`})}),(0,h.jsx)(`div`,{className:`flex items-center gap-0.5 overflow-x-auto text-xs`,children:y.map((e,t)=>(0,h.jsxs)(`span`,{className:`flex items-center shrink-0`,children:[t>0&&(0,h.jsx)(a,{className:`h-3 w-3 text-muted-foreground/65 mx-0.5 shrink-0`}),(0,h.jsx)(`button`,{type:`button`,onClick:()=>{t<b&&(J.current=!0,_({...q.current,selectedSkill:e,historyIndex:t}),D(!1),k(``),U(null))},className:p(`hover:text-primary cursor-pointer transition-colors`,t===b?`text-primary font-medium`:`text-muted-foreground`),children:e.name})]},e.name+t))})]})]}),x&&(x.relatedFiles.length>0||x.references.length>0)&&(0,h.jsxs)(`div`,{className:`shrink-0 space-y-2 rounded-xl border border-border/70 bg-card/70 px-4 py-3 shadow-sm`,children:[x.relatedFiles.length>0&&(0,h.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-1 text-[10px] text-muted-foreground`,children:[(0,h.jsx)(ie,{className:`h-3 w-3`}),(0,h.jsx)(`span`,{className:`font-medium uppercase tracking-wide`,children:s(`activity:skillDetail.relatedFiles`)})]}),x.relatedFiles.map(e=>{let n=Se(e);return n&&Z(n)?(0,h.jsxs)(`button`,{type:`button`,onClick:()=>Q(n),className:`inline-flex min-w-0 items-center gap-1 rounded-md border border-border/70 bg-background/60 px-1.5 py-0.5 text-[10px] transition-colors hover:border-primary/40 hover:text-primary`,title:s(`activity:skillDetail.goToSkillTitle`,{name:n}),children:[(0,h.jsx)(t,{className:`h-2.5 w-2.5`}),e]},e):(0,h.jsx)(`span`,{className:`rounded-md border border-border/70 bg-background/60 px-1.5 py-0.5 text-[10px] text-muted-foreground`,children:e},e)})]}),x.references.length>0&&(0,h.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-1 text-[10px] text-muted-foreground`,children:[(0,h.jsx)(re,{className:`h-3 w-3`}),(0,h.jsx)(`span`,{className:`font-medium uppercase tracking-wide`,children:s(`activity:skillDetail.references`)})]}),x.references.map(e=>{let n=Se(e)??e.replace(/\.md$/,``);return Z(n)?(0,h.jsxs)(`button`,{type:`button`,onClick:()=>Q(n),className:`inline-flex min-w-0 items-center gap-1 rounded-md border border-primary/20 bg-primary/5 px-1.5 py-0.5 text-[10px] text-primary transition-colors hover:border-primary/30 hover:bg-primary/10`,title:s(`activity:skillDetail.goToSkillTitle`,{name:n}),children:[(0,h.jsx)(t,{className:`h-2.5 w-2.5`}),n]},e):(0,h.jsx)(`span`,{className:`rounded-md bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground`,children:n},e)})]})]}),(0,h.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-hidden rounded-xl border border-border/70 bg-card/70 shadow-sm`,children:we?(0,h.jsxs)(`div`,{className:`flex h-full min-h-[16rem] flex-col items-center justify-center p-8 text-center text-muted-foreground`,children:[(0,h.jsx)(n,{className:`mx-auto mb-2 h-6 w-6 animate-spin text-primary`}),(0,h.jsx)(`p`,{children:s(`activity:skillDetail.loadingContent`)})]}):E?(0,h.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col`,children:[(0,h.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2 border-b border-border/70 bg-muted/30 px-4 py-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,h.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,h.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:s(`activity:skillDetail.editingLabel`,{name:v.name})}),(0,h.jsx)(`span`,{className:`text-xs text-muted-foreground tabular-nums`,children:s(`activity:skillDetail.editStats`,{lines:Y.lines,words:Y.words,chars:Y.chars})}),X&&(0,h.jsx)(`span`,{className:`text-xs tabular-nums ${X.level===`critical`?`font-medium text-destructive`:`text-warning`}`,children:s(`activity:skillDetail.charsWarningFmt`,{used:(X.used/(1024*1024)).toFixed(1),limit:(X.limit/(1024*1024)).toFixed(0)})}),I&&(0,h.jsx)(`span`,{className:`text-xs text-success animate-pulse`,children:s(`activity:skillDetail.draftSaved`)}),R&&(0,h.jsx)(`span`,{className:`animate-pulse text-xs text-warning`,children:s(`activity:skillDetail.draftRestored`)})]}),(0,h.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[M&&(0,h.jsx)(`span`,{className:`text-xs text-destructive`,children:M}),R&&(0,h.jsx)(`button`,{type:`button`,onClick:Ie,className:`rounded-md border border-warning/35 px-2 py-1 text-[10px] text-warning transition-colors hover:bg-warning/10`,children:s(`activity:skillDetail.discardDraft`)}),(0,h.jsx)(`button`,{type:`button`,onClick:Fe,className:`rounded-md border border-border/70 px-2 py-1 text-xs transition-colors hover:bg-accent`,children:s(`common:action.cancel`)}),(0,h.jsx)(`button`,{type:`button`,onClick:()=>F(e=>!e),title:s(P?`activity:skillDetail.hidePreviewTitle`:`activity:skillDetail.splitViewTitle`),className:`rounded-md border px-2 py-1 text-xs transition-colors ${P?`border-primary/40 bg-primary/10 text-primary`:`border-border/70 text-muted-foreground hover:bg-accent`}`,children:(0,h.jsx)(oe,{className:`h-3 w-3 inline`})}),(0,h.jsx)(`button`,{type:`button`,onClick:Le,disabled:A||!O.trim(),className:`rounded-md bg-primary px-3 py-1 text-xs text-primary-foreground shadow-sm shadow-primary/15 transition-colors hover:bg-primary/90 disabled:opacity-50`,children:A?(0,h.jsx)(n,{className:`h-3 w-3 animate-spin inline`}):s(`common:action.save`)})]})]}),P?(0,h.jsxs)(`div`,{className:`flex flex-1 min-h-0 gap-0.5`,children:[(0,h.jsx)(`div`,{className:`flex-1 min-w-0 flex flex-col min-h-0`,children:(0,h.jsx)(m.Suspense,{fallback:null,children:(0,h.jsx)(xe,{value:O,onChange:e=>k(e.target.value??``),language:`markdown`,className:`flex-1`,style:{fontSize:12,backgroundColor:`transparent`,minHeight:0},placeholder:s(`activity:skillDetail.contentPlaceholder`)})})}),(0,h.jsx)(`div`,{className:`w-px bg-border flex-shrink-0`}),(0,h.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto overscroll-contain bg-background/45 p-4 prose prose-sm dark:prose-invert max-w-none`,children:(0,h.jsx)(ye,{rehypePlugins:[_e],components:ve,children:O})})]}):(0,h.jsx)(m.Suspense,{fallback:null,children:(0,h.jsx)(xe,{value:O,onChange:e=>k(e.target.value??``),language:`markdown`,className:`flex-1`,style:{fontSize:12,backgroundColor:`transparent`,minHeight:0},placeholder:s(`activity:skillDetail.contentPlaceholder`)})})]}):x?(0,h.jsx)(`div`,{ref:Te,className:`h-full min-h-0 overflow-y-auto overscroll-contain p-5 sm:p-6 prose prose-sm dark:prose-invert max-w-none`,children:(0,h.jsx)(ye,{rehypePlugins:[_e],components:ve,children:x.body})}):w?(0,h.jsxs)(`div`,{className:`flex h-full min-h-[16rem] flex-col items-center justify-center p-8 text-center`,children:[(0,h.jsx)(`p`,{className:`text-destructive mb-2`,children:s(`activity:skillDetail.loadFailed`)}),(0,h.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:w}),(0,h.jsx)(`button`,{type:`button`,onClick:()=>{u&&v&&(C(!0),T(null),u.send({type:`skills.content`,payload:{name:v.name,source:v.source}}))},className:`mt-4 rounded-md border border-border/70 px-3 py-1.5 text-xs transition-colors hover:bg-accent`,children:s(`common:action.retry`)})]}):(0,h.jsx)(`div`,{className:`flex h-full min-h-[16rem] items-center justify-center p-8 text-center text-muted-foreground`,children:s(`activity:skillDetail.noContent`)})}),(0,h.jsx)(ge,{open:!!W,onOpenChange:e=>{e||G(null)},children:(0,h.jsxs)(me,{className:`flex max-h-[calc(100dvh-2rem)] w-[380px] max-w-[90vw] flex-col gap-0 overflow-hidden p-0`,showCloseButton:!1,children:[(0,h.jsxs)(pe,{className:`flex shrink-0 items-center justify-between border-b border-border/70 p-4 sm:flex-row sm:justify-between sm:space-y-0`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,h.jsx)(i,{className:`h-4 w-4 text-destructive`}),(0,h.jsx)(he,{className:`font-semibold text-sm`,children:s(`activity:skillDetail.uninstallSkillHeading`)})]}),(0,h.jsx)(`button`,{type:`button`,onClick:()=>G(null),"aria-label":s(`common:action.close`),className:`rounded p-1 text-muted-foreground hover:bg-accent hover:text-accent-foreground`,children:(0,h.jsx)(c,{className:`h-4 w-4`})})]}),(0,h.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-2 overflow-y-auto overscroll-contain p-4`,children:[(0,h.jsx)(`p`,{className:`text-sm`,children:W&&s(`activity:skillDetail.uninstallConfirm`,{name:W.name})}),(0,h.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:W&&s(`activity:skillDetail.uninstallRemovePath`,{path:W.source===`user`?`~/.wrongstack/skills`:`.wrongstack/skills`})})]}),(0,h.jsxs)(`div`,{className:`flex shrink-0 justify-end gap-2 border-t border-border/70 bg-muted/20 p-4`,children:[(0,h.jsx)(`button`,{type:`button`,onClick:()=>G(null),disabled:K,className:`rounded-md border border-border/70 px-3 py-1.5 text-xs transition-colors hover:bg-accent disabled:opacity-50`,children:s(`common:action.cancel`)}),(0,h.jsxs)(`button`,{type:`button`,onClick:()=>W&&Ve(W),disabled:K,className:`flex items-center gap-1.5 rounded-md bg-destructive px-3 py-1.5 text-xs text-destructive-foreground transition-colors hover:bg-destructive/90 disabled:cursor-not-allowed disabled:opacity-50`,children:[K&&(0,h.jsx)(n,{className:`h-3 w-3 animate-spin`}),s(`activity:skillDetail.uninstallAction`)]})]})]})})]}):(0,h.jsx)(`div`,{className:p(`flex h-full min-h-0 flex-1 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4 text-muted-foreground`,e),children:(0,h.jsxs)(`div`,{className:`ws-surface flex max-w-md flex-col items-center gap-3 rounded-xl p-6 text-center`,children:[(0,h.jsx)(`span`,{className:`flex h-12 w-12 items-center justify-center rounded-xl bg-primary/10 text-primary`,children:(0,h.jsx)(ee,{className:`h-6 w-6`})}),(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`p`,{className:`text-base font-medium text-foreground`,children:s(`activity:skillDetail.noSkillSelected`)}),(0,h.jsx)(`p`,{className:`mt-1 text-sm`,children:s(`activity:skillDetail.selectSkillHint`)})]}),(0,h.jsx)(`button`,{type:`button`,onClick:$,className:`mt-1 rounded-md border border-border/70 bg-card/70 px-4 py-2 text-sm text-foreground shadow-sm transition-colors hover:bg-accent`,children:s(`activity:skillDetail.goToChat`)})]})})}export{_ as SkillDetailView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{Bn as t,Ft as n,Gi as r,Jr as i,Mi as a,N as o,Ur as s,_r as c,oa as l,ot as u,qt as d,rn as f,tt as p}from"./vendor-DffL_bim.js";import{t as m}from"./utils-DEzFewqr.js";import{n as h}from"./stores-CUp_ut8r.js";import{t as g}from"./button-Dy0bAtEY.js";import{t as _}from"./input-B6FY_vtB.js";import{d as v,u as y}from"./index-OmSX-BAb.js";var b=e(l(),1),x=p(),S={current:{label:`Current`,badge:`border-success/35 bg-success/10 text-success`,dot:`bg-success`,weight:0},update_available_safe:{label:`Update available`,badge:`border-info/35 bg-info/10 text-info`,dot:`bg-info`,weight:30},update_available_breaking:{label:`Major update`,badge:`border-warning/35 bg-warning/10 text-warning`,dot:`bg-warning`,weight:50},vulnerable:{label:`Vulnerable`,badge:`border-destructive/45 bg-destructive/15 text-destructive`,dot:`bg-destructive`,weight:100},deprecated:{label:`Deprecated`,badge:`border-destructive/35 bg-destructive/10 text-destructive`,dot:`bg-destructive`,weight:70},yanked:{label:`Yanked`,badge:`border-destructive/45 bg-destructive/15 text-destructive`,dot:`bg-destructive`,weight:80},unmaintained_suspected:{label:`Unmaintained?`,badge:`border-warning/35 bg-warning/10 text-warning`,dot:`bg-warning`,weight:60},blocked_by_constraints:{label:`Blocked`,badge:`border-warning/30 bg-warning/5 text-warning`,dot:`bg-warning`,weight:40},private_or_unresolved:{label:`Private`,badge:`border-border/70 bg-muted text-muted-foreground`,dot:`bg-muted-foreground`,weight:10},local_path:{label:`Local path`,badge:`border-border/70 bg-muted text-muted-foreground`,dot:`bg-muted-foreground`,weight:5},git_dependency:{label:`Git`,badge:`border-border/70 bg-muted text-muted-foreground`,dot:`bg-muted-foreground`,weight:5},unsupported:{label:`Unsupported`,badge:`border-border/70 bg-muted text-muted-foreground`,dot:`bg-muted-foreground`,weight:5},unknown:{label:`Unknown`,badge:`border-border/70 bg-muted text-muted-foreground`,dot:`bg-muted-foreground`,weight:20}},C={label:`Unknown`,badge:`border-border/70 bg-muted text-muted-foreground`,dot:`bg-muted-foreground`,weight:0};function w(e){return S[e]??C}function ee(e){return w(e.status).weight>=50}var T=[`critical`,`high`,`medium`,`low`,`info`],E={critical:{label:`Critical`,badge:`border-destructive/45 bg-destructive/15 text-destructive`},high:{label:`High`,badge:`border-destructive/35 bg-destructive/10 text-destructive`},medium:{label:`Medium`,badge:`border-warning/35 bg-warning/10 text-warning`},low:{label:`Low`,badge:`border-info/35 bg-info/10 text-info`},info:{label:`Info`,badge:`border-border/70 bg-muted text-muted-foreground`}},D={none:`No action`,upgrade_patch:`Patch upgrade`,upgrade_minor:`Minor upgrade`,upgrade_major:`Major upgrade`,replace:`Replace`,remove:`Remove`,investigate:`Investigate`},O={full:{label:`Full`,badge:`border-success/35 bg-success/10 text-success`},partial:{label:`Partial`,badge:`border-warning/35 bg-warning/10 text-warning`},unsupported:{label:`Unsupported`,badge:`border-border/70 bg-muted text-muted-foreground`}};function k(e){if(!e)return null;let t=/^\D*(\d+)/.exec(e);if(!t?.[1])return null;let n=Number(t[1]);return Number.isFinite(n)?n:null}function A(e){let t=k(e.locked??e.installed??e.requested),n=k(e.latestStable);if(t===null||n===null||n<=t)return{majorsBehind:0,label:null};let r=n-t;return{majorsBehind:r,label:`${r} major${r===1?``:`s`} behind`}}function j(e){return e.locked??e.installed??e.requested??null}function M(e){return e.confidence<1}function N({className:e,children:t}){return(0,x.jsx)(`span`,{className:m(`inline-flex shrink-0 items-center gap-1 border px-1.5 py-0.5 text-[10px] font-medium`,e),children:t})}function P({label:e,value:t,hint:n,tone:r=`default`}){let i={default:`text-foreground`,success:`text-success`,warning:`text-warning`,info:`text-info`,destructive:`text-destructive`}[r];return(0,x.jsxs)(`div`,{className:`border border-border/70 bg-card/55 px-3 py-2.5 shadow-[inset_0_1px_0_hsl(var(--foreground)/0.035)]`,children:[(0,x.jsx)(`p`,{className:`text-[9px] font-bold uppercase tracking-[0.16em] text-muted-foreground`,children:e}),(0,x.jsxs)(`div`,{className:`mt-1 flex items-end justify-between gap-2`,children:[(0,x.jsx)(`p`,{className:m(`font-mono text-xl font-bold tabular-nums`,i),children:t}),(0,x.jsx)(`p`,{className:`truncate text-[9px] text-muted-foreground`,children:n})]})]})}function te({dependency:e,findings:i,deepDive:a,onDeepDive:o,onBack:c}){let l=w(e.status),u=j(e),d=A(e);return(0,x.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,x.jsxs)(`header`,{className:`shrink-0 border-b border-border/70 bg-card/45 p-3`,children:[(0,x.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,x.jsx)(g,{variant:`ghost`,size:`icon`,onClick:c,"aria-label":`Back to dependency list`,className:`shrink-0 md:hidden`,children:(0,x.jsx)(r,{className:`size-4`})}),(0,x.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,x.jsx)(`h2`,{className:`min-w-0 truncate font-mono text-sm font-bold text-foreground`,children:e.name}),(0,x.jsx)(N,{className:l.badge,children:l.label})]}),(0,x.jsxs)(`p`,{className:`mt-0.5 truncate text-[10px] text-muted-foreground`,children:[e.ecosystem,` · `,e.direct?`direct`:`transitive`,` ·`,` `,e.scope,` · `,e.sourceType]})]})]}),(0,x.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-baseline gap-2 font-mono text-xs`,children:[(0,x.jsx)(`span`,{className:`text-foreground`,children:u??`—`}),e.latestStable&&e.latestStable!==u&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`span`,{className:`text-muted-foreground`,children:`→`}),(0,x.jsx)(`span`,{className:`text-info`,children:e.latestStable})]}),d.label&&(0,x.jsxs)(`span`,{className:`text-[10px] text-warning`,children:[`(`,d.label,`)`]})]})]}),(0,x.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto p-3`,children:[(0,x.jsxs)(`dl`,{className:`grid grid-cols-2 gap-px border border-border/70 bg-border/60`,children:[(0,x.jsx)(F,{label:`Constraint`,value:e.requested??`—`,mono:!0}),(0,x.jsx)(F,{label:`Locked`,value:e.locked??`—`,mono:!0}),(0,x.jsx)(F,{label:`Latest stable`,value:e.latestStable??`—`,mono:!0}),(0,x.jsx)(F,{label:`License`,value:e.license??`—`}),e.wanted&&(0,x.jsx)(F,{label:`Wanted`,value:e.wanted,mono:!0}),e.resolvable&&(0,x.jsx)(F,{label:`Resolvable`,value:e.resolvable,mono:!0}),e.purl&&(0,x.jsx)(F,{label:`PURL`,value:e.purl,mono:!0}),(0,x.jsx)(F,{label:`Registry flags`,value:[e.deprecated&&`deprecated`,e.yanked&&`yanked`].filter(Boolean).join(`, `)||`none`})]}),(0,x.jsxs)(`section`,{className:`mt-4`,children:[(0,x.jsxs)(`div`,{className:`mb-1.5 flex flex-wrap items-center justify-between gap-2`,children:[(0,x.jsx)(`h3`,{className:`text-[9px] font-bold uppercase tracking-[0.16em] text-muted-foreground`,children:`Findings`}),(0,x.jsxs)(g,{variant:`outline`,size:`sm`,onClick:()=>o(e),disabled:a.status===`loading`,className:`h-7 text-[10px]`,children:[a.status===`loading`?(0,x.jsx)(t,{className:`size-3 animate-spin`}):(0,x.jsx)(n,{className:`size-3`}),a.status===`loading`?`Researching…`:`Deep dive`]})]}),a.status===`error`&&a.error&&(0,x.jsx)(`p`,{role:`alert`,className:`mb-1.5 text-[10px] text-destructive`,children:a.error}),i.length===0?(0,x.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Nothing flagged. Run a deep dive to have the model research this package against the web.`}):(0,x.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:i.map(e=>(0,x.jsxs)(`div`,{className:`border border-border/70 bg-card/40 p-2`,children:[(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,x.jsx)(N,{className:E[e.severity].badge,children:E[e.severity].label}),(0,x.jsx)(N,{className:`border-border/70 bg-muted text-muted-foreground`,children:D[e.action]??e.action}),M(e)&&(0,x.jsxs)(N,{className:`border-info/35 bg-info/10 text-info`,children:[(0,x.jsx)(n,{className:`size-2.5`}),`AI · `,Math.round(e.confidence*100),`%`]})]}),(0,x.jsx)(`p`,{className:`mt-1 text-[11px] leading-relaxed text-muted-foreground`,children:e.rationale}),e.breakingRisk&&(0,x.jsx)(`p`,{className:`mt-1 border-l-2 border-warning/40 pl-2 text-[10px] leading-relaxed text-warning`,children:e.breakingRisk})]},e.id))})]}),(0,x.jsxs)(`section`,{className:`mt-4`,children:[(0,x.jsx)(`h3`,{className:`mb-1.5 text-[9px] font-bold uppercase tracking-[0.16em] text-muted-foreground`,children:`Evidence`}),e.evidence.length===0?(0,x.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`No evidence recorded.`}):(0,x.jsx)(`ul`,{className:`flex flex-col gap-1`,children:e.evidence.map((t,n)=>(0,x.jsxs)(`li`,{className:`border border-border/70 bg-card/40 p-2`,children:[(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,x.jsx)(N,{className:`border-border/70 bg-muted text-muted-foreground`,children:t.kind}),(0,x.jsx)(`span`,{className:`font-mono text-[9px] text-muted-foreground`,children:new Date(t.retrievedAt).toLocaleString()})]}),t.source.startsWith(`http`)?(0,x.jsxs)(`a`,{href:t.source,target:`_blank`,rel:`noreferrer noopener`,className:`mt-1 flex min-w-0 items-center gap-1 truncate text-[10px] text-info underline-offset-2 hover:underline`,children:[(0,x.jsx)(`span`,{className:`truncate`,children:t.source}),(0,x.jsx)(s,{className:`size-2.5 shrink-0`})]}):(0,x.jsx)(`p`,{className:`mt-1 truncate font-mono text-[10px] text-muted-foreground`,children:t.source}),t.detail&&(0,x.jsx)(`p`,{className:`mt-0.5 text-[10px] leading-relaxed text-muted-foreground`,children:t.detail})]},`${e.id}-evidence-${n}`))})]})]})]})}function F({label:e,value:t,mono:n}){return(0,x.jsxs)(`div`,{className:`bg-card/55 px-2.5 py-1.5`,children:[(0,x.jsx)(`dt`,{className:`text-[9px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:e}),(0,x.jsx)(`dd`,{className:m(`mt-0.5 truncate text-[11px] text-foreground`,n&&`font-mono`),children:t})]})}var I=`grid grid-cols-[minmax(0,2.2fr)_minmax(0,1.6fr)_minmax(0,1.1fr)] gap-2`;function ne({dependencies:e,selectedId:t,hasDependencies:n,onSelect:r}){let i=v(e,30);return e.length===0?(0,x.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8 text-center`,children:(0,x.jsx)(`p`,{className:`max-w-xs text-xs text-muted-foreground`,children:n?`No dependencies match the current filters.`:`No dependencies inventoried yet. Run a scan to populate the inventory.`})}):(0,x.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,x.jsxs)(`div`,{className:m(I,`shrink-0 border-b border-border/70 bg-card/45 px-3 py-1.5 text-[9px] font-bold uppercase tracking-[0.14em] text-muted-foreground`),children:[(0,x.jsx)(`span`,{children:`Package`}),(0,x.jsx)(`span`,{children:`Installed → Latest`}),(0,x.jsx)(`span`,{children:`Status`})]}),(0,x.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,x.jsx)(o,{className:`h-full`,"aria-label":`Dependencies`,children:i.pageItems.map(e=>(0,x.jsx)(L,{dependency:e,selected:e.id===t,onSelect:r},e.id))})}),(0,x.jsx)(y,{page:i.page,pageSize:i.pageSize,totalItems:i.totalItems,onPageChange:i.setPage,itemLabel:`dependencies`})]})}function L({dependency:e,selected:t,onSelect:n}){let r=w(e.status),i=j(e),a=A(e);return(0,x.jsxs)(`button`,{type:`button`,onClick:()=>n(e),"aria-current":t,className:m(I,`w-full items-center border-b border-border/40 px-3 py-2 text-left transition-colors hover:bg-accent/40`,t&&`bg-accent/60`),children:[(0,x.jsxs)(`div`,{className:`min-w-0`,children:[(0,x.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,x.jsx)(`span`,{className:m(`size-1.5 shrink-0`,r.dot),"aria-hidden":`true`}),(0,x.jsx)(`span`,{className:`truncate font-mono text-xs text-foreground`,children:e.name})]}),(0,x.jsxs)(`p`,{className:`mt-0.5 truncate text-[10px] text-muted-foreground`,children:[e.ecosystem,` · `,e.direct?`direct`:`transitive`,` · `,e.scope]})]}),(0,x.jsxs)(`div`,{className:`min-w-0`,children:[(0,x.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-1.5 font-mono text-[11px]`,children:[(0,x.jsx)(`span`,{className:`truncate text-foreground`,children:i??`—`}),e.latestStable&&e.latestStable!==i&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:`→`}),(0,x.jsx)(`span`,{className:`truncate text-info`,children:e.latestStable})]})]}),a.label?(0,x.jsx)(`p`,{className:`mt-0.5 truncate text-[10px] text-warning`,children:a.label}):e.requested&&(0,x.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-[10px] text-muted-foreground`,children:e.requested})]}),(0,x.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-1`,children:[(0,x.jsx)(N,{className:r.badge,children:r.label}),e.deprecated&&(0,x.jsx)(N,{className:`border-destructive/35 bg-destructive/10 text-destructive`,children:`dep`}),e.yanked&&(0,x.jsx)(N,{className:`border-destructive/45 bg-destructive/15 text-destructive`,children:`yank`})]})]})}function re({findings:e,dependenciesById:t,onSelectDependency:n}){let r=v(e,20);return e.length===0?(0,x.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8 text-center`,children:(0,x.jsxs)(`p`,{className:`max-w-sm text-xs text-muted-foreground`,children:[`No findings. Run `,(0,x.jsx)(`span`,{className:`font-mono text-foreground`,children:`Analyze`}),` to check versions and advisories against upstream registries, then interpret the results.`]})}):(0,x.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,x.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-3`,children:(0,x.jsx)(`div`,{className:`flex flex-col gap-4`,children:T.map(e=>[e,r.pageItems.filter(t=>t.severity===e)]).filter(([,e])=>e.length>0).map(([e,r])=>(0,x.jsxs)(`section`,{children:[(0,x.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-2`,children:[(0,x.jsx)(N,{className:E[e].badge,children:E[e].label}),(0,x.jsx)(`span`,{className:`font-mono text-[10px] tabular-nums text-muted-foreground`,children:r.length})]}),(0,x.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:r.map(e=>(0,x.jsx)(R,{finding:e,dependency:t.get(e.dependencyId),onSelectDependency:n},e.id))})]},e))})}),(0,x.jsx)(y,{page:r.page,pageSize:r.pageSize,totalItems:r.totalItems,onPageChange:r.setPage,itemLabel:`findings`})]})}function R({finding:e,dependency:t,onSelectDependency:r}){let i=M(e);return(0,x.jsxs)(`div`,{className:`border border-border/70 bg-card/40 p-2.5`,children:[(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,x.jsx)(`button`,{type:`button`,onClick:()=>r(e.dependencyId),className:`min-w-0 truncate font-mono text-xs text-foreground underline-offset-2 hover:underline`,children:t?.name??e.dependencyId}),(0,x.jsx)(N,{className:`border-border/70 bg-muted text-muted-foreground`,children:D[e.action]??e.action}),i&&(0,x.jsxs)(N,{className:`border-info/35 bg-info/10 text-info`,children:[(0,x.jsx)(n,{className:`size-2.5`}),`AI · `,Math.round(e.confidence*100),`%`]})]}),(0,x.jsx)(`p`,{className:`mt-1.5 text-[11px] leading-relaxed text-muted-foreground`,children:e.rationale}),e.breakingRisk&&(0,x.jsx)(`p`,{className:`mt-1 border-l-2 border-warning/40 pl-2 text-[10px] leading-relaxed text-warning`,children:e.breakingRisk}),e.evidence.length>0&&(0,x.jsx)(`ul`,{className:m(`mt-1.5 flex flex-col gap-0.5`),children:e.evidence.slice(0,4).map((t,n)=>(0,x.jsx)(`li`,{className:`min-w-0 truncate text-[10px]`,children:t.source.startsWith(`http`)?(0,x.jsx)(`a`,{href:t.source,target:`_blank`,rel:`noreferrer noopener`,className:`text-info underline-offset-2 hover:underline`,children:t.detail??t.source}):(0,x.jsx)(`span`,{className:`text-muted-foreground`,children:t.detail??t.source})},`${e.id}-${n}`))})]})}function ie({searchQuery:e,ecosystemFilter:t,statusFilter:n,directOnly:r,sort:i,hasFilters:a,ecosystems:o,statuses:s,visibleCount:l,totalCount:f,onSearchChange:p,onEcosystemFilterChange:h,onStatusFilterChange:v,onToggleDirectOnly:y,onSortChange:b,onClearFilters:S}){return(0,x.jsxs)(`div`,{className:`shrink-0 space-y-2 border-b border-border/70 bg-card/45 p-3`,children:[(0,x.jsxs)(`div`,{className:`flex gap-2`,children:[(0,x.jsxs)(`div`,{className:`relative min-w-0 flex-1`,children:[(0,x.jsx)(d,{className:`pointer-events-none absolute left-3 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground`}),(0,x.jsx)(_,{"aria-label":`Search dependencies`,value:e,onChange:e=>p(e.target.value),placeholder:`Search by package name…`,className:`h-10 min-w-0 bg-background pl-9 pr-8 text-xs`}),e&&(0,x.jsx)(`button`,{type:`button`,"aria-label":`Clear search`,onClick:()=>p(``),className:`absolute right-2 top-1/2 -translate-y-1/2 p-1 text-muted-foreground hover:text-foreground`,children:(0,x.jsx)(u,{className:`size-3.5`})})]}),(0,x.jsx)(g,{variant:r?`default`:`outline`,size:`sm`,onClick:y,"aria-pressed":r,title:`Show only dependencies this project declares itself`,className:`shrink-0`,children:`Direct only`}),a&&(0,x.jsx)(g,{variant:`ghost`,size:`icon`,onClick:S,"aria-label":`Clear all filters`,title:`Clear all filters`,className:`shrink-0`,children:(0,x.jsx)(c,{className:`size-4`})})]}),(0,x.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-3`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`label`,{className:`sr-only`,htmlFor:`techstack-ecosystem-filter`,children:`Filter by ecosystem`}),(0,x.jsxs)(`select`,{id:`techstack-ecosystem-filter`,value:t,onChange:e=>h(e.target.value),className:`h-9 w-full min-w-0 border border-input bg-background px-2 text-xs`,children:[(0,x.jsx)(`option`,{value:`all`,children:`All ecosystems`}),o.map(([e,t])=>(0,x.jsxs)(`option`,{value:e,children:[e,` · `,t]},e))]})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`label`,{className:`sr-only`,htmlFor:`techstack-status-filter`,children:`Filter by status`}),(0,x.jsxs)(`select`,{id:`techstack-status-filter`,value:n,onChange:e=>v(e.target.value),className:`h-9 w-full min-w-0 border border-input bg-background px-2 text-xs`,children:[(0,x.jsx)(`option`,{value:`all`,children:`All statuses`}),s.map(([e,t])=>(0,x.jsxs)(`option`,{value:e,children:[w(e).label,` · `,t]},e))]})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`label`,{className:`sr-only`,htmlFor:`techstack-sort`,children:`Sort dependencies`}),(0,x.jsxs)(`select`,{id:`techstack-sort`,value:i,onChange:e=>b(e.target.value),className:`h-9 w-full min-w-0 border border-input bg-background px-2 text-xs`,children:[(0,x.jsx)(`option`,{value:`attention`,children:`Sort: needs attention`}),(0,x.jsx)(`option`,{value:`drift`,children:`Sort: most out of date`}),(0,x.jsx)(`option`,{value:`name`,children:`Sort: name`})]})]})]}),(0,x.jsx)(`p`,{className:m(`text-[10px] text-muted-foreground`,a&&`text-info`),children:l===f?`${f} dependencies`:`${l} of ${f} dependencies`})]})}var z=[{id:`dependencies`,label:`Dependencies`},{id:`findings`,label:`Findings`},{id:`workspaces`,label:`Workspaces`}];function B(){let e=h(e=>e.snapshot),r=h(e=>e.stale),a=h(e=>e.loading),o=h(e=>e.error),s=h(e=>e.activeJob),[c,l]=(0,b.useState)(`dependencies`),[d,p]=(0,b.useState)(``),[_,v]=(0,b.useState)(`all`),[y,S]=(0,b.useState)(`all`),[C,T]=(0,b.useState)(!1),[E,D]=(0,b.useState)(`attention`),[O,k]=(0,b.useState)(null),[j,M]=(0,b.useState)([]),[N,F]=(0,b.useState)({status:`idle`,error:null}),I=(0,b.useCallback)(async()=>{let e=h.getState();e.setLoading(!0),e.setError(null);try{let t=await fetch(`/api/techstack/snapshot`);if(t.status===404){e.setSnapshot(null,!1);return}if(!t.ok)throw Error(`HTTP ${t.status}: ${t.statusText}`);let n=await t.json();e.setSnapshot(n.snapshot,n.stale)}catch(t){e.setError(t instanceof Error?t.message:String(t))}},[]),L=(0,b.useCallback)(async e=>{let t=h.getState();t.setLoading(!0),t.setError(null);try{let n=await fetch(`/api/techstack/${e}`,{method:`POST`}),r=await n.json();if(!n.ok||!r.jobId)throw Error(r.error??`HTTP ${n.status}: ${n.statusText}`);t.jobStarted(r.jobId,e)}catch(e){t.setError(e instanceof Error?e.message:String(e))}},[]),R=(0,b.useCallback)(async()=>{let e=h.getState().activeJob;if(e)try{let t=await fetch(`/api/techstack/jobs/${encodeURIComponent(e.id)}/cancel`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}: ${t.statusText}`);h.getState().jobCancelled(e.id)}catch(e){h.getState().setError(e instanceof Error?e.message:String(e))}},[]),B=(0,b.useCallback)(async e=>{F({status:`loading`,error:null});try{let t=await fetch(`/api/techstack/deps/${encodeURIComponent(e.id)}/research`,{method:`POST`}),n=await t.json();if(!t.ok)throw Error(n.error??`HTTP ${t.status}`);M(n.findings??[]),F({status:`idle`,error:null})}catch(e){F({status:`error`,error:e instanceof Error?e.message:String(e)})}},[]);(0,b.useEffect)(()=>{I()},[I]),(0,b.useEffect)(()=>{M([]),F({status:`idle`,error:null})},[e?.id]);let K=(0,b.useMemo)(()=>e?.dependencies??[],[e]),q=(0,b.useMemo)(()=>e?.findings??[],[e]),J=(0,b.useMemo)(()=>new Map(K.map(e=>[e.id,e])),[K]),ae=(0,b.useMemo)(()=>W(K.map(e=>e.ecosystem)),[K]),oe=(0,b.useMemo)(()=>W(K.map(e=>e.status)),[K]),Y=(0,b.useMemo)(()=>{let e=d.trim().toLowerCase(),t=[...K.filter(t=>!(e&&!t.name.toLowerCase().includes(e)||_!==`all`&&t.ecosystem!==_||y!==`all`&&t.status!==y||C&&!t.direct))];return E===`name`?t.sort((e,t)=>e.name.localeCompare(t.name)):E===`drift`?t.sort((e,t)=>A(t).majorsBehind-A(e).majorsBehind||e.name.localeCompare(t.name)):t.sort((e,t)=>w(t.status).weight-w(e.status).weight||Number(t.direct)-Number(e.direct)||e.name.localeCompare(t.name)),t},[K,d,_,y,C,E]),X=O?J.get(O):void 0,se=(0,b.useMemo)(()=>X?[...q.filter(e=>e.dependencyId===X.id),...j.filter(e=>e.dependencyId===X.id)]:[],[q,j,X]),ce=(0,b.useMemo)(()=>K.filter(ee).length,[K]),Z=(0,b.useMemo)(()=>K.filter(e=>A(e).majorsBehind>0).length,[K]),Q=(0,b.useMemo)(()=>K.filter(e=>e.status===`vulnerable`).length,[K]),le=d.trim()!==``||_!==`all`||y!==`all`||C,ue=(0,b.useCallback)(()=>{p(``),v(`all`),S(`all`),T(!1)},[]),$=!!(s&&![`completed`,`failed`,`cancelled`].includes(s.status)),de=(0,b.useCallback)(e=>{k(e),l(`dependencies`)},[]);return(0,x.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[(0,x.jsx)(`header`,{className:`shrink-0 border-b border-border/70 px-4 py-3`,children:(0,x.jsxs)(`div`,{className:`flex flex-wrap items-start gap-3`,children:[(0,x.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,x.jsx)(`h1`,{className:`text-base font-bold sm:text-lg`,children:`TechStack`}),(0,x.jsx)(`span`,{className:`border border-info/35 bg-info/10 px-2 py-0.5 font-mono text-[9px] font-bold uppercase text-info`,children:e?`${e.workspaces.length} workspaces`:`no scan yet`}),r&&(0,x.jsx)(`span`,{className:`border border-warning/35 bg-warning/10 px-2 py-0.5 font-mono text-[9px] font-bold uppercase text-warning`,children:`stale >24h`})]}),(0,x.jsx)(`p`,{className:`mt-0.5 truncate text-[10px] text-muted-foreground sm:text-xs`,children:e?`${e.targetRoot} · scanned ${new Date(e.createdAt).toLocaleString()}`:`Scan the open project to inventory its dependencies.`})]}),(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,x.jsxs)(g,{variant:`outline`,size:`sm`,onClick:()=>void L(`inventory`),disabled:$,title:`Offline: re-read manifests and lockfiles`,children:[(0,x.jsx)(f,{className:m(`size-3.5`,$&&`animate-spin`)}),(0,x.jsx)(`span`,{className:`hidden sm:inline`,children:`Refresh`})]}),(0,x.jsxs)(g,{size:`sm`,onClick:()=>void L(`analyze`),disabled:$,title:`Check registries and advisories, then interpret the results with the model`,children:[(0,x.jsx)(n,{className:`size-3.5`}),`Analyze`]}),$&&(0,x.jsx)(g,{variant:`ghost`,size:`icon`,onClick:()=>void R(),"aria-label":`Cancel job`,children:(0,x.jsx)(u,{className:`size-4`})}),(0,x.jsx)(g,{variant:`ghost`,size:`icon`,onClick:()=>e&&G(e),disabled:!e,"aria-label":`Export snapshot as JSON`,title:`Export snapshot as JSON`,children:(0,x.jsx)(i,{className:`size-4`})})]})]})}),e&&(0,x.jsxs)(`div`,{className:`grid shrink-0 grid-cols-2 gap-px border-b border-border/70 bg-border/60 sm:grid-cols-4`,children:[(0,x.jsx)(P,{label:`Dependencies`,value:K.length,hint:`${Y.length} visible`}),(0,x.jsx)(P,{label:`Outdated`,value:Z,hint:`majors behind`,tone:Z>0?`warning`:`success`}),(0,x.jsx)(P,{label:`Vulnerable`,value:Q,hint:`known advisories`,tone:Q>0?`destructive`:`success`}),(0,x.jsx)(P,{label:`Findings`,value:q.length,hint:`${ce} need attention`,tone:q.length>0?`info`:`default`})]}),($||o)&&(0,x.jsxs)(`div`,{className:`shrink-0 border-b border-border/70 px-4 py-2`,"aria-live":`polite`,children:[$&&s&&(0,x.jsxs)(`div`,{role:`status`,className:`flex items-center gap-2 text-xs text-info`,children:[(0,x.jsx)(t,{className:`size-3.5 animate-spin`}),(0,x.jsx)(`span`,{className:`font-mono`,children:s.status}),s.progress&&(0,x.jsxs)(`span`,{className:`text-muted-foreground`,children:[s.progress.completed,`/`,s.progress.total]})]}),o&&(0,x.jsxs)(`div`,{role:`alert`,className:`flex items-center gap-2 text-xs text-destructive`,children:[(0,x.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:o}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>void I(),className:`underline`,children:`Retry`})]})]}),a&&!e?(0,x.jsx)(H,{}):e?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`nav`,{className:`flex shrink-0 gap-1 border-b border-border/70 px-2`,children:z.map(e=>(0,x.jsxs)(`button`,{type:`button`,onClick:()=>l(e.id),"aria-current":c===e.id,className:m(`border-b-2 px-3 py-2 text-xs font-medium transition-colors`,c===e.id?`border-primary text-foreground`:`border-transparent text-muted-foreground hover:text-foreground`),children:[e.label,e.id===`findings`&&q.length>0&&(0,x.jsx)(`span`,{className:`ml-1.5 font-mono text-[10px] tabular-nums text-muted-foreground`,children:q.length})]},e.id))}),c===`dependencies`&&(0,x.jsxs)(`div`,{className:`grid min-h-0 flex-1 md:grid-cols-[minmax(340px,1fr)_minmax(0,1.15fr)]`,children:[(0,x.jsxs)(`section`,{className:m(`min-h-0 border-r border-border/70`,X?`hidden md:flex md:flex-col`:`flex flex-col`),"aria-label":`Dependency list`,children:[(0,x.jsx)(ie,{searchQuery:d,ecosystemFilter:_,statusFilter:y,directOnly:C,sort:E,hasFilters:le,ecosystems:ae,statuses:oe,visibleCount:Y.length,totalCount:K.length,onSearchChange:p,onEcosystemFilterChange:v,onStatusFilterChange:S,onToggleDirectOnly:()=>T(e=>!e),onSortChange:D,onClearFilters:ue}),(0,x.jsx)(ne,{dependencies:Y,selectedId:O,hasDependencies:K.length>0,onSelect:e=>k(e.id)})]}),(0,x.jsx)(`section`,{className:m(`min-h-0`,X?`flex flex-col`:`hidden md:flex md:flex-col`),"aria-label":`Dependency detail`,children:X?(0,x.jsx)(te,{dependency:X,findings:se,deepDive:N,onDeepDive:B,onBack:()=>k(null)}):(0,x.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8 text-center`,children:(0,x.jsx)(`p`,{className:`max-w-xs text-xs text-muted-foreground`,children:`Select a dependency to see its versions, evidence, and findings.`})})})]}),c===`findings`&&(0,x.jsx)(re,{findings:q,dependenciesById:J,onSelectDependency:de}),c===`workspaces`&&(0,x.jsx)(V,{snapshot:e})]}):(0,x.jsx)(U,{onScan:()=>void L(`inventory`),disabled:$})]})}function V({snapshot:e}){let t=(0,b.useMemo)(()=>{let t=new Map;for(let n of e.dependencies)t.set(n.workspaceId,(t.get(n.workspaceId)??0)+1);return t},[e]);return e.workspaces.length===0?(0,x.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8`,children:(0,x.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No workspaces detected.`})}):(0,x.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-3`,children:(0,x.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:e.workspaces.map(e=>{let n=O[e.coverage];return(0,x.jsxs)(`div`,{className:`border border-border/70 bg-card/40 p-2.5`,children:[(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,x.jsxs)(`div`,{className:`min-w-0`,children:[(0,x.jsx)(`p`,{className:`truncate font-mono text-xs text-foreground`,children:e.relativeRoot}),(0,x.jsxs)(`p`,{className:`mt-0.5 truncate text-[10px] text-muted-foreground`,children:[e.ecosystem,e.packageManager?` · ${e.packageManager}`:``,` · ${t.get(e.id)??0} deps`]})]}),(0,x.jsx)(`span`,{className:m(`shrink-0 border px-1.5 py-0.5 text-[10px] font-medium`,n.badge),children:n.label})]}),e.manifests.length>0&&(0,x.jsx)(`div`,{className:`mt-1.5 flex flex-wrap gap-1`,children:e.manifests.map(e=>(0,x.jsx)(`span`,{className:`border border-border/70 bg-background/45 px-1.5 py-0.5 font-mono text-[9px] text-muted-foreground`,children:e.split(/[/\\]/).pop()},e))})]},e.id)})})})}function H(){return(0,x.jsx)(`div`,{className:`flex flex-1 items-center justify-center`,children:(0,x.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[(0,x.jsx)(t,{className:`size-5 animate-spin text-muted-foreground`}),(0,x.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Loading snapshot…`})]})})}function U({onScan:e,disabled:t}){return(0,x.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8`,children:(0,x.jsxs)(`div`,{className:`flex max-w-md flex-col items-center gap-3 text-center`,children:[(0,x.jsx)(`div`,{className:`flex size-14 items-center justify-center border border-info/25 bg-info/5 text-info`,children:(0,x.jsx)(a,{className:`size-6`})}),(0,x.jsx)(`h2`,{className:`text-sm font-semibold`,children:`No inventory yet`}),(0,x.jsx)(`p`,{className:`text-xs leading-relaxed text-muted-foreground`,children:`TechStack reads every manifest and lockfile in the open project — npm, Python, Rust, Go, .NET, PHP, Dart, Maven, Ruby, Elixir — and compares what you have against the upstream registries.`}),(0,x.jsxs)(g,{size:`sm`,onClick:e,disabled:t,children:[(0,x.jsx)(f,{className:m(`size-3.5`,t&&`animate-spin`)}),`Scan this project`]})]})})}function W(e){let t=new Map;for(let n of e)t.set(n,(t.get(n)??0)+1);return[...t.entries()].sort((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0]))}function G(e){let t=new Blob([JSON.stringify(e,null,2)],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`techstack.json`,r.click(),URL.revokeObjectURL(n)}export{B as TechStackView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{_i as t,bt as n,ea as r,ia as i,oa as a,ot as o,ta as s,tr as c,tt as l,ui as u}from"./vendor-DffL_bim.js";import"./i18n-Dk35g-uV.js";import{n as d,t as f}from"./utils-DEzFewqr.js";var p=e(a(),1),m=l();function h(){return`toast_${d()}`}var g=8e3,_=r(e=>({toasts:[],push:t=>{let n=h();return e(e=>({toasts:[...e.toasts,{...t,id:n}]})),n},dismiss:t=>e(e=>({toasts:e.toasts.filter(e=>e.id!==t)}))})),v={success:(e,t=3500)=>_.getState().push({message:e,variant:`success`,ttl:t}),error:(e,t=6e3)=>_.getState().push({message:e,variant:`error`,ttl:t}),warn:(e,t=4500)=>_.getState().push({message:e,variant:`warn`,ttl:t}),info:(e,t=3500)=>_.getState().push({message:e,variant:`info`,ttl:t}),undoable:(e,t,n=i.t(`common:action.undo`),r=g)=>_.getState().push({message:e,variant:`info`,ttl:r,action:{label:n,onClick:t}}),dismiss:e=>_.getState().dismiss(e)};function y({variant:e}){return e===`success`?(0,m.jsx)(t,{className:`h-4 w-4 text-success`}):e===`error`?(0,m.jsx)(u,{className:`h-4 w-4 text-destructive`}):e===`warn`?(0,m.jsx)(n,{className:`h-4 w-4 text-warning`}):(0,m.jsx)(c,{className:`h-4 w-4 text-info`})}function b({entry:e}){let{t}=s(),n=_(e=>e.dismiss);return(0,p.useEffect)(()=>{let t=setTimeout(()=>n(e.id),e.ttl);return()=>clearTimeout(t)},[e.id,e.ttl,n]),(0,m.jsxs)(`div`,{className:f(`flex items-start gap-2 rounded-lg border bg-popover shadow-lg px-3 py-2 text-sm max-w-sm`,`animate-message`,e.variant===`error`&&`border-destructive/40`,e.variant===`warn`&&`border-warning/40`,e.variant===`success`&&`border-success/40`),children:[(0,m.jsx)(y,{variant:e.variant}),(0,m.jsx)(`div`,{className:`flex-1 min-w-0 whitespace-pre-wrap break-words leading-snug`,children:e.message}),e.action&&(0,m.jsx)(`button`,{type:`button`,onClick:()=>{e.action?.onClick(),n(e.id)},className:`shrink-0 font-medium text-primary hover:underline`,children:e.action.label}),(0,m.jsx)(`button`,{type:`button`,onClick:()=>n(e.id),className:`text-muted-foreground hover:text-foreground`,title:t(`activity:toast.dismiss`),"aria-label":t(`activity:toast.dismiss`),children:(0,m.jsx)(o,{className:`h-3.5 w-3.5`})})]})}function x(){let e=_(e=>e.toasts);return e.length===0?null:(0,m.jsx)(`section`,{className:`fixed bottom-4 right-4 z-[60] flex flex-col gap-2 pointer-events-auto`,"aria-label":`Notifications`,"aria-live":`polite`,children:e.map(e=>(0,m.jsx)(b,{entry:e},e.id))})}export{v as n,x as t};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
var e={chat:`Oturum`,agents:`Vekiller`,history:`Geçmiş`,files:`Dosyalar`,changes:`Değişiklikler`,mailbox:`Posta Kutusu`,skills:`Beceriler`,worktrees:`Çalışma Ağaçları`,design:`Tasarım Stüdyosu`,officemap:`Ofis Haritası`,settings:`Ayarlar`,sddhub:`SDD`,goal:`Goal`,memory:`Bellek`,fleet:`Filo`,inspector:`Denetçi`,prompts:`Promptlar`},t={returnToChat:`{{name}} — sohbete dön`,returnToChatDefault:`WrongStack — sohbete dön`},n={connected:`Bağlı`,disconnected:`Bağlı değil`,idle:`Boşta`,thinking:`Düşünüyor`,running:`Çalışıyor`,waiting:`Bekliyor`,done:`Bitti`,stopped:`Durduruldu`},r={moreWithHidden:`Daha fazla, {{count}} gizli öğe`,moreOptions:`Daha fazla seçenek`,moreCompactHidden:`Daha fazla — {{count}} gizli panel/görünüm, palet, tema, izleyiciler`,moreCompact:`Daha fazla — palet, tema, izleyiciler`,moreFull:`Daha fazla — palet, tema, kısayollar, izleyiciler`,commandPalette:`Komut Paleti`,keyboardShortcuts:`Klavye Kısayolları`,panels:`Paneller`,views:`Görünümler`,theme:`Tema`,monitors:`İzleyiciler`,fleetMonitor:`Filo İzleyici`,agentsMonitor:`Vekil İzleyici`},i={dragHint:`Yeniden boyutlandırmak için sürükle · sıfırlamak için çift tıkla`,collapse:`Paneli daralt (Ctrl+\\)`},a={openDashboard:`Oturum panosunu aç`},o={pending:`bekliyor…`,empty:`Henüz vekil yok`,emptyHint:`Filo etkinken alt vekiller burada görünür.`,runningCount:`{{count}} çalışıyor`,totalCount:`toplam {{count}}`,openFull:`Tam vekil görünümünü aç`,agentsLive:`ARACILAR · CANLI`,doneCount:`{{count}} tamam`,failedCount:`{{count}} başarısız`,modelsLabel:`modeller`,shownLabel:`gösterilen`,totalLabel:`toplam`,leaderFleetTotals:`(lider {{leader}} · filo {{fleet}})`,navHintJk:`gezinmek için j/k veya ↑↓`,escCloseDetail:`· detayı kapatmak için Esc`,noAgentsRunning:`Çalışan aracı yok.`,contextUsage:`Bağlam kullanımı`,lastToolLabel:`son:`,unknownSession:`Bilinmeyen oturum`,sessionCopyTitle:`Oturum: {{sid}} — kimliği kopyalamak için tıklayın`,sessionWord:`oturum`,agentsCountSuffix_one:`{{count}} aracı`,agentsCountSuffix_other:`{{count}} aracı`,sessionTitle:`Oturum: {{sid}}`,projectSuffix:` · Proje: {{name}}`,statusIdle:`boşta`,filterAll:`Tümü`,filterRunning:`Çalışan`,filterDone:`Tamamlanan`,filterFailed:`Başarısız`,clearFinished:`Temizle`,clearFinishedTitle:`Tamamlanan aracıları kaldır`,rosterHint:`Gezinmek için ok tuşları · Genişletmek için Enter`,itSuffix:`it.`,tcSuffix:`araç`,toolLog:`Araç Günlüğü`,showAll:`Tümünü göster`,showFewer:`Daha az göster`,streaming:`Canlı akış`,failure:`Başarısızlık`,timeout:`Zaman aşımı`,reRun:`Yeniden çalıştır`,reRunTitle:`Bu aracıyı yeniden çalıştır (henüz uygulanmadı)`,lastToolCalls:`Son {{count}} araç çağrısı`,lastToolCalls_plural:`Son {{count}} araç çağrısı`,config:`Yapılandırma`,configProvider:`Sağlayıcı`,configModel:`Model`,configDescription:`Açıklama`,configTaskId:`Görev kimliği`,transcript:`Döküm`,openInspector:`Filo Denetçisi’nde aç`,emptyFilteredTitle:`Filtreyle eşleşen aracı yok`,emptyFilteredHint:`Tüm aracıları görmek için filtreyi değiştirin veya temizleyin.`,emptyFilteredClear:`Tümünü göster`,emptyFinishedTitle:`Tüm görevler tamamlandı`,emptyFinishedHint:`Tüm aracılar işi bitirdi — buradaki etkinliği görmek için tamamlananları temizleyin veya yeni görevler oluşturun.`,emptyFinishedStats:`{{completed}} tamamlandı · {{failed}} başarısız`},s={fileCount_one:`{{count}} dosya`,fileCount_other:`{{count}} dosya`,refreshTitle:`Değişiklikleri yenile`,loading:`Değişiklikler yükleniyor…`,clean:`Değişiklik yok — çalışma ağacı temiz.`,selectPrompt:`Farkı görüntülemek için değiştirilmiş bir dosya seçin.`,unified:`Birleşik`,unifiedTitle:`Birleşik diff`,edit:`Düzenle`,editTitle:`Yan yana düzenlenebilir diff`,loadingDiff:`Diff yükleniyor…`,diffTimeout:`Diff gelmedi. Dosya değişmiş veya bağlantı kopmuş olabilir.`,binary:`İkili dosya — diff gösterilmiyor.`,tooLarge:`Dosya diff için çok büyük.`},c={showPanel:`Denetçi panelini göster (Filo / Vekiller / Denetim)`,hidePanel:`Denetçi panelini gizle`,label:`Denetçi`,openAudit:`Denetim sekmesini aç`,tabFleet:`Filo`,tabAgents:`Vekiller`,tabAudit:`Denetim`,collapseAria:`Denetçi panelini daralt`,collapseTitle:`Daralt (Esc)`,noAgentsActive:`Etkin vekil yok`,agentsAppearHint:`Filo etkinken vekiller burada görünür.`,selected:`{{name}} (seçili)`},l={header:`Sonraki adımlar`,autoSubmitting:`otomatik gönderiliyor`,clickToFill:`doldurmak için tıkla`,clickToFillTitle:`Doldurmak için tıkla: {{text}}`,auto:`otomatik`,willAutoSubmit:`Geri sayımdan sonra otomatik gönderilecek`},u={onlineCount:`{{count}} çevrimiçi`,messages:`Mesajlar`,deleteAllTitle:`Tüm mesajları sil`,deleteAll:`Tümünü sil`,deleting:`Siliniyor…`,purgeTitle:`Eski/yetim mesajları temizle`,purge:`Temizle`,purging:`Temizleniyor…`,compact:`Sıkıştır`,compacting:`Sıkıştırılıyor…`,compactTitle:`Otomatik sıkıştırma: süresi dolmuş, tüm çevrimiçi ajanlar tarafından okunmuş ve eski mesajları sil`,compactRemoved:`{{count}} mesaj silindi`,compactExpired:`{{count}} süresi dolmuş`,compactReadByAll:`{{count}} tüm ajanlar tarafından okundu`,compactStale:`{{count}} eski`,compactRemaining:`{{count}} kaldı`,newLabel:`YENİ`,empty:`Henüz mesaj yok.`,offlineCount:`+{{count}} çevrimdışı`,timeNow:`şimdi`,deleteAllConfirmTitle_one:`{{count}} mesaj silinsin mi?`,deleteAllConfirmTitle_other:`Tüm {{count}} mesaj silinsin mi?`,deleteAllConfirmBody:`Posta kutusu dosyası her vekil için kısaltılır. Bu geri alınamaz.`,purgeConfirmTitle:`Eski mesajlar temizlensin mi?`,purgeConfirmBody:`1 günden eski tamamlanmış ve 7 günden eski tamamlanmamış mesajları kaldırır. Etkin mesajlar korunur.`,type:{note:`Not`,ask:`Soru`,assign:`Atama`,steer:`Yönlendir`,btw:`Bu arada`,broadcast:`Yayın`,status:`Durum`,result:`Sonuç`},emptyDetail:`Mesaj seçilmedi`,emptyDetailHint:`Burada görüntülemek için Posta Kutusu panelinden bir mesaja tıklayın.`,readBy:`Okuyanlar`,backToChat:`Sohbete dön`,completed:`Tamamlandı`,everyone:`herkes`,closeTitle:`Kapat (Esc)`,replyTo:`Yanıt olarak: {{id}}`,completedBy:`{{name}} tarafından tamamlandı`,completedByAt:`{{name}} tarafından {{time}} tarihinde tamamlandı`,outcome:`Sonuç:`,task:`Görev:`,messageNotFound:`Mesaj bulunamadı`,messageNotFoundHint:`Bu mesaj silinmiş veya temizlenmiş olabilir.`,sessionLabel:`Oturum`,sessionScope:`Oturum {{sid}}`,sessionScopeTitle:`Yalnızca {{sid}} oturumundaki vekillere teslim edildi`,projectLabel:`Proje`,projectScope:`Proje (her vekil)`,directScope:`Doğrudan`,scopeLabel:`Kapsam`},d={recentSessions:`Son oturumlar`,deleteEmptyTitle_one:`{{count}} boş oturum silinsin mi?`,deleteEmptyTitle_other:`{{count}} boş oturum silinsin mi?`,deleteEmptyConfirmBody:`Hiç token kullanımı olmayan oturumlar diskten kaldırılır.`,filterPlaceholder:`Başlık, model, sağlayıcı filtrele…`,clearFilter:`Filtreyi temizle`,noHistory:`Henüz geçmiş yok`,noHistoryHint:`Konuşmalarınız burada görünür`,noMatches:`Eşleşme yok`,noMatchesHint:`Farklı bir filtre deneyin`,group:{favorites:`Favoriler`,today:`Bugün`,yesterday:`Dün`,thisWeek:`Bu hafta`,earlier:`Daha önce`},nicknamePlaceholder:`Takma ad`,empty:`(boş)`,resuming:`devam ediliyor…`,active:`etkin`,renameTitleNickname:`{{nickname}} — özgün: {{title}}`,renameTitle:`{{title}}
|
|
2
|
-
|
|
3
|
-
Yeniden adlandırmak için çift tıklayın`,unfavorite:`Favoriden çıkar`,markFavorite:`Favori olarak işaretle`,deleteSessionConfirmTitle:`Oturum silinsin mi?`,deleteSessionConfirmBody:`"{{name}}" diskten kaldırılacak. Bu geri alınamaz.`,deleteSessionTitle:`Oturumu sil`,rename:`Oturum adı`,renameAction:`Yeniden adlandır`,resume:`Oturumu sürdür`,resumeShort:`Sürdür`,workspaceEyebrow:`Konuşma kontrolü`,workspaceTitle:`Oturumlar`,workspaceHint:`Projeye ait tüm konuşmaları ara, incele, sabitle ve kaldığın yerden sürdür.`,tabs:{history:`Geçmiş`,live:`Canlı oturumlar`},filters:{all:`Tümü`,favorites:`Sabitlenen`,active:`Aktif`,completed:`Tamamlanan`,issues:`Sorunlu`},status:{active:`Aktif`,completed:`Tamamlandı`,error:`Hata`,timeout:`Zaman aşımı`,aborted:`Durduruldu`,saved:`Kayıtlı oturum`},sort:{label:`Oturumları sırala`,recent:`En yeni`,tokens:`En çok token`,activity:`En hareketli`},stats:{sessions:`Oturum`,tokens:`Token`,tools:`Araç çağrısı`,files:`Değişen dosya`,errors:`Hata`}},f={actions:{abort:`Durdur`,newSession:`Yeni oturum`,export:`Dışa aktar`,compact:`Sıkıştır`,newSessionConfirm:`Emin misiniz?`,newSessionConfirmMessage:`Bir iş hâlâ devam ediyor. Yine de yeni bir oturum başlatılsın mı?`,newSessionTitle:`Yeni oturum başlat (Ctrl+N)`,exportTitle:`Sohbeti markdown olarak dışa aktar (Ctrl+E)`,compactTitle:`Bağlam penceresini sıkıştır`,clearTitle:`Bağlamı temizle (Ctrl+L)`},model:`Model`,modelTitle:`Modeli değiştir (Ctrl+M)`,context:`Bağlam`,contextTitle:`Bağlam dökümü için tıklayın`,sessionLabel:`Oturum`,stats:{messages:`Mesajlar`,elapsed:`Geçen`,tokens:`Token`,cost:`Maliyet`,iteration:`Yineleme`,agents:`Vekiller`,tokensSub:`{{in}} giriş / {{out}} çıkış`,iterationOf:`/ {{max}}`,agentsRunning:`{{count}} çalışıyor`},plan:`Plan`,planComplete:`%{{pct}} tamamlandı`,pinned:`Sabitlenen`,quickSettings:`Hızlı ayarlar`,autonomy:`Otonomi`,autonomyOptions:{off:`Kapalı`,suggest:`Öner`,auto:`Otomatik`,eternal:`Sürekli`,"eternal-parallel":`Sürekli Paralel`},yolo:`YOLO modu`,yoloTitle:`Araç onay istemlerini atla`,refine:`Promptları iyileştir`,refineTitle:`Göndermeden önce promptları yeniden yaz`,sound:`Tamamlanınca ses`,soundTitle:`Bir çalışma bitince hafif bir çal sesi çıkar`,sessionId:`oturum {{id}}`},p={status:{running:`çalışıyor`,done:`bitti`,failed:`başarısız`,timeout:`zaman aşımı`,stopped:`durduruldu`},leader:`lider`,providerModel:`Sağlayıcı / Model`,elapsed:`Geçen`,running:`çalışıyor…`,iterations:`Yinelemeler`,toolCalls:`Araç çağrıları`,cost:`Maliyet`,budgetExtensions:`Bütçe Uzatması`,activity:`Etkinlik`,budgetWarning:`bütçe uyarısı`,contextWindow:`Bağlam penceresi`,tokensUsed:`{{used}} / {{max}} token`,toolRunning:`çalışıyor…`,lastTool:`son araç`,error:`Hata`,finalOutput:`Son çıktı`,copyOutput:`Çıktıyı kopyala`,liveOutput:`Canlı çıktı`,waitingOutput:`Çıktı bekleniyor…`,outputHint:`Vekil metin aktardıkça çıktı burada görünür.`,toolLog:`Araç günlüğü ({{count}} çağrı)`,fail:`başarısız`,moreTools:`+{{count}} araç daha`,cardRunning:`çalışıyor {{tool}}`,cardLastTool:`son: {{tool}}`,contextPercent:`Bağlam %{{pct}}`,doneCount:`{{count}} bitti`,errCount:`{{count}} hata`,statusRunning:`çalışıyor`,statusDone:`tamamlandı`,statusFailed:`başarısız`,statusTimeout:`zaman aşımı`,statusStopped:`durduruldu`,sessionPrefix:`oturum:`,currentTask:`Mevcut görev`,performance:`Performans`,uniqueTools:`Benzersiz araçlar`,avgPerTool:`araç başına ortalama {{ms}}ms`,context:`Bağlam`,tokens:`Tokenler`,ctxUsed:`%{{pct}} kullanıldı`,completed:`tamamlandı`,budgetWarningTitle:`⚡ Bütçe uyarısı`,hittingLimit:`{{kind}} sınırına ulaşılıyor ({{used}}/{{limit}})`,hittingLimitTitle:`⚡ {{kind}} sınırına ulaşılıyor ({{used}}/{{limit}})`,budgetExt_one:`{{count}} bütçe uzantısı`,budgetExt_other:`{{count}} bütçe uzantısı`,extendedTimes_one:`Aracı uzun süren görevler nedeniyle bütçesini {{count}} kez uzattı`,extendedTimes_other:`Aracı uzun süren görevler nedeniyle bütçesini {{count}} kez uzattı`,errorLabel:`Hata`,failureReason:`Başarısızlık nedeni`,failed:`Başarısız`,fleetMonitor:`FİLO İZLEYİCİ`,runningCount:`{{count}} çalışıyor`,totalAgents_one:`toplam {{count}} aracı`,totalAgents_other:`toplam {{count}} aracı`,noLeader:`lider yok`,closeFleet:`Filo izleyiciyi kapat`,colName:`Ad`,colStatus:`Durum`,colActivity:`Etkinlik`,colIters:`Yine.`,colTools:`Araçlar`,colCost:`Maliyet`,colCtx:`BĞM`,colExt:`Uzat.`,colReason:`Neden`,noAgentsActive:`Etkin aracı yok`,agentsAppear:`Filo etkin olduğunda aracılar burada görünür.`,agentTimeline:`Aracı zaman çizelgesi`,noAgentEvents:`Henüz aracı konuşma olayı yok.`,navHint:`↑↓ gezin`,selectDetailHint:`↵ detay seç`,escHint:`Esc seçimi kaldır / kapat`,detailedView:`detay görünümü`,closeBtn:`✕ kapat`,selectAgentDetail:`Detaylı bilgi görmek için bir aracı seçin`,selectAgentBody:`Detaylı metrikler, araç günlükleri, akan çıktı ve fazlasını görmek için listedeki herhangi bir aracı tıklayın — sohbet geçmişi detay görünümüne benzer.`,navigateWord:`gezin`,selectWord:`seç`,deselectWord:`seçimi kaldır`},m={wsNotConnected:`WebSocket bağlı değil`,noData:`Hata ayıklama verisi alınamadı. Sunucu bağlam hata ayıklamayı desteklemiyor olabilir.`,title:`Bağlam Dökümü`,windowUsage:`Pencere Kullanımı`,contextMode:`Bağlam Modu`,fetching:`Bağlam dökümü getiriliyor…`,systemPrompt:`Sistem Promptu`,tools:`Araçlar`,messages:`Mesajlar`,tokenAllocation:`Token Dağılımı`,systemTitle:`Sistem: {{tokens}}`,toolsTitle:`Araçlar: {{tokens}}`,messagesTitle:`Mesajlar: {{tokens}}`,system:`Sistem`,toolBreakdown:`Araç Dökümü`,messagesSummary:`Mesajlar ({{count}}) — {{total}} tok`,barWithTokens:`Bağlam penceresi: {{tokens}} / {{max}} token ({{pct}})`,barPct:`Bağlam penceresi: {{pct}}`,barClick:` — döküm için tıklayın`},h={header:`✨ Promptu İyileştir`,autoSend:`{{count}} sn içinde otomatik gönder`,cancelTitle:`İptal (Esc)`,editLabel:`İyileştirilmiş promptu düzenle:`,editPlaceholder:`İyileştirilmiş promptu düzenle...`,useEdit:`Düzenlemeyi Kullan`,original:`Orijinal`,refined:`İyileştirilmiş`,yourLanguage:`(dilinizde)`,refinedTitle:`Bu sürümü kullanmak için tıklayın veya Enter'a basın`,english:`İngilizce`,englishTitle:`İngilizce sürümü kullanmak için e'ye basın`,hintRefined:`iyileştirilmiş`,hintEnglish:`İngilizce`,hintOriginal:`orijinal`,hintEdit:`düzenle`,hintRetry:`yeniden dene`,edit:`Düzenle`,useRefined:`İyileştirilmişi Kullan`,langOriginal:`Original`,langEnglish:`English`,languageTitle:`Switch default refine language — Original vs English`,yolo:`YOLO`,yoloTitle:`Bypass tool confirmation prompts`,refining:`İyileştiriliyor…`,sendAsIs:`Olduğu gibi gönder`,failedHeader:`İyileştirme başarısız`,retry:`Yeniden dene (ek süre)`,retryBetter:`Daha iyisini dene`,retryFallback:`{{model}} ile yeniden dene`,pickModel:`Başka model…`,pickModelTitle:`İyileştirmeyi başka bir modelle yeniden dene`,pickModelHint:`Bu iyileştirmenin yeniden çalıştırılacağı sağlayıcı/modeli seçin. Oturum modeliniz değişmez.`},g={heading:`Spesifikasyonlar`,subtitle:`Spesifikasyon güdümlü geliştirmeyi görüntüle ve yönet`,empty:`Spesifikasyon bulunamadı. Oluşturmak için {{command}} kullanın.`,tasks:`Görevler ({{count}})`,doneCount:`{{count}} tamamlandı`,runningCount:`{{count}} çalışıyor`,pendingCount:`{{count}} bekliyor`,runTitle:`Bu spesifikasyonu canlı bir Goal panosu olarak çalıştır`,run:`Çalıştır`,list:`Liste`,graph:`Graf`,loadingTasks:`Görevler yükleniyor…`},_={heading:`F5 Dayanıklılık Doğrulayıcı`,subtitle:`En son etkin oturumun, transkriptin ve UI durumunun bir sayfa yenilemesinde kaldığını doğrular. Bu görünümü açın, sonra F5'e basın — her yeşil satır yeşil kalmalıdır.`,recordProbe:`Sonda kaydet`,latestSession:`En son etkin oturum`,restoredLocal:`localStorage'tan geri yüklendi`,sessionIdExtra:`oturum kimliği: {{id}}`,noSessionYet:`henüz oturum başlatılmadı`,activePointer:`Etkin oturum işaretçisi`,lastVisited:`lastVisitedAt zaman damgası`,never:`hiçbir zaman`,persistedEnv:`Kalıcı ortam`,transcriptRehydrate:`Sohbet transkripti yeniden doldurma`,localTranscript:`Yerel transkript kurtarıldı`,messagesExtra:`{{count}} mesaj, {{queued}} sıralı`,noMessages:`0 mesaj`,noBleed:`Oturumlar arası sızıntı yok`,bleedExtra:`bağlı={{bound}} vs etkin={{active}}`,transcriptBinds:`transkript etkin oturuma bağlanır`,uiWorkspace:`UI çalışma alanı`,noneValue:`(yok)`,payloadSize:`localStorage yükü (4 anahtar): {{count}} karakter`,probeLog:`Sonda günlüğü`,noProbes:`Henüz sonda yok — yeniden doldurma kontrolü kaydetmek için üstteki "Sonda kaydet" düğmesine basın veya bu görünümde F5'e basın.`,simulatedF5:`simüle F5: persist rehydrate yeniden çalıştırılıyor`},v={status:{pending:`Bekliyor`,in_progress:`Devam Ediyor`,review:`İnceleme`,failed:`Başarısız`,completed:`Bitti`,queued:`Sırada`,blocked:`Engelli`,cancelled:`İptal edildi`},newTaskTitle:`Yeni görev`,newTaskPlaceholder:`Görev başlığı…`,addTask:`Görev ekle`,empty:`Henüz aşama yok — panoyu doldurmak için bir Goal çalıştırması başlatın.`,summary:`{{phases}} aşama · {{tasks}} görev`,phases:`Aşamalar`,statusTab:`Durum`,dropHere:`Görevleri buraya bırakın`,emptySpec:`Bu spec'te henüz görev yok.`,depGraphHeading:`Bağımlılık grafiği`,worktreePrefix:`worktree: {{branch}}`},y={trendUp:`Artıyor`,trendDown:`Azalıyor`,trendStable:`Sabit`,heading:`Hata Ayıklama Panosu`,subtitle:`WrongStack WebUI için gerçek zamanlı izleme`,refreshLabel:`Yenile:`,lastUpdated:`Son güncelleme: {{time}}`,fetchFailed:`Metrikler alınamadı`,fileWatcher:`Dosya İzleyici`,watcherStatus:`İzleyici Durumu`,running:`Çalışıyor`,stopped:`Durduruldu`,activeProjects:`Etkin Projeler`,projectsWatched:`İzlenen projeler`,fileChanges:`Dosya Değişiklikleri`,totalDetected:`Toplam tespit edilen`,filesProcessed:`İşlenen Dosyalar`,afterHash:`Hash süzgecinden sonra`,broadcastsSent:`Gönderilen Yayınlar`,toClients:`WebUI istemcilerine`,debounceResets:`Debounce Sıfırlamaları`,rapidWrites:`Ardışık hızlı yazmalar`,avgDebounce:`Ort. Debounce Gecikmesi`,actualDelay:`Uygulanan gerçek gecikme`,totalDelay:`Toplam Gecikme`,sumDelays:`Tüm gecikmelerin toplamı`,browserPerf:`Tarayıcı Performansı`,heapUsed:`Kullanılan Yığın`,jsHeap:`JavaScript yığını`,heapTotal:`Toplam Yığın`,totalHeap:`Toplam yığın boyutu`,pageUptime:`Sayfa Çalışma Süresi`,sinceLoad:`Sayfa yüklenmesinden beri`,rawData:`Ham Veri`},b={allowlistTitle:`Model izin listesi`,modelCount_one:`{{count}} model`,modelCount_other:`{{count}} model`,using:`Kullanılan`,noModelPicked:`(model seçilmedi)`,clearAllowlist:`İzin listesini temizle`,clearAllowlistAria:`{{provider}} için kayıtlı izin listesini temizle`,refresh:`Sunucudan yenile`,refreshAria:`{{provider}} için model listesini yenile`,probing:`Sorgulanıyor…`,use:`Kullan`,useModelAria:`{{provider}} için {{model}} modelini kullan`,differsHint:`Sorgulanan liste kayıtlı izin listesinden farklı — kalıcı yapmak için {{command}} komutunu yeniden çalıştırın.`},x={expandChip:`{{label}} öğesini genişlet`,collapseChip:`{{label}} öğesini daralt`,ahead:`{{count}} ileri`,behind:`{{count}} geri`,linesAdded:`{{count}} satır eklendi`,linesDeleted:`{{count}} satır silindi`,untrackedFiles:`{{count}} izlenmeyen dosya`,customizeTitle:`Dock çiplerini özelleştir`,dockChips:`Dock çipleri`,noActiveGoal:`Etkin hedef yok`,noActiveGoalDetail:`Sohbetten veya hedef komutundan bir hedef başlatın.`},S={leaderBadge:`LİDER`,iters:`Yineleme`,tools:`Araçlar`,activityBins:`Etkinlik (12 kutu)`,streamingOutput:`Akış çıktısı`,recentTools:`Son araçlar`,finalOutput:`Son çıktı`,heading:`Vekil İzleyici`,prevAgent:`Önceki vekil`,nextAgent:`Sonraki vekil`,closeAria:`Vekil izleyiciyi kapat`,hintPage:`←→ sayfa`,hintNavigate:`↑↓ listede gezin`,hintEsc:`Esc kapat`},C={resize:`Terminalleri yeniden boyutlandır`,labelSingular:`Terminal`,labelPlural:`Terminaller`,projectShell:`Proje kabuğu`,maxTerminals:`En fazla {{count}} terminal`,newTerminal:`Yeni terminal`,restart:`Etkin terminali yeniden başlat`,closeAll:`Tüm terminalleri kapat`,closeDock:"Terminal dock'unu kapat (Ctrl+`)",closeTab:`{{name}} öğesini kapat`,processExited:`[işlem {{code}} koduyla çıktı]`},w={liveStream:`Canlı akış`,events_one:`{{count}} olay`,events_other:`{{count}} olay`,interruptTitle:`Bu vekili bir sonraki adımında kooperatif biçimde durdur (süreç öldürme değil)`,interrupt:`⏸ Böl`,interrupting:`…`,loading:`Oturum yükleniyor…`,done:`✓✓ bitti`,read:`✓ okundu`,delivered:`⏳ teslim edildi`,agent:`Vekil`,you:`Sen`,working:`{{name}} · çalışıyor`,claude:`Claude`,priority:`Öncelik`,placeholder:`{{label}} → bu oturuma…`,send:`Gönder`,sendHint:`⌘/Ctrl+Enter ile gönder · vekilin bir sonraki yinelemesinde görülür`,msgType:{steerLabel:`🔄 Yönlendir`,steerHint:`Görev sırasında davranışı ayarla`,askLabel:`❓ Sor`,askHint:`Soru — yanıt bekler`,assignLabel:`📋 Ata`,assignHint:`Üzerinde işlem yapılacak görev`,noteLabel:`💬 Not`,noteHint:`Bilgi için, acil değil`},sentRunning:`Teslim edildi — çalışan vekil bir sonraki adımda görür`,sentIdle:`Teslim edildi — hedef boşta; posta kutusunda görünür, bir sonraki çalıştığında okunur`,sentFailed:`Başarısız: {{error}}`,interruptReason:`Operatör Fleet HQ'dan durdurma istedi`,interruptSent:`Kesme gönderildi — vekil bir sonraki adımda durur (öldürme değil)`,interruptFailed:`Kesme başarısız: {{error}}`},T={empty:`Henüz kayıtlı yan etki yok.`,emptyHint:`Bash komutları, paket kurulumları ve ağ istekleri burada görünür.`,heading:`Yan Etkiler`,exportTitle:`Filtrelenmiş yan etkileri CSV olarak dışa aktar`,all:`Tümü`,colTime:`Zaman`,colTool:`Araç`,colRisk:`Risk`,colDetail:`Detay`,colOutcome:`Sonuç`},E={elapsedHm:`{{h}} sa {{m}} dk önce`,elapsedMs:`{{m}} dk {{s}} sn önce`,elapsedS:`{{s}} sn önce`,heading:`Filo İzleyici`,clientsHeading:`Bağlı İstemciler`,terminal:`Terminal`,webui:`Web Arayüzü`,repl:`REPL`,totalConnected:`toplam bağlı`,mailQueue:`Posta Kuyruğu`,total:`Toplam`,open:`Açık`,unread:`Okunmamış`,agents:`Vekiller`,messagesSub:`mesaj`,uncompletedSub:`tamamlanmamış`,waitingSub:`bekliyor`,ofTotal:`/ {{count}} toplam`,agentRoster:`Vekil Çizelgesi`,liveMailActivity:`Canlı Posta Etkinliği`,noActivity:`Son etkinlik yok`,mailboxAgents:`Posta Kutusu Vekilleri`,noMailboxAgents:`Kayıtlı vekil yok`,moreCount:`+{{count}} daha`,agentFallback:`vekil`,fleetAgents:`Filo Vekilleri`,noFleetAgents:`Çalışan filo vekili yok`,iter:`yineleme`,mailType:{sent:`Gönderildi`,delivered:`Teslim edildi`,read:`Okundu`,completed:`Tamamlandı`}},D={status:{pending:`bekliyor`,queued:`sırada`,in_progress:`çalışıyor`,blocked:`engellendi`,review:`inceleme`,failed:`başarısız`,completed:`bitti`,cancelled:`iptal edildi`},activityHeading:`Etkinlik`,feedEmpty:`Henüz bir şey yok — aracılar görevleri alıp bitirdikçe olaylar burada görünür.`,destroyTitle:`SDD projesi yok edilsin mi?`,destroyDesc:`Bu, çalışmayı ve işini siler. Geri alınamaz (isteğe bağlı commit geri alma geçmiş korur).`,stopRun:`Çalışmayı durdur`,stopRunAgents_one:`Çalışmayı durdur ({{count}} aracı çalışıyor)`,stopRunAgents_other:`Çalışmayı durdur ({{count}} aracı çalışıyor)`,removeWorktreesAll:`Tüm git worktree'leri + wstack/ap/* dallarını kaldır — birleştirilmemiş iş dahil`,removeWorktreesCount_one:`{{count}} git worktree + wstack/ap/* dallarını kaldır — birleştirilmemiş iş dahil`,removeWorktreesCount_other:`{{count}} git worktree + wstack/ap/* dallarını kaldır — birleştirilmemiş iş dahil`,deleteArtifacts:`Tüm SDD yapılarını sil (spec'ler, görev grafiği, pano, oturum)`,revertMerged_one:`Ayrıca {{count}} birleştirilmiş commit'i geri al`,revertMerged_other:`Ayrıca {{count}} birleştirilmiş commit'i geri al`,revertHint:`Geri alma commit'leri ekler (geçmiş korunur). Çalışma ağacı kirliyse reddedilir.`,baseBranchFallback:`taban dal`,noteLeaveMerged:`Birleştirilmiş commit'ler taban dalda bırakılır. Onları da geri almak için yukarıdaki kutuyu işaretleyin.`,noteAbandon:`Bu çalışmayı gerçekten terk etmek istediğinizden emin olun.`,destroying:`Yok ediliyor…`,destroyAll:`Her şeyi yok et`,kanbanBacklog:`Bekleme`,kanbanReady:`Hazır`,kanbanRunning:`Çalışıyor`,kanbanReview:`İnceleme`,kanbanFailed:`Başarısız`,kanbanDone:`Tamamlandı`,kanbanEmpty:`boş`},O={collapseToLines:`İlk {{count}} satıra daralt`,showAllLines:`Tümünü göster: {{total}} satır ({{more}} satır daha)`,exitCode:`çıkış kodu:`,jsonLines:`JSON · {{count}} satır`,collapse:`daralt`,expand:`genişlet`},k={heading:`Tasarım Stüdyosu — Galeri`,kitsCount:`{{count}} kit`,searchPlaceholder:`Kit ara…`,stackTitle:`Use + Materialize için yığın`,wrote:`{{path}} yazıldı`,materializeFailed:`Materialize başarısız: {{error}}`,verifyError:`Doğrula: {{error}}`,verifyOffPalette:`Doğrula: %{{pct}} palet üzerinde — {{files}} dosyada {{count}} palet dışı`,verifyClean:`Doğrula: temiz ✓ ({{files}} dosya palet üzerinde)`,writing:`Tema dosyası yazılıyor…`,scanning:`Arayüz dosyaları taranıyor…`,active:`Etkin`,reapply:`Yeniden uygula`,use:`Kullan`,materializeTitle:`Token'ları bir {{stack}} tema dosyasına yaz`,materialize:`Materialize`,verifyTitle:`Palet dışı renkler için arayüz dosyalarını tara`,verify:`Doğrula`,colors:`Renkler`},A={summary_one:`{{count}} aşama · %{{pct}} tamamlandı`,summary_other:`{{count}} aşama · %{{pct}} tamamlandı`,switchBoard:`Panoyu değiştir`,boardsCount_one:`{{count}} pano…`,boardsCount_other:`{{count}} pano…`,toggleAutonomousTitle:`Otonom modu aç/kapat`,autonomous:`Otonom`,manual:`Manuel`,resumeTitle:`Çalıştırmayı sürdür`,pauseTitle:`Çalıştırmayı duraklat`,resume:`Sürdür`,pause:`Duraklat`,stopTitle:`Çalıştırmayı durdur — devam eden vekilleri hemen iptal eder`,stop:`Durdur`,newTitle:`Bu panoyu temizle ve yeni bir Goal çalıştırması başlat`,newLabel:`Yeni`,revertConfirm:`Çalıştırmanın commit'leri geri alınsın mı?`,revertTitle:`Bu çalıştırmayı geri al — işlediği commit'leri git-revert yap ve worktree'lerini kaldır`,revert:`Geri al`,goal:`Hedef`,planning:`Aşamalar planlanıyor…`,planningBody:`Hedefiniz alındı. WrongStack onu aşamalara ve görevlere bölüyor — plan hazır olduğunda pano burada görünür.`,startHeading:`Aşama Planı Başlat`,startBody:`Ne inşa etmek istediğinizi açıklayın. WrongStack aşamaları ve görevleri planlar, sonra uygular — çalıştırmayı panoda izleyin ve yönlendirin.`,startPlaceholder:`örn. Express ve SQLite ile kullanıcı yönetimi için bir REST API oluştur...`,isolateLabel:`Her aşamayı kendi git worktree'sinde izole et`,startButton:`Goal Başlat`,ctrlHint:`Başlatmak için Ctrl+Enter`,isolateOn:`aşamalar izole worktree'lerde çalışır, squash-merge edilir`,isolateOff:`aşamalar doğrudan mevcut dalda çalışır`,lanes:`Şeritler`,graph:`Graf`,planningAck:`🚀 **Goal** — anlaşıldı. Hedefiniz için aşamalar planlanıyor…`},j={noObservers:`Canlı izleyici yok`,observerTitle:`Salt okunur izleyici olarak katıl (Aşama 1)`,observerRole:`izleyici`,annotatorTitle:`Açıklayıcı olarak katıl — araç çağrılarına satır içi not bırak (Aşama 2)`,annotatorRole:`açıklayıcı`,controllerTitle:`Kontrolör olarak katıl — vekil döngüsünü duraklatabilir (Aşama 3)`,controllerRole:`kontrolör`,errorPrefix:`Collab: {{error}}`,dismiss:`kapat`,observers_one:`{{count}} izleyici`,observers_other:`{{count}} izleyici`,annotationsTitle:`{{count}} açık not — açıklayıcılar bu oturumu inceliyor`,notes_one:`{{count}} not`,notes_other:`{{count}} not`,pausedTitle:`Vekil döngüsü duraklatıldı — bir kontrolör inceliyor`,paused:`duraklatıldı`,joinedTitle:`Katıldı {{time}}`,grantTitle:`Kontrol ver — bu katılımcıyı kontrolöre yükselt`,injectTitle:`Bekleyen bir araç çağrısı için sentetik sonuç enjekte et`,inject:`Enjekte et`,resumeTitle:`Vekil döngüsünü sürdür`,resume:`Sürdür`,pauseTitle:`Bir sonraki araç çağrısından önce vekili duraklat`,pauseAgent:`Vekili duraklat`,leaveTitle:`İzleyici oturumundan ayrıl`,leave:`Ayrıl`,injectToolResult:`Araç sonucu enjekte et`,close:`kapat`,targetTool:`Hedef tool_use kimliği`,targetPlaceholder:`bekleyen bir çağrı seç veya bir tool_use kimliği yaz`,toolFallback:`araç`,noPendingTools:`Bekleyen araç çağrısı yok — ön sıraya almak için bir tool_use kimliği yazın veya önce vekili duraklatın.`,resultContent:`Sonuç içeriği`,resultPlaceholder:`Aracı çalıştırmak yerine vekile beslenen sentetik araç sonucu`,markError:`hata olarak işaretle`,reasonPlaceholder:`neden (denetim günlüğü)`,queueInjection:`Enjeksiyonu sıraya al`,controllerInjection:`kontrolör enjeksiyonu`},M={reconnecting:`Arka uca yeniden bağlanılıyor (deneme {{attempt}}) — {{remaining}} sn içinde yeniden denenecek`,disconnected:`Arka uçtan bağlantı kesildi`,retry:`Şimdi yeniden dene`,retryTitle:`Bağlantıyı şimdi yeniden dene`,dismissTitle:`Kapat (üst çubuktaki chip durumu hâlâ gösterir)`},N={modePrefix:`kip:`,activeTitle:`Etkin kip`,heading:`Kip`,defaultName:`Varsayılan`,defaultDesc:`Standart vekil davranışı`},P={clickTitle:`Tur başına maliyet dökümü için tıklayın`,heading:`Maliyet dökümü`,noPricing:`Geçerli model için fiyatlandırma yok — maliyet değerleri sıfır.`,noTurns:`Henüz tamamlanmış tur yok. Tur başına maliyeti burada görmek için bir komut çalıştırın.`,topExpensive_one:`En pahalı {{count}} tur`,topExpensive_other:`En pahalı {{count}} tur`},F={runDefault:`Çalıştırma varsayılanı`,useRunDefault:`Çalıştırma varsayılanını kullan`,filterPlaceholder:`Modelleri filtrele…`,loading:`Modeller yükleniyor…`,noMatch:`Eşleşme yok`},I={heading:`Modeli değiştir`,filterPlaceholder:`Sağlayıcıları ve modelleri filtrele…`,noSavedProviders:`Kayıtlı sağlayıcı yok — önce Ayarlar'da bir anahtar kaydedin.`,active:`etkin`},L={todos:`Yapılacaklar`,tasks:`Görevler`,plan:`Plan`},R={toggleAria:`Durumu değiştir: {{content}}`,removeTitle:`Todo'yu kaldır`,removeAria:`"{{content}}" kaldır`,completedCount_one:`{{count}} tamamlandı`,completedCount_other:`{{count}} tamamlandı`},z={start:`Başlat`,complete:`Tamamla`,retry:`Yeniden dene`,assign:`Ata`,assignTitle:`Aracı ata`,unassigned:`Atanmamış`,statusPending:`Bekliyor`,statusInProgress:`Devam ediyor`,statusBlocked:`Engelli`,statusFailed:`Başarısız`,statusReview:`İnceleme`,statusDone:`Tamamlandı`,startTitle:`Başlat`,completeTitle:`Tamamla`,fail:`Başarısız`,failTitle:`Başarısız olarak işaretle`,boardCount:`{{total}} görev · {{done}} tamamlandı`},B={toolCalls_one:`{{count}} araç çağrısı`,toolCalls_other:`{{count}} araç çağrısı`},V={removeTitle:`Referansı kaldır`,linesCount_one:`{{count}} satır`,linesCount_other:`{{count}} satır`},H={statusOpen:`Açık`,statusInProgress:`Devam ediyor`,statusDone:`Tamamlandı`,startTitle:`Başlat`,doneTitle:`Tamamlandı olarak işaretle`,reopenTitle:`Yeniden aç`,reopen:`Yeniden aç`},U={heading:`@ Dosyalar`,noMatch:`"{{query}}" ile eşleşen dosya yok`,searching:`Proje aranıyor…`},W={dismiss:`Kapat`},G={placeholder:`Sohbette ara…`,prevHit:`Önceki eşleşme`,nextHit:`Sonraki eşleşme`,close:`Kapat (Esc)`},K={statusPending:`Bekliyor`,statusReady:`Hazır`,statusRunning:`Çalışıyor`,statusPaused:`Duraklatıldı`,statusCompleted:`Tamamlandı`,statusFailed:`Başarısız`,statusSkipped:`Atlandı`,heading:`Aşamalar`,autonomousOn:`● Otonom`,autonomousOff:`○ Manuel`,autonomousOnTitle:`Otonom mod etkin — duraklatmak için tıklayın`,autonomousOffTitle:`Manuel mod — otonomu etkinleştirmek için tıklayın`,overallProgress:`Genel ilerleme`,tasksSuffix:`{{done}}/{{total}} görev`,agentsSuffix_one:`{{count}} aracı`,agentsSuffix_other:`{{count}} aracı`},q={triggerTitle:`Bağlam penceresi kipi`,ctxPrefix:`ctx:`,opsHeading:`Bağlam işlemleri`,compactNow:`Şimdi sıkıştır`,compactNowDesc:`Eski araç çıktısını ele`,compactAggressive:`Agresif sıkıştır`,compactAggressiveDesc:`Şimdi maksimum eleme`,repairContext:`Bağlamı onar`,repairDesc:`Yetim tool-use bloklarını düzelt`,debugContext:`Bağlamı hata ayıkla`,debugDesc:`Bölüm başına boyut dökümü`,windowHeading:`Bağlam penceresi`,keepElide:`{{k}} yakınını tut · {{t}}+ tokeni ele`,fallbackName:`Dengeli`,fallbackDesc:`Varsayılan rolling sıkıştırma`},J={kindAssistant:`Asistan`,kindThinking:`Düşünme`,kindToolCall:`Araç çağrısı`,kindToolResult:`Araç sonucu`,kindError:`Hata`,kindStatus:`Durum`,kindSystem:`Sistem`,title:`Sohbet geçmişi`,copyTitle:`Aracı sohbet geçmişini kopyala`,empty:`Bu aracı için henüz sohbet geçmişi yok.`},Y={heading:`Otonomi modu`,titlePrefix:`Otonomi: {{label}}`,descOff:`Tam manuel kontrol — vekil girdinizi bekler.`,descSuggest:`Vekil sonraki adımları önerir ama onay bekler.`,descAuto:`Vekil kısa onay gecikmesinden sonra otomatik ilerler.`,descEternal:`Vekil hedef tamamlanana kadar otonom çalışır.`,descEternalParallel:`Çok aracılı otonom yürütme — filo modu.`},X={heading:`Mesaj kuyruğu`,subtitle:`{{count}} kuyrukta · vekil bitirmeden önce gönderilen mesajlar`,btwTitle:`Bu arada — çalışan vekili bölmeyen takip mesajı olarak gönderilir`,steerTitle:`Yönlendir — çalışan vekili böler ve bu mesajla yeniden yönlendirir`,queueTitle:`Kuyrukta — mevcut vekil çalışması bitene kadar tutulur, sonra sırayla gönderilir`,sortNewestTitle:`En yeni önce sıralandı — en eski önce sıralamak için tıklayın`,sortOldestTitle:`En eski önce sıralandı — en yeni önce sıralamak için tıklayın`,newest:`En yeni`,oldest:`En eski`,clear:`Temizle`,clearTitle:`Tüm kuyruktaki mesajları temizle`,closeTitle:`Kapat`,emptyTitle:`Kuyruk boş`,emptyBody:`Mesaj eklemek için girdinin yanındaki btw / steer / kuyruğa ekle düğmelerini kullanın. Kuyruktaki öğeler mevcut vekil çalışması bitince sırayla gönderilir.`,removeTitle:`Kuyruktan kaldır`,footer:`Mesajlar, mevcut vekil çalışması bitince varış sırasına göre gönderilir. En yeni önce görmek için sıralama düğmesini kullanın.`},Z={heading:`Oturum kontrol noktaları`,countSuffix_one:`{{count}} kontrol noktası`,countSuffix_other:`{{count}} kontrol noktası`,description:`Oturumu herhangi bir kontrol noktasına geri sarın. Mesajlar ve dosya değişiklikleri o noktaya geri döner — LLM oradan hiçbir şey olmamış gibi devam eder.`,emptyTitle:`Henüz kontrol noktası yok`,emptyBody:`Her mesaj gönderdiğinizde kontrol noktaları otomatik oluşturulur. Birkaç mesaj gönderip geri dönün.`,latest:`en son`,msgSuffix_one:`{{count}} msg`,msgSuffix_other:`{{count}} msg`,footerPre:`Geri sarmak için herhangi bir kontrol noktasına tıklayın`,footerPost:`kapatmak için`},Q={statusActive:`Etkin`,statusPaused:`Duraklatıldı`,statusDone:`Tamamlandı`,statusFailed:`Başarısız`,statusAbandoned:`Terk edildi`,heading:`Hedef`,refined:`Arıtılmış`,progress:`İlerleme`,iterations:`yineleme`,deliverables:`Teslimatlar`,recentActivity:`Son etkinlik`},$={cleanTitle_one:`{{count}} yetim worktree temizlensin mi?`,cleanTitle_other:`{{count}} yetim worktree temizlensin mi?`,cleanMessage:`Önceki çalışmalardan kalan tüm git worktree + wstack/ap dalını zorla kaldırır. İçlerindeki birleştirilmemiş çalışma kaybolur.`,cleanConfirm:`Yetimleri temizle`,orphanCount_one:`Önceki çalışmalardan {{count}} yetim worktree`,orphanCount_other:`Önceki çalışmalardan {{count}} yetim worktree`,andMore:`…ve {{count}} daha`,cleanButtonTitle:`Tüm yetim worktree + dalları zorla kaldır`,removed_one:`✓ {{count}} yetim worktree kaldırıldı.`,removed_other:`✓ {{count}} yetim worktree kaldırıldı.`,cleanupFailed:`temizlik başarısız`,lanesHeading:`Worktree'ler`,base:`taban`,isolatedCount_one:`{{count}} yalıtılmış`,isolatedCount_other:`{{count}} yalıtılmış`,statusAllocating:`ayrılıyor`,statusActive:`etkin`,statusCommitting:`işleniyor`,statusMerging:`birleştiriliyor`,statusMerged:`birleştirildi`,statusConflict:`çakışma`,statusFailed:`başarısız`,conflictBadge:`ÇAKIŞMA`,graphAria:`{{base}} dışında worktree dal grafiği`,mergedLabel:`✓ {{base}} ile birleştirildi`},ee={heading:`Çalışan süreçler`,subtitle:`{{active}} etkin · {{total}} toplam`,killAll:`Tümünü sonlandır`,emptyTitle:`İzlenen süreç yok`,emptyBody:`Vekil bash veya exec araçlarını çalıştırdığında süreçler burada görünür. Etkin süreçler nabız atan LED gösterir.`,pidLabel:`PID {{pid}}`,protected:`korumalı`,protectedTitle:`Korumalı — kill/killAll'dan sağ kalır`,killTitle:`PID {{pid}} sonlandır`},te={tooLarge:`Diff atlandı (dosya satır içi göstermek için çok büyük).`},ne={placeholder:`Yedek model ekle…`,emptyHint:`Birincil model hız sınırladığında veya takıldığında sırayla denenir.`,moveUp:`Yukarı taşı`,moveDown:`Aşağı taşı`},re={loading:`Oturumler yükleniyor...`,apiUnavailable:`Oturum API'si kullanılamıyor:`,empty:`Canlı oturum yok. Burada görmek için başka bir wstack örneği açın.`,heading:`Canlı oturumlar ({{count}})`,autoRefresh:`5 sn'de bir otomatik yenile`,pidLabel:`PID {{pid}}`,agentMeta:`{{iter}} yineleme · {{tools}} araç · {{ago}}`,andMore:`... ve {{count}} daha`,noAgents:`Aracı yok`},ie={applyTitle:`Düzenlenen sürümü diske yaz`,applying:`Uygulanıyor…`,applied:`Uygulandı`,apply:`Uygula`},ae={showStack_one:`Yığın izini göster ({{count}} kare)`,showStack_other:`Yığın izini göster ({{count}} kare)`,hideStack_one:`Yığın izini gizle ({{count}} kare)`,hideStack_other:`Yığın izini gizle ({{count}} kare)`},oe={liveHeading:`Canlı`,clients:`İstemciler`,agents:`Aracılar`,model:`Model`,mode:`Kip`,toolCalls:`Araç çağrıları`,displayHeading:`Görünüm`,statsHud:`İstatistik HUD`,legends:`Açıklamalar`,minimap:`Mini harita`,zoomControls:`Yakınlaştırma kontrolleri`,animateWires:`Bağlantıları animasyonla`,backgroundHeading:`Arka plan`,bgDots:`Noktalar`,bgLines:`Çizgiler`,bgCross:`Çapraz`,bgNone:`Yok`},se={noParams:`(parametre yok)`,itemCount_one:`{{count}} öğe`,itemCount_other:`{{count}} öğe`,keyCount_one:`{{count}} anahtar`,keyCount_other:`{{count}} anahtar`},ce={roleYou:`Sen`,roleTool:`Araç`,roleThinking:`Düşünme`,roleAssistant:`Asistan`,inputLabel:`Girdi`,downloadTitle:`Dosya olarak indir`,empty:`(boş)`,hideDetails:`Detayları gizle`,showDetails:`Detayları göster`,showDetailsLines_one:`Detayları göster ({{count}} satır)`,showDetailsLines_other:`Detayları göster ({{count}} satır)`,editHint:`⌘/Ctrl+Enter ile kaydet · Esc ile iptal`,saveResend:`Kaydet ve yeniden gönder`,thinkingProcess:`Düşünme süreci`,thinkingMeta:`yineleme {{iter}} · {{dur}} · {{lines}}`,replay:`tekrar`,linesSuffix_one:`{{count}} satır`,linesSuffix_other:`{{count}} satır`,copyLog:`Günlüğü kopyala`,showFullLog:`Tüm günlüğü göster`,typing:`Yazıyor…`,noContent:`İçerik yok`,imageNotRetained:`Görsel önizlemesi yenilemeden sonra saklanmaz`,failedToSend:`⚠ Gönderilemedi`,autoPaused:`⚠️ _Otomatik ilerleme duraklatıldı — maksimum ardışık otomatik tur sayısına ulaşıldı. Devam etmek için bir şey yazın (otonomi açık kalır)._`,autoLoopHalted:`⚠️ _Aynı istem tekrarlandığı için otomatik gönderim durduruldu. Otonomi açık kalır; döngü korumasını sıfırlamak için yeni bir istem girin._`,rsIterations:`Yineleme: {{n}}`,rsTools:`Araç çağrısı: {{n}}`,rsElapsed:`Geçen: {{s}}`,rsCost:`Maliyet: {{c}}`,useInput:`Girdi: {{n}}`,useOutput:`Çıktı: {{n}}`,useCacheRead:`Önbellek okuma: {{n}}`,useCost:`Maliyet: {{c}}`,renderedLabel:`Gösterilen`,rawLabel:`Ham`,showRenderedTitle:`İşaretlenmiş markdown göster`,showRawTitle:`Ham markdown kaynağını göster`,editTitle:`Bu komutu düzenle ve yeniden gönder`,editLabel:`Düzenle`,unpinTitle:`Sabitlemeyi kaldır`,pinTitle:`Bu yanıtı sabitle`,pinnedLabel:`Sabitlendi`,pinLabel:`Sabitle`,regenerateTitle:`Bu yanıtı yeniden üret`,retryLabel:`Yeniden dene`},le={toolFallback:`araç`,toolFailed:`Araç başarısız`},ue={heading:`Klavye kısayolları`,footerPre:`İstediğiniz zaman`,footerPost:`bu listeyi yeniden açmak için basın.`,sectionGlobal:`Genel`,sectionTuiParity:`TUI panel eşliği`,sectionFleet:`Filo & Aracılar`,sectionChatInput:`Sohbet girişi`,sectionChat:`Sohbet`,sectionChatNav:`Sohbet gezinmesi (yazarken değil)`,dCommandPalette:`Komut paletini aç`,dShowOverlay:`Bu kısayol katmanını göster`,dToggleSidebar:`Kenar çubuğunu aç/kapat`,dOpenPanel:`Yan paneli aç (Oturum, Aracılar, Geçmiş, Dosyalar, Değişiklikler, Posta, Beceriler, Ofis Haritası)`,dDesignStudio:`Tasarım Stüdyosu yan panelini aç`,dWorktrees:`Worktree yan panelini aç`,dFocusInput:`Mesaj girişine odaklan`,dSessionPanel:`Oturum paneli`,dFleetOverlay:`Filo izleyici katmanı`,dAgentsOverlay:`Aracı izleyici katmanı`,dWorktreeMonitor:`Worktree izleyici`,dPlanPanel:`Plan paneli`,dTodosPanel:`Yapılacaklar paneli`,dQueuePanel:`Kuyruk paneli`,dProcessMonitor:`Süreç izleyici`,dGoalPanel:`Hedef paneli`,dSessionsDashboard:`Oturum panosu`,dOfficeMap:`Koordinatör ofis haritası`,dDockPicker:`Rıhtım çip seçici`,dOpenFleet:`Filo izleyici katmanını aç`,dOpenAgents:`Aracı izleyici katmanını aç`,dNavigateAgents:`İzleyicide aracılar arasında gezin`,dSelectAgent:`Odaklanan aracıyı seç`,dCloseOverlay:`Etkin katmanı kapat`,dSendMessage:`Mesaj gönder`,dNewline:`Yeni satır ekle`,dRecallPrev:`Önceki komutu geri çağır (boş girişte)`,dRecallNext:`Sonraki komutu geri çağır`,dSlashPopup:`Slash komut açılır penceresini aç`,dAutocomplete:`Vurgulanan komutu otomatik tamamla`,dDismissPopup:`Açılır pencereyi kapat / girişi temizle`,dSearchChat:`Mevcut sohbette ara`,dClearContext:`Bağlamı temizle (/clear ile aynı)`,dNewSession:`Yeni oturum başlat (/new ile aynı)`,dExportMarkdown:`Sohbeti markdown olarak dışa aktar`,dModelSwitcher:`Hızlı model değiştirici katmanı`,dCompactDensity:`Sıkışık UI yoğunluğunu aç/kapat`,dAbortRun:`Mevcut çalışmayı durdur (çalışırken)`,dFocusNext:`Sonraki mesaja odaklan (diğer ad: ↓)`,dFocusPrev:`Önceki mesaja odaklan (diğer ad: ↑)`,dJumpFirst:`İlk mesaja atla`,dJumpLast:`Son mesaja atla`,dCopyFocused:`Odaklanan mesaj metnini kopyala`,dClearFocused:`Odaklanan mesajı temizle`},de={titleFallback:`Canlı SDD Panosu`,defaultModelTitle:`Çalışma düzeyinde varsayılan işçi modeli (görev başına geçersiz kılmalar önceliklidir)`,graphLabel:`Graf`,kanbanLabel:`Kanban`,retryAllTitle:`Başarısız her görevi beklemede olacak şekilde yeniden kuyruğa al`,retryFailed:`Başarısız olanları yeniden dene ({{count}})`,resume:`Sürdür`,pause:`Duraklat`,stop:`Durdur`,cleanTitle:`Çalışmanın git worktree'lerini + wstack/ap dallarını kaldır`,cleanWorktrees:`Worktree'leri temizle`,rollbackTitle:`{{base}} üzerinde {{count}} birleştirilmiş commit'i geri al`,rollback:`Geri al ({{count}})`,stopping:`Durduruluyor…`,destroying:`Yok ediliyor…`,destroyTitle:`Durdur, tüm worktree'leri kaldır, isteğe bağlı olarak birleştirilmiş commit'leri geri al ve SDD projesini sil`,destroy:`Yok et`,statDone:`tamamlanan`,statRunning:`çalışan`,statFailed:`başarısız`,statWave:`dalga`,statElapsed:`geçen`,noActiveWorkers:`etkin işçi yok`,deadlock:`Kilitlenme — görevler başarısız iş tarafından engellendi:`,noRunTitle:`Etkin SDD çalışması yok.`,noRunBody:`Yeni SDD Projesi sihirbazından bir tane başlatın veya CLI'da /sdd execute ile — aracılar burada canlı görünür, her biri yalıtılmış bir worktree'de çalışır.`,clickTaskHint:`detaylar için bir göreve tıklayın`,lcClean:`Temizle`,lcRollback:`Geri al`,lcDestroy:`Yok et`,lcFailed:`{{op}} başarısız: {{reason}}`,lcUnknownError:`bilinmeyen hata`,lcWorktrees_one:`{{count}} worktree kaldırıldı`,lcWorktrees_other:`{{count}} worktree kaldırıldı`,lcCommits_one:`{{count}} commit geri alındı`,lcCommits_other:`{{count}} commit geri alındı`,lcDeleted:`silindi {{items}}`,lcNothing:`yapacak bir şey yok`,lcNote:`{{op}}: {{body}} — not: {{reason}}`,lcOk:`{{op}}: {{body}}`},fe={backTitle:`Etkinliğe dön`,expandTitle:`Görev detaylarını genişlet`,collapseTitle:`Görev detaylarını daralt`,eventLog:`Görev olay günlüğü`,newestFirst:`en yeni önce`,noEvents:`Bu görev için henüz bir etkinlik kaydedilmedi.`,workingOn:`bu görev üzerinde çalışıyor`,assigned:`atanmış`,metaPriority:`Öncelik`,metaType:`Tür`,metaDuration:`Süre`,metaElapsed:`Geçen`,metaRetries:`Yeniden deneme`,metaWorktree:`Worktree`,workerModel:`İşçi modeli`,runDefault:`çalışma varsayılanı: {{model}}`,runDefaultPlaceholder:`Çalıştırma varsayılanı`,runDefaultPlaceholderModel:`Çalıştırma varsayılanı ({{model}})`,verificationCmd:`Doğrulama komutu`,gatesCompletion:`tamamlamayı geçitler (exit 0)`,verifyPlaceholder:`örn. pnpm vitest run path/to/file`,addVerify:`+ Doğrulama komutu ekle`,description:`Açıklama`,timeline:`Zaman çizelgesi`,dependsOn:`Bağımlı olduğu`,blocks:`Engellediği`,newWorkerPlaceholder:`Yeni işçi adı…`,confirmStop:`Bu çalışan görev durdurulsun mu?`,confirmDelete:`Bu görev çalışmadan silinsin mi?`,retryTitle:`Bu görevi beklemeye yeniden kuyruğa al`,reassign:`Yeniden ata`,stopTitle:`Bu görevdeki işçiyi iptal et`,splitTitle:`Bu görevi ayrı işçilere devredilen alt görevlere böl`,split:`Böl`,splitHint:`Satır başına bir alt görev — Başlık :: açıklama (açıklama isteğe bağlı)`,splitPlaceholder:`Veri katmanını yaz :: depoyu ekle
|
|
4
|
-
Arayüzü bağla`,splitInto:`Alt görevlere böl`,deleteTitle:`Bu başlatılmamış görevi çalışmadan kaldır`},pe={phaseStart:`Başlat`,phaseInterview:`Görüşme`,phaseSpecReview:`Spec İncelemesi`,phasePlanning:`Planlama`,phaseTaskReview:`Görev İncelemesi`,phaseRunning:`Çalışıyor`,phaseDone:`Tamamlandı`,titleFallback:`Yeni SDD Projesi`,questionsSuffix:`{{cur}}/{{max}} soru`,tasksSuffix:`{{count}} görev`,runCfgTitle:`Çalıştırma yapılandırması — varsayılan model + yedek zinciri`,modelsLabel:`Modeller`,startRun:`Çalışmayı Başlat`,defaultWorkerModel:`Varsayılan işçi modeli`,leaderDefaultPlaceholder:`Lider / oturum varsayılanı`,useSessionDefault:`Oturum varsayılanını kullan`,fallbackChain:`Yedek zinciri`,appliesToAll:`Her göreve uygulanır. Çalışma başladıktan sonra canlı panodan görev başına geçersiz kılın.`,parallelAgents:`Paralel aracılar`,isolateWorktrees:`Git worktree'lerinde yalıt`,worktreeOn:`Her görev kendi worktree'sinde çalışır, tamamlandığında squash-merge edilir.`,worktreeOff:`Görevler doğrudan mevcut dalda çalışır (yalıtım yok).`,goalPrompt:`Ne inşa etmek istiyorsunuz?`,goalPlaceholder:`örn. Oturum yönetimiyle OAuth girişi (Google + GitHub) ekle`,startingInterview:`Görüşme başlatılıyor…`,startInterview:`Görüşmeyi Başlat`,introBody:`Yalıtılmış bir aracı, bir spec oluşturmak için sizinle görüşme yapar, bunu bağımlılık sıralı bir görev grafiğine ayırır, ardından gerçek bir çok aracılı filo yürütür — panoda canlı izleyin.`,taskGraphSummary:`Görev grafiği · {{count}} görev, bağımlılık sıralı`,dragToExplore:`keşfetmek için sürükle`,show:`göster`,goalLabel:`Hedef`,implementationPlan:`Uygulama planı`,approveSpec:`Spec'i onayla → uygulamayı planla`,approveTasks:`Görevleri onayla`,approvePlan:`Planı onayla`,answerPlaceholder:`Soruyu cevapla…`,changePlaceholder:`Değişiklik iste…`},me={emptyDir:`boş`,loadFailed:`Dosyalar yüklenemedi: {{error}}`,expandAllTitle:`Tüm dizinleri genişlet`,expandAll:`Tümünü genişlet`,collapseAllTitle:`Tüm dizinleri daralt`,collapse:`Daralt`,folders_one:`{{count}} klasör`,folders_other:`{{count}} klasör`,currentDirTitle:`Mevcut dizin: {{path}}`,navigateToTitle:`{{path}} konumuna git`,filesSuffix_one:`{{count}} dosya`,filesSuffix_other:`{{count}} dosya`,goToDir:`dizine git`,navigateParentTitle:`{{path}} dosyasının üst dizinine git`,parentDirectory:`üst dizin`,noFiles:`Dosya bulunamadı`,copyAbsPath:`Mutlak yolu kopyala`,copyRelPath:`Göreli yolu kopyala`,openInTerminal:`Terminalde aç`,openInFileManager:`Dosya yöneticisinde aç`,mentionInChat:`Sohbette bahset`,copyPath:`Yolu kopyala`},he={sendSelectionAction:`Seçimi sohbete gönder`,noFilesOpen:`Açık dosya yok`,selectToEdit:`Düzenlemeye başlamak için gezginden bir dosya seçin`,sendSelectedTitle:`Seçili satırları sohbete gönder`,mentionFileTitle:`Bu dosyayı sohbette bahset`,sendToChat:`Sohbete gönder`,mentionFile:`Dosyayı bahset`,loadingEditor:`Düzenleyici yükleniyor…`,selectTab:`İçeriğini görmek için bir sekme seçin`},ge={title:`Dosya aktivitesi`,overview:`Özet`,changes:`Değişiklikler`,context:`Bağlam`,logs:`Loglar`,lines:`satır`,resizeHint:`Boyutlandırmak için sürükle · sıfırlamak için çift tıkla`,refresh:`Dosya kanıtlarını yenile`,evidenceCount_one:`{{count}} olay`,evidenceCount_other:`{{count}} olay`,mutations30m:`Değişim · 30 dk`,sessions:`Session'lar`,actors:`Değiştirenler`,linkedWork:`İş bağlantıları`,workLinks:`Kanban / todo`,recentActivity:`Son dosya aktiviteleri`,events:`olay`,noEvidence:`Henüz bu dosyayla ilişkilendirilmiş aktivite yok.`,noSessions:`Henüz session eşleşmesi yok.`,noActors:`Henüz değiştiren kişi/süreç eşleşmesi yok.`,noWorkLinks:`Kanban, SDD veya todo bağlantısı kaydedilmemiş.`,taskOrTodo:`Task / todo`,loadingEvidence:`Dosya kanıtları yükleniyor…`,gitToBuffer:`Git HEAD → mevcut Monaco buffer`,savedToBuffer:`Son kayıt → mevcut Monaco buffer`,unsaved:`kaydedilmemiş buffer`,level:{quiet:`sakin`,active:`aktif`,churn:`yüksek churn`},analysisTitle:{quiet:`Yakın zamanda değişiklik trafiği yok`,active:`Bu dosya değiştiriliyor`,churn:`Tekrarlayan değişiklikler algılandı`},analysisBody:{quiet:`Son 30 dakikada ilişkilendirilmiş bir değişiklik kaydı yok.`,active:`Son 30 dakikada {{actors}} aktör ve {{sessions}} session üzerinden {{mutations}} değişiklik yapıldı.`,churn:`Yüksek churn: {{actors}} aktör ve {{sessions}} session üzerinden {{mutations}} değişiklik yapıldı. Sonraki düzenlemeden önce çakışan işleri kontrol et.`}},_e={loading:`Analitik yükleniyor…`,heading:`Analitik Panosu`,autoRefresh:`10 sn'de bir otomatik yenile`,liveSessions:`Canlı oturumlar`,agents:`Aracılar`,agentsActive:`{{count}} etkin`,totalEvents:`Toplam olay`,categoriesSub:`{{count}} kategori`,toolCalls:`Araç çağrıları`,iterationsSub:`{{count}} yineleme`,sessionCost:`Oturum maliyeti`,tokensSub:`{{input}} girdi / {{output}} çıktı`,sessionDuration:`Oturum süresi`,messagesSub:`{{count}} mesaj`,eventsByCategory:`Kategoriye göre olaylar`,noEvents:`Henüz kayıtlı olay yok.`,topEvents:`En çok olaylar`,activeSessionUsage:`Etkin oturum kullanımı`,provider:`Sağlayıcı`,model:`Model`,inputTokens:`Girdi tokenleri`,outputTokens:`Çıktı tokenleri`,cacheRatio:`Önbellek oranı`,filesRead:`Okunan dosya`,noSession:`Etkin oturum yok veya veri bekleniyor…`,healthErrors:`Sağlık & hatalar`,errorEvents:`Hata olayları`,warningEvents:`Uyarı olayları`,cacheHitRate:`Önbellek isabet oranı`,totalCategories:`Toplam kategori`,waitingData:`Veri bekleniyor…`,recentEvents:`Son olaylar`,noRecentEvents:`Yakın olay yok. Olay oluşturmak için arayüzle etkileşin.`},ve={heading:`Prompt kitaplığı`,searchPlaceholder:`Promptları ara…`,newPrompt:`+ Yeni prompt`,all:`Tümü`,recent:`🕘 Son`,favorites:`★ Favoriler`,noMatch:`Eşleşen prompt yok.`,newPromptHeading:`Yeni prompt`,titlePlaceholder:`Başlık *`,descPlaceholder:`Tek satır açıklama`,categoryPlaceholder:`Kategori`,tagsPlaceholder:`etiketler, virgül, ile ayrılmış`,contentPlaceholder:`Prompt içeriği * — değişkenler için {{name}} kullanın`,variables:`Değişkenler`,addVar:`+ değişken`,varNamePlaceholder:`ad`,varDescPlaceholder:`açıklama`,removeVarTitle:`Değişkeni kaldır`,required:`zorunlu`,multiline:`çok satırlı`,enumPlaceholder:`enum: a, b, c`,savePrompt:`Promptu kaydet`,saveFailed:`Prompt kaydedilemedi.`,titleContentRequired:`Başlık ve içerik zorunludur.`,toggleFavoriteTitle:`Favori değiştir`,selectOption:`— seç —`,fillMissing:`Doldur: {{missing}}`,insertIntoChat:`Sohbete ekle`,selectPromptHint:`Önizlemek ve eklemek için bir prompt seçin.`},ye={scopeProject:`Proje`,scopeGlobal:`Global`,scopeBundled:`Paketlenmiş`,timeoutError:`İstek zaman aşımına uğradı. Lütfen tekrar deneyin.`,updateFailed:`Güncelleme başarısız`,saveFailed:`Kaydetme başarısız`,uninstallFailed:`Kaldırma başarısız`,noSkillSelected:`Beceri seçilmedi`,selectSkillHint:`Belgelerini görmek için kenar çubuğundan bir beceri seçin`,goToChat:`Sohbete git`,openSourceRepo:`Kaynak repoyu aç`,copySourceUrl:`Kaynak URL'sini kopyala`,updatedLabel:`↑ Güncellendi: {{list}}`,upToDateLabel:`— Güncel: {{list}}`,errorsLabel:`✗ {{list}}`,checkUpdatesTitle:`Güncellemeleri kontrol et`,exportTitle:`Beceriyi .md olarak dışa aktar`,editTitle:`Beceriyi düzenle`,uninstallTitle:`Beceriyi kaldır`,closeTitle:`Kapat ve sohbete git`,backTitle:`Geri git`,forwardTitle:`İleri git`,relatedFiles:`İlgili dosyalar`,references:`Referanslar`,goToSkillTitle:`{{name}} becerisine git`,loadingContent:`Beceri içeriği yükleniyor…`,editingLabel:`Düzenleniyor {{name}}`,editStats:`{{lines}} satır · {{words}} kelime · {{chars}} karakter`,charsWarningFmt:`⚠ {{used}} MB / {{limit}} MB`,draftSaved:`Taslak kaydedildi`,draftRestored:`Taslak geri yüklendi`,discardDraft:`Taslağı sil`,splitViewTitle:`Bölünmüş görünüm`,hidePreviewTitle:`Önizlemeyi gizle`,contentPlaceholder:`Beceri içeriği (markdown)...`,loadFailed:`Beceri içeriği yüklenemedi`,noContent:`Beceri içeriği yok`,uninstallSkillHeading:`Beceriyi kaldır`,uninstallConfirm:`{{name}} kaldırılsın mı?`,uninstallRemovePath:`Bu, beceriyi {{path}} konumundan kaldırır ve geri alınamaz.`,uninstallAction:`Kaldır`},be={sessionStats:`Oturum istatistikleri`,clients:`İstemciler`,input:`Girdi`,output:`Çıktı`,cost:`Maliyet`,agentsSuffix:`aracı`,upPrefix:`{{time}} süredir`,webuiClient:`WebUI İstemcisi`,disconnected:`Bağlantı kesildi`,connected:`Bağlı`,tuiClient:`TUI İstemcisi`,terminal:`Terminal`,repl:`REPL`,coordinator:`KOORDİNATÖR`,fleetSummary:`Filo özeti`,toolCallsLabel:`Araç çağrıları`,tokensLabel:`Tokenler`,coordinatingFleet:`Filoyu koordine ediyor`,donePrefix:`✓ tamam ·`,failedPrefix:`✕ başarısız ·`,seenPrefix:`{{time}} önce görüldü`,availableDesk:`Müsait masa`,mailboxHub:`Posta Merkezi`,unreadSuffix_one:`{{count}} okunmamış`,unreadSuffix_other:`{{count}} okunmamış`,allClear:`Hepsi tamam`,total:`Toplam`,unreadLabel:`Okunmamış`,liveActivity:`Canlı etkinlik`,waitingActivity:`Etkinlik bekleniyor…`,now:`şimdi`,fleetHq:`WrongStack Filo Karargahı`,live:`CANLI`,legendStatus:`Durum`,legendActive:`Etkin`,legendIdle:`Boşta`,legendError:`Hata`,legendConnections:`Bağlantılar`,legendMail:`Posta`,legendTask:`Görev`,legendStatusConn:`Durum`,arrange:`Düzenle`,arrangeTitle:`Düğümleri kullanılabilir ekrana sığacak şekilde düzenle`,feed:`Akış`,feedTitle:`Canlı etkinlik akışını aç/kapat`,broadcast:`Yayınla`,broadcastTitle:`Bu projedeki her canlı oturuma mesaj yayınla`,broadcastToAll:`Tüm oturumlara yayınla`,broadcastPlaceholder:`Bu projedeki her canlı aracıya mesaj gönder…`,broadcastSendHint:`göndermek için ⌘/Ctrl+Enter`,openFullView:`Tam işlem görünümünü aç`,rowStatus:`Durum`,rowModel:`Model`,rowTool:`Araç`,rowIterations:`Yinelemeler`,rowToolCalls:`Araç çağrıları`,rowTokensIn:`Girdi tokenleri`,rowTokensOut:`Çıktı tokenleri`,rowTokensTotal:`Toplam token`,rowContext:`Bağlam`,rowCost:`Maliyet`,rowLastSeen:`Son görülme`,rowSurface:`Yüzey`,rowBranch:`Dal`,rowPid:`PID`,rowDir:`Dizin`,rowAgents:`Aracılar`,rowUptime:`Çalışma süresi`,rowConnections:`Bağlantılar`,rowTotalMessages:`Toplam mesaj`,rowUnread:`Okunmamış`,recent:`Son`,noSubject:`(konusuz)`,fullOperationStream:`Tam işlem akışı`,closeEsc:`Kapat (Esc)`,idleDesk:`Boş masa`,fleetHqLabel:`Filo Karargahı`,clientsSuffix_one:`{{count}} istemci`,clientsSuffix_other:`{{count}} istemci`,taskFallback:`görev`,controlLabel:`kontrol`},xe={installTitle:`Beceri yükle`,createTitle:`Beceri oluştur`,exportTitle:`Tüm becerileri .zip olarak dışa aktar`,checkUpdatesTitle:`Güncellemeleri kontrol et (tüm beceriler)`,searchPlaceholder:`Beceri ara…`,loading:`Yükleniyor…`,noSkills:`Yüklü beceri yok`,noMatch:`Filtreyle eşleşen beceri yok`,noDescription:`Açıklama yok`,scopeForeign:`Yabancı`,installHeading:`Beceri Yükle`,installHint:`Bir GitHub depo referansı (owner/repo) veya tam URL girin.`,installPlaceholder:`örn. wrongstack/skill-name veya https://github.com/owner/repo`,installScope:`Yükleme kapsamı:`,installBtn:`Yükle`,installedMsg:`Yüklendi: {{names}}`,installFailed:`Yükleme başarısız`,createHeading:`Beceri Oluştur`,createHint:`Yeni beceri iskeleti. İlk satır tetikleyicidir; ek satırlar açıklamayı oluşturur.`,nameLabel:`Ad`,namePlaceholder:`örn. benim-yeni-becerim`,descLabel:`Açıklama / Tetikleyici`,descPlaceholder:`Bu beceriyi <tetikleyici durumu> olduğunda kullan.
|
|
5
|
-
Tetikleyiciler: kullanıcı "anahtar kelime", "başka" der.`,saveIn:`Kaydet:`,createBtn:`Beceri Oluştur`,createdMsg:`Oluşturuldu: {{name}}`,createFailed:`Oluşturma başarısız`},Se={noEvents:`Henüz olay yok.`},Ce={pickHint:`Bir kit seç — ajan buna uyacak.`,gallery:`Galeri`,galleryTitle:`Canlı önizleme galerisini aç`,stackTitle:`Hedef yığın`,loading:`Kitler yükleniyor…`,notFound:`Tasarım kiti bulunamadı.`,bestFor:`En uygun:`,light:`Açık`,dark:`Koyu`},we={detached:`(ayrık)`,count_one:`{{count}} worktree`,count_other:`{{count}} worktree`,baseSuffix:` · taban {{base}}`,baseLabel:`taban`,cleanOrphans:`Yetim olanları temizle`,cleanOrphansTitle:`Tüm yetim worktree'leri kaldır`,liveBusyTitle:`Bir çalışma canlı — önce durdurun`,rescanTitle:`Yeniden tara`,removed_one:`{{count}} worktree kaldırıldı.`,removed_other:`{{count}} worktree kaldırıldı.`,failed:`Başarısız`,mergedIntoBase:`{{branch}} tabana birleştirildi.`,conflictMerge:`{{branch}} birleştirilirken çakışma: {{files}}`,seeGit:`git'e bakın`,mergeFailed:`Birleştirme başarısız: {{reason}}`,unknownReason:`bilinmiyor`,mergeConfirmTitle:`{{branch}}, {{base}} ile birleştirilsin mi?`,mergeConfirmMsg:`Bu dalı taban dala squash-birleştirir. Çakışırsa temizce iptal eder.`,mergeAction:`Birleştir`,removeConfirmTitle:`{{branch}} kaldırılsın mı?`,removeConfirmMsg:`Worktree checkout'u zorla kaldırır ve dalını siler. Birleştirilmemiş iş kaybolur.`,empty:`Worktree yok.`,emptyHint:`SDD / Goal çalışmaları burada izole worktree'ler oluşturur. Çöken çalışmalardan yetimler de görünür.`,actOpenTerm:`Terminalde aç`,actOpenFolder:`Klasörü aç`,actViewChanges:`Değişiklikleri gör`,actMerge:`Tabana birleştir`,actRemove:`Kaldır / at`,live:`canlı`,noUncommitted:`İşlenmemiş değişiklik yok`,commitsAhead_one:`{{count}} commit önde`,commitsAhead_other:`{{count}} commit önde`,more:`…{{count}} daha`},Te={heading:`Ofis Haritası`,headingHint:`Filoğunuzu canlı ajan durumuyla bir ofis kat planı olarak görselleştirin.`,statAgents:`Ajanlar`,statMail:`Posta`,unreadSuffix:` okunmamış`,sectionView:`Görünüm`,sectionDisplay:`Görüntü`,sectionBackground:`Arka plan`,sectionRecent:`Son Etkinlik`,eventsTrackedSuffix:` olay izlendi`,recentHint:`Posta gönderimleri, ajan oluşumları ve durum değişiklikleri burada görünür.`,sectionShortcuts:`Kısayollar`,sectionLegend:`Açıklama`,hudLabel:`HUD`,hudDesc:`Gerçek zamanlı oturum istatistik katmanını göster`,hudToggle:`HUD'u aç/kapat`,minimapLabel:`Mini harita`,minimapDesc:`Genel mini haritayı göster`,minimapToggle:`Mini haritayı aç/kapat`,controlsLabel:`Kontroller`,controlsDesc:`Yakınlaştırma ve sığdırma kontrollerini göster`,controlsToggle:`Kontrolleri aç/kapat`,animateLabel:`Kenarları canlandır`,animateDesc:`Aktif bağlantılarda akışı canlandır`,animateToggle:`Kenar animasyonunu aç/kapat`,legendLabel:`Açıklamayı göster`,legendDesc:`Durum ve bağlantı açıklamasını görüntüle`,legendToggle:`Açıklamayı aç/kapat`,feedLabel:`Canlı akış`,feedDesc:`En son çapraz süreç etkinliklerinin alt şeridi`,feedToggle:`Canlı akışı aç/kapat`,fitView:`Sığdır`,zoomIn:`Yakınlaştır`,zoomOut:`Uzaklaştır`,resetZoom:`Yakınlaştırmayı sıfırla`,legendActive:`Aktif (çalışıyor)`,legendIdle:`Boşta`,legendError:`Hata`,legendOffline:`Çevrimdışı`,bg:{dots:`Noktalar`,lines:`Çizgiler`,cross:`Çapraz`,none:`Yok`}},Ee={liveProjectOffice:`Canlı proje ofisi`,agents:`ajan`,working:`çalışıyor`,toolCalls:`araç çağrısı`,office:`Ofis`,topology:`Topoloji`,officeDescription:`Canlı ajan masaları ve işler`,topologyDescription:`İstemciler, ajanlar ve bağlantılar`,team:`Ekip`,liveDesk:`Canlı masa ve gelen işler`,lastActions:`Son işler`,leadAgent:`Lider ajan`,agent:`Ajan`,callsCount:`{{count}} çağrı`,recent:`Son işlemler`,noCalls:`Henüz tamamlanan çağrı yok`,telemetryReconnect:`Araç geçmişi için bu terminali yeniden bağlayın`,thinking:`Düşünüyor`,waiting:`İş bekliyor`,preparing:`Sonraki eylemi hazırlıyor…`,deskReady:`Masa hazır`,toolCall:`Araç çağrısı`,execution:`Çalıştırma`,started:`Başlangıç`,duration:`Süre`,session:`Oturum`,target:`Hedef`,resultSize:`Sonuç boyutu`,lines:`satır`,bytes:`bayt`,tokens:`token`,input:`Girdi`,outputPreview:`Çıktı önizlemesi`,readyTitle:`Ofis hazır`,readyBody:`Ajanlar bu projeye katılır katılmaz masalarına oturacak.`,liveEvent:`canlı olay akışı`,connectedSessions_one:`{{count}} bağlı oturum`,connectedSessions_other:`{{count}} bağlı oturum`,detailHint:`tam girdi ve sonuç ayrıntısı için herhangi bir eyleme tıklayın`,officeBriefing:`Ofis brifingi`,leaderPrompt:`Liderin son aldığı prompt`,activeInstruction:`Aktif talimat`,telemetryWaiting:`Canlı talimat için bu terminali yeniden bağlayın`,syncWaiting:`senkron bekleniyor`,todoTelemetryWaiting:`Canlı todo listesi için bu terminali yeniden bağlayın`,taskNotReported:`Çalışıyor ancak görev açıklaması bildirilmedi`,noPrompt:`Bu oturumda henüz prompt alınmadı`,activeTodos:`Aktif yapılacaklar`,todoProgress:`{{done}}/{{total}} tamamlandı`,allTodosDone:`Tüm işler tamamlandı`,noActiveTodos:`Henüz aktif iş yok`,moreTodos:`+{{count}} iş daha`,currentTask:`Mevcut görev`,task:`Görev`,promptReceived:`Alınma zamanı`,todos:`Yapılacaklar`,todoStatus:{pending:`Bekliyor`,in_progress:`Devam ediyor`,completed:`Tamamlandı`}},De={tabProject:`SDD Projesi`,tabBoard:`Canlı SDD Panosu`,tabSpecs:`Spesifikasyonlar`},Oe={nav:e,brand:t,status:n,menu:r,sidePanel:i,history:a,agents:o,changes:s,inspector:c,nextSteps:l,mailbox:u,sessions:d,sessionPanel:f,fleet:p,context:m,refine:h,specs:g,refresh:_,board:v,debug:y,providerModels:b,dock:x,agentsMonitor:S,terminal:C,sessionWatch:w,sideEffects:T,monitor:E,sdd:D,toolResult:O,design:k,goalRun:A,collab:j,connection:M,mode:N,cost:P,model:F,modelSwitcher:I,work:L,todos:R,task:z,toolGroup:B,fileRef:V,plan:H,filePicker:U,toast:W,search:G,phase:K,ctxMode:q,transcript:J,autonomy:Y,queue:X,checkpoint:Z,goal:Q,worktree:$,process:ee,diff:te,fallback:ne,liveSessions:re,monacoDiff:ie,errorBody:ae,officeMap:oe,toolInput:se,message:ce,watch:le,shortcuts:ue,sddBoard:de,sddTask:fe,sddWizard:pe,fileExplorer:me,codeEditor:he,fileActivity:ge,analytics:_e,promptLib:ve,skillDetail:ye,office:be,skillsList:xe,timeline:Se,designStudio:Ce,worktrees:we,officeSettings:Te,agentOffice:Ee,sddhub:De};export{Ee as agentOffice,o as agents,S as agentsMonitor,_e as analytics,Y as autonomy,v as board,t as brand,s as changes,Z as checkpoint,he as codeEditor,j as collab,M as connection,m as context,P as cost,q as ctxMode,y as debug,Oe as default,k as design,Ce as designStudio,te as diff,x as dock,ae as errorBody,ne as fallback,ge as fileActivity,me as fileExplorer,U as filePicker,V as fileRef,p as fleet,Q as goal,A as goalRun,a as history,c as inspector,re as liveSessions,u as mailbox,r as menu,ce as message,N as mode,F as model,I as modelSwitcher,ie as monacoDiff,E as monitor,e as nav,l as nextSteps,be as office,oe as officeMap,Te as officeSettings,K as phase,H as plan,ee as process,ve as promptLib,b as providerModels,X as queue,h as refine,_ as refresh,D as sdd,de as sddBoard,fe as sddTask,pe as sddWizard,De as sddhub,G as search,f as sessionPanel,w as sessionWatch,d as sessions,ue as shortcuts,T as sideEffects,i as sidePanel,ye as skillDetail,xe as skillsList,g as specs,n as status,z as task,C as terminal,Se as timeline,W as toast,R as todos,B as toolGroup,se as toolInput,O as toolResult,J as transcript,le as watch,L as work,$ as worktree,we as worktrees};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
var e={chat:`Sessão`,agents:`Agentes`,history:`Histórico`,files:`Arquivos`,changes:`Alterações`,mailbox:`Caixa de entrada`,skills:`Skills`,worktrees:`Worktrees`,design:`Design Studio`,officemap:`Mapa de escritórios`,settings:`Configurações`,sddhub:`SDD`,goal:`Goal`,memory:`Memória`,fleet:`Frota`,inspector:`Inspetor`,prompts:`Prompts`},t={returnToChat:`{{name}} — voltar ao chat`,returnToChatDefault:`WrongStack — voltar ao chat`},n={connected:`Conectado`,disconnected:`Desconectado`,idle:`Ocioso`,thinking:`Pensando`,running:`Executando`,waiting:`Aguardando`,done:`Concluído`,stopped:`Parado`},r={moreWithHidden:`Mais, {{count}} itens ocultos`,moreOptions:`Mais opções`,moreCompactHidden:`Mais — {{count}} painéis/visualizações ocultos, paleta, tema, monitores`,moreCompact:`Mais — paleta, tema, monitores`,moreFull:`Mais — paleta, tema, atalhos, monitores`,commandPalette:`Paleta de comandos`,keyboardShortcuts:`Atalhos do teclado`,panels:`Painéis`,views:`Visualizações`,theme:`Tema`,monitors:`Monitores`,fleetMonitor:`Monitor da frota`,agentsMonitor:`Monitor de agentes`},i={dragHint:`Arraste para redimensionar · duplo clique para redefinir`,collapse:`Recolher painel (Ctrl+\\)`},a={openDashboard:`Abrir painel de sessões`},o={pending:`pendentes…`,empty:`Nenhum agente ainda`,emptyHint:`Subagentes aparecem aqui quando a frota está ativa.`,runningCount:`{{count}} em execução`,totalCount:`{{count}} no total`,openFull:`Abrir visualização completa de agentes`,agentsLive:`AGENTES · LIVE`,doneCount:`{{count}} concluídos`,failedCount:`{{count}} falhas`,modelsLabel:`modelos`,shownLabel:`exibidos`,totalLabel:`total`,leaderFleetTotals:`(líder {{leader}} · frota {{fleet}})`,navHintJk:`j/k ou ↑↓ para navegar`,escCloseDetail:`· Esc para fechar o detalhe`,noAgentsRunning:`Sem agentes em execução.`,contextUsage:`Uso de contexto`,lastToolLabel:`último:`,unknownSession:`Sessão desconhecida`,sessionCopyTitle:`Sessão: {{sid}} — clique para copiar`,sessionWord:`sessão`,agentsCountSuffix_one:`{{count}} agente`,agentsCountSuffix_other:`{{count}} agentes`,sessionTitle:`Sessão: {{sid}}`,projectSuffix:` · Projeto: {{name}}`,statusIdle:`inativo`,filterAll:`Todos`,filterRunning:`Em execução`,filterDone:`Concluídos`,filterFailed:`Com falha`,clearFinished:`Limpar`,clearFinishedTitle:`Remover agentes finalizados`,rosterHint:`Setas para navegar · Enter para expandir`,itSuffix:`it.`,tcSuffix:`ch.`,toolLog:`Registro de ferramentas`,showAll:`Mostrar todos`,showFewer:`Mostrar menos`,streaming:`Transmissão ao vivo`,failure:`Falha`,timeout:`Tempo esgotado`,reRun:`Executar novamente`,reRunTitle:`Executar este agente novamente (ainda não implementado)`,lastToolCalls:`Última {{count}} chamada de ferramenta`,lastToolCalls_plural:`Últimas {{count}} chamadas de ferramenta`,config:`Configuração`,configProvider:`Provedor`,configModel:`Modelo`,configDescription:`Descrição`,configTaskId:`ID da tarefa`,transcript:`Transcrição`,openInspector:`Abrir no inspetor da frota`,emptyFilteredTitle:`Nenhum agente corresponde ao filtro`,emptyFilteredHint:`Altere ou limpe o filtro para ver todos os agentes.`,emptyFilteredClear:`Mostrar todos`,emptyFinishedTitle:`Todas as tarefas foram concluídas`,emptyFinishedHint:`Todos os agentes terminaram — limpe os finalizados ou crie novas tarefas para ver atividade aqui.`,emptyFinishedStats:`{{completed}} concluídos · {{failed}} falharam`},s={fileCount_one:`{{count}} arquivo`,fileCount_other:`{{count}} arquivos`,refreshTitle:`Atualizar alterações`,loading:`Carregando alterações…`,clean:`Sem alterações — a árvore de trabalho está limpa.`,selectPrompt:`Selecione um arquivo alterado para ver seu diff.`,unified:`Unificado`,unifiedTitle:`Diff unificado`,edit:`Editar`,editTitle:`Diff lado a lado editável`,loadingDiff:`Carregando diff…`,diffTimeout:`O diff não chegou. O arquivo pode ter mudado ou a conexão caiu.`,binary:`Arquivo binário — diff não mostrado.`,tooLarge:`Arquivo grande demais para diff.`},c={showPanel:`Mostrar painel Inspetor (Frota / Agentes / Auditoria)`,hidePanel:`Ocultar painel Inspetor`,label:`Inspetor`,openAudit:`Abrir aba Auditoria`,tabFleet:`Frota`,tabAgents:`Agentes`,tabAudit:`Auditoria`,collapseAria:`Recolher painel Inspetor`,collapseTitle:`Recolher (Esc)`,noAgentsActive:`Nenhum agente ativo`,agentsAppearHint:`Os agentes aparecem aqui quando a frota está ativa.`,selected:`{{name}} (selecionado)`},l={header:`Próximos passos`,autoSubmitting:`envio automático em`,clickToFill:`clique para preencher`,clickToFillTitle:`Clique para preencher: {{text}}`,auto:`auto`,willAutoSubmit:`Envio automático após a contagem regressiva`},u={onlineCount:`{{count}} online`,messages:`Mensagens`,deleteAllTitle:`Excluir todas as mensagens`,deleteAll:`Excluir tudo`,deleting:`Excluindo…`,purgeTitle:`Purgar mensagens obsoletas/órfãs`,purge:`Purgar`,purging:`Purgando…`,compact:`Compactar`,compacting:`Compactando…`,compactTitle:`Compactação auto: remover expirados, lidos por todos e obsoletos`,compactRemoved:`{{count}} removidos`,compactExpired:`{{count}} expirados`,compactReadByAll:`{{count}} lidos por todos`,compactStale:`{{count}} obsoletos`,compactRemaining:`{{count}} restantes`,newLabel:`NOVO`,empty:`Nenhuma mensagem ainda.`,offlineCount:`+{{count}} offline`,timeNow:`agora`,deleteAllConfirmTitle_one:`Excluir {{count}} mensagem?`,deleteAllConfirmTitle_other:`Excluir todas as {{count}} mensagens?`,deleteAllConfirmBody:`O arquivo da caixa de entrada é truncado para cada agente. Isso não pode ser desfeito.`,purgeConfirmTitle:`Purgar mensagens obsoletas?`,purgeConfirmBody:`Remove mensagens concluídas com mais de 1 dia e mensagens incompletas com mais de 7 dias. Mensagens ativas são preservadas.`,type:{note:`Nota`,ask:`Pergunta`,assign:`Atribuição`,steer:`Direcionar`,btw:`A propósito`,broadcast:`Transmissão`,status:`Status`,result:`Resultado`},emptyDetail:`Nenhuma mensagem selecionada`,emptyDetailHint:`Clique em uma mensagem no painel Caixa de entrada para vê-la aqui.`,readBy:`Lido por`,backToChat:`Voltar ao chat`,completed:`Concluído`,everyone:`todos`,closeTitle:`Fechar (Esc)`,replyTo:`Em resposta a: {{id}}`,completedBy:`Concluído por {{name}}`,completedByAt:`Concluído por {{name}} em {{time}}`,outcome:`Resultado:`,task:`Tarefa:`,messageNotFound:`Mensagem não encontrada`,messageNotFoundHint:`Esta mensagem pode ter sido excluída ou removida.`,sessionLabel:`Sessão`,sessionScope:`Sessão {{sid}}`,sessionScopeTitle:`Entregue apenas a agentes na sessão {{sid}}`,projectLabel:`Projeto`,projectScope:`Projeto (todo agente)`,directScope:`Direto`,scopeLabel:`Escopo`},d={recentSessions:`Sessões recentes`,deleteEmptyTitle_one:`Excluir {{count}} sessão vazia?`,deleteEmptyTitle_other:`Excluir {{count}} sessões vazias?`,deleteEmptyConfirmBody:`Sessões sem uso de tokens são removidas do disco.`,filterPlaceholder:`Filtrar por título, modelo, provedor…`,clearFilter:`Limpar filtro`,noHistory:`Nenhum histórico ainda`,noHistoryHint:`Suas conversas aparecerão aqui`,noMatches:`Nenhum resultado`,noMatchesHint:`Tente um filtro diferente`,group:{favorites:`Favoritos`,today:`Hoje`,yesterday:`Ontem`,thisWeek:`Esta semana`,earlier:`Anteriores`},nicknamePlaceholder:`Apelido`,empty:`(vazio)`,resuming:`retomando…`,active:`ativa`,renameTitleNickname:`{{nickname}} — original: {{title}}`,renameTitle:`{{title}}
|
|
2
|
-
|
|
3
|
-
Clique duas vezes para renomear`,unfavorite:`Remover dos favoritos`,markFavorite:`Marcar como favorito`,deleteSessionConfirmTitle:`Excluir a sessão?`,deleteSessionConfirmBody:`"{{name}}" será removida do disco. Isso não pode ser desfeito.`,deleteSessionTitle:`Excluir sessão`,rename:`Renomear sessão`,renameAction:`Renomear`,resume:`Retomar sessão`,resumeShort:`Retomar`,workspaceEyebrow:`Controle de sessão`,workspaceTitle:`Sessões`,workspaceHint:`Pesquise, inspecione, fixe e retome todas as conversas do projeto.`,tabs:{history:`Histórico`,live:`Sessões ativas`},filters:{all:`Todas`,favorites:`Favoritas`,active:`Ativas`,completed:`Concluídas`,issues:`Problemas`},status:{active:`Ativa`,completed:`Concluída`,error:`Erro`,timeout:`Tempo esgotado`,aborted:`Cancelada`,saved:`Sessão salva`},sort:{label:`Ordenar sessões`,recent:`Mais recentes`,tokens:`Mais tokens`,activity:`Mais atividade`},stats:{sessions:`Sessões`,tokens:`Tokens`,tools:`Chamadas de ferramentas`,files:`Arquivos modificados`,errors:`Erros`}},f={actions:{abort:`Interromper`,newSession:`Nova sessão`,export:`Exportar`,compact:`Compactar`,newSessionConfirm:`Tem certeza?`,newSessionConfirmMessage:`Ainda há um trabalho em andamento. Iniciar uma nova sessão mesmo assim?`,newSessionTitle:`Iniciar uma nova sessão (Ctrl+N)`,exportTitle:`Exportar o chat como markdown (Ctrl+E)`,compactTitle:`Compactar a janela de contexto`,clearTitle:`Limpar o contexto (Ctrl+L)`},model:`Modelo`,modelTitle:`Trocar de modelo (Ctrl+M)`,context:`Contexto`,contextTitle:`Clique para um detalhamento do contexto`,sessionLabel:`Sessão`,stats:{messages:`Mensagens`,elapsed:`Decorrido`,tokens:`Tokens`,cost:`Custo`,iteration:`Iteração`,agents:`Agentes`,tokensSub:`{{in}} entra / {{out}} sai`,iterationOf:`de {{max}}`,agentsRunning:`{{count}} em execução`},plan:`Plano`,planComplete:`{{pct}}% concluído`,pinned:`Fixados`,quickSettings:`Ajustes rápidos`,autonomy:`Autonomia`,autonomyOptions:{off:`Desativado`,suggest:`Sugerir`,auto:`Auto`,eternal:`Perpétuo`,"eternal-parallel":`Perpétuo Paralelo`},yolo:`Modo YOLO`,yoloTitle:`Ignorar os diálogos de confirmação de ferramentas`,refine:`Refinar prompts`,refineTitle:`Reescrever os prompts antes de enviar`,sound:`Som ao concluir`,soundTitle:`Tocar um leve som ao terminar uma execução`,sessionId:`sessão {{id}}`},p={status:{running:`em execução`,done:`concluído`,failed:`falhou`,timeout:`tempo esgotado`,stopped:`parado`},leader:`líder`,providerModel:`Provedor / Modelo`,elapsed:`Decorrido`,running:`em execução…`,iterations:`Iterações`,toolCalls:`Chamadas`,cost:`Custo`,budgetExtensions:`Extensões de orçamento`,activity:`Atividade`,budgetWarning:`aviso de orçamento`,contextWindow:`Janela de contexto`,tokensUsed:`{{used}} / {{max}} tokens`,toolRunning:`em execução…`,lastTool:`última ferramenta`,error:`Erro`,finalOutput:`Saída final`,copyOutput:`Copiar saída`,liveOutput:`Saída ao vivo`,waitingOutput:`Aguardando saída…`,outputHint:`A saída aparece aqui conforme o agente transmite o texto.`,toolLog:`Registro de ferramentas ({{count}} chamadas)`,fail:`falha`,moreTools:`+{{count}} ferramentas a mais`,cardRunning:`em execução {{tool}}`,cardLastTool:`última: {{tool}}`,contextPercent:`Contexto {{pct}}%`,doneCount:`{{count}} concluídos`,errCount:`{{count}} err`,statusRunning:`em execução`,statusDone:`concluído`,statusFailed:`falhou`,statusTimeout:`tempo esgotado`,statusStopped:`parado`,sessionPrefix:`sessão:`,currentTask:`Tarefa atual`,performance:`Desempenho`,uniqueTools:`Ferramentas únicas`,avgPerTool:`média {{ms}}ms por ferramenta`,context:`Contexto`,tokens:`Tokens`,ctxUsed:`{{pct}}% usado`,completed:`concluído`,budgetWarningTitle:`⚡ Aviso de orçamento`,hittingLimit:`Atinge o limite {{kind}} ({{used}}/{{limit}})`,hittingLimitTitle:`⚡ atinge o limite {{kind}} ({{used}}/{{limit}})`,budgetExt_one:`{{count}} extensão de orçamento`,budgetExt_other:`{{count}} extensões de orçamento`,extendedTimes_one:`O agente estendeu seu orçamento {{count}} vez por tarefas longas`,extendedTimes_other:`O agente estendeu seu orçamento {{count}} vezes por tarefas longas`,errorLabel:`Erro`,failureReason:`Motivo da falha`,failed:`Falhou`,fleetMonitor:`MONITOR DE FROTA`,runningCount:`{{count}} em execução`,totalAgents_one:`{{count}} agente no total`,totalAgents_other:`{{count}} agentes no total`,noLeader:`sem líder`,closeFleet:`Fechar monitor de frota`,colName:`Nome`,colStatus:`Status`,colActivity:`Atividade`,colIters:`Iter.`,colTools:`Ferram.`,colCost:`Custo`,colCtx:`CTX`,colExt:`Ext.`,colReason:`Motivo`,noAgentsActive:`Sem agentes ativos`,agentsAppear:`Os agentes aparecem aqui quando a frota está ativa.`,agentTimeline:`Linha do tempo de agentes`,noAgentEvents:`Ainda não há eventos de conversação de agentes.`,navHint:`↑↓ navegar`,selectDetailHint:`↵ selecionar detalhe`,escHint:`Esc desmarcar / fechar`,detailedView:`vista detalhada`,closeBtn:`✕ fechar`,selectAgentDetail:`Selecione um agente para informações detalhadas`,selectAgentBody:`Clique num agente da lista para métricas detalhadas, registros, saída em streaming e mais — similar à vista detalhada do histórico.`,navigateWord:`navegar`,selectWord:`selecionar`,deselectWord:`desmarcar`},m={wsNotConnected:`WebSocket não conectado`,noData:`Nenhum dado de depuração recebido. O servidor pode não oferecer suporte à depuração de contexto.`,title:`Detalhamento do contexto`,windowUsage:`Uso da janela`,contextMode:`Modo de contexto`,fetching:`Buscando o detalhamento do contexto…`,systemPrompt:`Prompt do sistema`,tools:`Ferramentas`,messages:`Mensagens`,tokenAllocation:`Alocação de tokens`,systemTitle:`Sistema: {{tokens}}`,toolsTitle:`Ferramentas: {{tokens}}`,messagesTitle:`Mensagens: {{tokens}}`,system:`Sistema`,toolBreakdown:`Detalhamento de ferramentas`,messagesSummary:`Mensagens ({{count}}) — {{total}} tok`,barWithTokens:`Janela de contexto: {{tokens}} / {{max}} tokens ({{pct}})`,barPct:`Janela de contexto: {{pct}}`,barClick:` — clique para o detalhamento`},h={header:`✨ Refinar prompt`,autoSend:`envio automático em {{count}} s`,cancelTitle:`Cancelar (Esc)`,editLabel:`Editar o prompt refinado:`,editPlaceholder:`Editar o prompt refinado...`,useEdit:`Usar edição`,original:`Original`,refined:`Refinado`,yourLanguage:`(seu idioma)`,refinedTitle:`Clique ou pressione Enter para usar esta versão`,english:`Inglês`,englishTitle:`Pressione e para a versão em inglês`,hintRefined:`refinado`,hintEnglish:`Inglês`,hintOriginal:`original`,hintEdit:`editar`,hintRetry:`tentar novamente`,edit:`Editar`,useRefined:`Usar refinado`,langOriginal:`Original`,langEnglish:`English`,languageTitle:`Switch default refine language — Original vs English`,yolo:`YOLO`,yoloTitle:`Bypass tool confirmation prompts`,refining:`Refining…`,sendAsIs:`Send as-is`,failedHeader:`Refinement failed`,retry:`Retry (more time)`,retryBetter:`Tentar melhorar`,retryFallback:`Retry with {{model}}`,pickModel:`Another model…`,pickModelTitle:`Retry refinement with another model`,pickModelHint:`Pick a provider/model to re-run this refinement on. Your session model stays unchanged.`},g={heading:`Especificações`,subtitle:`Ver e gerenciar o desenvolvimento orientado por especificações`,empty:`Nenhuma spec encontrada. Use {{command}} para criar uma.`,tasks:`Tarefas ({{count}})`,doneCount:`{{count}} concluídas`,runningCount:`{{count}} em execução`,pendingCount:`{{count}} pendentes`,runTitle:`Executar esta spec como um painel Goal ao vivo`,run:`Executar`,list:`Lista`,graph:`Grafo`,loadingTasks:`Carregando tarefas…`},_={heading:`Verificador de resiliência F5`,subtitle:`Confirma que a última sessão ativa, a transcrição e o estado da UI sobrevivem a um atualizar de página. Abra esta vista e pressione F5 — cada linha verde deve continuar verde.`,recordProbe:`Registrar sonda`,latestSession:`Última sessão ativa`,restoredLocal:`Restaurado do localStorage`,sessionIdExtra:`id da sessão: {{id}}`,noSessionYet:`nenhuma sessão foi iniciada ainda`,activePointer:`Ponteiro de sessão ativa`,lastVisited:`carimbo de tempo lastVisitedAt`,never:`nunca`,persistedEnv:`Ambiente persistido`,transcriptRehydrate:`Reidratação da transcrição`,localTranscript:`Transcrição local recuperada`,messagesExtra:`{{count}} mensagens, {{queued}} na fila`,noMessages:`0 mensagens`,noBleed:`Sem vazamento entre sessões`,bleedExtra:`ligado={{bound}} vs ativo={{active}}`,transcriptBinds:`a transcrição se liga à sessão ativa`,uiWorkspace:`Espaço de trabalho UI`,noneValue:`(nenhum)`,payloadSize:`Carga do localStorage (4 chaves): {{count}} caracteres`,probeLog:`Registro de sondas`,noProbes:`Nenhuma sonda ainda — pressione o botão "Registrar sonda" no topo, ou F5 nesta vista, para registrar uma verificação de reidratação.`,simulatedF5:`F5 simulado: reexecutar persist rehydrate`},v={status:{pending:`Pendente`,in_progress:`Em progresso`,review:`Revisão`,failed:`Falhou`,completed:`Concluído`,queued:`Em fila`,blocked:`Bloqueado`,cancelled:`Cancelado`},newTaskTitle:`Nova tarefa`,newTaskPlaceholder:`Título da tarefa…`,addTask:`Adicionar tarefa`,empty:`Ainda não há fases — inicie uma execução Goal para preencher o painel.`,summary:`{{phases}} fases · {{tasks}} tarefas`,phases:`Fases`,statusTab:`Status`,dropHere:`Solte as tarefas aqui`,emptySpec:`Ainda não há tarefas nesta spec.`,depGraphHeading:`Grafo de dependências`,worktreePrefix:`worktree: {{branch}}`},y={trendUp:`Aumentando`,trendDown:`Diminuindo`,trendStable:`Estável`,heading:`Painel de depuração`,subtitle:`Monitoramento em tempo real para WrongStack WebUI`,refreshLabel:`Atualizar:`,lastUpdated:`Última atualização: {{time}}`,fetchFailed:`Falha ao buscar métricas`,fileWatcher:`Observador de arquivos`,watcherStatus:`Status do observador`,running:`Em execução`,stopped:`Parado`,activeProjects:`Projetos ativos`,projectsWatched:`Projetos observados`,fileChanges:`Mudanças de arquivos`,totalDetected:`Total detectado`,filesProcessed:`Arquivos processados`,afterHash:`Após filtro de hash`,broadcastsSent:`Transmissões enviadas`,toClients:`Aos clientes WebUI`,debounceResets:`Reinícios de debounce`,rapidWrites:`Escritas rápidas sucessivas`,avgDebounce:`Atraso médio de debounce`,actualDelay:`Atraso real aplicado`,totalDelay:`Atraso total`,sumDelays:`Soma de todos os atrasos`,browserPerf:`Desempenho do navegador`,heapUsed:`Heap usado`,jsHeap:`Heap JavaScript`,heapTotal:`Heap total`,totalHeap:`Tamanho total do heap`,pageUptime:`Tempo de atividade da página`,sinceLoad:`Desde o carregamento`,rawData:`Dados brutos`},b={allowlistTitle:`Lista de modelos permitidos`,modelCount_one:`{{count}} modelo`,modelCount_other:`{{count}} modelos`,using:`Em uso`,noModelPicked:`(nenhum modelo escolhido)`,clearAllowlist:`Limpar lista permitida`,clearAllowlistAria:`Limpar a lista permitida salva para {{provider}}`,refresh:`Atualizar do servidor`,refreshAria:`Atualizar a lista de modelos para {{provider}}`,probing:`Verificando…`,use:`Usar`,useModelAria:`Usar o modelo {{model}} para {{provider}}`,differsHint:`A lista verificada difere da lista salva — execute {{command}} novamente para persistir.`},x={expandChip:`Expandir {{label}}`,collapseChip:`Recolher {{label}}`,ahead:`{{count}} à frente`,behind:`{{count}} atrás`,linesAdded:`{{count}} linhas adicionadas`,linesDeleted:`{{count}} linhas excluídas`,untrackedFiles:`{{count}} arquivos não rastreados`,customizeTitle:`Personalizar chips do dock`,dockChips:`Chips do dock`,noActiveGoal:`Nenhum objetivo ativo`,noActiveGoalDetail:`Inicie um objetivo pelo chat ou pelo comando goal.`},S={leaderBadge:`LÍDER`,iters:`Iter.`,tools:`Ferramentas`,activityBins:`Atividade (12 intervalos)`,streamingOutput:`Saída em streaming`,recentTools:`Ferramentas recentes`,finalOutput:`Saída final`,heading:`Monitor de agentes`,prevAgent:`Agente anterior`,nextAgent:`Próximo agente`,closeAria:`Fechar monitor de agentes`,hintPage:`←→ página`,hintNavigate:`↑↓ navegar lista`,hintEsc:`Esc fechar`},C={resize:`Redimensionar terminais`,labelSingular:`Terminal`,labelPlural:`Terminais`,projectShell:`Shell do projeto`,maxTerminals:`Máximo de {{count}} terminais`,newTerminal:`Novo terminal`,restart:`Reiniciar terminal ativo`,closeAll:`Fechar todos os terminais`,closeDock:"Fechar o dock de terminal (Ctrl+`)",closeTab:`Fechar {{name}}`,processExited:`[processo encerrado com código {{code}}]`},w={liveStream:`Transmissão ao vivo`,events_one:`{{count}} evento`,events_other:`{{count}} eventos`,interruptTitle:`Parar cooperativamente este agente em seu próximo passo (não é um kill)`,interrupt:`⏸ Interromper`,interrupting:`…`,loading:`Carregando sessão…`,done:`✓✓ concluído`,read:`✓ lido`,delivered:`⏳ entregue`,agent:`Agente`,you:`Você`,working:`{{name}} · trabalhando`,claude:`Claude`,priority:`Prioridade`,placeholder:`{{label}} → esta sessão…`,send:`Enviar`,sendHint:`⌘/Ctrl+Enter para enviar · visível na próxima iteração do agente`,msgType:{steerLabel:`🔄 Direcionar`,steerHint:`Ajustar o comportamento durante a tarefa`,askLabel:`❓ Perguntar`,askHint:`Pergunta — espera resposta`,assignLabel:`📋 Atribuir`,assignHint:`Uma tarefa a realizar`,noteLabel:`💬 Nota`,noteHint:`Para informação, não urgente`},sentRunning:`Entregue — o agente em execução verá no próximo passo`,sentIdle:`Entregue — o alvo está inativo; aparece em sua caixa, lido na próxima execução`,sentFailed:`Falhou: {{error}}`,interruptReason:`O operador solicitou a parada pelo Fleet HQ`,interruptSent:`Interrupção enviada — o agente para no próximo passo (não é um kill)`,interruptFailed:`Interrupção falhou: {{error}}`},T={empty:`Nenhum efeito colateral registrado ainda.`,emptyHint:`Comandos bash, instalações de pacotes e requisições de rede aparecerão aqui.`,heading:`Efeitos colaterais`,exportTitle:`Exportar efeitos colaterais filtrados como CSV`,all:`Todos`,colTime:`Hora`,colTool:`Ferramenta`,colRisk:`Risco`,colDetail:`Detalhe`,colOutcome:`Resultado`},E={elapsedHm:`há {{h}}h {{m}}m`,elapsedMs:`há {{m}}m {{s}}s`,elapsedS:`há {{s}}s`,heading:`Monitor da frota`,clientsHeading:`Clientes conectados`,terminal:`Terminal`,webui:`IU Web`,repl:`REPL`,totalConnected:`conectados no total`,mailQueue:`Fila de correio`,total:`Total`,open:`Abertos`,unread:`Não lidos`,agents:`Agentes`,messagesSub:`mensagens`,uncompletedSub:`não concluídos`,waitingSub:`aguardando`,ofTotal:`de {{count}} no total`,agentRoster:`Lista de agentes`,liveMailActivity:`Atividade de e-mail ao vivo`,noActivity:`Sem atividade recente`,mailboxAgents:`Agentes da caixa`,noMailboxAgents:`Nenhum agente registrado`,moreCount:`+{{count}} mais`,agentFallback:`agente`,fleetAgents:`Agentes da frota`,noFleetAgents:`Nenhum agente da frota em execução`,iter:`iter.`,mailType:{sent:`Enviado`,delivered:`Entregue`,read:`Lido`,completed:`Concluído`}},D={status:{pending:`pendente`,queued:`em fila`,in_progress:`em execução`,blocked:`bloqueado`,review:`revisão`,failed:`falhou`,completed:`concluído`,cancelled:`cancelado`},activityHeading:`Atividade`,feedEmpty:`Ainda nada — os eventos aparecem aqui conforme os agentes pegam e concluem tarefas.`,destroyTitle:`Destruir o projeto SDD?`,destroyDesc:`Isto apaga o run e seu trabalho. Não pode ser desfeito (o revert opcional preserva o histórico).`,stopRun:`Parar o run`,stopRunAgents_one:`Parar o run ({{count}} agente ativo)`,stopRunAgents_other:`Parar o run ({{count}} agentes ativos)`,removeWorktreesAll:`Remover todos os worktrees git + ramos wstack/ap/* — incluindo trabalho não mergedado`,removeWorktreesCount_one:`Remover {{count}} worktree git + ramos wstack/ap/* — incluindo trabalho não mergedado`,removeWorktreesCount_other:`Remover {{count}} worktrees git + ramos wstack/ap/* — incluindo trabalho não mergedado`,deleteArtifacts:`Excluir todos os artefatos SDD (specs, grafo de tarefas, board, sessão)`,revertMerged_one:`Reverter também {{count}} commit mergedado`,revertMerged_other:`Reverter também {{count}} commits mergedados`,revertHint:`Adiciona commits de revert (histórico preservado). Recusado se a árvore de trabalho estiver suja.`,baseBranchFallback:`o ramo base`,noteLeaveMerged:`Os commits mergedados ficarão no ramo base. Marque a caixa acima para desfazê-los também.`,noteAbandon:`Certifique-se de que realmente quer abandonar este run.`,destroying:`Destruindo…`,destroyAll:`Destruir tudo`,kanbanBacklog:`Backlog`,kanbanReady:`Pronto`,kanbanRunning:`Em execução`,kanbanReview:`Revisão`,kanbanFailed:`Falhou`,kanbanDone:`Concluído`,kanbanEmpty:`vazio`},O={collapseToLines:`Recolher para as primeiras {{count}} linhas`,showAllLines:`Mostrar todas as {{total}} linhas ({{more}} a mais)`,exitCode:`código de saída:`,jsonLines:`JSON · {{count}} linhas`,collapse:`recolher`,expand:`expandir`},k={heading:`Design Studio — Galeria`,kitsCount:`{{count}} kits`,searchPlaceholder:`Pesquisar kits…`,stackTitle:`Stack para Use + Materialize`,wrote:`{{path}} escrito`,materializeFailed:`Materialize falhou: {{error}}`,verifyError:`Verificar: {{error}}`,verifyOffPalette:`Verificar: {{pct}}% na paleta — {{count}} fora da paleta em {{files}} arquivo(s)`,verifyClean:`Verificar: limpo ✓ ({{files}} arquivo(s) na paleta)`,writing:`Escrevendo arquivo de tema…`,scanning:`Verificando arquivos de UI…`,active:`Ativo`,reapply:`Reaplicar`,use:`Usar`,materializeTitle:`Gravar tokens em um arquivo de tema {{stack}}`,materialize:`Materializar`,verifyTitle:`Verificar arquivos de UI em busca de cores fora da paleta`,verify:`Verificar`,colors:`Cores`},A={summary_one:`{{count}} fase · {{pct}}% concluído`,summary_other:`{{count}} fases · {{pct}}% concluído`,switchBoard:`Trocar painel`,boardsCount_one:`{{count}} painel…`,boardsCount_other:`{{count}} painéis…`,toggleAutonomousTitle:`Alternar modo autônomo`,autonomous:`Autônomo`,manual:`Manual`,resumeTitle:`Retomar a execução`,pauseTitle:`Pausar a execução`,resume:`Retomar`,pause:`Pausar`,stopTitle:`Parar a execução — aborta agentes em andamento imediatamente`,stop:`Parar`,newTitle:`Limpar este painel e iniciar uma nova execução Goal`,newLabel:`Novo`,revertConfirm:`Reverter os commits da execução?`,revertTitle:`Desfazer esta execução — git-revert dos commits feitos e remover worktrees`,revert:`Reverter`,goal:`Objetivo`,planning:`Planejando fases…`,planningBody:`Seu objetivo foi recebido. O WrongStack está dividindo-o em fases e tarefas — o painel aparece aqui assim que o plano estiver pronto.`,startHeading:`Iniciar um plano de fases`,startBody:`Descreva o que você quer construir. O WrongStack planejará fases e tarefas, depois as executará — observe e direcione a execução no painel.`,startPlaceholder:`ex. Crie uma API REST de gerenciamento de usuários com Express e SQLite...`,isolateLabel:`Isolar cada fase em seu próprio worktree git`,startButton:`Iniciar Goal`,ctrlHint:`Ctrl+Enter para iniciar`,isolateOn:`as fases rodam em worktrees isolados, com squash-merge de volta`,isolateOff:`as fases rodam diretamente no branch atual`,lanes:`Faixas`,graph:`Grafo`,planningAck:`🚀 **Goal** — entendido. Planejando fases para seu objetivo…`},j={noObservers:`Sem observadores ao vivo`,observerTitle:`Entrar como observador somente leitura (Fase 1)`,observerRole:`observador`,annotatorTitle:`Entrar como anotador — deixe notas nas chamadas (Fase 2)`,annotatorRole:`anotador`,controllerTitle:`Entrar como controlador — pode pausar o agente (Fase 3)`,controllerRole:`controlador`,errorPrefix:`Collab: {{error}}`,dismiss:`fechar`,observers_one:`{{count}} observador`,observers_other:`{{count}} observadores`,annotationsTitle:`{{count}} anotação(ões) aberta(s) — anotadores revisando`,notes_one:`{{count}} nota`,notes_other:`{{count}} notas`,pausedTitle:`Agente em pausa — um controlador está revisando`,paused:`em pausa`,joinedTitle:`Entrou {{time}}`,grantTitle:`Ceder controle — promover este participante a controlador`,injectTitle:`Injetar um resultado sintético para uma chamada em andamento`,inject:`Injetar`,resumeTitle:`Retomar o agente`,resume:`Retomar`,pauseTitle:`Pausar o agente antes da próxima chamada`,pauseAgent:`Pausar agente`,leaveTitle:`Sair da sessão de observação`,leave:`Sair`,injectToolResult:`Injetar resultado`,close:`fechar`,targetTool:`id tool_use alvo`,targetPlaceholder:`escolha uma chamada em andamento ou digite um id tool_use`,toolFallback:`ferramenta`,noPendingTools:`Sem chamadas em andamento — digite um id tool_use ou pause o agente primeiro.`,resultContent:`Conteúdo do resultado`,resultPlaceholder:`Resultado sintético fornecido ao agente em vez de executar a ferramenta`,markError:`marcar como erro`,reasonPlaceholder:`motivo (log de auditoria)`,queueInjection:`Enfileirar injeção`,controllerInjection:`injeção controlador`},M={reconnecting:`Reconectando ao backend (tentativa {{attempt}}) — tentando novamente em {{remaining}} s`,disconnected:`Desconectado do backend`,retry:`Tentar novamente`,retryTitle:`Tentar conexão novamente agora`,dismissTitle:`Fechar (o chip na barra superior ainda mostra o status)`},N={modePrefix:`modo:`,activeTitle:`Modo ativo`,heading:`Modo`,defaultName:`Padrão`,defaultDesc:`Comportamento padrão do agente`},P={clickTitle:`Clique para o detalhamento de custo por turno`,heading:`Detalhamento de custos`,noPricing:`Sem precificação para o modelo atual — os valores de custo são zero.`,noTurns:`Nenhum turno concluído ainda. Execute um prompt para ver o custo por turno aqui.`,topExpensive_one:`Turno mais caro`,topExpensive_other:`Os {{count}} turnos mais caros`},F={runDefault:`Padrão do run`,useRunDefault:`Usar padrão do run`,filterPlaceholder:`Filtrar modelos…`,loading:`Carregando modelos…`,noMatch:`Sem correspondência`},I={heading:`Trocar modelo`,filterPlaceholder:`Filtrar provedores e modelos…`,noSavedProviders:`Sem provedores salvos — registre uma chave nas Configurações primeiro.`,active:`ativo`},L={todos:`A fazer`,tasks:`Tarefas`,plan:`Plano`},R={toggleAria:`Alternar: {{content}}`,removeTitle:`Remover tarefa`,removeAria:`Remover "{{content}}"`,completedCount_one:`{{count}} concluída`,completedCount_other:`{{count}} concluídas`},z={start:`Iniciar`,complete:`Concluir`,retry:`Tentar novamente`,assign:`Atribuir`,assignTitle:`Atribuir agente`,unassigned:`Não atribuído`,statusPending:`Pendente`,statusInProgress:`Em andamento`,statusBlocked:`Bloqueado`,statusFailed:`Falhou`,statusReview:`Revisão`,statusDone:`Concluído`,startTitle:`Iniciar`,completeTitle:`Concluir`,fail:`Falhar`,failTitle:`Marcar como falha`,boardCount:`{{total}} tarefas · {{done}} concluídas`},B={toolCalls_one:`{{count}} chamada`,toolCalls_other:`{{count}} chamadas`},V={removeTitle:`Remover referência`,linesCount_one:`{{count}} linha`,linesCount_other:`{{count}} linhas`},H={statusOpen:`Aberto`,statusInProgress:`Em andamento`,statusDone:`Concluído`,startTitle:`Iniciar`,doneTitle:`Marcar como concluído`,reopenTitle:`Reabrir`,reopen:`Reabrir`},U={heading:`@ Arquivos`,noMatch:`Nenhum arquivo corresponde a "{{query}}"`,searching:`Pesquisando no projeto…`},W={dismiss:`Dispensar`},G={placeholder:`Pesquisar no chat…`,prevHit:`Resultado anterior`,nextHit:`Próximo resultado`,close:`Fechar (Esc)`},K={statusPending:`Pendente`,statusReady:`Pronto`,statusRunning:`Em execução`,statusPaused:`Em pausa`,statusCompleted:`Concluído`,statusFailed:`Falhou`,statusSkipped:`Ignorado`,heading:`Fases`,autonomousOn:`● Autônomo`,autonomousOff:`○ Manual`,autonomousOnTitle:`Modo autônomo ativo — clique para pausar`,autonomousOffTitle:`Modo manual — clique para ativar o autônomo`,overallProgress:`Progresso geral`,tasksSuffix:`{{done}}/{{total}} tarefas`,agentsSuffix_one:`{{count}} agente`,agentsSuffix_other:`{{count}} agentes`},q={triggerTitle:`Modo de janela de contexto`,ctxPrefix:`ctx:`,opsHeading:`Operações de contexto`,compactNow:`Compactar agora`,compactNowDesc:`Omitir saída de ferramenta antiga`,compactAggressive:`Compactação agressiva`,compactAggressiveDesc:`Omissão máxima agora`,repairContext:`Reparar contexto`,repairDesc:`Corrigir blocos tool-use órfãos`,debugContext:`Depurar contexto`,debugDesc:`Detalhamento de tamanho por seção`,windowHeading:`Janela de contexto`,keepElide:`manter {{k}} recentes · omitir {{t}}+ tokens`,fallbackName:`Equilibrado`,fallbackDesc:`Compactação rolling padrão`},J={kindAssistant:`Assistente`,kindThinking:`Pensamento`,kindToolCall:`Chamada de ferramenta`,kindToolResult:`Resultado de ferramenta`,kindError:`Erro`,kindStatus:`Status`,kindSystem:`Sistema`,title:`Histórico do chat`,copyTitle:`Copiar histórico de chat do agente`,empty:`Ainda não há histórico de chat para este agente.`},Y={heading:`Modo de autonomia`,titlePrefix:`Autonomia: {{label}}`,descOff:`Controle manual total — o agente espera sua entrada.`,descSuggest:`O agente sugere os próximos passos mas aguarda aprovação.`,descAuto:`O agente prossegue automaticamente após um breve atraso de confirmação.`,descEternal:`O agente executa de forma autônoma até o objetivo ser concluído.`,descEternalParallel:`Execução autônoma multi-agente — modo frota.`},X={heading:`Fila de mensagens`,subtitle:`{{count}} na fila · mensagens enviadas antes do agente terminar`,btwTitle:`A propósito — enviado como acompanhamento sem interromper o agente em execução`,steerTitle:`Guiar — interrompe o agente em execução e o redireciona com esta mensagem`,queueTitle:`Na fila — retido até o run do agente terminar, depois enviado em ordem`,sortNewestTitle:`Ordenado do mais recente — clique para ordenar do mais antigo`,sortOldestTitle:`Ordenado do mais antigo — clique para ordenar do mais recente`,newest:`Mais recente`,oldest:`Mais antigo`,clear:`Limpar`,clearTitle:`Limpar todas as mensagens da fila`,closeTitle:`Fechar`,emptyTitle:`A fila está vazia`,emptyBody:`Use os botões btw / steer / adicionar à fila ao lado da entrada para adicionar mensagens. Os itens na fila são enviados em ordem quando o run do agente termina.`,removeTitle:`Remover da fila`,footer:`As mensagens são enviadas em ordem de chegada quando o run do agente termina. Use a ordenação para ver as mais recentes primeiro.`},Z={heading:`Pontos de controle da sessão`,countSuffix_one:`{{count}} ponto de controle`,countSuffix_other:`{{count}} pontos de controle`,description:`Rebobine a sessão para qualquer ponto de controle. Mensagens e alterações de arquivo revertem para aquele ponto — o LLM continua de lá como se nada tivesse acontecido depois.`,emptyTitle:`Ainda não há pontos de controle`,emptyBody:`Pontos de controle são criados automaticamente a cada mensagem enviada. Envie algumas mensagens e volte.`,latest:`recente`,msgSuffix_one:`{{count}} msg`,msgSuffix_other:`{{count}} msgs`,footerPre:`Clique em qualquer ponto de controle para rebobinar`,footerPost:`para fechar`},Q={statusActive:`Ativo`,statusPaused:`Em pausa`,statusDone:`Concluído`,statusFailed:`Falhou`,statusAbandoned:`Abandonado`,heading:`Objetivo`,refined:`Refinado`,progress:`Progresso`,iterations:`iterações`,deliverables:`Entregáveis`,recentActivity:`Atividade recente`},$={cleanTitle_one:`Limpar {{count}} worktree órfão?`,cleanTitle_other:`Limpar {{count}} worktrees órfãos?`,cleanMessage:`Remove forçadamente cada worktree git + ramo wstack/ap deixado por runs anteriores. O trabalho não mergedado neles é descartado.`,cleanConfirm:`Limpar órfãos`,orphanCount_one:`{{count}} worktree órfão de runs anteriores`,orphanCount_other:`{{count}} worktrees órfãos de runs anteriores`,andMore:`…e mais {{count}}`,cleanButtonTitle:`Remover forçadamente todos os worktrees + ramos órfãos`,removed_one:`✓ {{count}} worktree órfão removido.`,removed_other:`✓ {{count}} worktrees órfãos removidos.`,cleanupFailed:`limpeza falhou`,lanesHeading:`Worktrees`,base:`base`,isolatedCount_one:`{{count}} isolado`,isolatedCount_other:`{{count}} isolados`,statusAllocating:`alocando`,statusActive:`ativo`,statusCommitting:`commitando`,statusMerging:`mergendo`,statusMerged:`mergado`,statusConflict:`conflito`,statusFailed:`falhou`,conflictBadge:`CONFLITO`,graphAria:`Grafo de ramos worktree a partir de {{base}}`,mergedLabel:`✓ mergedo → {{base}}`},ee={heading:`Processos em execução`,subtitle:`{{active}} ativos · {{total}} total`,killAll:`Matar todos`,emptyTitle:`Nenhum processo rastreado`,emptyBody:`Os processos aparecem aqui quando o agente executa ferramentas bash ou exec. Processos ativos mostram um LED pulsante.`,pidLabel:`PID {{pid}}`,protected:`protegido`,protectedTitle:`Protegido — sobrevive a kill/killAll`,killTitle:`Matar PID {{pid}}`},te={tooLarge:`Diff omitido (arquivo grande demais para renderizar em linha).`},ne={placeholder:`Adicionar modelo de fallback…`,emptyHint:`Tentados em ordem quando o modelo primário é limitado ou trava.`,moveUp:`Mover para cima`,moveDown:`Mover para baixo`},re={loading:`Carregando sessões...`,apiUnavailable:`API de sessão indisponível:`,empty:`Nenhuma sessão ativa. Abra outra instância wstack para vê-la aqui.`,heading:`Sessões ativas ({{count}})`,autoRefresh:`atualização automática a cada 5 s`,pidLabel:`PID {{pid}}`,agentMeta:`{{iter}} iterações · {{tools}} ferramentas · {{ago}}`,andMore:`... e mais {{count}}`,noAgents:`Nenhum agente`},ie={applyTitle:`Escrever a versão editada no disco`,applying:`Aplicando…`,applied:`Aplicado`,apply:`Aplicar`},ae={showStack_one:`Mostrar rastreamento de pilha ({{count}} quadro)`,showStack_other:`Mostrar rastreamento de pilha ({{count}} quadros)`,hideStack_one:`Ocultar rastreamento de pilha ({{count}} quadro)`,hideStack_other:`Ocultar rastreamento de pilha ({{count}} quadros)`},oe={liveHeading:`Ao vivo`,clients:`Clientes`,agents:`Agentes`,model:`Modelo`,mode:`Modo`,toolCalls:`Chamadas`,displayHeading:`Exibição`,statsHud:`HUD de stats`,legends:`Legendas`,minimap:`Minimapa`,zoomControls:`Controles de zoom`,animateWires:`Animar fios`,backgroundHeading:`Fundo`,bgDots:`Pontos`,bgLines:`Linhas`,bgCross:`Cruz`,bgNone:`Nenhum`},se={noParams:`(sem parâmetros)`,itemCount_one:`{{count}} item`,itemCount_other:`{{count}} itens`,keyCount_one:`{{count}} chave`,keyCount_other:`{{count}} chaves`},ce={roleYou:`Você`,roleTool:`Ferramenta`,roleThinking:`Pensamento`,roleAssistant:`Assistente`,inputLabel:`Entrada`,downloadTitle:`Baixar como arquivo`,empty:`(vazio)`,hideDetails:`Ocultar detalhes`,showDetails:`Mostrar detalhes`,showDetailsLines_one:`Mostrar detalhes ({{count}} linha)`,showDetailsLines_other:`Mostrar detalhes ({{count}} linhas)`,editHint:`⌘/Ctrl+Enter para salvar · Esc para cancelar`,saveResend:`Salvar e reenviar`,thinkingProcess:`Processo de pensamento`,thinkingMeta:`iter {{iter}} · {{dur}} · {{lines}}`,replay:`repetição`,linesSuffix_one:`{{count}} linha`,linesSuffix_other:`{{count}} linhas`,copyLog:`Copiar registro`,showFullLog:`Mostrar registro completo`,typing:`Digitando…`,noContent:`Sem conteúdo`,imageNotRetained:`A prévia da imagem não é mantida após recarregar`,failedToSend:`⚠ Falha ao enviar`,autoPaused:`⚠️ _Avanço automático pausado — máximo de turnos automáticos consecutivos atingido. Digite algo para continuar (a autonomia permanece ativa)._`,autoLoopHalted:`⚠️ _Envio automático interrompido porque o mesmo prompt se repetiu. A autonomia continua ativa; digite um novo prompt para redefinir a proteção contra loops._`,rsIterations:`Iterações: {{n}}`,rsTools:`Chamadas: {{n}}`,rsElapsed:`Decorrido: {{s}}`,rsCost:`Custo: {{c}}`,useInput:`Entrada: {{n}}`,useOutput:`Saída: {{n}}`,useCacheRead:`Leitura cache: {{n}}`,useCost:`Custo: {{c}}`,renderedLabel:`Renderizado`,rawLabel:`Bruto`,showRenderedTitle:`Mostrar markdown renderizado`,showRawTitle:`Mostrar fonte markdown bruta`,editTitle:`Editar e reenviar este prompt`,editLabel:`Editar`,unpinTitle:`Desafixar`,pinTitle:`Fixar esta resposta`,pinnedLabel:`Fixado`,pinLabel:`Fixar`,regenerateTitle:`Regenerar esta resposta`,retryLabel:`Tentar novamente`},le={toolFallback:`ferramenta`,toolFailed:`Ferramenta falhou`},ue={heading:`Atalhos de teclado`,footerPre:`Pressione`,footerPost:`a qualquer momento para reabrir esta lista.`,sectionGlobal:`Global`,sectionTuiParity:`Paridade de painel TUI`,sectionFleet:`Frota e agentes`,sectionChatInput:`Entrada do chat`,sectionChat:`Chat`,sectionChatNav:`Navegação do chat (sem digitar)`,dCommandPalette:`Abrir paleta de comandos`,dShowOverlay:`Mostrar este overlay de atalhos`,dToggleSidebar:`Alternar barra lateral`,dOpenPanel:`Abrir painel lateral (Sessão, Agentes, Histórico, Arquivos, Mudanças, Caixa, Skills, Office Map)`,dDesignStudio:`Abrir painel do Design Studio`,dWorktrees:`Abrir painel de Worktrees`,dFocusInput:`Focar a entrada de mensagens`,dSessionPanel:`Painel de sessão`,dFleetOverlay:`Overlay do monitor de frota`,dAgentsOverlay:`Overlay do monitor de agentes`,dWorktreeMonitor:`Monitor de worktrees`,dPlanPanel:`Painel de plano`,dTodosPanel:`Painel de tarefas`,dQueuePanel:`Painel de fila`,dProcessMonitor:`Monitor de processos`,dGoalPanel:`Painel de objetivo`,dSessionsDashboard:`Painel de sessões`,dOfficeMap:`Office map do coordenador`,dDockPicker:`Seletor de chips do dock`,dOpenFleet:`Abrir overlay do monitor de frota`,dOpenAgents:`Abrir overlay do monitor de agentes`,dNavigateAgents:`Navegar agentes no monitor`,dSelectAgent:`Selecionar agente focado`,dCloseOverlay:`Fechar overlay ativo`,dSendMessage:`Enviar mensagem`,dNewline:`Inserir nova linha`,dRecallPrev:`Relembrar prompt anterior (entrada vazia)`,dRecallNext:`Relembrar próximo prompt`,dSlashPopup:`Abrir popup de comandos slash`,dAutocomplete:`Autocompletar comando destacado`,dDismissPopup:`Fechar popup / limpar entrada`,dSearchChat:`Pesquisar no chat atual`,dClearContext:`Limpar contexto (igual a /clear)`,dNewSession:`Iniciar nova sessão (igual a /new)`,dExportMarkdown:`Exportar chat como markdown`,dModelSwitcher:`Overlay seletor rápido de modelo`,dCompactDensity:`Alternar densidade UI compacta`,dAbortRun:`Abortar o run atual (durante execução)`,dFocusNext:`Focar próxima mensagem (atalho: ↓)`,dFocusPrev:`Focar mensagem anterior (atalho: ↑)`,dJumpFirst:`Ir para a primeira mensagem`,dJumpLast:`Ir para a última mensagem`,dCopyFocused:`Copiar texto da mensagem focada`,dClearFocused:`Limpar mensagem focada`},de={titleFallback:`Board SDD ao vivo`,defaultModelTitle:`Modelo worker padrão do run (overrides por tarefa têm precedência)`,graphLabel:`Grafo`,kanbanLabel:`Kanban`,retryAllTitle:`Recolocar cada tarefa falha em pending`,retryFailed:`Re tentar falhas ({{count}})`,resume:`Retomar`,pause:`Pausar`,stop:`Parar`,cleanTitle:`Remover os worktrees git + ramos wstack/ap do run`,cleanWorktrees:`Limpar worktrees`,rollbackTitle:`Reverter {{count}} commit(s) mergedado(s) em {{base}}`,rollback:`Rollback ({{count}})`,stopping:`Parando…`,destroying:`Destruindo…`,destroyTitle:`Parar, remover todos os worktrees, reverter opcionalmente commits mergedados e excluir o projeto SDD`,destroy:`Destruir`,statDone:`feitos`,statRunning:`em execução`,statFailed:`falhas`,statWave:`onda`,statElapsed:`decorrido`,noActiveWorkers:`sem workers ativos`,deadlock:`Impasse — tarefas bloqueadas por trabalho falho:`,noRunTitle:`Sem run SDD ativo.`,noRunBody:`Inicie um pelo assistente New SDD Project ou via /sdd execute na CLI — os agentes aparecem aqui ao vivo, cada num worktree isolado.`,clickTaskHint:`clique numa tarefa para detalhes`,lcClean:`Limpeza`,lcRollback:`Rollback`,lcDestroy:`Destruição`,lcFailed:`{{op}} falhou: {{reason}}`,lcUnknownError:`erro desconhecido`,lcWorktrees_one:`{{count}} worktree removido`,lcWorktrees_other:`{{count}} worktrees removidos`,lcCommits_one:`{{count}} commit revertido`,lcCommits_other:`{{count}} commits revertidos`,lcDeleted:`excluído {{items}}`,lcNothing:`nada a fazer`,lcNote:`{{op}}: {{body}} — nota: {{reason}}`,lcOk:`{{op}}: {{body}}`},fe={backTitle:`Voltar à atividade`,expandTitle:`Expandir detalhes da tarefa`,collapseTitle:`Recolher detalhes da tarefa`,eventLog:`Log de eventos da tarefa`,newestFirst:`mais recentes primeiro`,noEvents:`Nenhuma atividade foi registrada para esta tarefa ainda.`,workingOn:`trabalhando nesta tarefa`,assigned:`atribuído`,metaPriority:`Prioridade`,metaType:`Tipo`,metaDuration:`Duração`,metaElapsed:`Decorrido`,metaRetries:`Tentativas`,metaWorktree:`Worktree`,workerModel:`Modelo worker`,runDefault:`padrão do run: {{model}}`,runDefaultPlaceholder:`Padrão do run`,runDefaultPlaceholderModel:`Padrão do run ({{model}})`,verificationCmd:`Comando de verificação`,gatesCompletion:`valida a conclusão (exit 0)`,verifyPlaceholder:`ex. pnpm vitest run path/to/file`,addVerify:`+ Adicionar comando de verificação`,description:`Descrição`,timeline:`Linha do tempo`,dependsOn:`Depende de`,blocks:`Bloqueia`,newWorkerPlaceholder:`Nome do novo worker…`,confirmStop:`Parar esta tarefa em execução?`,confirmDelete:`Excluir esta tarefa do run?`,retryTitle:`Recolocar esta tarefa em pending`,reassign:`Reatribuir`,stopTitle:`Abortar o worker nesta tarefa`,splitTitle:`Dividir esta tarefa em subtarefas delegadas a workers separados`,split:`Dividir`,splitHint:`Uma subtarefa por linha — Título :: descrição (descrição opcional)`,splitPlaceholder:`Escreva a camada de dados :: adicione o repositório
|
|
4
|
-
Conecte a UI`,splitInto:`Dividir em subtarefas`,deleteTitle:`Remover esta tarefa não iniciada do run`},pe={phaseStart:`Iniciar`,phaseInterview:`Entrevista`,phaseSpecReview:`Revisão spec`,phasePlanning:`Planejamento`,phaseTaskReview:`Revisão tarefas`,phaseRunning:`Em execução`,phaseDone:`Concluído`,titleFallback:`Novo projeto SDD`,questionsSuffix:`{{cur}}/{{max}} perguntas`,tasksSuffix:`{{count}} tarefas`,runCfgTitle:`Config do run — modelo padrão + cadeia de fallback`,modelsLabel:`Modelos`,startRun:`Iniciar run`,defaultWorkerModel:`Modelo worker padrão`,leaderDefaultPlaceholder:`Leader / padrão da sessão`,useSessionDefault:`Usar padrão da sessão`,fallbackChain:`Cadeia de fallback`,appliesToAll:`Aplica-se a cada tarefa. Override por tarefa no board live após iniciar.`,parallelAgents:`Agentes paralelos`,isolateWorktrees:`Isolar em worktrees git`,worktreeOn:`Cada tarefa roda no seu próprio worktree, squash-mergedo ao concluir.`,worktreeOff:`As tarefas rodam diretamente no ramo atual (sem isolamento).`,goalPrompt:`O que você quer construir?`,goalPlaceholder:`ex. Adicionar login OAuth (Google + GitHub) com gestão de sessão`,startingInterview:`Iniciando entrevista…`,startInterview:`Iniciar entrevista`,introBody:`Um agente isolado entrevista você para construir uma spec, a decompõe num grafo de tarefas ordenado por dependências, depois uma frota multi-agente real a executa — acompanhe ao vivo no board.`,taskGraphSummary:`Grafo de tarefas · {{count}} tarefas, ordenadas por dependências`,dragToExplore:`arraste para explorar`,show:`mostrar`,goalLabel:`Objetivo`,implementationPlan:`Plano de implementação`,approveSpec:`Aprovar spec → planejar implementação`,approveTasks:`Aprovar tarefas`,approvePlan:`Aprovar plano`,answerPlaceholder:`Responda à pergunta…`,changePlaceholder:`Pedir uma mudança…`},me={emptyDir:`vazio`,loadFailed:`Falha ao carregar arquivos: {{error}}`,expandAllTitle:`Expandir todas as pastas`,expandAll:`Expandir tudo`,collapseAllTitle:`Recolher todas as pastas`,collapse:`Recolher`,folders_one:`{{count}} pasta`,folders_other:`{{count}} pastas`,currentDirTitle:`Diretório atual: {{path}}`,navigateToTitle:`Navegar para {{path}}`,filesSuffix_one:`{{count}} arquivo`,filesSuffix_other:`{{count}} arquivos`,goToDir:`ir ao diretório`,navigateParentTitle:`Navegar ao diretório pai de {{path}}`,parentDirectory:`diretório pai`,noFiles:`Nenhum arquivo encontrado`,copyAbsPath:`Copiar caminho absoluto`,copyRelPath:`Copiar caminho relativo`,openInTerminal:`Abrir no terminal`,openInFileManager:`Abrir no gerenciador de arquivos`,mentionInChat:`Mencionar no chat`,copyPath:`Copiar caminho`},he={sendSelectionAction:`Enviar seleção para o chat`,noFilesOpen:`Nenhum arquivo aberto`,selectToEdit:`Selecione um arquivo do explorador para editar`,sendSelectedTitle:`Enviar linhas selecionadas ao chat`,mentionFileTitle:`Mencionar este arquivo no chat`,sendToChat:`Enviar ao chat`,mentionFile:`Mencionar arquivo`,loadingEditor:`Carregando editor…`,selectTab:`Selecione uma aba para ver o conteúdo`},ge={title:`Atividade do arquivo`,overview:`Visão geral`,changes:`Alterações`,context:`Contexto`,logs:`Registros`,lines:`linhas`,resizeHint:`Arraste para redimensionar · clique duas vezes para redefinir`,refresh:`Atualizar evidências do arquivo`,evidenceCount_one:`{{count}} evento`,evidenceCount_other:`{{count}} eventos`,mutations30m:`Edições · 30 min`,sessions:`Sessões`,actors:`Atores`,linkedWork:`Trabalho vinculado`,workLinks:`Kanban / tarefa`,recentActivity:`Atividade recente do arquivo`,events:`eventos`,noEvidence:`Ainda não há atividade atribuída a este arquivo.`,noSessions:`Ainda não há atribuição de sessão.`,noActors:`Ainda não há atribuição de ator.`,noWorkLinks:`Nenhum vínculo Kanban, SDD ou tarefa registrado.`,taskOrTodo:`Task / tarefa`,loadingEvidence:`Carregando evidências do arquivo…`,gitToBuffer:`Git HEAD → buffer atual do Monaco`,savedToBuffer:`Última versão salva → buffer atual do Monaco`,unsaved:`buffer não salvo`,level:{quiet:`estável`,active:`ativo`,churn:`alta rotatividade`},analysisTitle:{quiet:`Sem rotatividade recente`,active:`Este arquivo está sendo alterado`,churn:`Alterações repetidas detectadas`},analysisBody:{quiet:`Nenhuma alteração atribuída foi registrada nos últimos 30 minutos.`,active:`{{mutations}} alterações por {{actors}} atores em {{sessions}} sessões nos últimos 30 minutos.`,churn:`Alta rotatividade: {{mutations}} alterações por {{actors}} atores em {{sessions}} sessões. Verifique trabalhos sobrepostos antes da próxima edição.`}},_e={loading:`Carregando analytics…`,heading:`Painel de analytics`,autoRefresh:`atualização a cada 10 s`,liveSessions:`Sessões ao vivo`,agents:`Agentes`,agentsActive:`{{count}} ativos`,totalEvents:`Eventos totais`,categoriesSub:`{{count}} categorias`,toolCalls:`Chamadas`,iterationsSub:`{{count}} iterações`,sessionCost:`Custo da sessão`,tokensSub:`{{input}} entrada / {{output}} saída`,sessionDuration:`Duração da sessão`,messagesSub:`{{count}} mensagens`,eventsByCategory:`Eventos por categoria`,noEvents:`Nenhum evento registrado.`,topEvents:`Principais eventos`,activeSessionUsage:`Uso da sessão ativa`,provider:`Provedor`,model:`Modelo`,inputTokens:`Tokens de entrada`,outputTokens:`Tokens de saída`,cacheRatio:`Proporção de cache`,filesRead:`Arquivos lidos`,noSession:`Sem sessão ativa ou aguardando dados…`,healthErrors:`Saúde e erros`,errorEvents:`Eventos de erro`,warningEvents:`Eventos de aviso`,cacheHitRate:`Taxa de acerto de cache`,totalCategories:`Categorias totais`,waitingData:`Aguardando dados…`,recentEvents:`Eventos recentes`,noRecentEvents:`Sem eventos recentes. Interaja com a UI para gerar eventos.`},ve={heading:`Biblioteca de prompts`,searchPlaceholder:`Pesquisar prompts…`,newPrompt:`+ Novo prompt`,all:`Todos`,recent:`🕘 Recentes`,favorites:`★ Favoritos`,noMatch:`Nenhum prompt corresponde.`,newPromptHeading:`Novo prompt`,titlePlaceholder:`Título *`,descPlaceholder:`Descrição de uma linha`,categoryPlaceholder:`Categoria`,tagsPlaceholder:`tags, separadas, por vírgula`,contentPlaceholder:`Conteúdo do prompt * — use {{name}} para variáveis`,variables:`Variáveis`,addVar:`+ var`,varNamePlaceholder:`nome`,varDescPlaceholder:`descrição`,removeVarTitle:`Remover variável`,required:`obrigatório`,multiline:`multilinha`,enumPlaceholder:`enum: a, b, c`,savePrompt:`Salvar prompt`,saveFailed:`Não foi possível salvar o prompt.`,titleContentRequired:`Título e conteúdo são obrigatórios.`,toggleFavoriteTitle:`Alternar favorito`,selectOption:`— escolher —`,fillMissing:`Preencher: {{missing}}`,insertIntoChat:`Inserir no chat`,selectPromptHint:`Selecione um prompt para pré-visualizar e inserir.`},ye={scopeProject:`Projeto`,scopeGlobal:`Global`,scopeBundled:`Embutido`,timeoutError:`Tempo limite da requisição. Tente novamente.`,updateFailed:`Atualização falhou`,saveFailed:`Salvamento falhou`,uninstallFailed:`Desinstalação falhou`,noSkillSelected:`Nenhuma habilidade selecionada`,selectSkillHint:`Selecione uma habilidade da barra lateral para ver sua documentação`,goToChat:`Ir ao chat`,openSourceRepo:`Abrir repo de origem`,copySourceUrl:`Copiar URL de origem`,updatedLabel:`↑ Atualizado: {{list}}`,upToDateLabel:`— Atualizado: {{list}}`,errorsLabel:`✗ {{list}}`,checkUpdatesTitle:`Verificar atualizações`,exportTitle:`Exportar habilidade como .md`,editTitle:`Editar habilidade`,uninstallTitle:`Desinstalar habilidade`,closeTitle:`Fechar e ir ao chat`,backTitle:`Voltar`,forwardTitle:`Avançar`,relatedFiles:`Arquivos relacionados`,references:`Referências`,goToSkillTitle:`Ir para {{name}}`,loadingContent:`Carregando conteúdo…`,editingLabel:`Editando {{name}}`,editStats:`{{lines}} linhas · {{words}} palavras · {{chars}} caracteres`,charsWarningFmt:`⚠ {{used}} MB / {{limit}} MB`,draftSaved:`Rascunho salvo`,draftRestored:`Rascunho restaurado`,discardDraft:`Descartar rascunho`,splitViewTitle:`Vista dividida`,hidePreviewTitle:`Ocultar pré-visualização`,contentPlaceholder:`Conteúdo da habilidade (markdown)...`,loadFailed:`Falha ao carregar o conteúdo`,noContent:`Sem conteúdo disponível`,uninstallSkillHeading:`Desinstalar habilidade`,uninstallConfirm:`Desinstalar {{name}}?`,uninstallRemovePath:`Isso removerá a habilidade de {{path}} e não pode ser desfeito.`,uninstallAction:`Desinstalar`},be={sessionStats:`Estatísticas da sessão`,clients:`Clientes`,input:`Entrada`,output:`Saída`,cost:`Custo`,agentsSuffix:`agentes`,upPrefix:`ativo há {{time}}`,webuiClient:`Cliente WebUI`,disconnected:`Desconectado`,connected:`Conectado`,tuiClient:`Cliente TUI`,terminal:`Terminal`,repl:`REPL`,coordinator:`COORDENADOR`,fleetSummary:`Resumo da frota`,toolCallsLabel:`Chamadas`,tokensLabel:`Tokens`,coordinatingFleet:`Coordenando frota`,donePrefix:`✓ concluído ·`,failedPrefix:`✕ falhou ·`,seenPrefix:`visto há {{time}}`,availableDesk:`Mesa disponível`,mailboxHub:`Central de correio`,unreadSuffix_one:`{{count}} não lida`,unreadSuffix_other:`{{count}} não lidas`,allClear:`Tudo lido`,total:`Total`,unreadLabel:`Não lidas`,liveActivity:`Atividade ao vivo`,waitingActivity:`Aguardando atividade…`,now:`agora`,fleetHq:`QG da Frota WrongStack`,live:`AO VIVO`,legendStatus:`Status`,legendActive:`Ativo`,legendIdle:`Inativo`,legendError:`Erro`,legendConnections:`Conexões`,legendMail:`Correio`,legendTask:`Tarefa`,legendStatusConn:`Status`,arrange:`Organizar`,arrangeTitle:`Organizar os nós para caberem na tela disponível`,feed:`Feed`,feedTitle:`Alternar feed de atividade ao vivo`,broadcast:`Transmitir`,broadcastTitle:`Transmitir mensagem a cada sessão ao vivo do projeto`,broadcastToAll:`Transmitir a todas as sessões`,broadcastPlaceholder:`Mensagem a cada agente ao vivo do projeto…`,broadcastSendHint:`⌘/Ctrl+Enter para enviar`,openFullView:`Abrir visualização completa de operações`,rowStatus:`Status`,rowModel:`Modelo`,rowTool:`Ferramenta`,rowIterations:`Iterações`,rowToolCalls:`Chamadas`,rowTokensIn:`Tokens de entrada`,rowTokensOut:`Tokens de saída`,rowTokensTotal:`Tokens totais`,rowContext:`Contexto`,rowCost:`Custo`,rowLastSeen:`Visto pela última vez`,rowSurface:`Superfície`,rowBranch:`Ramo`,rowPid:`PID`,rowDir:`Dir.`,rowAgents:`Agentes`,rowUptime:`Tempo ativo`,rowConnections:`Conexões`,rowTotalMessages:`Mensagens totais`,rowUnread:`Não lidas`,recent:`Recentes`,noSubject:`(sem assunto)`,fullOperationStream:`Fluxo completo de operações`,closeEsc:`Fechar (Esc)`,idleDesk:`Mesa inativa`,fleetHqLabel:`QG da Frota`,clientsSuffix_one:`{{count}} cliente`,clientsSuffix_other:`{{count}} clientes`,taskFallback:`tarefa`,controlLabel:`controle`},xe={installTitle:`Instalar habilidade`,createTitle:`Criar habilidade`,exportTitle:`Exportar todas as habilidades como .zip`,checkUpdatesTitle:`Verificar atualizações (todas)`,searchPlaceholder:`Pesquisar habilidades…`,loading:`Carregando…`,noSkills:`Sem habilidades instaladas`,noMatch:`Nenhuma habilidade corresponde ao filtro`,noDescription:`Sem descrição`,scopeForeign:`Externa`,installHeading:`Instalar Habilidade`,installHint:`Insira uma referência de repo GitHub (owner/repo) ou URL completa.`,installPlaceholder:`ex. wrongstack/skill-name ou https://github.com/owner/repo`,installScope:`Escopo de instalação:`,installBtn:`Instalar`,installedMsg:`Instalada: {{names}}`,installFailed:`Instalação falhou`,createHeading:`Criar Habilidade`,createHint:`Scaffold uma nova habilidade. A primeira linha é o trigger.`,nameLabel:`Nome`,namePlaceholder:`ex. minha-nova-habilidade`,descLabel:`Descrição / Trigger`,descPlaceholder:`Use esta habilidade quando <situação>.
|
|
5
|
-
Triggers: o usuário diz "palavra-chave", "outra".`,saveIn:`Salvar em:`,createBtn:`Criar Habilidade`,createdMsg:`Criada: {{name}}`,createFailed:`Criação falhou`},Se={noEvents:`Sem eventos.`},Ce={pickHint:`Escolha um kit — o agente vai segui-lo.`,gallery:`Galeria`,galleryTitle:`Abrir galeria de pré-visualização ao vivo`,stackTitle:`Stack alvo`,loading:`Carregando kits…`,notFound:`Nenhum kit de design encontrado.`,bestFor:`Ideal para:`,light:`Claro`,dark:`Escuro`},we={detached:`(separado)`,count_one:`{{count}} worktree`,count_other:`{{count}} worktrees`,baseSuffix:` · base {{base}}`,baseLabel:`base`,cleanOrphans:`Limpar órfãos`,cleanOrphansTitle:`Remover todos os worktrees órfãos`,liveBusyTitle:`Um run está ativo — pare-o primeiro`,rescanTitle:`Re-escanear`,removed_one:`Removido {{count}} worktree.`,removed_other:`Removidos {{count}} worktrees.`,failed:`Falhou`,mergedIntoBase:`{{branch}} mesclado na base.`,conflictMerge:`Conflito ao mesclar {{branch}}: {{files}}`,seeGit:`ver git`,mergeFailed:`Mesclagem falhou: {{reason}}`,unknownReason:`desconhecido`,mergeConfirmTitle:`Mesclar {{branch}} em {{base}}?`,mergeConfirmMsg:`Squash-mescla este branch no branch base. Cancela limpo em caso de conflito.`,mergeAction:`Mesclar`,removeConfirmTitle:`Remover {{branch}}?`,removeConfirmMsg:`Remove forçadamente o checkout do worktree e exclui seu branch. Trabalho não mesclado é descartado.`,empty:`Sem worktrees.`,emptyHint:`Runs SDD / Goal criam worktrees isolados aqui. Órfãos de runs falhos também aparecem.`,actOpenTerm:`Abrir no terminal`,actOpenFolder:`Abrir pasta`,actViewChanges:`Ver alterações`,actMerge:`Mesclar na base`,actRemove:`Remover / descartar`,live:`ativo`,noUncommitted:`Sem alterações não confirmadas`,commitsAhead_one:`{{count}} commit à frente`,commitsAhead_other:`{{count}} commits à frente`,more:`…{{count}} mais`},Te={heading:`Mapa do Escritório`,headingHint:`Visualize sua frota como uma planta de escritório com status dos agentes ao vivo.`,statAgents:`Agentes`,statMail:`Correio`,unreadSuffix:` não lidos`,sectionView:`Visualização`,sectionDisplay:`Exibição`,sectionBackground:`Fundo`,sectionRecent:`Atividade Recente`,eventsTrackedSuffix:` eventos rastreados`,recentHint:`Envios de correio, spawns de agentes e mudanças de status aparecem aqui.`,sectionShortcuts:`Atalhos`,sectionLegend:`Legenda`,hudLabel:`HUD`,hudDesc:`Mostrar overlay de estatísticas de sessão em tempo real`,hudToggle:`Ativar HUD`,minimapLabel:`Minimapa`,minimapDesc:`Mostrar o minimapa de visão geral`,minimapToggle:`Ativar minimapa`,controlsLabel:`Controles`,controlsDesc:`Mostrar controles de zoom e ajuste`,controlsToggle:`Ativar controles`,animateLabel:`Animar arestas`,animateDesc:`Animar o fluxo nas conexões ativas`,animateToggle:`Ativar animação de arestas`,legendLabel:`Mostrar legenda`,legendDesc:`Exibir legenda de status e conexão`,legendToggle:`Ativar legenda`,feedLabel:`Feed ao vivo`,feedDesc:`Faixa inferior de atividade recente entre processos`,feedToggle:`Ativar feed ao vivo`,fitView:`Ajustar`,zoomIn:`Ampliar`,zoomOut:`Reduzir`,resetZoom:`Redefinir zoom`,legendActive:`Ativo (em execução)`,legendIdle:`Inativo`,legendError:`Erro`,legendOffline:`Offline`,bg:{dots:`Pontos`,lines:`Linhas`,cross:`Cruz`,none:`Nenhum`}},Ee={liveProjectOffice:`Escritório do projeto ao vivo`,agents:`agentes`,working:`trabalhando`,toolCalls:`chamadas de ferramentas`,office:`Escritório`,topology:`Topologia`,officeDescription:`Mesas e trabalho dos agentes ao vivo`,topologyDescription:`Clientes, agentes e conexões`,team:`Equipe`,liveDesk:`Mesa ao vivo e trabalho chegando`,lastActions:`Trabalhos recentes`,leadAgent:`Agente líder`,agent:`Agente`,callsCount:`{{count}} chamadas`,recent:`Recentes`,noCalls:`Nenhuma chamada concluída ainda`,telemetryReconnect:`Reconecte este terminal para iniciar o histórico de ferramentas`,thinking:`Pensando`,waiting:`Aguardando trabalho`,preparing:`Preparando a próxima ação…`,deskReady:`A mesa está pronta`,toolCall:`Chamada de ferramenta`,execution:`Execução`,started:`Início`,duration:`Duração`,session:`Sessão`,target:`Destino`,resultSize:`Tamanho do resultado`,lines:`linhas`,bytes:`bytes`,tokens:`tokens`,input:`Entrada`,outputPreview:`Prévia da saída`,readyTitle:`O escritório está pronto`,readyBody:`Os agentes ocuparão uma mesa assim que entrarem neste projeto.`,liveEvent:`fluxo de eventos ao vivo`,connectedSessions_one:`{{count}} sessão conectada`,connectedSessions_other:`{{count}} sessões conectadas`,detailHint:`clique em uma ação para ver a entrada e o resultado exatos`,officeBriefing:`Briefing do escritório`,leaderPrompt:`Último prompt do líder`,activeInstruction:`Instrução ativa`,telemetryWaiting:`Reconecte este terminal para receber instruções ao vivo`,syncWaiting:`aguardando sincronização`,todoTelemetryWaiting:`Reconecte este terminal para receber a lista de tarefas ao vivo`,taskNotReported:`O agente está trabalhando, mas nenhuma descrição de tarefa foi informada`,noPrompt:`Nenhum prompt recebido nesta sessão`,activeTodos:`Tarefas ativas`,todoProgress:`{{done}}/{{total}} concluídas`,allTodosDone:`Todas as tarefas concluídas`,noActiveTodos:`Nenhuma tarefa ativa`,moreTodos:`+{{count}} outras`,currentTask:`Tarefa atual`,task:`Tarefa`,promptReceived:`Recebido`,todos:`Tarefas`,todoStatus:{pending:`Pendente`,in_progress:`Em andamento`,completed:`Concluída`}},De={tabProject:`Projeto SDD`,tabBoard:`Painel SDD ao vivo`,tabSpecs:`Especificações`},Oe={nav:e,brand:t,status:n,menu:r,sidePanel:i,history:a,agents:o,changes:s,inspector:c,nextSteps:l,mailbox:u,sessions:d,sessionPanel:f,fleet:p,context:m,refine:h,specs:g,refresh:_,board:v,debug:y,providerModels:b,dock:x,agentsMonitor:S,terminal:C,sessionWatch:w,sideEffects:T,monitor:E,sdd:D,toolResult:O,design:k,goalRun:A,collab:j,connection:M,mode:N,cost:P,model:F,modelSwitcher:I,work:L,todos:R,task:z,toolGroup:B,fileRef:V,plan:H,filePicker:U,toast:W,search:G,phase:K,ctxMode:q,transcript:J,autonomy:Y,queue:X,checkpoint:Z,goal:Q,worktree:$,process:ee,diff:te,fallback:ne,liveSessions:re,monacoDiff:ie,errorBody:ae,officeMap:oe,toolInput:se,message:ce,watch:le,shortcuts:ue,sddBoard:de,sddTask:fe,sddWizard:pe,fileExplorer:me,codeEditor:he,fileActivity:ge,analytics:_e,promptLib:ve,skillDetail:ye,office:be,skillsList:xe,timeline:Se,designStudio:Ce,worktrees:we,officeSettings:Te,agentOffice:Ee,sddhub:De};export{Ee as agentOffice,o as agents,S as agentsMonitor,_e as analytics,Y as autonomy,v as board,t as brand,s as changes,Z as checkpoint,he as codeEditor,j as collab,M as connection,m as context,P as cost,q as ctxMode,y as debug,Oe as default,k as design,Ce as designStudio,te as diff,x as dock,ae as errorBody,ne as fallback,ge as fileActivity,me as fileExplorer,U as filePicker,V as fileRef,p as fleet,Q as goal,A as goalRun,a as history,c as inspector,re as liveSessions,u as mailbox,r as menu,ce as message,N as mode,F as model,I as modelSwitcher,ie as monacoDiff,E as monitor,e as nav,l as nextSteps,be as office,oe as officeMap,Te as officeSettings,K as phase,H as plan,ee as process,ve as promptLib,b as providerModels,X as queue,h as refine,_ as refresh,D as sdd,de as sddBoard,fe as sddTask,pe as sddWizard,De as sddhub,G as search,f as sessionPanel,w as sessionWatch,d as sessions,ue as shortcuts,T as sideEffects,i as sidePanel,ye as skillDetail,xe as skillsList,g as specs,n as status,z as task,C as terminal,Se as timeline,W as toast,R as todos,B as toolGroup,se as toolInput,O as toolResult,J as transcript,le as watch,L as work,$ as worktree,we as worktrees};
|