specrails-desktop 2.63.0 → 2.63.2
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/client/dist/assets/{ActivityFeedPage-Bn2MpG5M.js → ActivityFeedPage-B1bpTy7O.js} +1 -1
- package/client/dist/assets/{AgentBrowserCapture-CHlXWdXq.js → AgentBrowserCapture-BussBbN3.js} +1 -1
- package/client/dist/assets/{AgentModeAnalyticsPane-yj-YCgrK.js → AgentModeAnalyticsPane-BiT1n3BU.js} +2 -2
- package/client/dist/assets/{AgentModeCodePane-Xczcyghb.js → AgentModeCodePane-CUjNfeKa.js} +2 -2
- package/client/dist/assets/{AgentModeJobsPane-DtOW01ln.js → AgentModeJobsPane-RVEwyS59.js} +1 -1
- package/client/dist/assets/{AgentsPage-BMfJ4mzU.js → AgentsPage-DKE-eMC5.js} +1 -1
- package/client/dist/assets/{AnalyticsPage-CGn5cgtc.js → AnalyticsPage-Bser2Ly3.js} +1 -1
- package/client/dist/assets/{CodePage-C8NIginr.js → CodePage-BK0grm6e.js} +1 -1
- package/client/dist/assets/{DesktopAnalyticsPage-C87r4y26.js → DesktopAnalyticsPage-DEBidZbs.js} +1 -1
- package/client/dist/assets/{DocsDialog-Z50a_KPv.js → DocsDialog-Dhyo57n9.js} +1 -1
- package/client/dist/assets/{DocsPage-DIArbEPl.js → DocsPage-BcEkPXd6.js} +1 -1
- package/client/dist/assets/{ExportDropdown-CJdCqYd7.js → ExportDropdown-mRmqdkjr.js} +1 -1
- package/client/dist/assets/{InteractiveJobComposer-BxLh4me-.js → InteractiveJobComposer-BlCe3vrU.js} +1 -1
- package/client/dist/assets/{JobDetailModal-C7dWoRu6.js → JobDetailModal-CkAejD1F.js} +1 -1
- package/client/dist/assets/{JobDetailPage-Ilu294WS.js → JobDetailPage-P-FS_lKz.js} +1 -1
- package/client/dist/assets/{JobsPage-fPq1hefb.js → JobsPage-CoUXgYse.js} +1 -1
- package/client/dist/assets/LoopBuilderPage-iFylNk68.js +1 -0
- package/client/dist/assets/{LoopPreviewModal-ChI3NQC7.js → LoopPreviewModal-4obS_Ptg.js} +1 -1
- package/client/dist/assets/{LoopWindowSurface-D1WB9i-9.js → LoopWindowSurface-CLr5OPqj.js} +1 -1
- package/client/dist/assets/{LoopsPage-CCwc0Biu.js → LoopsPage-eKpWFtCp.js} +1 -1
- package/client/dist/assets/{MinimizedChatsContext-eH_KaAZ1.js → MinimizedChatsContext-BHIUPVmC.js} +1 -1
- package/client/dist/assets/{PluginsPage-DfDfEfbW.js → PluginsPage-BgTC2CQx.js} +1 -1
- package/client/dist/assets/{ProjectSettingsDialog-9NHnG8JQ.js → ProjectSettingsDialog-B4chTfU8.js} +1 -1
- package/client/dist/assets/{RepositoryDeliveries-DgzNnJmn.js → RepositoryDeliveries-DAIxIYsl.js} +1 -1
- package/client/dist/assets/{RepositoryScopeSelector-BSgUqk_u.js → RepositoryScopeSelector-DeCoUsRN.js} +1 -1
- package/client/dist/assets/{ReviewPacketPage-D34bGpSA.js → ReviewPacketPage-Cktv0-9b.js} +1 -1
- package/client/dist/assets/{TemplatePreviewModal-CcfSxWQ7.js → TemplatePreviewModal-BZTV1TM1.js} +1 -1
- package/client/dist/assets/{TicketDetailModalContext-BoafEcm4.js → TicketDetailModalContext-DiPngt2g.js} +1 -1
- package/client/dist/assets/{Trans-CVSryAL1.js → Trans-ZiXIfj50.js} +1 -1
- package/client/dist/assets/{agentRuntime-TKQyg137.js → agentRuntime-BDvbJMmS.js} +1 -1
- package/client/dist/assets/{agentRuntime-DvhEe1um.js → agentRuntime-BKJfv5YD.js} +1 -1
- package/client/dist/assets/{agentRuntime-DxC6-9rN.js → agentRuntime-BxF81z52.js} +1 -1
- package/client/dist/assets/{agentRuntime-C_yLPKDy.js → agentRuntime-BxYS5V7u.js} +1 -1
- package/client/dist/assets/{agentRuntime-WSv8G0pW.js → agentRuntime-BzuwQQgn.js} +1 -1
- package/client/dist/assets/{agentRuntime-D2kYQqNO.js → agentRuntime-Dc9HG3BA.js} +1 -1
- package/client/dist/assets/{agentRuntime-Bjt7Ij6_.js → agentRuntime-DiCldqGG.js} +1 -1
- package/client/dist/assets/{agentRuntime-B-myNBUP.js → agentRuntime-es2ymSl-.js} +1 -1
- package/client/dist/assets/{formatDistanceToNow-NVM6rK3i.js → formatDistanceToNow-CdN5lTyD.js} +1 -1
- package/client/dist/assets/{getTimezoneOffsetInMilliseconds-ZHg7WpdH.js → getTimezoneOffsetInMilliseconds-62h40I4t.js} +1 -1
- package/client/dist/assets/index-BgbCbIua.css +2 -0
- package/client/dist/assets/{index-Culan6y7.js → index-CECj3joE.js} +7 -7
- package/client/dist/assets/{jira-api-Bl8xEIpk.js → jira-api-C_D_RDhl.js} +1 -1
- package/client/dist/assets/{project-repositories-CvJf1a6H.js → project-repositories-Be0CWklo.js} +1 -1
- package/client/dist/assets/{spending-BfjSJjBd.js → spending-eWiZGhC_.js} +1 -1
- package/client/dist/assets/{useDesktop-C5JVBeur.js → useDesktop-C0mRIlHT.js} +1 -1
- package/client/dist/assets/{useRuntimeRuns-DohBmeg8.js → useRuntimeRuns-B1a6GChu.js} +1 -1
- package/client/dist/assets/{useSharedWebSocket-CNOvmgTr.js → useSharedWebSocket-CcsE5986.js} +2 -2
- package/client/dist/index.html +16 -16
- package/docs/ci-cd.md +3 -4
- package/docs/getting-started.md +1 -1
- package/docs/internals/core-runtime-updates.md +3 -3
- package/docs/internals/desktop-owned-workflows.md +10 -0
- package/docs/internals/programmatic-agent-runtime.md +16 -0
- package/docs/internals/source-map.md +4 -2
- package/docs/platforms/macos.md +4 -4
- package/docs/platforms/windows.md +5 -5
- package/docs/running-pipelines.md +12 -0
- package/package.json +1 -1
- package/server/dist/mcp/tools/loops.js +1 -1
- package/server/dist/modules/agent-runtime/runtime/agent-runtime-bridge.js +13 -3
- package/server/dist/modules/delivery/runtime/rail-isolated-launch.js +1 -1
- package/server/dist/modules/loops/runtime/loop-implement-recipe.js +13 -6
- package/server/dist/modules/loops/runtime/loop-turn-limits.js +64 -0
- package/server/dist/modules/loops/runtime/loops-router.js +3 -1
- package/server/dist/modules/missions/runtime/agent-operator-prompt.js +8 -0
- package/server/dist/schemas/agent-runtime.schema.json +1 -1
- package/client/dist/assets/LoopBuilderPage-5M7IypEP.js +0 -1
- package/client/dist/assets/index-D1v33giW.css +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=`Motor de agentes`,t=`Arquiteto, programador e revisor correm como fases separadas com verificação determinista entre elas. Escolha um fornecedor por função; tudo o resto tem um valor por defeito que funciona.`,n=`A carregar configurações…`,r=`Não foi possível carregar as configurações. Tente novamente antes de alterar.`,i=`Tentar novamente`,a=`Esta instalação do Core não inclui o motor de agentes. Atualize o Core antes de ativar; pode preparar as configurações enquanto está desativado.`,o=`Guardar configurações`,s=`A guardar…`,c=`Configurações guardadas`,l=`Não foi possível guardar as configurações.`,u=`Pausar para aprovação antes de concluir o fluxo`,d={title:`Fornecedores`,hint:`Os CLI usam a sessão existente. As API aceitam apenas o nome da variável de ambiente, nunca a chave. Em serviços locais, pode ficar vazio. Reatribua as funções antes de remover o fornecedor.`,entry:`Fornecedor {{index}}`,id:`ID do fornecedor`,kind:`Tipo de ligação`,cli:`CLI de programação instalado`,compatible:`Endpoint compatível com OpenAI`,command:`CLI de programação`,baseUrl:`URL base da API`,apiKeyEnv:`Variável de ambiente da chave (opcional)`,remove:`Remover fornecedor`,addCli:`Adicionar fornecedor CLI`,addLocal:`Adicionar fornecedor local / API`,show:`Mostrar ligações a fornecedores`,hide:`Ocultar ligações a fornecedores`,globalTitle:`Provedores de IA`,globalHint:`Dois tipos de provedor alimentam cada projeto: as CLIs de programação detectadas nesta máquina e os motores locais compatíveis com OpenAI que registares aqui. Atribui-os às fases do pipeline em Definições do projeto ▸ Motor de agentes. As alterações aplicam-se a novas execuções.`,label:`Nome de exibição (opcional)`,labelPlaceholder:`ex.: Máquina LAN`,defaultModel:`Modelo padrão`,defaultModelNone:`Sem padrão (primeiro descoberto)`,defaultModelPlaceholder:`ID do modelo ou alias personalizado`,customModel:`Alias personalizado…`,discoveredModels:`Modelos descobertos`,noModels:`Nenhum modelo descoberto ainda — teste a conexão.`,rates:`Tarifas (USD por 1M de tokens, opcional)`,ratesHint:`Os custos são exibidos como estimativas; deixe ambas vazias e o custo permanece desconhecido.`,inputRate:`Entrada por 1M`,outputRate:`Saída por 1M`,ratesInvalid:`Informe ambas as tarifas como números não negativos ou deixe as duas vazias.`,reasoningEffort:`O endpoint aceita esforço de raciocínio`,reasoningEffortHint:`Envia o campo reasoning_effort da OpenAI: o esforço configurado do papel em cada chamada, elevado a alto enquanto o arquiteto compacto escreve o plano. Deixe desligado a menos que o servidor o respeite.`,apiKeyEnvMissing:`{{name}} não está definida no processo do app. Defina-a no ambiente a partir do qual o app é iniciado.`,test:`Testar conexão`,testing:`Testando…`,testFailed:`Não foi possível testar a conexão.`,rename:`Renomear`,renameHint:`Renomear mantém as atribuições de papéis apontando para esta conexão.`,idLocked:`O id fica bloqueado após salvar. Use Renomear para alterá-lo.`,localBadge:`Motor local`,cliBadge:`CLI`,notDetected:`Não detectado nesta máquina`,unsaved:`Alterações não salvas`,empty:`Ainda não há conexões. Adicione um provedor local / API para começar.`,fixBeforeSave:`Corrija os campos destacados antes de salvar.`,status:{probing:`Verificando…`,reachable:`Acessível`,unauthorized:`Não autorizado`,unreachable:`Inacessível`,untested:`Nunca testado`},auth:{authenticated:`Sessão iniciada`,unauthenticated:`Sem sessão`,unknown:`Sessão desconhecida`},agentLoop:`Loop do agente`,agentLoopHint:`como o pipeline implement conduz este modelo`,agentLoop_compact:`Compacto`,agentLoop_compactHint:`Micropassos conduzidos pelo app com saída estruturada. Recomendado para modelos abaixo de ~30B.`,agentLoop_free:`Livre`,agentLoop_freeHint:`Um loop agêntico por papel, como um provedor CLI. Exige um modelo forte.`,contextWindow:`Janela de contexto (tokens)`,contextWindowHint:`Iguale ao tamanho de contexto do servidor (n_ctx / num_ctx). Usado para compactar resultados antigos de ferramentas antes de encher a janela. Padrão 32768.`,maxOutput:`Orçamento de saída por turno (tokens)`,maxOutputHint:`max_tokens de um turno de ferramentas; um turno cortado é repetido uma vez com o dobro. Conta dentro da janela de contexto, por isso é sempre limitado ao espaço restante — aumente-o se o modelo raciocina em privado (o thinking consome-o). Predefinição 8192.`,reasoningEffortRailHint:`Desligado: o seletor de esforço de raciocínio não aparece no cabeçalho do rail para este motor.`,presetTitle:`Configuração rápida`,presetSmallModel:`Recomendado para modelos pequenos`,presetSmallModelApplied:`Predefinição para modelos pequenos aplicada`,presetSmallModelHint:`Ativa o loop Compacto, encaminha o esforço de raciocínio e fixa uma janela de contexto de 32k: a combinação validada com modelos de 7–14B. Cada campo continua editável.`,cliGroup:`Ferramentas CLI`,cliGroupHint:`Detectadas nesta máquina: usam o seu próprio início de sessão, nada a configurar.`,localGroup:`Motores locais`,localGroupHint:`Endpoints compatíveis com OpenAI (llama.cpp, Ollama, vLLM, LM Studio…) acessíveis a partir desta app.`,models_one:`{{count}} modelo`,models_other:`{{count}} modelos`,expand:`Mostrar definições`,collapse:`Ocultar definições`,overflow:`Mais ações`,addLocalHero:`Adicionar motor local`,emptyLocalPitch:`Ainda não há motores locais. Aponta a app para um endpoint compatível com OpenAI para executar o pipeline no teu próprio hardware: o custo fica sob o teu controlo e nada sai da tua rede.`,defaultsGroup:`Predefinições do provedor`},f={claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},p={architect:`Arquiteto`,developer:`Desenvolvedor`,reviewer:`Revisor`,fixer:`Corretor`,verify:`Verificação`,archive:`Conclusão`},m={title:`Atribuição de funções`,hint:`Cada papel pode usar um fornecedor e um modelo diferentes. Conexões: Definições gerais → Provedores de IA. Limite padrão: {{turns}} turnos por agente.`,provider:`Fornecedor`,model:`Modelo`,modelPlaceholder:`ID do modelo ou padrão do CLI`,maxTurns:`Máximo de turnos (por defeito {{turns}})`,defaultModel:`Por defeito ({{model}})`,thinking:`Raciocínio oculto`,thinking_off:`Desligado`,thinking_on:`Ligado`,thinkingHint:`Desligado por defeito: o raciocínio oculto gasta o orçamento de saída e minutos por turno num ciclo guiado pelo host. Ligue-o para um papel que beneficie de deliberação (enviado como chat_template_kwargs.enable_thinking; os endpoints que não o conhecem ignoram-no).`},h={title:`Limites do fluxo`,hint:`Os campos vazios usam os valores do Core: {{attempts}} tentativas de correção e {{minutes}} minutos por passo de papel. Em motores locais o timeout aplica-se a cada unidade de trabalho (um grupo de tarefas, um artefacto, uma revisão) — 45 minutos por defeito — mais um watchdog de inatividade de 20 minutos; um passo que esgota o tempo bloqueia a execução e pode ser retomado a partir do próximo grupo aberto. Os limites de tokens e USD são opcionais; os de USD exigem Claude em todos os papéis.`,maxAttempts:`Máximo de tentativas do programador (por defeito {{attempts}})`,timeoutMinutes:`Timeout em minutos (por defeito {{minutes}}; motores locais 45 por grupo de tarefas)`,maxTokens:`Máximo de tokens`,maxCostUsd:`Custo máximo (USD)`,unlimited:`Sem limite`},g={title:`Comandos de verificação`,hint:`Opcional. Correm quando o programador termina e as falhas voltam ao programador. Com a lista vazia, o arquiteto propõe as verificações do próprio projeto em cada execução; os repositórios sem verificação automática são revistos na mesma.`,detect:`Detetar verificações do projeto`,detecting:`A detetar…`,detected:`Preenchido com as verificações que este projeto já define.`,nothingDetected:`Não foi encontrado nenhum comando de teste, verificação de tipos ou build. Não há problema: o arquiteto propõe verificações em cada execução quando possível.`,detectFailed:`Não foi possível inspecionar os repositórios do projeto.`,repository:`Repositório`,command:`Comando`,reason:`Detetado em {{reason}}`,remove:`Remover`,add:`Adicionar comando`,invalidLine:`Comando de verificação vazio ou com aspas por fechar: {{line}}`,label:`Nome da verificação (opcional)`,moveUp:`Subir`,moveDown:`Descer`},_={title:`Comandos de preparação`,hint:"Comandos idempotentes que o Core executa antes de cada verificação, no checkout do repositório (por exemplo `npx playwright install chromium`).",add:`Adicionar comando de preparação`,invalidLine:`O comando de preparação está vazio ou tem uma aspa não fechada: {{line}}`,repository:`Repositório`,command:`Comando de preparação`,label:`Rótulo de preparação (opcional)`,remove:`Remover`,moveUp:`Mover comando de preparação para cima`,moveDown:`Mover comando de preparação para baixo`,empty:`Sem comandos de preparação. A verificação é executada diretamente no checkout.`},v={title:`Execuções guardadas`,refresh:`Atualizar`,hint:`Continua no worktree original com o âmbito e as configurações guardadas; o progresso aparece no registo desse trabalho. Não publica nem reinicia a entrega do Desktop. As execuções ativas param a partir dos controlos do trabalho.`,empty:`Não há execuções guardadas.`,loadFailed:`Não foi possível carregar as execuções.`,actionFailed:`Não foi possível atualizar esta execução.`,phase:`Próxima fase: {{phase}}`,approve:`Aprovar conclusão`,recover:`Recuperar fase interrompida`,resume:`Retomar`,cancel:`Cancelar continuação`,status:{running:`A continuar…`,succeeded:`Concluído`,failed:`Falhou`,blocked:`Bloqueado`,paused:`Em pausa`,cancelled:`Cancelado`,interrupted:`Interrompido`,unavailable:`Indisponível`,expired:`Expirado`},question:`O arquiteto pergunta:`,answerLabel:`A sua resposta`,answerPlaceholder:`Responda à pergunta; o arquiteto continua com ela.`,answer:`Responder e retomar`,viewLog:`Ver log do job`,implementation:`Implementação`,preserveProgress:`Continue a partir da fase indicada, preservando o trabalho e as configurações guardadas.`,reviewDelivery:`Implementação concluída. Reveja o resultado no log antes da entrega; esta continuação não o publicou.`,prepareDelivery:`Preparar entrega`,dismiss:`Descartar`,selectRecovery:`Selecione as tentativas interrompidas a recuperar`},y={architect:`Lê o código e escreve a proposta, o design, as tarefas e a spec. Só leitura.`,developer:`Implementa as tarefas com testes. Pode editar ficheiros e executar comandos na sandbox do CLI.`,reviewer:`Confere o resultado com a spec e a evidência de verificação. Só leitura.`},b={title:`Limite de revisão`,hint:`Campos vazios usam o limite do Core. Os valores só podem elevá-lo: pontuação geral de pelo menos {{score}}, segurança de pelo menos {{security}}, outros aspetos de pelo menos {{aspect}}.`,minScore:`Pontuação geral mínima (padrão {{score}})`,aspects:{type_correctness:`Correção de tipos (padrão {{score}})`,pattern_adherence:`Aderência a padrões (padrão {{score}})`,test_coverage:`Cobertura de testes (padrão {{score}})`,security:`Segurança (padrão {{score}})`,architectural_alignment:`Alinhamento arquitetural (padrão {{score}})`}},x={title:`Confiança do arquiteto`,hint:`Após uma passagem de investigação autónoma, um design ainda com baixa confiança pausa com a pergunta do arquiteto ou prossegue com suposições declaradas.`,onLowConfidence:`Com baixa confiança`,ask:`Perguntar (pausar com a pergunta)`,proceed:`Prosseguir com suposições declaradas`},S={title:`Consumo e tempo`,hint:`Inclui correções e chamadas falhadas. O tempo dos agentes inclui as ferramentas. Os tokens em cache fazem parte dos tokens de entrada.`,unknown:`Indisponível`,duration:`Tempo de execução`,agentTime:`Tempo dos agentes`,cost:`Custo reportado`,providerCalls:`Chamadas a agentes`,toolCalls:`Chamadas a ferramentas`,input:`Tokens de entrada`,output:`Tokens de saída`,uncached:`Entrada sem cache`,cacheRead:`Leituras da cache`,cacheWrite:`Escritas na cache`,partial:`Algumas tentativas não têm medições detalhadas.`,phases:`Consumo por fase`,phase:`Fase`,attempts:`Tentativas`},C={title:`Prompts dos papéis dos agentes`,description:`Veja e edite as instruções de cada papel. São partilhadas por todos os projetos e fornecedores; as alterações aplicam-se a novos trabalhos. Os trabalhos retomados mantêm os prompts originais.`,definition:`Definição de {{role}}`,default:`Predefinição de fábrica`,custom:`Personalizado`,restore:`Restaurar predefinição`,contracts:`O contexto da spec, o fluxo OpenSpec e o formato de resposta obrigatório são adicionados automaticamente e não são editados aqui.`,invalid:`Cada definição deve conter entre 1 e 20.000 caracteres, com texto não vazio e sem bytes nulos.`,saved:`Prompts dos papéis guardados`,unsaved:`Alterações por guardar`,discard:`Descartar alterações`,save:`Guardar prompts`,fixerHint:`Usado apenas em rondas de correção: após uma verificação falhada ou uma revisão rejeitada. Corre no motor do developer salvo se Definições ▸ Motor dos agentes ▸ Corretor indicar um próprio. Um fornecedor CLI que retoma a sessão do developer recebe o seguimento curto de correção; a definição aplica-se sempre que arranca uma sessão nova (motores locais, motor corretor, sessão perdida).`},w={title:`Eficiência da implementação`,scope:`Aplica-se a novas execuções. As execuções guardadas mantêm a configuração e o motor originais.`,effort:`Esforço de raciocínio`,providerDefault:`Padrão do fornecedor`,unconfirmed:`Não confirmado`,unknownSupport:`O suporte deste modelo e transporte não está confirmado.`,escalation:`Permitir um nível superior com o mesmo fornecedor`,baseRequired:`Selecione primeiro um modelo base explícito.`,escalationModel:`Modelo de nível superior`,triggers:{architect:`Apenas a investigação aprofundada existente pode selecionar este nível.`,developer:`Após dois candidatos falhados, a próxima tentativa permitida pode selecionar este nível.`,reviewer:`Apenas para reparar respostas inválidas; rejeitar código não ativa este nível.`,fixer:`Só uma rodada de correção pode alcançar este nível; as primeiras passagens nunca executam o corretor.`},contextMode:`Contexto do repositório`,reviewMode:`Revisão de correções`,planning:`Profundidade do planeamento`,adaptive:`Adaptativo`,full:`Completo`,developerChecks:`Aceitar verificações adicionais propostas pelo programador`,concurrency:`Máximo de verificações simultâneas`,concurrencyHint:`Padrão: 1. Apenas verificações independentes declaradas pelo anfitrião em repositórios diferentes podem executar em conjunto. Sem reutilização por padrão.`,checkCapabilities:`Verificar compatibilidade dos modelos`,capabilitiesFailed:`Compatibilidade não confirmada. Atualize Core ou mantenha os padrões do fornecedor.`},T={title:`Evidências de verificação`,acceptance:`Aceitação técnica`,acceptanceStatus:{pending:`Pendente`,validated:`Validado`,"with-exceptions":`Com exceções`,blocked:`Bloqueado`},calls:`Chamadas aos agentes`,executed:`Verificações executadas`,reused:`Verificações reutilizadas`,unknown:`Indisponível`,unavailable:`Evidência indisponível. O resultado guardado não prova a validade atual.`,current:`Candidato e plano atuais`,historical:`Resultado histórico`,moreChecks:`Mais verificações`,output:`Saída da verificação`,empty:`Sem saída`,truncated:`Página limitada ou captura truncada.`,nextPage:`Página seguinte`,status:{passed:`Aprovado`,failed:`Falhou`,cancelled:`Cancelado`,interrupted:`Interrompido`},disposition:{executed:`Executado`,reused:`Reutilizado`,"not-run":`Não executado`},origin:`Origem`,origins:{host:`Anfitrião`,architect:`Arquiteto`,developer:`Programador`,"frozen-runtime-config":`Configuração guardada`,"project-role":`Papel do projeto`,default:`Padrão`,"explicit-launch-override":`Fornecedor escolhido para esta execução`,"loop-role":`Papel do loop`},reuseDisabled:`Reutilização desativada para esta verificação.`,reuseConfirmed:`Reutilizado após confirmar entradas e ferramentas idênticas.`,inputsChanged:`As entradas mudaram durante a verificação; resultado invalidado.`,reuseUnproven:`Sem resultado atual com entradas idênticas comprovadas; executado novamente.`,original:`Execução original`,requested:`Solicitado`,reported:`Reportado`},E={title:`Papéis do loop`,hint:`Motores dos papéis do loop quando um rail é lançado com o motor «Papéis». Os papéis do pipeline acima (architect, developer, reviewer) já vêm desta configuração do runtime.`,verifier:`Verificador`,verifierHint:`Todos os passos de IA do loop fora do core: verify, fix e passos de IA personalizados.`,decider:`Decisor`,deciderHint:`O Loop Decider que lê o veredicto e escolhe o passo seguinte — um modelo barato e rápido é a escolha natural.`,inherit:`Herdar o principal`,model:`Modelo`,effort:`Esforço de raciocínio`,disabled:`O runtime de agentes está desativado — os rails lançados com o motor «Papéis» são recusados até ser ativado.`,saveFailed:`Não foi possível guardar os papéis do loop.`},D={title:`Pipeline de implementação`,explainer:`Estas fases executam nesta ordem em cada implementação. Quando o motor do rail é "{{roles}}", cada fase usa o motor configurado abaixo — fornecedor, modelo e esforço diferentes por fase. Escolher um motor concreto no rail executa todas as fases nesse motor.`,host:`Host`,noCommand:`sem comando`,inherits:`Herda o principal`,inheritsDeveloper:`Herda do desenvolvedor`,open:`Abrir`,collapse:`Recolher`,groups:{core:{title:`Pipeline principal`,hint:`Executa dentro de cada implementação: planear, construir, verificar, corrigir, rever.`},loop:{title:`Passos do loop`,hint:`Passos de IA do loop do rail que envolve a execução (verificar → decidir → corrigir) e dos loops personalizados; herdam o motor principal se não forem definidos.`,chip:`loop do rail`}},phases:{architect:{name:`Arquiteto`,purpose:`Lê o código e escreve a proposta, o design e as tarefas.`},developer:{name:`Desenvolvedor`,purpose:`Implementa as tarefas com testes.`},verification:{name:`Verificação`,purpose:`O host executa as suas verificações; as falhas voltam ao desenvolvedor.`},fixer:{name:`Corretor`,purpose:`Corrige o que a verificação ou a revisão rejeitam; herda do desenvolvedor se não for configurado.`},reviewer:{name:`Revisor`,purpose:`Confere o resultado com a spec e as evidências.`},verifier:{name:`Verificador`,purpose:`Passos de IA verify, fix e personalizados do loop.`},decider:{name:`Decisor`,purpose:`Lê o veredito e escolhe o próximo passo do loop.`}}},O={title:`Motor do corretor`,inherit:`Herdar desenvolvedor`,own:`Motor próprio`,hint:`Só é executado em rodadas de correção: após uma verificação falha ou uma revisão rejeitada; as primeiras passagens continuam no desenvolvedor. Um modelo mais forte ou na nuvem aqui compensa quando o desenvolvedor é um modelo local barato.`},k={title:`Guarda-corpos`,intro:`Regras de processo que o host aplica em torno dos modelos locais para que um modelo pequeno não descarrile. Todas ativas por padrão; desative uma apenas para ajustar o processo. Provedores CLI nunca são afetados.`,unsupported:`Esta instalação do Core não expõe guarda-corpos configuráveis. Atualize o Core para ajustá-los; as regras integradas continuam a aplicar-se.`,active:`{{on}} de {{total}} ativos`,reset:`Restaurar padrões`,phases:{architect:`Arquiteto`,developer:`Desenvolvedor`,host:`Host`},unknown:`Um guarda-corpo adicionado por um Core mais recente; este app ainda não tem descrição para ele.`,items:{"plan-validation":{title:`Plano de tarefas validado`,description:`Rejeita planos que apontam para openspec/, listam nomes de arquivo soltos como tarefas, têm poucas tarefas/grupos para a spec ou deixam critérios de aceitação descobertos; o arquiteto tenta novamente.`,why:`Um plano vago ou incompleto é a razão nº 1 para um modelo desenvolvedor pequeno escrever stubs.`},"genuine-blocking-question":{title:`Apenas perguntas bloqueantes reais`,description:`O arquiteto só pode pausar a execução com uma pergunta real terminada em '?', nunca com texto de exemplo copiado.`,why:`Modelos pequenos repetem os marcadores do prompt e bloqueariam todas as execuções.`},"plan-language-hint":{title:`Planejar na linguagem do repositório`,description:`Informa ao arquiteto a linguagem principal para que os nomes de arquivo das tarefas tenham a extensão correta.`,why:`Um plano JS num repo TypeScript torna impossível marcar as tarefas.`},"frozen-plan-writes":{title:`Artefatos de planejamento estão congelados`,description:`O desenvolvedor não pode escrever em openspec/; o plano pertence ao host.`,why:`Modelos 'implementam' editando o plano em vez do código.`},"primary-language":{title:`Lembrete da linguagem principal`,description:`Cada grupo de tarefas recebe a linguagem principal do repositório; arquivos novos devem usá-la.`,why:`Evita uma segunda implementação em outra linguagem.`},"duplicate-sibling":{title:`Sem módulos gêmeos entre linguagens`,description:`Recusa board.js quando board.ts já existe; estenda o módulo existente.`,why:`Gêmeos compilam ambos e os testes importam o errado.`},"one-test-per-module":{title:`Um arquivo de teste por módulo`,description:`Recusa board.tick.test.ts quando board.test.ts existe; estenda-o em vez disso.`,why:`Senão cada passada de correção adiciona uma suíte nova.`},"empty-write":{title:`Sem sobrescritas vazias`,description:`Uma escrita vazia sobre um arquivo com conteúdo é recusada; escreva o conteúdo completo ou aplique um patch.`,why:`Uma passada de 'limpeza' certa vez deixou index.ts com 0 linhas.`},"evidence-gated-ticking":{title:`Evidência antes de marcar uma tarefa`,description:`Uma tarefa que nomeia arquivos só está concluída quando eles existem e não são stubs (extensões irmãs aceitas).`,why:`Sem isso, 'concluído' é só uma afirmação e a verificação roda contra nada.`},"inventory-retry":{title:`Tentar de novo com o inventário real`,description:`Quando o modelo desiste alegando que o repo está vazio sem estar, tenta uma vez mais com a lista de arquivos.`,why:`Segunda chance barata em vez de um passo falhado.`},"synthetic-corrections":{title:`Transformar feedback em tarefas`,description:`Quando todas as tarefas estão marcadas mas review/verify falharam, o feedback vira tarefas de correção concretas.`,why:`Senão o desenvolvedor responde 'já está feito' e nada muda.`},"silent-group-closure":{title:`Fechar grupos silenciosos, manter seus arquivos`,description:`Um grupo cujo modelo para de responder é fechado creditando os arquivos que escreveu e deixando suas tarefas abertas, em vez de falhar a execução.`,why:`Um modelo 9B escreveu cinco módulos, silenciou e toda a execução falhou.`},"environment-repair":{title:`O host repara o ambiente`,description:`Dependências ou ferramentas de teste ausentes (npm install, ts-jest, @types/jest, módulos de config do Jest) são instaladas pelo host e a verificação roda de novo uma vez.`,why:`O modelo não consegue consertar o ambiente e gasta correções tentando.`},"lockfile-repair":{title:`Descartar lockfiles escritos à mão`,description:`Um package-lock.json inventado pelo modelo (EINTEGRITY/ETARGET) é removido e a instalação repetida uma vez.`,why:`Hashes inventados nunca instalam.`},"verify-idle-timeout":{title:`Parar testes travados`,description:`Um comando de verificação sem saída por 5 minutos é interrompido e reportado como provável travamento (última saída incluída).`,why:`Senão um laço while num teste segura a execução até o limite de 15 minutos.`},"verify-per-group":{title:`Verificar após cada grupo`,description:`Executa o comando de teste do repositório logo após cada grupo de tarefas; uma falha recebe uma ronda de correção imediata com o contexto do grupo ainda fresco.`,why:`Cinco suites partidas no fim são muito mais difíceis de corrigir do que uma de cada vez.`},"test-reachability":{title:`Todo teste novo tem de correr mesmo`,description:"Um ficheiro de teste escrito pelo developer que o comando de teste do repositório nunca executa (um script `test` enumerativo que omite o ficheiro novo) falha a verificação com o ficheiro exato, primeiro ao nível do grupo e de novo na verificação do host.",why:`Uma suite de 622 linhas com seis casos a falhar chegou verde porque nada a executou.`},"exit-code-honesty":{title:`Desconfiar de um exit 0 que reporta falhas`,description:'Um comando de verificação que sai com 0 enquanto a saída imprime falhas (linhas `FAIL:`, "3 failed", um AssertionError) é tratado como FALHADO e entregue ao corretor com o harness apontado como o defeito.',why:`Um runner de testes caseiro que nunca definia um exit code diferente de zero entregou três testes vermelhos como verdes.`}}},A=`Alterações não guardadas`,j={title:`Funções personalizadas`,hint:`Defina instruções reutilizáveis e permissões explícitas para as funções do fluxo.`,unsupported:`Atualize o Core para editar funções personalizadas.`,remove:`Remover {{id}}`,access:`Acesso ao código`,read:`Somente leitura`,write:`Leitura e escrita`,artifacts:`Acesso aos artefatos OpenSpec`,none:`Nenhum`,tasks:`Somente caixas de tarefas`,all:`Todos os artefatos da alteração`,skill:`Skill do OpenSpec`,noSkill:`Nenhuma skill associada`,prompt:`Instruções da função`,id:`ID da função`,add:`Adicionar função`,invalidId:`Use um ID único em minúsculas que comece com uma letra, com até 64 letras, números ou hífens. Os IDs integrados são reservados.`,escalationHint:`Somente uma correção permitida do protocolo pode usar o modelo de escalonamento. Nenhuma tentativa extra é adicionada.`},M={title:`Instruções de execução`,hint:`O Core guarda estas instruções para o próximo turno de agente compatível. O envio não responde a perguntas nem concede aprovações.`,label:`Instruções adicionais`,send:`Enviar instruções`,accepted:`Recebidas pelo Core; aguardando utilização.`,pending:`Aguardando um turno de agente`,consumed:`Utilizadas por um agente`,counts:`Pendentes: {{pending}} · Utilizadas: {{consumed}}`,failed:`Não foi possível enviar as instruções. Tente novamente para confirmar a mesma mensagem.`,unavailable:`Os detalhes dos recibos estão indisponíveis.`,unreported:`Esta versão do Core não informa a utilização.`,truncated:`São apresentados apenas os recibos recentes e as mensagens pendentes.`},N={title:`Valores padrão do papel do Core`,hint:`Estes valores do arquivo aplicam-se a novos workflows. As configurações explícitas do projeto têm prioridade; as execuções salvas mantêm as configurações fixadas.`,invalid:`Corrija o cabeçalho YAML no editor antes de alterar os campos do papel.`,escalationEffort:`Esforço de raciocínio do modelo superior`},P={title:`Retenção do histórico`,description:`Elimine históricos expirados e versões do Core sem uso. Históricos eliminados não podem ser retomados nem bifurcados. Execuções ativas ou recuperáveis e entregas pendentes ficam protegidas; registos de trabalhos e custos são mantidos.`,forever:`Manter o histórico indefinidamente`,days:`Dias de retenção`,save:`Guardar retenção`,preview:`Pré-visualizar limpeza`,collect:`Eliminar histórico expirado`,previewSummary:`Elegíveis: {{runs}} históricos e {{packages}} versões do Core sem uso.`,collectedSummary:`Expirados: {{runs}} históricos. Removidas: {{packages}} versões do Core sem uso.`,more:`{{count}} execuções adicionais.`,failed:`Não foi possível consultar ou atualizar a retenção.`,expired:`Este histórico expirou segundo a política do projeto. O registo do trabalho e a contabilidade continuam disponíveis.`,loading:`A carregar a política…`,states:{protected:`Mantido`,eligible:`Elegível`,expired:`Expirado`,cleanup_pending:`Limpeza pendente`,busy:`Em uso`,error:`Falha na inspeção`},reasons:{disabled:`Retenção indefinida`,recoverable:`Recuperação ainda disponível`,active:`Execução ativa`,human_pending:`A aguardar resposta humana`,interrupted_writes:`Escritas interrompidas por rever`,delivery_pending:`Entrega pendente`,fork_pending:`Existe uma bifurcação dependente`,unknown_terminal_time:`Data de conclusão desconhecida`,within_retention:`Dentro do período de retenção`}},F={title:`Loop agents`,hint:`These definitions are shared by every project using this loop. Duplicate the loop to customize a separate workflow.`,legacy:`This saved loop still uses historical project agents. Import them or enable loop agents before changing its configuration.`,enable:`Use loop agents`,import:`Import current project agents`,restoreDefinition:`Usar a definição do Core`,default:`Provider default`,effort:`Reasoning effort`,escalationModel:`Escalation model`,escalationEffort:`Escalation effort`,policy:`Workflow policy`,maxAttempts:`Maximum correction attempts`,maxTokens:`Token budget`,maxCostUsd:`Cost budget (USD)`,timeoutMs:`Run timeout (ms)`,projectHint:`Configure repository checks here. Agent definitions, models and workflow policy are configured in the loop editor. Historical project agents can be imported into a duplicated loop.`,showUnused:`Also show agents not used in this loop`,stepTitle:`Step agent and options`,stepHint:`Edit this step’s agent definition and engine. Steps using the same role in this loop share these settings.`,inheritProvider:`Herdar o fornecedor da missão`,inheritDefinition:`Segue a definição do Core: cada atualização do Core renova-a automaticamente.`,customizeDefinition:`Personalizar para este loop`,coreDefinitionUnavailable:`Pré-visualização indisponível até instalar um runtime do Core.`},I={title:e,description:t,loading:n,loadFailed:r,retry:i,unavailable:a,save:o,saving:s,saved:c,saveFailed:l,approvalBeforeArchive:u,providers:d,cliNames:f,roles:p,agents:m,limits:h,verification:g,setup:_,runs:v,roleHints:y,review:b,architect:x,metrics:S,prompts:C,efficiency:w,evidence:T,loopRoles:E,pipeline:D,fixer:O,guardrails:k,unsavedChanges:A,customRoles:j,steering:M,studioRole:N,retention:P,loopAgents:F};export{m as agents,u as approvalBeforeArchive,x as architect,f as cliNames,j as customRoles,I as default,t as description,w as efficiency,T as evidence,O as fixer,k as guardrails,h as limits,r as loadFailed,n as loading,F as loopAgents,E as loopRoles,S as metrics,D as pipeline,C as prompts,d as providers,P as retention,i as retry,b as review,y as roleHints,p as roles,v as runs,o as save,l as saveFailed,c as saved,s as saving,_ as setup,M as steering,N as studioRole,e as title,a as unavailable,A as unsavedChanges,g as verification};
|
|
1
|
+
var e=`Motor de agentes`,t=`Arquiteto, programador e revisor correm como fases separadas com verificação determinista entre elas. Escolha um fornecedor por função; tudo o resto tem um valor por defeito que funciona.`,n=`A carregar configurações…`,r=`Não foi possível carregar as configurações. Tente novamente antes de alterar.`,i=`Tentar novamente`,a=`Esta instalação do Core não inclui o motor de agentes. Atualize o Core antes de ativar; pode preparar as configurações enquanto está desativado.`,o=`Guardar configurações`,s=`A guardar…`,c=`Configurações guardadas`,l=`Não foi possível guardar as configurações.`,u=`Pausar para aprovação antes de concluir o fluxo`,d={title:`Fornecedores`,hint:`Os CLI usam a sessão existente. As API aceitam apenas o nome da variável de ambiente, nunca a chave. Em serviços locais, pode ficar vazio. Reatribua as funções antes de remover o fornecedor.`,entry:`Fornecedor {{index}}`,id:`ID do fornecedor`,kind:`Tipo de ligação`,cli:`CLI de programação instalado`,compatible:`Endpoint compatível com OpenAI`,command:`CLI de programação`,baseUrl:`URL base da API`,apiKeyEnv:`Variável de ambiente da chave (opcional)`,remove:`Remover fornecedor`,addCli:`Adicionar fornecedor CLI`,addLocal:`Adicionar fornecedor local / API`,show:`Mostrar ligações a fornecedores`,hide:`Ocultar ligações a fornecedores`,globalTitle:`Provedores de IA`,globalHint:`Dois tipos de provedor alimentam cada projeto: as CLIs de programação detectadas nesta máquina e os motores locais compatíveis com OpenAI que registares aqui. Atribui-os às fases do pipeline em Definições do projeto ▸ Motor de agentes. As alterações aplicam-se a novas execuções.`,label:`Nome de exibição (opcional)`,labelPlaceholder:`ex.: Máquina LAN`,defaultModel:`Modelo padrão`,defaultModelNone:`Sem padrão (primeiro descoberto)`,defaultModelPlaceholder:`ID do modelo ou alias personalizado`,customModel:`Alias personalizado…`,discoveredModels:`Modelos descobertos`,noModels:`Nenhum modelo descoberto ainda — teste a conexão.`,rates:`Tarifas (USD por 1M de tokens, opcional)`,ratesHint:`Os custos são exibidos como estimativas; deixe ambas vazias e o custo permanece desconhecido.`,inputRate:`Entrada por 1M`,outputRate:`Saída por 1M`,ratesInvalid:`Informe ambas as tarifas como números não negativos ou deixe as duas vazias.`,reasoningEffort:`O endpoint aceita esforço de raciocínio`,reasoningEffortHint:`Envia o campo reasoning_effort da OpenAI: o esforço configurado do papel em cada chamada, elevado a alto enquanto o arquiteto compacto escreve o plano. Deixe desligado a menos que o servidor o respeite.`,apiKeyEnvMissing:`{{name}} não está definida no processo do app. Defina-a no ambiente a partir do qual o app é iniciado.`,test:`Testar conexão`,testing:`Testando…`,testFailed:`Não foi possível testar a conexão.`,rename:`Renomear`,renameHint:`Renomear mantém as atribuições de papéis apontando para esta conexão.`,idLocked:`O id fica bloqueado após salvar. Use Renomear para alterá-lo.`,localBadge:`Motor local`,cliBadge:`CLI`,notDetected:`Não detectado nesta máquina`,unsaved:`Alterações não salvas`,empty:`Ainda não há conexões. Adicione um provedor local / API para começar.`,fixBeforeSave:`Corrija os campos destacados antes de salvar.`,status:{probing:`Verificando…`,reachable:`Acessível`,unauthorized:`Não autorizado`,unreachable:`Inacessível`,untested:`Nunca testado`},auth:{authenticated:`Sessão iniciada`,unauthenticated:`Sem sessão`,unknown:`Sessão desconhecida`},agentLoop:`Loop do agente`,agentLoopHint:`como o pipeline implement conduz este modelo`,agentLoop_compact:`Compacto`,agentLoop_compactHint:`Micropassos conduzidos pelo app com saída estruturada. Recomendado para modelos abaixo de ~30B.`,agentLoop_free:`Livre`,agentLoop_freeHint:`Um loop agêntico por papel, como um provedor CLI. Exige um modelo forte.`,contextWindow:`Janela de contexto (tokens)`,contextWindowHint:`Iguale ao tamanho de contexto do servidor (n_ctx / num_ctx). Usado para compactar resultados antigos de ferramentas antes de encher a janela. Padrão 32768.`,maxOutput:`Orçamento de saída por turno (tokens)`,maxOutputHint:`max_tokens de um turno de ferramentas; um turno cortado é repetido uma vez com o dobro. Conta dentro da janela de contexto, por isso é sempre limitado ao espaço restante — aumente-o se o modelo raciocina em privado (o thinking consome-o). Predefinição 8192.`,reasoningEffortRailHint:`Desligado: o seletor de esforço de raciocínio não aparece no cabeçalho do rail para este motor.`,presetTitle:`Configuração rápida`,presetSmallModel:`Recomendado para modelos pequenos`,presetSmallModelApplied:`Predefinição para modelos pequenos aplicada`,presetSmallModelHint:`Ativa o loop Compacto, encaminha o esforço de raciocínio e fixa uma janela de contexto de 32k: a combinação validada com modelos de 7–14B. Cada campo continua editável.`,cliGroup:`Ferramentas CLI`,cliGroupHint:`Detectadas nesta máquina: usam o seu próprio início de sessão, nada a configurar.`,localGroup:`Motores locais`,localGroupHint:`Endpoints compatíveis com OpenAI (llama.cpp, Ollama, vLLM, LM Studio…) acessíveis a partir desta app.`,models_one:`{{count}} modelo`,models_other:`{{count}} modelos`,expand:`Mostrar definições`,collapse:`Ocultar definições`,overflow:`Mais ações`,addLocalHero:`Adicionar motor local`,emptyLocalPitch:`Ainda não há motores locais. Aponta a app para um endpoint compatível com OpenAI para executar o pipeline no teu próprio hardware: o custo fica sob o teu controlo e nada sai da tua rede.`,defaultsGroup:`Predefinições do provedor`},f={claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},p={architect:`Arquiteto`,developer:`Desenvolvedor`,reviewer:`Revisor`,fixer:`Corretor`,verify:`Verificação`,archive:`Conclusão`},m={title:`Atribuição de funções`,hint:`Cada papel pode usar um fornecedor e um modelo diferentes. Conexões: Definições gerais → Provedores de IA. Limite padrão: {{turns}} turnos por agente.`,provider:`Fornecedor`,model:`Modelo`,modelPlaceholder:`ID do modelo ou padrão do CLI`,maxTurns:`Máximo de turnos (por defeito {{turns}})`,defaultModel:`Por defeito ({{model}})`,thinking:`Raciocínio oculto`,thinking_off:`Desligado`,thinking_on:`Ligado`,thinkingHint:`Desligado por defeito: o raciocínio oculto gasta o orçamento de saída e minutos por turno num ciclo guiado pelo host. Ligue-o para um papel que beneficie de deliberação (enviado como chat_template_kwargs.enable_thinking; os endpoints que não o conhecem ignoram-no).`},h={title:`Limites do fluxo`,hint:`Os campos vazios usam os valores do Core: {{attempts}} tentativas de correção e {{minutes}} minutos por passo de papel. Em motores locais o timeout aplica-se a cada unidade de trabalho (um grupo de tarefas, um artefacto, uma revisão) — 45 minutos por defeito — mais um watchdog de inatividade de 20 minutos; um passo que esgota o tempo bloqueia a execução e pode ser retomado a partir do próximo grupo aberto. Os limites de tokens e USD são opcionais; os de USD exigem Claude em todos os papéis.`,maxAttempts:`Máximo de tentativas do programador (por defeito {{attempts}})`,timeoutMinutes:`Timeout em minutos (por defeito {{minutes}}; motores locais 45 por grupo de tarefas)`,maxTokens:`Máximo de tokens`,maxCostUsd:`Custo máximo (USD)`,unlimited:`Sem limite`},g={title:`Comandos de verificação`,hint:`Opcional. Correm quando o programador termina e as falhas voltam ao programador. Com a lista vazia, o arquiteto propõe as verificações do próprio projeto em cada execução; os repositórios sem verificação automática são revistos na mesma.`,detect:`Detetar verificações do projeto`,detecting:`A detetar…`,detected:`Preenchido com as verificações que este projeto já define.`,nothingDetected:`Não foi encontrado nenhum comando de teste, verificação de tipos ou build. Não há problema: o arquiteto propõe verificações em cada execução quando possível.`,detectFailed:`Não foi possível inspecionar os repositórios do projeto.`,repository:`Repositório`,command:`Comando`,reason:`Detetado em {{reason}}`,remove:`Remover`,add:`Adicionar comando`,invalidLine:`Comando de verificação vazio ou com aspas por fechar: {{line}}`,label:`Nome da verificação (opcional)`,moveUp:`Subir`,moveDown:`Descer`},_={title:`Comandos de preparação`,hint:"Comandos idempotentes que o Core executa antes de cada verificação, no checkout do repositório (por exemplo `npx playwright install chromium`).",add:`Adicionar comando de preparação`,invalidLine:`O comando de preparação está vazio ou tem uma aspa não fechada: {{line}}`,repository:`Repositório`,command:`Comando de preparação`,label:`Rótulo de preparação (opcional)`,remove:`Remover`,moveUp:`Mover comando de preparação para cima`,moveDown:`Mover comando de preparação para baixo`,empty:`Sem comandos de preparação. A verificação é executada diretamente no checkout.`},v={title:`Execuções guardadas`,refresh:`Atualizar`,hint:`Continua no worktree original com o âmbito e as configurações guardadas; o progresso aparece no registo desse trabalho. Não publica nem reinicia a entrega do Desktop. As execuções ativas param a partir dos controlos do trabalho.`,empty:`Não há execuções guardadas.`,loadFailed:`Não foi possível carregar as execuções.`,actionFailed:`Não foi possível atualizar esta execução.`,phase:`Próxima fase: {{phase}}`,approve:`Aprovar conclusão`,recover:`Recuperar fase interrompida`,resume:`Retomar`,cancel:`Cancelar continuação`,status:{running:`A continuar…`,succeeded:`Concluído`,failed:`Falhou`,blocked:`Bloqueado`,paused:`Em pausa`,cancelled:`Cancelado`,interrupted:`Interrompido`,unavailable:`Indisponível`,expired:`Expirado`},question:`O arquiteto pergunta:`,answerLabel:`A sua resposta`,answerPlaceholder:`Responda à pergunta; o arquiteto continua com ela.`,answer:`Responder e retomar`,viewLog:`Ver log do job`,implementation:`Implementação`,preserveProgress:`Continue a partir da fase indicada, preservando o trabalho e as configurações guardadas.`,reviewDelivery:`Implementação concluída. Reveja o resultado no log antes da entrega; esta continuação não o publicou.`,prepareDelivery:`Preparar entrega`,dismiss:`Descartar`,selectRecovery:`Selecione as tentativas interrompidas a recuperar`},y={architect:`Lê o código e escreve a proposta, o design, as tarefas e a spec. Só leitura.`,developer:`Implementa as tarefas com testes. Pode editar ficheiros e executar comandos na sandbox do CLI.`,reviewer:`Confere o resultado com a spec e a evidência de verificação. Só leitura.`},b={title:`Limite de revisão`,hint:`Campos vazios usam o limite do Core. Os valores só podem elevá-lo: pontuação geral de pelo menos {{score}}, segurança de pelo menos {{security}}, outros aspetos de pelo menos {{aspect}}.`,minScore:`Pontuação geral mínima (padrão {{score}})`,aspects:{type_correctness:`Correção de tipos (padrão {{score}})`,pattern_adherence:`Aderência a padrões (padrão {{score}})`,test_coverage:`Cobertura de testes (padrão {{score}})`,security:`Segurança (padrão {{score}})`,architectural_alignment:`Alinhamento arquitetural (padrão {{score}})`}},x={title:`Confiança do arquiteto`,hint:`Após uma passagem de investigação autónoma, um design ainda com baixa confiança pausa com a pergunta do arquiteto ou prossegue com suposições declaradas.`,onLowConfidence:`Com baixa confiança`,ask:`Perguntar (pausar com a pergunta)`,proceed:`Prosseguir com suposições declaradas`},S={title:`Consumo e tempo`,hint:`Inclui correções e chamadas falhadas. O tempo dos agentes inclui as ferramentas. Os tokens em cache fazem parte dos tokens de entrada.`,unknown:`Indisponível`,duration:`Tempo de execução`,agentTime:`Tempo dos agentes`,cost:`Custo reportado`,providerCalls:`Chamadas a agentes`,toolCalls:`Chamadas a ferramentas`,input:`Tokens de entrada`,output:`Tokens de saída`,uncached:`Entrada sem cache`,cacheRead:`Leituras da cache`,cacheWrite:`Escritas na cache`,partial:`Algumas tentativas não têm medições detalhadas.`,phases:`Consumo por fase`,phase:`Fase`,attempts:`Tentativas`},C={title:`Prompts dos papéis dos agentes`,description:`Veja e edite as instruções de cada papel. São partilhadas por todos os projetos e fornecedores; as alterações aplicam-se a novos trabalhos. Os trabalhos retomados mantêm os prompts originais.`,definition:`Definição de {{role}}`,default:`Predefinição de fábrica`,custom:`Personalizado`,restore:`Restaurar predefinição`,contracts:`O contexto da spec, o fluxo OpenSpec e o formato de resposta obrigatório são adicionados automaticamente e não são editados aqui.`,invalid:`Cada definição deve conter entre 1 e 20.000 caracteres, com texto não vazio e sem bytes nulos.`,saved:`Prompts dos papéis guardados`,unsaved:`Alterações por guardar`,discard:`Descartar alterações`,save:`Guardar prompts`,fixerHint:`Usado apenas em rondas de correção: após uma verificação falhada ou uma revisão rejeitada. Corre no motor do developer salvo se Definições ▸ Motor dos agentes ▸ Corretor indicar um próprio. Um fornecedor CLI que retoma a sessão do developer recebe o seguimento curto de correção; a definição aplica-se sempre que arranca uma sessão nova (motores locais, motor corretor, sessão perdida).`},w={title:`Eficiência da implementação`,scope:`Aplica-se a novas execuções. As execuções guardadas mantêm a configuração e o motor originais.`,effort:`Esforço de raciocínio`,providerDefault:`Padrão do fornecedor`,unconfirmed:`Não confirmado`,unknownSupport:`O suporte deste modelo e transporte não está confirmado.`,escalation:`Permitir um nível superior com o mesmo fornecedor`,baseRequired:`Selecione primeiro um modelo base explícito.`,escalationModel:`Modelo de nível superior`,triggers:{architect:`Apenas a investigação aprofundada existente pode selecionar este nível.`,developer:`Após dois candidatos falhados, a próxima tentativa permitida pode selecionar este nível.`,reviewer:`Apenas para reparar respostas inválidas; rejeitar código não ativa este nível.`,fixer:`Só uma rodada de correção pode alcançar este nível; as primeiras passagens nunca executam o corretor.`},contextMode:`Contexto do repositório`,reviewMode:`Revisão de correções`,planning:`Profundidade do planeamento`,adaptive:`Adaptativo`,full:`Completo`,developerChecks:`Aceitar verificações adicionais propostas pelo programador`,concurrency:`Máximo de verificações simultâneas`,concurrencyHint:`Padrão: 1. Apenas verificações independentes declaradas pelo anfitrião em repositórios diferentes podem executar em conjunto. Sem reutilização por padrão.`,checkCapabilities:`Verificar compatibilidade dos modelos`,capabilitiesFailed:`Compatibilidade não confirmada. Atualize Core ou mantenha os padrões do fornecedor.`},T={title:`Evidências de verificação`,acceptance:`Aceitação técnica`,acceptanceStatus:{pending:`Pendente`,validated:`Validado`,"with-exceptions":`Com exceções`,blocked:`Bloqueado`},calls:`Chamadas aos agentes`,executed:`Verificações executadas`,reused:`Verificações reutilizadas`,unknown:`Indisponível`,unavailable:`Evidência indisponível. O resultado guardado não prova a validade atual.`,current:`Candidato e plano atuais`,historical:`Resultado histórico`,moreChecks:`Mais verificações`,output:`Saída da verificação`,empty:`Sem saída`,truncated:`Página limitada ou captura truncada.`,nextPage:`Página seguinte`,status:{passed:`Aprovado`,failed:`Falhou`,cancelled:`Cancelado`,interrupted:`Interrompido`},disposition:{executed:`Executado`,reused:`Reutilizado`,"not-run":`Não executado`},origin:`Origem`,origins:{host:`Anfitrião`,architect:`Arquiteto`,developer:`Programador`,"frozen-runtime-config":`Configuração guardada`,"project-role":`Papel do projeto`,default:`Padrão`,"explicit-launch-override":`Fornecedor escolhido para esta execução`,"loop-role":`Papel do loop`},reuseDisabled:`Reutilização desativada para esta verificação.`,reuseConfirmed:`Reutilizado após confirmar entradas e ferramentas idênticas.`,inputsChanged:`As entradas mudaram durante a verificação; resultado invalidado.`,reuseUnproven:`Sem resultado atual com entradas idênticas comprovadas; executado novamente.`,original:`Execução original`,requested:`Solicitado`,reported:`Reportado`},E={title:`Papéis do loop`,hint:`Motores dos papéis do loop quando um rail é lançado com o motor «Papéis». Os papéis do pipeline acima (architect, developer, reviewer) já vêm desta configuração do runtime.`,verifier:`Verificador`,verifierHint:`Todos os passos de IA do loop fora do core: verify, fix e passos de IA personalizados.`,decider:`Decisor`,deciderHint:`O Loop Decider que lê o veredicto e escolhe o passo seguinte — um modelo barato e rápido é a escolha natural.`,inherit:`Herdar o principal`,model:`Modelo`,effort:`Esforço de raciocínio`,disabled:`O runtime de agentes está desativado — os rails lançados com o motor «Papéis» são recusados até ser ativado.`,saveFailed:`Não foi possível guardar os papéis do loop.`},D={title:`Pipeline de implementação`,explainer:`Estas fases executam nesta ordem em cada implementação. Quando o motor do rail é "{{roles}}", cada fase usa o motor configurado abaixo — fornecedor, modelo e esforço diferentes por fase. Escolher um motor concreto no rail executa todas as fases nesse motor.`,host:`Host`,noCommand:`sem comando`,inherits:`Herda o principal`,inheritsDeveloper:`Herda do desenvolvedor`,open:`Abrir`,collapse:`Recolher`,groups:{core:{title:`Pipeline principal`,hint:`Executa dentro de cada implementação: planear, construir, verificar, corrigir, rever.`},loop:{title:`Passos do loop`,hint:`Passos de IA do loop do rail que envolve a execução (verificar → decidir → corrigir) e dos loops personalizados; herdam o motor principal se não forem definidos.`,chip:`loop do rail`}},phases:{architect:{name:`Arquiteto`,purpose:`Lê o código e escreve a proposta, o design e as tarefas.`},developer:{name:`Desenvolvedor`,purpose:`Implementa as tarefas com testes.`},verification:{name:`Verificação`,purpose:`O host executa as suas verificações; as falhas voltam ao desenvolvedor.`},fixer:{name:`Corretor`,purpose:`Corrige o que a verificação ou a revisão rejeitam; herda do desenvolvedor se não for configurado.`},reviewer:{name:`Revisor`,purpose:`Confere o resultado com a spec e as evidências.`},verifier:{name:`Verificador`,purpose:`Passos de IA verify, fix e personalizados do loop.`},decider:{name:`Decisor`,purpose:`Lê o veredito e escolhe o próximo passo do loop.`}}},O={title:`Motor do corretor`,inherit:`Herdar desenvolvedor`,own:`Motor próprio`,hint:`Só é executado em rodadas de correção: após uma verificação falha ou uma revisão rejeitada; as primeiras passagens continuam no desenvolvedor. Um modelo mais forte ou na nuvem aqui compensa quando o desenvolvedor é um modelo local barato.`},k={title:`Guarda-corpos`,intro:`Regras de processo que o host aplica em torno dos modelos locais para que um modelo pequeno não descarrile. Todas ativas por padrão; desative uma apenas para ajustar o processo. Provedores CLI nunca são afetados.`,unsupported:`Esta instalação do Core não expõe guarda-corpos configuráveis. Atualize o Core para ajustá-los; as regras integradas continuam a aplicar-se.`,active:`{{on}} de {{total}} ativos`,reset:`Restaurar padrões`,phases:{architect:`Arquiteto`,developer:`Desenvolvedor`,host:`Host`},unknown:`Um guarda-corpo adicionado por um Core mais recente; este app ainda não tem descrição para ele.`,items:{"plan-validation":{title:`Plano de tarefas validado`,description:`Rejeita planos que apontam para openspec/, listam nomes de arquivo soltos como tarefas, têm poucas tarefas/grupos para a spec ou deixam critérios de aceitação descobertos; o arquiteto tenta novamente.`,why:`Um plano vago ou incompleto é a razão nº 1 para um modelo desenvolvedor pequeno escrever stubs.`},"genuine-blocking-question":{title:`Apenas perguntas bloqueantes reais`,description:`O arquiteto só pode pausar a execução com uma pergunta real terminada em '?', nunca com texto de exemplo copiado.`,why:`Modelos pequenos repetem os marcadores do prompt e bloqueariam todas as execuções.`},"plan-language-hint":{title:`Planejar na linguagem do repositório`,description:`Informa ao arquiteto a linguagem principal para que os nomes de arquivo das tarefas tenham a extensão correta.`,why:`Um plano JS num repo TypeScript torna impossível marcar as tarefas.`},"frozen-plan-writes":{title:`Artefatos de planejamento estão congelados`,description:`O desenvolvedor não pode escrever em openspec/; o plano pertence ao host.`,why:`Modelos 'implementam' editando o plano em vez do código.`},"primary-language":{title:`Lembrete da linguagem principal`,description:`Cada grupo de tarefas recebe a linguagem principal do repositório; arquivos novos devem usá-la.`,why:`Evita uma segunda implementação em outra linguagem.`},"duplicate-sibling":{title:`Sem módulos gêmeos entre linguagens`,description:`Recusa board.js quando board.ts já existe; estenda o módulo existente.`,why:`Gêmeos compilam ambos e os testes importam o errado.`},"one-test-per-module":{title:`Um arquivo de teste por módulo`,description:`Recusa board.tick.test.ts quando board.test.ts existe; estenda-o em vez disso.`,why:`Senão cada passada de correção adiciona uma suíte nova.`},"empty-write":{title:`Sem sobrescritas vazias`,description:`Uma escrita vazia sobre um arquivo com conteúdo é recusada; escreva o conteúdo completo ou aplique um patch.`,why:`Uma passada de 'limpeza' certa vez deixou index.ts com 0 linhas.`},"evidence-gated-ticking":{title:`Evidência antes de marcar uma tarefa`,description:`Uma tarefa que nomeia arquivos só está concluída quando eles existem e não são stubs (extensões irmãs aceitas).`,why:`Sem isso, 'concluído' é só uma afirmação e a verificação roda contra nada.`},"inventory-retry":{title:`Tentar de novo com o inventário real`,description:`Quando o modelo desiste alegando que o repo está vazio sem estar, tenta uma vez mais com a lista de arquivos.`,why:`Segunda chance barata em vez de um passo falhado.`},"synthetic-corrections":{title:`Transformar feedback em tarefas`,description:`Quando todas as tarefas estão marcadas mas review/verify falharam, o feedback vira tarefas de correção concretas.`,why:`Senão o desenvolvedor responde 'já está feito' e nada muda.`},"silent-group-closure":{title:`Fechar grupos silenciosos, manter seus arquivos`,description:`Um grupo cujo modelo para de responder é fechado creditando os arquivos que escreveu e deixando suas tarefas abertas, em vez de falhar a execução.`,why:`Um modelo 9B escreveu cinco módulos, silenciou e toda a execução falhou.`},"environment-repair":{title:`O host repara o ambiente`,description:`Dependências ou ferramentas de teste ausentes (npm install, ts-jest, @types/jest, módulos de config do Jest) são instaladas pelo host e a verificação roda de novo uma vez.`,why:`O modelo não consegue consertar o ambiente e gasta correções tentando.`},"lockfile-repair":{title:`Descartar lockfiles escritos à mão`,description:`Um package-lock.json inventado pelo modelo (EINTEGRITY/ETARGET) é removido e a instalação repetida uma vez.`,why:`Hashes inventados nunca instalam.`},"verify-idle-timeout":{title:`Parar testes travados`,description:`Um comando de verificação sem saída por 5 minutos é interrompido e reportado como provável travamento (última saída incluída).`,why:`Senão um laço while num teste segura a execução até o limite de 15 minutos.`},"verify-per-group":{title:`Verificar após cada grupo`,description:`Executa o comando de teste do repositório logo após cada grupo de tarefas; uma falha recebe uma ronda de correção imediata com o contexto do grupo ainda fresco.`,why:`Cinco suites partidas no fim são muito mais difíceis de corrigir do que uma de cada vez.`},"test-reachability":{title:`Todo teste novo tem de correr mesmo`,description:"Um ficheiro de teste escrito pelo developer que o comando de teste do repositório nunca executa (um script `test` enumerativo que omite o ficheiro novo) falha a verificação com o ficheiro exato, primeiro ao nível do grupo e de novo na verificação do host.",why:`Uma suite de 622 linhas com seis casos a falhar chegou verde porque nada a executou.`},"exit-code-honesty":{title:`Desconfiar de um exit 0 que reporta falhas`,description:'Um comando de verificação que sai com 0 enquanto a saída imprime falhas (linhas `FAIL:`, "3 failed", um AssertionError) é tratado como FALHADO e entregue ao corretor com o harness apontado como o defeito.',why:`Um runner de testes caseiro que nunca definia um exit code diferente de zero entregou três testes vermelhos como verdes.`},"verification-output-adoption":{title:`Adotar a saída escrita pelas próprias verificações`,description:`Se a verificação passar mas os seus comandos reescreverem ficheiros versionados (um passo de lint que regenera um mapeamento), o host mantém esses ficheiros no candidato e verifica mais uma vez; o reviewer e o fixer não os devem reverter.`,why:`Um passo de lint que regenerava um ficheiro versionado fazia cada execução verde parecer um candidato alterado e gastava correções num não-defeito.`}}},A=`Alterações não guardadas`,j={title:`Funções personalizadas`,hint:`Defina instruções reutilizáveis e permissões explícitas para as funções do fluxo.`,unsupported:`Atualize o Core para editar funções personalizadas.`,remove:`Remover {{id}}`,access:`Acesso ao código`,read:`Somente leitura`,write:`Leitura e escrita`,artifacts:`Acesso aos artefatos OpenSpec`,none:`Nenhum`,tasks:`Somente caixas de tarefas`,all:`Todos os artefatos da alteração`,skill:`Skill do OpenSpec`,noSkill:`Nenhuma skill associada`,prompt:`Instruções da função`,id:`ID da função`,add:`Adicionar função`,invalidId:`Use um ID único em minúsculas que comece com uma letra, com até 64 letras, números ou hífens. Os IDs integrados são reservados.`,escalationHint:`Somente uma correção permitida do protocolo pode usar o modelo de escalonamento. Nenhuma tentativa extra é adicionada.`},M={title:`Instruções de execução`,hint:`O Core guarda estas instruções para o próximo turno de agente compatível. O envio não responde a perguntas nem concede aprovações.`,label:`Instruções adicionais`,send:`Enviar instruções`,accepted:`Recebidas pelo Core; aguardando utilização.`,pending:`Aguardando um turno de agente`,consumed:`Utilizadas por um agente`,counts:`Pendentes: {{pending}} · Utilizadas: {{consumed}}`,failed:`Não foi possível enviar as instruções. Tente novamente para confirmar a mesma mensagem.`,unavailable:`Os detalhes dos recibos estão indisponíveis.`,unreported:`Esta versão do Core não informa a utilização.`,truncated:`São apresentados apenas os recibos recentes e as mensagens pendentes.`},N={title:`Valores padrão do papel do Core`,hint:`Estes valores do arquivo aplicam-se a novos workflows. As configurações explícitas do projeto têm prioridade; as execuções salvas mantêm as configurações fixadas.`,invalid:`Corrija o cabeçalho YAML no editor antes de alterar os campos do papel.`,escalationEffort:`Esforço de raciocínio do modelo superior`},P={title:`Retenção do histórico`,description:`Elimine históricos expirados e versões do Core sem uso. Históricos eliminados não podem ser retomados nem bifurcados. Execuções ativas ou recuperáveis e entregas pendentes ficam protegidas; registos de trabalhos e custos são mantidos.`,forever:`Manter o histórico indefinidamente`,days:`Dias de retenção`,save:`Guardar retenção`,preview:`Pré-visualizar limpeza`,collect:`Eliminar histórico expirado`,previewSummary:`Elegíveis: {{runs}} históricos e {{packages}} versões do Core sem uso.`,collectedSummary:`Expirados: {{runs}} históricos. Removidas: {{packages}} versões do Core sem uso.`,more:`{{count}} execuções adicionais.`,failed:`Não foi possível consultar ou atualizar a retenção.`,expired:`Este histórico expirou segundo a política do projeto. O registo do trabalho e a contabilidade continuam disponíveis.`,loading:`A carregar a política…`,states:{protected:`Mantido`,eligible:`Elegível`,expired:`Expirado`,cleanup_pending:`Limpeza pendente`,busy:`Em uso`,error:`Falha na inspeção`},reasons:{disabled:`Retenção indefinida`,recoverable:`Recuperação ainda disponível`,active:`Execução ativa`,human_pending:`A aguardar resposta humana`,interrupted_writes:`Escritas interrompidas por rever`,delivery_pending:`Entrega pendente`,fork_pending:`Existe uma bifurcação dependente`,unknown_terminal_time:`Data de conclusão desconhecida`,within_retention:`Dentro do período de retenção`}},F={title:`Loop agents`,hint:`These definitions are shared by every project using this loop. Duplicate the loop to customize a separate workflow.`,legacy:`This saved loop still uses historical project agents. Import them or enable loop agents before changing its configuration.`,enable:`Use loop agents`,import:`Import current project agents`,restoreDefinition:`Usar a definição do Core`,default:`Provider default`,effort:`Reasoning effort`,escalationModel:`Escalation model`,escalationEffort:`Escalation effort`,policy:`Workflow policy`,maxAttempts:`Maximum correction attempts`,maxTokens:`Token budget`,maxCostUsd:`Cost budget (USD)`,timeoutMs:`Run timeout (ms)`,projectHint:`Configure repository checks here. Agent definitions, models and workflow policy are configured in the loop editor. Historical project agents can be imported into a duplicated loop.`,showUnused:`Also show agents not used in this loop`,stepTitle:`Step agent and options`,stepHint:`Edit this step’s agent definition and engine. Steps using the same role in this loop share these settings.`,inheritProvider:`Herdar o fornecedor da missão`,inheritDefinition:`Segue a definição do Core: cada atualização do Core renova-a automaticamente.`,customizeDefinition:`Personalizar para este loop`,coreDefinitionUnavailable:`Pré-visualização indisponível até instalar um runtime do Core.`,turnLimits:{title:`Limites de turnos`,hint:`Cada chamada a uma ferramenta do agente conta como um turno. Se um passo parar com "reached the configured limit of N turns", aumente aqui o seu limite, guarde e publique; os novos lançamentos vão usá-lo. Vazio usa o valor por defeito do Core ({{turns}}). As definições do projeto não alteram as execuções de loops.`,role:`Função {{role}}`,input:`Máximo de turnos para {{steps}} (função {{role}})`,stepHint:`A função {{role}} para após {{turns}} turnos. Os passos que partilham esta função partilham o limite; aplica-se aos novos lançamentos depois de publicar.`}},I={title:e,description:t,loading:n,loadFailed:r,retry:i,unavailable:a,save:o,saving:s,saved:c,saveFailed:l,approvalBeforeArchive:u,providers:d,cliNames:f,roles:p,agents:m,limits:h,verification:g,setup:_,runs:v,roleHints:y,review:b,architect:x,metrics:S,prompts:C,efficiency:w,evidence:T,loopRoles:E,pipeline:D,fixer:O,guardrails:k,unsavedChanges:A,customRoles:j,steering:M,studioRole:N,retention:P,loopAgents:F};export{m as agents,u as approvalBeforeArchive,x as architect,f as cliNames,j as customRoles,I as default,t as description,w as efficiency,T as evidence,O as fixer,k as guardrails,h as limits,r as loadFailed,n as loading,F as loopAgents,E as loopRoles,S as metrics,D as pipeline,C as prompts,d as providers,P as retention,i as retry,b as review,y as roleHints,p as roles,v as runs,o as save,l as saveFailed,c as saved,s as saving,_ as setup,M as steering,N as studioRole,e as title,a as unavailable,A as unsavedChanges,g as verification};
|
package/client/dist/assets/{formatDistanceToNow-NVM6rK3i.js → formatDistanceToNow-CdN5lTyD.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,C as t,S as n,k as r,w as i,x as a,y as o}from"./useSharedWebSocket-
|
|
1
|
+
import{A as e,C as t,S as n,k as r,w as i,x as a,y as o}from"./useSharedWebSocket-CcsE5986.js";import{t as s}from"./getTimezoneOffsetInMilliseconds-62h40I4t.js";function c(e,t){let n=a(e)-+a(t);return n<0?-1:n>0?1:n}function l(e){return i(e,Date.now())}function u(e,n,r){let[i,a]=t(r?.in,e,n),o=i.getFullYear()-a.getFullYear(),s=i.getMonth()-a.getMonth();return o*12+s}function d(e){return t=>{let n=(e?Math[e]:Math.trunc)(t);return n===0?0:n}}function f(e,t){return a(e)-+a(t)}function p(e,t){let n=a(e,t?.in);return n.setHours(23,59,59,999),n}function m(e,t){let n=a(e,t?.in),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function h(e,t){let n=a(e,t?.in);return+p(n,t)==+m(n,t)}function g(e,n,r){let[i,a,o]=t(r?.in,e,e,n),s=c(a,o),l=Math.abs(u(a,o));if(l<1)return 0;a.getMonth()===1&&a.getDate()>27&&a.setDate(30),a.setMonth(a.getMonth()-s*l);let d=c(a,o)===-s;h(i)&&l===1&&c(i,o)===1&&(d=!1);let f=s*(l-+d);return f===0?0:f}function _(e,t,n){let r=f(e,t)/1e3;return d(n?.roundingMethod)(r)}function v(i,a,l){let u=n(),d=l?.locale??u.locale??o,f=c(i,a);if(isNaN(f))throw RangeError(`Invalid time value`);let p=Object.assign({},l,{addSuffix:l?.addSuffix,comparison:f}),[m,h]=t(l?.in,...f>0?[a,i]:[i,a]),v=_(h,m),y=(s(h)-s(m))/1e3,b=Math.round((v-y)/60),x;if(b<2)return l?.includeSeconds?v<5?d.formatDistance(`lessThanXSeconds`,5,p):v<10?d.formatDistance(`lessThanXSeconds`,10,p):v<20?d.formatDistance(`lessThanXSeconds`,20,p):v<40?d.formatDistance(`halfAMinute`,0,p):v<60?d.formatDistance(`lessThanXMinutes`,1,p):d.formatDistance(`xMinutes`,1,p):b===0?d.formatDistance(`lessThanXMinutes`,1,p):d.formatDistance(`xMinutes`,b,p);if(b<45)return d.formatDistance(`xMinutes`,b,p);if(b<90)return d.formatDistance(`aboutXHours`,1,p);if(b<1440){let e=Math.round(b/60);return d.formatDistance(`aboutXHours`,e,p)}else if(b<2520)return d.formatDistance(`xDays`,1,p);else if(b<43200){let e=Math.round(b/r);return d.formatDistance(`xDays`,e,p)}else if(b<43200*2)return x=Math.round(b/e),d.formatDistance(`aboutXMonths`,x,p);if(x=g(h,m),x<12){let t=Math.round(b/e);return d.formatDistance(`xMonths`,t,p)}else{let e=x%12,t=Math.trunc(x/12);return e<3?d.formatDistance(`aboutXYears`,t,p):e<9?d.formatDistance(`overXYears`,t,p):d.formatDistance(`almostXYears`,t+1,p)}}function y(e,t){return v(e,l(e),t)}export{y as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{x as e}from"./useSharedWebSocket-
|
|
1
|
+
import{x as e}from"./useSharedWebSocket-CcsE5986.js";function t(t){let n=e(t),r=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()));return r.setUTCFullYear(n.getFullYear()),t-+r}export{t};
|