@wrongstack/webui 0.302.2 → 0.303.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/assets/AgentRosterView-BnnhSRau.js +9 -0
- package/dist/assets/{AnalyticsDashboard-C9aPEyov.js → AnalyticsDashboard-CMs176Dp.js} +1 -1
- package/dist/assets/{AudienceMemoryPanel-Bciki41o.js → AudienceMemoryPanel-BRXM47H1.js} +2 -2
- package/dist/assets/{ChangesView-DumffowD.js → ChangesView-DxAQY4v4.js} +1 -1
- package/dist/assets/ChronicleDashboard-DPI_5S2R.js +1 -0
- package/dist/assets/CodeEditor-9Fu9hRrw.js +1 -0
- package/dist/assets/CodeMap-B7YGx2G0.js +1 -0
- package/dist/assets/{ConfirmModal-CdKg3EOQ.js → ConfirmModal-DXy17_uy.js} +1 -1
- package/dist/assets/{CronJobsPanel-CJ7Vc1Am.js → CronJobsPanel-C_bGieGQ.js} +1 -1
- package/dist/assets/{DeadCodeScanPanel-DaeHUzc5.js → DeadCodeScanPanel-hkBvamWn.js} +2 -2
- package/dist/assets/{DebugDashboard-BI3EmXrM.js → DebugDashboard-CDWJ9nLR.js} +1 -1
- package/dist/assets/{DesignGalleryView-DMW6Ab__.js → DesignGalleryView-BG-p6kFX.js} +1 -1
- package/dist/assets/GoalView-CCklBpTx.js +1 -0
- package/dist/assets/KanbanView-Dzvn9y79.js +3 -0
- package/dist/assets/MailboxDetailView-7dtt5joR.js +1 -0
- package/dist/assets/MemoryDrawer-D2Yq9oba.js +1 -0
- package/dist/assets/MemoryManager-CL5AiyKr.js +1 -0
- package/dist/assets/{ModelPicker-IOZSUnqM.js → ModelPicker-BazB-GbH.js} +1 -1
- package/dist/assets/OfficeMapPanel-Dtb75DlY.js +4 -0
- package/dist/assets/{ProcessMonitor-TGqyXxmB.js → ProcessMonitor-BTjaxnO-.js} +1 -1
- package/dist/assets/{QueuePanel-5aMgQbHv.js → QueuePanel-BOD9qtHp.js} +1 -1
- package/dist/assets/{RefreshDebugView-DfBYFPEF.js → RefreshDebugView-DfbZ-vgF.js} +1 -1
- package/dist/assets/{RequirementIntakeView-CNAFKiQ3.js → RequirementIntakeView-CeZFJlrn.js} +1 -1
- package/dist/assets/SageTabs-BlK58zgb.js +2 -0
- package/dist/assets/SddFlowGraph-DWphr6Tr.js +1 -0
- package/dist/assets/SddHub-ZRkMmA7e.js +2 -0
- package/dist/assets/{SessionInspectView-CytBw7Y9.js → SessionInspectView-DqrSHseG.js} +1 -1
- package/dist/assets/SessionList-DLoIKc1b.js +1 -0
- package/dist/assets/{SessionsDashboard-CridPbkX.js → SessionsDashboard-CUj2WSYM.js} +1 -1
- package/dist/assets/SetupScreen-B_2CuLeR.js +1 -0
- package/dist/assets/SkillDetailView-ChspOaAw.js +3 -0
- package/dist/assets/{SpecsView-DUx1sgtH.js → SpecsView-Cl4vpAoL.js} +1 -1
- package/dist/assets/{TechStackView-CvUiAISX.js → TechStackView-DsFV85XT.js} +1 -1
- package/dist/assets/{TerminalPanel-Dg5hqYTA.js → TerminalPanel-GraS3zw1.js} +1 -1
- package/dist/assets/{Toaster-BgN2bRJx.js → Toaster-D76T-Ld4.js} +1 -1
- package/dist/assets/{button-Dcy288Mc.js → button-ELs5xgtQ.js} +1 -1
- package/dist/assets/{chat-store-DbxFVDwi.js → chat-store-CBJ1gc8n.js} +1 -1
- package/dist/assets/{codemap-activity-store-DQfjo7-j.js → codemap-activity-store-D67-genN.js} +1 -1
- package/dist/assets/codemap-index-store-ByAYIzQA.js +1 -0
- package/dist/assets/{dialog-ftgTihmF.js → dialog-CfAoIH8P.js} +1 -1
- package/dist/assets/{empty-state-RRSqQaCk.js → empty-state-BDwjdvMh.js} +1 -1
- package/dist/assets/{i18n-9T7iGYgW.js → i18n-BvFgJYE2.js} +2 -2
- package/dist/assets/index-BTRQG7C5.js +132 -0
- package/dist/assets/index-DHsJniTZ.css +1 -0
- package/dist/assets/{input-fo9-BPBC.js → input-DSTQkMEh.js} +1 -1
- package/dist/assets/{mailbox-store-C1mzoSqJ.js → mailbox-store-CKpkM0H1.js} +1 -1
- package/dist/assets/{roster-ws-Da57e_sI.js → roster-ws-a3-SO1Yb.js} +1 -1
- package/dist/assets/{session-store-Df7_hhe9.js → session-store-Ce4Dck2K.js} +1 -1
- package/dist/assets/settings-BUtmAZBV.js +1 -0
- package/dist/assets/settings-BlMNd_AC.js +1 -0
- package/dist/assets/settings-ClpzPWKE.js +1 -0
- package/dist/assets/settings-CyYYbmdR.js +1 -0
- package/dist/assets/settings-DyIEVRJT.js +1 -0
- package/dist/assets/settings-Orwkg3lH.js +1 -0
- package/dist/assets/settings-XRC0dC9D.js +1 -0
- package/dist/assets/{shared-KAzksK0C.js → shared-D368RBth.js} +1 -1
- package/dist/assets/stores-BATHCuMN.js +7 -0
- package/dist/assets/{ui-store-CE4-TlwB.js → ui-store-BGNdg1e4.js} +1 -1
- package/dist/assets/{useWebSocket-CZSpbA3M.js → useWebSocket-B2opfRwA.js} +3 -3
- package/dist/assets/utils-CUCQrODG.js +1 -0
- package/dist/assets/{vendor-BuarzSSb.js → vendor-GiKfK4Iw.js} +30 -30
- package/dist/assets/{view-navigation-DIDEcp4V.js → view-navigation-FdnvQSOv.js} +1 -1
- package/dist/assets/{ws-client-TTMa0XaT.js → ws-client-CGEB75Dy.js} +1 -1
- package/dist/components/KanbanContractGraphDashboard.d.ts +7 -0
- package/dist/components/KanbanContractGraphPanel.d.ts +7 -0
- package/dist/components/KanbanContractGraphView.d.ts +40 -0
- package/dist/components/KanbanViewModeTabs.d.ts +1 -1
- package/dist/components/KanbanWorkbench.d.ts +9 -0
- package/dist/components/TaskVerificationSection.d.ts +3 -3
- package/dist/components/agent-roster-data.d.ts +9 -0
- package/dist/index.html +22 -22
- package/dist/index.js +5260 -3984
- package/dist/lib/palettes.d.ts +1 -1
- package/dist/stores/kanban-store.d.ts +2 -1
- package/dist/stores/session-store.d.ts +2 -0
- package/dist/types/sage.d.ts +5 -13
- package/dist/types/system.d.ts +2 -0
- package/package.json +8 -8
- package/dist/assets/AgentRosterView-BwukmHoA.js +0 -9
- package/dist/assets/ChronicleDashboard-BYGV5twz.js +0 -1
- package/dist/assets/CodeEditor-D2Dnax7e.js +0 -1
- package/dist/assets/CodeMap-DIKKs3Ux.js +0 -1
- package/dist/assets/GoalView-3291Hxnb.js +0 -1
- package/dist/assets/KanbanView-CFE63A4a.js +0 -3
- package/dist/assets/MailboxDetailView-CUTWkSyK.js +0 -1
- package/dist/assets/MemoryDrawer-Dsy0AX6f.js +0 -1
- package/dist/assets/MemoryManager-D1kXeVE3.js +0 -1
- package/dist/assets/OfficeMapPanel-Q81eioDB.js +0 -4
- package/dist/assets/SageTabs-olgLJfg_.js +0 -2
- package/dist/assets/SddHub-7Z55QY-M.js +0 -2
- package/dist/assets/SessionList-C3ygQN8A.js +0 -1
- package/dist/assets/SetupScreen-BkVjdky4.js +0 -1
- package/dist/assets/SkillDetailView-Cp-xEHww.js +0 -3
- package/dist/assets/codemap-index-store-COStDU-8.js +0 -1
- package/dist/assets/index-Cw20Xg0d.css +0 -1
- package/dist/assets/index-FHt-sKVF.js +0 -132
- package/dist/assets/progress-ring-B9pqitSa.js +0 -1
- package/dist/assets/settings-Bb7_utQE.js +0 -1
- package/dist/assets/settings-Bd8zMwvC.js +0 -1
- package/dist/assets/settings-DdFgBMAw.js +0 -1
- package/dist/assets/settings-De6sXIFO.js +0 -1
- package/dist/assets/settings-E8SKMLxq.js +0 -1
- package/dist/assets/settings-zIY9-ivF.js +0 -1
- package/dist/assets/settings-zKBcRjqE.js +0 -1
- package/dist/assets/stores-vuG0AaKy.js +0 -7
- package/dist/assets/utils-B-9lSDIn.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=`Configurações`,t=`Configure every aspect of your agent workspace`,n={general:`Geral`,provider:`Provedor`,connection:`Conexões`,agent:`Agente`,execution:`Execução`,fallbacks:`Fallbacks`,routing:`Roteamento`,fleet:`Frota`,integrations:`Integrações`,chimera:`Chimera`,context:`Contexto`,logs:`Registros`,security:`Segurança`,display:`Exibição`,displayDesc:`Aparência do workbench, chip de status, temporizadores de refine e alternâncias de injeção de ferramenta/memória — reflete o SettingsPicker do TUI.`,generalDesc:`Aparência, idioma e preferências de exibição — espelha o seletor de configurações da TUI.`,providerDesc:`Chaves de API, provedores salvos e o catálogo de provedores.`,connectionDesc:`URL do servidor WebSocket e saúde da conexão.`,agentDesc:`Autonomia, refinamento de prompts, raciocínio e roteamento de modelos.`,executionDesc:`Limites de iterações, comportamento de saída e disjuntor de processo.`,fallbacksDesc:`Cadeia de fallback de modelos, favoritos e perfis de fallback nomeados.`,routingDesc:`Matriz de roteamento de modelos por fase e por função.`,fleetDesc:`Concorrência de subagentes, streaming e previsão do próximo passo.`,integrationsDesc:`Cliente HQ, servidores MCP e notificações do Telegram.`,chimeraDesc:`Configuração do agente de revisão de código pós-sessão.`,contextDesc:`Flags de recursos, estratégia de contexto, compactador e controles de plugins.`,logsDesc:`Nível de log, detalhe de auditoria, escopo de acesso ao sistema de arquivos e stream de depuração.`,securityDesc:`Controle de decisão Brain, agente sombra e acesso a ferramentas.`},r={heading:`Modelo`,loading:`Carregando modelos...`,notFound:`Nenhum modelo encontrado para este provedor. O catálogo pode estar vazio ou ainda carregando.`,selectProviderFirst:`Selecione um provedor primeiro`,context:`{{count}}k contexto`},i={wsUrlLabel:`URL do servidor WebSocket`,wsUrlPlaceholder:`ws://localhost:3456`,wsUrlHint:`URL do servidor WebSocket do agente. O servidor é executado junto com o CLI.`,startingHeading:`Iniciando o servidor WebSocket`,startingBody:`Para desenvolvimento, execute ./dev.ps1 da raiz do repo (opcionalmente defina WS_HOST/WS_PORT antes). Caso contrário, inicie a WebUI com a CLI: wstack --webui.`,healthHeading:`Saúde das conexões`,healthHint:`Relatório ao vivo de propriedade, armazenamento, fila, observador e latência dos serviços.`,healthRefresh:`Atualizar`,healthLoading:`Verificando serviços…`,healthUnknown:`Saúde desconhecida`,healthDisconnected:`O WebSocket da WebUI está desconectado.`,healthRestartRequired:`Reinicie o backend uma vez para ativar o relatório de conexões.`,healthOptional:`Sob demanda`,endpointInvalidBadge:`caminho do socket muito longo`,endpointInvalidRemedy:`O caminho do socket IPC excede o limite de comprimento desta plataforma, então o daemon compartilhado não pode iniciar. As consultas recorrem a um modo local de processo mais lento. Remédio: defina um TMPDIR mais curto (ex. export TMPDIR=/tmp) e reinicie o WrongStack.`,healthCounts:`{{healthy}} saudáveis · {{attention}} atenção · {{sleeping}} inativos`,healthOverall:{healthy:`Serviços obrigatórios saudáveis`,degraded:`Serviço obrigatório degradado`,error:`Serviço obrigatório indisponível`},healthStatus:{healthy:`Saudável`,degraded:`Degradado`,offline:`Inativo`,unavailable:`Indisponível`,error:`Erro`},services:{kanban:{label:`Kanban IPC`},mailbox:{label:`Mailbox IPC`}},serviceActionRestart:`Reiniciar {{label}}`,webuiTransport:`Transporte do WebUI`},a={savedProviderCount_one:`{{count}} provedor`,savedProviderCount_other:`{{count}} provedores`,keyCount_one:`{{count}} chave configurada`,keyCount_other:`{{count}} chaves configuradas`,activeKeyCount_one:`{{count}} chave ativa`,activeKeyCount_other:`{{count}} chaves ativas`,subscriptionHeading:`Login com assinatura`,apiKeysHeading:`Provedores de chave de API`,apiKeysBody:`Escolha um provedor do catálogo e adicione uma chave de API, ou gerencie os provedores salvos.`,tabCatalog:`Catálogo`,tabSaved:`Salvos ({{count}})`,searchPlaceholder:`Pesquisar entre {{count}} provedores (nome / id / família)…`,loadingCatalog:`Carregando catálogo...`,noMatch:`Nenhum provedor corresponde a "{{query}}".`,configured:`Configurado`,reachable:`Acessível`,envVar:`ENV: {{var}}`,modelCount_one:`{{count}} modelo`,modelCount_other:`{{count}} modelos`,keyPlaceholder:`Chave de API do {{name}}`,orEnv:`Ou defina {{env}} no ambiente.`,addApiKey:`Adicionar chave de API`,manageKeys:`Gerencie suas chaves de API e configurações de provedor`,addProvider:`Adicionar provedor`,addCustomHeading:`Adicionar provedor personalizado`,localServers:`Servidores locais — clique para preencher:`,providerIdPlaceholder:`ID do provedor (ex. my-llm-server)`,apiKeyOptionalPlaceholder:`Chave de API (opcional)`,noSaved:`Nenhum provedor salvo`,noSavedHint:`Adicione um provedor para começar`,apiKeysLabel:`Chaves de API`,addKey:`Adicionar chave`,noKeys:`Nenhuma chave configurada`,active:`Ativa`,setActive:`Definir como ativa`,keyLabelPlaceholder:`Rótulo da chave (ex. default, production)`,apiKeyPlaceholder:`Chave de API`,saveKey:`Salvar chave`,savedToast:`Chave salva para {{name}}`},o={addCustom:`Adicionar modelo personalizado`,addCustomTitle:`Adicionar modelo personalizado`,addFromCatalog:`Adicionar do catálogo`,catalogSearchPlaceholder:`Pesquisar no catálogo models.dev…`,catalogSearchTitle:`Pesquisar no catálogo models.dev`,colActions:`Ações`,colCaps:`Capacidades`,colContext:`Contexto`,colCost:`Custo`,colModalities:`Modalidades`,colModel:`Modelo`,colOutput:`Saída`,colSource:`Origem`,editModel:`Editar modelo`,emptyState:`Nenhum modelo ainda — adicione do catálogo ou crie um modelo personalizado.`,fieldContext:`Janela de contexto`,fieldCostInput:`Custo de entrada`,fieldCostOutput:`Custo de saída`,fieldDescription:`Descrição`,fieldFamily:`Família`,fieldInputLimit:`Limite de entrada`,fieldInputModalities:`Modalidades de entrada`,fieldLastUpdated:`Última atualização`,fieldName:`Nome`,fieldOutput:`Saída máxima`,fieldOutputModalities:`Modalidades de saída`,fieldReleaseDate:`Data de lançamento`,modelAdded:`{{model}} adicionado`,modelRemoved:`{{model}} removido`,modelSaved:`{{model}} salvo`,noResults:`Nenhum modelo encontrado`,removeModel:`Remover modelo`,sectionCapabilities:`Indicadores de capacidades`,sectionDates:`Datas`,sectionIdentity:`Identidade`,sectionLimits:`Limites`,sectionModalities:`Modalidades`,sectionPricing:`Preços (por 1M de tokens, USD)`,tabForm:`Formulário`,tabRawJson:`JSON bruto`,typeToSearch:`Digite para pesquisar…`,useModel:`Usar {{model}}`,usingModel:`Usando {{model}}`,filterPlaceholder:`Filtrar modelos…`},s={status:{connected:`Conectado`,connecting:`Conectando`,sleeping:`Inativo`,discovering:`Descobrindo`,error:`Erro`,stopped:`Parado`,unknown:`Desconhecido`},disabled:`Os servidores MCP estão desativados.`,wakeTitle:`Acordar servidor`,sleepTitle:`Colocar em repouso`,discoverTitle:`Descobrir ferramentas`,editTitle:`Editar`,removeTitle:`Remover`,statusLabel:`Status:`,enabledLabel:`Ativado:`,yes:`Sim`,no:`Não`,descriptionLabel:`Descrição:`,pidLabel:`PID:`,errorLabel:`Erro:`,toolsLabel:`Ferramentas ({{count}}):`,noTools:`Nenhuma ferramenta descoberta ainda`,serverNameRequired:`O nome do servidor é obrigatório`,dialogTitleEdit:`Editar servidor MCP`,dialogTitleAdd:`Adicionar servidor MCP`,dialogTitleAddCustom:`Adicionar servidor MCP personalizado`,fieldName:`Nome`,fieldNamePlaceholder:`ex. github, filesystem`,fieldTransport:`Transporte`,fieldUrl:`URL`,fieldCommand:`Comando`,fieldCommandPlaceholder:`ex. npx`,fieldArgs:`Args`,fieldArgsHint:`(separados por espaços)`,fieldArgsPlaceholder:`ex. -y @modelcontextprotocol/server-github`,fieldEnv:`Variáveis de ambiente`,fieldEnvHint:`(KEY=valor, uma por linha)`,fieldDescription:`Descrição`,fieldDescriptionPlaceholder:`Servidor MCP do GitHub para acesso ao repositório`,enableServer:`Ativar servidor`,lazyConnect:`Conexão preguiçosa`,lazyConnectHint:`(não inicia até a primeira chamada; hiberna quando ocioso)`,saveChanges:`Salvar alterações`,addServer:`Adicionar servidor`,requires:`Requer: {{vars}}`,added:`Adicionado`,heading:`Servidores MCP`,summary:`{{connected}} conectados · {{sleeping}} inativos · {{total}} no total`,addCustom:`Personalizado`,tabRecommended:`Recomendados`,tabServers:`Servidores`,tabAddCustom:`Personalizado`,recommendedBody:`Adição com um clique para servidores MCP populares. Clique em Adicionar para preencher a configuração e depois confirme. Servidores que exigem credenciais precisarão de suas variáveis de ambiente antes do uso.`,loadingServers:`Carregando servidores...`,noServers:`Nenhum servidor MCP configurado`,noServersHint:`Mude para a aba Recomendados para adicionar servidores populares, ou Personalizado para os seus.`,addCustomBody:`Configure um servidor MCP personalizado com transporte stdio, SSE ou HTTP.`,addCustomBodyHint:`Para servidores populares, use a aba Recomendados — tudo já está pré-configurado.`,removeConfirmTitle:`Remover o servidor "{{name}}"?`,removeConfirmBody:`Isso remove o servidor MCP da sua configuração.`,toastAdded:`Servidor "{{name}}" adicionado`,toastRemoved:`Servidor "{{name}}" removido`,toastDiscovered:`Descobertas {{count}} ferramentas de "{{name}}"`,toastSleeping:`O servidor "{{name}}" está inativo`,toastConnected:`Servidor "{{name}}" conectado`,toastReconnected:`Servidor "{{name}}" reconectado`,toastDisconnected:`Servidor "{{name}}" desconectado: {{reason}}`,toastError:`Servidor "{{name}}" erro: {{error}}`},c={title:`Limpar a allowlist salva?`,body_one:`Isso removerá o modelo fixado para {{provider}}. O seletor de modelos voltará ao catálogo models.dev.`,body_other:`Isso removerá os {{count}} modelos fixados para {{provider}}. O seletor de modelos voltará ao catálogo models.dev.`,undoHint:`Você pode desfazer por 8 segundos após confirmar.`,keepTitle:`Manter allowlist (Esc)`,clearTitle:`Limpar allowlist (Enter)`,clear:`Limpar allowlist`},l={termsWarning:`Entre com uma assinatura em vez de uma chave de API. Usar uma assinatura fora de seu cliente oficial pode violar os Termos do provedor — sua conta pode ser limitada ou banida. Uma chave de API é o caminho sancionado para uso programático.`,signIn:`Entrar`,waitingBrowser:`Aguardando seu login…`,openSignIn:`Abrir página de login`,pasteLoopbackBusy:`Porta loopback ocupada — cole a URL de redirecionamento`,pasteCantReach:`O navegador não alcança este servidor? Cole a URL de redirecionamento`,submit:`Enviar`,enterCode:`Insira este código na página de verificação:`,openVerification:`Abrir página de verificação`,waitingCode:`Aguardando autorização…`,exchanging:`Trocando tokens…`,fetchingModels:`Buscando modelos…`,signedIn:`Conectado.`,signedInToast:`Conectado — {{provider}}`,signInFailed:`Login falhou`,accountCount_one:`{{count}} conta salva`,accountCount_other:`{{count}} contas salvas`,active:`Ativo`,inactive:`Inativo`,retry:`Repetir`,retryLogin:`Reautenticar esta conta`,newAccount:`Nova conta`,aliasPlaceholder:`ex. {{default}}`},u={showThinkingLabel:`Mostrar registros de raciocínio`,showThinkingHint:`Exibe os blocos de raciocínio concluídos no histórico do chat.`,groupToolCallsLabel:`Agrupar chamadas de ferramentas`,groupToolCallsHint:`Agrupa chamadas consecutivas de ferramentas em um único indicador.`,themeHeading:`Tema`,themeLight:`Claro`,themeDark:`Escuro`,themeSystem:`Sistema`,themeSystemHint:`Sistema segue a preferência claro/escuro do seu sistema operacional.`,preferencesHeading:`Preferências`,compactDensity:`Densidade compacta`,compactDensityHint:`Espaçamento mais estreito em todo o chat.`,soundOnComplete:`Som ao concluir`,soundOnCompleteHint:`Reproduz um toque suave quando uma execução termina.`,titleAnimation:`Animação do título`,titleAnimationHint:`Mostrar título animado do terminal no CLI.`,thinkingWordLabel:`Palavra de raciocínio (CLI/TUI)`,thinkingWordHint:`Palavra exibida no chip de status da TUI. Uma única palavra curta.`,statuslineModeLabel:`Modo da linha de status (CLI/TUI)`,statuslineModeHint:`Densidade da linha de status da TUI.`,statuslineModeDetailed:`Detalhado`,statuslineModeMinimum:`Mínimo`,statuslineModeNoColor:`Sem cor`,animationStyleLabel:`Estilo de animação (CLI/TUI)`,animationStyleHint:`Animação do chip de trabalho da TUI.`,animationStyleRainbow:`Arco-íris`,animationStyleWave:`Onda`,animationStylePulse:`Pulso`,animationStyleDots:`Pontos`,animationStyleBreathe:`Respiração`,animationStyleCycle:`Ciclo`,languageHeading:`Idioma`,languageLabel:`Idioma da interface`,languageHint:`Altera apenas o texto da interface. Prompts, skills e a saída do modelo não são afetados.`,paletteHeading:`Paleta de cores`,paletteSwitcherTitle:`Paleta de cores`,paletteHint:`Escolha a cor principal (e suas derivadas). As superfícies neutras permanecem as mesmas.`,paletteSignal:`Sinal`,paletteEmeraldGold:`Esmeralda e dourado`,paletteBlueNavy:`Azul-marinho`,palettePurplePink:`Roxo e rosa`,paletteCyanTeal:`Ciano e verde-azulado`,paletteRoseCopper:`Rosa e cobre`,paletteIndigoAmber:`Índigo e âmbar`,paletteSageSand:`Salvia e areia`,paletteSlateViolet:`Lousa e violeta`,paletteCoralMint:`Coral e hortelã`,paletteArcticEmber:`Ártico e brasa`,paletteMossRust:`Musgo e ferrugem`},d={autonomyHeading:`Autonomia e Comportamento`,autonomyModeLabel:`Modo de autonomia`,autonomyModeHint:`Quão independentemente o agente prossegue entre turnos.`,autonomyModeOff:`Desativado — controle manual total`,autonomyModeSuggest:`Sugerir — sugere os próximos passos`,autonomyModeAuto:`Auto — breve atraso de confirmação`,autonomyModeEternal:`Eterno — autônomo até o objetivo concluído`,autonomyModeEternalParallel:`Eterno Paralelo — frota multi-agente`,autoProceedDelayLabel:`Atraso de auto-prosseguir`,autoProceedDelayHint:`Milissegundos antes de o agente auto-prosseguir no modo Auto. 0 = imediato.`,yoloLabel:`Modo YOLO`,yoloHint:`Ignorar os prompts de confirmação de ferramentas — o agente roda sem perguntar.`,refineHeading:`Refinamento de Prompt`,enableRefineLabel:`Ativar refinamento`,enableRefineHint:`Reescreve os prompts antes de enviar — instruções mais claras, melhores resultados.`,refineDelayLabel:`Atraso de refinamento`,refineDelayHint:`Contagem regressiva antes do envio automático do prompt refinado.`,refineLanguageLabel:`Idioma de refinamento`,refineLanguageHint:`Mantenha seu idioma ou traduza para inglês para o modelo.`,refineLanguageOriginal:`Original — mantenha seu idioma`,refineLanguageEnglish:`Inglês — traduzir para inglês`,refinerProviderLabel:`Provedor do refinador`,refinerProviderHint:`Id do provedor para o refinamento de objetivos. Vazio = usar o provedor da sessão.`,refinerProviderDefault:`Provedor da sessão`,refinerModelLabel:`Modelo do refinador`,refinerModelHint:`Id do modelo para o refinamento de objetivos. Vazio = usar o modelo da sessão.`,refinerModelDefault:`Modelo da sessão`,refinerProfileLabel:`Perfil de fallback do refinador`,refinerProfileHint:`Perfil de fallback nomeado para refinamento de objetivos. Substitui o provedor e o modelo.`,refinerProfileDefault:`Nenhum — usar provedor e modelo ou os padrões da sessão`,reasoningHeading:`Raciocínio e Cache`,reasoningModeLabel:`Modo de raciocínio`,reasoningModeHint:`Controla como o modelo usa o pensamento estendido. Auto = padrão do provedor.`,reasoningModeAuto:`Auto — padrão do provedor`,reasoningModeOn:`Ligado — forçar pensamento`,reasoningModeOff:`Desligado — desativar pensamento`,reasoningEffortLabel:`Esforço de raciocínio`,reasoningEffortHint:`Quanto compute o modelo gasta pensando. Enviado apenas quando o modelo suporta.`,reasoningEffortNone:`Nenhum`,reasoningEffortMinimal:`Mínimo`,reasoningEffortLow:`Baixo`,reasoningEffortMedium:`Médio`,reasoningEffortHigh:`Alto`,reasoningEffortXhigh:`Muito alto`,reasoningEffortMax:`Máx`,preserveThinkingLabel:`Preservar pensamento`,preserveThinkingHint:`Mantém os blocos de raciocínio entre turnos para continuidade de contexto.`,cacheTtlLabel:`TTL de cache`,cacheTtlHint:`Tempo de vida do cache de prompt. 1h custa mais na escrita mas economiza em releituras (Anthropic).`,cacheTtlDefault:`Padrão — padrão do provedor`,cacheTtl5m:`5 minutos`,cacheTtl1h:`1 hora`,capsHint:`Use wstack models caps para verificar o que o modelo atual suporta. Configurações não suportadas são omitidas silenciosamente por requisição.`,routingHeading:`Roteamento de modelo`,routingRouteKey:`Chave de rota de modelo`,routingPhasesGroup:`Fases`,routingRolesGroup:`Funções {{label}}`,routingCustomGroup:`Rotas personalizadas existentes`,routingTargetAria:`Destino da rota de modelo`,routingTargetEmpty:`— Limpar rota —`,routingTargetProfilesGroup:`Perfis de fallback`,routingTargetModelsGroup:`Modelos (provedor/modelo)`,routingSet:`Definir`,routingReasoningModeAria:`Modo raciocínio nova rota`,routingReasoningEffortAria:`Esforço raciocínio nova rota`,routingReasoningPreserveAria:`Preservação raciocínio nova rota`,routingReasoningModeFor:`Modo raciocínio para {{key}}`,routingReasoningEffortFor:`Esforço raciocínio para {{key}}`,routingReasoningPreserveFor:`Preservação raciocínio para {{key}}`,noRoutes:`Ainda não há rotas de modelo.`,leaderModel:`modelo líder`,autonomyDelayMsLabel:`Atraso de continuação automática`,autonomyDelayMsHint:`Milissegundos antes de o agente continuar automaticamente no modo Auto. 0 = imediato.`,refineCountdownLabel:`Contagem regressiva de refinamento`,refineCountdownHint:`Período de carência antes do envio automático do prompt refinado (milissegundos).`},f={heading:`Execução`,maxIterationsLabel:`Iterações máx por run`,maxIterationsHint:`Teto rígido de turnos LLM por agent.run().`,autoProceedMaxIterationsLabel:`Iterações máx de auto-prosseguir`,autoProceedMaxIterationsHint:`Para o auto-prosseguir após N iterações. 0 = ilimitado.`,confirmExitLabel:`Confirmar antes de sair`,confirmExitHint:`Primeiro Ctrl+C aborta o trabalho, segundo confirma a saída.`,chimeLabel:`Som ao concluir`,chimeHint:`Campainha do terminal quando um run de agente termina.`,breakerLabel:`Disjuntor de processos`,breakerHint:`Bloqueia bash/exec após falhas repetidas; ao disparar, arma a contagem de kill/reset.`,breakerTimeoutLabel:`Tempo de kill/reset do disjuntor`,breakerTimeoutHint:`Atraso antes do kill/reset automático ao disparar. 0 = recuperação manual.`,availabilityHeading:`Provider/model availability calendar`,availabilityHint:`Prevent autonomous and overnight runs from using selected providers or models during recurring windows.`},p={heading:`Modelos fallback / round-robin`,body:`Quando o modelo ativo é rate-limitado (429/529), dá erro 5xx ou trava — após suas próprias retentativas — o agente rotaciona para o próximo modelo desta cadeia. Também usado como padrão para os sub-agentes workers do SDD.`,autoFallbackLabel:`Fallback automático`,autoFallbackHint:`Quando a cadeia acima está vazia, derive uma automaticamente de seus provedores com chave.`,favoritesOnlyLabel:`Apenas favoritos`,favoritesOnlyHint:`Quando o fallback automático deriva uma cadeia, restrinja-a aos seus modelos favoritos.`,profilesHeading:`Perfis fallback / round-robin`,addProfile:`Adicionar`,noProfiles:`Ainda não há perfis de fallback nomeados.`,createDefault:`Criar padrão a partir do modelo ativo`,useChain:`Usar cadeia`,setLeader:`Definir líder`,profileEmpty:`O perfil está vazio.`,favoritesHeading:`Modelos favoritos`,favoritesEmpty:`Os favoritos são mostrados primeiro e podem restringir o fallback automático.`,addModelToProfile:`Adicionar modelo ao perfil…`,addFavoriteModel:`Adicionar modelo favorito…`,inactive:`inativo`},m={heading:`Frota e Streaming`,fleetChatVerbosityLabel:`Transmitir eventos da frota`,fleetChatVerbosityHint:`Mostra a atividade ao vivo dos sub-agentes no painel da frota.`,maxConcurrentLabel:`Sub-agentes concorrentes máx`,maxConcurrentHint:`Número máximo de sub-agentes que podem rodar simultaneamente.`,nextPredictionLabel:`Previsão do próximo passo`,nextPredictionHint:`Após um turno, prevê os prováveis próximos passos.`,nextStepsToolLabel:`Ferramenta nextsteps`,nextStepsToolHint:`Permite que o agente registre as sugestões com uma chamada de ferramenta em vez de escrever o bloco manualmente. Vale na próxima sessão.`},h={hqHeading:`Cliente HQ`,hqPublishingLabel:`Publicação HQ`,hqPublishingHint:`Publica esta sessão WebUI/cliente no WrongStack HQ. Clientes da mesma máquina podem auto-descobrir a auth HQ local; clientes remotos usam a URL/token abaixo.`,hqUrlLabel:`URL HQ`,hqUrlHint:`Deixe vazio para auto-descoberta na mesma máquina.`,hqTokenLabel:`Token do cliente HQ`,hqRawContentLabel:`Conteúdo HQ bruto`,hqRawContentHint:`Enviar pré-visualizações de conteúdo brutas para HQ em vez de pré-visualizações redigidas.`,telegramHeading:`Notificações do Telegram`,telegramSessionEndLabel:`Fim de sessão`,telegramSessionEndHint:`Envia um resumo quando uma sessão termina.`,telegramDelegateLabel:`Delegado concluído`,telegramDelegateHint:`Envia uma nota humanizada quando um sub-agente conclui.`,telegramLongToolLabel:`Ferramentas longas`,telegramLongToolHint:`Notifica quando uma ferramenta excede {{ms}}ms. 0 para desativar.`,telegramChangesApply:`As mudanças se aplicam imediatamente.`,telegramNotConfigured:`O Telegram não está configurado. Execute /telegram-setup na CLI para conectar um bot primeiro.`,heading:`Integrations`,disabledHint:`Ative o recurso na aba Contexto para usar esta seção.`},g={chimeraDedicatedHeading:`Chimera — Post-session Code Review`,chimeraDedicatedHint:`Automated code quality review that runs after every agent session. Catches regressions, anti-patterns, and potential bugs.`,chimeraSectionEnabled:`Post-session review (Chimera)`,chimeraSectionEnabledHint:`Run a code review agent after every iteration.`,chimeraProviderLabel:`Chimera provider`,chimeraProviderHint:`Provider for the review agent. Select one from your configured providers.`,chimeraProviderSessionDefault:`Session default`,chimeraModelLabel:`Model`,chimeraModelSessionDefault:`Session default`,chimeraModelHint:`Model for the review agent. Requires a provider first.`,chimeraMaxFilesLabel:`Max files per review`,chimeraMaxFilesHint:`Maximum number of changed files included in a single review call.`,chimeraAutoFixLabel:`Auto-fix mode`,chimeraAutoFixHint:`Whether the review agent should automatically apply fixes for issues it finds.`,chimeraAutoFixOff:`Off — review only`,chimeraAutoFixAsk:`Ask — confirm before applying`,chimeraAutoFixAuto:`Auto — apply without confirmation`,chimeraPickModel:`Pick provider/model for Chimera`,chimeraPickModelHint:`Select a provider and model for post-session code review.`,autoReviewSectionEnabled:`Mid-session review (Auto-Review)`,autoReviewSectionEnabledHint:`Run a review agent mid-session on every file change.`,autoReviewFallbackProfileLabel:`Perfil fallback / round-robin`,autoReviewFallbackProfileHint:`Perfil de modelos para auto-review; fornece o pool de fallback e os modelos para round-robin ou seleção aleatória.`,autoReviewFallbackProfileNone:`None — use provider+model or session defaults`,autoReviewModelSelectionLabel:`Seleção do perfil`,autoReviewModelSelectionHint:`Escolhe o próximo modelo na ordem ou um modelo inicial aleatório para cada revisão.`,autoReviewModelSelectionRoundRobin:`Round-robin — ordem do perfil`,autoReviewModelSelectionRandom:`Aleatório — escolher do perfil`,autoReviewFallbackModelsLabel:`Modelos fallback / round-robin`,autoReviewFallbackModelsEmpty:`Nenhum modelo fallback / round-robin configurado`,autoReviewFallbackModelsHint:`Modelos do perfil ou cadeia global; formam o pool de seleção e a cadeia de nova tentativa.`,autoReviewModelLabel:`Model`,autoReviewModelHint:`Model for the auto-review agent. Requires a provider first.`,autoReviewDebounceLabel:`Debounce interval (ms)`,autoReviewDebounceHint:`Minimum gap between review triggers after a file change.`,autoReviewMaxFilesLabel:`Max files per batch`,autoReviewMaxFilesHint:`Files per auto-review call.`,autoReviewMaxConcurrentLabel:`Max concurrent reviews`,autoReviewMaxConcurrentHint:`Parallel review subagent cap.`,autoReviewCascadeLabel:`Cascade on`,autoReviewCascadeHint:`Follow-up agent threshold — spawns security-scanner and bug-hunter above this severity.`,autoReviewCascadeOff:`Off — no cascade`,autoReviewCascadeCritical:`Critical — only critical findings`,autoReviewCascadeHigh:`High — critical or high findings`,autoReviewPickModel:`Pick provider/model for Auto-Review`,autoReviewPickModelHint:`Select a provider and model, or a named fallback profile, for mid-session auto-review.`,pluginsPerPluginHint:`Enable or disable individual plugins. Changes take effect on next session.`},_={flagsHeading:`Sinalizadores de Recursos`,mcpLabel:`Servidores MCP`,mcpHint:`Habilita integrações Model Context Protocol.`,pluginsLabel:`Plugins`,pluginsHint:`Carrega e executa plugins instalados pelo usuário.`,memoryLabel:`Memória`,memoryHint:`Persiste e recupera fatos entre sessões.`,skillsLabel:`Habilidades`,skillsHint:`Carrega prompts de habilidades específicas do domínio.`,modelsRegistryLabel:`Registro de modelos`,modelsRegistryHint:`Usa o catálogo models.dev para descoberta de provedores.`,indexOnStartLabel:`Indexar ao iniciar`,indexOnStartHint:`Constrói o índice de símbolos do código ao iniciar a sessão.`,pluginsPerPluginHeading:`🔌 Per-Plugin Controls`,pluginsPerPluginHint:`Enable or disable individual plugins. Changes take effect on next session.`,pluginChimera:`Chimera — post-session code review`,pluginSkills:`Skills — skill library & authoring`,pluginPrompts:`Prompts — prompt library & gen`,pluginCostTracker:`Cost Tracker — token & cost tracking`,pluginTelegram:`Telegram — notification bot`,pluginKnowledgeGraph:`Knowledge Graph — persistent facts`,pluginErrorLens:`Error Lens — failure diagnostics`,pluginTodoTracker:`Todo Tracker — persistent todos`,pluginSecretScanner:`Secret Scanner — credential detection`,pluginLintGate:`Lint Gate — lint before iteration`,pluginDiffSummary:`Diff Summary — compact diffs`,pluginDepGuard:`Dep Guard — dependency rules`,pluginTypeGate:`Type Gate — typecheck before iteration`,pluginInjectionShield:`Injection Shield — prompt injection`,pluginPromptFirewall:`Prompt Firewall — input filtering`,pluginTokenBudget:`Token Budget — token limits`,pluginLoopBreaker:`Loop Breaker — runaway detection`,heading:`Contexto e Depuração`,autoCompactLabel:`Auto-compactar contexto`,autoCompactHint:`Apara automaticamente a janela de contexto perto dos limites.`,compactorStrategyLabel:`Estratégia de compactação`,compactorStrategyHint:`Como o contexto é compactado quando cresce demais.`,compactorStrategyHybrid:`Híbrida — regras rápidas (padrão)`,compactorStrategyIntelligent:`Inteligente — resumo LLM`,compactorStrategySelective:`Seletiva — seleção guiada por LLM`,contextModeLabel:`Modo de contexto`,contextModeHint:`Política de janela de contexto — equilibrado é o padrão.`,contextModeBalanced:`Equilibrado — uso normal do contexto`,contextModeFrugal:`Frugal — uso conservador de tokens`,contextModeDeep:`Profundo — contexto maior para tarefas complexas`,tokenSavingLabel:`Modo de economia de tokens`,tokenSavingHint:`Quão agressivamente reduzir o uso de tokens.`,tokenSavingOff:`Desativado — sem economia`,tokenSavingMinimal:`Mínimo — otimização básica`,tokenSavingLight:`Leve — redução moderada`,tokenSavingMedium:`Médio — economias significativas`,tokenSavingAggressive:`Agressivo — compressão máxima`},v={logLevelLabel:`Nível de log`,logLevelHint:`Severidade mínima para logging do lado servidor.`,logLevelDebug:`Debug — tudo`,logLevelInfo:`Info — fluxo normal`,logLevelWarn:`Warn — apenas problemas`,logLevelError:`Error — apenas falhas`,auditLevelLabel:`Nível de auditoria`,auditLevelHint:`Nível de detalhe para logs de auditoria de sessão.`,auditLevelMinimal:`Mínimo — apenas erros`,auditLevelStandard:`Padrão — chamadas de ferramentas + erros`,auditLevelFull:`Completo — cada evento (logs grandes)`,fsAccessLabel:`Acesso ao sistema de arquivos`,fsAccessHint:`Escopo das ferramentas de arquivo. Aplica-se na próxima sessão.`,fsAccessUnrestricted:`Irrestrito — qualquer caminho`,fsAccessProject:`Projeto — limitado à raiz do projeto`,debugStreamLabel:`Fluxo de depuração`,debugStreamHint:`Dump hex SSE bruto no stderr do servidor para depurar provedores.`,heading:`Logs & Debug`},y={heading:`Security & Monitoring`,brainHeading:`🧠 Brain — Controle de decisões`,brainHint:`Modelos de decisão, conselho, escalonamento e teto de risco — aplicados na hora e salvos na configuração global.`,shadowHeading:`👁 Agente sombra — Monitor da frota`,shadowHint:`O agente sombra monitora todos os agentes da frota, acompanha suas tarefas e detecta anomalias.`,toolsHeading:`🔧 Tool Access Control`,toolsHint:`Ative ou desative ferramentas individuais. Ferramentas que alteram dados aparecem em âmbar.`,breakerHeading:`Process Circuit Breaker`,breakerHint:`Restringe bash/exec após falhas repetidas; o acionamento inicia a contagem regressiva de encerramento/reinício.`},b={switchingTo:`Mudando para {{provider}} / {{model}}…`,switching:`Mudando o modelo…`,switchingToTarget:`Mudando para {{target}}…`,previousModel:`modelo anterior`,modelSwitchedNextRequest:`Modelo alterado: {{from}} → {{to}}. Ativo na próxima solicitação ao LLM.`,modelSwitchedRunActive:`Modelo alterado: {{from}} → {{to}}. Ativo na próxima solicitação ao LLM; a execução atual continua sem reiniciar.`,fallbackExists:`O perfil de fallback "{{name}}" já existe`,selectProviderModelFirst:`Selecione um provedor e um modelo primeiro`,defaultProfileCreated:`Perfil de fallback padrão criado`,profileEmpty:`O perfil de fallback "{{name}}" está vazio`,leaderSetFrom:`Líder definido a partir de {{name}}`,modelSwitchTimeout:`Troca de modelo expirou. Por favor, tente novamente.`},x={workbenchHeading:`Aparência do workbench`,workbenchHint:`Alterna a visibilidade das superfícies do workbench na vista de chat.`,showModelReasoningLabel:`Mostrar raciocínio do modelo`,showModelReasoningHint:`Renderiza blocos de raciocínio/thinking do LLM no histórico do chat (paridade com TUI).`,showAgentSwarmPanelLabel:`Painel agent swarm`,showAgentSwarmPanelHint:`Controla onde o painel agent swarm (fleet + fila de missões) é exibido.`,swarmPanelBottom:`Painel inferior`,swarmPanelSidebar:`Barra lateral direita`,swarmPanelOff:`Desativado`,titleAnimationLabel:`Animação do título`,titleAnimationHint:`Anima o título do terminal/aba com o estado de execução (paridade com TUI).`,statusChipHeading:`Chip de status e barra de status`,statusChipHint:`Estilo visual para a barra de status TUI/CLI e o chip de trabalho.`,thinkingWordLabel:`Palavra de raciocínio`,thinkingWordHint:`Palavra curta única exibida no chip de status TUI enquanto o agente trabalha.`,statuslineModeLabel:`Modo da barra de status`,statuslineModeHint:`Densidade da barra de status TUI.`,statuslineModeMinimum:`Mínimo`,statuslineModeDetailed:`Detalhado`,statuslineModeNoColor:`Sem cor`,animationStyleLabel:`Estilo de animação`,animationStyleHint:`Animação do chip de trabalho TUI.`,animationStyleRainbow:`Arco-íris`,animationStyleWave:`Onda`,animationStylePulse:`Pulso`,animationStyleDots:`Pontos`,animationStyleBreathe:`Respiração`,animationStyleCycle:`Ciclo`,refineHeading:`Contagem regressiva do refine e diffs`,refineHint:`Configura a contagem regressiva pré-refine e o limite mínimo de arquivos para o rodapé de resumo multi-diff.`,preRefineSecondsLabel:`Contagem regressiva pré-refine`,preRefineSecondsHint:`Período de carência antes do refiner iniciar (segundos). 0 = pula a contagem e refina imediatamente.`,preRefineSecondsPresets:`Predefinições: {{presets}} segundos (0 = desativado).`,multiDiffSummaryLabel:`Resumo multi-diff`,multiDiffSummaryHint:`Número mínimo de arquivos antes que o rodapé agregado 'N arquivos · +X -Y' apareça acima dos blocos por arquivo.`,multiDiffSummaryPresets:`Predefinições: {{presets}} (0 = desativado).`,memoryHeading:`Ferramenta read e injeção de memória SAGE`,memoryHint:`Alterna o que a ferramenta read inclui e quando blocos de memória SAGE aparecem nos resultados de ferramentas.`,readSymbolsLabel:`Ler símbolos`,readSymbolsHint:`Quando ativo, a ferramenta read inclui símbolos do índice do código junto com o conteúdo do arquivo.`,showSageMemoryInjectLabel:`Mostrar SAGE Memory Inject`,showSageMemoryInjectHint:`Quando ativo, mostra blocos de injeção de memória SAGE nos resultados de ferramentas.`,sageMemoryInjectThresholdLabel:`Limite de SAGE Memory Inject`,sageMemoryInjectThresholdHint:`Força mínima de relação necessária para uma memória SAGE injetada (0.72–0.95).`,footnote:`Estas configurações refletem o picker /settings do TUI. Alternâncias aplicam-se ao vivo; alguns campos exigem reinício da sessão.`,sageRelaxed:`0,72 (relaxado)`,sageDefault:`0,85 (padrão)`,sageStrict:`0,95 (rigoroso)`},S=`Redefinir`,C=`Cancelar`,w=`Redefinir todas as preferências?`,T=`Isso restaura as configurações padrão e recarrega a página.`,E=`Redefinir`,D=JSON.parse(`{"heading":"Brain","headingHint":"Modelos de decisão, conselho, escalada e teto de risco — aplicados em tempo real, salvos na configuração global.","riskHeading":"Teto de autonomia","escalationHeading":"Escalada","escalationModeLabel":"Modo","escalationModeHint":"Headless: o Brain nunca bloqueia esperando um humano — escaladas sem resposta são resolvidas pela política terminal segura. Aplica-se a sessões CLI/TUI; o Brain WebUI independente é sempre headless.","escalationDecisionTimeoutLabel":"Tempo limite de decisão","escalationDecisionTimeoutHint":"Orçamento de tempo por chamada LLM para uma decisão do Brain.","escalationHumanTimeoutLabel":"Tempo limite de resposta humana","escalationHumanTimeoutHint":"Modo interativo: quanto tempo um aviso de escalada pode esperar antes que a política terminal o resolva.","escalationTerminalPolicyLabel":"Política terminal","escalationTerminalPolicyHint":"Como uma escalada headless é resolvida sem humano disponível. Conservador aceita uma opção recomendada em risco baixo/médio; negar-tudo nunca aceita automaticamente; continuar-com-recomendação aceita uma opção recomendada em QUALQUER risco.","escalationDecisionLogSizeLabel":"Tamanho do registro de decisões","escalationDecisionLogSizeHint":"Registro de decisões em memória rotativo mantido para a visão de status.","rulesHeading":"Regras determinísticas","rulesConfigured":"{{count}} configurada(s)","rulesBody":"Avaliadas antes de qualquer chamada ao provedor — a primeira correspondência vence. Edite-as no arquivo de configuração global; esta visão é somente leitura.","rulesOff":"desativada","rulesDropped":"{{count}} regra(s) descartada(s)","heuristicsHeading":"Heurísticas","heuristicsBody":"Suposições de padrão gratuitas que resolvem uma pergunta antes que um modelo execute. Todas ativas por padrão — desligue aquela cuja suposição esteja errada para sua carga de trabalho.","heuristicsLowRiskLabel":"Resposta automática de baixo risco","heuristicsLowRiskHint":"Responda automaticamente solicitações de baixo risco que já trazem uma opção recomendada.","heuristicsBlockedLabel":"Bloqueado-resolvido","heuristicsBlockedHint":"'blocked …' mais um marcador de resolução explícito no contexto resolve como continuar.","heuristicsDeadlockLabel":"Pular impasse","heuristicsDeadlockHint":"'deadlock' mais unidades de trabalho falhas no contexto resolve como pular e continuar.","heuristicsRetryLabel":"Novas tentativas esgotadas","heuristicsRetryHint":"'failed'/'retry' mais novas tentativas comprovadamente esgotadas marca a unidade como falha e segue.","heuristicsPingLabel":"Ping de continuação","heuristicsPingHint":"Um simples ping de continuar/prosseguir sem alternativa concorrente resolve como continuar.","heuristicsMarkers":"Marcadores: {{markers}}","qualityHeading":"Qualidade LLM","qualityCircuit_one":"circuito {{state}} · {{count}} falha","qualityCircuit_other":"circuito {{state}} · {{count}} falhas","qualityResponseBudgetLabel":"Orçamento de resposta","qualityResponseBudgetHint":"Tokens de saída por chamada de decisão. Uma resposta do Brain é uma decisão mais uma justificativa de uma frase.","qualityRejectLabel":"Rejeitar respostas incertas","qualityRejectHint":"Trata uma resposta recusada ou vazia como 'este nível não pôde decidir' em vez de aceitá-la como resposta.","qualityMinConfidenceLabel":"Confiança mínima","qualityMinConfidenceHint":"Rejeita respostas cuja confiança autodeclarada esteja abaixo disso. Respostas sem confiança declarada sempre passam.","qualityDenyTerminalLabel":"A recusa é terminal","qualityDenyTerminalHint":"Se uma recusa do nível LLM único encerra a decisão. 'when-decided' torna terminal uma recusa genuína enquanto falhas de infraestrutura ainda escalam.","traceHeading":"Trilha de replay","traceRecordLabel":"Registrar trilhas de decisão","traceRecordHint":"JSONL por decisão de cada nível, alvo do pool e voto do conselho, com tempos e uso de tokens. Desativado por padrão — ativar grava o conteúdo das decisões em disco.","traceContentLabel":"Conteúdo da trilha","traceContentHint":"'full' mantém pergunta e contexto (necessário para reproduzir uma decisão); 'redacted' trunca texto livre; 'none' registra apenas metadados.","cacheHeading":"Cache de decisões","cacheStats":"{{hits}} acertos / {{misses}} erros · {{size}} ativos","cacheReplayLabel":"Reproduzir vereditos idênticos","cacheReplayHint":"Reutiliza um veredito anterior do conselho/LLM para uma pergunta idêntica repetida. Níveis determinísticos e perguntar-a-um-humano nunca são armazenados; uma decisão que o registro observa como falha é expulsa.","cacheLifetimeLabel":"Vida das entradas","cacheLifetimeHint":"Por quanto tempo um veredito em cache continua reproduzível.","cacheMaxEntriesLabel":"Entradas máximas","cacheMaxEntriesHint":"Limite de vereditos ativos em cache.","monitorHeading":"Monitor","monitorBody":"Auto-ativação por sinais de sofrimento. O monitor é construído uma vez na inicialização, então estes ajustes valem para a próxima sessão, não em tempo real.","monitorWatchLabel":"Vigiar sinais de sofrimento","monitorWatchHint":"Sequências de falhas de ferramentas, tempestades de erros, travamentos de agentes e churn de arquivos acionam o Brain sozinhos.","monitorPolicyLabel":"Política de sinais","monitorPolicyHint":"Como um sinal detectado é resolvido. 'llm' consulta o Brain; 'steer' sempre intervém e 'observe' nunca — ambos sem chamada ao provedor.","modelsHeading":"Modelos de decisão","modelsSessionBadge":"modelo da sessão","modelsResolvedBadge":"{{resolved}}/{{total}} resolvidos","modelsUseSessionLabel":"Usar modelo da sessão","modelsUseSessionHint":"Decidir com o modelo que a sessão está executando. Desligar adicionando modelos abaixo.","modelsAddModel":"Adicionar modelo","modelsPoolStrategyLabel":"Estratégia do pool","modelsPoolStrategyHint":"Fallback: o primeiro modelo é primário, os demais são tentados em ordem na falha. Round-robin: as decisões rotacionam pelo pool.","councilHeading":"Conselho","councilConvened":"convocado","councilDisabled":"desativado","councilEnableLabel":"Ativar conselho multi-LLM","councilEnableHint":"Perguntas de alto risco são votadas por assentos independentes (executor / cético-com-veto / auditor) em vez de um único modelo. Exige ≥2 votantes resolvíveis (assentos explícitos abaixo, ou um pool de ≥2 modelos).","councilSeatsDerived":"Assentos derivados do pool: {{seats}}","councilCustomLens":"Lente de decisão personalizada — enviada ao assento literalmente.","councilCustomOption":"{{persona}} (personalizado)","councilVeto":"veto","councilAddVoter":"Adicionar votante","councilRiskFloorLabel":"Piso de risco","councilRiskFloorHint":"Risco mínimo da pergunta que convoca o conselho em vez do nível mono-modelo.","councilJudge":"Juiz","councilJudgeDesc":"Modelo de desempate que vê a justificativa de cada voto.","councilResolved":"resolvido: {{model}}","councilAlsoVoter":"⚠ também votante","councilAuto":"auto","councilPick":"Escolher…","councilAutoReset":"Auto","councilQuorumLabel":"Quórum","councilQuorumHint":"Fração de assentos que deve retornar um voto válido.","councilApprovalLabel":"Aprovação","councilApprovalHint":"Fração do peso dos votos emitidos que a opção vencedora deve exceder.","councilPerSeatTimeoutLabel":"Tempo limite por assento","councilPerSeatTimeoutHint":"Orçamento de tempo para o voto de um único assento. Mais lento que o tempo de decisão significa que um assento travado segura o voto.","councilMaxConcurrencyLabel":"Concorrência máxima","councilMaxConcurrencyHint":"Quantos assentos votam em paralelo. Reduza quando o pool compartilha um provedor com limite de taxa.","councilDistinctnessLabel":"Distinção de assentos","councilDistinctnessHint":"Rejeita assentos duplicados: 'model' exige modelos distintos, 'provider' provedores independentes para que uma queda não possa influenciar o voto.","councilVoterBudgetLabel":"Orçamento de resposta do votante","councilVoterBudgetHint":"Tokens de saída por chamada de assento — modelos de raciocínio gastam seus tokens de pensamento deste orçamento.","councilJudgeBudgetLabel":"Orçamento de resposta do juiz","councilJudgeBudgetHint":"Tokens de saída para a chamada do juiz de desempate.","councilSeatTemplate":"Modelo de assento:","ledgerHeading":"Registro de decisões","ledgerRecordLabel":"Registrar decisões + resultados","ledgerRecordHint":"Persiste cada decisão e seu resultado observado; resultados passados semelhantes são realimentados em prompts futuros do Brain.","ledgerAutoDenyLabel":"Auto-recusar após falhas","ledgerAutoDenyHint":"Recusar deterministicamente (sem LLM) quando este número de aprovações consecutivas de um grupo de decisões terminou em falhas observadas.","ledgerMemoryEntriesLabel":"Entradas em memória","ledgerMemoryEntriesHint":"Tamanho do anel em memória e o número de entradas passadas carregadas do disco na inicialização.","ledgerRetryWindowLabel":"Janela de nova tentativa de intervenção","ledgerRetryWindowHint":"Uma intervenção do monitor do mesmo tipo que se reativa nesta janela marca a orientação anterior como falha.","recentHeading":"Decisões recentes ({{count}})","recentEmpty":"Nenhuma decisão registrada nesta sessão.","optInteractive":"Interativo (pergunte-me)","optHeadless":"Headless (nunca perguntar)","optConservative":"Conservador (padrão)","optDenyAll":"Negar tudo","optContinueRecommended":"Continuar com recomendação","optNeverDefault":"Nunca (padrão)","optWhenDecided":"Quando decidido","optAlways":"Sempre","optFullDefault":"Completo (padrão)","optRedacted":"Redigido","optMetadataOnly":"Somente metadados","optConsultBrain":"Consultar o Brain (padrão)","optAlwaysSteer":"Orientar sempre","optObserveOnly":"Apenas observar","optFallback":"Fallback","optRoundRobin":"Round-robin","optMediumPlus":"Médio+","optHighPlus":"Alto+","optCriticalOnly":"Somente crítico","optNoneDefault":"Nenhum (padrão)","optDistinctModels":"Modelos distintos","optDistinctProviders":"Provedores distintos","optDefault3":"Padrão (3)","optOff":"Desativado","pickPoolTitle":"Adicionar modelo ao pool do Brain","pickPoolHint":"Pool de decisão ordenado — o primeiro é primário.","pickVoterTitle":"Adicionar votante ao conselho","pickVoterHint":"A caixa de diálogo permanece aberta — adicione ≥2 votantes e depois feche.","pickJudgeTitle":"Escolher juiz do conselho","pickJudgeHint":"Desempate que vê cada voto.","persistError":"Configurações aplicadas em tempo real, mas não salvas.","riskCopy":{"off":"Um humano decide tudo","low":"Decidir automaticamente apenas baixo risco","medium":"Decidir automaticamente até risco médio","high":"Decidir automaticamente até alto risco","all":"Decidir automaticamente tudo"},"rulesConfigured_one":"{{count}} configurada","rulesConfigured_other":"{{count}} configuradas"}`),O={default15s:`Padrão (15 s)`,waitForever:`Esperar indefinidamente`,defaultHalf:`Padrão (0,5)`,all:`Todos`,n200Default:`200 (padrão)`,offDefault:`Desativado (padrão)`,n20Default:`20 (padrão)`,m5Default:`5 min (padrão)`,default:`Padrão`,oneSerial:`1 (serial)`,default500:`Padrão (500)`,default10m:`Padrão (10 min)`},k={capToolCall:`Chamada de ferramenta`,capReasoning:`Raciocínio`,capTemperature:`Temperatura`,capAttachment:`Anexo`,capStructuredOutput:`Saída estruturada`,capOpenWeights:`Pesos abertos`},A={title:e,subtitle:t,tabs:n,model:r,connection:i,provider:a,providerModels:o,mcp:s,allowlist:c,oauth:l,general:u,agent:d,execution:f,fallbacks:p,fleet:m,integrations:h,features:g,context:_,logs:v,security:y,toast:b,display:x,resetLabel:S,cancel:C,resetConfirmTitle:w,resetConfirmBody:T,resetConfirmAction:E,brain:D,brainOpt:O,modelSchema:k};export{d as agent,c as allowlist,D as brain,O as brainOpt,C as cancel,i as connection,_ as context,A as default,x as display,f as execution,p as fallbacks,g as features,m as fleet,u as general,h as integrations,v as logs,s as mcp,r as model,k as modelSchema,l as oauth,a as provider,o as providerModels,E as resetConfirmAction,T as resetConfirmBody,w as resetConfirmTitle,S as resetLabel,y as security,t as subtitle,n as tabs,e as title,b as toast};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=`Ayarlar`,t=`Configure every aspect of your agent workspace`,n={general:`Genel`,provider:`Sağlayıcı`,connection:`Bağlantılar`,agent:`Vekil`,execution:`Yürütme`,fallbacks:`Yedekler`,routing:`Yönlendirme`,fleet:`Filo`,integrations:`Entegrasyonlar`,chimera:`Chimera`,context:`Bağlam`,logs:`Günlükler`,security:`Güvenlik`,display:`Görünüm`,displayDesc:`Çalışma alanı görünümü, durum çipi, refine zamanlayıcıları ve araç/bellek enjeksiyonu anahtarları — TUI SettingsPicker ile aynı.`,generalDesc:`Görünüm, dil ve görüntü tercihleri — TUI Ayarlar seçicisini yansıtır.`,providerDesc:`API anahtarları, kayıtlı sağlayıcılar ve sağlayıcı kataloğu.`,connectionDesc:`WebSocket sunucu adresi ve bağlantı durumu.`,agentDesc:`Otonomi, istem iyileştirme, akıl yürütme ve model yönlendirme.`,executionDesc:`Yineleme sınırları, çıkış davranışı ve süreç devre kesici.`,fallbacksDesc:`Model yedek zinciri, favoriler ve adlandırılmış yedek profiller.`,routingDesc:`Aşama ve rol başına model yönlendirme matrisi.`,fleetDesc:`Alt vekil eşzamanlılığı, akış ve sonraki adım tahmini.`,integrationsDesc:`HQ istemcisi, MCP sunucuları ve Telegram bildirimleri.`,chimeraDesc:`Oturum sonrası kod inceleme ajanı yapılandırması.`,contextDesc:`Özellik bayrakları, bağlam stratejisi, sıkıştırıcı ve eklenti denetimleri.`,logsDesc:`Günlük düzeyi, denetim ayrıntısı, dosya sistemi erişim kapsamı ve hata ayıklama akışı.`,securityDesc:`Beyin karar kontrolü, gölge ajan ve araç erişimi.`},r={heading:`Model`,loading:`Modeller yükleniyor...`,notFound:`Bu sağlayıcı için model bulunamadı. Katalog boş olabilir veya hâlâ yükleniyor olabilir.`,selectProviderFirst:`Önce bir sağlayıcı seçin`,context:`{{count}}k bağlam`},i={wsUrlLabel:`WebSocket Sunucu URL'si`,wsUrlPlaceholder:`ws://localhost:3456`,wsUrlHint:`Vekil WebSocket sunucusunun URL'si. Sunucu CLI ile birlikte çalışır.`,startingHeading:`WebSocket Sunucusunu Başlatma`,startingBody:`Geliştirme için repo kökünden ./dev.ps1 çalıştırın (isteğe bağlı olarak önce WS_HOST/WS_PORT ayarlayın). Aksi hâlde WebUI'yi CLI ile başlatın: wstack --webui.`,healthHeading:`Bağlantı sağlığı`,healthHint:`Proje servislerinin sahiplik, depolama, kuyruk, izleyici ve gecikme raporu.`,healthRefresh:`Yenile`,healthLoading:`Servisler denetleniyor…`,healthUnknown:`Sağlık bilinmiyor`,healthDisconnected:`WebUI WebSocket bağlantısı kesik.`,healthRestartRequired:`Bağlantı sağlık raporunu etkinleştirmek için backend'i bir kez yeniden başlatın.`,healthOptional:`İsteğe bağlı`,endpointInvalidBadge:`socket yolu çok uzun`,endpointInvalidRemedy:`IPC soket yolu bu platformun uzunluk sınırını aştığı için paylaşılan arka plan hizmeti başlatılamıyor. Sorgular daha yavaş bir işlem-yerel moduna düşüyor. Çözüm: daha kısa bir TMPDIR ayarlayın (ör. export TMPDIR=/tmp) ve WrongStack'i yeniden başlatın.`,healthCounts:`{{healthy}} sağlıklı · {{attention}} dikkat · {{sleeping}} uykuda`,healthOverall:{healthy:`Zorunlu servisler sağlıklı`,degraded:`Zorunlu servis zayıflamış`,error:`Zorunlu servis kullanılamıyor`},healthStatus:{healthy:`Sağlıklı`,degraded:`Zayıflamış`,offline:`Uykuda`,unavailable:`Kullanılamıyor`,error:`Hata`},services:{kanban:{label:`Kanban IPC`},mailbox:{label:`Mailbox IPC`}},serviceActionRestart:`Yeniden başlat {{label}}`,webuiTransport:`WebUI taşıması`},a={subscriptionHeading:`Abonelik girişi`,apiKeysHeading:`API anahtarı sağlayıcıları`,apiKeysBody:`Katalogdan bir sağlayıcı seçip API anahtarı ekleyin veya kayıtlı sağlayıcıları yönetin.`,tabCatalog:`Katalog`,tabSaved:`Kayıtlı ({{count}})`,searchPlaceholder:`{{count}} sağlayıcıda ara (ad / kimlik / aile)…`,loadingCatalog:`Katalog yükleniyor...`,noMatch:`"{{query}}" ile eşleşen sağlayıcı yok.`,configured:`Yapılandırıldı`,reachable:`Erişilebilir`,envVar:`ENV: {{var}}`,modelCount_one:`{{count}} model`,modelCount_other:`{{count}} model`,keyPlaceholder:`{{name}} API anahtarı`,orEnv:`Veya bunun yerine ortamda {{env}} ayarlayın.`,addApiKey:`API anahtarı ekle`,manageKeys:`API anahtarlarınızı ve sağlayıcı yapılandırmalarınızı yönetin`,addProvider:`Sağlayıcı Ekle`,addCustomHeading:`Özel Sağlayıcı Ekle`,localServers:`Yerel sunucular — doldurmak için tıklayın:`,providerIdPlaceholder:`Sağlayıcı kimliği (örn. my-llm-server)`,apiKeyOptionalPlaceholder:`API Anahtarı (isteğe bağlı)`,noSaved:`Henüz kayıtlı sağlayıcı yok`,noSavedHint:`Başlamak için bir sağlayıcı ekleyin`,apiKeysLabel:`API Anahtarları`,savedProviderCount_one:`{{count}} sağlayıcı`,savedProviderCount_other:`{{count}} sağlayıcı`,keyCount_one:`{{count}} anahtar yapılandırıldı`,keyCount_other:`{{count}} anahtar yapılandırıldı`,activeKeyCount_one:`{{count}} etkin anahtar`,activeKeyCount_other:`{{count}} etkin anahtar`,addKey:`Anahtar Ekle`,noKeys:`Yapılandırılmış anahtar yok`,active:`Etkin`,setActive:`Etkin Yap`,keyLabelPlaceholder:`Anahtar etiketi (örn. default, production)`,apiKeyPlaceholder:`API anahtarı`,saveKey:`Anahtarı Kaydet`,savedToast:`{{name}} için anahtar kaydedildi`},o={addCustom:`Özel model ekle`,addCustomTitle:`Özel model ekle`,addFromCatalog:`Katalogdan ekle`,catalogSearchPlaceholder:`models.dev kataloğunda ara…`,catalogSearchTitle:`models.dev kataloğunda ara`,colActions:`İşlemler`,colCaps:`Yetenekler`,colContext:`Bağlam`,colCost:`Maliyet`,colModalities:`Modaliteler`,colModel:`Model`,colOutput:`Çıktı`,colSource:`Kaynak`,editModel:`Modeli düzenle`,emptyState:`Henüz model yok — katalogdan ekleyin veya özel bir model oluşturun.`,fieldContext:`Bağlam penceresi`,fieldCostInput:`Girdi maliyeti`,fieldCostOutput:`Çıktı maliyeti`,fieldDescription:`Açıklama`,fieldFamily:`Aile`,fieldInputLimit:`Girdi limiti`,fieldInputModalities:`Girdi modaliteleri`,fieldLastUpdated:`Son güncelleme`,fieldName:`Ad`,fieldOutput:`Maks. çıktı`,fieldOutputModalities:`Çıktı modaliteleri`,fieldReleaseDate:`Yayın tarihi`,modelAdded:`{{model}} eklendi`,modelRemoved:`{{model}} kaldırıldı`,modelSaved:`{{model}} kaydedildi`,noResults:`Model bulunamadı`,removeModel:`Modeli kaldır`,sectionCapabilities:`Yetenek bayrakları`,sectionDates:`Tarihler`,sectionIdentity:`Kimlik`,sectionLimits:`Sınırlar`,sectionModalities:`Modaliteler`,sectionPricing:`Fiyatlandırma (1M token başına, USD)`,tabForm:`Form`,tabRawJson:`Ham JSON`,typeToSearch:`Aramak için yazın…`,useModel:`{{model}} kullan`,usingModel:`{{model}} kullanılıyor`,filterPlaceholder:`Modelleri filtrele…`},s={status:{connected:`Bağlandı`,connecting:`Bağlanıyor`,sleeping:`Uyuyor`,discovering:`Keşfediliyor`,error:`Hata`,stopped:`Durduruldu`,unknown:`Bilinmiyor`},disabled:`MCP sunucuları devre dışı.`,wakeTitle:`Sunucuyu uyandır`,sleepTitle:`Sunucuyu uyut`,discoverTitle:`Araçları keşfet`,editTitle:`Düzenle`,removeTitle:`Kaldır`,statusLabel:`Durum:`,enabledLabel:`Etkin:`,yes:`Evet`,no:`Hayır`,descriptionLabel:`Açıklama:`,pidLabel:`PID:`,errorLabel:`Hata:`,toolsLabel:`Araçlar ({{count}}):`,noTools:`Henüz araç keşfedilmedi`,serverNameRequired:`Sunucu adı zorunludur`,dialogTitleEdit:`MCP Sunucusunu Düzenle`,dialogTitleAdd:`MCP Sunucusu Ekle`,dialogTitleAddCustom:`Özel MCP Sunucusu Ekle`,fieldName:`Ad`,fieldNamePlaceholder:`örn., github, filesystem`,fieldTransport:`Aktarım`,fieldUrl:`URL`,fieldCommand:`Komut`,fieldCommandPlaceholder:`örn., npx`,fieldArgs:`Argümanlar`,fieldArgsHint:`(boşlukla ayrılmış)`,fieldArgsPlaceholder:`örn., -y @modelcontextprotocol/server-github`,fieldEnv:`Ortam değişkenleri`,fieldEnvHint:`(KEY=değer, satır başına bir tane)`,fieldDescription:`Açıklama`,fieldDescriptionPlaceholder:`Depo erişimi için GitHub MCP sunucusu`,enableServer:`Sunucuyu etkinleştir`,lazyConnect:`Tembel bağlan`,lazyConnectHint:`(ilk araç çağrısına kadar başlatma; boştayken otomatik uyur)`,saveChanges:`Değişiklikleri Kaydet`,addServer:`Sunucu Ekle`,requires:`Gerektirir: {{vars}}`,added:`Eklendi`,heading:`MCP Sunucuları`,summary:`{{connected}} bağlı · {{sleeping}} uyuyor · {{total}} toplam`,addCustom:`Özel Ekle`,tabRecommended:`Önerilen`,tabServers:`Sunucular`,tabAddCustom:`Özel Ekle`,recommendedBody:`Popüler MCP sunucularını tek tıkla ekleyin. Yapılandırmayı öndoldurmak için Ekle'ye tıklayın, sonra onaylayın. Kimlik bilgisi gerektiren sunucuların kullanımdan önce ortam değişkenleri ayarlanmalıdır.`,loadingServers:`Sunucular yükleniyor...`,noServers:`Yapılandırılmış MCP sunucusu yok`,noServersHint:`Popüler sunucular eklemek için Önerilen sekmesine, kendi sunucunuz için Özel Ekle'ye geçin.`,addCustomBody:`stdio, SSE veya HTTP aktarımıyla özel bir MCP sunucusu yapılandırın.`,addCustomBodyHint:`Popüler sunucular için bunun yerine Önerilen sekmesini kullanın — her şey sizin için önceden yapılandırılmıştır.`,removeConfirmTitle:`"{{name}}" sunucusu kaldırılsın mı?`,removeConfirmBody:`Bu, MCP sunucusunu yapılandırmanızdan kaldırır.`,toastAdded:`"{{name}}" sunucusu eklendi`,toastRemoved:`"{{name}}" sunucusu kaldırıldı`,toastDiscovered:`"{{name}}" sunucusundan {{count}} araç keşfedildi`,toastSleeping:`"{{name}}" sunucusu artık uyuyor`,toastConnected:`"{{name}}" sunucusu bağlandı`,toastReconnected:`"{{name}}" sunucusu yeniden bağlandı`,toastDisconnected:`"{{name}}" sunucusu bağlantısı koptu: {{reason}}`,toastError:`"{{name}}" sunucusu hatası: {{error}}`},c={title:`Kayıtlı izin listesi temizlensin mi?`,body_one:`Sabitlenen model {{provider}} için kaldırılacak. Model seçici models.dev kataloğuna geri dönecek.`,body_other:`{{count}} sabitlenen model {{provider}} için kaldırılacak. Model seçici models.dev kataloğuna geri dönecek.`,undoHint:`Onayladıktan sonra 8 saniye boyunca geri alabilirsiniz.`,keepTitle:`İzin listesini tut (Esc)`,clearTitle:`İzin listesini temizle (Enter)`,clear:`İzin listesini temizle`},l={termsWarning:`Bir API anahtarı yerine abonelikle oturum açın. Aboneliği resmi istemcisi dışında kullanmak sağlayıcının Şartlarını ihlal edebilir — hesabınız hız sınırına takılabilir veya yasaklanabilir. API anahtarı programatik kullanım için onaylı yoldur.`,signIn:`Oturum aç`,waitingBrowser:`Oturum açmanız bekleniyor…`,openSignIn:`Oturum açma sayfasını aç`,pasteLoopbackBusy:`Loopback portu meşgul — yönlendirme URL'sini yapıştırın`,pasteCantReach:`Tarayıcı bu sunucuya ulaşamıyor mu? Yönlendirme URL'sini yapıştırın`,submit:`Gönder`,enterCode:`Bu kodu doğrulama sayfasına girin:`,openVerification:`Doğrulama sayfasını aç`,waitingCode:`Yetkilendirme bekleniyor…`,exchanging:`Tokenlar değiştiriliyor…`,fetchingModels:`Modeller getiriliyor…`,signedIn:`Oturum açıldı.`,signedInToast:`Oturum açıldı — {{provider}}`,signInFailed:`Oturum açma başarısız`,accountCount_one:`{{count}} hesap kayıtlı`,accountCount_other:`{{count}} hesap kayıtlı`,active:`Aktif`,inactive:`Pasif`,retry:`Yeniden dene`,retryLogin:`Bu hesabı yeniden doğrula`,newAccount:`Yeni hesap`,aliasPlaceholder:`örn. {{default}}`},u={themeHeading:`Tema`,themeLight:`Açık`,themeDark:`Koyu`,themeSystem:`Sistem`,themeSystemHint:`Sistem, işletim sistemi düzeyindeki açık/koyu tercihinizi izler.`,preferencesHeading:`Tercihler`,compactDensity:`Sıkışık yoğunluk`,compactDensityHint:`Sohbet boyunca daha dar aralıklar.`,soundOnComplete:`Tamamlanınca ses çal`,soundOnCompleteHint:`Bir çalışma bitince hafif bir çan sesi çal.`,titleAnimation:`Başlık animasyonu`,titleAnimationHint:`CLI'da animasyonlu terminal başlığını göster.`,thinkingWordLabel:`Düşünme kelimesi (CLI/TUI)`,thinkingWordHint:`TUI durum çipinde gösterilen kelime. Tek kısa bir kelime.`,statuslineModeLabel:`Durum satırı modu (CLI/TUI)`,statuslineModeHint:`TUI durum satırının yoğunluğu.`,statuslineModeDetailed:`Ayrıntılı`,statuslineModeMinimum:`Asgari`,statuslineModeNoColor:`Renksiz`,animationStyleLabel:`Animasyon stili (CLI/TUI)`,animationStyleHint:`TUI çalışma durumu çipinin animasyonu.`,animationStyleRainbow:`Gökkuşağı`,animationStyleWave:`Dalga`,animationStylePulse:`Nabız`,animationStyleDots:`Noktalar`,animationStyleBreathe:`Nefes`,animationStyleCycle:`Döngü`,showThinkingLabel:`Düşünme kayıtlarını göster`,showThinkingHint:`Tamamlanan akıl yürütme bloklarını sohbet geçmişinde görüntüle.`,groupToolCallsLabel:`Araç çağrılarını grupla`,groupToolCallsHint:`Ardışık araç çağrılarını tek bir çipte topla.`,languageHeading:`Dil`,languageLabel:`Arayüz dili`,languageHint:`Yalnızca arayüz metnini değiştirir. Promptlar, beceriler ve model çıktısı etkilenmez.`,paletteHeading:`Renk paleti`,paletteSwitcherTitle:`Renk paleti`,paletteHint:`Ana rengi (ve türevlerini) seçin. Nötr yüzeyler aynı kalır.`,paletteSignal:`Sinyal`,paletteEmeraldGold:`Zümrüt & Altın`,paletteBlueNavy:`Lacivert`,palettePurplePink:`Mor & Pembe`,paletteCyanTeal:`Camgöbeği & Deniz Mavisi`,paletteRoseCopper:`Gül & Bakır`,paletteIndigoAmber:`Çivit Mavisi & Kehribar`,paletteSageSand:`Adaçayı & Kum`,paletteSlateViolet:`Lacivert & Menekşe`,paletteCoralMint:`Mercan & Nane`,paletteArcticEmber:`Kuzey & Ateş`,paletteMossRust:`Çim & Pas`},d={autonomyHeading:`Otonomi ve Davranış`,autonomyModeLabel:`Otonomi modu`,autonomyModeHint:`Ajanın turlar arasında ne kadar bağımsız ilerlediği.`,autonomyModeOff:`Kapalı — tam manuel kontrol`,autonomyModeSuggest:`Öner — sonraki adımları önerir`,autonomyModeAuto:`Otomatik — kısa onay gecikmesi`,autonomyModeEternal:`Sonsuz — hedef bitene kadar otonom`,autonomyModeEternalParallel:`Sonsuz Paralel — çok-ajanlı filo`,autoProceedDelayLabel:`Otomatik ilerleme gecikmesi`,autoProceedDelayHint:`Otomatik modda ajan otomatik ilerlemeden önceki milisaniye. 0 = anında.`,yoloLabel:`YOLO modu`,yoloHint:`Araç onay istemlerini atla — ajan sormadan çalışır.`,refineHeading:`İstem İyileştirme`,enableRefineLabel:`İyileştirmeyi etkinleştir`,enableRefineHint:`Göndermeden önce istemleri yeniden yazar — daha net talimatlar, daha iyi sonuçlar.`,refineDelayLabel:`İyileştirme gecikmesi`,refineDelayHint:`İyileştirilmiş istem otomatik gönderilmeden önceki geri sayım.`,refineLanguageLabel:`İyileştirme dili`,refineLanguageHint:`Dilinizi koruyun veya model için İngilizceye çevirin.`,refineLanguageOriginal:`Orijinal — dilinizi koruyun`,refineLanguageEnglish:`İngilizce — İngilizceye çevir`,refinerProviderLabel:`İyileştirici sağlayıcı`,refinerProviderHint:`Hedef iyileştirme için sağlayıcı. Yapılandırılmış sağlayıcılarınızdan seçin.`,refinerProviderDefault:`Oturum sağlayıcısı`,refinerModelLabel:`İyileştirici model`,refinerModelHint:`Hedef iyileştirme için model. Önce bir iyileştirici sağlayıcı seçilmelidir.`,refinerModelDefault:`Oturum modeli`,refinerProfileLabel:`İyileştirici yedek profili`,refinerProfileHint:`Hedef iyileştirme için adlandırılmış yedek profili. Sağlayıcı+modeli geçersiz kılar.`,refinerProfileDefault:`Yok — sağlayıcı+model veya oturum varsayılanlarını kullan`,reasoningHeading:`Akıl Yürütme ve Önbellek`,reasoningModeLabel:`Akıl yürütme modu`,reasoningModeHint:`Modelin genişletilmiş düşünmeyi nasıl kullandığını kontrol edin. Otomatik = sağlayıcı varsayılanı.`,reasoningModeAuto:`Otomatik — sağlayıcı varsayılanı`,reasoningModeOn:`Açık — düşünmeyi zorla`,reasoningModeOff:`Kapalı — düşünmeyi kapat`,reasoningEffortLabel:`Akıl yürütme çabası`,reasoningEffortHint:`Modelin düşünmeye harcadığı işlem gücü. Yalnızca model desteklediğinde gönderilir.`,reasoningEffortNone:`Yok`,reasoningEffortMinimal:`Minimal`,reasoningEffortLow:`Düşük`,reasoningEffortMedium:`Orta`,reasoningEffortHigh:`Yüksek`,reasoningEffortXhigh:`Çok Yüksek`,reasoningEffortMax:`Maks`,preserveThinkingLabel:`Düşünmeyi koru`,preserveThinkingHint:`Bağlam sürekliliği için akıl yürütme bloklarını turlar arasında tut.`,cacheTtlLabel:`Önbellek TTL`,cacheTtlHint:`İstem önbelleği yaşam süresi. 1h yazmada pahalıdır ama tekrarlanan okumalarda tasarruf sağlar (Anthropic).`,cacheTtlDefault:`Varsayılan — sağlayıcı varsayılanı`,cacheTtl5m:`5 dakika`,cacheTtl1h:`1 saat`,capsHint:`Mevcut modelin ne desteklediğini kontrol etmek için wstack models caps kullanın. Desteklenmeyen ayarlar istek başına sessizce atlanır.`,routingHeading:`Model Yönlendirme`,routingRouteKey:`Model rotası anahtarı`,routingPhasesGroup:`Aşamalar`,routingRolesGroup:`{{label}} rolleri`,routingCustomGroup:`Özel mevcut rotalar`,routingTargetAria:`Model rota hedefi`,routingTargetEmpty:`— Rotayı temizle —`,routingTargetProfilesGroup:`Yedek Profilleri`,routingTargetModelsGroup:`Modeller (sağlayıcı/model)`,routingSet:`Ayarla`,routingReasoningModeAria:`Yeni rota akıl yürütme modu`,routingReasoningEffortAria:`Yeni rota akıl yürütme çabası`,routingReasoningPreserveAria:`Yeni rota akıl yürütme koruması`,routingReasoningModeFor:`{{key}} için akıl yürütme modu`,routingReasoningEffortFor:`{{key}} için akıl yürütme çabası`,routingReasoningPreserveFor:`{{key}} için akıl yürütme koruması`,noRoutes:`Henüz model rotası yok.`,leaderModel:`lider model`,autonomyDelayMsLabel:`Otomatik devam gecikmesi`,autonomyDelayMsHint:`Auto modunda ajanın otomatik devam etmeden önce bekleme süresi (milisaniye). 0 = anında.`,refineCountdownLabel:`İyileştirme geri sayımı`,refineCountdownHint:`İyileştirilmiş istemin otomatik gönderilmeden önceki bekleme süresi (milisaniye).`},f={heading:`Yürütme`,maxIterationsLabel:`Çalışma başına maks iterasyon`,maxIterationsHint:`agent.run() başına LLM turu için sabit sınır.`,autoProceedMaxIterationsLabel:`Otomatik ilerleme maks iterasyon`,autoProceedMaxIterationsHint:`N iterasyondan sonra otomatik ilerlemeyi durdur. 0 = sınırsız.`,confirmExitLabel:`Çıkıştan önce onayla`,confirmExitHint:`İlk Ctrl+C işi iptal eder, ikincisi çıkışı onaylar.`,chimeLabel:`Tamamlanmada ses`,chimeHint:`Bir ajan çalışması bittiğinde terminal zili.`,breakerLabel:`Süreç devre kesici`,breakerHint:`Tekrarlanan hatalardan sonra bash/exec engellenir; tetiklenince kill/reset geri sayımı başlar.`,breakerTimeoutLabel:`Devre kesici kill/reset süresi`,breakerTimeoutHint:`Tetiklenince otomatik kill/reset öncesi gecikme. 0 = manuel kurtarma.`,availabilityHeading:`Provider/model availability calendar`,availabilityHint:`Prevent autonomous and overnight runs from using selected providers or models during recurring windows.`},p={heading:`Fallback / round-robin modelleri`,body:`Aktif model hız sınırlarsa (429/529), 5xx hatası verirse veya takılırsa — kendi yeniden denemelerinden sonra — ajan bu zincirdeki bir sonraki modele geçer. Ayrıca SDD işçi alt-ajanları için varsayılan olarak kullanılır.`,autoFallbackLabel:`Otomatik yedek`,autoFallbackHint:`Yukarıdaki zincir boşsa, anahtarlı sağlayıcılarınızdan otomatik türet.`,favoritesOnlyLabel:`Sadece favoriler`,favoritesOnlyHint:`Otomatik yedek bir zincir türettiğinde, onu favori modellerinizle sınırlandır.`,profilesHeading:`Fallback / round-robin profilleri`,addProfile:`Ekle`,noProfiles:`Henüz adlandırılmış yedek profili yok.`,createDefault:`Aktif modelden varsayılan oluştur`,useChain:`Zinciri kullan`,setLeader:`Lideri ayarla`,profileEmpty:`Profil boş.`,favoritesHeading:`Favori Modeller`,favoritesEmpty:`Favoriler önce gösterilir ve otomatik yedeği kısıtlayabilir.`,addModelToProfile:`Profile modele ekle…`,addFavoriteModel:`Favori modele ekle…`,inactive:`devre dışı`},m={heading:`Filo ve Akış`,fleetChatVerbosityLabel:`Filo olaylarını akıt`,fleetChatVerbosityHint:`Filo panelinde canlı alt-ajan etkinliğini göster.`,maxConcurrentLabel:`Maks eşzamanlı alt-ajan`,maxConcurrentHint:`Aynı anda çalışabilecek maks alt-ajan sayısı.`,nextPredictionLabel:`Sonraki adım tahmini`,nextPredictionHint:`Bir tur tamamlandıktan sonra olası sonraki adımları tahmin et.`,nextStepsToolLabel:`Nextsteps aracı`,nextStepsToolHint:`Ajan, öneri bloğunu elle yazmak yerine bir araç çağrısıyla kaydedebilsin. Sonraki oturumda geçerli olur.`},h={hqHeading:`HQ İstemcisi`,hqPublishingLabel:`HQ yayınlama`,hqPublishingHint:`Bu WebUI/istemci oturumunu WrongStack HQ'ya yayınlayın. Aynı makine istemcileri yerel HQ kimlik doğrulamasını otomatik keşfedebilir; uzak istemciler aşağıdaki URL/tokenı kullanır.`,hqUrlLabel:`HQ URL`,hqUrlHint:`Aynı makine otomatik keşfi için boş bırakın.`,hqTokenLabel:`HQ istemci tokenı`,hqRawContentLabel:`Ham HQ içeriği`,hqRawContentHint:`HQ'ya sansürlenmiş önizlemeler yerine ham içerik önizlemeleri gönder.`,telegramHeading:`Telegram Bildirimleri`,telegramSessionEndLabel:`Oturum sonu`,telegramSessionEndHint:`Bir oturum bittiğinde özet gönder.`,telegramDelegateLabel:`Temsilci tamamlandı`,telegramDelegateHint:`Bir alt-ajan tamamlandığında insanlaştırılmış not gönder.`,telegramLongToolLabel:`Uzun süren araçlar`,telegramLongToolHint:`Bir araç {{ms}}ms aşarsa bildir. Devre dışı bırakmak için 0 ayarla.`,telegramChangesApply:`Değişiklikler hemen uygulanır.`,telegramNotConfigured:`Telegram yapılandırılmamış. Önce bir bot bağlamak için CLI'da /telegram-setup çalıştırın.`,heading:`Integrations`,disabledHint:`Bu bölümü kullanmak için Bağlam sekmesindeki ilgili özellik bayrağını etkinleştirin.`},g={chimeraDedicatedHeading:`Chimera — Post-session Code Review`,chimeraDedicatedHint:`Automated code quality review that runs after every agent session. Catches regressions, anti-patterns, and potential bugs.`,chimeraSectionEnabled:`Post-session review (Chimera)`,chimeraSectionEnabledHint:`Run a code review agent after every iteration.`,chimeraProviderLabel:`Chimera provider`,chimeraProviderHint:`Provider for the review agent. Select one from your configured providers.`,chimeraProviderSessionDefault:`Session default`,chimeraModelLabel:`Model`,chimeraModelSessionDefault:`Session default`,chimeraModelHint:`Model for the review agent. Requires a provider first.`,chimeraMaxFilesLabel:`Max files per review`,chimeraMaxFilesHint:`Maximum number of changed files included in a single review call.`,chimeraAutoFixLabel:`Auto-fix mode`,chimeraAutoFixHint:`Whether the review agent should automatically apply fixes for issues it finds.`,chimeraAutoFixOff:`Off — review only`,chimeraAutoFixAsk:`Ask — confirm before applying`,chimeraAutoFixAuto:`Auto — apply without confirmation`,chimeraPickModel:`Pick provider/model for Chimera`,chimeraPickModelHint:`Select a provider and model for post-session code review.`,autoReviewSectionEnabled:`Mid-session review (Auto-Review)`,autoReviewSectionEnabledHint:`Run a review agent mid-session on every file change.`,autoReviewFallbackProfileLabel:`Fallback / round-robin profili`,autoReviewFallbackProfileHint:`Otomatik inceleme için model profili; fallback havuzunu ve round-robin veya rastgele seçim modellerini sağlar.`,autoReviewFallbackProfileNone:`None — use provider+model or session defaults`,autoReviewModelSelectionLabel:`Profil seçimi`,autoReviewModelSelectionHint:`Sıradaki profil modelini veya her inceleme için rastgele bir başlangıç modelini seçer.`,autoReviewModelSelectionRoundRobin:`Round-robin — profil sırasıyla`,autoReviewModelSelectionRandom:`Rastgele — profilden seç`,autoReviewFallbackModelsLabel:`Fallback / round-robin modelleri`,autoReviewFallbackModelsEmpty:`Fallback / round-robin modeli yapılandırılmadı`,autoReviewFallbackModelsHint:`Profil veya global zincirdeki modeller; seçim havuzunu ve yeniden deneme zincirini oluşturur.`,autoReviewModelLabel:`Model`,autoReviewModelHint:`Model for the auto-review agent. Requires a provider first.`,autoReviewDebounceLabel:`Debounce interval (ms)`,autoReviewDebounceHint:`Minimum gap between review triggers after a file change.`,autoReviewMaxFilesLabel:`Max files per batch`,autoReviewMaxFilesHint:`Files per auto-review call.`,autoReviewMaxConcurrentLabel:`Max concurrent reviews`,autoReviewMaxConcurrentHint:`Parallel review subagent cap.`,autoReviewCascadeLabel:`Cascade on`,autoReviewCascadeHint:`Follow-up agent threshold — spawns security-scanner and bug-hunter above this severity.`,autoReviewCascadeOff:`Off — no cascade`,autoReviewCascadeCritical:`Critical — only critical findings`,autoReviewCascadeHigh:`High — critical or high findings`,autoReviewPickModel:`Pick provider/model for Auto-Review`,autoReviewPickModelHint:`Select a provider and model, or a named fallback profile, for mid-session auto-review.`,pluginsPerPluginHint:`Enable or disable individual plugins. Changes take effect on next session.`},_={flagsHeading:`Özellik Bayrakları`,mcpLabel:`MCP sunucuları`,mcpHint:`Model Context Protocol entegrasyonlarını etkinleştir.`,pluginsLabel:`Eklentiler`,pluginsHint:`Kullanıcı tarafından yüklenen eklentileri yükle ve çalıştır.`,memoryLabel:`Bellek`,memoryHint:`Oturumlar arasında bilgileri kalıcı kıl ve hatırla.`,skillsLabel:`Beceriler`,skillsHint:`Alan özelinde beceri istemlerini yükle.`,modelsRegistryLabel:`Model kayıt defteri`,modelsRegistryHint:`Salayıcı keşfi için models.dev kataloğunu kullan.`,indexOnStartLabel:`Başlangıçta dizine ekle`,indexOnStartHint:`Oturum başlangıcında kod tabanı sembol dizinini oluştur.`,pluginsPerPluginHeading:`🔌 Per-Plugin Controls`,pluginsPerPluginHint:`Enable or disable individual plugins. Changes take effect on next session.`,pluginChimera:`Chimera — post-session code review`,pluginSkills:`Skills — skill library & authoring`,pluginPrompts:`Prompts — prompt library & gen`,pluginCostTracker:`Cost Tracker — token & cost tracking`,pluginTelegram:`Telegram — notification bot`,pluginKnowledgeGraph:`Knowledge Graph — persistent facts`,pluginErrorLens:`Error Lens — failure diagnostics`,pluginTodoTracker:`Todo Tracker — persistent todos`,pluginSecretScanner:`Secret Scanner — credential detection`,pluginLintGate:`Lint Gate — lint before iteration`,pluginDiffSummary:`Diff Summary — compact diffs`,pluginDepGuard:`Dep Guard — dependency rules`,pluginTypeGate:`Type Gate — typecheck before iteration`,pluginInjectionShield:`Injection Shield — prompt injection`,pluginPromptFirewall:`Prompt Firewall — input filtering`,pluginTokenBudget:`Token Budget — token limits`,pluginLoopBreaker:`Loop Breaker — runaway detection`,heading:`Bağlam ve Hata Ayıklama`,autoCompactLabel:`Bağlamı otomatik sıkıştır`,autoCompactHint:`Sınırlara yakınken bağlam penceresini otomatik kırp.`,compactorStrategyLabel:`Sıkıştırma stratejisi`,compactorStrategyHint:`Bağlam çok büyüdüğünde nasıl sıkıştırılacağı.`,compactorStrategyHybrid:`Karma — hızlı kurallar (varsayılan)`,compactorStrategyIntelligent:`Akıllı — LLM özetleme`,compactorStrategySelective:`Seçici — LLM odaklı seçim`,contextModeLabel:`Bağlam modu`,contextModeHint:`Bağlam penceresi ilkesi — dengeli varsayılandır.`,contextModeBalanced:`Dengeli — normal bağlam kullanımı`,contextModeFrugal:`Tasarruflu — muhafazakar token kullanımı`,contextModeDeep:`Derin — karmaşık görevler için daha büyük bağlam`,tokenSavingLabel:`Token tasarrufu modu`,tokenSavingHint:`Token kullanımını ne kadar agresif azaltacağı.`,tokenSavingOff:`Kapalı — token tasarrufu yok`,tokenSavingMinimal:`Minimal — temel optimizasyon`,tokenSavingLight:`Hafif — orta derecede azaltma`,tokenSavingMedium:`Orta — önemli tasarruflar`,tokenSavingAggressive:`Agresif — maksimum sıkıştırma`},v={logLevelLabel:`Günlük seviyesi`,logLevelHint:`Sunucu tarafı günlükleme için minimum şiddet.`,logLevelDebug:`Hata ayıkla — her şey`,logLevelInfo:`Bilgi — normal akış`,logLevelWarn:`Uyarı — sadece sorunlar`,logLevelError:`Hata — sadece başarısızlıklar`,auditLevelLabel:`Denetim seviyesi`,auditLevelHint:`Oturum denetim günlükleri için ayrıntı seviyesi.`,auditLevelMinimal:`Minimal — sadece hatalar`,auditLevelStandard:`Standart — araç çağrıları + hatalar`,auditLevelFull:`Tam — her olay (büyük günlükler)`,fsAccessLabel:`Dosya sistemi erişimi`,fsAccessHint:`Dosya araçlarının kapsamı. Bir sonraki oturumda geçerli olur.`,fsAccessUnrestricted:`Sınırsız — herhangi bir yol`,fsAccessProject:`Proje — proje köküyle sınırlı`,debugStreamLabel:`Hata ayıklama akışı`,debugStreamHint:`Sağlayıcı hata ayıklaması için sunucu stderr çıkışına ham SSE hex dökümü.`,heading:`Logs & Debug`},y={heading:`Security & Monitoring`,brainHeading:`🧠 Beyin — Karar Denetimi`,brainHint:`Karar modelleri, konsey, yükseltme ve risk tavanı — anında uygulanır, genel yapılandırmaya kaydedilir.`,shadowHeading:`👁 Gölge Ajan — Filo İzleyici`,shadowHint:`Gölge Ajan tüm filo ajanlarını izler, görevlerini takip eder ve anormallikleri saptar.`,toolsHeading:`🔧 Tool Access Control`,toolsHint:`Araçları tek tek etkinleştirin veya devre dışı bırakın. Değişiklik yapan araçlar amber renkle işaretlidir.`,breakerHeading:`Process Circuit Breaker`,breakerHint:`Tekrarlanan hatalardan sonra bash/exec erişimini kısıtla; devreye girmesi sonlandırma/sıfırlama geri sayımını başlatır.`},b={switchingTo:`{{provider}} / {{model}} modeline geçiliyor…`,switching:`Model değiştiriliyor…`,switchingToTarget:`{{target}} modeline geçiliyor…`,previousModel:`önceki model`,modelSwitchedNextRequest:`Model değiştirildi: {{from}} → {{to}}. Sonraki LLM isteğinde aktif olacak.`,modelSwitchedRunActive:`Model değiştirildi: {{from}} → {{to}}. Sonraki LLM isteğinde aktif olacak; mevcut çalışma devam eder ve yeniden başlatılmaz.`,fallbackExists:`"{{name}}" yedek profili zaten var`,selectProviderModelFirst:`Önce bir sağlayıcı ve model seçin`,defaultProfileCreated:`Varsayılan yedek profili oluşturuldu`,profileEmpty:`"{{name}}" yedek profili boş`,leaderSetFrom:`Lider {{name}} adından ayarlandı`,modelSwitchTimeout:`Model geçişi zaman aşamına uğradı. Lütfen tekrar deneyin.`},x={workbenchHeading:`Çalışma alanı görünümü`,workbenchHint:`Sohbet görünümünde çalışma alanı yüzeylerinin görünürlüğünü değiştirir.`,showModelReasoningLabel:`Model muhakemesini göster`,showModelReasoningHint:`Sohbet geçmişinde LLM muhakeme/düşünme bloklarını render eder (TUI uyumluluğu).`,showAgentSwarmPanelLabel:`Agent swarm paneli`,showAgentSwarmPanelHint:`Agent swarm (fleet + görev kuyruğu) panelinin nerede gösterileceğini kontrol eder.`,swarmPanelBottom:`Alt panel`,swarmPanelSidebar:`Sağ kenar çubuğu`,swarmPanelOff:`Kapalı`,titleAnimationLabel:`Başlık animasyonu`,titleAnimationHint:`Terminal/sekme başlığını çalışma durumuyla canlandırır (TUI uyumluluğu).`,statusChipHeading:`Durum çipi ve durum çubuğu`,statusChipHint:`TUI/CLI durum çubuğu ve çalışma çipi için görsel stil.`,thinkingWordLabel:`Düşünme kelimesi`,thinkingWordHint:`Ajan çalışırken TUI durum çipinde gösterilen tek kısa kelime.`,statuslineModeLabel:`Durum çubuğu modu`,statuslineModeHint:`TUI durum çubuğu yoğunluğu.`,statuslineModeMinimum:`Minimum`,statuslineModeDetailed:`Ayrıntılı`,statuslineModeNoColor:`Rensiz`,animationStyleLabel:`Animasyon stili`,animationStyleHint:`TUI çalışma çipinin animasyonu.`,animationStyleRainbow:`Gökkuşağı`,animationStyleWave:`Dalga`,animationStylePulse:`Nabız`,animationStyleDots:`Noktalar`,animationStyleBreathe:`Nefes`,animationStyleCycle:`Döngü`,refineHeading:`Refine geri sayımı ve diffler`,refineHint:`Refine öncesi bekleme süresini ve çoklu diff özet altbilgisi eşiğini yapılandırır.`,preRefineSecondsLabel:`Refine öncesi geri sayım`,preRefineSecondsHint:`Refiner başlamadan önceki bekleme süresi (saniye). 0 = geri sayımı atla ve hemen refine et.`,preRefineSecondsPresets:`Ön ayarlar: {{presets}} saniye (0 = kapalı).`,multiDiffSummaryLabel:`Çoklu diff özeti`,multiDiffSummaryHint:`Dosya başına blokların üzerinde toplu 'N dosya · +X -Y' altbilgisinin gösterilmesi için gereken minimum dosya sayısı.`,multiDiffSummaryPresets:`Ön ayarlar: {{presets}} (0 = kapalı).`,memoryHeading:`Read aracı ve SAGE bellek enjeksiyonu`,memoryHint:`Read aracının neleri içerdiğini ve SAGE bellek bloklarının araç sonuçlarında ne zaman görüneceğini değiştirir.`,readSymbolsLabel:`Sembolleri oku`,readSymbolsHint:`Açıkken, read aracı dosya içeriğinin yanı sıra kod tabanı dizin sembollerini de içerir.`,showSageMemoryInjectLabel:`SAGE Memory Inject göster`,showSageMemoryInjectHint:`Açıkken, SAGE bellek enjeksiyonu bloklarını araç sonuçlarında gösterir.`,sageMemoryInjectThresholdLabel:`SAGE Memory Inject eşiği`,sageMemoryInjectThresholdHint:`Enjekte edilen bir SAGE belleği için gereken minimum ilişki gücü (0.72–0.95).`,footnote:`Bu ayarlar TUI /settings seçiciyle aynıdır. Anahtarlar anında uygulanır; bazı alanlar oturum yeniden başlatması gerektirir.`,sageRelaxed:`0,72 (gevşek)`,sageDefault:`0,85 (varsayılan)`,sageStrict:`0,95 (katı)`},S=`Sıfırla`,C=`İptal`,w=`Tüm tercihler sıfırlansın mı?`,T=`Bu, varsayılan ayarları geri yükler ve sayfayı yeniler.`,E=`Sıfırla`,D=JSON.parse(`{"heading":"Beyin","headingHint":"Karar modelleri, konsey, yükseltme ve risk tavanı — canlı uygulanır, genel yapılandırmaya kaydedilir.","riskHeading":"Otonomi tavanı","escalationHeading":"Yükseltme","escalationModeLabel":"Mod","escalationModeHint":"Başsız: Beyin asla bir insanı beklemez — yanıtlanmayan yükseltmeler güvenli uç politika ile çözülür. CLI/TUI oturumları için geçerlidir; bağımsız WebUI Beyni her zaman başsızdır.","escalationDecisionTimeoutLabel":"Karar zaman aşımı","escalationDecisionTimeoutHint":"Tek bir Beyin kararı için LLM çağrısı başına süre bütçesi.","escalationHumanTimeoutLabel":"İnsan yanıt zaman aşımı","escalationHumanTimeoutHint":"Etkileşimli mod: bir yükseltme isteminin, uç politika çözmeden önce bekleyebileceği süre.","escalationTerminalPolicyLabel":"Uç politika","escalationTerminalPolicyHint":"Başsız bir yükseltmenin, uygun insan yokken nasıl çözüldüğü. Muhafazakâr, düşük/orta riskte önerilen bir seçeneği kabul eder; tümünü-reddet asla otomatik kabul etmez; önerilenle-devam HER riskte önerilen bir seçeneği kabul eder.","escalationDecisionLogSizeLabel":"Karar günlüğü boyutu","escalationDecisionLogSizeHint":"Durum görünümü için tutulan döngüsel bellek içi karar günlüğü.","rulesHeading":"Deterministik kurallar","rulesConfigured":"{{count}} yapılandırıldı","rulesBody":"Her sağlayıcı çağrısından önce değerlendirilir — ilk eşleşme kazanır. Bunları genel yapılandırma dosyasında düzenleyin; bu görünüm salt okunurdur.","rulesOff":"kapalı","rulesDropped":"{{count}} kural atlandı","heuristicsHeading":"Sezgisel kurallar","heuristicsBody":"Herhangi bir model çalışmadan önce bir soruyu çözen ücretsiz desen tahminleri. Varsayılan olarak hepsi açık — tahmini iş yükünüz için yanlış olanı kapatın.","heuristicsLowRiskLabel":"Düşük riskli otomatik yanıt","heuristicsLowRiskHint":"Zaten önerilen bir seçenek taşıyan düşük riskli istekleri otomatik yanıtla.","heuristicsBlockedLabel":"Engellendi-çözüldü","heuristicsBlockedHint":"'blocked …' artı bağlamdaki açık bir çözüm işareti devam olarak çözülür.","heuristicsDeadlockLabel":"Kilitlenmeyi atla","heuristicsDeadlockHint":"'deadlock' artı bağlamdaki başarısız iş birimleri atlayıp devam olarak çözülür.","heuristicsRetryLabel":"Yeniden deneme tükendi","heuristicsRetryHint":"'failed'/'retry' artı kanıtlanmış şekilde tükenmiş yeniden denemeler birimi başarısız işaretler ve devam eder.","heuristicsPingLabel":"Devam pingi","heuristicsPingHint":"Rakip alternatifi olmayan çıplak bir devam/ilerle pingi devam olarak çözülür.","heuristicsMarkers":"İşaretçiler: {{markers}}","qualityHeading":"LLM kalitesi","qualityCircuit_one":"devre {{state}} · {{count}} hata","qualityCircuit_other":"devre {{state}} · {{count}} hata","qualityResponseBudgetLabel":"Yanıt bütçesi","qualityResponseBudgetHint":"Karar çağrısı başına çıktı belirteci. Bir Beyin yanıtı, bir karar artı tek cümlelik bir gerekçedir.","qualityRejectLabel":"Belirsiz yanıtları reddet","qualityRejectHint":"Reddedilen veya boş bir yanıtı, yanıt olarak kabul etmek yerine 'bu katman karar veremedi' olarak değerlendir.","qualityMinConfidenceLabel":"Minimum güven","qualityMinConfidenceHint":"Kendi bildirdiği güveni bunun altında olan yanıtları reddet. Güven bildirmeyen yanıtlar her zaman geçer.","qualityDenyTerminalLabel":"Reddetme terminaldir","qualityDenyTerminalHint":"Tek-LLM katmanından gelen bir reddin kararı bitirip bitirmediği. 'when-decided' gerçek bir reddi terminal yapar; altyapı hataları yine de yükseltilir.","traceHeading":"Yeniden oynatma izi","traceRecordLabel":"Karar izlerini kaydet","traceRecordHint":"Her katman, havuz hedefi ve konsey oyu için zamanlama ve belirteç kullanımıyla birlikte karar başına JSONL. Varsayılan olarak kapalı — etkinleştirmek karar içeriğini diske yazar.","traceContentLabel":"İz içeriği","traceContentHint":"'full' soruyu ve bağlamı korur (kararı yeniden oynatmak için gerekir); 'redacted' serbest metni kısaltır; 'none' yalnızca meta veriyi kaydeder.","cacheHeading":"Karar önbelleği","cacheStats":"{{hits}} isabet / {{misses}} ıska · {{size}} canlı","cacheReplayLabel":"Aynı kararları yeniden oynat","cacheReplayHint":"Aynı tekrarlanan soru için önceki bir konsey/LLM kararını yeniden kullan. Deterministik katmanlar ve insana-sor asla önbelleğe alınmaz; günlüğün başarısız olduğunu gözlemlediği bir karar çıkarılır.","cacheLifetimeLabel":"Girdi ömrü","cacheLifetimeHint":"Önbelleğe alınmış bir kararın ne kadar süre yeniden oynatılabilir kaldığı.","cacheMaxEntriesLabel":"Maksimum girdi","cacheMaxEntriesHint":"Canlı önbelleğe alınmış karar sınırı.","monitorHeading":"İzleyici","monitorBody":"Sıkıntı sinyali kendi kendine etkinleştirme. İzleyici başlangıçta bir kez kurulur, bu yüzden bunlar canlı yerine sonraki oturuma uygulanır.","monitorWatchLabel":"Sıkıntı sinyallerini izle","monitorWatchHint":"Araç hata serileri, hata fırtınaları, ajan duraklamaları ve dosya hareketliliği Beyni kendi başına devreye sokar.","monitorPolicyLabel":"Sinyal politikası","monitorPolicyHint":"Algılanan bir sinyalin nasıl çözüldüğü. 'llm' Beyne danışır; 'steer' her zaman müdahale eder ve 'observe' asla etmez — ikisi de sağlayıcı çağrısı olmadan.","modelsHeading":"Karar modelleri","modelsSessionBadge":"oturum modeli","modelsResolvedBadge":"{{resolved}}/{{total}} çözüldü","modelsUseSessionLabel":"Oturum modelini kullan","modelsUseSessionHint":"Oturumun çalıştırdığı modelle karar ver. Aşağıya model ekleyerek kapat.","modelsAddModel":"Model ekle","modelsPoolStrategyLabel":"Havuz stratejisi","modelsPoolStrategyHint":"Yedek: ilk model birincildir, geri kalanı hata durumunda sırayla denenir. Dönüşümlü: kararlar havuzda döner.","councilHeading":"Konsey","councilConvened":"toplandı","councilDisabled":"devre dışı","councilEnableLabel":"Çok-LLM konseyini etkinleştir","councilEnableHint":"Yüksek riskli sorular, tek model yerine bağımsız koltuklar (yürütücü / veto hakkı olan şüpheci / denetçi) tarafından oylanır. ≥2 çözülebilir seçmen gerekir (aşağıda açık koltuklar veya ≥2 modelli havuz).","councilSeatsDerived":"Havuzdan türetilen koltuklar: {{seats}}","councilCustomLens":"Özel karar merceği — koltuğa aynen gönderilir.","councilCustomOption":"{{persona}} (özel)","councilVeto":"veto","councilAddVoter":"Seçmen ekle","councilRiskFloorLabel":"Risk tabanı","councilRiskFloorHint":"Tek model katmanı yerine konseyi toplayan minimum soru riski.","councilJudge":"Hakem","councilJudgeDesc":"Her oyun gerekçesini gören eşitlik bozan model.","councilResolved":"çözüldü: {{model}}","councilAlsoVoter":"⚠ ayrıca bir seçmen","councilAuto":"otomatik","councilPick":"Seç…","councilAutoReset":"Otomatik","councilQuorumLabel":"Yeter sayı","councilQuorumHint":"Geçerli bir oy döndürmesi gereken koltuk oranı.","councilApprovalLabel":"Onay","councilApprovalHint":"Kazanan seçeneğin aşması gereken kullanılmış oy ağırlığı oranı.","councilPerSeatTimeoutLabel":"Koltuk başına zaman aşımı","councilPerSeatTimeoutHint":"Tek bir koltuğun oyu için süre bütçesi. Karar zaman aşımından yavaş olması, tek bir takılmış koltuğun oyu geciktirdiği anlamına gelir.","councilMaxConcurrencyLabel":"Maksimum eşzamanlılık","councilMaxConcurrencyHint":"Kaç koltuğun paralel oy verdiği. Havuz tek hız sınırlı sağlayıcıyı paylaştığında bunu düşürün.","councilDistinctnessLabel":"Koltuk farklılığı","councilDistinctnessHint":"Yinelenen koltukları reddet: 'model' farklı modeller gerektirir, 'provider' tek bir kesintinin oyu etkileyememesi için bağımsız sağlayıcılar gerektirir.","councilVoterBudgetLabel":"Oy veren yanıt bütçesi","councilVoterBudgetHint":"Koltuk başına çıktı belirteci — akıl yürüten modeller düşünme belirteçlerini bu bütçeden harcar.","councilJudgeBudgetLabel":"Hakem yanıt bütçesi","councilJudgeBudgetHint":"Eşitlik bozan hakem çağrısı için çıktı belirteci.","councilSeatTemplate":"Koltuk şablonu:","ledgerHeading":"Karar günlüğü","ledgerRecordLabel":"Kararları + sonuçları kaydet","ledgerRecordHint":"Her kararı ve gözlemlenen sonucunu kalıcılaştırır; benzer geçmiş sonuçlar gelecekteki Beyin istemlerine geri beslenir.","ledgerAutoDenyLabel":"Başarısızlıklardan sonra otomatik reddet","ledgerAutoDenyHint":"Bir karar grubunun ardışık onayları, gözlemlenen başarısızlıklarla bu kadar kez sonlandıktan sonra deterministik olarak (LLM olmadan) reddet.","ledgerMemoryEntriesLabel":"Bellek içi girdiler","ledgerMemoryEntriesHint":"Bellekte tutulan halka boyutu ve başlangıçta diskten yüklenen geçmiş girdi sayısı.","ledgerRetryWindowLabel":"Müdahale yeniden deneme penceresi","ledgerRetryWindowHint":"Aynı tür bir izleyici müdahalesinin bu pencerede yeniden tetiklenmesi önceki yönlendirmeyi başarısız işaretler.","recentHeading":"Son kararlar ({{count}})","recentEmpty":"Bu oturumda henüz karar kaydedilmedi.","optInteractive":"Etkileşimli (bana sor)","optHeadless":"Başsız (asla sorma)","optConservative":"Muhafazakâr (varsayılan)","optDenyAll":"Tümünü reddet","optContinueRecommended":"Önerilenle devam et","optNeverDefault":"Asla (varsayılan)","optWhenDecided":"Karar verildiğinde","optAlways":"Her zaman","optFullDefault":"Tam (varsayılan)","optRedacted":"Kısaltılmış","optMetadataOnly":"Yalnızca meta veri","optConsultBrain":"Beyne danış (varsayılan)","optAlwaysSteer":"Her zaman yönlendir","optObserveOnly":"Yalnızca gözlemle","optFallback":"Yedek","optRoundRobin":"Dönüşümlü","optMediumPlus":"Orta+","optHighPlus":"Yüksek+","optCriticalOnly":"Yalnızca kritik","optNoneDefault":"Hiçbiri (varsayılan)","optDistinctModels":"Farklı modeller","optDistinctProviders":"Farklı sağlayıcılar","optDefault3":"Varsayılan (3)","optOff":"Kapalı","pickPoolTitle":"Beyin havuz modeli ekle","pickPoolHint":"Sıralı karar havuzu — ilki birincildir.","pickVoterTitle":"Konsey seçmeni ekle","pickVoterHint":"İletişim kutusu açık kalır — ≥2 seçmen ekleyin, sonra kapatın.","pickJudgeTitle":"Konsey hakemi seç","pickJudgeHint":"Her oyu gören eşitlik bozan.","persistError":"Ayarlar canlı uygulandı ancak kaydedilmedi.","riskCopy":{"off":"Her şeye insan karar verir","low":"Yalnızca düşük riski otomatik kararlaştır","medium":"Orta riske kadar otomatik kararlaştır","high":"Yüksek riske kadar otomatik kararlaştır","all":"Her şeyi otomatik kararlaştır"},"rulesConfigured_one":"{{count}} yapılandırıldı","rulesConfigured_other":"{{count}} yapılandırıldı"}`),O={default15s:`Varsayılan (15sn)`,waitForever:`Süresiz bekle`,defaultHalf:`Varsayılan (0,5)`,all:`Tümü`,n200Default:`200 (varsayılan)`,offDefault:`Kapalı (varsayılan)`,n20Default:`20 (varsayılan)`,m5Default:`5dk (varsayılan)`,default:`Varsayılan`,oneSerial:`1 (sıralı)`,default500:`Varsayılan (500)`,default10m:`Varsayılan (10dk)`},k={capToolCall:`Araç çağrısı`,capReasoning:`Akıl yürütme`,capTemperature:`Sıcaklık`,capAttachment:`Ek`,capStructuredOutput:`Yapılandırılmış çıktı`,capOpenWeights:`Açık ağırlıklar`},A={title:e,subtitle:t,tabs:n,model:r,connection:i,provider:a,providerModels:o,mcp:s,allowlist:c,oauth:l,general:u,agent:d,execution:f,fallbacks:p,fleet:m,integrations:h,features:g,context:_,logs:v,security:y,toast:b,display:x,resetLabel:S,cancel:C,resetConfirmTitle:w,resetConfirmBody:T,resetConfirmAction:E,brain:D,brainOpt:O,modelSchema:k};export{d as agent,c as allowlist,D as brain,O as brainOpt,C as cancel,i as connection,_ as context,A as default,x as display,f as execution,p as fallbacks,g as features,m as fleet,u as general,h as integrations,v as logs,s as mcp,r as model,k as modelSchema,l as oauth,a as provider,o as providerModels,E as resetConfirmAction,T as resetConfirmBody,w as resetConfirmTitle,S as resetLabel,y as security,t as subtitle,n as tabs,e as title,b as toast};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{lt as e}from"./vendor-
|
|
1
|
+
import{lt as e}from"./vendor-GiKfK4Iw.js";import{t}from"./utils-CUCQrODG.js";var n=e(),r=[`fact`,`decision`,`convention`,`preference`,`warning`,`anti_pattern`,`workflow`,`bug_root_cause`,`file_note`,`symbol_note`,`command_note`,`summary`],i=[`active`,`stale`,`superseded`,`contradicted`,`archived`,`deleted`],a=[`active`,`stale`,`superseded`,`contradicted`,`archived`],o=[`project`,`user`,`session`,`file`,`symbol`],s=[`file`,`directory`,`symbol`,`package`,`command`,`test`,`git`,`agent`],c={fact:`Fact`,decision:`Decision`,convention:`Convention`,preference:`Preference`,warning:`Warning`,anti_pattern:`Anti-pattern`,workflow:`Workflow`,bug_root_cause:`Root cause`,file_note:`File note`,symbol_note:`Symbol note`,command_note:`Command note`,summary:`Summary`};function l(e){let t=[];return e.roles?.length&&t.push(`roles: ${e.roles.join(`, `)}`),e.taskTypes?.length&&t.push(`tasks: ${e.taskTypes.join(`, `)}`),e.modes?.length&&t.push(`modes: ${e.modes.join(`, `)}`),t.join(` · `)}function u(){return{text:``,kind:`fact`,status:`active`,scope:`project`,tags:``,importance:.5,confidence:.8,freshness:1,anchors:[],audienceRoles:``,audienceTaskTypes:``,audienceModes:``,supersedes:``,contradicts:``}}function d(e){return{text:e.text,kind:e.kind,status:e.status,scope:e.scope,tags:e.tags.join(`, `),importance:e.importance,confidence:e.confidence,freshness:e.freshness,anchors:e.anchors.map(e=>({...e})),audienceRoles:(e.audience?.roles??[]).join(`, `),audienceTaskTypes:(e.audience?.taskTypes??[]).join(`, `),audienceModes:(e.audience?.modes??[]).join(`, `),supersedes:(e.supersedes??[]).join(`, `),contradicts:(e.contradicts??[]).join(`, `)}}function f(e){return[...new Set(e.split(`,`).map(e=>e.trim()).filter(Boolean))]}function p(e,t=170){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t-1)}…`:n}function m(e){if(!e)return`Never`;let t=Date.parse(e);return Number.isFinite(t)?new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`,year:`numeric`,hour:`2-digit`,minute:`2-digit`}).format(t):`Unknown`}function h(e){if(!e)return`never`;let t=Date.parse(e);if(!Number.isFinite(t))return`unknown`;let n=Math.max(0,Math.round((Date.now()-t)/1e3));return n<60?`just now`:n<3600?`${Math.round(n/60)}m ago`:n<86400?`${Math.round(n/3600)}h ago`:n<604800?`${Math.round(n/86400)}d ago`:m(e)}function g(e){return e>=.85?`high`:e>=.55?`medium`:`low`}function _(e){switch(e){case`active`:return`border-success/35 bg-success/10 text-success`;case`stale`:return`border-warning/40 bg-warning/10 text-warning`;case`contradicted`:return`border-destructive/40 bg-destructive/10 text-destructive`;case`superseded`:return`border-warning/30 bg-warning/5 text-warning`;case`archived`:return`border-info/35 bg-info/10 text-info`;case`deleted`:return`border-border bg-muted text-muted-foreground`}}function v(e){return e===`warning`||e===`anti_pattern`||e===`bug_root_cause`?`text-destructive`:e===`decision`||e===`workflow`?`text-warning`:e===`convention`||e===`preference`?`text-success`:e===`file_note`||e===`symbol_note`||e===`command_note`?`text-info`:`text-foreground`}function y(e){return e.path??e.command??e.role??``}function b(e,t){return e.type===`command`?{type:e.type,command:t}:e.type===`agent`?{type:e.type,role:t}:{type:e.type,path:t,...e.type===`symbol`&&e.symbol?{symbol:e.symbol}:{}}}function x(e){let t=[];for(let n of e){let e=y(n).trim(),r=n.symbol?.trim();if(!(!e&&!r)){if(n.type===`command`){t.push({type:`command`,command:e});continue}if(n.type===`agent`){t.push({type:`agent`,role:e.toLowerCase()});continue}t.push({type:n.type,...e?{path:e}:{},...r?{symbol:r}:{}})}}return t}function S({status:e}){return(0,n.jsxs)(`span`,{className:t(`inline-flex items-center gap-1 border px-2 py-0.5 text-[10px] font-bold uppercase`,_(e)),children:[(0,n.jsx)(`span`,{className:`size-1.5 bg-current`,"aria-hidden":`true`}),e]})}function C({label:e,value:r,hint:i,tone:a=`default`}){return(0,n.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,n.jsx)(`p`,{className:`text-[9px] font-bold uppercase tracking-[0.16em] text-muted-foreground`,children:e}),(0,n.jsxs)(`div`,{className:`mt-1 flex items-end justify-between gap-2`,children:[(0,n.jsx)(`p`,{className:t(`font-mono text-xl font-bold tabular-nums`,a===`success`?`text-success`:a===`warning`?`text-warning`:a===`info`?`text-info`:`text-foreground`),children:r}),(0,n.jsx)(`p`,{className:`truncate text-[9px] text-muted-foreground`,children:i})]})]})}function w({id:e,label:t,value:r,onChange:i}){return(0,n.jsxs)(`div`,{className:`border border-border/65 bg-background/35 p-3`,children:[(0,n.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,n.jsx)(`label`,{htmlFor:e,className:`text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground`,children:t}),(0,n.jsxs)(`span`,{className:`font-mono text-xs font-bold tabular-nums text-info`,children:[Math.round(r*100),`% · `,g(r)]})]}),(0,n.jsx)(`input`,{id:e,type:`range`,min:`0`,max:`1`,step:`0.05`,value:r,onChange:e=>i(Number.parseFloat(e.target.value)),className:`mt-3 h-1.5 w-full cursor-pointer accent-[hsl(var(--info))]`})]})}export{x as _,o as a,b,w as c,d,u as f,p as g,v as h,r as i,S as l,m,a as n,i as o,l as p,c as r,C as s,s as t,y as u,h as v,f as y};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{i as e}from"./chat-store-CBJ1gc8n.js";import{Na as t,Pa as n}from"./vendor-GiKfK4Iw.js";import"./i18n-BvFgJYE2.js";import{r,t as i}from"./ws-client-CGEB75Dy.js";import"./session-store-Ce4Dck2K.js";import"./codemap-activity-store-D67-genN.js";import"./mailbox-store-CKpkM0H1.js";import"./ui-store-BGNdg1e4.js";var a=`signal`,o=`wrongstack-palette`,s=[{id:`signal`,labelKey:`settings:general.paletteSignal`,swatch:`hsl(345.9 99% 58.8%)`,swatchSecondary:`hsl(37.5 98.4% 50%)`},{id:`emerald-gold`,labelKey:`settings:general.paletteEmeraldGold`,swatch:`hsl(152 66% 48%)`,swatchSecondary:`hsl(42 96% 54%)`},{id:`blue-navy`,labelKey:`settings:general.paletteBlueNavy`,swatch:`hsl(213 90% 60%)`,swatchSecondary:`hsl(36 96% 54%)`},{id:`purple-pink`,labelKey:`settings:general.palettePurplePink`,swatch:`hsl(263 82% 66%)`,swatchSecondary:`hsl(332 94% 62%)`},{id:`cyan-teal`,labelKey:`settings:general.paletteCyanTeal`,swatch:`hsl(180 76% 46%)`,swatchSecondary:`hsl(36 96% 54%)`},{id:`rose-copper`,labelKey:`settings:general.paletteRoseCopper`,swatch:`hsl(14 82% 56%)`,swatchSecondary:`hsl(34 96% 54%)`},{id:`indigo-amber`,labelKey:`settings:general.paletteIndigoAmber`,swatch:`hsl(233 74% 58%)`,swatchSecondary:`hsl(38 96% 54%)`},{id:`sage-sand`,labelKey:`settings:general.paletteSageSand`,swatch:`hsl(130 28% 55%)`,swatchSecondary:`hsl(36 55% 72%)`},{id:`slate-violet`,labelKey:`settings:general.paletteSlateViolet`,swatch:`hsl(248 50% 55%)`,swatchSecondary:`hsl(285 52% 62%)`},{id:`coral-mint`,labelKey:`settings:general.paletteCoralMint`,swatch:`hsl(12 85% 62%)`,swatchSecondary:`hsl(162 55% 55%)`},{id:`arctic-ember`,labelKey:`settings:general.paletteArcticEmber`,swatch:`hsl(195 85% 58%)`,swatchSecondary:`hsl(14 85% 55%)`},{id:`moss-rust`,labelKey:`settings:general.paletteMossRust`,swatch:`hsl(100 45% 38%)`,swatchSecondary:`hsl(18 70% 48%)`}];function c(e){return typeof e==`string`&&s.some(t=>t.id===e)}function l(e){return s.find(t=>t.id===e)??s[0]}function u(e,t){if(typeof window>`u`)return t;try{let n=window.localStorage.getItem(e);return c(n)?n:t}catch{return t}}function d(e,t){t===`signal`?e.removeAttribute(`data-palette`):e.setAttribute(`data-palette`,t)}var f=n()(t(e=>({provider:``,model:``,wsUrl:r(),wsConnected:!1,wsStatus:{state:`connecting`},theme:`system`,palette:`signal`,autoConnect:!0,soundOnComplete:!1,setProvider:t=>e({provider:t}),setModel:t=>e({model:t}),setConfig:t=>e(t),setTheme:t=>e({theme:t}),setPalette:t=>e({palette:t}),setWsConnected:t=>e({wsConnected:t}),setWsStatus:t=>e({wsStatus:t,wsConnected:t.state===`open`}),setSoundOnComplete:t=>e({soundOnComplete:t})}),{name:`wrongstack-config`,partialize:e=>({provider:e.provider,model:e.model,baseUrl:e.baseUrl,theme:e.theme,palette:e.palette,autoConnect:e.autoConnect,soundOnComplete:e.soundOnComplete}),merge:(e,t)=>{let{apiKey:n,...i}=e??{};return{...t,...i,wsUrl:r(),wsConnected:!1,wsStatus:{state:`connecting`},palette:c(i.palette)?i.palette:u(o,t.palette)}}}));function ee(e,t){return t>=100?`danger`:`warning`}function te(e,t){switch(e){case`budget.threshold_reached`:{let e=t,n=e.limit>0?Math.round(e.used/e.limit*100):0;return`${e.subagentId} [${e.kind}] ${n}% (${e.used}/${e.limit})`}case`budget.decision`:{let e=t;return`${e.subagentId} [${e.kind}] → ${e.decision}`}case`consensus.vote_initiated`:{let e=t;return`Vote: "${e.title}" — ${e.eligible.length} voters`}case`consensus.vote_cast`:{let e=t;return`${e.voterId} voted ${e.value}`}case`consensus.vote_resolved`:{let e=t;return`${e.result} — ✅${e.approveCount} ❌${e.rejectCount}`}case`task.pending`:return`Task queued: "${t.description.slice(0,60)}"`;case`task.started`:{let e=t;return`${e.subagentId} started ${e.taskId}`}case`task.completed`:{let e=t;return`Task ${e.taskId} ${e.status} (${e.durationMs}ms)`}case`task.failed`:{let e=t;return`Task ${e.taskId} failed: ${e.error.slice(0,60)}`}case`subagent.budget_extended`:{let e=t;return`${e.subagentId} [${e.kind}] extended → ${e.extendedTo}ms`}default:return e}}var ne=200,re=50,p=300,m=200,ie=100;function h(e,t,n){if(!(e.size<=t)){if(n)for(let[r,i]of e){if(e.size<=t)break;n(i)&&e.delete(r)}for(let n of e.keys()){if(e.size<=t)break;e.delete(n)}}}var ae=n()(e=>({coordinatorStatus:`idle`,subagents:new Map,events:[],consensusVotes:new Map,tasks:new Map,taskCounts:{pending:0,running:0,completed:0,failed:0},budgetAlerts:[],lastUpdated:Date.now(),setCoordinatorStatus:(t,n)=>e(e=>({coordinatorStatus:t,coordinatorMode:n,lastUpdated:Date.now()})),updateCoordinatorStats:t=>e(e=>{let n=new Map(e.subagents);for(let e of t.subagentStatuses??[]){let t=n.get(e.id);n.set(e.id,{id:e.id,name:e.name,role:t?.role??`agent`,status:e.status,currentTask:e.currentTask,budgetLimits:t?.budgetLimits,budgetUsage:t?.budgetUsage,lastSeen:t?.lastSeen??Date.now()})}return h(n,m,e=>e.status===`stopped`),{subagents:n,taskCounts:{pending:t.pending,running:t.inFlight,completed:t.completed,failed:0},lastUpdated:Date.now()}}),updateSubagentBudget:(t,n)=>e(e=>{let r=new Map(e.subagents),i=r.get(t);return r.set(t,{id:t,name:i?.name??t,role:i?.role??`agent`,status:i?.status??`idle`,...i,...n,lastSeen:Date.now()}),h(r,m,e=>e.status===`stopped`),{subagents:r,lastUpdated:Date.now()}}),pushEvent:(t,n,r,i,a)=>e(e=>{let o=n.kind??t,s=(t.includes(`budget`)||t.includes(`threshold`))&&typeof n.limit==`number`&&n.limit>0?Math.round(n.used/n.limit*100):void 0,c=s===void 0?t.includes(`consensus.vote_resolved`)?`info`:t.includes(`consensus.vote_initiated`)?`warning`:`info`:s>=100?`danger`:s>=85?`warning`:`info`;return{events:[{id:`${r}-${t}`,ts:r,type:t,subagentId:i,taskId:a,payload:n,kind:o,level:c,message:te(t,n)},...e.events].slice(0,ne),lastUpdated:Date.now()}}),pushConsensusVote:(t,n,r)=>e(e=>{let i=new Map(e.consensusVotes);return i.set(t,{changeId:t,title:n,status:`pending`,eligible:r,votes:[],approveCount:0,rejectCount:0,abstainCount:0,expiresAt:Date.now()+300*1e3}),h(i,ie,e=>e.status!==`pending`),{consensusVotes:i,lastUpdated:Date.now()}}),recordConsensusVote:(t,n,r,i)=>e(e=>{let a=new Map(e.consensusVotes),o=a.get(t);if(!o)return{};let s={...o,votes:[...o.votes.filter(e=>e.agentId!==n),{agentId:n,agentName:r,value:i,votedAt:Date.now()}],approveCount:i===`approve`?o.approveCount+1:o.approveCount,rejectCount:i===`reject`?o.rejectCount+1:o.rejectCount,abstainCount:i===`abstain`?o.abstainCount+1:o.abstainCount};return a.set(t,s),{consensusVotes:a,lastUpdated:Date.now()}}),resolveConsensusVote:(t,n,r,i)=>e(e=>{let a=new Map(e.consensusVotes),o=a.get(t);return o?(a.set(t,{...o,status:n,approveCount:r,rejectCount:i,resolvedAt:Date.now()}),{consensusVotes:a,lastUpdated:Date.now()}):{}}),pushTaskPending:(t,n,r)=>e(e=>{let i=new Map(e.tasks);return i.set(t,{id:t,description:n,status:`pending`,priority:r,queuedAt:Date.now()}),h(i,p,e=>e.status===`completed`||e.status===`failed`),{tasks:i,taskCounts:{...e.taskCounts,pending:e.taskCounts.pending+1},lastUpdated:Date.now()}}),startTask:(t,n)=>e(e=>{let r=new Map(e.tasks),i=r.get(t);return i?r.set(t,{...i,status:`running`,subagentId:n,startedAt:Date.now()}):r.set(t,{id:t,description:``,status:`running`,subagentId:n,startedAt:Date.now()}),{tasks:r,taskCounts:{...e.taskCounts,pending:Math.max(0,e.taskCounts.pending-1),running:e.taskCounts.running+1},lastUpdated:Date.now()}}),completeTask:(t,n,r)=>e(e=>{let i=new Map(e.tasks),a=i.get(t);return a&&i.set(t,{...a,status:n,completedAt:Date.now(),durationMs:r}),h(i,p,e=>e.status===`completed`||e.status===`failed`),{tasks:i,taskCounts:{...e.taskCounts,running:Math.max(0,e.taskCounts.running-1),completed:n===`completed`?e.taskCounts.completed+1:e.taskCounts.completed,failed:n===`failed`?e.taskCounts.failed+1:e.taskCounts.failed},lastUpdated:Date.now()}}),failTask:(t,n)=>e(e=>{let r=new Map(e.tasks),i=r.get(t);return i&&r.set(t,{...i,status:`failed`,error:n,completedAt:Date.now()}),h(r,p,e=>e.status===`completed`||e.status===`failed`),{tasks:r,taskCounts:{...e.taskCounts,running:Math.max(0,e.taskCounts.running-1),failed:e.taskCounts.failed+1},lastUpdated:Date.now()}}),recordBudgetDecision:(t,n,r,i)=>e(e=>{let a=new Map;for(let t of e.budgetAlerts){let e=`${t.subagentId}:${t.kind}`;a.has(e)||a.set(e,t)}let o=`${t}:${n}`,s=a.get(o);return s&&a.set(o,{...s,decision:r,newLimit:i,level:r===`extend`?`warning`:`danger`}),{budgetAlerts:Array.from(a.values()),lastUpdated:Date.now()}}),recordBudgetAlert:(t,n,r,i)=>e(e=>{let a=`${Date.now()}-${t}-${n}`,o=i>0?Math.round(r/i*100):0;return{budgetAlerts:[{id:a,ts:Date.now(),subagentId:t,kind:n,level:ee(n,o),used:r,limit:i,pct:o},...e.budgetAlerts].slice(0,re),lastUpdated:Date.now()}}),recordBudgetExtended:(t,n,r)=>e(e=>{let i=new Map(e.subagents),a=i.get(t);if(a?.budgetLimits){let e={...a.budgetLimits};n===`timeout`&&r&&(e.timeoutMs=r),n===`iterations`&&(e.maxIterations=r),n===`tool_calls`&&(e.maxToolCalls=r),i.set(t,{...a,budgetLimits:e,lastSeen:Date.now()})}return{subagents:i,lastUpdated:Date.now()}}),clear:()=>e({coordinatorStatus:`idle`,coordinatorMode:void 0,subagents:new Map,events:[],consensusVotes:new Map,tasks:new Map,taskCounts:{pending:0,running:0,completed:0,failed:0},budgetAlerts:[],lastUpdated:Date.now()})})),oe=n()(e=>({snapshot:null,lastFiredAt:{},revision:0,setSnapshot:t=>e(e=>({snapshot:t,revision:e.revision+1})),recordFired:(t,n)=>e(e=>({lastFiredAt:{...e.lastFiredAt,[t]:n},revision:e.revision+1})),clear:()=>e({snapshot:null,lastFiredAt:{},revision:0})}));function se(){return`ref_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function g(e){switch(e.split(`.`).pop()?.toLowerCase()??``){case`ts`:case`tsx`:return`typescript`;case`js`:case`jsx`:return`javascript`;case`json`:return`json`;case`md`:case`mdx`:return`markdown`;case`css`:return`css`;case`scss`:return`scss`;case`html`:case`htm`:return`html`;case`py`:return`python`;case`rs`:return`rust`;case`go`:return`go`;case`rb`:return`ruby`;case`java`:return`java`;case`c`:return`c`;case`cpp`:case`hpp`:return`cpp`;case`h`:return`c`;case`sh`:case`bash`:return`bash`;case`sql`:return`sql`;case`yaml`:case`yml`:return`yaml`;case`toml`:return`toml`;default:return``}}function _(e,t=20,n=2e3){let r=e.split(`
|
|
2
|
+
`),i=!1,a=e;return r.length>t&&(a=r.slice(0,t).join(`
|
|
3
|
+
`),i=!0),a.length>n&&(a=a.slice(0,n),i=!0),i&&(a=a.replace(/\s+$/,``)+`
|
|
4
|
+
…`),{text:a,truncated:i}}function v(e){return e.length===0?``:[`[File reference contract]`,`Before answering or modifying anything related to these references, use the available file-reading tools to read each complete project file:`,...e.map(e=>`- ${JSON.stringify(e)}`),`If a read is paginated or chunked, continue on the same path until EOF. Do not treat an inline preview as the complete file.`].join(`
|
|
5
|
+
`)}function y(e,t){if(e.length===0)return``;let n=[],r=new Set;for(let i of e){if(i.kind===`file`){let e=t?.[i.path];if(e){let t=g(i.path),a=t?`\`\`\`${t}`:"```",o=_(e),s=o.truncated?`preview; complete read required`:`entire file`;n.push(`${a}\n// ${i.path} (${s})\n${o.text}\n\`\`\``),o.truncated&&r.add(i.path)}else n.push(`@${i.path}`),r.add(i.path);continue}let e=g(i.path),a=e?`\`\`\`${e}`:"```",o=`// ${i.path}:${i.startLine}-${i.endLine}`,s=_(i.kind===`snippet`?i.content:i.preview);n.push(`${a}\n${o}\n${s.text}\n\`\`\``),s.truncated&&r.add(i.path)}let i=v([...r]);return[...n,i].filter(Boolean).join(`
|
|
6
|
+
|
|
7
|
+
`)}var b=n()((e,t)=>({refs:[],addRef:n=>{let r=t();if(n.kind===`file`&&r.refs.find(e=>e.kind===`file`&&e.path===n.path))return;let i={...n,id:se()};e({refs:[...r.refs,i]})},removeRef:t=>{e(e=>({refs:e.refs.filter(e=>e.id!==t)}))},clearRefs:()=>e({refs:[]})})),ce=n()((e,t)=>({projectRoot:``,tree:[],openFiles:[],activeFilePath:null,treeLoading:!1,error:null,setTree:(t,n)=>e({projectRoot:t,tree:n,treeLoading:!1,error:null}),openFile:(n,r)=>{let i=t();if(i.openFiles.find(e=>e.path===n)){e({openFiles:i.openFiles.map(e=>e.path===n?{...e,content:r,dirty:!1,savedContent:r}:e),activeFilePath:n});return}e({openFiles:[...i.openFiles,{path:n,content:r,dirty:!1,savedContent:r}],activeFilePath:n})},closeFile:n=>{let r=t(),i=r.openFiles.findIndex(e=>e.path===n);if(i===-1)return;let a=[...r.openFiles];a.splice(i,1);let o=r.activeFilePath;r.activeFilePath===n&&(o=a.length===0?null:i<a.length?a[i].path:a[a.length-1].path),e({openFiles:a,activeFilePath:o})},setActiveFile:t=>e({activeFilePath:t}),updateContent:(t,n)=>{e(e=>({openFiles:e.openFiles.map(e=>e.path===t?{...e,content:n,dirty:n!==e.savedContent}:e)}))},markSaved:t=>{e(e=>({openFiles:e.openFiles.map(e=>e.path===t?{...e,dirty:!1,savedContent:e.content}:e)}))},setTreeLoading:t=>e({treeLoading:t}),setError:t=>e({error:t})}));function x(e){return e===`running`}function S(e,t){let n=+!x(e.status),r=+!x(t.status);return n===r?e.startedAt-t.startedAt:n-r}function le(e){let t=0,n=0,r=0;for(let i of e)i.status===`running`?t++:i.status===`completed`?n++:(i.status===`failed`||i.status===`timeout`)&&r++;return{running:t,completed:n,failed:r,total:e.length}}var ue=85,de=70;function fe(e){let t=Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0;return{clamped:t,severity:t>=ue?`high`:t>=de?`medium`:`low`}}function C(e){return e==null||!Number.isFinite(e)||e<0?`0`:e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(Math.round(e))}function pe(e){if(e==null||!Number.isFinite(e)||e<=0)return`$0`;if(e<.01){let t=e.toFixed(5);return t===`0.00000`?`$0`:`$`+t.replace(/(\d)0+$/,`$1`).replace(/\.$/,``)}return`$`+e.toFixed(3)}function w(e){if(e==null||!Number.isFinite(e)||e<0)return`—`;let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m ${t%60}s`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d`}function me(e,t=Date.now()){let{clamped:n,severity:r}=fe(e.ctxPct);return{ctxClamped:n,ctxSeverity:r,elapsed:!Number.isFinite(e.startedAt)||e.startedAt<=0?`—`:w(e.status===`running`?t-e.startedAt:(e.completedAt??t)-e.startedAt),cost:pe(e.costUsd),iterationCount:e.iteration,toolCount:e.toolCalls,tokensIn:C(e.tokensIn),tokensOut:C(e.tokensOut)}}var T=12,he=20,ge=500,E=200,D=[];function O(e,t,n){return{id:e,name:t?.trim()||e,sessionId:n,status:`running`,iteration:0,toolCalls:0,costUsd:0,ctxPct:0,ctxTokens:0,maxContext:0,extensions:0,startedAt:Date.now(),toolLog:[],sparklineBins:Array(T).fill(0)}}var k=0;function A(){return`tl_${Date.now()}_${++k}`}function j(e,t){return[t,...e].slice(0,he)}function M(e){switch(e){case`text`:case`thinking`:case`tool_use`:case`tool_result`:case`error`:case`status`:case`system`:return e;default:return`status`}}function N(e,t){return e.subagentId!==t.subagentId||e.kind!==t.kind||e.iteration!==t.iteration||e.toolName!==t.toolName||e.toolOk!==t.toolOk?!1:e.kind===`text`||e.kind===`thinking`}function P(e,t){let n=e[e.length-1];return n&&N(n,t)?[...e.slice(0,-1),{...n,content:`${n.content}${t.content}`,ts:t.ts}].slice(-1e3):[...e,t].slice(-1e3)}function F(e){return[e[0]+1,...e.slice(0,T-1)]}function I(e){return Number.isFinite(e)?Math.max(0,Math.min(100,e)):0}var L=n()((t,n)=>({agents:new Map,leaderId:void 0,fleetTokensIn:0,fleetTokensOut:0,fleetConcurrency:0,fleetConcurrencyMax:4,fleetMaxSpawns:void 0,fleetUsedSpawns:void 0,fleetRemainingSpawns:void 0,fleetBudgetSource:void 0,fleetCheckpointMaxSpawns:void 0,fleetCeilingMismatch:!1,eventTimeline:[],agentTimeline:[],agentTranscripts:new Map,pushAgentTimelineEntry:e=>t(t=>{let n={id:`agent_tl_${Date.now()}_${Math.random().toString(36).slice(2,6)}`,...e,kind:M(e.kind)},r=new Map(t.agentTranscripts);return r.set(n.subagentId,P(r.get(n.subagentId)??[],n)),{agentTimeline:[n,...t.agentTimeline].slice(0,ge),agentTranscripts:r}}),clear:()=>t({agents:new Map,leaderId:void 0,fleetTokensIn:0,fleetTokensOut:0,fleetConcurrency:0,fleetConcurrencyMax:4,fleetMaxSpawns:void 0,fleetUsedSpawns:void 0,fleetRemainingSpawns:void 0,fleetBudgetSource:void 0,fleetCheckpointMaxSpawns:void 0,fleetCeilingMismatch:!1,eventTimeline:[],agentTimeline:[],agentTranscripts:new Map}),getAgentsBySession:e=>{let t=[];for(let r of n().agents.values())r.sessionId===e&&t.push(r);return t},getAgentTranscript:e=>n().agentTranscripts.get(e)??D,clearFinishedAgents:()=>t(e=>{let t=new Map(e.agents),n=new Set,r=0,i=0;for(let[e,a]of t)a.status!==`running`&&(t.delete(e),n.add(e),r+=a.tokensIn??0,i+=a.tokensOut??0);let a=new Map(e.agentTranscripts);for(let e of n)a.delete(e);return{agents:t,agentTranscripts:a,agentTimeline:e.agentTimeline.filter(e=>!n.has(e.subagentId)),eventTimeline:e.eventTimeline.filter(e=>!n.has(e.agentId)),leaderId:e.leaderId&&n.has(e.leaderId)?void 0:e.leaderId,fleetTokensIn:Math.max(0,e.fleetTokensIn-r),fleetTokensOut:Math.max(0,e.fleetTokensOut-i)}}),applyEvent:n=>t(t=>{let r=new Map(t.agents),i=new Map(t.agentTranscripts),a=t.eventTimeline,o=t.leaderId,s=t.fleetTokensIn,c=t.fleetTokensOut;if(n.kind===`session_stopped`&&n.sessionId){let e=new Set;for(let[t,a]of r)a.sessionId===n.sessionId&&(r.delete(t),i.delete(t),e.add(t));return{agents:r,agentTranscripts:i,agentTimeline:t.agentTimeline.filter(t=>!e.has(t.subagentId)),leaderId:void 0,fleetTokensIn:0,fleetTokensOut:0}}if(n.kind===`removed`&&n.subagentId){let e=r.get(n.subagentId);return r.delete(n.subagentId),i.delete(n.subagentId),{agents:r,agentTranscripts:i,agentTimeline:t.agentTimeline.filter(e=>e.subagentId!==n.subagentId),eventTimeline:t.eventTimeline.filter(e=>e.agentId!==n.subagentId),leaderId:t.leaderId===n.subagentId?void 0:t.leaderId,fleetTokensIn:Math.max(0,t.fleetTokensIn-(e?.tokensIn??0)),fleetTokensOut:Math.max(0,t.fleetTokensOut-(e?.tokensOut??0))}}if(n.kind===`leader_updated`&&n.subagentId){let e=t.leaderId;if(e&&e!==n.subagentId){let t=r.get(e);t&&r.set(e,{...t,isLeader:!1})}o=n.subagentId;let i=r.get(n.subagentId)??O(n.subagentId,n.name,n.sessionId);return r.set(n.subagentId,{...i,isLeader:!0,name:n.name?.trim()||i.name}),a=j(a,{id:A(),kind:`leader_updated`,agentId:n.subagentId,agentName:n.name??o,timestamp:Date.now(),message:`${n.name??n.subagentId} became leader`}),{agents:r,leaderId:o,eventTimeline:a}}if(!n.subagentId)return t;let l=r.get(n.subagentId)??O(n.subagentId,n.name,n.sessionId),u={...l},d=Date.now();switch(n.kind){case`spawned`:u.name=n.name?.trim()||u.name,u.provider=n.provider??u.provider,u.model=n.model??u.model,u.description=n.description??u.description,u.taskId=n.taskId??u.taskId,u.sessionId=n.sessionId??u.sessionId,u.status=`running`,u.sparklineBins=Array(T).fill(0),a=j(a,{id:A(),kind:`spawned`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} spawned`});break;case`task_started`:u.description=n.description??u.description,u.taskId=n.taskId??u.taskId,u.status=`running`,a=j(a,{id:A(),kind:`task_started`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} started: ${n.description??`new task`}`});break;case`tool_executed`:{let e=typeof n.ok!=`boolean`||n.ok,t=typeof n.durationMs==`number`?n.durationMs:0;u.lastTool=n.toolName??u.lastTool,u.toolCalls+=1,u.toolLog=[{name:n.toolName??`unknown`,ok:e,durationMs:t,at:d},...u.toolLog].slice(0,50),u.sparklineBins=F(u.sparklineBins),a=j(a,{id:A(),kind:`tool_executed`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} ${e?`✓`:`✗`} ${n.toolName??`tool`}`,value:t});break}case`iteration_summary`:u.iteration=n.iteration??u.iteration,typeof n.toolCalls==`number`&&(u.toolCalls=n.toolCalls),typeof n.costUsd==`number`&&(u.costUsd=n.costUsd),u.currentTool=n.currentTool??u.currentTool,typeof n.partialText==`string`&&n.partialText&&(u.partialText=n.partialText),u.sparklineBins=F(u.sparklineBins),a=j(a,{id:A(),kind:`iteration_summary`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} iter ${n.iteration??u.iteration} · ${n.currentTool?`${n.currentTool}`:``}`,value:n.costUsd});break;case`budget_warning`:{let e=n.budgetKind??`budget`,t=typeof n.used==`number`?n.used:0,r=typeof n.limit==`number`?n.limit:0;u.budgetWarning={kind:e,used:t,limit:r},a=j(a,{id:A(),kind:`budget_warning`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} hit ${e} budget ${t}/${r}`,value:t});break}case`budget_extended`:u.extensions=n.totalExtensions??u.extensions+1,u.budgetWarning=void 0,a=j(a,{id:A(),kind:`budget_extended`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} extended budget ⚡×${u.extensions}`});break;case`ctx_pct`:u.ctxPct=I(Math.round(Math.max(0,n.load??0)*100)),u.ctxTokens=n.tokens??u.ctxTokens,u.maxContext=n.maxContext??u.maxContext,u.ctxPct>=80&&!u.budgetWarning&&(u.budgetWarning=u.ctxPct>=100?{kind:`hard`,used:u.ctxPct,limit:100}:{kind:`soft`,used:u.ctxPct,limit:100}),typeof n.costUsd==`number`&&(u.costUsd=n.costUsd),typeof n.tokensIn==`number`&&(u.tokensIn=n.tokensIn,s=s-(l.tokensIn??0)+n.tokensIn),typeof n.tokensOut==`number`&&(u.tokensOut=n.tokensOut,c=c-(l.tokensOut??0)+n.tokensOut),a=j(a,{id:A(),kind:`ctx_pct`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} ctx ${u.ctxPct}%`,value:u.ctxPct});break;case`task_completed`:{u.status=n.status===`success`?`completed`:n.status??`completed`,typeof n.iterations==`number`&&(u.iteration=n.iterations),typeof n.toolCalls==`number`&&(u.toolCalls=n.toolCalls),u.error=n.error,u.currentTool=void 0,u.completedAt=d,u.failureReason=n.failureReason??u.failureReason,typeof n.finalText==`string`&&n.finalText&&(u.finalText=e(n.finalText));let t=n.status===`success`?`✓ completed`:n.status===`failed`?`✗ failed${n.failureReason?` (${n.failureReason})`:``}`:n.status===`timeout`?`⏱ timeout${n.failureReason?` (${n.failureReason})`:``}`:`stopped`;a=j(a,{id:A(),kind:`task_completed`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} ${t}`,value:u.costUsd});break}}r.set(n.subagentId,u);let f=!1;if(r.size>E)for(let[e,t]of r){if(r.size<=E)break;t.status===`running`||e===n.subagentId||(r.delete(e),i.delete(e),f=!0,s=Math.max(0,s-(t.tokensIn??0)),c=Math.max(0,c-(t.tokensOut??0)),o===e&&(o=void 0))}return{agents:r,...f?{agentTranscripts:i}:{},leaderId:o,fleetTokensIn:s,fleetTokensOut:c,eventTimeline:a}})})),_e=e=>{let t=0,n=0,r=0,i=0;for(let a of e.agents.values())a.status===`running`?t++:a.status===`completed`?n++:(a.status===`failed`||a.status===`timeout`)&&r++,Number.isFinite(a.costUsd)&&a.costUsd>0&&(i+=a.costUsd);return{running:t,completed:n,failed:r,total:e.agents.size,totalCost:i,tokensIn:e.fleetTokensIn,tokensOut:e.fleetTokensOut,concurrency:e.fleetConcurrency,concurrencyMax:e.fleetConcurrencyMax,maxSpawns:e.fleetMaxSpawns,usedSpawns:e.fleetUsedSpawns,remainingSpawns:e.fleetRemainingSpawns,budgetSource:e.fleetBudgetSource,ceilingMismatch:e.fleetCeilingMismatch||void 0,checkpointMaxSpawns:e.fleetCheckpointMaxSpawns}},ve=e=>{let t=Array.from(e.agents.values()),n=e.leaderId;return t.sort((e,t)=>e===t||e.id===t.id?0:e.id===n?-1:t.id===n?1:S(e,t)),t},ye=e=>e.leaderId?e.agents.get(e.leaderId)?.name:void 0,be=n()(e=>({files:[],error:null,loadingList:!1,selectedPath:null,diff:null,loadingDiff:!1,setFiles:(t,n)=>e({files:t,error:n,loadingList:!1}),setListLoading:t=>e({loadingList:t}),select:t=>e({selectedPath:t,diff:null,loadingDiff:!!t}),setDiff:t=>e({diff:t,loadingDiff:!1}),setDiffLoading:t=>e({loadingDiff:t}),clear:()=>e({files:[],error:null,selectedPath:null,diff:null,loadingDiff:!1})})),xe=n()(e=>({info:null,setInfo:t=>e({info:t}),clear:()=>e({info:null})})),Se=n()((e,t)=>({result:null,loading:!1,currentSeq:0,setResult:t=>e(e=>t.reqSeq===e.currentSeq?{result:t,loading:!1}:{}),setLoading:()=>e({loading:!0,result:null}),clear:()=>e({result:null,loading:!1}),nextSeq:()=>{let n=t().currentSeq+1;return e({currentSeq:n}),n}})),Ce=n()(e=>({phases:[],activePhaseId:null,overallPercent:0,autonomous:!1,title:null,goal:null,status:`idle`,multiBoard:!1,lastEvent:null,lastError:null,graphs:[],progress:null,setState:t=>e(e=>({phases:t.phases??e.phases,activePhaseId:t.activePhaseId===void 0?e.activePhaseId:t.activePhaseId,overallPercent:t.overallPercent??e.overallPercent,autonomous:t.autonomous??e.autonomous,title:t.title===void 0?e.title:t.title,goal:t.goal===void 0?e.goal:t.goal,status:t.status??e.status,multiBoard:t.multiBoard??e.multiBoard,lastEvent:t.lastEvent===void 0?e.lastEvent:t.lastEvent,lastError:t.lastError===void 0?e.lastError:t.lastError,graphs:t.graphs??e.graphs,progress:t.progress===void 0?e.progress:t.progress})),clear:()=>e({phases:[],activePhaseId:null,overallPercent:0,autonomous:!1,title:null,goal:null,status:`idle`,multiBoard:!1,lastEvent:null,lastError:null,graphs:[],progress:null}),hydrateFromServer:e=>{e({type:`goal.list`}),e({type:`goal.state`})}}));function we(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return!(typeof t.iteration!=`number`||!Number.isFinite(t.iteration)||t.task!==void 0&&typeof t.task!=`string`||t.status!==void 0&&typeof t.status!=`string`||t.progress!==void 0&&(typeof t.progress!=`number`||!Number.isFinite(t.progress))||t.progressNote!==void 0&&typeof t.progressNote!=`string`||t.timestamp!==void 0&&typeof t.timestamp!=`string`)}function Te(e){return!e||typeof e.goal!=`string`||!e.goal.trim()?null:{goal:e.goal,refinedGoal:typeof e.refinedGoal==`string`?e.refinedGoal:void 0,goalState:[`active`,`paused`,`completed`,`failed`,`abandoned`].includes(e.goalState)?e.goalState:`active`,iterations:typeof e.iterations==`number`?e.iterations:0,progress:typeof e.progress==`number`?e.progress:0,progressNote:typeof e.progressNote==`string`?e.progressNote:void 0,progressTrend:e.progressTrend===`accelerating`?`up`:e.progressTrend===`stalling`?`down`:e.progressTrend===`steady`?`stable`:void 0,deliverables:Array.isArray(e.deliverables)?e.deliverables.map((e,t)=>typeof e==`string`?{id:`d${t}`,text:e,status:/^\[[x✓]\]|✅|\(done\)/i.test(e)?`done`:`pending`}:e):void 0,journal:Array.isArray(e.journal)?e.journal.filter(we):void 0,lastTask:typeof e.lastTask==`string`?e.lastTask:void 0,lastStatus:typeof e.lastStatus==`string`?e.lastStatus:void 0}}var Ee=n()(e=>({goal:null,setGoal:t=>e({goal:Te(t)}),clear:()=>e({goal:null}),appendJournalEntry:t=>e(e=>e.goal?{goal:{...e.goal,iterations:Math.max(e.goal.iterations,t.iteration),lastTask:t.task??e.goal.lastTask,lastStatus:t.status??e.goal.lastStatus,journal:[t,...e.goal.journal??[]].slice(0,200)}}:e),refresh:()=>{try{i()?.send?.({type:`goal-state.get`})}catch{}}})),De=n()(e=>({entries:[],loading:!1,error:null,setEntries:(t,n=null)=>e({entries:t,error:n,loading:!1}),setLoading:t=>e({loading:t}),removeEntry:t=>e(e=>({entries:e.entries.filter(e=>e.id!==t)})),updateEntryName:(t,n)=>e(e=>({entries:e.entries.map(e=>{if(e.id!==t)return e;let r=n.trim();if(!r){let{name:t,...n}=e;return n}return{...e,name:r}})})),clearHistory:()=>e({entries:[]})}));function R(e,t){return e.presence?.some(e=>e.active)===!0||e.tags?.some(e=>e.startsWith(`session:`)&&t.includes(e.slice(8)))===!0}var Oe=300*1e3,ke=n()((e,t)=>({boards:[],boardTotal:0,activeBoardTotal:0,orphanedBoardTotal:0,activeBoardId:null,activeBoard:null,loading:!1,lastOutboundAction:null,error:null,queueHealth:null,supervisorSnapshot:null,workbench:null,verificationActivity:{},setLoading:t=>e({loading:t}),sendKanban:(t,n)=>(e({loading:!0,lastOutboundAction:t}),t),transitionTask:(t,n,r,i)=>{let a=`kanban.task.transition`;return e({loading:!0,lastOutboundAction:a}),a},dispatchTask:(t,n,r)=>{let i=`kanban.task.dispatch`;return e({loading:!0,lastOutboundAction:i}),i},moveTask:(t,n,r)=>{let i=`kanban.task.move`;return e({loading:!0,lastOutboundAction:i}),i},removeTask:(t,n)=>{let r=`kanban.task.remove`;return e({loading:!0,lastOutboundAction:r}),r},setActiveBoardId:t=>e({activeBoardId:t,queueHealth:null,supervisorSnapshot:null,verificationActivity:{}}),setError:t=>e({error:t}),setQueueHealth:t=>e({queueHealth:t}),handleResult:(n,r)=>{if(!r.success){e({loading:!1,error:r.error??`Kanban request failed`});return}let i=r.data;if((n===`kanban.supervisor.status`||n===`kanban.supervisor.audit`)&&i){e({supervisorSnapshot:i,loading:!1,error:null});return}if(n===`kanban.health`&&r.data){e({queueHealth:r.data,loading:!1,error:null});return}if(n===`kanban.workbench`&&r.data){e({workbench:r.data,loading:!1,error:null});return}if(n===`kanban.list`){let t=je(i)?i:null,n=t?t.items:Array.isArray(i)?i:[];e({boards:n,boardTotal:t?.total??n.length,activeBoardTotal:t?.activeTotal??n.filter(e=>H(e)).length,orphanedBoardTotal:t?.orphanedTotal??n.filter(e=>!H(e)).length,loading:!1,error:null});return}if(n===`kanban.delete`){let n=t().activeBoardId,r=i,a=r?.removed===!0,o=r?.boardId??n;e(e=>{let t=a?e.boards.find(e=>e.id===o):void 0,n=t?H(t):void 0;return{boards:a?e.boards.filter(e=>e.id!==o):e.boards,boardTotal:a?Math.max(0,e.boardTotal-1):e.boardTotal,activeBoardTotal:n===!0?Math.max(0,e.activeBoardTotal-1):e.activeBoardTotal,orphanedBoardTotal:n===!1?Math.max(0,e.orphanedBoardTotal-1):e.orphanedBoardTotal,activeBoardId:a&&e.activeBoardId===o?null:e.activeBoardId,activeBoard:a&&e.activeBoard?.id===o?null:e.activeBoard,loading:!1,error:null}});return}if(n===`kanban.task.remove`){let t=i;e(e=>{let n=z(t?.board)?t.board:null;if(n&&e.activeBoardId===n.id)return{boards:W(e.boards,U(n)),activeBoard:n,loading:!1,error:null};let r=t?.boardId,i=t?.taskId,a=t?.removed===!0&&i&&e.activeBoard&&(!r||e.activeBoard.id===r)?{...e.activeBoard,tasks:e.activeBoard.tasks.filter(e=>e.id!==i)}:e.activeBoard;return{activeBoard:a,boards:a?W(e.boards,U(a)):e.boards,loading:!1,error:null}});return}if(n===`kanban.column.remove`){let t=i;if(z(t?.board)){let n=t.board;e(e=>({boards:W(e.boards,U(n)),activeBoard:e.activeBoardId===n.id?n:e.activeBoard,loading:!1,error:null}));return}}if(n===`kanban.task.verification_started`){let t=i;if(t?.boardId&&t.taskId){let n=`${t.boardId}:${t.taskId}`;e(e=>{let t=Date.now(),r=Object.fromEntries(Object.entries(e.verificationActivity).filter(([,e])=>t-e.startedAt<Oe));return r[n]={startedAt:t},{verificationActivity:r,loading:!1,error:null}})}return}if(n===`kanban.task.verification_completed`&&V(i)){let t=`${i.boardId}:${i.task.id}`;e(e=>{let n={...e.verificationActivity};if(delete n[t],e.activeBoard&&e.activeBoard.id===i.boardId){let t=G(e.activeBoard,i.task);return{verificationActivity:n,boards:W(e.boards,U(t)),activeBoard:t,loading:!1,error:null}}return{verificationActivity:n,loading:!1,error:null}});return}if(Ae(i)){let t=i.board;e(e=>({boards:W(e.boards,U(t)),activeBoard:e.activeBoardId===t.id?t:e.activeBoard,loading:!1,error:null}));return}if(V(i)){e(e=>{if(e.activeBoard&&e.activeBoard.id===i.boardId){let t=G(e.activeBoard,i.task);return{boards:W(e.boards,U(t)),activeBoard:t,loading:!1,error:null}}return{loading:!1,error:null}});return}if(z(i)){let t=U(i);if(n===`kanban.get`){e(e=>({boards:W(e.boards,t),activeBoard:e.activeBoardId===i.id?i:e.activeBoard,loading:!1,error:null}));return}e(e=>({boards:W(e.boards,t),activeBoardId:i.id,activeBoard:i,loading:!1,error:null}));return}if(B(i)){e(e=>({...e.activeBoard?(()=>{let t=G(e.activeBoard,i);return{activeBoard:t,boards:W(e.boards,U(t))}})():{activeBoard:e.activeBoard},loading:!1,error:null}));return}if(Array.isArray(i)&&i.every(Me)){e(e=>({...e.activeBoard?(()=>{let t={...e.activeBoard,columns:i};return{activeBoard:t,boards:W(e.boards,U(t))}})():{activeBoard:e.activeBoard},loading:!1,error:null}));return}e({loading:!1,error:null})}}));function z(e){return!!e&&typeof e==`object`&&Array.isArray(e.columns)&&Array.isArray(e.tasks)}function B(e){return!!e&&typeof e==`object`&&typeof e.title==`string`}function V(e){return!!e&&typeof e==`object`&&typeof e.boardId==`string`&&B(e.task)}function Ae(e){return!!e&&typeof e==`object`&&z(e.board)}function je(e){return!!e&&typeof e==`object`&&Array.isArray(e.items)&&typeof e.total==`number`}function H(e){return R(e,[])}function Me(e){return!!e&&typeof e==`object`&&typeof e.id==`string`}function U(e){return{id:e.id,title:e.title,description:e.description,tags:e.tags,presence:e.presence,createdAt:e.createdAt,updatedAt:e.updatedAt,columnCount:e.columns.length,taskCount:e.tasks.length,completedTaskCount:e.tasks.filter(e=>e.status===`completed`).length}}function W(e,t){return[t,...e.filter(e=>e.id!==t.id)].sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt))}function G(e,t){let n=e.tasks.some(e=>e.id===t.id)?e.tasks.map(e=>e.id===t.id?t:e):[...e.tasks,t];return{...e,tasks:n}}function Ne(e){switch(e){case`tui`:return`tui`;case`cli`:case`repl`:return`repl`;case`webui`:return`webui`;default:return`webui`}}function Pe(e){let t={tui:0,webui:0,repl:0},n=0,r=0,i={toolCalls:0,costUsd:0,tokensIn:0,tokensOut:0};for(let a of e){t[Ne(a.clientType)]+=1;for(let e of a.agents)n+=1,(e.status===`running`||e.status===`streaming`)&&(r+=1),i.toolCalls+=e.toolCalls??0,i.costUsd+=e.costUsd??0,i.tokensIn+=e.tokensIn??0,i.tokensOut+=e.tokensOut??0}return{clientCounts:t,totalAgents:n,activeAgents:r,aggregate:i}}function Fe(e){if(e!==void 0)return Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function Ie(e){return e.map(e=>({...e,agents:e.agents.map(e=>({...e,ctxPct:Fe(e.ctxPct)}))}))}var Le=0,K=n()(e=>({clientCounts:{tui:0,webui:0,repl:0},mailActivity:[],totalMessages:0,openMessages:0,unreadMessages:0,totalAgents:0,activeAgents:0,currentSession:{},liveSessions:[],aggregate:{toolCalls:0,costUsd:0,tokensIn:0,tokensOut:0},lastUpdated:Date.now(),setClientCounts:t=>e({clientCounts:t,lastUpdated:Date.now()}),setLiveSessions:t=>{let n=Ie(t),r=K.getState().liveSessions;if(r.length===n.length){let e=!0;for(let t=0;t<n.length;t++){let i=n[t],a=r[t];if(i.sessionId!==a.sessionId||i.status!==a.status||i.agentCount!==a.agentCount||i.startedAt!==a.startedAt||i.lastHeartbeatAt!==a.lastHeartbeatAt){e=!1;break}let o=i.agents??[],s=a.agents??[];if(o.length!==s.length){e=!1;break}for(let t=0;t<o.length;t++)if(o[t].id!==s[t].id||o[t].name!==s[t].name||o[t].status!==s[t].status||o[t].currentTool!==s[t].currentTool||o[t].iterations!==s[t].iterations||o[t].toolCalls!==s[t].toolCalls||o[t].ctxPct!==s[t].ctxPct||o[t].recentTools?.[0]?.id!==s[t].recentTools?.[0]?.id||o[t].recentMail?.[0]?.id!==s[t].recentMail?.[0]?.id||o[t].activity?.reads!==s[t].activity?.reads||o[t].activity?.writes!==s[t].activity?.writes||o[t].activity?.edits!==s[t].activity?.edits||o[t].activity?.terminalCalls!==s[t].activity?.terminalCalls||o[t].activity?.mailReceived!==s[t].activity?.mailReceived||o[t].activity?.mailSent!==s[t].activity?.mailSent||o[t].activity?.linesAdded!==s[t].activity?.linesAdded||o[t].activity?.linesRemoved!==s[t].activity?.linesRemoved){e=!1;break}if(!e)break}if(e)return}e({liveSessions:n,...Pe(n),lastUpdated:Date.now()})},addMailActivity:t=>e(e=>({mailActivity:[{...t,seq:t.seq??++Le},...e.mailActivity].slice(0,50),lastUpdated:Date.now()})),setMailStats:(t,n,r)=>e({totalMessages:t,openMessages:n,unreadMessages:r,lastUpdated:Date.now()}),setAgentStats:(t,n)=>e({totalAgents:t,activeAgents:n,lastUpdated:Date.now()}),setCurrentSession:t=>e({currentSession:{...K.getState().currentSession,...t},lastUpdated:Date.now()}),clear:()=>e({clientCounts:{tui:0,webui:0,repl:0},mailActivity:[],totalMessages:0,openMessages:0,unreadMessages:0,totalAgents:0,activeAgents:0,currentSession:{},liveSessions:[],aggregate:{toolCalls:0,costUsd:0,tokensIn:0,tokensOut:0},lastUpdated:Date.now()})})),Re=n()(t(e=>({viewMode:`office`,showHud:!0,showLegend:!0,showMinimap:!0,showControls:!0,animateEdges:!0,showFeed:!0,background:`dots`,setViewMode:t=>e({viewMode:t}),setShowHud:t=>e({showHud:t}),setShowLegend:t=>e({showLegend:t}),setShowMinimap:t=>e({showMinimap:t}),setShowControls:t=>e({showControls:t}),setAnimateEdges:t=>e({animateEdges:t}),setShowFeed:t=>e({showFeed:t}),setBackground:t=>e({background:t})}),{name:`wrongstack-officemap`})),q=e=>`${e.providerId}\u0000${e.model}`,ze=n(e=>({entries:{},summary:null,loading:!1,error:null,update:t=>e(e=>{let n={...e.entries},r=q(t);return t.state===`healthy`?delete n[r]:n[r]={...n[r],...t},{entries:n}}),hydrate:t=>e({entries:Object.fromEntries(t.filter(e=>e.state!==`healthy`).map(e=>[q(e),e]))}),applySnapshot:t=>{let n=t.statuses;if(!Array.isArray(n)){e({error:`Invalid snapshot from server`,loading:!1});return}let r={};for(let e of n){if(!e||typeof e!=`object`)continue;let t=e,n=typeof t.providerId==`string`?t.providerId:``,i=typeof t.model==`string`?t.model:``;if(!n||!i)continue;let a=t.state;a!==`healthy`&&a!==`degraded`&&a!==`blocked`||(r[`${n}\u0000${i}`]={providerId:n,model:i,state:a,reason:(typeof t.lastErrorKind==`string`?t.lastErrorKind:``)||a,updatedAt:typeof t.lastFailureAt==`number`?t.lastFailureAt:Date.now(),...typeof t.stateExpiresAt==`number`?{stateExpiresAt:t.stateExpiresAt}:{},...typeof t.consecutiveFailures==`number`?{consecutiveFailures:t.consecutiveFailures}:{},...typeof t.totalFailures==`number`?{totalFailures:t.totalFailures}:{},...typeof t.rateLimitHits==`number`?{rateLimitHits:t.rateLimitHits}:{},...typeof t.lastErrorMessage==`string`?{lastErrorMessage:t.lastErrorMessage}:{},...typeof t.lastErrorKind==`string`?{lastErrorKind:t.lastErrorKind}:{},...typeof t.lastErrorStatus==`number`?{lastErrorStatus:t.lastErrorStatus}:{},...Array.isArray(t.recentErrors)?{recentErrors:t.recentErrors.slice(0,20)}:{},...typeof t.lastSessionId==`string`?{lastSessionId:t.lastSessionId}:{},...typeof t.lastAgentId==`string`?{lastAgentId:t.lastAgentId}:{},...typeof t.lastFailureAt==`number`?{lastFailureAt:t.lastFailureAt}:{}})}let i=t;e({entries:r,summary:{totalPairs:typeof i.totalPairs==`number`?i.totalPairs:0,healthy:typeof i.healthy==`number`?i.healthy:0,degraded:typeof i.degraded==`number`?i.degraded:0,blocked:typeof i.blocked==`number`?i.blocked:0,totalFailures:typeof i.totalFailures==`number`?i.totalFailures:0,totalRateLimits:typeof i.totalRateLimits==`number`?i.totalRateLimits:0},error:null,loading:!1})},setLoading:t=>e({loading:t}),setError:t=>e({error:t,loading:!1}),removeEntry:(t,n)=>e(e=>{let r={...e.entries};return delete r[q({providerId:t,model:n})],{entries:r}}),clear:()=>e({entries:{},summary:null,error:null})})),Be=n(e=>({pending:null,selected:0,setPending:t=>e({pending:t,selected:0}),clear:()=>e({pending:null,selected:0}),move:t=>e(e=>{if(!e.pending||e.pending.candidates.length===0)return e;let n=e.pending.candidates.length;return{selected:(e.selected+t+n)%n}}),setSelected:t=>e({selected:Math.max(0,t)})})),Ve=n()(e=>({snapshot:null,boards:[],lifecycleResult:null,destroying:!1,setSnapshot:t=>e({snapshot:t}),setBoards:t=>e({boards:t}),setLifecycleResult:t=>e({lifecycleResult:t}),setDestroying:t=>e({destroying:t})})),He=n()(e=>({snapshot:null,agentText:``,error:null,startedRunId:null,setSnapshot:t=>{if(t.discarded||t.phase===`idle`&&!t.sessionId){e({snapshot:null,agentText:``,error:null});return}e({snapshot:t,error:null,...t.lastAgentText?{agentText:t.lastAgentText}:{}})},setAgentText:t=>e({agentText:t}),setError:t=>e({error:t}),setStartedRunId:t=>e({startedRunId:t}),reset:()=>e({snapshot:null,agentText:``,error:null,startedRunId:null})})),Ue=n(e=>({sideEffects:[],loading:!1,setSideEffects:t=>e({sideEffects:t,loading:!1}),setLoading:t=>e({loading:t}),clear:()=>e({sideEffects:[],loading:!1})})),We=n()(e=>({specs:[],detail:null,expandedSpecId:null,setSpecs:t=>e({specs:t}),setDetail:t=>e({detail:t}),setExpanded:t=>e({expandedSpecId:t,detail:null})})),Ge=new Set([`idle`,`queued`,`discovering`,`inventorying`,`enriching`,`researching`,`synthesizing`,`completed`,`failed`,`cancelled`]);function Ke(e){return Ge.has(e)?e:void 0}var J={snapshot:null,stale:!1,loading:!1,error:null,activeJob:null,lastWorkspaceId:null,reportId:null},qe=n()(e=>({...J,setSnapshot:(t,n=!1)=>e(e=>({snapshot:t,stale:n,loading:!1,error:null,activeJob:e.activeJob?{...e.activeJob,status:`completed`,error:null}:null})),setLoading:t=>e({loading:t}),setError:t=>e({error:t,loading:!1}),jobStarted:(t,n)=>e({activeJob:{id:t,kind:n,status:`queued`,progress:null,error:null},error:null,loading:!0}),jobProgress:(t,n)=>e(e=>{if(e.activeJob?.id!==t)return e;let r=Ke(n.phase);return r?{activeJob:{...e.activeJob,status:r,progress:n},loading:!0}:e}),jobFailed:(t,n)=>e(e=>e.activeJob?.id===t?{activeJob:{...e.activeJob,status:`failed`,error:n},error:n,loading:!1}:e),jobCancelled:t=>e(e=>({activeJob:e.activeJob?.id===t?{...e.activeJob,status:`cancelled`,error:null}:e.activeJob,loading:!1})),workspaceCompleted:t=>e({lastWorkspaceId:t}),reportReady:t=>e({reportId:t}),clear:()=>e(J)}));function Je(e,t){return{seatId:Z(e.seatId)??`seat`,persona:Z(e.persona)??`voter`,status:Z(e.status)??`valid`,optionId:Z(e.optionId),stance:Z(e.stance),rationale:Z(e.rationale),providerId:Z(e.providerId),model:Z(e.model),veto:$(e.veto),weight:Q(e.weight),durationMs:Q(e.durationMs),error:Z(e.error),at:Q(e.at)??t}}function Y(e){if(e.phase===`voting`)return`voting · ${e.seats.length} seat${e.seats.length===1?``:`s`} in`;let t=e.configuredSeatCount??e.seats.length,n=[e.resolution??e.status??`resolved`,`${e.validVoteCount??e.seats.length}/${t} seats`,`${e.distinctTargetCount??0} distinct target${e.distinctTargetCount===1?``:`s`}`];return e.judgeUsed&&n.push(`judge used`),e.durationMs!==void 0&&n.push(`${Math.round(e.durationMs/100)/10}s`),e.totalTokens&&n.push(`${e.totalTokens} tok`),n.join(` · `)}function X(e,t,n,r){let i=e.findIndex(e=>e.requestId===t);if(i>=0){let t=e[i],n=[...e];return n[i]=r(t),n}return[r({requestId:t,phase:`voting`,startedAt:n,seats:[]}),...e].slice(0,50)}var Ye=n(e=>({panels:[],recordVote:t=>{let n=Z(t.requestId);if(!n)return;let r=Date.now();e(e=>({panels:X(e.panels,n,r,e=>{let n=Z(t.seatId)??`seat`,i=Je(t,r);return e.seats.some(e=>e.seatId===n)?{...e,seats:e.seats.map(e=>e.seatId===n?i:e)}:e.phase===`resolved`?{requestId:e.requestId,phase:`voting`,startedAt:r,seats:[i],question:e.question}:{...e,seats:[...e.seats,i]}})}))},recordResolution:t=>{let n=Z(t.requestId);if(!n)return;let r=Date.now(),i=t.usage;e(e=>({panels:X(e.panels,n,r,e=>({...e,phase:`resolved`,resolvedAt:Q(t.at)??r,status:Z(t.status),resolution:Z(t.resolution),optionId:Z(t.optionId),reason:Z(t.reason),configuredSeatCount:Q(t.configuredSeatCount),validVoteCount:Q(t.validVoteCount),distinctTargetCount:Q(t.distinctTargetCount),judgeUsed:$(t.judgeUsed),totalTokens:Q(i?.totalTokens),durationMs:Q(i?.durationMs),warnings:Array.isArray(t.warnings)?t.warnings.filter(e=>typeof e==`string`):void 0}))}))},noteQuestion:(t,n)=>{let r=n.trim();!t||!r||e(e=>{let n=e.panels.findIndex(e=>e.requestId===t);if(n<0)return e;let i=e.panels[n];if(i.question===r)return e;let a=[...e.panels];return a[n]={...i,question:r},{panels:a}})},clear:()=>e({panels:[]})}));function Z(e){return typeof e==`string`&&e.trim()?e:void 0}function Q(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function $(e){return typeof e==`boolean`?e:void 0}var Xe=n()(e=>({worktrees:[],baseBranch:``,activity:[],orphans:[],canClean:!1,cleanResult:null,mergeResult:null,diffByDir:{},setSnapshot:(t,n)=>e({worktrees:t,baseBranch:n}),pushEvent:t=>e(e=>({activity:[...e.activity,t].slice(-40)})),setOrphans:(t,n,r)=>e({orphans:t,canClean:n,cleanBlockedReason:r}),setCleanResult:t=>e({cleanResult:t}),setMergeResult:t=>e({mergeResult:t}),setDiff:(t,n)=>e(e=>({diffByDir:{...e.diffByDir,[t]:n}}))}));export{le as A,d as B,ye as C,me as D,S as E,ae as F,c as H,f as I,a as L,y as M,b as N,w as O,oe as P,s as R,_e as S,L as T,u as U,l as V,Ce as _,We as a,be as b,Ve as c,Re as d,K as f,Ee as g,De as h,qe as i,ce as j,C as k,Be as l,R as m,Y as n,Ue as o,ke as p,Ye as r,He as s,Xe as t,ze as u,Se as v,ve as w,D as x,xe as y,o as z};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Na as e,Pa as t}from"./vendor-GiKfK4Iw.js";var n=[`chat`,`agents`,`files`,`changes`,`mailbox`,`skills`,`design`,`worktrees`,`officemap`];function r(e){return n.includes(e)?e:e===`context`||e===`history`||e===`sessions`||e===`projects`?`chat`:e===`officemap`?`officemap`:`chat`}var i=[`chat`,`settings`,`memory`,`roster`,`context`,`goal`,`kanban`,`sddhub`,`files`,`changes`,`sessions`,`session-inspect`,`setup`,`skill`,`officemap`,`mailbox`,`debug`,`design-gallery`,`refresh-debug`,`analytics`,`codemap`,`techstack`,`chronicle`,`intake`,`deadcode`];function a(e){return i.includes(e)?e:`chat`}var o=[`goal`,`goal-state`,`fleet`,`work`,`worktrees`,`collab`];function s(e){return e==null||!o.includes(e)?null:e}var c=[`general`,`provider`,`connection`,`agent`,`execution`,`fallbacks`,`routing`,`fleet`,`integrations`,`chimera`,`context`,`logs`,`security`,`display`];function l(e){return c.includes(e)?e:`general`}function u(){if(typeof window>`u`)return!1;if(window.wrongstackDesktopHost)return!0;try{return new URLSearchParams(window.location.search).get(`shell`)===`desktop`}catch{return!1}}function d(e={}){return{currentView:`chat`,activeActivity:`chat`,sidebarOpen:e.sidebarOpen??!1,dockSection:null,dockCustomizeOpen:!1,fleetMonitorOpen:!1,agentsMonitorOpen:!1,processMonitorOpen:!1,queuePanelOpen:!1,cronJobsOpen:!1,sideContextBreakdownOpen:!1,inspectorOpen:!1,inspectorTab:`fleet`,inspectorFocusedAgentId:null,terminalOpen:!1,paletteOpen:!1,shortcutsOpen:!1,searchOpen:!1,searchQuery:``,searchActiveMessageId:null,modelSwitcherOpen:!1,promptLibraryOpen:!1,selectedMailMessage:null,refinePanel:null}}var f=t()(e(e=>({sidebarOpen:!0,activeActivity:`chat`,settingsOpen:!1,currentView:`chat`,showConfirmDialog:!1,confirmInfo:null,paletteOpen:!1,shortcutsOpen:!1,searchOpen:!1,searchQuery:``,searchActiveMessageId:null,scrollTarget:null,promptHistory:[],sidebarWidth:304,pinnedIds:[],compactMode:!1,modelSwitcherOpen:!1,favoriteSessionIds:[],sessionNicknames:{},fileExplorerWidth:220,refineEnabled:!0,refinePanel:null,promptLibraryOpen:!1,promptInsertRequest:null,dockSection:null,workDashboardTab:`todos`,hiddenChips:[],dockCustomizeOpen:!1,fleetMonitorOpen:!1,agentsMonitorOpen:!1,inspectorOpen:!1,inspectorTab:`fleet`,inspectorFocusedAgentId:null,processMonitorOpen:!1,queuePanelOpen:!1,cronJobsOpen:!1,inspectSessionId:null,terminalOpen:!1,terminalCreateNonce:0,settingsActiveTab:`general`,scrollPositions:{},draftInput:``,sideContextBreakdownOpen:!1,selectedMailMessage:null,skillsState:{selectedSkill:null,navHistory:[],historyIndex:-1,detailOpen:!1,knownRefs:{},updateAvailableCount:0},selectActivity:t=>e({activeActivity:t}),toggleSidebar:()=>e(e=>({sidebarOpen:!e.sidebarOpen})),setSidebarOpen:t=>e({sidebarOpen:t}),setSettingsOpen:t=>e({settingsOpen:t}),setCurrentView:t=>e({currentView:a(t)}),showConfirm:t=>e({showConfirmDialog:!0,confirmInfo:t}),hideConfirm:()=>e({showConfirmDialog:!1,confirmInfo:null}),setPaletteOpen:t=>e({paletteOpen:t}),setShortcutsOpen:t=>e({shortcutsOpen:t}),setSearchOpen:t=>e({searchOpen:t,searchQuery:``,searchActiveMessageId:null}),setSearchQuery:t=>e({searchQuery:t}),setSearchActiveMessageId:t=>e({searchActiveMessageId:t}),requestScrollToMessage:t=>e(e=>({scrollTarget:{id:t,nonce:(e.scrollTarget?.nonce??0)+1}})),pushPrompt:t=>e(e=>{let n=t.trim();return n?{promptHistory:[n,...e.promptHistory.filter(e=>e!==n)].slice(0,50)}:e}),setSidebarWidth:t=>e({sidebarWidth:Math.max(240,Math.min(560,Math.round(t)))}),togglePin:t=>e(e=>({pinnedIds:e.pinnedIds.includes(t)?e.pinnedIds.filter(e=>e!==t):[...e.pinnedIds,t]})),unpinAll:()=>e({pinnedIds:[]}),toggleCompactMode:()=>e(e=>({compactMode:!e.compactMode})),setModelSwitcherOpen:t=>e({modelSwitcherOpen:t}),toggleFavoriteSession:t=>e(e=>({favoriteSessionIds:e.favoriteSessionIds.includes(t)?e.favoriteSessionIds.filter(e=>e!==t):[...e.favoriteSessionIds,t]})),setSessionNickname:(t,n)=>e(e=>{let r=n.trim(),i={...e.sessionNicknames};return r?i[t]=r:delete i[t],{sessionNicknames:i}}),setFileExplorerWidth:t=>e({fileExplorerWidth:Math.max(160,Math.min(400,Math.round(t)))}),toggleRefineEnabled:()=>e(e=>({refineEnabled:!e.refineEnabled})),setRefinePanel:t=>e({refinePanel:t}),setPromptLibraryOpen:t=>e({promptLibraryOpen:t}),requestPromptInsert:t=>e({promptInsertRequest:t,promptLibraryOpen:!1}),clearPromptInsert:()=>e({promptInsertRequest:null}),setDockSection:t=>e({dockSection:t,...t?{inspectorOpen:!1}:{}}),setWorkDashboardTab:t=>e({workDashboardTab:t}),toggleDockSection:t=>e(e=>{let n=e.dockSection===t?null:t;return{dockSection:n,...n?{inspectorOpen:!1}:{}}}),toggleChipHidden:t=>e(e=>{let n=e.hiddenChips.includes(t);return{hiddenChips:n?e.hiddenChips.filter(e=>e!==t):[...e.hiddenChips,t],dockSection:!n&&e.dockSection===t?null:e.dockSection}}),showDockChip:t=>e(e=>({hiddenChips:e.hiddenChips.filter(e=>e!==t)})),setDockCustomizeOpen:t=>e({dockCustomizeOpen:t}),setFleetMonitorOpen:t=>e(e=>({fleetMonitorOpen:!1,inspectorOpen:t?!0:e.inspectorTab!==`fleet`&&e.inspectorOpen,inspectorTab:t?`fleet`:e.inspectorTab,...t?{dockSection:null}:{}})),setAgentsMonitorOpen:t=>e(e=>({agentsMonitorOpen:!1,inspectorOpen:t?!0:e.inspectorTab!==`agents`&&e.inspectorOpen,inspectorTab:t?`agents`:e.inspectorTab,...t?{dockSection:null}:{}})),setInspectorOpen:t=>e({inspectorOpen:t,...t?{dockSection:null}:{}}),setInspectorTab:t=>e({inspectorTab:t}),setInspectorFocusedAgentId:t=>e({inspectorFocusedAgentId:t}),toggleInspector:()=>e(e=>({inspectorOpen:!e.inspectorOpen,...e.inspectorOpen?{}:{dockSection:null}})),setProcessMonitorOpen:t=>e({processMonitorOpen:t}),setQueuePanelOpen:t=>e({queuePanelOpen:t}),setCronJobsOpen:t=>e({cronJobsOpen:t}),setInspectSession:t=>e({inspectSessionId:t,currentView:`session-inspect`}),clearInspectSession:()=>e({inspectSessionId:null,currentView:`chat`}),setTerminalOpen:t=>e({terminalOpen:t}),toggleTerminal:()=>e(e=>({terminalOpen:!e.terminalOpen})),requestTerminalCreate:()=>e(e=>({terminalCreateNonce:e.terminalCreateNonce+1})),setSettingsActiveTab:t=>e({settingsActiveTab:l(t)}),setScrollPosition:(t,n)=>e(e=>({scrollPositions:{...e.scrollPositions,[t]:n}})),setDraftInput:t=>e({draftInput:t}),setSideContextBreakdownOpen:t=>e({sideContextBreakdownOpen:t}),setSkillsState:t=>e({skillsState:t}),setSelectedMailMessage:t=>e({selectedMailMessage:t})}),{name:`wrongstack-ui`,version:5,migrate:(e,t)=>{let n=e??{};return n.activeActivity=r(n.activeActivity),typeof n.sidebarWidth==`number`&&(n.sidebarWidth=Math.max(240,Math.min(560,n.sidebarWidth))),t<2&&(delete n.fleetDrawerOpen,delete n.agentsDrawerOpen),`currentView`in n&&(n.currentView=a(n.currentView)),`dockSection`in n&&(n.dockSection=s(n.dockSection)),`settingsActiveTab`in n&&(n.settingsActiveTab=l(n.settingsActiveTab)),n},merge:(e,t)=>{let n={...t,...e??{}};return n.activeActivity=r(n.activeActivity),n.currentView=a(n.currentView),n.dockSection=s(n.dockSection),n.settingsActiveTab=l(n.settingsActiveTab),n.sidebarWidth=Math.max(240,Math.min(560,n.sidebarWidth)),u()?{...n,...d({sidebarOpen:!1})}:n},partialize:e=>({sidebarOpen:e.sidebarOpen,activeActivity:e.activeActivity,sidebarWidth:e.sidebarWidth,promptHistory:e.promptHistory,pinnedIds:e.pinnedIds,compactMode:e.compactMode,favoriteSessionIds:e.favoriteSessionIds,sessionNicknames:e.sessionNicknames,fileExplorerWidth:e.fileExplorerWidth,refineEnabled:e.refineEnabled,hiddenChips:e.hiddenChips,workDashboardTab:e.workDashboardTab,inspectorOpen:e.inspectorOpen,inspectorTab:e.inspectorTab,skillsState:e.skillsState,currentView:e.currentView,dockSection:e.dockSection,settingsActiveTab:e.settingsActiveTab,scrollPositions:e.scrollPositions,draftInput:e.draftInput})}));function p(e={}){f.setState(d(e))}export{f as n,p as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,n,r,t as i}from"./chat-store-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,n,r,t as i}from"./chat-store-CBJ1gc8n.js";import{Ba as a,Pa as o,Ra as s}from"./vendor-GiKfK4Iw.js";import{t as c}from"./i18n-BvFgJYE2.js";import{a as l,c as u,i as d,l as f,o as p,s as m,t as h}from"./ws-client-CGEB75Dy.js";import{t as g}from"./session-store-Ce4Dck2K.js";import{i as _,n as v}from"./codemap-activity-store-D67-genN.js";import{F as y,I as b,P as ee,T as x,_ as S,a as te,b as ne,c as re,f as ie,g as ae,h as oe,i as C,j as w,l as T,o as se,p as ce,r as E,s as D,t as O,u as k,v as le,y as ue}from"./stores-BATHCuMN.js";import{r as A}from"./mailbox-store-CKpkM0H1.js";import{n as j,t as de}from"./ui-store-BGNdg1e4.js";import{n as fe,o as pe}from"./view-navigation-FdnvQSOv.js";import{t as me}from"./codemap-index-store-ByAYIzQA.js";import{n as M}from"./Toaster-D76T-Ld4.js";var N=e(a(),1);function he(e,t){if(t)return!0;try{return new URLSearchParams(e).get(`shell`)===`desktop`}catch{return!1}}function P(){return typeof window>`u`?!1:he(window.location.search,!!window.wrongstackDesktopHost)}function F(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function I(e,t=``){return typeof e==`string`?e:t}function L(e,t=0){return typeof e==`number`&&Number.isFinite(e)?e:t}function ge(e){let t=F(e.payload);if(!t)return null;switch(e.type){case`provider.thinking_delta`:{let e=I(t.text);return e?{kind:`thinking-delta`,text:e}:null}case`provider.text_delta`:{let e=I(t.text);return e?{kind:`text-delta`,text:e,messageId:I(t.messageId)}:null}case`provider.response`:return{kind:`response`,content:t.content,stopReason:I(t.stopReason)};case`run.result`:return{kind:`run-result`,status:I(t.status),iterations:L(t.iterations,1),...typeof t.finalText==`string`?{finalText:t.finalText}:{}};case`error`:return{kind:`error`,message:I(t.message,`Run failed`)};default:return null}}function R(e){let t=F(e.payload);if(!t)return null;if(e.type===`tool.started`){let e=I(t.name,`tool`);return{kind:`started`,id:I(t.id,e),name:e,input:t.input,messageId:I(t.messageId)}}if(e.type===`tool.progress`){let e=F(t.event);return{kind:`progress`,id:I(t.id),name:I(t.name,`tool`),eventType:I(e?.type),text:I(e?.text).trim()}}return e.type===`tool.executed`?{kind:`executed`,id:I(t.id),name:I(t.name),ok:t.ok!==!1,durationMs:L(t.durationMs),...typeof t.output==`string`?{output:t.output}:{},...Array.isArray(t.sage)?{sage:t.sage.filter(e=>typeof e==`string`)}:{}}:null}function z(e){if(!(typeof e!=`number`||!Number.isFinite(e)))return e}function _e(e){return typeof e==`string`&&e.length>0?e:void 0}function ve(e){let t=F(e.payload);if(!t)return null;switch(e.type){case`fleet.concurrency_update`:return{kind:`concurrency`,active:L(t.fleetConcurrency),maximum:L(t.fleetConcurrencyMax),maxSpawns:z(t.maxSpawns),usedSpawns:z(t.usedSpawns),remainingSpawns:z(t.remainingSpawns),maxSpawnsSource:_e(t.maxSpawnsSource),maxConcurrentSource:_e(t.maxConcurrentSource),effectiveSource:_e(t.effectiveSource),checkpointMaxSpawns:z(t.checkpointMaxSpawns),ceilingMismatch:t.ceilingMismatch===!0||void 0};case`client.status_update`:return{kind:`client-status`,status:t};case`sessions.status_update`:return{kind:`sessions`,sessions:Array.isArray(t.sessions)?t.sessions:[]};case`coordinator.stats`:return{kind:`coordinator`,agents:Array.isArray(t.subagentStatuses)?t.subagentStatuses.filter(e=>F(e)!==null):[]};default:return null}}function ye(e){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
|
|
2
2
|
<rect width="64" height="64" fill="#121210" />
|
|
3
3
|
<path fill="#FD9F02" d="M5 27h10v10H5zM27 27h10v10H27zM38 27h10v10H38zM49 27h10v10H49z" />
|
|
4
4
|
<path fill="#FE2E5F" d="M16 32h10v10H16z" />
|
|
@@ -12,7 +12,7 @@ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,n,r,t as i}from
|
|
|
12
12
|
`:``)+c.text;continue}if(c.type===`tool_use`){o(e,a,i),a=``;let t=String(c.id??``),s={id:yn(n.length),role:`tool`,content:``,toolName:String(c.name??`tool`),toolInput:c.input,toolUseId:t,timestamp:i};n.push(s),t&&r.set(t,s);continue}if(c.type===`tool_result`){let e=String(c.tool_use_id??``),t=r.get(e);t&&(t.toolResult=xn(c.content),t.isError=!!c.is_error)}}o(e,a,i),e===`assistant`&&s.length>0&&l(s.join(`
|
|
13
13
|
|
|
14
14
|
`),i)}for(;a<t.length;)s(t[a]),a+=1;return n}var Tn=new Set;function En(e,t=140){return e.length>t?`${e.slice(0,t-1)}…`:e}function Dn(){f.flush(`__thinking__`);let e=g.getState().iteration;i.getState().flushThinkingLog(Math.max(1,e?.index??1)),i.getState().clearThinking()}function On(e){let t=u(`session.start`,e.payload);t&&(m.getState().pushEvent(t),m.getState().setActive(!0));let n=e.payload,r=Cn(n.provider),a=Cn(n.model),o=g.getState().session?.id,s=!o||o!==n.sessionId||n.reset;if((n.appVersion||n.latestVersion)&&g.getState().setUpdateInfo({appVersion:String(n.appVersion??``),latestVersion:String(n.latestVersion??``),updateAvailable:!!n.updateAvailable}),Array.isArray(n.providerStatuses)&&k.getState().hydrate(n.providerStatuses.map(e=>({providerId:e.providerId,model:e.model,state:e.state,reason:e.lastErrorKind??e.state,updatedAt:e.lastFailureAt??Date.now(),stateExpiresAt:e.stateExpiresAt??void 0}))),n.needsSetup&&fe(`setup`),s?(Y.getState().clear(),g.getState().startSession({id:n.sessionId,startedAt:Date.now(),model:a,provider:r})):g.getState().setSession({id:n.sessionId,startedAt:g.getState().session?.startedAt??Date.now(),model:a,provider:r}),g.getState().setEnv({maxContext:n.maxContext,projectRoot:n.projectRoot??``,projectName:n.projectName,cwd:n.cwd,mode:n.mode,contextMode:n.contextMode,inputCost:n.inputCost,outputCost:n.outputCost,cacheReadCost:n.cacheReadCost}),b.getState().setConfig({provider:r,model:a}),s){!n.needsSetup&&P()&&!bn()&&de({sidebarOpen:!1}),f.dropAll(),i.getState().clearMessages(),i.getState().setBoundSessionId(n.sessionId),j.getState().setSearchActiveMessageId(null),i.getState().setLoading(!1),g.setState({todos:[]}),V(`ready`);let e=x.getState();if(n.clearedSessionId){let t=new Map;for(let[r,i]of e.agents)i.sessionId!==n.clearedSessionId&&t.set(r,i);x.setState({agents:t})}else e.clear();w.getState().setTreeLoading(!0),h().send({type:`files.tree`,payload:{path:g.getState().cwd}})}let c=n.replayMessages,l=n.replayMarkers??[];if(c&&c.length>0){let e=i.getState();(s||e.messages.length===0||e.boundSessionId!==n.sessionId||e.isLoading)&&(e.setMessages(wn(c,l)),e.setBoundSessionId(n.sessionId))}if(c){let e=n.replayUsage;if(e){let t=g.getState(),n=e.input??0,r=e.output??0,i=e.cacheRead??0,a=e.cacheWrite??0;g.setState({totalTokens:{input:n,output:r,cacheRead:i,cacheWrite:a},cost:(n*t.inputCost+r*t.outputCost+i*t.cacheReadCost)/1e6})}let t=n.lastInputTokens;typeof t==`number`&&t>0&&g.setState({lastInputTokens:t}),s&&!n.needsSetup&&(bn()||(P()?de({sidebarOpen:!1}):j.getState().currentView!==`chat`&&pe(`chat`))),_n()&&j.getState().setSidebarOpen(!1)}}function kn(e){if(!d(e))return;let t=e.payload,n=e=>e.toLocaleString(),r=[...t.tools.breakdown].sort((e,t)=>t.tokens-e.tokens).slice(0,8),a=[...t.messages.breakdown].sort((e,t)=>t.tokens-e.tokens).slice(0,8);i.getState().addMessage({role:`assistant`,content:[`📊 **Context breakdown** (heuristic — 4 chars/token)`,``,`**Total estimate:** ${n(t.total)} tokens`,`• System prompt: ${n(t.systemPrompt)}`,`• Tool schemas: ${n(t.tools.total)} (${t.tools.count} tools)`,`• Messages: ${n(t.messages.total)} (${t.messages.count} messages)`,``,`**Top tool schemas:**`,...r.map(e=>` · ${e.name}: ${n(e.tokens)}`),``,`**Top messages:**`,...a.map(e=>` · #${e.index} ${e.role}: ${n(e.tokens)} — ${e.preview||`(empty)`}`)].join(`
|
|
15
|
-
`)})}function An(e){let t=e.payload;t.success?M.success(t.message):M.error(t.message),h(b.getState().wsUrl).listSavedProviders()}function jn(e){let t=e.payload;if(!t.success||!t.provider||!t.model)return;b.getState().setProvider(t.provider),b.getState().setModel(t.model);let n=t.previousProvider&&t.previousModel?`${t.previousProvider} / ${t.previousModel}`:
|
|
15
|
+
`)})}function An(e){let t=e.payload;t.success?M.success(t.message):M.error(t.message),h(b.getState().wsUrl).listSavedProviders()}function jn(e){let t=e.payload;if(!t.success||!t.provider||!t.model)return;b.getState().setProvider(t.provider),b.getState().setModel(t.model);let n=t.previousProvider&&t.previousModel?`${t.previousProvider} / ${t.previousModel}`:s.t(`settings:toast.previousModel`),r=`${t.provider} / ${t.model}`;i.getState().addMessage({role:`system`,content:s.t(t.runActive?`settings:toast.modelSwitchedRunActive`:`settings:toast.modelSwitchedNextRequest`,{from:n,to:r})})}function Mn(e){if(!d(e))return;l(e);let t=e.payload,n=t.reductions.length?t.reductions.map(e=>`${e.phase}: ${e.saved}`).join(`, `):`no-op`;t.repaired&&(n+=`; repaired ${t.repaired.removedToolUses?.length??0} tool_use, ${t.repaired.removedToolResults?.length??0} tool_result, ${t.repaired.removedMessages} empty messages`),i.getState().addMessage({role:`system`,content:`🗜️ Context compacted: ${t.before} → ${t.after} tokens (saved ~${t.saved}). ${n}`}),g.setState({lastInputTokens:t.after})}function Nn(e){if(!d(e))return;l(e);let t=e.payload,n,r;t.budget&&t.budget.availableInputTokens>0?(n=Math.min(100,Math.max(0,Math.round(t.budget.load*100))),r=`input budget`):(n=t.maxContext>0?Math.min(100,Math.max(0,Math.round(t.tokens/t.maxContext*100))):0,r=`context`),i.getState().addMessage({role:`assistant`,content:`Compaction failed at ${t.level} (${n}% ${r}): ${t.message}`,isError:t.fatal}),M.error(`Compaction failed: ${t.message}`)}function Pn(e){if(!d(e))return;l(e);let t=e.payload,r=Sn(t.content),a=t.usage,o=(a.input??0)+(a.cacheWrite??0)-(a.cacheRead??0);o>0&&g.setState({lastInputTokens:o}),g.getState().updateUsage(t.usage);let{inputCost:s,outputCost:c,cacheReadCost:u}=g.getState(),p=(t.usage.input*s+t.usage.output*c+(t.usage.cacheRead??0)*u)/1e6;p>0&&g.getState().addCost(p);let m=n(t.stopReason);m&&i.getState().setLoading(!1);let h=i.getState().currentAssistantMessageId;if(h){f.flush(h);let e=i.getState().messages.find(e=>e.id===h)?.content??``;r.trim()&&(e.trim()?r.startsWith(e)&&r.length>e.length&&i.getState().updateMessage(h,{content:r}):i.getState().updateMessage(h,{content:r})),i.getState().finalizeMessage(h,{final:m}),t.usage.output>0&&i.getState().updateMessage(h,{usage:t.usage})}else if(r.trim()){let e=i.getState().addMessage({role:`assistant`,content:r,usage:t.usage.output>0?t.usage:void 0});i.getState().finalizeMessage(e,{final:m})}i.getState().setCurrentAssistantMessage(null),f.flush(`__thinking__`),i.getState().clearThinking()}function Fn(e){if(!d(e))return;l(e);let t=e.payload;f.flush(`__thinking__`),i.getState().flushThinkingLog(t.index),i.getState().clearThinking();let n=g.getState().iteration;n&&g.getState().setIteration({index:t.index,max:n.max})}function In(e){if(!d(e))return;let t=e.payload;i.getState().addMessage({role:`assistant`,content:`Iteration limit reached: ${t.currentIterations}/${t.currentLimit}.`,isError:!0}),M.warn(`Iteration limit reached (${t.currentIterations}/${t.currentLimit})`)}function Ln(e){if(!d(e))return;let t=e.payload,n=Math.max(0,Math.round(t.delayMs/100)/10);M.warn(`${t.providerId} retry ${t.attempt} after ${n}s (${t.status})`)}function Rn(e){if(!d(e))return;let t=e.payload;i.getState().addMessage({role:`assistant`,content:[`Provider error from \`${t.providerId}\` (${t.status}).`,t.description,t.retryable?`_Retryable; WrongStack may recover automatically._`:``].filter(Boolean).join(`
|
|
16
16
|
|
|
17
17
|
`),isError:!0}),M.error(`${t.providerId} provider error (${t.status})`)}function zn(e){if(!d(e))return;let t=e.payload,n=`${t.from.providerId}/${t.from.model}`,r=`${t.to.providerId}/${t.to.model}`;i.getState().addMessage({role:`assistant`,content:`Provider fallback: \`${n}\` returned ${t.status}; switching to \`${r}\`${t.providerSwitched?` with provider change`:``}.`}),M.warn(`Fallback to ${r}`);let a=T.getState().pending;a&&a.from.providerId===t.from.providerId&&a.from.model===t.from.model&&(typeof t.requestId==`string`&&t.requestId.length>0&&a.requestId!==t.requestId||T.getState().clear())}function Bn(e){if(!d(e))return;let t=e.payload;T.getState().setPending({requestId:t.requestId,from:t.from,status:t.status,candidates:t.candidates,autoSwitchSeconds:t.autoSwitchSeconds,timestamp:Date.now()})}function Vn(e){let t=e.payload;k.getState().update({providerId:t.providerId,model:t.model,state:t.newState,reason:t.reason,updatedAt:t.timestamp,stateExpiresAt:t.stateExpiresAt});let n=`${t.providerId}/${t.model}`;t.newState===`blocked`&&t.oldState!==`blocked`?M.warn(`${n} entered the limit-reset waiting room`):t.newState===`healthy`&&t.oldState!==`healthy`&&M.success(`${n} recovered and rejoined model routing`)}function Hn(e){let t=e.payload;if(t&&typeof t==`object`&&`error`in t){k.getState().setError(`Provider status tracking not available`);return}k.getState().applySnapshot(t)}function Un(e){if(!d(e))return;let t=e.payload;i.getState().addMessage({role:`assistant`,content:`Waiting room skipped \`${t.providerId}/${t.model}\`. ${t.lastError}`})}function Wn(e){if(!d(e))return;l(e);let t=e.payload;M.warn(`Provider stream event skipped: ${t.eventType}`),i.getState().addMessage({role:`assistant`,content:`Provider stream warning (${t.eventType}): ${t.message}`,isError:!0})}function Gn(e){if(!d(e))return;l(e);let t=e.payload,n=t.tools||t.kind||`assistant response`;if(t.action===`steer`){M.info(`Possible repetition noticed for ${n}; changing approach.`);return}i.getState().addMessage({role:`assistant`,content:`Loop guard stopped the turn: ${n} made no progress ${t.repeatCount} time(s) (iteration ${t.iteration+1}).`,isError:!0}),M.warn(`Loop guard stopped the turn`)}function Kn(e){if(!d(e))return;l(e);let t=e.payload,n=En(t.task,180);i.getState().addMessage({role:`assistant`,content:`Delegating to \`${t.target}\`: ${n}`}),x.getState().pushAgentTimelineEntry({subagentId:t.target,agentName:t.target,content:n,kind:`status`,iteration:0,ts:new Date().toISOString(),status:`delegating`})}function qn(e){if(!d(e))return;l(e);let t=e.payload,n=Math.max(0,Math.round(t.durationMs/100)/10),r=typeof t.costUsd==`number`&&t.costUsd>0?` · $${t.costUsd.toFixed(4)}`:``,a=`${t.iterations} iteration(s), ${t.toolCalls} tool call(s), ${n}s${r}`;i.getState().addMessage({role:`assistant`,content:[`Delegate ${t.ok?`completed`:`failed`} for \`${t.target}\`${t.status?` (${t.status})`:``}.`,t.summary,a].join(`
|
|
18
18
|
`),isError:!t.ok}),x.getState().pushAgentTimelineEntry({subagentId:t.subagentId??t.target,agentName:t.target,content:t.summary,kind:t.ok?`status`:`error`,iteration:t.iterations,ts:new Date().toISOString(),status:t.status??(t.ok?`completed`:`failed`)}),t.ok||M.warn(`Delegate failed: ${t.target}`)}function Jn(e){if(!d(e))return;let t=e.payload,n=`${t.tool}: ${t.pattern}`;t.decision===`always`?M.success(`Always allowed ${n}`):M.warn(`Denied ${n}`)}function Yn(e){if(!d(e))return;l(e);let t=e.payload,n=t.removedToolUses.length+t.removedToolResults.length+t.removedMessages,r=t.beforeMessages!==void 0&&t.afterMessages!==void 0?` Messages: ${t.beforeMessages} -> ${t.afterMessages}.`:``;i.getState().addMessage({role:`assistant`,content:`Context repaired: removed ${n} orphan protocol item(s).${r} tool_use ${t.removedToolUses.length}, tool_result ${t.removedToolResults.length}.`})}function Xn(e){if(!d(e))return;l(e);let t=e.payload;g.getState().setContextUsage(t.tokens,t.maxContext)}function Zn(e){if(!d(e))return;let t=e.payload,n=g.getState();n.setEnv({maxContext:t.maxContext}),t.source===`provider`&&t.decreased===!0&&typeof t.previousMaxContext==`number`&&t.previousMaxContext>t.maxContext?n.setContextLimitWarning({previousMaxContext:t.previousMaxContext,maxContext:t.maxContext,providerId:t.providerId??n.session?.provider??`provider`,modelId:t.modelId??n.session?.model??`model`}):(t.decreased===!1||t.source===`configured`)&&n.setContextLimitWarning(null)}function Qn(e){if(!d(e))return;let t=e.payload;g.getState().setContextUsage(t.used,t.limit);let n=t.limit>0?Math.round(t.used/t.limit*100):0;M.warn(`Token threshold reached (${n}%)`)}function $n(e){if(!d(e))return;let t=e.payload.model||`<unknown>`;Tn.has(t)||(Tn.add(t),M.warn(`Cost estimate unavailable for ${t}`))}function er(e){if(!d(e))return;let t=e.payload;i.getState().addMessage({role:`assistant`,content:`Session ${t.sessionId} is damaged: ${t.detail}`,isError:!0}),M.error(`Session damage detected`)}function tr(e){if(!d(e))return;let t=e.payload;i.getState().addMessage({role:`assistant`,content:`Session rewound to prompt #${t.toPromptIndex}. Removed ${t.removedEvents} event(s); reverted ${t.revertedFiles.length} file(s).`}),M.info(`Session rewound`)}function nr(e){if(!d(e))return;let t=e.payload;M.success(`Checkpoint #${t.promptIndex} written (${t.fileCount} file(s))`)}function rr(e){if(!d(e))return;let t=e.payload;m.getState().pushEvent({id:`inflight_${Date.now()}`,kind:`session:start`,timestamp:Date.now(),source:`session`,target:`leader`,label:`In-flight: ${t.context}`,magnitude:1,data:t,raw:e.payload,flowGroup:`session`})}function ir(e){d(e)&&e.payload.reason===`recovered`&&M.info(`Recovered previous in-flight operation`)}function ar(){typeof document<`u`&&document.dispatchEvent(new CustomEvent(`chat:session-end`))}function or(e){if(!d(e))return;let t=e.payload;g.getState().setContextModes(t.modes.map(e=>({id:e.id,name:e.name,description:e.description,thresholds:e.thresholds,preserveK:e.preserveK,eliseThreshold:e.eliseThreshold,custom:e.custom}))),g.getState().setEnv({contextMode:t.activeId})}function sr(e){if(!d(e))return;let t=e.payload;g.getState().setEnv({contextMode:t.id})}function cr(e){let t=e.payload;oe.getState().setEntries(t.sessions??[],t.error??null)}function lr(e){if(!d(e))return;let t=e.payload;Dn(),i.getState().addMessage({role:`assistant`,content:`[${t.phase}] ${t.message}`,isError:!0}),i.getState().setLoading(!1)}var ur={"context.debug":kn,"key.operation_result":An,"model.switch_result":jn,"context.compacted":Mn,"compaction.failed":Nn,"provider.response":Pn,"iteration.completed":Fn,"iteration.limit_reached":In,"provider.retry":Ln,"provider.error":Rn,"provider.fallback":zn,"provider.fallback_pending":Bn,"provider.status_changed":Vn,"provider.active_blocked":Un,"provider.stream_error":Wn,"tool.loop_detected":Gn,"delegate.started":Kn,"delegate.completed":qn,"trust.persisted":Jn,"context.repaired":Yn,"ctx.pct":Xn,"ctx.max_context":Zn,"token.threshold":Qn,"token.cost_estimate_unavailable":$n,"session.end":ar,"session.damaged":er,"session.rewound":tr,"checkpoint.written":nr,"in_flight.started":rr,"in_flight.ended":ir,"context.modes.list":or,"context.mode.changed":sr,"sessions.list":cr,"provider.status.snapshot":Hn,error:lr};function dr(e){let t=e.payload;i.getState().addMessage({role:`assistant`,content:[`🛠️ **Registered tools** (${t.tools.length})`,``,...t.tools.map(e=>`• \`${e.name}\`${e.params.length?` (${e.params.join(`, `)})`:``} — ${e.description||`_no description_`}`)].join(`
|
|
@@ -26,4 +26,4 @@ _empty — nothing remembered yet_`})}function pr(e){let t=e.payload,n=i.getStat
|
|
|
26
26
|
_disabled (config.features.skills = false)_`});return}let n=[`🎯 **Skills** (${t.skills.length})`,``,...t.skills.length===0?[`_none registered_`]:t.skills.map(e=>`• \`${e.name}\`${e.version?` v${e.version}`:``} _(${e.source})_ — ${e.description||e.trigger||`_no description_`}`)];t.error&&n.push(``,`⚠ ${t.error}`),i.getState().addMessage({role:`assistant`,content:n.join(`
|
|
27
27
|
`)})}function Sr(e){if(!d(e))return;let t=e.payload;g.getState().setDroppedTools((t.maxTools??0)>0?t.droppedTools??0:0),i.getState().addMessage({role:`assistant`,content:[`🩺 **Runtime diagnostics**`,``,`**Provider:** \`${t.provider}\` / \`${t.model}\``,`**Mode:** \`${t.mode}\``,`**Session:** \`${t.sessionId}\``,`**CWD:** \`${t.cwd}\``,``,`**Tools:** ${t.tools.count}`,`**Messages:** ${t.messages} · **Todos:** ${t.todos}`,`**Usage:** ${t.usage.input.toLocaleString()} in · ${t.usage.output.toLocaleString()} out${t.usage.cacheRead?` · ${t.usage.cacheRead.toLocaleString()} cache`:``}`,``,`**Features:** memory=${t.features.memory?`✓`:`✗`} · skills=${t.features.skills?`✓`:`✗`} · modelsRegistry=${t.features.modelsRegistry?`✓`:`✗`}`].join(`
|
|
28
28
|
`)})}function Cr(e){if(!d(e))return;let t=e.payload,n=Math.floor(t.elapsedMs/1e3),r=n<60?`${n}s`:n<3600?`${Math.floor(n/60)}m ${n%60}s`:`${Math.floor(n/3600)}h ${Math.floor(n%3600/60)}m`;i.getState().addMessage({role:`assistant`,content:[`📈 **Session stats**`,``,`**Session:** \`${t.sessionId}\``,`**Provider/Model:** \`${t.provider}\` / \`${t.model}\``,`**Elapsed:** ${r}`,``,`**Usage:** ${t.usage.input.toLocaleString()} in · ${t.usage.output.toLocaleString()} out`,...t.cache&&t.cache.readTokens>0?[`**Cache:** ${t.cache.readTokens.toLocaleString()} read · ${t.cache.writeTokens.toLocaleString()} write · hit ratio ${(t.cache.hitRatio*100).toFixed(1)}%`]:[],`**Cost:** ${t.cost.toFixed(4)}`,``,`**Messages:** ${t.messages} · **Files read:** ${t.readFiles} · **Tools available:** ${t.tools}`,...t.sideEffectCount?[`**Side effects:** ⚠ ${t.sideEffectCount}`]:[]].join(`
|
|
29
|
-
`)})}function wr(e){if(!d(e))return;let t=e.payload;g.getState().setTodos(t.todos??[])}function Tr(e){let t=e.payload;g.getState().setModes(t.modes.map(e=>({id:e.id,name:e.name,description:e.description}))),g.getState().setEnv({mode:t.activeId})}function $(e){ce.getState().handleResult(e.type,e.payload)}var Er={...Ve,...ur,...Tt,...ft,...sn,...Qe,...hn,"config.doctor.result":pr,"session.start":e=>{On(e),K()},"specs.list":e=>{let t=e.payload;te.getState().setSpecs(t.specs??[])},"specs.detail":e=>{te.getState().setDetail(e.payload)},"sdd.board.snapshot":e=>{re.getState().setSnapshot(e.payload)},"sdd.board.list":e=>{let t=e.payload;re.getState().setBoards(t.boards??[])},"sdd.board.lifecycle_result":e=>{let t=e.payload,n=re.getState();n.setLifecycleResult({...t,at:Date.now()}),n.setDestroying(!1),t.op===`destroy`&&t.ok&&D.getState().reset()},"sdd.spec.snapshot":e=>{D.getState().setSnapshot(e.payload)},"sdd.spec.agent_text":e=>{D.getState().setAgentText(e.payload.text??``)},"sdd.spec.error":e=>{D.getState().setError(e.payload.message??`Error`)},"sdd.run.started":e=>{D.getState().setStartedRunId(e.payload.runId??null)},"goal.assess.result":e=>{let t=e.payload;le.getState().setResult({realistic:t.realistic,durationClaimed:t.durationClaimed,explanation:t.explanation,recommendedDuration:t.recommendedDuration,concerns:t.concerns,parseFailed:t.parseFailed,parseError:t.parseError,reqSeq:t.reqSeq??0})},"kanban.list":$,"kanban.get":$,"kanban.health":$,"kanban.create":$,"kanban.duplicate":$,"kanban.update":$,"kanban.delete":$,"kanban.generate":$,"kanban.snapshot":$,"kanban.taskgraph.export":$,"kanban.taskgraph.sync":$,"kanban.task.ready":$,"kanban.task.add":$,"kanban.task.split":$,"kanban.task.merge":$,"kanban.task.update":$,"kanban.task.move":$,"kanban.task.copy":$,"kanban.task.transfer":$,"kanban.task.transition":$,"kanban.task.chain":$,"kanban.task.chain.get":$,"kanban.task.claim":$,"kanban.task.release":$,"kanban.task.metric.add":$,"kanban.task.metric.update":$,"kanban.task.check.add":$,"kanban.task.check.update":$,"kanban.task.note.add":$,"kanban.task.assign":$,"kanban.task.dispatch":$,"kanban.task.remove":$,"kanban.task.get":$,"kanban.column.add":$,"kanban.column.remove":$,"kanban.run.start":$,"kanban.supervisor.status":$,"kanban.supervisor.audit":$,"kanban.task.verify":$,"kanban.task.verification_started":$,"kanban.task.verification_completed":$,"kanban.decomposition.approve":$,"kanban.decomposition.reject":$,"kanban.decomposition.resolved":$,"kanban.decomposition.applied":$,"tools.list":dr,"memory.list":fr,"memory.sage.list":mr,"memory.sage.get":hr,"memory.sage.update":gr,"memory.sage.remember":_r,"memory.sage.recover":vr,"memory.sage.candidateResolve":yr,"memory.sage.backfillRecoverable":br,"skills.list":xr,"diag.get":Sr,"stats.get":Cr,side_effects:e=>{if(!d(e))return;let t=e.payload;se.getState().setSideEffects(t.sideEffects??[])},"todos.updated":wr,"todos.cleared":e=>{d(e)&&g.getState().setTodos([])},"agent.timeline.message":e=>{if(!d(e))return;let t=e.payload;x.getState().pushAgentTimelineEntry({subagentId:t.subagentId,agentName:t.agentName,content:t.content,kind:t.kind,iteration:t.iteration,ts:t.ts,toolName:t.toolName,toolOk:t.toolOk,costUsd:t.costUsd})},"agent.status_changed":e=>{if(!d(e))return;let t=e.payload;x.getState().pushAgentTimelineEntry({subagentId:t.subagentId,agentName:t.agentName,content:t.summary??t.status,kind:`status`,iteration:0,ts:t.ts,status:t.status})},"tasks.updated":e=>{},"plan.updated":e=>{},"modes.list":Tr,"session.checkpoints":e=>{},"process.list":e=>{},"projects.list":e=>{},"projects.added":e=>{},"projects.selected":e=>{},"tool.disabled":e=>{},"tool.enabled":e=>{},"provider.response":e=>{Pn(e)},"tool.progress":e=>{Ke(e);let t=v(e),n=_.getState();for(let e of t)n.recordFileEvent(e)},"tool.started":e=>{Ge(e);let t=v(e);t.length>0&&_.getState().startActivities(t)},"tool.executed":e=>{qe(e);let t=e.payload;t.id&&_.getState().finishTool(t.id,{durationMs:t.durationMs,ok:t.ok!==!1})},"codemap.tool_started":e=>{l(e);let t=v(e);t.length>0&&_.getState().startActivities(t)},"codemap.tool_executed":e=>{l(e);let t=e.payload;t.id&&_.getState().finishTool(t.id,{durationMs:t.durationMs,ok:t.ok!==!1})},"codemap.file_event":e=>{let t=v(e),n=_.getState();for(let e of t)n.recordFileEvent(e)},"codemap.index_updated":e=>{let t=e.payload;me.getState().notifyIndexUpdated(t?.at)},"file.saved":e=>{let t=v(e);if(t.length>0){let e=_.getState();for(let n of t)e.recordFileEvent(n)}},"memory.event":e=>{Jt(e);let t=v(e);if(t.length>0){let e=_.getState();for(let n of t)e.recordActivity(n)}}};function Dr(e){let t=[];for(let[n,r]of Object.entries(Er))r&&t.push(e.on(n,t=>{e.consumeSuppressedChatEcho(n)||r(t)}));return()=>{for(let e of t)e()}}function Or(){let{autoConnect:e,wsUrl:t}=b(),n=b(e=>e.setWsStatus);(0,N.useEffect)(()=>{if(!e)return;Ce();let r=h(t),i=!1,a=r.onStatus(e=>{i||n(e)});r.connect().then(()=>{i||r.getPrefs()}).catch(e=>{i||console.warn(JSON.stringify({level:`warn`,event:`webui.ws_connection_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))});let o=Dr(r);return()=>{i=!0,o(),a()}},[e,t,n])}function kr(){let{wsUrl:e}=b(),t=h(e),n=(0,N.useCallback)((e,n,r=!1)=>t.isConnected?r?t.sendMessage(e,n,!0):t.sendMessage(e,n):null,[t]),r=(0,N.useCallback)(()=>t.sendAbort(),[t]),i=(0,N.useCallback)(e=>t.adviseTopic(e),[t]),a=(0,N.useCallback)(e=>t.sendMailboxMessage(e),[t]),{hideConfirm:o}=j(),s=(0,N.useCallback)((e,n)=>{t.sendConfirm(e,n),o()},[t,o]),c=(0,N.useCallback)((e,n)=>t.switchModel(e,n),[t]),l=(0,N.useCallback)(()=>t.listProviders(),[t]),u=(0,N.useCallback)(e=>t.listProviderModels(e),[t]),d=(0,N.useCallback)(()=>t.listSavedProviders(),[t]),f=(0,N.useCallback)((e,n,r)=>t.addKey(e,n,r),[t]),p=(0,N.useCallback)((e,n,r)=>t.updateKey(e,n,r),[t]),m=(0,N.useCallback)((e,n)=>t.deleteKey(e,n),[t]),g=(0,N.useCallback)((e,n)=>t.setActiveKey(e,n),[t]),_=(0,N.useCallback)((e,n,r,i,a,o)=>t.addProvider(e,n,r,i,a,o),[t]),v=(0,N.useCallback)(e=>t.removeProvider(e),[t]),y=(0,N.useCallback)(e=>{oe.getState().setLoading(!0),t.listSessions(e)},[t]),ee=(0,N.useCallback)(e=>t.deleteSession(e),[t]),x=(0,N.useCallback)((e,n)=>{oe.getState().updateEntryName(e,n),t.renameSession(e,n)},[t]),S=(0,N.useCallback)(e=>t.resumeSessionById(e),[t]),te=(0,N.useCallback)(e=>t.inspectSession(e),[t]),ne=(0,N.useCallback)(()=>t.saveSession(),[t]),re=(0,N.useCallback)(e=>t.listTools(e),[t]),ie=(0,N.useCallback)(e=>t.listMemory(e),[t]),ae=(0,N.useCallback)(e=>t.listSageMemories(e),[t]),C=(0,N.useCallback)((e,n)=>t.listSageMemoriesPage(e,n),[t]),w=(0,N.useCallback)((e,n)=>t.getSage(e,n),[t]),T=(0,N.useCallback)((e,n,r)=>t.getSageGraph(e,n,r),[t]),se=(0,N.useCallback)((e,n,r)=>t.updateSage(e,n,r),[t]),ce=(0,N.useCallback)((e,n)=>t.deleteSage(e,n),[t]),E=(0,N.useCallback)((e,n)=>t.rememberSage(e,n),[t]),D=(0,N.useCallback)((e,n)=>t.findMemoriesForFile(e,n),[t]),O=(0,N.useCallback)((e,n)=>t.recoverSage(e,n),[t]),k=(0,N.useCallback)((e,n)=>t.resolveMemoryCandidate(e,n),[t]),le=(0,N.useCallback)((e,n)=>t.backfillRecoverable(e,n),[t]),ue=(0,N.useCallback)(e=>t.listSkills(e),[t]),A=(0,N.useCallback)(e=>t.getDiag(e),[t]),de=(0,N.useCallback)(e=>t.getStats(e),[t]),fe=(0,N.useCallback)(()=>t.getPlan(),[t]),pe=(0,N.useCallback)(()=>t.listModes(),[t]),me=(0,N.useCallback)(e=>t.switchMode(e),[t]),M=(0,N.useCallback)(()=>t.listContextModes(),[t]),he=(0,N.useCallback)(e=>t.switchContextMode(e),[t]),P=(0,N.useCallback)(e=>t.createContextMode(e),[t]),F=(0,N.useCallback)((e,n)=>t.updateContextMode(e,n),[t]),I=(0,N.useCallback)(e=>t.deleteContextMode(e),[t]),L=(0,N.useCallback)(()=>t.repairContext(),[t]),ge=(0,N.useCallback)((e,n)=>t.refineModel(e,n),[t]),R=(0,N.useCallback)(e=>t.switchAutonomy(e),[t]),z=(0,N.useCallback)(e=>t.updatePrefs(e),[t]);return{client:t,sendMessage:n,adviseTopic:i,sendAbort:r,sendMailboxMessage:a,sendConfirm:s,switchModel:c,listProviders:l,listProviderModels:u,listSavedProviders:d,addKey:f,updateKey:p,deleteKey:m,setActiveKey:g,addProvider:_,removeProvider:v,listSessions:y,deleteSession:ee,renameSession:x,resumeSession:S,inspectSession:te,saveSession:ne,listTools:re,listMemory:ie,listSageMemories:ae,listSageMemoriesPage:C,getSage:w,getSageGraph:T,updateSage:se,deleteSage:ce,rememberSage:E,findMemoriesForFile:D,recoverSage:O,resolveMemoryCandidate:k,backfillRecoverable:le,listSkills:ue,getDiag:A,getStats:de,getPlan:fe,listModes:pe,switchMode:me,listContextModes:M,switchContextMode:he,createContextMode:P,updateContextMode:F,deleteContextMode:I,repairContext:L,toggleGoalAutonomous:(0,N.useCallback)(e=>{t.send({type:`goal.toggleAutonomous`,payload:{autonomous:e}})},[t]),startGoal:(0,N.useCallback)((e,n,r=!0)=>{t.send({type:`goal.start`,payload:{title:e,phases:n,autonomous:r}})},[t]),pauseGoal:(0,N.useCallback)(()=>{t.send({type:`goal.pause`,payload:{}})},[t]),resumeGoal:(0,N.useCallback)(()=>{t.send({type:`goal.resume`,payload:{}})},[t]),stopGoal:(0,N.useCallback)(()=>{t.send({type:`goal.stop`,payload:{}})},[t]),selectGoal:(0,N.useCallback)(e=>{t.send({type:`goal.selectPhase`,payload:{phaseId:e}})},[t]),switchAutonomy:R,updatePrefs:z,refineModel:ge}}export{Y as a,Pe as c,It as i,Fe as l,Or as n,Le as o,gn as r,H as s,kr as t,P as u};
|
|
29
|
+
`)})}function wr(e){if(!d(e))return;let t=e.payload;g.getState().setTodos(t.todos??[])}function Tr(e){let t=e.payload;g.getState().setModes(t.modes.map(e=>({id:e.id,name:e.name,description:e.description}))),g.getState().setEnv({mode:t.activeId})}function $(e){ce.getState().handleResult(e.type,e.payload)}var Er={...Ve,...ur,...Tt,...ft,...sn,...Qe,...hn,"config.doctor.result":pr,"session.start":e=>{On(e),K()},"specs.list":e=>{let t=e.payload;te.getState().setSpecs(t.specs??[])},"specs.detail":e=>{te.getState().setDetail(e.payload)},"sdd.board.snapshot":e=>{re.getState().setSnapshot(e.payload)},"sdd.board.list":e=>{let t=e.payload;re.getState().setBoards(t.boards??[])},"sdd.board.lifecycle_result":e=>{let t=e.payload,n=re.getState();n.setLifecycleResult({...t,at:Date.now()}),n.setDestroying(!1),t.op===`destroy`&&t.ok&&D.getState().reset()},"sdd.spec.snapshot":e=>{D.getState().setSnapshot(e.payload)},"sdd.spec.agent_text":e=>{D.getState().setAgentText(e.payload.text??``)},"sdd.spec.error":e=>{D.getState().setError(e.payload.message??`Error`)},"sdd.run.started":e=>{D.getState().setStartedRunId(e.payload.runId??null)},"goal.assess.result":e=>{let t=e.payload;le.getState().setResult({realistic:t.realistic,durationClaimed:t.durationClaimed,explanation:t.explanation,recommendedDuration:t.recommendedDuration,concerns:t.concerns,parseFailed:t.parseFailed,parseError:t.parseError,reqSeq:t.reqSeq??0})},"kanban.list":$,"kanban.get":$,"kanban.health":$,"kanban.workbench":$,"kanban.create":$,"kanban.duplicate":$,"kanban.update":$,"kanban.delete":$,"kanban.generate":$,"kanban.snapshot":$,"kanban.taskgraph.export":$,"kanban.taskgraph.sync":$,"kanban.task.ready":$,"kanban.task.add":$,"kanban.task.split":$,"kanban.task.merge":$,"kanban.task.update":$,"kanban.task.move":$,"kanban.task.copy":$,"kanban.task.transfer":$,"kanban.task.transition":$,"kanban.task.chain":$,"kanban.task.chain.get":$,"kanban.task.claim":$,"kanban.task.release":$,"kanban.task.metric.add":$,"kanban.task.metric.update":$,"kanban.task.check.add":$,"kanban.task.check.update":$,"kanban.task.note.add":$,"kanban.task.assign":$,"kanban.task.dispatch":$,"kanban.task.remove":$,"kanban.task.get":$,"kanban.column.add":$,"kanban.column.remove":$,"kanban.run.start":$,"kanban.supervisor.status":$,"kanban.supervisor.audit":$,"kanban.task.verify":$,"kanban.task.verification_started":$,"kanban.task.verification_completed":$,"kanban.decomposition.approve":$,"kanban.decomposition.reject":$,"kanban.decomposition.resolved":$,"kanban.decomposition.applied":$,"tools.list":dr,"memory.list":fr,"memory.sage.list":mr,"memory.sage.get":hr,"memory.sage.update":gr,"memory.sage.remember":_r,"memory.sage.recover":vr,"memory.sage.candidateResolve":yr,"memory.sage.backfillRecoverable":br,"skills.list":xr,"diag.get":Sr,"stats.get":Cr,side_effects:e=>{if(!d(e))return;let t=e.payload;se.getState().setSideEffects(t.sideEffects??[])},"todos.updated":wr,"todos.cleared":e=>{d(e)&&g.getState().setTodos([])},"agent.timeline.message":e=>{if(!d(e))return;let t=e.payload;x.getState().pushAgentTimelineEntry({subagentId:t.subagentId,agentName:t.agentName,content:t.content,kind:t.kind,iteration:t.iteration,ts:t.ts,toolName:t.toolName,toolOk:t.toolOk,costUsd:t.costUsd})},"agent.status_changed":e=>{if(!d(e))return;let t=e.payload;x.getState().pushAgentTimelineEntry({subagentId:t.subagentId,agentName:t.agentName,content:t.summary??t.status,kind:`status`,iteration:0,ts:t.ts,status:t.status})},"tasks.updated":e=>{},"plan.updated":e=>{},"modes.list":Tr,"session.checkpoints":e=>{},"process.list":e=>{},"projects.list":e=>{},"projects.added":e=>{},"projects.selected":e=>{},"tool.disabled":e=>{},"tool.enabled":e=>{},"provider.response":e=>{Pn(e)},"tool.progress":e=>{Ke(e);let t=v(e),n=_.getState();for(let e of t)n.recordFileEvent(e)},"tool.started":e=>{Ge(e);let t=v(e);t.length>0&&_.getState().startActivities(t)},"tool.executed":e=>{qe(e);let t=e.payload;t.id&&_.getState().finishTool(t.id,{durationMs:t.durationMs,ok:t.ok!==!1})},"codemap.tool_started":e=>{l(e);let t=v(e);t.length>0&&_.getState().startActivities(t)},"codemap.tool_executed":e=>{l(e);let t=e.payload;t.id&&_.getState().finishTool(t.id,{durationMs:t.durationMs,ok:t.ok!==!1})},"codemap.file_event":e=>{let t=v(e),n=_.getState();for(let e of t)n.recordFileEvent(e)},"codemap.index_updated":e=>{let t=e.payload;me.getState().notifyIndexUpdated(t?.at)},"file.saved":e=>{let t=v(e);if(t.length>0){let e=_.getState();for(let n of t)e.recordFileEvent(n)}},"memory.event":e=>{Jt(e);let t=v(e);if(t.length>0){let e=_.getState();for(let n of t)e.recordActivity(n)}}};function Dr(e){let t=[];for(let[n,r]of Object.entries(Er))r&&t.push(e.on(n,t=>{e.consumeSuppressedChatEcho(n)||r(t)}));return()=>{for(let e of t)e()}}function Or(){let{autoConnect:e,wsUrl:t}=b(),n=b(e=>e.setWsStatus);(0,N.useEffect)(()=>{if(!e)return;Ce();let r=h(t),i=!1,a=r.onStatus(e=>{i||n(e)});r.connect().then(()=>{i||r.getPrefs()}).catch(e=>{i||console.warn(JSON.stringify({level:`warn`,event:`webui.ws_connection_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))});let o=Dr(r);return()=>{i=!0,o(),a()}},[e,t,n])}function kr(){let{wsUrl:e}=b(),t=h(e),n=(0,N.useCallback)((e,n,r=!1)=>t.isConnected?r?t.sendMessage(e,n,!0):t.sendMessage(e,n):null,[t]),r=(0,N.useCallback)(()=>t.sendAbort(),[t]),i=(0,N.useCallback)(e=>t.adviseTopic(e),[t]),a=(0,N.useCallback)(e=>t.sendMailboxMessage(e),[t]),{hideConfirm:o}=j(),s=(0,N.useCallback)((e,n)=>{t.sendConfirm(e,n),o()},[t,o]),c=(0,N.useCallback)((e,n)=>t.switchModel(e,n),[t]),l=(0,N.useCallback)(()=>t.listProviders(),[t]),u=(0,N.useCallback)(e=>t.listProviderModels(e),[t]),d=(0,N.useCallback)(()=>t.listSavedProviders(),[t]),f=(0,N.useCallback)((e,n,r)=>t.addKey(e,n,r),[t]),p=(0,N.useCallback)((e,n,r)=>t.updateKey(e,n,r),[t]),m=(0,N.useCallback)((e,n)=>t.deleteKey(e,n),[t]),g=(0,N.useCallback)((e,n)=>t.setActiveKey(e,n),[t]),_=(0,N.useCallback)((e,n,r,i,a,o)=>t.addProvider(e,n,r,i,a,o),[t]),v=(0,N.useCallback)(e=>t.removeProvider(e),[t]),y=(0,N.useCallback)(e=>{oe.getState().setLoading(!0),t.listSessions(e)},[t]),ee=(0,N.useCallback)(e=>t.deleteSession(e),[t]),x=(0,N.useCallback)((e,n)=>{oe.getState().updateEntryName(e,n),t.renameSession(e,n)},[t]),S=(0,N.useCallback)(e=>t.resumeSessionById(e),[t]),te=(0,N.useCallback)(e=>t.inspectSession(e),[t]),ne=(0,N.useCallback)(()=>t.saveSession(),[t]),re=(0,N.useCallback)(e=>t.listTools(e),[t]),ie=(0,N.useCallback)(e=>t.listMemory(e),[t]),ae=(0,N.useCallback)(e=>t.listSageMemories(e),[t]),C=(0,N.useCallback)((e,n)=>t.listSageMemoriesPage(e,n),[t]),w=(0,N.useCallback)((e,n)=>t.getSage(e,n),[t]),T=(0,N.useCallback)((e,n,r)=>t.getSageGraph(e,n,r),[t]),se=(0,N.useCallback)((e,n,r)=>t.updateSage(e,n,r),[t]),ce=(0,N.useCallback)((e,n)=>t.deleteSage(e,n),[t]),E=(0,N.useCallback)((e,n)=>t.rememberSage(e,n),[t]),D=(0,N.useCallback)((e,n)=>t.findMemoriesForFile(e,n),[t]),O=(0,N.useCallback)((e,n)=>t.recoverSage(e,n),[t]),k=(0,N.useCallback)((e,n)=>t.resolveMemoryCandidate(e,n),[t]),le=(0,N.useCallback)((e,n)=>t.backfillRecoverable(e,n),[t]),ue=(0,N.useCallback)(e=>t.listSkills(e),[t]),A=(0,N.useCallback)(e=>t.getDiag(e),[t]),de=(0,N.useCallback)(e=>t.getStats(e),[t]),fe=(0,N.useCallback)(()=>t.getPlan(),[t]),pe=(0,N.useCallback)(()=>t.listModes(),[t]),me=(0,N.useCallback)(e=>t.switchMode(e),[t]),M=(0,N.useCallback)(()=>t.listContextModes(),[t]),he=(0,N.useCallback)(e=>t.switchContextMode(e),[t]),P=(0,N.useCallback)(e=>t.createContextMode(e),[t]),F=(0,N.useCallback)((e,n)=>t.updateContextMode(e,n),[t]),I=(0,N.useCallback)(e=>t.deleteContextMode(e),[t]),L=(0,N.useCallback)(()=>t.repairContext(),[t]),ge=(0,N.useCallback)((e,n)=>t.refineModel(e,n),[t]),R=(0,N.useCallback)(e=>t.switchAutonomy(e),[t]),z=(0,N.useCallback)(e=>t.updatePrefs(e),[t]);return{client:t,sendMessage:n,adviseTopic:i,sendAbort:r,sendMailboxMessage:a,sendConfirm:s,switchModel:c,listProviders:l,listProviderModels:u,listSavedProviders:d,addKey:f,updateKey:p,deleteKey:m,setActiveKey:g,addProvider:_,removeProvider:v,listSessions:y,deleteSession:ee,renameSession:x,resumeSession:S,inspectSession:te,saveSession:ne,listTools:re,listMemory:ie,listSageMemories:ae,listSageMemoriesPage:C,getSage:w,getSageGraph:T,updateSage:se,deleteSage:ce,rememberSage:E,findMemoriesForFile:D,recoverSage:O,resolveMemoryCandidate:k,backfillRecoverable:le,listSkills:ue,getDiag:A,getStats:de,getPlan:fe,listModes:pe,switchMode:me,listContextModes:M,switchContextMode:he,createContextMode:P,updateContextMode:F,deleteContextMode:I,repairContext:L,toggleGoalAutonomous:(0,N.useCallback)(e=>{t.send({type:`goal.toggleAutonomous`,payload:{autonomous:e}})},[t]),startGoal:(0,N.useCallback)((e,n,r=!0)=>{t.send({type:`goal.start`,payload:{title:e,phases:n,autonomous:r}})},[t]),pauseGoal:(0,N.useCallback)(()=>{t.send({type:`goal.pause`,payload:{}})},[t]),resumeGoal:(0,N.useCallback)(()=>{t.send({type:`goal.resume`,payload:{}})},[t]),stopGoal:(0,N.useCallback)(()=>{t.send({type:`goal.stop`,payload:{}})},[t]),selectGoal:(0,N.useCallback)(e=>{t.send({type:`goal.selectPhase`,payload:{phaseId:e}})},[t]),switchAutonomy:R,updatePrefs:z,refineModel:ge}}export{Y as a,Pe as c,It as i,Fe as l,Or as n,Le as o,gn as r,H as s,kr as t,P as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Aa as e,ja as t}from"./vendor-GiKfK4Iw.js";function n(...n){return e(t(n))}function r(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}export{r as n,n as t};
|