specrails-desktop 2.49.2 → 2.51.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.
Files changed (134) hide show
  1. package/client/dist/assets/ActivityFeedPage-Bu6_Fxfa.js +1 -0
  2. package/client/dist/assets/{AgentBrowserCapture-DBGaKW4u.js → AgentBrowserCapture-ChIVaQ4N.js} +1 -1
  3. package/client/dist/assets/AgentModeAnalyticsPane-Dq59o2ZO.js +2 -0
  4. package/client/dist/assets/AgentModeCodePane-VjaDQOAZ.js +2 -0
  5. package/client/dist/assets/{AgentModeJobsPane-DkhcBtoZ.js → AgentModeJobsPane-DQST3Y8L.js} +1 -1
  6. package/client/dist/assets/AgentsPage-9ajYQTPV.js +87 -0
  7. package/client/dist/assets/{AnalyticsPage-DisrtBr7.js → AnalyticsPage-DgHAcKnO.js} +1 -1
  8. package/client/dist/assets/CodePage-tDBdWNkc.js +3 -0
  9. package/client/dist/assets/{DesktopAnalyticsPage-BFB-Pn-D.js → DesktopAnalyticsPage-fxggfmsY.js} +1 -1
  10. package/client/dist/assets/{DocsDialog-BwiFrwEJ.js → DocsDialog-0J6gUakl.js} +1 -1
  11. package/client/dist/assets/{DocsPage-ByS0ZCco.js → DocsPage-bQ6h2xx0.js} +1 -1
  12. package/client/dist/assets/{ExportDropdown-IPutNYvD.js → ExportDropdown-y2k4CoRJ.js} +1 -1
  13. package/client/dist/assets/InteractiveJobComposer-BI-y4fFH.js +19 -0
  14. package/client/dist/assets/{JobDetailModal-BnO_V8KR.js → JobDetailModal-B4cur32x.js} +1 -1
  15. package/client/dist/assets/JobDetailPage--VZYZ76E.js +1 -0
  16. package/client/dist/assets/JobsPage-K4wj2mXV.js +1 -0
  17. package/client/dist/assets/{LoopBuilderPage-WmqNpDw2.js → LoopBuilderPage-Cu9bNaZf.js} +2 -2
  18. package/client/dist/assets/{LoopPreviewModal-BY5dDezY.js → LoopPreviewModal-DmwboMLZ.js} +1 -1
  19. package/client/dist/assets/{LoopsPage-BcegqJyY.js → LoopsPage-Db8wSZSW.js} +1 -1
  20. package/client/dist/assets/{MinimizedChatsContext-CX1i2kQ8.js → MinimizedChatsContext-CoRyZxu4.js} +1 -1
  21. package/client/dist/assets/{PluginsPage-BhG3qPda.js → PluginsPage-A4dSzbGE.js} +2 -2
  22. package/client/dist/assets/{ProjectSettingsDialog-JQdLwCy2.js → ProjectSettingsDialog-DLrka37M.js} +1 -1
  23. package/client/dist/assets/{RepositoryDeliveries-DqmlG0Zs.js → RepositoryDeliveries-FYr8nbCo.js} +1 -1
  24. package/client/dist/assets/{RepositoryScopeSelector-DG8KKPrm.js → RepositoryScopeSelector-CBkDsqpz.js} +1 -1
  25. package/client/dist/assets/ReviewPacketPage-BGsesCFL.js +4 -0
  26. package/client/dist/assets/{TemplatePreviewModal-1AVv-hu4.js → TemplatePreviewModal-uGbE-mTU.js} +1 -1
  27. package/client/dist/assets/TicketDetailModalContext-lmkauO0-.js +16 -0
  28. package/client/dist/assets/{Trans-BLljsfHR.js → Trans-92vqs9mz.js} +1 -1
  29. package/client/dist/assets/{agent-BII69Nc0.js → agent-BaG10AN6.js} +1 -1
  30. package/client/dist/assets/{agent-CYFBDwFD.js → agent-CH4aJ884.js} +1 -1
  31. package/client/dist/assets/{agent-CVeMLIu4.js → agent-CLc9fA7v.js} +1 -1
  32. package/client/dist/assets/{agent-B76BhAyE.js → agent-DHh9-AdL.js} +1 -1
  33. package/client/dist/assets/{agent-DSrflYFL.js → agent-DkKnd6Wv.js} +1 -1
  34. package/client/dist/assets/{agent-BIO4q6b0.js → agent-aiVhqFW1.js} +1 -1
  35. package/client/dist/assets/{agent-ButS6kwl.js → agent-dbznD3eO.js} +1 -1
  36. package/client/dist/assets/{agent-D3jkMipn.js → agent-sMVFcPwL.js} +1 -1
  37. package/client/dist/assets/{formatDistanceToNow-CbQZkD8M.js → formatDistanceToNow-Cuoagaiu.js} +1 -1
  38. package/client/dist/assets/{getTimezoneOffsetInMilliseconds-pBVK3rJC.js → getTimezoneOffsetInMilliseconds-BLaUfsdD.js} +1 -1
  39. package/client/dist/assets/index-BAtqmAZR.css +2 -0
  40. package/client/dist/assets/index-Cxdhikml.js +80 -0
  41. package/client/dist/assets/{jira-api-f-sYCIuX.js → jira-api-DqYxW5BY.js} +1 -1
  42. package/client/dist/assets/layers-eDMjG41I.js +1 -0
  43. package/client/dist/assets/{packet-DQ_GnT2b.js → packet-CjS_478C.js} +1 -1
  44. package/client/dist/assets/{packet-r7J14m89.js → packet-D69dKsHN.js} +1 -1
  45. package/client/dist/assets/{packet-DF-iwqqY.js → packet-D9rU6Oxo.js} +1 -1
  46. package/client/dist/assets/{packet-Nb8BLI5h.js → packet-DMDFoamg.js} +1 -1
  47. package/client/dist/assets/{packet-C0pcMd6x.js → packet-Dd2RMs1h.js} +1 -1
  48. package/client/dist/assets/{packet-BsRimSfZ.js → packet-DjC9OibC.js} +1 -1
  49. package/client/dist/assets/packet-DwPtJoDz.js +1 -0
  50. package/client/dist/assets/{packet-C8qzvgrZ.js → packet-ceahDg8_.js} +1 -1
  51. package/client/dist/assets/{project-repositories-DAjJbFhm.js → project-repositories-DbVfkVQJ.js} +1 -1
  52. package/client/dist/assets/rotate-ccw-Wh4id13q.js +1 -0
  53. package/client/dist/assets/specs-Bqvtz2kz.js +1 -0
  54. package/client/dist/assets/specs-CKes-kz6.js +1 -0
  55. package/client/dist/assets/specs-CfXxPDNB.js +1 -0
  56. package/client/dist/assets/specs-CyF9HuTI.js +1 -0
  57. package/client/dist/assets/specs-DMj035Mt.js +1 -0
  58. package/client/dist/assets/specs-DfIdoU5L.js +1 -0
  59. package/client/dist/assets/specs-j5pGLQeU.js +1 -0
  60. package/client/dist/assets/specs-xW5pkkB7.js +1 -0
  61. package/client/dist/assets/{spending-DJBbdJyD.js → spending-ul_XBA3M.js} +1 -1
  62. package/client/dist/assets/{tickets-Bc71ce1C.js → tickets--tiSOCcn.js} +1 -1
  63. package/client/dist/assets/{tickets-CLg7VTJ8.js → tickets-BUJ3DMWU.js} +1 -1
  64. package/client/dist/assets/{tickets-CZNBiHbq.js → tickets-C1WNPODq.js} +1 -1
  65. package/client/dist/assets/{tickets-DlX2mEkD.js → tickets-CDjhWmiE.js} +1 -1
  66. package/client/dist/assets/{tickets-B4rjuSYi.js → tickets-CLgPC3uO.js} +1 -1
  67. package/client/dist/assets/tickets-D41ZMQpf.js +1 -0
  68. package/client/dist/assets/{tickets-CP9U1GJt.js → tickets-DEaQC06P.js} +1 -1
  69. package/client/dist/assets/{tickets-_yKvCt4Y.js → tickets-kcMzbLCp.js} +1 -1
  70. package/client/dist/assets/{useDesktop-BJ8IRBRt.js → useDesktop-BC_4XGnf.js} +1 -1
  71. package/client/dist/assets/{useRuntimeRuns-Ch1KUc7k.js → useRuntimeRuns-B_YsBTsN.js} +1 -1
  72. package/client/dist/assets/{useSharedWebSocket-BN3Lmehi.js → useSharedWebSocket-8NyZpT6v.js} +2 -2
  73. package/client/dist/assets/zap-CUOlvtT1.js +1 -0
  74. package/client/dist/index.html +22 -20
  75. package/docs/creating-specs.md +31 -0
  76. package/docs/guide/de/specs/1-specs-and-the-backlog.md +4 -0
  77. package/docs/guide/en/specs/1-specs-and-the-backlog.md +4 -0
  78. package/docs/guide/es/specs/1-specs-and-the-backlog.md +4 -0
  79. package/docs/guide/fr/specs/1-specs-and-the-backlog.md +4 -0
  80. package/docs/guide/it/specs/1-specs-and-the-backlog.md +4 -0
  81. package/docs/guide/ja/specs/1-specs-and-the-backlog.md +4 -0
  82. package/docs/guide/pt/specs/1-specs-and-the-backlog.md +4 -0
  83. package/docs/guide/zh/specs/1-specs-and-the-backlog.md +4 -0
  84. package/docs/internals/safe-pr-review-flow.md +80 -0
  85. package/docs/internals/spec-addenda.md +166 -0
  86. package/docs/mcp.md +1 -1
  87. package/package.json +1 -1
  88. package/server/dist/agent-context-resolver.js +5 -0
  89. package/server/dist/agent-operator-prompt.js +41 -1
  90. package/server/dist/db.js +22 -0
  91. package/server/dist/jira/jira-materializer.js +3 -0
  92. package/server/dist/loop-run-manager.js +6 -1
  93. package/server/dist/mcp/guide.js +10 -0
  94. package/server/dist/mcp/tools/rails.js +24 -0
  95. package/server/dist/mcp/tools/specs.js +68 -3
  96. package/server/dist/multi-repo-delivery.js +4 -0
  97. package/server/dist/pr-follow-up-scope.js +224 -0
  98. package/server/dist/pr-follow-up.js +75 -0
  99. package/server/dist/project-registry.js +43 -0
  100. package/server/dist/project-router-tickets.js +223 -0
  101. package/server/dist/queue-manager.js +34 -1
  102. package/server/dist/rail-isolated-launch.js +16 -0
  103. package/server/dist/rail-launch-parser.js +12 -0
  104. package/server/dist/rail-pr-decision.js +20 -3
  105. package/server/dist/rail-pr-store.js +40 -3
  106. package/server/dist/rail-pr-ticket-effects.js +21 -0
  107. package/server/dist/rails-router.js +63 -3
  108. package/server/dist/review-packet.js +45 -0
  109. package/server/dist/spec-addenda-core.js +281 -0
  110. package/server/dist/spec-addenda.js +338 -0
  111. package/server/dist/ticket-store.js +5 -1
  112. package/client/dist/assets/ActivityFeedPage-CyOxof-U.js +0 -1
  113. package/client/dist/assets/AgentModeAnalyticsPane-WZpPaNMa.js +0 -2
  114. package/client/dist/assets/AgentModeCodePane-nHYnJUdP.js +0 -2
  115. package/client/dist/assets/AgentsPage-CX90q-nY.js +0 -87
  116. package/client/dist/assets/CodePage-ixqxftCT.js +0 -3
  117. package/client/dist/assets/InteractiveJobComposer-BEok7ntM.js +0 -19
  118. package/client/dist/assets/JobDetailPage-BnS8aHKD.js +0 -1
  119. package/client/dist/assets/JobsPage-BC0mq-MF.js +0 -1
  120. package/client/dist/assets/ReviewPacketPage-DSSi3x16.js +0 -4
  121. package/client/dist/assets/TicketDetailModalContext-D2MEhRwJ.js +0 -14
  122. package/client/dist/assets/index-DEqG4WdV.js +0 -80
  123. package/client/dist/assets/index-UDzndadF.css +0 -2
  124. package/client/dist/assets/packet-BTRySHoQ.js +0 -1
  125. package/client/dist/assets/specs-BcyxaCwf.js +0 -1
  126. package/client/dist/assets/specs-C1q9geAi.js +0 -1
  127. package/client/dist/assets/specs-CLZKysq-.js +0 -1
  128. package/client/dist/assets/specs-DII0C8gw.js +0 -1
  129. package/client/dist/assets/specs-DZMS9o54.js +0 -1
  130. package/client/dist/assets/specs-Dm6zUI-R.js +0 -1
  131. package/client/dist/assets/specs-V3TvhKLX.js +0 -1
  132. package/client/dist/assets/specs-dV3Mq5Mu.js +0 -1
  133. package/client/dist/assets/tickets-W6pBmbrX.js +0 -1
  134. package/client/dist/assets/zap-CHo3aCD1.js +0 -1
@@ -1 +1 @@
1
- var e=`Controle de missões`,t=`Opere o Specrails conversando`,n=`Controle de missões`,r=`Peça ao agente o que quiser…`,i=`Enviar`,a=`Parar`,o=`Copiar`,s={openPreview:`Pré-visualizar {{name}}`,openDownload:`Transferir {{name}}`,previewTitle:`Pré-visualização de {{name}}`,downloadTitle:`Transferir ficheiro?`,downloadPrompt:`Este ficheiro não pode ser pré-visualizado aqui. Queres transferi-lo?`,download:`Transferir`,cancelDownload:`Agora não`,loading:`A preparar ficheiro…`,loadFailed:`Não foi possível carregar o anexo`,loadError:`Não foi possível carregar o anexo: {{error}}`},c=`Maximizar`,l=`Restaurar`,u=`Minimizar`,d=`Fechar`,f=`Nova missão`,p=`Qual é a missão?`,m=`Escolha um projeto e depois pergunte. O quadro é atualizado ao vivo enquanto o agente trabalha.`,h=`Pensando…`,g=`Conectando…`,_=`Consultando o app…`,v={compact:`Compacto`,comfortable:`Confortável`,max:`Maximizar`},y={label:`Modelo`,loading:`Carregando modelos…`,unavailable:`Modelos indisponíveis`},b={hint:`Explorando histórico — escreva para editar, ↑↓ para navegar`},x={queued:`Na fila`,send:`Enviar mensagem`,sendHint:`Enfileirar para o próximo turno. Escolha «Orientar» em uma mensagem na fila para enviá-la sem interromper o modelo.`,placeholder:`Adicionar uma mensagem à fila…`,delivered:`Entregue ao agente`,interrupted:`Entrega não confirmada`,cancelled:`Cancelada antes da entrega`,steer:`Orientar`,steerHint:`Enviar sem interromper o modelo`,steering:`Enviando ao agente…`,remove:`Excluir mensagem da fila`,more:`Opções da mensagem`,edit:`Editar`,actionConflict:`Esta mensagem já está sendo entregue ou não está mais na fila.`,actionFailed:`Não foi possível atualizar a mensagem na fila. Tente novamente.`},S={sent:`Enviado ao agente`,received:`Entregue ao agente`,read:`Lido pelo agente`,interrupted:`Entrega não confirmada`,cancelled:`Cancelado antes da entrega`},C={editing:`Editando mensagem pendente {{n}} de {{m}}`,hint:`↑↓ para navegar · Enter salva · Esc cancela`,save:`Salvar mensagem pendente`,cancel:`Cancelar edição`,dispatched:`Essa mensagem já foi entregue; seu texto foi mantido como rascunho`,saveFailed:`Não foi possível salvar a mensagem pendente`},w={branch:`Branch`,detached:`(detached)`,dirty:`Alterações sem commit`,switched:`Mudou para {{branch}}`,switchFailed:`Não foi possível trocar de branch`,lockedWhileWorking:`Branch bloqueada enquanto o agente trabalha`,searchPlaceholder:`Buscar branches…`,noMatches:`Nenhuma branch corresponde`,worktrees:`Worktrees`,worktreePathCopied:`Caminho do worktree copiado`,copyWorktreePath:`Copiar caminho do worktree`,repository:`Repositório`,repositoryUnavailable:`Repositório indisponível`,loadFailed:`Estado do Git indisponível`,notGit:`Pasta de contexto · sem Git`,retry:`Tentar novamente`},T={label:`Provedor`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},E={cycleHint:`⇧⇥ para mudar`,observe:{name:`Observa`,desc:`Somente leitura — nada muda`},edit:{name:`Edita`,desc:`Criar e editar (reversível)`},operate:{name:`Opera`,desc:`Lançar IA — tem custo`},autonomous:{name:`Autônomo`,desc:`Excluir e encerrar — irreversível`},lockedTitle:`Precisa de um nível superior`,lockedBody:`Essa ação precisa do nível "{{level}}". Você está no "{{current}}".`,raiseHint:`⇧⇥ para aumentar o nível, ou peça de outra forma.`},D={title:`Confirmar ação`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Aprovar`,cancel:`Cancelar`,dontAskAgain:`Não perguntar de novo nesta sessão`,approved:`Aprovado`,cancelled:`Cancelado`},O={home:`Início`,searchPlaceholder:`Fale com o Specrails…`,searchProjectsPlaceholder:`Buscar projetos…`,recents:`Recentes`,allProjects:`Todos os projetos`,searchAll:`Buscar em todos os projetos`,addProject:`Adicionar projeto…`,homeHint:`Nenhum projeto selecionado — operando em todos os projetos.`,askCreateOrSearch:`Nenhum projeto está selecionado. Você quer criar um novo projeto ou buscar em todos os projetos?`},k={remove:`Remover {{label}}`,addContextAction:`Adicionar contexto ou ação`,filtering:`Filtrando "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`Sem resultados`,noMatchesFor:`Sem resultados para "{{query}}"`,mode:{reference:{title:`Referência`,hint:`@ projetos, specs, missões`},trace:{title:`Traço`,hint:`# jobs, execuções, IDs`},action:{title:`Ação`,hint:`/ comandos para este contexto`}},plus:{reference:`Referência`,referenceHint:`Projetos, specs, missões`,trace:`Traço`,traceHint:`Jobs, execuções, IDs`,action:`Ação`,actionHint:`Criar, lançar, inspecionar`,fileAttachment:`Anexo de arquivo`,fileAttachmentHint:`Adicionar docs, imagens, logs`,browserCapture:`Captura do navegador`,browserCaptureHint:`Capturar uma área da página para esta missão`},railGroup:`Rails`,railGroupInUse:`Rails em uso`},A={label:`Trocar de missão`,untitled:`Nova missão`,new:`Nova missão`,searchPlaceholder:`Pesquisar missões…`,noMatches:`Nenhuma missão corresponde`,working:`O agente está trabalhando`,queuedBadge:`{{n}} na fila`,delete:`Excluir missão "{{title}}"`,deleteConfirm:`Excluir?`,deleteLiveConfirm:`O agente está trabalhando — excluir mesmo assim?`,confirmDelete:`Confirmar exclusão`,cancelDelete:`Manter missão`,deleteFailed:`Não foi possível excluir a missão`},j={title:`Nenhum provedor de IA instalado`,body:`O agente precisa de Claude, Codex, Gemini ou Kimi na sua máquina. Instale um e reabra o agente para começar a conversar.`,placeholder:`Instale um provedor de IA para usar o agente…`},M={title:`O MCP do Specrails está desligado`,body:`O agente precisa do servidor MCP integrado para operar o app.`,enable:`Ativar o MCP do Specrails`,enabling:`Ativando…`,enabled:`MCP ativado`},N={live:`ao vivo`,queued:`na fila`,running:`em execução`,done:`concluído`,failed:`falhou`},P={generic:`Algo deu errado. Tente novamente.`,busy:`O agente está ocupado. Tente novamente em um instante.`},F={kindAgent:`Missão do agente`},I=`Nova missão`,L=`Mudar para o Controle de missões`,R=`Mudar para o quadro`,z=`Buscar`,B=`Início`,V=`Missões favoritas`,H=`Sem título`,U={title:`No workspace`,terminal:`Terminal`,files:`Arquivos`,browser:`Navegador`,requiresProject:`Selecione um projeto para usar esta ferramenta`,resizeCode:`Redimensionar painel de código`,closeFiles:`Fechar código`,browserConfirm:`Adicionar ao agente`,browserSelectStart:`Selecionar para adicionar à missão`,browserCaptured:`Captura adicionada`,uploadFailed:`Falha no upload`,requiresConversation:`Inicie uma missão para usar esta ferramenta`,jobs:`Jobs`,closeJobs:`Fechar jobs`,resizeJobs:`Redimensionar painel de jobs`,noJobs:`Ainda não há jobs — peça ao agente para lançar um`,analytics:`Analítica`,closeAnalytics:`Fechar analítica`,resizeAnalytics:`Redimensionar painel de analítica`},W=`Anexar arquivo`,G=`Excluir "{{title}}"`,K=`Confirmar exclusão de "{{title}}"`,q=`Adicionar "{{title}}" aos favoritos`,J=`Remover "{{title}}" dos favoritos`,Y=`confirmar?`,X=`Este provedor ainda não lê imagens — anexe arquivos de texto`,Z={label:`Esforço`,minimal:`Mínimo`,low:`Baixo`,medium:`Médio`,high:`Alto`,xhigh:`Extra alto`,max:`Máximo`,ultra:`Ultra`},Q=JSON.parse(`{"operation":{"inProgress":"Ação em andamento…","create-pr":"Criando PR…","publish":"Publicando…","discard":"Descartando…","dismiss":"Encerrando acompanhamento…","poll-merge":"Verificando merge…","reopen":"Reabrindo…","merge-local":"Integrando localmente…","recover-and-retry":"A criar o commit e a tentar novamente o push do resultado preservado…","acknowledge-no-changes":"Marcando como concluído…"},"markDone":"Marcar como concluídas","refine":"Refinar","completedNote":"Confirmado — as specs foram movidas para Concluído","partialSummary":"{{succeeded}} de {{total}} concluídas; {{failed}} falharam","unit":{"failed":"implementação falhou","blocked":"entrega bloqueada","noChanges":"sem alterações","succeeded":"pronta"},"rail":"Rail {{index}}","specCount_one":"{{count}} spec","specCount_other":"{{count}} specs","base":"Ramo base","openPr":"Abrir PR","existingPr":"PR existente","title":{"no_changes":"Nenhuma alteração necessária","partial":"Implementação parcial","delivery_blocked":"Implementação concluída — a entrega requer atenção","update_failed":"Implementação concluída — falha na atualização","pr_closed":"PR fechada sem merge","superseded":"Substituída por uma execução mais recente","existing_pr_updated":"PR existente atualizada","building":"A implementar num worktree isolado…","buildingExistingPr":"A aplicar alterações numa PR existente…","paused":"Precisa de decisão humana","on_review":"Implementação pronta para revisão","pr_draft":"PR em rascunho criada","pr_draft_degraded":"Entrega da PR incompleta","pr_ready":"PR pronta para merge","implementation_failed":"Implementação falhou","pr_failed":"Falha ao criar a PR","merged":"Merge da PR concluído","discarded":"Descartada"},"buildingHint":"Quando terminar, ser-lhe-á perguntado se quer criar a PR.","buildingExistingPrHint":"O Specrails está a trabalhar no ramo da PR existente e irá enviar as alterações de revisão para essa mesma PR.","paused":"Implementação em pausa","pausedForRun":"Em pausa em {{ref}}","resume":"Retomar","stopExecution":"Parar execução","stopExecutionSent":"Sinal de paragem enviado","stopExecutionFailed":"Não foi possível parar a execução","createPr":"Criar PR","publish":"Publicar","checkout":"Mudar para o branch","openReview":"Revisar","openReviewTooltip":"Abrir a revisão em linguagem clara","checkoutTooltip":"Fazer checkout de {{branch}} na pasta principal do projeto","checkoutSuccess":"Checkout feito em {{branch}}","checkoutFailed":"Não foi possível fazer checkout da branch de implementação","checkoutDirtyTitle":"Checkout bloqueado para proteger as suas alterações","checkoutDirtyBody":"A pasta principal do projeto contém alterações sem commit. Faça commit ou stash e tente novamente. Não foi feita qualquer alteração.","checkoutSafetyUnknownTitle":"Checkout em pausa porque não foi possível verificar a segurança","checkoutSafetyUnknownBody":"O Specrails não conseguiu ler o estado do Git na pasta principal do projeto. Nada foi libertado ou alterado. Tente novamente quando o Git estiver disponível.","checkoutNotDeliverableTitle":"Esta branch não contém a implementação preservada","checkoutNotDeliverableBody":"O commit exato da entrega ainda não foi verificado. Em alternativa, inspecione ou recupere o resultado local.","inspectLocalResult":"Inspecionar resultado local","inspectLocalResultTooltip":"Mostrar o worktree isolado preservado e copiar o respetivo caminho","localResultPathCopied":"Caminho do resultado local copiado","localResultPath":"Resultado local preservado","localResultUnavailableHere":"Não existe nenhum worktree recuperável neste computador. Consulte o log da execução no computador onde foi iniciada.","recoverAndRetry":"Fazer commit e tentar push novamente","recoverAndRetryVerified":"O commit recuperado {{sha}} está verificado na PR","recoveryStillBlocked":"A recuperação local ainda requer atenção","recheckRecovery":"Verificar novamente","recoveryUnavailable":"Não foi possível verificar a recuperação neste computador","recoveryUnavailableBody":"O Specrails não conseguiu comprovar com segurança um único resultado pertencente à entrega neste clone. Nada foi alterado ou removido. Consulte os detalhes da etapa e os registos de execução. Se o run foi executado noutro computador, abra o Specrails nele e verifique novamente.","recoveryDetailSummary":"Detalhe técnico da recuperação","retry":"Tentar novamente","retryPr":"Tentar PR novamente","checkMerge":"Verificar merge","verifyPr":"Verificar PR","discard":"Descartar","confirmDiscard":"Confirmar descarte?","mergedNote":"Merge concluído — specs movidas para Concluído","discardedNote":"Descartada — specs devolvidas ao backlog","implementationFailedNote":"A execução de implementação falhou antes de produzir algo entregável. Abra o log da execução para inspecionar a falha e descarte este cartão antes de relançar.","dismiss":"Encerrar acompanhamento","discardLocalResult":"Descartar resultado local","retryPush":"Tentar push novamente","retryPushVerified":"Push verificado · o commit {{sha}} está na PR","commitAlreadyVerified":"O commit {{sha}} já está verificado na PR","deliveryCommit":"commit {{sha}}","reopen":"Reabrir","createPartialPr":"Criar PR com {{count}}","supersededNote":"Uma execução de implementação mais recente substituiu este cartão.","noChangesExisting":"Nenhuma nova alteração foi necessária; a PR existente permanece inalterada.","noChangesNote":"Nenhuma alteração de código foi necessária. Marque as specs como concluídas ou devolva-as ao backlog para refinamento.","deliveryNeedsAttention":"Implementação concluída; a entrega requer atenção","deliveryBlockedNote":"A implementação foi concluída com sucesso, mas a entrega está bloqueada. Revise os detalhes da etapa e os logs antes de descartar o resultado local.","partialDeliveryBlockedNote":"Parte da implementação foi concluída com sucesso, mas ainda não há nada que possa ser entregue com segurança. Reveja as evidências por unidade e os logs antes de escolher a próxima ação.","retryPushNote":"A implementação foi concluída com sucesso e as alterações estão seguras localmente. Tente novamente apenas o push.","cleanupIncomplete_one":"Limpeza incompleta ({{count}} aviso)","cleanupIncomplete_other":"Limpeza incompleta ({{count}} avisos)","safetyArchiveTitle":"Arquivo de segurança ({{count}})","safetyArchiveHint":"Os ficheiros temporários do espaço de trabalho foram preservados fora da PR por precaução. Pode inspecioná-los ou removê-los manualmente.","confirm":{"recoverAndRetryTitle":"Fazer commit e enviar o resultado preservado?","recoverAndRetryBody":"O Specrails utilizará apenas o worktree isolado ou o ramo registado compatível com avanço rápido para {{branch}}. Se necessário, criará um commit com os ficheiros entregáveis e enviará esse commit exato apenas se a PR continuar aberta nos ramos de origem e destino esperados. A pasta principal do projeto e as respetivas alterações sem commit não serão afetadas.","recheckRecoveryTitle":"Verificar este computador novamente?","recheckRecoveryBody":"O Specrails examinará novamente neste clone o worktree, a branch, as refs, os reflogs e os objetos Git órfãos pertencentes à entrega de {{branch}}. Se comprovar um único resultado, poderá fazer commit das alterações isoladas e repetir o push exato. A pasta principal do projeto não será alterada.","noChangesDoneTitle":"Marcar estas specs como concluídas?","noChangesDoneBody":"A implementação confirmou que nenhuma alteração de código é necessária. As specs serão movidas para Concluído e o worktree sem alterações será limpo.","refineTitle":"Refinar estas specs?","refineBody":"O resultado sem alterações será fechado e as specs voltarão ao backlog para refinamento. Os logs de execução permanecerão disponíveis.","mergeLocalTitle":"Integrar localmente?","mergeLocalBody":"As branches entregues serão integradas em {{base}} localmente. As alterações existentes são preservadas; alterações sobrepostas podem precisar de resolução antes da integração.","freshDiscardTitle":"Descartar esta entrega?","freshDiscardBody":"A PR será fechada sem excluir o branch remoto. Apenas branches locais e worktrees pertencentes ao SpecRails que ainda estejam no commit registrado serão removidos; qualquer item alterado será preservado com um aviso. As specs voltarão ao backlog. Os recursos locais removidos não podem ser recuperados.","implementationFailedDiscardTitle":"Descartar esta entrega com falha?","implementationFailedDiscardBody":"O cartão será fechado e as specs voltarão ao backlog. O trabalho local e os branches serão preservados para inspeção. Apenas recursos comprovadamente seguros para limpeza poderão ser removidos.","dismissTitle":"Encerrar este acompanhamento?","dismissBody":"Este cartão de acompanhamento será encerrado. Seu worktree só será removido se isso ainda for seguro; caso contrário, será preservado com um aviso. A PR existente, seu branch e o estado da revisão permanecerão inalterados.","discardLocalTitle":"Descartar o resultado local?","discardLocalBody":"A iteração local recuperável só será removida se isso ainda for seguro; se tiver sido alterada, será preservada com um aviso. Qualquer PR existente e seu branch permanecerão inalterados. Um resultado removido não pode ser recuperado."},"degraded":{"pushed":"O ramo foi enviado mas não foi possível criar a PR — tente novamente para concluir.","localOnly":"As alterações foram montadas localmente mas não enviadas — tente novamente para publicar a PR."},"alreadyResolved":"Já resolvida noutro lugar","actionFailed":"A ação falhou","notMergedYet":"Ainda sem merge","commitMissingRetry":"O commit da entrega não está mais na PR. Você pode tentar o push novamente.","prVerifiedWaiting":"Commit {{sha}} verificado · aguardando merge","viewLog":"Ver o registro de execução de {{ref}}","runElapsedAria":"{{elapsed}} decorridos","runCostAria":"{{cost}} gastos","pinned":{"label":"Fixada","marker":"Cartão de implementação — fixado acima","collapse":"Minimizar cartão fixado","expand":"Expandir cartão fixado","expandCard":"Expandir este cartão","collapseCard":"Minimizar este cartão","collapsed_one":"Cartão de implementação","collapsed_other":"{{count}} cartões de implementação","state":{"completed":"Concluída","no_changes":"Sem alterações","pr_closed":"Fechada","superseded":"Substituída","building":"Em curso","on_review":"Revisão","pr_draft":"PR rascunho","pr_ready":"Publicada","implementation_failed":"Falhou","pr_failed":"Falhou","merged":"Integrada","discarded":"Descartada"}},"mergeLocal":"Integrar localmente","mergeLocalTooltip":"Faz merge dos branches entregues em {{base}} no seu checkout local (sem GitHub)","mergeLocalBlockedDirty":"Não é possível integrar: as alterações locais em {{base}} sobrepõem-se à entrega. Faça commit ou stash dessas alterações e tente novamente.","mergeLocalBlockedBranch":"Não é possível integrar: seu checkout está em {{current}}, não em {{base}}. Mude para {{base}} e tente de novo.","mergedLocally":"Integrado em {{base}} localmente","discardStackedNote":"Os rails seguintes deste marco foram construídos sobre esta entrega. Descartá-la pausa a cadeia do marco; os rails seguintes mantêm o seu trabalho."}`),$={heading:`Rascunho da spec`,drafting:`Atualizando rascunho…`,acceptanceCriteria:`Critérios de aceitação`,untitled:`Spec sem título`,expand:`Ver descrição completa`,collapse:`Recolher descrição`},ee={heading:`Enquadramento`,framing:`A enquadrar o pedido…`,restated:`O que entendi`,alternative:`Também poderia significar`,pick:`Responder com isto`,touches:`Tocaria em`,discriminator:`Qual das duas?`,assumptions:`O que estou a assumir`,unknowns:`Ainda em aberto`},te={openTicket:`Abrir spec #{{id}}`,openPullRequest:`Abrir PR #{{id}}`,openJob:`Abrir job {{id}}`,openLoop:`Abrir loop {{id}}`,ticketNotFound:`Spec #{{id}} não encontrada — pode ter sido excluída`,pullRequestUrlMissing:`A PR #{{id}} foi mencionada sem URL`,pullRequestNotFound:`A PR #{{id}} não foi encontrada neste projeto`,jobNotFound:`Job não encontrado — pode ter sido excluído`,loopNotFound:`Loop não encontrado — pode ter sido excluído`,lookupFailed:`Não foi possível verificar a referência — tente novamente`},ne={untitled:`Missão sem título`,menu:`Menu da missão`,rename:`Renomear`,renamePlaceholder:`Nome da missão`,renameHint:`Duplo clique para renomear`,renameFailed:`Não foi possível renomear`,addFavorite:`Adicionar aos favoritos`,removeFavorite:`Remover dos favoritos`,copyName:`Copiar nome da missão`,copyId:`Copiar ID da missão`,copyProject:`Copiar nome do projeto`,copyProjectPath:`Copiar caminho do projeto`,copyFailed:`Não foi possível copiar`,copyTranscript:`Copiar transcrição`,copyTranscriptSuccess:`Transcrição copiada`,copyTranscriptFailed:`Não foi possível copiar a transcrição`,exportTranscript:`Exportar transcrição (.txt)`,exportTranscriptSuccess:`Exportação da transcrição iniciada`,exportTranscriptFailed:`Não foi possível exportar a transcrição`,delete:`Excluir missão`,deleteConfirm:`Excluir esta missão? Não pode ser desfeito.`,deleteFailed:`Não foi possível excluir a missão`},re=`O que devemos construir agora?`,ie={title:`Log de execução`,live:`Ao vivo`,empty:`Ainda não há atividade de ferramentas neste turno.`,output:`Saída`,error:`Erro`,copyAll:`Copiar log completo`,copyEntry:`Copiar entrada`,copySuccess:`Log copiado para a área de transferência`,copyFailed:`Não foi possível copiar o log`,openLog:`Ver log de execução`,close:`Fechar`},ae={open:`Ver logs de {{command}}`,logsTitle:`Logs do processo`,logsDescription:`Saída ao vivo e histórico salvo deste processo.`,close:`Fechar logs`,command:`Comando`,directory:`Diretório`,exitCode:`Código de saída: {{code}}`,signal:`Sinal: {{signal}}`,search:`Pesquisar nos logs…`,source:`Origem da saída`,allSources:`Toda a saída`,pause:`Pausar`,resume:`Retomar`,follow:`Seguir`,copy:`Copiar logs visíveis`,download:`Descarregar logs visíveis`,stop:`Parar processo`,stopCommand:`Parar {{command}}`,stopFailed:`Não foi possível parar o processo. Tente novamente.`,truncated:`É apresentada uma janela limitada de logs. Saída anterior ou linhas longas podem ser omitidas. Copiar e descarregar incluem apenas esta vista.`,paused:`Vista em pausa. O processo continua a funcionar.`,loadFailed:`Não foi possível carregar os logs. A retenção pode ter expirado; a saída já carregada continua visível.`,retry:`Tentar novamente`,copied:`Logs visíveis copiados.`,exportFailed:`Não foi possível exportar os logs. Tente novamente.`,output:`Saída do processo`,loading:`A carregar logs…`,noMatches:`Nenhuma saída correspondente.`,empty:`Ainda não há saída.`,lineCount:`{{count}} de {{total}} linhas`,exportHint:`A exportação inclui apenas o filtro atual e a saída retida.`,status:{starting:`A iniciar`,running:`Em execução`,stopping:`A parar`,exited:`Terminado`,killed:`Parado`,failed:`Falhou`,interrupted:`Desconectado`},repository:`Repositório`,history:{button:`Processos`,title:`Processos da missão`,open:`Ver histórico de processos`,description:`Consulte processos ativos e logs salvos de execuções anteriores.`,search:`Buscar comando ou repositório…`,refresh:`Atualizar histórico`,close:`Fechar histórico de processos`,back:`Voltar aos processos`,loading:`Carregando histórico de processos…`,empty:`Ainda não há processos registrados nesta missão.`,noMatches:`Nenhum processo correspondente.`,loadFailed:`Não foi possível carregar o histórico. As entradas já carregadas continuam disponíveis.`,showMore:`Mostrar mais`,count:`Processos: {{count}}`},interruptedHint:`O Specrails deixou de monitorar este processo. Seu estado no sistema operacional é desconhecido; os logs salvos continuam disponíveis.`,persistenceFailed:`Não foi possível salvar o histórico do processo. A saída disponível continua visível.`},oe={detach:`Abrir numa janela separada`,attach:`Voltar à janela principal`,detached:`Esta missão está aberta noutra janela.`,focus:`Mostrar janela da missão`,loading:`A mover a missão…`,failed:`Não foi possível mover esta missão. O rascunho foi preservado.`,dismiss:`Fechar aviso`,wrongMission:`Abre esta missão antes de a mover.`,finishPending:`Conclui a operação em curso ou guarda ou cancela a mensagem ou a captura antes de mover a missão.`},se={heading:`Lançamento de rail`,rail:`Rail {{index}}`,newRail:`Novo rail`,play:`Play`,launching:`A lançar…`,dismiss:`Descartar`,playHint:`Ajuste o que quiser e depois prima Play para lançar sob a sua própria autoridade.`,pending:`A preparar uma proposta de lançamento…`,unreadable_one:`Não foi possível ler a proposta de lançamento do agente.`,unreadable_other:`Não foi possível ler {{count}} propostas de lançamento.`,pinnedMarker:`Proposta de lançamento fixada acima do compositor`,effortDefault:`Esforço padrão`,profileNone:`Sem perfil`,status:{proposal:`Proposta`,ready:`Pronto`,blocked:`Requer atenção`,loading:`A verificar…`},availability:{free:`livre`,busy:`em execução`,pending_decision:`a aguardar uma decisão`,on_review:`em revisão`},fields:{rail:`Rail`,newRailName:`Nome do novo rail (opcional)`,railName:`Nome do rail`,addSpec:`Adicionar spec`,removeSpec:`Remover #{{id}}`,loop:`Loop`,engine:`Motor de IA`,model:`Modelo`,effort:`Esforço de raciocínio`,profile:`Perfil de agentes`,targetPr:`PR de destino #`,baseBranch:`Branch base`},notes:{railMissing:`O Rail {{index}} já não existe — escolha outro rail ou crie um.`,railBusy:`O Rail {{index}} está {{state}} — não é possível lançar aí.`,useFree:`Usar o Rail {{index}}`,specsDropped:`Já não fazem parte deste projeto: {{ids}}`,engineStale:`{{engine}} não foi detetado nesta máquina — será usado {{fallback}}.`,modelStale:`{{model}} não está disponível — será usado {{fallback}}.`},block:{noProject:`Esta missão não está fixada a nenhum projeto.`,loadFailed:`Não foi possível carregar os rails do projeto.`,noSpecs:`Adicione pelo menos uma spec para lançar.`,railLimit:`Os {{max}} rails já existem e nenhum está livre.`},errors:{tickets_in_flight:`Uma destas specs já está em execução noutro rail.`,pr_decision_pending:`Este rail está a aguardar uma decisão sobre a PR.`,rail_limit_reached:`O projeto já tem o número máximo de rails.`,invalid_base_branch:`Essa branch base não existe localmente.`,base_branch_requires_isolation:`Uma branch base requer isolamento por worktree (um repositório git com commits).`,target_pr_requires_pr_mode:`Uma PR de destino requer isolamento por worktree (um repositório git com commits).`,invalid_response:`Resposta inesperada do servidor.`},stub:{launched:`Lançado → Rail {{rail}}`,dismissed:`Proposta descartada`,viewRun:`Ver run`,goToCard:`Ir para o card`,goToCardTitle:`Ir para o card de implementação deste lançamento`,viewRunTitle:`Abrir o log ao vivo do run`}},ce={status:{running:`Em execução`,paused:`Em pausa`,succeeded:`Concluído`,failed:`Falhou`,stalled:`Parado`,cancelled:`Cancelado`,unknown:`Desconhecido`},title:{running:`A implementar no checkout do projeto…`,paused:`Requer uma decisão humana`,succeeded:`Implementação concluída`,failed:`A implementação falhou`,stalled:`A implementação parou`,cancelled:`Run cancelado`,unknown:`Estado do run desconhecido`},noDeliveryNote:`Sem fase de PR — este projeto não tem repositório git nem commits, por isso o trabalho foi aplicado diretamente na pasta do projeto.`,noDeliveryHint:`A executar diretamente na pasta do projeto (sem repositório git nem commits — não será proposta nenhuma PR).`,failure:{title:`Porque parou`,step:`passo {{step}}`,unit:`#{{ticket}} · {{code}}`},actions:{resume:`Retomar`,approve:`Aprovar`,recover:`Recuperar e tentar novamente`,relaunch:`Relançar`},relaunchSent:`Rail {{index}} relançado — um novo cartão acompanhará o run.`,relaunchFailed:`Não foi possível relançar o rail`,relaunchBlockedActive:`O rail ainda tem um run ativo`},le={marker:`O Rail {{rail}} falhou: {{code}}`,openCard:`Abrir cartão`,briefing:{title:`Relatório automático da falha`}},ue={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,attachment:s,maximize:c,restore:l,minimize:u,close:d,newConversation:f,emptyTitle:p,emptyHint:m,thinking:h,connecting:g,consultingCode:_,size:v,model:y,history:b,queue:x,receipt:S,queueEdit:C,git:w,provider:T,tier:E,approval:D,project:O,palette:k,mission:A,noProvider:j,degraded:M,toolCard:N,error:P,chip:F,newAgent:I,switchToAgent:L,switchToKanban:R,search:z,home:B,favoriteMissions:V,untitled:H,workspace:U,attachFile:W,deleteConversation:G,confirmDeleteConversation:K,addFavoriteConversation:q,removeFavoriteConversation:J,confirmShort:Y,imagesUnsupported:X,effort:Z,prCard:Q,specDraft:$,problemFrame:ee,refs:te,header:ne,emptyTitleCodeRain:re,activity:ie,backgroundProcess:ae,window:oe,railCard:se,runCard:ce,runFailure:le};export{ie as activity,q as addFavoriteConversation,D as approval,W as attachFile,s as attachment,ae as backgroundProcess,F as chip,d as close,r as composerPlaceholder,K as confirmDeleteConversation,Y as confirmShort,g as connecting,_ as consultingCode,o as copy,ue as default,M as degraded,G as deleteConversation,Z as effort,m as emptyHint,p as emptyTitle,re as emptyTitleCodeRain,P as error,V as favoriteMissions,w as git,ne as header,b as history,B as home,X as imagesUnsupported,c as maximize,u as minimize,A as mission,y as model,I as newAgent,f as newConversation,j as noProvider,k as palette,Q as prCard,ee as problemFrame,O as project,T as provider,x as queue,C as queueEdit,se as railCard,S as receipt,te as refs,J as removeFavoriteConversation,l as restore,ce as runCard,le as runFailure,z as search,i as send,v as size,$ as specDraft,a as stop,t as subtitle,L as switchToAgent,R as switchToKanban,h as thinking,E as tier,e as title,N as toolCard,n as trigger,H as untitled,oe as window,U as workspace};
1
+ var e=`Controle de missões`,t=`Opere o Specrails conversando`,n=`Controle de missões`,r=`Peça ao agente o que quiser…`,i=`Enviar`,a=`Parar`,o=`Copiar`,s={openPreview:`Pré-visualizar {{name}}`,openDownload:`Transferir {{name}}`,previewTitle:`Pré-visualização de {{name}}`,downloadTitle:`Transferir ficheiro?`,downloadPrompt:`Este ficheiro não pode ser pré-visualizado aqui. Queres transferi-lo?`,download:`Transferir`,cancelDownload:`Agora não`,loading:`A preparar ficheiro…`,loadFailed:`Não foi possível carregar o anexo`,loadError:`Não foi possível carregar o anexo: {{error}}`},c=`Maximizar`,l=`Restaurar`,u=`Minimizar`,d=`Fechar`,f=`Nova missão`,p=`Qual é a missão?`,m=`Escolha um projeto e depois pergunte. O quadro é atualizado ao vivo enquanto o agente trabalha.`,h=`Pensando…`,g=`Conectando…`,_=`Consultando o app…`,v={compact:`Compacto`,comfortable:`Confortável`,max:`Maximizar`},y={label:`Modelo`,loading:`Carregando modelos…`,unavailable:`Modelos indisponíveis`},b={hint:`Explorando histórico — escreva para editar, ↑↓ para navegar`},x={queued:`Na fila`,send:`Enviar mensagem`,sendHint:`Enfileirar para o próximo turno. Escolha «Orientar» em uma mensagem na fila para enviá-la sem interromper o modelo.`,placeholder:`Adicionar uma mensagem à fila…`,delivered:`Entregue ao agente`,interrupted:`Entrega não confirmada`,cancelled:`Cancelada antes da entrega`,steer:`Orientar`,steerHint:`Enviar sem interromper o modelo`,steering:`Enviando ao agente…`,remove:`Excluir mensagem da fila`,more:`Opções da mensagem`,edit:`Editar`,actionConflict:`Esta mensagem já está sendo entregue ou não está mais na fila.`,actionFailed:`Não foi possível atualizar a mensagem na fila. Tente novamente.`},S={sent:`Enviado ao agente`,received:`Entregue ao agente`,read:`Lido pelo agente`,interrupted:`Entrega não confirmada`,cancelled:`Cancelado antes da entrega`},C={editing:`Editando mensagem pendente {{n}} de {{m}}`,hint:`↑↓ para navegar · Enter salva · Esc cancela`,save:`Salvar mensagem pendente`,cancel:`Cancelar edição`,dispatched:`Essa mensagem já foi entregue; seu texto foi mantido como rascunho`,saveFailed:`Não foi possível salvar a mensagem pendente`},w={branch:`Branch`,detached:`(detached)`,dirty:`Alterações sem commit`,switched:`Mudou para {{branch}}`,switchFailed:`Não foi possível trocar de branch`,lockedWhileWorking:`Branch bloqueada enquanto o agente trabalha`,searchPlaceholder:`Buscar branches…`,noMatches:`Nenhuma branch corresponde`,worktrees:`Worktrees`,worktreePathCopied:`Caminho do worktree copiado`,copyWorktreePath:`Copiar caminho do worktree`,repository:`Repositório`,repositoryUnavailable:`Repositório indisponível`,loadFailed:`Estado do Git indisponível`,notGit:`Pasta de contexto · sem Git`,retry:`Tentar novamente`},T={label:`Provedor`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},E={cycleHint:`⇧⇥ para mudar`,observe:{name:`Observa`,desc:`Somente leitura — nada muda`},edit:{name:`Edita`,desc:`Criar e editar (reversível)`},operate:{name:`Opera`,desc:`Lançar IA — tem custo`},autonomous:{name:`Autônomo`,desc:`Excluir e encerrar — irreversível`},lockedTitle:`Precisa de um nível superior`,lockedBody:`Essa ação precisa do nível "{{level}}". Você está no "{{current}}".`,raiseHint:`⇧⇥ para aumentar o nível, ou peça de outra forma.`},D={title:`Confirmar ação`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Aprovar`,cancel:`Cancelar`,dontAskAgain:`Não perguntar de novo nesta sessão`,approved:`Aprovado`,cancelled:`Cancelado`},O={home:`Início`,searchPlaceholder:`Fale com o Specrails…`,searchProjectsPlaceholder:`Buscar projetos…`,recents:`Recentes`,allProjects:`Todos os projetos`,searchAll:`Buscar em todos os projetos`,addProject:`Adicionar projeto…`,homeHint:`Nenhum projeto selecionado — operando em todos os projetos.`,askCreateOrSearch:`Nenhum projeto está selecionado. Você quer criar um novo projeto ou buscar em todos os projetos?`},k={remove:`Remover {{label}}`,addContextAction:`Adicionar contexto ou ação`,filtering:`Filtrando "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`Sem resultados`,noMatchesFor:`Sem resultados para "{{query}}"`,mode:{reference:{title:`Referência`,hint:`@ projetos, specs, missões`},trace:{title:`Traço`,hint:`# jobs, execuções, IDs`},action:{title:`Ação`,hint:`/ comandos para este contexto`}},plus:{reference:`Referência`,referenceHint:`Projetos, specs, missões`,trace:`Traço`,traceHint:`Jobs, execuções, IDs`,action:`Ação`,actionHint:`Criar, lançar, inspecionar`,fileAttachment:`Anexo de arquivo`,fileAttachmentHint:`Adicionar docs, imagens, logs`,browserCapture:`Captura do navegador`,browserCaptureHint:`Capturar uma área da página para esta missão`},railGroup:`Rails`,railGroupInUse:`Rails em uso`},A={label:`Trocar de missão`,untitled:`Nova missão`,new:`Nova missão`,searchPlaceholder:`Pesquisar missões…`,noMatches:`Nenhuma missão corresponde`,working:`O agente está trabalhando`,queuedBadge:`{{n}} na fila`,delete:`Excluir missão "{{title}}"`,deleteConfirm:`Excluir?`,deleteLiveConfirm:`O agente está trabalhando — excluir mesmo assim?`,confirmDelete:`Confirmar exclusão`,cancelDelete:`Manter missão`,deleteFailed:`Não foi possível excluir a missão`},j={title:`Nenhum provedor de IA instalado`,body:`O agente precisa de Claude, Codex, Gemini ou Kimi na sua máquina. Instale um e reabra o agente para começar a conversar.`,placeholder:`Instale um provedor de IA para usar o agente…`},M={title:`O MCP do Specrails está desligado`,body:`O agente precisa do servidor MCP integrado para operar o app.`,enable:`Ativar o MCP do Specrails`,enabling:`Ativando…`,enabled:`MCP ativado`},N={live:`ao vivo`,queued:`na fila`,running:`em execução`,done:`concluído`,failed:`falhou`},P={generic:`Algo deu errado. Tente novamente.`,busy:`O agente está ocupado. Tente novamente em um instante.`},F={kindAgent:`Missão do agente`},I=`Nova missão`,L=`Mudar para o Controle de missões`,R=`Mudar para o quadro`,z=`Buscar`,B=`Início`,V=`Missões favoritas`,H=`Sem título`,U={title:`No workspace`,terminal:`Terminal`,files:`Arquivos`,browser:`Navegador`,requiresProject:`Selecione um projeto para usar esta ferramenta`,resizeCode:`Redimensionar painel de código`,closeFiles:`Fechar código`,browserConfirm:`Adicionar ao agente`,browserSelectStart:`Selecionar para adicionar à missão`,browserCaptured:`Captura adicionada`,uploadFailed:`Falha no upload`,requiresConversation:`Inicie uma missão para usar esta ferramenta`,jobs:`Jobs`,closeJobs:`Fechar jobs`,resizeJobs:`Redimensionar painel de jobs`,noJobs:`Ainda não há jobs — peça ao agente para lançar um`,analytics:`Analítica`,closeAnalytics:`Fechar analítica`,resizeAnalytics:`Redimensionar painel de analítica`},W=`Anexar arquivo`,G=`Excluir "{{title}}"`,K=`Confirmar exclusão de "{{title}}"`,q=`Adicionar "{{title}}" aos favoritos`,J=`Remover "{{title}}" dos favoritos`,Y=`confirmar?`,X=`Este provedor ainda não lê imagens — anexe arquivos de texto`,Z={label:`Esforço`,minimal:`Mínimo`,low:`Baixo`,medium:`Médio`,high:`Alto`,xhigh:`Extra alto`,max:`Máximo`,ultra:`Ultra`},Q=JSON.parse(`{"operation":{"inProgress":"Ação em andamento…","create-pr":"Criando PR…","publish":"Publicando…","discard":"Descartando…","dismiss":"Encerrando acompanhamento…","poll-merge":"Verificando merge…","reopen":"Reabrindo…","merge-local":"Integrando localmente…","recover-and-retry":"A criar o commit e a tentar novamente o push do resultado preservado…","acknowledge-no-changes":"Marcando como concluído…"},"markDone":"Marcar como concluídas","refine":"Refinar","completedNote":"Confirmado — as specs foram movidas para Concluído","partialSummary":"{{succeeded}} de {{total}} concluídas; {{failed}} falharam","unit":{"failed":"implementação falhou","blocked":"entrega bloqueada","noChanges":"sem alterações","succeeded":"pronta"},"rail":"Rail {{index}}","specCount_one":"{{count}} spec","specCount_other":"{{count}} specs","base":"Ramo base","openPr":"Abrir PR","existingPr":"PR existente","title":{"no_changes":"Nenhuma alteração necessária","partial":"Implementação parcial","delivery_blocked":"Implementação concluída — a entrega requer atenção","update_failed":"Implementação concluída — falha na atualização","pr_closed":"PR fechada sem merge","superseded":"Substituída por uma execução mais recente","existing_pr_updated":"PR existente atualizada","building":"A implementar num worktree isolado…","buildingExistingPr":"A aplicar alterações numa PR existente…","paused":"Precisa de decisão humana","on_review":"Implementação pronta para revisão","pr_draft":"PR em rascunho criada","pr_draft_degraded":"Entrega da PR incompleta","pr_ready":"PR pronta para merge","implementation_failed":"Implementação falhou","pr_failed":"Falha ao criar a PR","merged":"Merge da PR concluído","discarded":"Descartada"},"buildingHint":"Quando terminar, ser-lhe-á perguntado se quer criar a PR.","buildingExistingPrHint":"O Specrails está a trabalhar no ramo da PR existente e irá enviar as alterações de revisão para essa mesma PR.","paused":"Implementação em pausa","pausedForRun":"Em pausa em {{ref}}","resume":"Retomar","stopExecution":"Parar execução","stopExecutionSent":"Sinal de paragem enviado","stopExecutionFailed":"Não foi possível parar a execução","createPr":"Criar PR","publish":"Publicar","checkout":"Mudar para o branch","openReview":"Revisar","openReviewTooltip":"Abrir a revisão em linguagem clara","checkoutTooltip":"Fazer checkout de {{branch}} na pasta principal do projeto","checkoutSuccess":"Checkout feito em {{branch}}","checkoutFailed":"Não foi possível fazer checkout da branch de implementação","checkoutDirtyTitle":"Checkout bloqueado para proteger as suas alterações","checkoutDirtyBody":"A pasta principal do projeto contém alterações sem commit. Faça commit ou stash e tente novamente. Não foi feita qualquer alteração.","checkoutSafetyUnknownTitle":"Checkout em pausa porque não foi possível verificar a segurança","checkoutSafetyUnknownBody":"O Specrails não conseguiu ler o estado do Git na pasta principal do projeto. Nada foi libertado ou alterado. Tente novamente quando o Git estiver disponível.","checkoutNotDeliverableTitle":"Esta branch não contém a implementação preservada","checkoutNotDeliverableBody":"O commit exato da entrega ainda não foi verificado. Em alternativa, inspecione ou recupere o resultado local.","inspectLocalResult":"Inspecionar resultado local","inspectLocalResultTooltip":"Mostrar o worktree isolado preservado e copiar o respetivo caminho","localResultPathCopied":"Caminho do resultado local copiado","localResultPath":"Resultado local preservado","localResultUnavailableHere":"Não existe nenhum worktree recuperável neste computador. Consulte o log da execução no computador onde foi iniciada.","recoverAndRetry":"Fazer commit e tentar push novamente","recoverAndRetryVerified":"O commit recuperado {{sha}} está verificado na PR","recoveryStillBlocked":"A recuperação local ainda requer atenção","recheckRecovery":"Verificar novamente","recoveryUnavailable":"Não foi possível verificar a recuperação neste computador","recoveryUnavailableBody":"O Specrails não conseguiu comprovar com segurança um único resultado pertencente à entrega neste clone. Nada foi alterado ou removido. Consulte os detalhes da etapa e os registos de execução. Se o run foi executado noutro computador, abra o Specrails nele e verifique novamente.","recoveryDetailSummary":"Detalhe técnico da recuperação","retry":"Tentar novamente","retryPr":"Tentar PR novamente","checkMerge":"Verificar merge","verifyPr":"Verificar PR","discard":"Descartar","confirmDiscard":"Confirmar descarte?","mergedNote":"Merge concluído — specs movidas para Concluído","discardedNote":"Descartada — specs devolvidas ao backlog","implementationFailedNote":"A execução de implementação falhou antes de produzir algo entregável. Abra o log da execução para inspecionar a falha e descarte este cartão antes de relançar.","dismiss":"Encerrar acompanhamento","discardLocalResult":"Descartar resultado local","retryPush":"Tentar push novamente","retryPushVerified":"Push verificado · o commit {{sha}} está na PR","commitAlreadyVerified":"O commit {{sha}} já está verificado na PR","deliveryCommit":"commit {{sha}}","reopen":"Reabrir","createPartialPr":"Criar PR com {{count}}","supersededNote":"Uma execução de implementação mais recente substituiu este cartão.","noChangesExisting":"Nenhuma nova alteração foi necessária; a PR existente permanece inalterada.","noChangesNote":"Nenhuma alteração de código foi necessária. Marque as specs como concluídas ou devolva-as ao backlog para refinamento.","deliveryNeedsAttention":"Implementação concluída; a entrega requer atenção","deliveryBlockedNote":"A implementação foi concluída com sucesso, mas a entrega está bloqueada. Revise os detalhes da etapa e os logs antes de descartar o resultado local.","partialDeliveryBlockedNote":"Parte da implementação foi concluída com sucesso, mas ainda não há nada que possa ser entregue com segurança. Reveja as evidências por unidade e os logs antes de escolher a próxima ação.","retryPushNote":"A implementação foi concluída com sucesso e as alterações estão seguras localmente. Tente novamente apenas o push.","cleanupIncomplete_one":"Limpeza incompleta ({{count}} aviso)","cleanupIncomplete_other":"Limpeza incompleta ({{count}} avisos)","safetyArchiveTitle":"Arquivo de segurança ({{count}})","safetyArchiveHint":"Os ficheiros temporários do espaço de trabalho foram preservados fora da PR por precaução. Pode inspecioná-los ou removê-los manualmente.","confirm":{"recoverAndRetryTitle":"Fazer commit e enviar o resultado preservado?","recoverAndRetryBody":"O Specrails utilizará apenas o worktree isolado ou o ramo registado compatível com avanço rápido para {{branch}}. Se necessário, criará um commit com os ficheiros entregáveis e enviará esse commit exato apenas se a PR continuar aberta nos ramos de origem e destino esperados. A pasta principal do projeto e as respetivas alterações sem commit não serão afetadas.","recheckRecoveryTitle":"Verificar este computador novamente?","recheckRecoveryBody":"O Specrails examinará novamente neste clone o worktree, a branch, as refs, os reflogs e os objetos Git órfãos pertencentes à entrega de {{branch}}. Se comprovar um único resultado, poderá fazer commit das alterações isoladas e repetir o push exato. A pasta principal do projeto não será alterada.","noChangesDoneTitle":"Marcar estas specs como concluídas?","noChangesDoneBody":"A implementação confirmou que nenhuma alteração de código é necessária. As specs serão movidas para Concluído e o worktree sem alterações será limpo.","refineTitle":"Refinar estas specs?","refineBody":"O resultado sem alterações será fechado e as specs voltarão ao backlog para refinamento. Os logs de execução permanecerão disponíveis.","mergeLocalTitle":"Integrar localmente?","mergeLocalBody":"As branches entregues serão integradas em {{base}} localmente. As alterações existentes são preservadas; alterações sobrepostas podem precisar de resolução antes da integração.","freshDiscardTitle":"Descartar esta entrega?","freshDiscardBody":"A PR será fechada sem excluir o branch remoto. Apenas branches locais e worktrees pertencentes ao SpecRails que ainda estejam no commit registrado serão removidos; qualquer item alterado será preservado com um aviso. As specs voltarão ao backlog. Os recursos locais removidos não podem ser recuperados.","implementationFailedDiscardTitle":"Descartar esta entrega com falha?","implementationFailedDiscardBody":"O cartão será fechado e as specs voltarão ao backlog. O trabalho local e os branches serão preservados para inspeção. Apenas recursos comprovadamente seguros para limpeza poderão ser removidos.","dismissTitle":"Encerrar este acompanhamento?","dismissBody":"Este cartão de acompanhamento será encerrado. Seu worktree só será removido se isso ainda for seguro; caso contrário, será preservado com um aviso. A PR existente, seu branch e o estado da revisão permanecerão inalterados.","discardLocalTitle":"Descartar o resultado local?","discardLocalBody":"A iteração local recuperável só será removida se isso ainda for seguro; se tiver sido alterada, será preservada com um aviso. Qualquer PR existente e seu branch permanecerão inalterados. Um resultado removido não pode ser recuperado."},"degraded":{"pushed":"O ramo foi enviado mas não foi possível criar a PR — tente novamente para concluir.","localOnly":"As alterações foram montadas localmente mas não enviadas — tente novamente para publicar a PR."},"alreadyResolved":"Já resolvida noutro lugar","actionFailed":"A ação falhou","notMergedYet":"Ainda sem merge","commitMissingRetry":"O commit da entrega não está mais na PR. Você pode tentar o push novamente.","prVerifiedWaiting":"Commit {{sha}} verificado · aguardando merge","viewLog":"Ver o registro de execução de {{ref}}","runElapsedAria":"{{elapsed}} decorridos","runCostAria":"{{cost}} gastos","pinned":{"label":"Fixada","marker":"Cartão de implementação — fixado acima","collapse":"Minimizar cartão fixado","expand":"Expandir cartão fixado","expandCard":"Expandir este cartão","collapseCard":"Minimizar este cartão","collapsed_one":"Cartão de implementação","collapsed_other":"{{count}} cartões de implementação","state":{"completed":"Concluída","no_changes":"Sem alterações","pr_closed":"Fechada","superseded":"Substituída","building":"Em curso","on_review":"Revisão","pr_draft":"PR rascunho","pr_ready":"Publicada","implementation_failed":"Falhou","pr_failed":"Falhou","merged":"Integrada","discarded":"Descartada"}},"mergeLocal":"Integrar localmente","mergeLocalTooltip":"Faz merge dos branches entregues em {{base}} no seu checkout local (sem GitHub)","mergeLocalBlockedDirty":"Não é possível integrar: as alterações locais em {{base}} sobrepõem-se à entrega. Faça commit ou stash dessas alterações e tente novamente.","mergeLocalBlockedBranch":"Não é possível integrar: seu checkout está em {{current}}, não em {{base}}. Mude para {{base}} e tente de novo.","mergedLocally":"Integrado em {{base}} localmente","discardStackedNote":"Os rails seguintes deste marco foram construídos sobre esta entrega. Descartá-la pausa a cadeia do marco; os rails seguintes mantêm o seu trabalho."}`),$={heading:`Rascunho da spec`,drafting:`Atualizando rascunho…`,acceptanceCriteria:`Critérios de aceitação`,untitled:`Spec sem título`,expand:`Ver descrição completa`,collapse:`Recolher descrição`},ee={heading:`Enquadramento`,framing:`A enquadrar o pedido…`,restated:`O que entendi`,alternative:`Também poderia significar`,pick:`Responder com isto`,touches:`Tocaria em`,discriminator:`Qual das duas?`,assumptions:`O que estou a assumir`,unknowns:`Ainda em aberto`},te={openTicket:`Abrir spec #{{id}}`,openPullRequest:`Abrir PR #{{id}}`,openJob:`Abrir job {{id}}`,openLoop:`Abrir loop {{id}}`,ticketNotFound:`Spec #{{id}} não encontrada — pode ter sido excluída`,pullRequestUrlMissing:`A PR #{{id}} foi mencionada sem URL`,pullRequestNotFound:`A PR #{{id}} não foi encontrada neste projeto`,jobNotFound:`Job não encontrado — pode ter sido excluído`,loopNotFound:`Loop não encontrado — pode ter sido excluído`,lookupFailed:`Não foi possível verificar a referência — tente novamente`},ne={untitled:`Missão sem título`,menu:`Menu da missão`,rename:`Renomear`,renamePlaceholder:`Nome da missão`,renameHint:`Duplo clique para renomear`,renameFailed:`Não foi possível renomear`,addFavorite:`Adicionar aos favoritos`,removeFavorite:`Remover dos favoritos`,copyName:`Copiar nome da missão`,copyId:`Copiar ID da missão`,copyProject:`Copiar nome do projeto`,copyProjectPath:`Copiar caminho do projeto`,copyFailed:`Não foi possível copiar`,copyTranscript:`Copiar transcrição`,copyTranscriptSuccess:`Transcrição copiada`,copyTranscriptFailed:`Não foi possível copiar a transcrição`,exportTranscript:`Exportar transcrição (.txt)`,exportTranscriptSuccess:`Exportação da transcrição iniciada`,exportTranscriptFailed:`Não foi possível exportar a transcrição`,delete:`Excluir missão`,deleteConfirm:`Excluir esta missão? Não pode ser desfeito.`,deleteFailed:`Não foi possível excluir a missão`},re=`O que devemos construir agora?`,ie={title:`Log de execução`,live:`Ao vivo`,empty:`Ainda não há atividade de ferramentas neste turno.`,output:`Saída`,error:`Erro`,copyAll:`Copiar log completo`,copyEntry:`Copiar entrada`,copySuccess:`Log copiado para a área de transferência`,copyFailed:`Não foi possível copiar o log`,openLog:`Ver log de execução`,close:`Fechar`},ae={open:`Ver logs de {{command}}`,logsTitle:`Logs do processo`,logsDescription:`Saída ao vivo e histórico salvo deste processo.`,close:`Fechar logs`,command:`Comando`,directory:`Diretório`,exitCode:`Código de saída: {{code}}`,signal:`Sinal: {{signal}}`,search:`Pesquisar nos logs…`,source:`Origem da saída`,allSources:`Toda a saída`,pause:`Pausar`,resume:`Retomar`,follow:`Seguir`,copy:`Copiar logs visíveis`,download:`Descarregar logs visíveis`,stop:`Parar processo`,stopCommand:`Parar {{command}}`,stopFailed:`Não foi possível parar o processo. Tente novamente.`,truncated:`É apresentada uma janela limitada de logs. Saída anterior ou linhas longas podem ser omitidas. Copiar e descarregar incluem apenas esta vista.`,paused:`Vista em pausa. O processo continua a funcionar.`,loadFailed:`Não foi possível carregar os logs. A retenção pode ter expirado; a saída já carregada continua visível.`,retry:`Tentar novamente`,copied:`Logs visíveis copiados.`,exportFailed:`Não foi possível exportar os logs. Tente novamente.`,output:`Saída do processo`,loading:`A carregar logs…`,noMatches:`Nenhuma saída correspondente.`,empty:`Ainda não há saída.`,lineCount:`{{count}} de {{total}} linhas`,exportHint:`A exportação inclui apenas o filtro atual e a saída retida.`,status:{starting:`A iniciar`,running:`Em execução`,stopping:`A parar`,exited:`Terminado`,killed:`Parado`,failed:`Falhou`,interrupted:`Desconectado`},repository:`Repositório`,history:{button:`Processos`,title:`Processos da missão`,open:`Ver histórico de processos`,description:`Consulte processos ativos e logs salvos de execuções anteriores.`,search:`Buscar comando ou repositório…`,refresh:`Atualizar histórico`,close:`Fechar histórico de processos`,back:`Voltar aos processos`,loading:`Carregando histórico de processos…`,empty:`Ainda não há processos registrados nesta missão.`,noMatches:`Nenhum processo correspondente.`,loadFailed:`Não foi possível carregar o histórico. As entradas já carregadas continuam disponíveis.`,showMore:`Mostrar mais`,count:`Processos: {{count}}`},interruptedHint:`O Specrails deixou de monitorar este processo. Seu estado no sistema operacional é desconhecido; os logs salvos continuam disponíveis.`,persistenceFailed:`Não foi possível salvar o histórico do processo. A saída disponível continua visível.`},oe={detach:`Abrir numa janela separada`,attach:`Voltar à janela principal`,detached:`Esta missão está aberta noutra janela.`,focus:`Mostrar janela da missão`,loading:`A mover a missão…`,failed:`Não foi possível mover esta missão. O rascunho foi preservado.`,dismiss:`Fechar aviso`,wrongMission:`Abre esta missão antes de a mover.`,finishPending:`Conclui a operação em curso ou guarda ou cancela a mensagem ou a captura antes de mover a missão.`},se={heading:`Lançamento de rail`,rail:`Rail {{index}}`,newRail:`Novo rail`,play:`Play`,launching:`A lançar…`,dismiss:`Descartar`,playHint:`Ajuste o que quiser e depois prima Play para lançar sob a sua própria autoridade.`,pending:`A preparar uma proposta de lançamento…`,unreadable_one:`Não foi possível ler a proposta de lançamento do agente.`,unreadable_other:`Não foi possível ler {{count}} propostas de lançamento.`,pinnedMarker:`Proposta de lançamento fixada acima do compositor`,effortDefault:`Esforço padrão`,profileNone:`Sem perfil`,status:{proposal:`Proposta`,ready:`Pronto`,blocked:`Requer atenção`,loading:`A verificar…`},availability:{free:`livre`,busy:`em execução`,pending_decision:`a aguardar uma decisão`,on_review:`em revisão`},fields:{rail:`Rail`,newRailName:`Nome do novo rail (opcional)`,railName:`Nome do rail`,addSpec:`Adicionar spec`,removeSpec:`Remover #{{id}}`,loop:`Loop`,engine:`Motor de IA`,model:`Modelo`,effort:`Esforço de raciocínio`,profile:`Perfil de agentes`,targetPr:`PR de destino #`,baseBranch:`Branch base`},notes:{railMissing:`O Rail {{index}} já não existe — escolha outro rail ou crie um.`,railBusy:`O Rail {{index}} está {{state}} — não é possível lançar aí.`,useFree:`Usar o Rail {{index}}`,specsDropped:`Já não fazem parte deste projeto: {{ids}}`,engineStale:`{{engine}} não foi detetado nesta máquina — será usado {{fallback}}.`,modelStale:`{{model}} não está disponível — será usado {{fallback}}.`},block:{noProject:`Esta missão não está fixada a nenhum projeto.`,loadFailed:`Não foi possível carregar os rails do projeto.`,noSpecs:`Adicione pelo menos uma spec para lançar.`,railLimit:`Os {{max}} rails já existem e nenhum está livre.`},errors:{tickets_in_flight:`Uma destas specs já está em execução noutro rail.`,pr_decision_pending:`Este rail está a aguardar uma decisão sobre a PR.`,rail_limit_reached:`O projeto já tem o número máximo de rails.`,invalid_base_branch:`Essa branch base não existe localmente.`,base_branch_requires_isolation:`Uma branch base requer isolamento por worktree (um repositório git com commits).`,target_pr_requires_pr_mode:`Uma PR de destino requer isolamento por worktree (um repositório git com commits).`,invalid_response:`Resposta inesperada do servidor.`},stub:{launched:`Lançado → Rail {{rail}}`,dismissed:`Proposta descartada`,viewRun:`Ver run`,goToCard:`Ir para o card`,goToCardTitle:`Ir para o card de implementação deste lançamento`,viewRunTitle:`Abrir o log ao vivo do run`},followUp:{title:`Resolver {{count}} comentário(s) de revisão do PR`,excluded:`Não alterar`,verification:`Verificar`,specUntouched:`A spec e a descrição no Jira não são editadas — o escopo viaja com a execução.`,source:{pasted:`colado`,github:`do GitHub`}},addenda:{rides_one:`{{count}} adendo aberto segue com este lançamento:`,rides_other:`{{count}} adendos abertos seguem com este lançamento:`}},ce={status:{running:`Em execução`,paused:`Em pausa`,succeeded:`Concluído`,failed:`Falhou`,stalled:`Parado`,cancelled:`Cancelado`,unknown:`Desconhecido`},title:{running:`A implementar no checkout do projeto…`,paused:`Requer uma decisão humana`,succeeded:`Implementação concluída`,failed:`A implementação falhou`,stalled:`A implementação parou`,cancelled:`Run cancelado`,unknown:`Estado do run desconhecido`},noDeliveryNote:`Sem fase de PR — este projeto não tem repositório git nem commits, por isso o trabalho foi aplicado diretamente na pasta do projeto.`,noDeliveryHint:`A executar diretamente na pasta do projeto (sem repositório git nem commits — não será proposta nenhuma PR).`,failure:{title:`Porque parou`,step:`passo {{step}}`,unit:`#{{ticket}} · {{code}}`},actions:{resume:`Retomar`,approve:`Aprovar`,recover:`Recuperar e tentar novamente`,relaunch:`Relançar`},relaunchSent:`Rail {{index}} relançado — um novo cartão acompanhará o run.`,relaunchFailed:`Não foi possível relançar o rail`,relaunchBlockedActive:`O rail ainda tem um run ativo`},le={marker:`O Rail {{rail}} falhou: {{code}}`,openCard:`Abrir cartão`,briefing:{title:`Relatório automático da falha`}},ue={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,attachment:s,maximize:c,restore:l,minimize:u,close:d,newConversation:f,emptyTitle:p,emptyHint:m,thinking:h,connecting:g,consultingCode:_,size:v,model:y,history:b,queue:x,receipt:S,queueEdit:C,git:w,provider:T,tier:E,approval:D,project:O,palette:k,mission:A,noProvider:j,degraded:M,toolCard:N,error:P,chip:F,newAgent:I,switchToAgent:L,switchToKanban:R,search:z,home:B,favoriteMissions:V,untitled:H,workspace:U,attachFile:W,deleteConversation:G,confirmDeleteConversation:K,addFavoriteConversation:q,removeFavoriteConversation:J,confirmShort:Y,imagesUnsupported:X,effort:Z,prCard:Q,specDraft:$,problemFrame:ee,refs:te,header:ne,emptyTitleCodeRain:re,activity:ie,backgroundProcess:ae,window:oe,railCard:se,runCard:ce,runFailure:le};export{ie as activity,q as addFavoriteConversation,D as approval,W as attachFile,s as attachment,ae as backgroundProcess,F as chip,d as close,r as composerPlaceholder,K as confirmDeleteConversation,Y as confirmShort,g as connecting,_ as consultingCode,o as copy,ue as default,M as degraded,G as deleteConversation,Z as effort,m as emptyHint,p as emptyTitle,re as emptyTitleCodeRain,P as error,V as favoriteMissions,w as git,ne as header,b as history,B as home,X as imagesUnsupported,c as maximize,u as minimize,A as mission,y as model,I as newAgent,f as newConversation,j as noProvider,k as palette,Q as prCard,ee as problemFrame,O as project,T as provider,x as queue,C as queueEdit,se as railCard,S as receipt,te as refs,J as removeFavoriteConversation,l as restore,ce as runCard,le as runFailure,z as search,i as send,v as size,$ as specDraft,a as stop,t as subtitle,L as switchToAgent,R as switchToKanban,h as thinking,E as tier,e as title,N as toolCard,n as trigger,H as untitled,oe as window,U as workspace};
@@ -1 +1 @@
1
- var e=`Control de misiones`,t=`Maneja Specrails conversando`,n=`Control de misiones`,r=`Pídele al agente lo que necesites…`,i=`Enviar`,a=`Detener`,o=`Copiar`,s={openPreview:`Previsualizar {{name}}`,openDownload:`Descargar {{name}}`,previewTitle:`Vista previa de {{name}}`,downloadTitle:`¿Descargar archivo?`,downloadPrompt:`Este archivo no se puede previsualizar aquí. ¿Quieres descargarlo?`,download:`Descargar`,cancelDownload:`Ahora no`,loading:`Preparando archivo…`,loadFailed:`No se pudo cargar el adjunto`,loadError:`No se pudo cargar el adjunto: {{error}}`},c=`Maximizar`,l=`Restaurar`,u=`Minimizar`,d=`Cerrar`,f=`Nueva misión`,p=`¿Cuál es la misión?`,m=`Elige un proyecto y luego pregunta. El tablero se actualiza en vivo mientras el agente trabaja.`,h=`Pensando…`,g=`Conectando…`,_=`Consultando la app…`,v={compact:`Compacto`,comfortable:`Cómodo`,max:`Maximizar`},y={label:`Modelo`,loading:`Cargando modelos…`,unavailable:`Modelos no disponibles`},b={hint:`Explorando historial de prompts — escribe para editar, ↑↓ para navegar`},x={queued:`En cola`,send:`Enviar mensaje`,sendHint:`Se enviará en el siguiente turno. Pulsa «Guiar» en un mensaje de la cola para enviarlo sin interrumpir al modelo.`,placeholder:`Añade un mensaje a la cola…`,delivered:`Entregado al agente`,interrupted:`Entrega no confirmada`,cancelled:`Cancelado antes de entregarse`,steer:`Guiar`,steerHint:`Enviar sin interrumpir al modelo`,steering:`Enviando al agente…`,remove:`Borrar mensaje de la cola`,more:`Opciones del mensaje`,edit:`Editar`,actionConflict:`El mensaje ya se está entregando o ha salido de la cola.`,actionFailed:`No se ha podido actualizar el mensaje de la cola. Inténtalo de nuevo.`},S={sent:`Enviado al agente`,received:`Entregado al agente`,read:`Leído por el agente`,interrupted:`Entrega no confirmada`,cancelled:`Cancelado antes de entregarse`},C={editing:`Editando mensaje pendiente {{n}} de {{m}}`,hint:`↑↓ para navegar · Enter guarda · Esc cancela`,save:`Guardar mensaje pendiente`,cancel:`Cancelar edición`,dispatched:`El mensaje ya se ha entregado; tu texto se conserva como borrador`,saveFailed:`No se pudo guardar el mensaje pendiente`},w={branch:`Rama`,detached:`(detached)`,dirty:`Cambios sin commitear`,switched:`Cambiado a {{branch}}`,switchFailed:`No se pudo cambiar de rama`,lockedWhileWorking:`Rama bloqueada mientras el agente trabaja`,searchPlaceholder:`Buscar ramas…`,noMatches:`Ninguna rama coincide`,worktrees:`Worktrees`,worktreePathCopied:`Ruta del worktree copiada`,copyWorktreePath:`Copiar ruta del worktree`,repository:`Repositorio`,repositoryUnavailable:`Repositorio no disponible`,loadFailed:`Estado Git no disponible`,notGit:`Carpeta de contexto · sin Git`,retry:`Reintentar`},T={label:`Proveedor`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},E={cycleHint:`⇧⇥ para cambiar`,observe:{name:`Observa`,desc:`Solo lectura — nada cambia`},edit:{name:`Edita`,desc:`Crear y editar (reversible)`},operate:{name:`Opera`,desc:`Lanzar IA — tiene coste`},autonomous:{name:`Autónomo`,desc:`Borrar y detener — irreversible`},lockedTitle:`Necesita un nivel superior`,lockedBody:`Esa acción necesita el nivel «{{level}}». Estás en «{{current}}».`,raiseHint:`⇧⇥ para subir el nivel, o pídelo de otra forma.`},D={title:`Confirmar acción`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Aprobar`,cancel:`Cancelar`,dontAskAgain:`No volver a preguntar en esta sesión`,approved:`Aprobado`,cancelled:`Cancelado`},O={home:`Inicio`,searchPlaceholder:`Habla con Specrails…`,searchProjectsPlaceholder:`Buscar proyectos…`,recents:`Recientes`,allProjects:`Todos los proyectos`,searchAll:`Buscar en todos los proyectos`,addProject:`Añadir proyecto…`,homeHint:`Ningún proyecto seleccionado — operando en todos los proyectos.`,askCreateOrSearch:`No hay ningún proyecto seleccionado. ¿Quieres crear un proyecto nuevo o buscar en todos los proyectos?`},k={remove:`Quitar {{label}}`,addContextAction:`Añadir contexto o acción`,filtering:`Filtrando "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`Sin resultados`,noMatchesFor:`Sin resultados para "{{query}}"`,mode:{reference:{title:`Referencia`,hint:`@ proyectos, especificaciones, misiones`},trace:{title:`Traza`,hint:`# jobs, ejecuciones, IDs`},action:{title:`Acción`,hint:`/ comandos para este contexto`}},plus:{reference:`Referencia`,referenceHint:`Proyectos, especificaciones, misiones`,trace:`Traza`,traceHint:`Jobs, ejecuciones, IDs`,action:`Acción`,actionHint:`Crear, lanzar, inspeccionar`,fileAttachment:`Archivo adjunto`,fileAttachmentHint:`Añadir docs, imágenes, logs`,browserCapture:`Captura del navegador`,browserCaptureHint:`Captura una zona de una página para esta misión`},railGroup:`Rails`,railGroupInUse:`Rails en uso`},A={label:`Cambiar de misión`,untitled:`Nueva misión`,new:`Nueva misión`,searchPlaceholder:`Buscar misiones…`,noMatches:`Ninguna misión coincide`,working:`El agente está trabajando`,queuedBadge:`{{n}} en cola`,delete:`Eliminar misión "{{title}}"`,deleteConfirm:`¿Eliminar?`,deleteLiveConfirm:`El agente está trabajando — ¿eliminar igualmente?`,confirmDelete:`Confirmar eliminación`,cancelDelete:`Conservar misión`,deleteFailed:`No se pudo eliminar la misión`},j={title:`No hay ningún proveedor de IA instalado`,body:`El agente necesita Claude, Codex, Gemini o Kimi en tu máquina. Instala uno y vuelve a abrir el agente para empezar a chatear.`,placeholder:`Instala un proveedor de IA para usar el agente…`},M={title:`El MCP de Specrails está apagado`,body:`El agente necesita el servidor MCP integrado para manejar la app.`,enable:`Activar el MCP de Specrails`,enabling:`Activando…`,enabled:`MCP activado`},N={live:`en vivo`,queued:`en cola`,running:`en curso`,done:`hecho`,failed:`fallido`},P={generic:`Algo salió mal. Inténtalo de nuevo.`,busy:`El agente está ocupado. Inténtalo de nuevo en un momento.`},F={kindAgent:`Misión del agente`},I=`Nueva misión`,L=`Cambiar a Control de misiones`,R=`Cambiar al tablero`,z=`Buscar`,B=`Inicio`,V=`Misiones favoritas`,H=`Sin título`,U={title:`En el workspace`,terminal:`Terminal`,files:`Archivos`,browser:`Navegador`,requiresProject:`Selecciona un proyecto para usar esta herramienta`,resizeCode:`Redimensionar panel de código`,closeFiles:`Cerrar código`,browserConfirm:`Añadir al agente`,browserSelectStart:`Seleccionar para añadir a la misión`,browserCaptured:`Captura añadida`,uploadFailed:`Error al subir`,requiresConversation:`Inicia una misión para usar esta herramienta`,jobs:`Jobs`,closeJobs:`Cerrar jobs`,resizeJobs:`Redimensionar panel de jobs`,noJobs:`Aún no hay jobs — pide al agente que lance uno`,analytics:`Analítica`,closeAnalytics:`Cerrar analítica`,resizeAnalytics:`Redimensionar panel de analítica`},W=`Adjuntar archivo`,G=`Borrar «{{title}}»`,K=`Confirmar borrado de «{{title}}»`,q=`Añadir «{{title}}» a favoritas`,J=`Quitar «{{title}}» de favoritas`,Y=`¿confirmar?`,X=`Este proveedor aún no lee imágenes — adjunta archivos de texto`,Z={label:`Esfuerzo`,minimal:`Mínimo`,low:`Bajo`,medium:`Medio`,high:`Alto`,xhigh:`Extra alto`,max:`Máximo`,ultra:`Ultra`},Q=JSON.parse(`{"operation":{"inProgress":"Acción en curso…","create-pr":"Creando PR…","publish":"Publicando…","discard":"Descartando…","dismiss":"Cerrando seguimiento…","poll-merge":"Comprobando merge…","reopen":"Reabriendo…","merge-local":"Integrando en local…","recover-and-retry":"Creando el commit y reintentando el push del resultado conservado…","acknowledge-no-changes":"Marcando como hecho…"},"rail":"Rail {{index}}","specCount_one":"{{count}} spec","specCount_other":"{{count}} specs","base":"Rama base","openPr":"Abrir PR","existingPr":"PR existente","title":{"building":"Implementando en un worktree aislado…","buildingExistingPr":"Aplicando cambios sobre una PR existente…","paused":"Necesita decisión humana","on_review":"Implementación lista para revisar","pr_draft":"PR en borrador creada","pr_draft_degraded":"Entrega de la PR incompleta","pr_ready":"PR lista para el merge","no_changes":"No hacían falta cambios","partial":"Implementación parcial","delivery_blocked":"Implementación completa — la entrega requiere atención","update_failed":"Implementación completa — falló la actualización","pr_closed":"PR cerrada sin merge","superseded":"Sustituida por una ejecución más reciente","existing_pr_updated":"PR existente actualizada","implementation_failed":"La implementación ha fallado","pr_failed":"No se pudo crear la PR","merged":"Merge de la PR completado","discarded":"Descartada"},"buildingHint":"Cuando termine, se te preguntará si crear la PR.","buildingExistingPrHint":"Specrails está trabajando sobre la rama de la PR existente y subirá los cambios de revisión a esa misma PR.","paused":"Implementación pausada","pausedForRun":"Pausada en {{ref}}","resume":"Reanudar","stopExecution":"Detener ejecución","stopExecutionSent":"Señal de parada enviada","stopExecutionFailed":"No se pudo parar la ejecución","partialSummary":"{{succeeded}} de {{total}} completadas; {{failed}} fallidas","unit":{"failed":"implementación fallida","blocked":"entrega bloqueada","noChanges":"sin cambios","succeeded":"lista"},"createPr":"Crear PR","publish":"Publicar","checkout":"Cambiar a la rama","openReview":"Revisar","openReviewTooltip":"Abrir la revisión en lenguaje claro","checkoutTooltip":"Cambia la carpeta principal del proyecto a {{branch}}","checkoutSuccess":"Checkout en {{branch}}","checkoutFailed":"No se pudo hacer checkout de la rama de implementación","checkoutDirtyTitle":"Checkout bloqueado para proteger tus cambios","checkoutDirtyBody":"La carpeta principal del proyecto tiene cambios sin commitear. Haz commit o stash y vuelve a intentarlo. No se ha modificado nada.","checkoutSafetyUnknownTitle":"Checkout pausado porque no se pudo verificar la seguridad","checkoutSafetyUnknownBody":"Specrails no pudo leer el estado de Git de la carpeta principal del proyecto. No se ha liberado ni modificado nada. Vuelve a intentarlo cuando Git esté disponible.","checkoutNotDeliverableTitle":"Esta rama no contiene la implementación conservada","checkoutNotDeliverableBody":"Todavía no se ha verificado el commit exacto de la entrega. Inspecciona o recupera el resultado local.","inspectLocalResult":"Inspeccionar resultado local","inspectLocalResultTooltip":"Muestra el worktree aislado que se ha conservado y copia su ruta","localResultPathCopied":"Ruta del resultado local copiada","localResultPath":"Resultado local conservado","localResultUnavailableHere":"No hay ningún worktree recuperable en este equipo. Revisa el registro de ejecución desde el equipo donde se ejecutó.","recoverAndRetry":"Crear commit y reintentar push","recoverAndRetryVerified":"El commit recuperado {{sha}} está verificado en la PR","recoveryStillBlocked":"La recuperación local aún requiere atención","recheckRecovery":"Comprobar de nuevo","recoveryUnavailable":"No se pudo verificar la recuperación en este equipo","recoveryUnavailableBody":"Specrails no pudo demostrar de forma segura un único resultado perteneciente a la entrega en este clon. No se ha cambiado ni eliminado nada. Revisa el detalle de la fase y los registros de ejecución. Si el run se ejecutó en otro equipo, abre Specrails allí y vuelve a comprobar.","recoveryDetailSummary":"Detalle técnico de recuperación","retry":"Reintentar","retryPr":"Reintentar PR","checkMerge":"Comprobar merge","verifyPr":"Verificar PR","discard":"Descartar","dismiss":"Cerrar seguimiento","discardLocalResult":"Descartar resultado local","markDone":"Marcar como hecho","refine":"Refinar","retryPush":"Reintentar push","retryPushVerified":"Push verificado · el commit {{sha}} está en la PR","commitAlreadyVerified":"El commit {{sha}} ya está verificado en la PR","deliveryCommit":"commit {{sha}}","reopen":"Reabrir","createPartialPr":"Crear PR con {{count}}","confirmDiscard":"¿Confirmar descarte?","mergedNote":"Merge completado — las specs han pasado a Hecho","discardedNote":"Descartada — las specs han vuelto al backlog","supersededNote":"Una ejecución de implementación más reciente sustituyó esta tarjeta.","completedNote":"Confirmado — las specs han pasado a Hecho","noChangesExisting":"No hacían falta cambios nuevos; la PR existente no se ha modificado.","noChangesNote":"No hacían falta cambios de código. Marca las specs como hechas o devuélvelas al backlog para refinarlas.","deliveryNeedsAttention":"Implementación completa; la entrega requiere atención","deliveryBlockedNote":"La implementación terminó correctamente, pero la entrega está bloqueada. Revisa la etapa y los registros antes de descartar el resultado local.","partialDeliveryBlockedNote":"Parte de la implementación terminó correctamente, pero todavía no hay nada que se pueda entregar de forma segura. Revisa la evidencia por unidad y los registros antes de elegir la siguiente acción.","retryPushNote":"La implementación terminó correctamente y los cambios están seguros en local. Reintenta solo el push.","cleanupIncomplete_one":"La limpieza está incompleta ({{count}} aviso)","cleanupIncomplete_other":"La limpieza está incompleta ({{count}} avisos)","safetyArchiveTitle":"Archivo de seguridad ({{count}})","safetyArchiveHint":"Se han conservado archivos temporales del espacio de trabajo fuera de la PR como medida de precaución. Puedes revisarlos o eliminarlos manualmente.","implementationFailedNote":"El run de implementación falló antes de generar algo entregable. Abre el log del run para revisar el fallo y descarta esta card antes de relanzar.","degraded":{"pushed":"La rama se subió pero no se pudo crear la PR — reintenta para terminar.","localOnly":"Los cambios se ensamblaron en local pero no se subieron — reintenta para publicar la PR."},"alreadyResolved":"Ya resuelta en otro sitio","actionFailed":"La acción falló","notMergedYet":"Aún sin merge","commitMissingRetry":"El commit de la entrega ya no está en la PR. Puedes reintentar el push.","prVerifiedWaiting":"Commit {{sha}} verificado · pendiente de merge","viewLog":"Ver el registro de ejecución de {{ref}}","runElapsedAria":"{{elapsed}} transcurridos","runCostAria":"{{cost}} gastados","pinned":{"label":"Fijada","marker":"Tarjeta de implementación — fijada arriba","collapse":"Minimizar tarjeta fijada","expand":"Expandir tarjeta fijada","expandCard":"Expandir esta tarjeta","collapseCard":"Minimizar esta tarjeta","collapsed_one":"Tarjeta de implementación","collapsed_other":"{{count}} tarjetas de implementación","state":{"building":"En curso","on_review":"Revisión","pr_draft":"PR borrador","pr_ready":"Publicada","no_changes":"Sin cambios","completed":"Completada","pr_closed":"Cerrada","superseded":"Sustituida","implementation_failed":"Fallida","pr_failed":"Fallida","merged":"Fusionada","discarded":"Descartada"}},"mergeLocal":"Integrar en local","mergeLocalTooltip":"Fusiona las ramas entregadas en {{base}} en tu checkout local (sin necesidad de GitHub)","mergeLocalBlockedDirty":"No se puede integrar: los cambios locales en {{base}} se solapan con la entrega. Haz commit o stash de esos cambios y reintenta.","mergeLocalBlockedBranch":"No se puede integrar: tu checkout está en {{current}}, no en {{base}}. Cambia a {{base}} y reintenta.","mergedLocally":"Integrado en {{base}} en local","confirm":{"mergeLocalTitle":"¿Integrar en local?","mergeLocalBody":"Las ramas entregadas se fusionarán en {{base}} localmente. Se conservan los cambios existentes; si se solapan, puede ser necesario resolverlos antes de integrar.","recoverAndRetryTitle":"¿Crear el commit y subir el resultado conservado?","recoverAndRetryBody":"Specrails solo usará el worktree aislado o la rama registrada con avance rápido para {{branch}}. Si hace falta, creará un commit con los archivos entregables y subirá ese commit exacto únicamente si la PR sigue abierta sobre las ramas de origen y destino esperadas. La carpeta principal del proyecto y sus cambios sin commitear no se tocarán.","recheckRecoveryTitle":"¿Volver a comprobar este equipo?","recheckRecoveryBody":"Specrails volverá a examinar en este clon el worktree, la rama, las refs, los reflogs y los objetos Git huérfanos pertenecientes a la entrega de {{branch}}. Si demuestra un único resultado, podrá confirmar los cambios aislados y reintentar el push exacto. No tocará la carpeta principal del proyecto.","freshDiscardTitle":"¿Descartar esta entrega?","freshDiscardBody":"La PR se cerrará sin eliminar su rama remota. Solo se eliminarán las ramas y los worktrees locales que pertenezcan a SpecRails y sigan en su commit registrado; cualquier recurso modificado se conservará y se mostrará un aviso. Las specs volverán al backlog. Los recursos locales eliminados no se pueden recuperar.","implementationFailedDiscardTitle":"¿Descartar esta entrega fallida?","implementationFailedDiscardBody":"Se cerrará la tarjeta y sus specs volverán al backlog. El trabajo local y las ramas se conservarán para su inspección. Solo se podrán eliminar los recursos cuya limpieza sea segura.","dismissTitle":"¿Cerrar este seguimiento?","dismissBody":"Se cerrará esta tarjeta de seguimiento. Su worktree solo se eliminará si sigue siendo seguro hacerlo; de lo contrario, se conservará y verás un aviso. La PR existente, su rama y su estado de revisión no cambiarán.","discardLocalTitle":"¿Descartar el resultado local?","discardLocalBody":"La iteración local recuperable solo se eliminará si sigue siendo seguro hacerlo; si ha cambiado, se conservará y verás un aviso. Cualquier PR existente y su rama no cambiarán. Un resultado eliminado no se puede recuperar.","noChangesDoneTitle":"¿Marcar estas specs como hechas?","noChangesDoneBody":"La implementación confirmó que no hacen falta cambios de código. Las specs pasarán a Hecho y se limpiará el worktree sin cambios.","refineTitle":"¿Refinar estas specs?","refineBody":"Se cerrará el resultado sin cambios y las specs volverán al backlog para que puedas refinarlas. Los registros de ejecución seguirán disponibles."},"discardStackedNote":"Los rails posteriores de este hito se construyeron sobre esta entrega. Descartarla pausa la cadena del hito; los rails posteriores conservan su trabajo."}`),$={heading:`Borrador de spec`,drafting:`Actualizando borrador…`,acceptanceCriteria:`Criterios de aceptación`,untitled:`Spec sin título`,expand:`Ver descripción completa`,collapse:`Contraer descripción`},ee={heading:`Marco`,framing:`Enmarcando la petición…`,restated:`Lo que he entendido`,alternative:`También podría significar`,pick:`Responder con esto`,touches:`Tocaría`,discriminator:`¿Cuál de las dos?`,assumptions:`Lo que doy por supuesto`,unknowns:`Sigue abierto`},te={openTicket:`Abrir spec #{{id}}`,openPullRequest:`Abrir PR #{{id}}`,openJob:`Abrir job {{id}}`,openLoop:`Abrir loop {{id}}`,ticketNotFound:`Spec #{{id}} no encontrada — puede haber sido eliminada`,pullRequestUrlMissing:`La PR #{{id}} se mencionó sin URL`,pullRequestNotFound:`No se pudo encontrar la PR #{{id}} en este proyecto`,jobNotFound:`Job no encontrado — puede haber sido eliminado`,loopNotFound:`Loop no encontrado — puede haber sido eliminado`,lookupFailed:`No se pudo verificar la referencia — inténtalo de nuevo`},ne={untitled:`Misión sin título`,menu:`Menú de la misión`,rename:`Renombrar`,renamePlaceholder:`Nombre de la misión`,renameHint:`Doble clic para renombrar`,renameFailed:`No se pudo renombrar`,addFavorite:`Añadir a favoritas`,removeFavorite:`Quitar de favoritas`,copyName:`Copiar nombre de la misión`,copyId:`Copiar ID de la misión`,copyProject:`Copiar nombre del proyecto`,copyProjectPath:`Copiar ruta del proyecto`,copyFailed:`No se pudo copiar`,copyTranscript:`Copiar transcripción`,copyTranscriptSuccess:`Transcripción copiada`,copyTranscriptFailed:`No se pudo copiar la transcripción`,exportTranscript:`Exportar transcripción (.txt)`,exportTranscriptSuccess:`Exportación de transcripción iniciada`,exportTranscriptFailed:`No se pudo exportar la transcripción`,delete:`Borrar misión`,deleteConfirm:`¿Borrar esta misión? No se puede deshacer.`,deleteFailed:`No se pudo borrar la misión`},re=`¿Qué construimos ahora?`,ie={title:`Log de ejecución`,live:`En vivo`,empty:`Aún no hay actividad de herramientas en este turno.`,output:`Salida`,error:`Error`,copyAll:`Copiar log completo`,copyEntry:`Copiar entrada`,copySuccess:`Log copiado al portapapeles`,copyFailed:`No se pudo copiar el log`,openLog:`Ver log de ejecución`,close:`Cerrar`},ae={open:`Ver logs de {{command}}`,logsTitle:`Logs del proceso`,logsDescription:`Salida en directo e historial guardado del proceso.`,close:`Cerrar logs`,command:`Comando`,directory:`Directorio`,exitCode:`Código de salida: {{code}}`,signal:`Señal: {{signal}}`,search:`Buscar en logs…`,source:`Origen de la salida`,allSources:`Toda la salida`,pause:`Pausar`,resume:`Reanudar`,follow:`Seguir`,copy:`Copiar logs visibles`,download:`Descargar logs visibles`,stop:`Detener proceso`,stopCommand:`Detener {{command}}`,stopFailed:`No se pudo detener el proceso. Inténtalo de nuevo.`,truncated:`Se muestra una ventana limitada de logs. Puede faltar salida anterior o parte de líneas largas. Copiar y descargar incluyen sólo esta vista.`,paused:`Vista pausada. El proceso sigue funcionando.`,loadFailed:`No se pudieron cargar los logs. Puede haber vencido su retención; se conserva la salida ya cargada.`,retry:`Reintentar`,copied:`Logs visibles copiados.`,exportFailed:`No se pudieron exportar los logs. Inténtalo de nuevo.`,output:`Salida del proceso`,loading:`Cargando logs…`,noMatches:`No hay salida que coincida.`,empty:`Todavía no hay salida.`,lineCount:`{{count}} de {{total}} líneas`,exportHint:`La exportación incluye sólo el filtro actual y la salida conservada.`,status:{starting:`Iniciando`,running:`En ejecución`,stopping:`Deteniendo`,exited:`Finalizado`,killed:`Detenido`,failed:`Fallido`,interrupted:`Desconectado`},repository:`Repositorio`,history:{button:`Procesos`,title:`Procesos de la misión`,open:`Ver historial de procesos`,description:`Consulta procesos activos y logs guardados de ejecuciones anteriores.`,search:`Buscar por comando o repositorio…`,refresh:`Actualizar historial`,close:`Cerrar historial de procesos`,back:`Volver a procesos`,loading:`Cargando historial de procesos…`,empty:`Todavía no hay procesos registrados en esta misión.`,noMatches:`No hay procesos que coincidan.`,loadFailed:`No se pudo cargar el historial. Las entradas ya cargadas siguen disponibles.`,showMore:`Mostrar más`,count:`Procesos: {{count}}`},interruptedHint:`Specrails dejó de supervisar este proceso. Su estado en el sistema operativo es desconocido; los logs guardados siguen disponibles.`,persistenceFailed:`No se pudo guardar el historial del proceso. La salida disponible sigue visible.`},oe={detach:`Abrir en otra ventana`,attach:`Volver a la ventana principal`,detached:`Esta misión está abierta en otra ventana.`,focus:`Mostrar ventana de la misión`,loading:`Moviendo misión…`,failed:`No se ha podido mover la misión. Tu borrador se conserva.`,dismiss:`Cerrar aviso`,wrongMission:`Abre esta misión antes de moverla.`,finishPending:`Termina la operación en curso o guarda o cancela el mensaje o la captura antes de mover la misión.`},se={heading:`Lanzamiento de rail`,rail:`Rail {{index}}`,newRail:`Nuevo rail`,play:`Play`,launching:`Lanzando…`,dismiss:`Descartar`,playHint:`Ajusta lo que quieras y pulsa Play para lanzar bajo tu propia autoridad.`,pending:`Preparando una propuesta de lanzamiento…`,unreadable_one:`No se pudo leer la propuesta de lanzamiento del agente.`,unreadable_other:`No se pudieron leer {{count}} propuestas de lanzamiento.`,pinnedMarker:`Propuesta de lanzamiento fijada sobre el compositor`,effortDefault:`Esfuerzo por defecto`,profileNone:`Sin perfil`,status:{proposal:`Propuesta`,ready:`Listo`,blocked:`Requiere atención`,loading:`Comprobando…`},availability:{free:`libre`,busy:`en ejecución`,pending_decision:`esperando una decisión`,on_review:`en revisión`},fields:{rail:`Rail`,newRailName:`Nombre del nuevo rail (opcional)`,railName:`Nombre del rail`,addSpec:`Añadir spec`,removeSpec:`Quitar #{{id}}`,loop:`Loop`,engine:`Motor de IA`,model:`Modelo`,effort:`Esfuerzo de razonamiento`,profile:`Perfil de agentes`,targetPr:`PR de destino #`,baseBranch:`Rama base`},notes:{railMissing:`El Rail {{index}} ya no existe — elige otro rail o crea uno.`,railBusy:`El Rail {{index}} está {{state}} — no se puede lanzar ahí.`,useFree:`Usar el Rail {{index}}`,specsDropped:`Ya no están en este proyecto: {{ids}}`,engineStale:`{{engine}} no se detecta en este equipo — se usará {{fallback}}.`,modelStale:`{{model}} no está disponible — se usará {{fallback}}.`},block:{noProject:`Esta misión no está fijada a ningún proyecto.`,loadFailed:`No se pudieron cargar los rails del proyecto.`,noSpecs:`Añade al menos una spec para lanzar.`,railLimit:`Ya existen los {{max}} rails y ninguno está libre.`},errors:{tickets_in_flight:`Una de estas specs ya se está ejecutando en otro rail.`,pr_decision_pending:`Este rail está esperando una decisión sobre la PR.`,rail_limit_reached:`El proyecto ya tiene el número máximo de rails.`,invalid_base_branch:`Esa rama base no existe en local.`,base_branch_requires_isolation:`Una rama base requiere aislamiento por worktree (un repositorio git con commits).`,target_pr_requires_pr_mode:`Una PR de destino requiere aislamiento por worktree (un repositorio git con commits).`,invalid_response:`Respuesta inesperada del servidor.`},stub:{launched:`Lanzado → Rail {{rail}}`,dismissed:`Propuesta descartada`,viewRun:`Ver run`,goToCard:`Ir a la tarjeta`,goToCardTitle:`Ir a la tarjeta de implementación de este lanzamiento`,viewRunTitle:`Abrir el log en vivo del run`}},ce={status:{running:`En ejecución`,paused:`En pausa`,succeeded:`Completado`,failed:`Fallido`,stalled:`Estancado`,cancelled:`Cancelado`,unknown:`Desconocido`},title:{running:`Implementando en el checkout del proyecto…`,paused:`Requiere una decisión humana`,succeeded:`Implementación terminada`,failed:`La implementación ha fallado`,stalled:`La implementación se ha estancado`,cancelled:`Run cancelado`,unknown:`Estado del run desconocido`},noDeliveryNote:`Sin fase de PR — este proyecto no tiene repositorio git ni commits, así que el trabajo se ha aplicado directamente en la carpeta del proyecto.`,noDeliveryHint:`Ejecutando directamente en la carpeta del proyecto (sin repositorio git ni commits — no se propondrá ninguna PR).`,failure:{title:`Por qué se detuvo`,step:`paso {{step}}`,unit:`#{{ticket}} · {{code}}`},actions:{resume:`Reanudar`,approve:`Aprobar`,recover:`Recuperar y reintentar`,relaunch:`Relanzar`},relaunchSent:`Rail {{index}} relanzado — una nueva tarjeta seguirá el run.`,relaunchFailed:`No se pudo relanzar el rail`,relaunchBlockedActive:`El rail todavía tiene un run activo`},le={marker:`El Rail {{rail}} ha fallado: {{code}}`,openCard:`Abrir tarjeta`,briefing:{title:`Informe automático del fallo`}},ue={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,attachment:s,maximize:c,restore:l,minimize:u,close:d,newConversation:f,emptyTitle:p,emptyHint:m,thinking:h,connecting:g,consultingCode:_,size:v,model:y,history:b,queue:x,receipt:S,queueEdit:C,git:w,provider:T,tier:E,approval:D,project:O,palette:k,mission:A,noProvider:j,degraded:M,toolCard:N,error:P,chip:F,newAgent:I,switchToAgent:L,switchToKanban:R,search:z,home:B,favoriteMissions:V,untitled:H,workspace:U,attachFile:W,deleteConversation:G,confirmDeleteConversation:K,addFavoriteConversation:q,removeFavoriteConversation:J,confirmShort:Y,imagesUnsupported:X,effort:Z,prCard:Q,specDraft:$,problemFrame:ee,refs:te,header:ne,emptyTitleCodeRain:re,activity:ie,backgroundProcess:ae,window:oe,railCard:se,runCard:ce,runFailure:le};export{ie as activity,q as addFavoriteConversation,D as approval,W as attachFile,s as attachment,ae as backgroundProcess,F as chip,d as close,r as composerPlaceholder,K as confirmDeleteConversation,Y as confirmShort,g as connecting,_ as consultingCode,o as copy,ue as default,M as degraded,G as deleteConversation,Z as effort,m as emptyHint,p as emptyTitle,re as emptyTitleCodeRain,P as error,V as favoriteMissions,w as git,ne as header,b as history,B as home,X as imagesUnsupported,c as maximize,u as minimize,A as mission,y as model,I as newAgent,f as newConversation,j as noProvider,k as palette,Q as prCard,ee as problemFrame,O as project,T as provider,x as queue,C as queueEdit,se as railCard,S as receipt,te as refs,J as removeFavoriteConversation,l as restore,ce as runCard,le as runFailure,z as search,i as send,v as size,$ as specDraft,a as stop,t as subtitle,L as switchToAgent,R as switchToKanban,h as thinking,E as tier,e as title,N as toolCard,n as trigger,H as untitled,oe as window,U as workspace};
1
+ var e=`Control de misiones`,t=`Maneja Specrails conversando`,n=`Control de misiones`,r=`Pídele al agente lo que necesites…`,i=`Enviar`,a=`Detener`,o=`Copiar`,s={openPreview:`Previsualizar {{name}}`,openDownload:`Descargar {{name}}`,previewTitle:`Vista previa de {{name}}`,downloadTitle:`¿Descargar archivo?`,downloadPrompt:`Este archivo no se puede previsualizar aquí. ¿Quieres descargarlo?`,download:`Descargar`,cancelDownload:`Ahora no`,loading:`Preparando archivo…`,loadFailed:`No se pudo cargar el adjunto`,loadError:`No se pudo cargar el adjunto: {{error}}`},c=`Maximizar`,l=`Restaurar`,u=`Minimizar`,d=`Cerrar`,f=`Nueva misión`,p=`¿Cuál es la misión?`,m=`Elige un proyecto y luego pregunta. El tablero se actualiza en vivo mientras el agente trabaja.`,h=`Pensando…`,g=`Conectando…`,_=`Consultando la app…`,v={compact:`Compacto`,comfortable:`Cómodo`,max:`Maximizar`},y={label:`Modelo`,loading:`Cargando modelos…`,unavailable:`Modelos no disponibles`},b={hint:`Explorando historial de prompts — escribe para editar, ↑↓ para navegar`},x={queued:`En cola`,send:`Enviar mensaje`,sendHint:`Se enviará en el siguiente turno. Pulsa «Guiar» en un mensaje de la cola para enviarlo sin interrumpir al modelo.`,placeholder:`Añade un mensaje a la cola…`,delivered:`Entregado al agente`,interrupted:`Entrega no confirmada`,cancelled:`Cancelado antes de entregarse`,steer:`Guiar`,steerHint:`Enviar sin interrumpir al modelo`,steering:`Enviando al agente…`,remove:`Borrar mensaje de la cola`,more:`Opciones del mensaje`,edit:`Editar`,actionConflict:`El mensaje ya se está entregando o ha salido de la cola.`,actionFailed:`No se ha podido actualizar el mensaje de la cola. Inténtalo de nuevo.`},S={sent:`Enviado al agente`,received:`Entregado al agente`,read:`Leído por el agente`,interrupted:`Entrega no confirmada`,cancelled:`Cancelado antes de entregarse`},C={editing:`Editando mensaje pendiente {{n}} de {{m}}`,hint:`↑↓ para navegar · Enter guarda · Esc cancela`,save:`Guardar mensaje pendiente`,cancel:`Cancelar edición`,dispatched:`El mensaje ya se ha entregado; tu texto se conserva como borrador`,saveFailed:`No se pudo guardar el mensaje pendiente`},w={branch:`Rama`,detached:`(detached)`,dirty:`Cambios sin commitear`,switched:`Cambiado a {{branch}}`,switchFailed:`No se pudo cambiar de rama`,lockedWhileWorking:`Rama bloqueada mientras el agente trabaja`,searchPlaceholder:`Buscar ramas…`,noMatches:`Ninguna rama coincide`,worktrees:`Worktrees`,worktreePathCopied:`Ruta del worktree copiada`,copyWorktreePath:`Copiar ruta del worktree`,repository:`Repositorio`,repositoryUnavailable:`Repositorio no disponible`,loadFailed:`Estado Git no disponible`,notGit:`Carpeta de contexto · sin Git`,retry:`Reintentar`},T={label:`Proveedor`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},E={cycleHint:`⇧⇥ para cambiar`,observe:{name:`Observa`,desc:`Solo lectura — nada cambia`},edit:{name:`Edita`,desc:`Crear y editar (reversible)`},operate:{name:`Opera`,desc:`Lanzar IA — tiene coste`},autonomous:{name:`Autónomo`,desc:`Borrar y detener — irreversible`},lockedTitle:`Necesita un nivel superior`,lockedBody:`Esa acción necesita el nivel «{{level}}». Estás en «{{current}}».`,raiseHint:`⇧⇥ para subir el nivel, o pídelo de otra forma.`},D={title:`Confirmar acción`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Aprobar`,cancel:`Cancelar`,dontAskAgain:`No volver a preguntar en esta sesión`,approved:`Aprobado`,cancelled:`Cancelado`},O={home:`Inicio`,searchPlaceholder:`Habla con Specrails…`,searchProjectsPlaceholder:`Buscar proyectos…`,recents:`Recientes`,allProjects:`Todos los proyectos`,searchAll:`Buscar en todos los proyectos`,addProject:`Añadir proyecto…`,homeHint:`Ningún proyecto seleccionado — operando en todos los proyectos.`,askCreateOrSearch:`No hay ningún proyecto seleccionado. ¿Quieres crear un proyecto nuevo o buscar en todos los proyectos?`},k={remove:`Quitar {{label}}`,addContextAction:`Añadir contexto o acción`,filtering:`Filtrando "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`Sin resultados`,noMatchesFor:`Sin resultados para "{{query}}"`,mode:{reference:{title:`Referencia`,hint:`@ proyectos, especificaciones, misiones`},trace:{title:`Traza`,hint:`# jobs, ejecuciones, IDs`},action:{title:`Acción`,hint:`/ comandos para este contexto`}},plus:{reference:`Referencia`,referenceHint:`Proyectos, especificaciones, misiones`,trace:`Traza`,traceHint:`Jobs, ejecuciones, IDs`,action:`Acción`,actionHint:`Crear, lanzar, inspeccionar`,fileAttachment:`Archivo adjunto`,fileAttachmentHint:`Añadir docs, imágenes, logs`,browserCapture:`Captura del navegador`,browserCaptureHint:`Captura una zona de una página para esta misión`},railGroup:`Rails`,railGroupInUse:`Rails en uso`},A={label:`Cambiar de misión`,untitled:`Nueva misión`,new:`Nueva misión`,searchPlaceholder:`Buscar misiones…`,noMatches:`Ninguna misión coincide`,working:`El agente está trabajando`,queuedBadge:`{{n}} en cola`,delete:`Eliminar misión "{{title}}"`,deleteConfirm:`¿Eliminar?`,deleteLiveConfirm:`El agente está trabajando — ¿eliminar igualmente?`,confirmDelete:`Confirmar eliminación`,cancelDelete:`Conservar misión`,deleteFailed:`No se pudo eliminar la misión`},j={title:`No hay ningún proveedor de IA instalado`,body:`El agente necesita Claude, Codex, Gemini o Kimi en tu máquina. Instala uno y vuelve a abrir el agente para empezar a chatear.`,placeholder:`Instala un proveedor de IA para usar el agente…`},M={title:`El MCP de Specrails está apagado`,body:`El agente necesita el servidor MCP integrado para manejar la app.`,enable:`Activar el MCP de Specrails`,enabling:`Activando…`,enabled:`MCP activado`},N={live:`en vivo`,queued:`en cola`,running:`en curso`,done:`hecho`,failed:`fallido`},P={generic:`Algo salió mal. Inténtalo de nuevo.`,busy:`El agente está ocupado. Inténtalo de nuevo en un momento.`},F={kindAgent:`Misión del agente`},I=`Nueva misión`,L=`Cambiar a Control de misiones`,R=`Cambiar al tablero`,z=`Buscar`,B=`Inicio`,V=`Misiones favoritas`,H=`Sin título`,U={title:`En el workspace`,terminal:`Terminal`,files:`Archivos`,browser:`Navegador`,requiresProject:`Selecciona un proyecto para usar esta herramienta`,resizeCode:`Redimensionar panel de código`,closeFiles:`Cerrar código`,browserConfirm:`Añadir al agente`,browserSelectStart:`Seleccionar para añadir a la misión`,browserCaptured:`Captura añadida`,uploadFailed:`Error al subir`,requiresConversation:`Inicia una misión para usar esta herramienta`,jobs:`Jobs`,closeJobs:`Cerrar jobs`,resizeJobs:`Redimensionar panel de jobs`,noJobs:`Aún no hay jobs — pide al agente que lance uno`,analytics:`Analítica`,closeAnalytics:`Cerrar analítica`,resizeAnalytics:`Redimensionar panel de analítica`},W=`Adjuntar archivo`,G=`Borrar «{{title}}»`,K=`Confirmar borrado de «{{title}}»`,q=`Añadir «{{title}}» a favoritas`,J=`Quitar «{{title}}» de favoritas`,Y=`¿confirmar?`,X=`Este proveedor aún no lee imágenes — adjunta archivos de texto`,Z={label:`Esfuerzo`,minimal:`Mínimo`,low:`Bajo`,medium:`Medio`,high:`Alto`,xhigh:`Extra alto`,max:`Máximo`,ultra:`Ultra`},Q=JSON.parse(`{"operation":{"inProgress":"Acción en curso…","create-pr":"Creando PR…","publish":"Publicando…","discard":"Descartando…","dismiss":"Cerrando seguimiento…","poll-merge":"Comprobando merge…","reopen":"Reabriendo…","merge-local":"Integrando en local…","recover-and-retry":"Creando el commit y reintentando el push del resultado conservado…","acknowledge-no-changes":"Marcando como hecho…"},"rail":"Rail {{index}}","specCount_one":"{{count}} spec","specCount_other":"{{count}} specs","base":"Rama base","openPr":"Abrir PR","existingPr":"PR existente","title":{"building":"Implementando en un worktree aislado…","buildingExistingPr":"Aplicando cambios sobre una PR existente…","paused":"Necesita decisión humana","on_review":"Implementación lista para revisar","pr_draft":"PR en borrador creada","pr_draft_degraded":"Entrega de la PR incompleta","pr_ready":"PR lista para el merge","no_changes":"No hacían falta cambios","partial":"Implementación parcial","delivery_blocked":"Implementación completa — la entrega requiere atención","update_failed":"Implementación completa — falló la actualización","pr_closed":"PR cerrada sin merge","superseded":"Sustituida por una ejecución más reciente","existing_pr_updated":"PR existente actualizada","implementation_failed":"La implementación ha fallado","pr_failed":"No se pudo crear la PR","merged":"Merge de la PR completado","discarded":"Descartada"},"buildingHint":"Cuando termine, se te preguntará si crear la PR.","buildingExistingPrHint":"Specrails está trabajando sobre la rama de la PR existente y subirá los cambios de revisión a esa misma PR.","paused":"Implementación pausada","pausedForRun":"Pausada en {{ref}}","resume":"Reanudar","stopExecution":"Detener ejecución","stopExecutionSent":"Señal de parada enviada","stopExecutionFailed":"No se pudo parar la ejecución","partialSummary":"{{succeeded}} de {{total}} completadas; {{failed}} fallidas","unit":{"failed":"implementación fallida","blocked":"entrega bloqueada","noChanges":"sin cambios","succeeded":"lista"},"createPr":"Crear PR","publish":"Publicar","checkout":"Cambiar a la rama","openReview":"Revisar","openReviewTooltip":"Abrir la revisión en lenguaje claro","checkoutTooltip":"Cambia la carpeta principal del proyecto a {{branch}}","checkoutSuccess":"Checkout en {{branch}}","checkoutFailed":"No se pudo hacer checkout de la rama de implementación","checkoutDirtyTitle":"Checkout bloqueado para proteger tus cambios","checkoutDirtyBody":"La carpeta principal del proyecto tiene cambios sin commitear. Haz commit o stash y vuelve a intentarlo. No se ha modificado nada.","checkoutSafetyUnknownTitle":"Checkout pausado porque no se pudo verificar la seguridad","checkoutSafetyUnknownBody":"Specrails no pudo leer el estado de Git de la carpeta principal del proyecto. No se ha liberado ni modificado nada. Vuelve a intentarlo cuando Git esté disponible.","checkoutNotDeliverableTitle":"Esta rama no contiene la implementación conservada","checkoutNotDeliverableBody":"Todavía no se ha verificado el commit exacto de la entrega. Inspecciona o recupera el resultado local.","inspectLocalResult":"Inspeccionar resultado local","inspectLocalResultTooltip":"Muestra el worktree aislado que se ha conservado y copia su ruta","localResultPathCopied":"Ruta del resultado local copiada","localResultPath":"Resultado local conservado","localResultUnavailableHere":"No hay ningún worktree recuperable en este equipo. Revisa el registro de ejecución desde el equipo donde se ejecutó.","recoverAndRetry":"Crear commit y reintentar push","recoverAndRetryVerified":"El commit recuperado {{sha}} está verificado en la PR","recoveryStillBlocked":"La recuperación local aún requiere atención","recheckRecovery":"Comprobar de nuevo","recoveryUnavailable":"No se pudo verificar la recuperación en este equipo","recoveryUnavailableBody":"Specrails no pudo demostrar de forma segura un único resultado perteneciente a la entrega en este clon. No se ha cambiado ni eliminado nada. Revisa el detalle de la fase y los registros de ejecución. Si el run se ejecutó en otro equipo, abre Specrails allí y vuelve a comprobar.","recoveryDetailSummary":"Detalle técnico de recuperación","retry":"Reintentar","retryPr":"Reintentar PR","checkMerge":"Comprobar merge","verifyPr":"Verificar PR","discard":"Descartar","dismiss":"Cerrar seguimiento","discardLocalResult":"Descartar resultado local","markDone":"Marcar como hecho","refine":"Refinar","retryPush":"Reintentar push","retryPushVerified":"Push verificado · el commit {{sha}} está en la PR","commitAlreadyVerified":"El commit {{sha}} ya está verificado en la PR","deliveryCommit":"commit {{sha}}","reopen":"Reabrir","createPartialPr":"Crear PR con {{count}}","confirmDiscard":"¿Confirmar descarte?","mergedNote":"Merge completado — las specs han pasado a Hecho","discardedNote":"Descartada — las specs han vuelto al backlog","supersededNote":"Una ejecución de implementación más reciente sustituyó esta tarjeta.","completedNote":"Confirmado — las specs han pasado a Hecho","noChangesExisting":"No hacían falta cambios nuevos; la PR existente no se ha modificado.","noChangesNote":"No hacían falta cambios de código. Marca las specs como hechas o devuélvelas al backlog para refinarlas.","deliveryNeedsAttention":"Implementación completa; la entrega requiere atención","deliveryBlockedNote":"La implementación terminó correctamente, pero la entrega está bloqueada. Revisa la etapa y los registros antes de descartar el resultado local.","partialDeliveryBlockedNote":"Parte de la implementación terminó correctamente, pero todavía no hay nada que se pueda entregar de forma segura. Revisa la evidencia por unidad y los registros antes de elegir la siguiente acción.","retryPushNote":"La implementación terminó correctamente y los cambios están seguros en local. Reintenta solo el push.","cleanupIncomplete_one":"La limpieza está incompleta ({{count}} aviso)","cleanupIncomplete_other":"La limpieza está incompleta ({{count}} avisos)","safetyArchiveTitle":"Archivo de seguridad ({{count}})","safetyArchiveHint":"Se han conservado archivos temporales del espacio de trabajo fuera de la PR como medida de precaución. Puedes revisarlos o eliminarlos manualmente.","implementationFailedNote":"El run de implementación falló antes de generar algo entregable. Abre el log del run para revisar el fallo y descarta esta card antes de relanzar.","degraded":{"pushed":"La rama se subió pero no se pudo crear la PR — reintenta para terminar.","localOnly":"Los cambios se ensamblaron en local pero no se subieron — reintenta para publicar la PR."},"alreadyResolved":"Ya resuelta en otro sitio","actionFailed":"La acción falló","notMergedYet":"Aún sin merge","commitMissingRetry":"El commit de la entrega ya no está en la PR. Puedes reintentar el push.","prVerifiedWaiting":"Commit {{sha}} verificado · pendiente de merge","viewLog":"Ver el registro de ejecución de {{ref}}","runElapsedAria":"{{elapsed}} transcurridos","runCostAria":"{{cost}} gastados","pinned":{"label":"Fijada","marker":"Tarjeta de implementación — fijada arriba","collapse":"Minimizar tarjeta fijada","expand":"Expandir tarjeta fijada","expandCard":"Expandir esta tarjeta","collapseCard":"Minimizar esta tarjeta","collapsed_one":"Tarjeta de implementación","collapsed_other":"{{count}} tarjetas de implementación","state":{"building":"En curso","on_review":"Revisión","pr_draft":"PR borrador","pr_ready":"Publicada","no_changes":"Sin cambios","completed":"Completada","pr_closed":"Cerrada","superseded":"Sustituida","implementation_failed":"Fallida","pr_failed":"Fallida","merged":"Fusionada","discarded":"Descartada"}},"mergeLocal":"Integrar en local","mergeLocalTooltip":"Fusiona las ramas entregadas en {{base}} en tu checkout local (sin necesidad de GitHub)","mergeLocalBlockedDirty":"No se puede integrar: los cambios locales en {{base}} se solapan con la entrega. Haz commit o stash de esos cambios y reintenta.","mergeLocalBlockedBranch":"No se puede integrar: tu checkout está en {{current}}, no en {{base}}. Cambia a {{base}} y reintenta.","mergedLocally":"Integrado en {{base}} en local","confirm":{"mergeLocalTitle":"¿Integrar en local?","mergeLocalBody":"Las ramas entregadas se fusionarán en {{base}} localmente. Se conservan los cambios existentes; si se solapan, puede ser necesario resolverlos antes de integrar.","recoverAndRetryTitle":"¿Crear el commit y subir el resultado conservado?","recoverAndRetryBody":"Specrails solo usará el worktree aislado o la rama registrada con avance rápido para {{branch}}. Si hace falta, creará un commit con los archivos entregables y subirá ese commit exacto únicamente si la PR sigue abierta sobre las ramas de origen y destino esperadas. La carpeta principal del proyecto y sus cambios sin commitear no se tocarán.","recheckRecoveryTitle":"¿Volver a comprobar este equipo?","recheckRecoveryBody":"Specrails volverá a examinar en este clon el worktree, la rama, las refs, los reflogs y los objetos Git huérfanos pertenecientes a la entrega de {{branch}}. Si demuestra un único resultado, podrá confirmar los cambios aislados y reintentar el push exacto. No tocará la carpeta principal del proyecto.","freshDiscardTitle":"¿Descartar esta entrega?","freshDiscardBody":"La PR se cerrará sin eliminar su rama remota. Solo se eliminarán las ramas y los worktrees locales que pertenezcan a SpecRails y sigan en su commit registrado; cualquier recurso modificado se conservará y se mostrará un aviso. Las specs volverán al backlog. Los recursos locales eliminados no se pueden recuperar.","implementationFailedDiscardTitle":"¿Descartar esta entrega fallida?","implementationFailedDiscardBody":"Se cerrará la tarjeta y sus specs volverán al backlog. El trabajo local y las ramas se conservarán para su inspección. Solo se podrán eliminar los recursos cuya limpieza sea segura.","dismissTitle":"¿Cerrar este seguimiento?","dismissBody":"Se cerrará esta tarjeta de seguimiento. Su worktree solo se eliminará si sigue siendo seguro hacerlo; de lo contrario, se conservará y verás un aviso. La PR existente, su rama y su estado de revisión no cambiarán.","discardLocalTitle":"¿Descartar el resultado local?","discardLocalBody":"La iteración local recuperable solo se eliminará si sigue siendo seguro hacerlo; si ha cambiado, se conservará y verás un aviso. Cualquier PR existente y su rama no cambiarán. Un resultado eliminado no se puede recuperar.","noChangesDoneTitle":"¿Marcar estas specs como hechas?","noChangesDoneBody":"La implementación confirmó que no hacen falta cambios de código. Las specs pasarán a Hecho y se limpiará el worktree sin cambios.","refineTitle":"¿Refinar estas specs?","refineBody":"Se cerrará el resultado sin cambios y las specs volverán al backlog para que puedas refinarlas. Los registros de ejecución seguirán disponibles."},"discardStackedNote":"Los rails posteriores de este hito se construyeron sobre esta entrega. Descartarla pausa la cadena del hito; los rails posteriores conservan su trabajo."}`),$={heading:`Borrador de spec`,drafting:`Actualizando borrador…`,acceptanceCriteria:`Criterios de aceptación`,untitled:`Spec sin título`,expand:`Ver descripción completa`,collapse:`Contraer descripción`},ee={heading:`Marco`,framing:`Enmarcando la petición…`,restated:`Lo que he entendido`,alternative:`También podría significar`,pick:`Responder con esto`,touches:`Tocaría`,discriminator:`¿Cuál de las dos?`,assumptions:`Lo que doy por supuesto`,unknowns:`Sigue abierto`},te={openTicket:`Abrir spec #{{id}}`,openPullRequest:`Abrir PR #{{id}}`,openJob:`Abrir job {{id}}`,openLoop:`Abrir loop {{id}}`,ticketNotFound:`Spec #{{id}} no encontrada — puede haber sido eliminada`,pullRequestUrlMissing:`La PR #{{id}} se mencionó sin URL`,pullRequestNotFound:`No se pudo encontrar la PR #{{id}} en este proyecto`,jobNotFound:`Job no encontrado — puede haber sido eliminado`,loopNotFound:`Loop no encontrado — puede haber sido eliminado`,lookupFailed:`No se pudo verificar la referencia — inténtalo de nuevo`},ne={untitled:`Misión sin título`,menu:`Menú de la misión`,rename:`Renombrar`,renamePlaceholder:`Nombre de la misión`,renameHint:`Doble clic para renombrar`,renameFailed:`No se pudo renombrar`,addFavorite:`Añadir a favoritas`,removeFavorite:`Quitar de favoritas`,copyName:`Copiar nombre de la misión`,copyId:`Copiar ID de la misión`,copyProject:`Copiar nombre del proyecto`,copyProjectPath:`Copiar ruta del proyecto`,copyFailed:`No se pudo copiar`,copyTranscript:`Copiar transcripción`,copyTranscriptSuccess:`Transcripción copiada`,copyTranscriptFailed:`No se pudo copiar la transcripción`,exportTranscript:`Exportar transcripción (.txt)`,exportTranscriptSuccess:`Exportación de transcripción iniciada`,exportTranscriptFailed:`No se pudo exportar la transcripción`,delete:`Borrar misión`,deleteConfirm:`¿Borrar esta misión? No se puede deshacer.`,deleteFailed:`No se pudo borrar la misión`},re=`¿Qué construimos ahora?`,ie={title:`Log de ejecución`,live:`En vivo`,empty:`Aún no hay actividad de herramientas en este turno.`,output:`Salida`,error:`Error`,copyAll:`Copiar log completo`,copyEntry:`Copiar entrada`,copySuccess:`Log copiado al portapapeles`,copyFailed:`No se pudo copiar el log`,openLog:`Ver log de ejecución`,close:`Cerrar`},ae={open:`Ver logs de {{command}}`,logsTitle:`Logs del proceso`,logsDescription:`Salida en directo e historial guardado del proceso.`,close:`Cerrar logs`,command:`Comando`,directory:`Directorio`,exitCode:`Código de salida: {{code}}`,signal:`Señal: {{signal}}`,search:`Buscar en logs…`,source:`Origen de la salida`,allSources:`Toda la salida`,pause:`Pausar`,resume:`Reanudar`,follow:`Seguir`,copy:`Copiar logs visibles`,download:`Descargar logs visibles`,stop:`Detener proceso`,stopCommand:`Detener {{command}}`,stopFailed:`No se pudo detener el proceso. Inténtalo de nuevo.`,truncated:`Se muestra una ventana limitada de logs. Puede faltar salida anterior o parte de líneas largas. Copiar y descargar incluyen sólo esta vista.`,paused:`Vista pausada. El proceso sigue funcionando.`,loadFailed:`No se pudieron cargar los logs. Puede haber vencido su retención; se conserva la salida ya cargada.`,retry:`Reintentar`,copied:`Logs visibles copiados.`,exportFailed:`No se pudieron exportar los logs. Inténtalo de nuevo.`,output:`Salida del proceso`,loading:`Cargando logs…`,noMatches:`No hay salida que coincida.`,empty:`Todavía no hay salida.`,lineCount:`{{count}} de {{total}} líneas`,exportHint:`La exportación incluye sólo el filtro actual y la salida conservada.`,status:{starting:`Iniciando`,running:`En ejecución`,stopping:`Deteniendo`,exited:`Finalizado`,killed:`Detenido`,failed:`Fallido`,interrupted:`Desconectado`},repository:`Repositorio`,history:{button:`Procesos`,title:`Procesos de la misión`,open:`Ver historial de procesos`,description:`Consulta procesos activos y logs guardados de ejecuciones anteriores.`,search:`Buscar por comando o repositorio…`,refresh:`Actualizar historial`,close:`Cerrar historial de procesos`,back:`Volver a procesos`,loading:`Cargando historial de procesos…`,empty:`Todavía no hay procesos registrados en esta misión.`,noMatches:`No hay procesos que coincidan.`,loadFailed:`No se pudo cargar el historial. Las entradas ya cargadas siguen disponibles.`,showMore:`Mostrar más`,count:`Procesos: {{count}}`},interruptedHint:`Specrails dejó de supervisar este proceso. Su estado en el sistema operativo es desconocido; los logs guardados siguen disponibles.`,persistenceFailed:`No se pudo guardar el historial del proceso. La salida disponible sigue visible.`},oe={detach:`Abrir en otra ventana`,attach:`Volver a la ventana principal`,detached:`Esta misión está abierta en otra ventana.`,focus:`Mostrar ventana de la misión`,loading:`Moviendo misión…`,failed:`No se ha podido mover la misión. Tu borrador se conserva.`,dismiss:`Cerrar aviso`,wrongMission:`Abre esta misión antes de moverla.`,finishPending:`Termina la operación en curso o guarda o cancela el mensaje o la captura antes de mover la misión.`},se={heading:`Lanzamiento de rail`,rail:`Rail {{index}}`,newRail:`Nuevo rail`,play:`Play`,launching:`Lanzando…`,dismiss:`Descartar`,playHint:`Ajusta lo que quieras y pulsa Play para lanzar bajo tu propia autoridad.`,pending:`Preparando una propuesta de lanzamiento…`,unreadable_one:`No se pudo leer la propuesta de lanzamiento del agente.`,unreadable_other:`No se pudieron leer {{count}} propuestas de lanzamiento.`,pinnedMarker:`Propuesta de lanzamiento fijada sobre el compositor`,effortDefault:`Esfuerzo por defecto`,profileNone:`Sin perfil`,status:{proposal:`Propuesta`,ready:`Listo`,blocked:`Requiere atención`,loading:`Comprobando…`},availability:{free:`libre`,busy:`en ejecución`,pending_decision:`esperando una decisión`,on_review:`en revisión`},fields:{rail:`Rail`,newRailName:`Nombre del nuevo rail (opcional)`,railName:`Nombre del rail`,addSpec:`Añadir spec`,removeSpec:`Quitar #{{id}}`,loop:`Loop`,engine:`Motor de IA`,model:`Modelo`,effort:`Esfuerzo de razonamiento`,profile:`Perfil de agentes`,targetPr:`PR de destino #`,baseBranch:`Rama base`},notes:{railMissing:`El Rail {{index}} ya no existe — elige otro rail o crea uno.`,railBusy:`El Rail {{index}} está {{state}} — no se puede lanzar ahí.`,useFree:`Usar el Rail {{index}}`,specsDropped:`Ya no están en este proyecto: {{ids}}`,engineStale:`{{engine}} no se detecta en este equipo — se usará {{fallback}}.`,modelStale:`{{model}} no está disponible — se usará {{fallback}}.`},block:{noProject:`Esta misión no está fijada a ningún proyecto.`,loadFailed:`No se pudieron cargar los rails del proyecto.`,noSpecs:`Añade al menos una spec para lanzar.`,railLimit:`Ya existen los {{max}} rails y ninguno está libre.`},errors:{tickets_in_flight:`Una de estas specs ya se está ejecutando en otro rail.`,pr_decision_pending:`Este rail está esperando una decisión sobre la PR.`,rail_limit_reached:`El proyecto ya tiene el número máximo de rails.`,invalid_base_branch:`Esa rama base no existe en local.`,base_branch_requires_isolation:`Una rama base requiere aislamiento por worktree (un repositorio git con commits).`,target_pr_requires_pr_mode:`Una PR de destino requiere aislamiento por worktree (un repositorio git con commits).`,invalid_response:`Respuesta inesperada del servidor.`},stub:{launched:`Lanzado → Rail {{rail}}`,dismissed:`Propuesta descartada`,viewRun:`Ver run`,goToCard:`Ir a la tarjeta`,goToCardTitle:`Ir a la tarjeta de implementación de este lanzamiento`,viewRunTitle:`Abrir el log en vivo del run`},followUp:{title:`Resolver {{count}} comentario(s) de revisión de la PR`,excluded:`No cambiar`,verification:`Verificar`,specUntouched:`La spec y su descripción en Jira no se editan: el alcance viaja con la ejecución.`,source:{pasted:`pegado`,github:`de GitHub`}},addenda:{rides_one:`{{count}} anexo abierto viaja con este lanzamiento:`,rides_other:`{{count}} anexos abiertos viajan con este lanzamiento:`}},ce={status:{running:`En ejecución`,paused:`En pausa`,succeeded:`Completado`,failed:`Fallido`,stalled:`Estancado`,cancelled:`Cancelado`,unknown:`Desconocido`},title:{running:`Implementando en el checkout del proyecto…`,paused:`Requiere una decisión humana`,succeeded:`Implementación terminada`,failed:`La implementación ha fallado`,stalled:`La implementación se ha estancado`,cancelled:`Run cancelado`,unknown:`Estado del run desconocido`},noDeliveryNote:`Sin fase de PR — este proyecto no tiene repositorio git ni commits, así que el trabajo se ha aplicado directamente en la carpeta del proyecto.`,noDeliveryHint:`Ejecutando directamente en la carpeta del proyecto (sin repositorio git ni commits — no se propondrá ninguna PR).`,failure:{title:`Por qué se detuvo`,step:`paso {{step}}`,unit:`#{{ticket}} · {{code}}`},actions:{resume:`Reanudar`,approve:`Aprobar`,recover:`Recuperar y reintentar`,relaunch:`Relanzar`},relaunchSent:`Rail {{index}} relanzado — una nueva tarjeta seguirá el run.`,relaunchFailed:`No se pudo relanzar el rail`,relaunchBlockedActive:`El rail todavía tiene un run activo`},le={marker:`El Rail {{rail}} ha fallado: {{code}}`,openCard:`Abrir tarjeta`,briefing:{title:`Informe automático del fallo`}},ue={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,attachment:s,maximize:c,restore:l,minimize:u,close:d,newConversation:f,emptyTitle:p,emptyHint:m,thinking:h,connecting:g,consultingCode:_,size:v,model:y,history:b,queue:x,receipt:S,queueEdit:C,git:w,provider:T,tier:E,approval:D,project:O,palette:k,mission:A,noProvider:j,degraded:M,toolCard:N,error:P,chip:F,newAgent:I,switchToAgent:L,switchToKanban:R,search:z,home:B,favoriteMissions:V,untitled:H,workspace:U,attachFile:W,deleteConversation:G,confirmDeleteConversation:K,addFavoriteConversation:q,removeFavoriteConversation:J,confirmShort:Y,imagesUnsupported:X,effort:Z,prCard:Q,specDraft:$,problemFrame:ee,refs:te,header:ne,emptyTitleCodeRain:re,activity:ie,backgroundProcess:ae,window:oe,railCard:se,runCard:ce,runFailure:le};export{ie as activity,q as addFavoriteConversation,D as approval,W as attachFile,s as attachment,ae as backgroundProcess,F as chip,d as close,r as composerPlaceholder,K as confirmDeleteConversation,Y as confirmShort,g as connecting,_ as consultingCode,o as copy,ue as default,M as degraded,G as deleteConversation,Z as effort,m as emptyHint,p as emptyTitle,re as emptyTitleCodeRain,P as error,V as favoriteMissions,w as git,ne as header,b as history,B as home,X as imagesUnsupported,c as maximize,u as minimize,A as mission,y as model,I as newAgent,f as newConversation,j as noProvider,k as palette,Q as prCard,ee as problemFrame,O as project,T as provider,x as queue,C as queueEdit,se as railCard,S as receipt,te as refs,J as removeFavoriteConversation,l as restore,ce as runCard,le as runFailure,z as search,i as send,v as size,$ as specDraft,a as stop,t as subtitle,L as switchToAgent,R as switchToKanban,h as thinking,E as tier,e as title,N as toolCard,n as trigger,H as untitled,oe as window,U as workspace};
@@ -1 +1 @@
1
- import{r as ee}from"./rolldown-runtime-CNC7AqOf.js";var te=ee({activity:()=>oe,addFavoriteConversation:()=>K,approval:()=>D,attachFile:()=>U,attachment:()=>s,backgroundProcess:()=>se,chip:()=>ne,close:()=>d,composerPlaceholder:()=>r,confirmDeleteConversation:()=>G,confirmShort:()=>J,connecting:()=>g,consultingCode:()=>_,copy:()=>o,default:()=>fe,degraded:()=>M,deleteConversation:()=>W,effort:()=>X,emptyHint:()=>m,emptyTitle:()=>p,emptyTitleCodeRain:()=>ae,error:()=>P,favoriteMissions:()=>B,git:()=>w,header:()=>ie,history:()=>b,home:()=>z,imagesUnsupported:()=>Y,maximize:()=>c,minimize:()=>u,mission:()=>A,model:()=>y,newAgent:()=>F,newConversation:()=>f,noProvider:()=>j,palette:()=>k,prCard:()=>Z,problemFrame:()=>$,project:()=>O,provider:()=>T,queue:()=>x,queueEdit:()=>C,railCard:()=>le,receipt:()=>S,refs:()=>re,removeFavoriteConversation:()=>q,restore:()=>l,runCard:()=>ue,runFailure:()=>de,search:()=>R,send:()=>i,size:()=>v,specDraft:()=>Q,stop:()=>a,subtitle:()=>t,switchToAgent:()=>I,switchToKanban:()=>L,thinking:()=>h,tier:()=>E,title:()=>e,toolCard:()=>N,trigger:()=>n,untitled:()=>V,window:()=>ce,workspace:()=>H}),e=`Mission Control`,t=`Operate Specrails by chatting`,n=`Mission Control`,r=`Ask the agent to do anything…`,i=`Send`,a=`Stop`,o=`Copy`,s={openPreview:`Preview {{name}}`,openDownload:`Download {{name}}`,previewTitle:`Preview {{name}}`,downloadTitle:`Download file?`,downloadPrompt:`This file cannot be previewed here. Do you want to download it?`,download:`Download`,cancelDownload:`Not now`,loading:`Preparing file…`,loadFailed:`Could not load attachment`,loadError:`Could not load attachment: {{error}}`},c=`Maximize`,l=`Restore`,u=`Minimize`,d=`Close`,f=`New mission`,p=`What's the mission?`,m=`Pick a project, then ask. The board updates live as the agent works.`,h=`Thinking…`,g=`Connecting…`,_=`Consulting the app…`,v={compact:`Compact`,comfortable:`Comfortable`,max:`Maximize`},y={label:`Model`,loading:`Loading models…`,unavailable:`Models unavailable`},b={hint:`Browsing prompt history — type to edit, ↑↓ to navigate`},x={queued:`Queued`,send:`Send message`,sendHint:`Queue for the next turn. Choose Steer on a queued message to submit it without interrupting the model.`,placeholder:`Add a message to the queue…`,delivered:`Delivered to agent`,interrupted:`Delivery unconfirmed`,cancelled:`Cancelled before delivery`,steer:`Steer`,steerHint:`Submit without interrupting the model`,steering:`Sending to agent…`,remove:`Delete queued message`,more:`Message options`,edit:`Edit`,actionConflict:`This message is already being delivered or is no longer queued.`,actionFailed:`Could not update the queued message. Try again.`},S={sent:`Sent to agent`,received:`Delivered to agent`,read:`Read by agent`,interrupted:`Delivery unconfirmed`,cancelled:`Cancelled before delivery`},C={editing:`Editing pending message {{n}} of {{m}}`,hint:`↑↓ to navigate · Enter saves · Esc cancels`,save:`Save pending message`,cancel:`Cancel editing`,dispatched:`That message was already delivered — your text is kept as a draft`,saveFailed:`Couldn’t save the pending message`},w={branch:`Branch`,detached:`(detached)`,dirty:`Uncommitted changes`,switched:`Switched to {{branch}}`,switchFailed:`Couldn't switch branch`,lockedWhileWorking:`Branch locked while the agent works`,searchPlaceholder:`Search branches…`,noMatches:`No branches match`,worktrees:`Worktrees`,worktreePathCopied:`Worktree path copied`,copyWorktreePath:`Copy worktree path`,repository:`Repository`,repositoryUnavailable:`Repository unavailable`,loadFailed:`Git state unavailable`,notGit:`Context folder · no Git`,retry:`Retry`},T={label:`Provider`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},E={cycleHint:`⇧⇥ to change`,observe:{name:`Observe`,desc:`Read only — nothing changes`},edit:{name:`Edit`,desc:`Create and edit (reversible)`},operate:{name:`Operate`,desc:`Launch AI — costs money`},autonomous:{name:`Autonomous`,desc:`Delete and kill — irreversible`},lockedTitle:`Needs a higher level`,lockedBody:`That action needs the "{{level}}" level. You're on "{{current}}".`,raiseHint:`⇧⇥ to raise the level, or ask another way.`},D={title:`Confirm action`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Approve`,cancel:`Cancel`,dontAskAgain:`Don't ask again this session`,approved:`Approved`,cancelled:`Cancelled`},O={home:`Home`,searchPlaceholder:`Talk to Specrails…`,searchProjectsPlaceholder:`Search projects…`,recents:`Recents`,allProjects:`All projects`,searchAll:`Search across all projects`,addProject:`Add project…`,homeHint:`No project selected — operating across all projects.`,askCreateOrSearch:`No project is selected. Do you want to create a new project, or search across all projects?`},k={remove:`Remove {{label}}`,addContextAction:`Add context or action`,filtering:`Filtering "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`No matches`,noMatchesFor:`No matches for "{{query}}"`,mode:{reference:{title:`Reference`,hint:`@ projects, specs, missions`},trace:{title:`Trace`,hint:`# jobs, runs, IDs`},action:{title:`Action`,hint:`/ commands for this context`}},plus:{reference:`Reference`,referenceHint:`Projects, specs, missions`,trace:`Trace`,traceHint:`Jobs, runs, IDs`,action:`Action`,actionHint:`Create, launch, inspect`,fileAttachment:`File attachment`,fileAttachmentHint:`Add docs, images, logs`,browserCapture:`Browser capture`,browserCaptureHint:`Capture a page region into this mission`},railGroup:`Rails`,railGroupInUse:`Rails in use`},A={label:`Switch mission`,untitled:`New mission`,new:`New mission`,searchPlaceholder:`Search missions…`,noMatches:`No missions match`,working:`Agent working`,queuedBadge:`{{n}} queued`,delete:`Delete mission "{{title}}"`,deleteConfirm:`Delete?`,deleteLiveConfirm:`Agent is working — delete anyway?`,confirmDelete:`Confirm delete`,cancelDelete:`Keep mission`,deleteFailed:`Couldn't delete the mission`},j={title:`No AI provider installed`,body:`The agent needs Claude, Codex, Gemini or Kimi on your machine. Install one, then reopen the agent to start chatting.`,placeholder:`Install an AI provider to use the agent…`},M={title:`Specrails MCP is off`,body:`The agent needs the embedded MCP server to operate the app.`,enable:`Enable Specrails MCP`,enabling:`Enabling…`,enabled:`MCP enabled`},N={live:`live`,queued:`queued`,running:`running`,done:`done`,failed:`failed`},P={generic:`Something went wrong. Try again.`,busy:`The agent is busy. Try again in a moment.`},ne={kindAgent:`Agent mission`},F=`New Mission`,I=`Switch to Mission Control`,L=`Switch to Board`,R=`Search`,z=`Home`,B=`Favorite missions`,V=`Untitled`,H={title:`On workspace`,terminal:`Terminal`,files:`Files`,browser:`Browser`,requiresProject:`Select a project to use this tool`,resizeCode:`Resize code pane`,closeFiles:`Close code`,browserConfirm:`Add to agent`,browserSelectStart:`Select to add to mission`,browserCaptured:`Capture added`,uploadFailed:`Upload failed`,requiresConversation:`Start a mission to use this tool`,jobs:`Jobs`,closeJobs:`Close jobs`,resizeJobs:`Resize jobs pane`,noJobs:`No jobs yet — ask the agent to launch one`,analytics:`Analytics`,closeAnalytics:`Close analytics`,resizeAnalytics:`Resize analytics pane`},U=`Attach file`,W=`Delete "{{title}}"`,G=`Confirm delete "{{title}}"`,K=`Add "{{title}}" to favorites`,q=`Remove "{{title}}" from favorites`,J=`confirm?`,Y=`This provider can't read images yet — attach text files instead`,X={label:`Effort`,minimal:`Minimal`,low:`Low`,medium:`Medium`,high:`High`,xhigh:`Extra high`,max:`Max`,ultra:`Ultra`},Z=JSON.parse(`{"operation":{"inProgress":"Action in progress…","create-pr":"Creating PR…","publish":"Publishing…","discard":"Discarding…","dismiss":"Dismissing follow-up…","poll-merge":"Checking merge…","reopen":"Reopening…","merge-local":"Integrating locally…","recover-and-retry":"Committing and retrying the preserved result…","acknowledge-no-changes":"Marking done…"},"rail":"Rail {{index}}","specCount_one":"{{count}} spec","specCount_other":"{{count}} specs","base":"Base branch","openPr":"Open PR","existingPr":"Existing PR","title":{"building":"Implementing in an isolated worktree…","buildingExistingPr":"Applying changes to an existing PR…","paused":"Needs a human decision","on_review":"Implementation ready for review","pr_draft":"Draft PR created","pr_draft_degraded":"PR delivery incomplete","pr_ready":"PR ready for merge","no_changes":"No changes needed","partial":"Partially implemented","delivery_blocked":"Implementation complete — delivery needs attention","update_failed":"Implementation complete — update failed","pr_closed":"PR closed without merge","superseded":"Superseded by a newer run","existing_pr_updated":"Existing PR updated","implementation_failed":"Implementation failed","pr_failed":"PR creation failed","merged":"PR merged","discarded":"Discarded"},"buildingHint":"You'll be asked to create the PR when it settles.","buildingExistingPrHint":"Specrails is working on the existing PR branch and will push the review changes back to that PR.","paused":"Implementation paused","pausedForRun":"Paused on {{ref}}","resume":"Resume","stopExecution":"Stop execution","stopExecutionSent":"Stop signal sent","stopExecutionFailed":"Could not stop execution","partialSummary":"{{succeeded}} of {{total}} completed; {{failed}} failed","unit":{"failed":"implementation failed","blocked":"delivery blocked","noChanges":"no changes","succeeded":"ready"},"createPr":"Create PR","publish":"Publish","checkout":"Checkout","openReview":"Review","openReviewTooltip":"Open the plain-language review","checkoutTooltip":"Check out {{branch}} in the main project folder","checkoutSuccess":"Checked out {{branch}}","checkoutFailed":"Could not check out the implementation branch","checkoutDirtyTitle":"Checkout blocked to protect your changes","checkoutDirtyBody":"The main project folder has uncommitted changes. Commit or stash them, then retry. Nothing was changed.","checkoutSafetyUnknownTitle":"Checkout paused because safety could not be verified","checkoutSafetyUnknownBody":"Specrails could not read the main project folder’s Git status. Nothing was released or changed. Retry after Git is available.","checkoutNotDeliverableTitle":"This branch is not the preserved implementation","checkoutNotDeliverableBody":"No exact delivery commit has been verified yet. Inspect or recover the local result instead.","inspectLocalResult":"Inspect local result","inspectLocalResultTooltip":"Reveal the preserved isolated worktree and copy its path","localResultPathCopied":"Local result path copied","localResultPath":"Preserved local result","localResultUnavailableHere":"No recoverable worktree is available on this computer. Review the run log from the machine where it executed.","recoverAndRetry":"Commit & retry push","recoverAndRetryVerified":"Recovered commit {{sha}} is verified in the PR","recoveryStillBlocked":"Local recovery still needs attention","recheckRecovery":"Check again","recoveryUnavailable":"Recovery could not be verified on this computer","recoveryUnavailableBody":"Specrails could not safely prove one delivery-owned result in this clone. Nothing was changed or removed. Inspect the stage detail and run logs. If the run executed on another computer, open Specrails there, then check again.","recoveryDetailSummary":"Technical recovery detail","retry":"Retry","retryPr":"Retry PR","checkMerge":"Check merge","verifyPr":"Verify PR","discard":"Discard","dismiss":"Dismiss follow-up","discardLocalResult":"Discard local result","markDone":"Mark done","refine":"Refine","retryPush":"Retry push","retryPushVerified":"Push verified · commit {{sha}} is in the PR","commitAlreadyVerified":"Commit {{sha}} is already verified in the PR","deliveryCommit":"commit {{sha}}","reopen":"Reopen","createPartialPr":"Create PR with {{count}}","confirmDiscard":"Confirm discard?","mergedNote":"Merged — specs moved to Done","discardedNote":"Discarded — specs returned to the backlog","supersededNote":"A newer implementation run replaced this card.","completedNote":"Confirmed — specs moved to Done","noChangesExisting":"No new changes were needed; the existing PR is unchanged.","noChangesNote":"No code changes were needed. Mark the specs done or return them to the backlog to refine.","deliveryNeedsAttention":"Implementation complete; delivery needs attention","deliveryBlockedNote":"Implementation succeeded, but delivery is blocked. Review the stage detail and run logs before discarding the local result.","partialDeliveryBlockedNote":"Part of the implementation succeeded, but nothing is safely deliverable yet. Review the per-unit evidence and run logs before choosing the next action.","retryPushNote":"Implementation succeeded and the changes are safe locally. Retry only the push.","cleanupIncomplete_one":"Cleanup is incomplete ({{count}} warning)","cleanupIncomplete_other":"Cleanup is incomplete ({{count}} warnings)","safetyArchiveTitle":"Safety archive ({{count}})","safetyArchiveHint":"Temporary workspace files were preserved outside the PR as a precaution. You can inspect or remove them manually.","implementationFailedNote":"The implementation run failed before there was anything deliverable. Open the run log to inspect the failure, then discard this card before relaunching.","degraded":{"pushed":"The branch was pushed but the PR could not be created — retry to finish.","localOnly":"The changes were assembled locally but not pushed — retry to publish the PR."},"alreadyResolved":"Already resolved elsewhere","actionFailed":"Action failed","notMergedYet":"Not merged yet","commitMissingRetry":"The delivery commit is no longer in the PR. Retry push is available again.","prVerifiedWaiting":"Commit {{sha}} verified · waiting for merge","viewLog":"View run log for {{ref}}","runElapsedAria":"{{elapsed}} elapsed","runCostAria":"{{cost}} spent","pinned":{"label":"Pinned","marker":"Implementation card — pinned above","collapse":"Minimize pinned card","expand":"Expand pinned card","expandCard":"Expand this card","collapseCard":"Minimize this card","collapsed_one":"Implementation card","collapsed_other":"{{count}} implementation cards","state":{"building":"Building","on_review":"Review","pr_draft":"Draft PR","pr_ready":"Published","no_changes":"No changes","completed":"Completed","pr_closed":"Closed","superseded":"Superseded","implementation_failed":"Failed","pr_failed":"Failed","merged":"Merged","discarded":"Discarded"}},"mergeLocal":"Integrate locally","mergeLocalTooltip":"Merge the delivered branches into {{base}} in your local checkout (no GitHub needed)","mergeLocalBlockedDirty":"Cannot integrate: local changes on {{base}} overlap the delivery. Commit or stash those changes, then retry.","mergeLocalBlockedBranch":"Cannot integrate: your checkout is on {{current}}, not {{base}}. Check out {{base}}, then retry.","mergedLocally":"Integrated into {{base}} locally","confirm":{"mergeLocalTitle":"Integrate locally?","mergeLocalBody":"The delivered branches will be merged into {{base}} locally. Existing changes are preserved; overlapping edits may require resolution before integration.","recoverAndRetryTitle":"Commit and push the preserved result?","recoverAndRetryBody":"Specrails will use only the isolated worktree or recorded fast-forward branch for {{branch}}. It will commit deliverable files if needed, then push the exact commit only if the PR is still open on the expected head and base. Your main project folder and its uncommitted changes will not be touched.","recheckRecoveryTitle":"Check this computer again?","recheckRecoveryBody":"Specrails will rescan this clone’s delivery-owned worktree, branch, refs, reflogs, and orphan Git objects for {{branch}}. If it proves one result, it may commit isolated changes and retry the exact push. Your main project folder will not be touched.","freshDiscardTitle":"Discard this delivery?","freshDiscardBody":"The PR will be closed without deleting its remote branch. Only SpecRails-owned local branches and worktrees that are still at their recorded commit will be removed; anything changed will be preserved with a warning. The specs will return to the backlog. Removed local resources cannot be recovered.","implementationFailedDiscardTitle":"Discard this failed delivery?","implementationFailedDiscardBody":"The card will be cleared and its specs will return to the backlog. Local work and branches will be kept for inspection. Only resources proven safe to clean up may be removed.","dismissTitle":"Dismiss this follow-up?","dismissBody":"This follow-up card will be cleared. Its owned worktree will be removed only if it is still safe; otherwise it will be preserved with a warning. The existing PR, its branch, and review state will remain unchanged.","discardLocalTitle":"Discard the local result?","discardLocalBody":"The recoverable local iteration will be removed only if it is still safe; if it changed, it will be preserved with a warning. Any existing PR and its branch will remain unchanged. A removed result cannot be recovered.","noChangesDoneTitle":"Mark these specs done?","noChangesDoneBody":"The implementation confirmed that no code changes are needed. The specs will move to Done and the no-change worktree will be cleaned up.","refineTitle":"Refine these specs?","refineBody":"The no-change result will be closed and the specs will return to the backlog so you can refine them. The run logs remain available."},"discardStackedNote":"Later rails of this milestone were built on this delivery. Discarding it pauses the milestone chain; the later rails keep their work."}`),Q={heading:`Spec draft`,drafting:`Updating draft…`,acceptanceCriteria:`Acceptance criteria`,untitled:`Untitled spec`,expand:`Show full description`,collapse:`Collapse description`},$={heading:`Framing`,framing:`Framing the request…`,restated:`What I understood`,alternative:`It could also mean`,pick:`Reply with this`,touches:`Would touch`,discriminator:`Which is it?`,assumptions:`What I'm assuming`,unknowns:`Still open`},re={openTicket:`Open spec #{{id}}`,openPullRequest:`Open PR #{{id}}`,openJob:`Open job {{id}}`,openLoop:`Open loop {{id}}`,ticketNotFound:`Spec #{{id}} not found — it may have been deleted`,pullRequestUrlMissing:`PR #{{id}} was referenced without a URL`,pullRequestNotFound:`PR #{{id}} could not be found in this project`,jobNotFound:`Job not found — it may have been deleted`,loopNotFound:`Loop not found — it may have been deleted`,lookupFailed:`Couldn't verify the reference — try again`},ie={untitled:`Untitled mission`,menu:`Mission menu`,rename:`Rename`,renamePlaceholder:`Mission name`,renameHint:`Double-click to rename`,renameFailed:`Could not rename`,addFavorite:`Add to favorites`,removeFavorite:`Remove from favorites`,copyName:`Copy mission name`,copyId:`Copy mission ID`,copyProject:`Copy project name`,copyProjectPath:`Copy project path`,copyFailed:`Couldn't copy`,copyTranscript:`Copy transcript`,copyTranscriptSuccess:`Transcript copied`,copyTranscriptFailed:`Could not copy transcript`,exportTranscript:`Export transcript (.txt)`,exportTranscriptSuccess:`Transcript export started`,exportTranscriptFailed:`Could not export transcript`,delete:`Delete mission`,deleteConfirm:`Delete this mission? This cannot be undone.`,deleteFailed:`Could not delete the mission`},ae=`What should we build next?`,oe={title:`Execution log`,live:`Live`,empty:`No tool activity in this turn yet.`,output:`Output`,error:`Error`,copyAll:`Copy full log`,copyEntry:`Copy entry`,copySuccess:`Log copied to clipboard`,copyFailed:`Could not copy the log`,openLog:`View execution log`,close:`Close`},se={open:`View logs for {{command}}`,logsTitle:`Process logs`,logsDescription:`Live output and saved history for this process.`,close:`Close logs`,command:`Command`,directory:`Directory`,exitCode:`Exit code: {{code}}`,signal:`Signal: {{signal}}`,search:`Search logs…`,source:`Output source`,allSources:`All output`,pause:`Pause`,resume:`Resume`,follow:`Follow`,copy:`Copy visible logs`,download:`Download visible logs`,stop:`Stop process`,stopCommand:`Stop {{command}}`,stopFailed:`Could not stop the process. Try again.`,truncated:`Showing a limited log window. Older output or long lines may be omitted. Copy and download include this view only.`,paused:`View paused. The process continues running.`,loadFailed:`Logs could not be loaded. The process may have expired from retention; saved output is still shown.`,retry:`Retry`,copied:`Visible logs copied.`,exportFailed:`Could not export logs. Try again.`,output:`Process output`,loading:`Loading logs…`,noMatches:`No matching output.`,empty:`No output yet.`,lineCount:`{{count}} of {{total}} lines`,exportHint:`Exports include the current filter and retained output only.`,status:{starting:`Starting`,running:`Running`,stopping:`Stopping`,exited:`Exited`,killed:`Stopped`,failed:`Failed`,interrupted:`Disconnected`},repository:`Repository`,history:{button:`Processes`,title:`Mission processes`,open:`View process history`,description:`Browse active processes and saved logs from earlier executions.`,search:`Search command or repository…`,refresh:`Refresh history`,close:`Close process history`,back:`Back to processes`,loading:`Loading process history…`,empty:`No processes have been recorded for this mission.`,noMatches:`No matching processes.`,loadFailed:`Process history could not be loaded. Previously loaded entries remain available.`,showMore:`Show more`,count:`Processes: {{count}}`},interruptedHint:`Specrails stopped supervising this process. Its operating system state is unknown; saved logs remain available.`,persistenceFailed:`The process history could not be saved. Available output remains visible.`},ce={detach:`Open in separate window`,attach:`Return to main window`,detached:`This mission is open in another window.`,focus:`Show mission window`,loading:`Moving mission…`,failed:`Could not move this mission. Your draft is preserved.`,dismiss:`Dismiss`,wrongMission:`Open this mission before moving it.`,finishPending:`Finish the operation in progress, or save or cancel the message or capture before moving the mission.`},le={heading:`Rail launch`,rail:`Rail {{index}}`,newRail:`New rail`,play:`Play`,launching:`Launching…`,dismiss:`Dismiss`,playHint:`Adjust anything, then press Play to launch under your own authority.`,pending:`Preparing a launch proposal…`,unreadable_one:`The agent's launch proposal could not be read.`,unreadable_other:`{{count}} launch proposals could not be read.`,pinnedMarker:`Launch proposal pinned above the composer`,effortDefault:`Default effort`,profileNone:`No profile`,status:{proposal:`Proposal`,ready:`Ready`,blocked:`Needs attention`,loading:`Checking…`},availability:{free:`free`,busy:`running`,pending_decision:`awaiting a decision`,on_review:`on review`},fields:{rail:`Rail`,newRailName:`New rail name (optional)`,railName:`Rail name`,addSpec:`Add spec`,removeSpec:`Remove #{{id}}`,loop:`Loop`,engine:`AI engine`,model:`Model`,effort:`Reasoning effort`,profile:`Agent profile`,targetPr:`Target PR #`,baseBranch:`Base branch`},notes:{railMissing:`Rail {{index}} no longer exists — pick another rail or create one.`,railBusy:`Rail {{index}} is {{state}} — launching there is blocked.`,useFree:`Use Rail {{index}}`,specsDropped:`Not in this project any more: {{ids}}`,engineStale:`{{engine}} is not detected on this machine — using {{fallback}}.`,modelStale:`{{model}} is not available — using {{fallback}}.`},block:{noProject:`This mission is not pinned to a project.`,loadFailed:`Could not load the project's rails.`,noSpecs:`Add at least one spec to launch.`,railLimit:`All {{max}} rails exist and none is free.`},errors:{tickets_in_flight:`One of these specs is already running on another rail.`,pr_decision_pending:`This rail is waiting for a PR decision.`,rail_limit_reached:`The project already has the maximum number of rails.`,invalid_base_branch:`That base branch does not exist locally.`,base_branch_requires_isolation:`A base branch needs worktree isolation (a git repository with commits).`,target_pr_requires_pr_mode:`A target PR needs worktree isolation (a git repository with commits).`,invalid_response:`Unexpected server response.`},stub:{launched:`Launched → Rail {{rail}}`,dismissed:`Proposal dismissed`,viewRun:`View run`,goToCard:`Go to card`,goToCardTitle:`Scroll to this launch's implementation card`,viewRunTitle:`Open the run's live log`}},ue={status:{running:`Running`,paused:`Paused`,succeeded:`Succeeded`,failed:`Failed`,stalled:`Stalled`,cancelled:`Cancelled`,unknown:`Unknown`},title:{running:`Implementing in the project checkout…`,paused:`Needs a human decision`,succeeded:`Implementation finished`,failed:`Implementation failed`,stalled:`Implementation stalled`,cancelled:`Run cancelled`,unknown:`Run state unknown`},noDeliveryNote:`No PR phase — this project has no git repository or commits, so the work landed directly in the project folder.`,noDeliveryHint:`Running directly in the project folder (no git repository or commits — no PR will be proposed).`,failure:{title:`Why it stopped`,step:`step {{step}}`,unit:`#{{ticket}} · {{code}}`},actions:{resume:`Resume`,approve:`Approve`,recover:`Recover & retry`,relaunch:`Relaunch`},relaunchSent:`Rail {{index}} relaunched — a new card will follow the run.`,relaunchFailed:`Could not relaunch the rail`,relaunchBlockedActive:`The rail still has an active run`},de={marker:`Rail {{rail}} failed: {{code}}`,openCard:`Open card`,briefing:{title:`Automatic failure briefing`}},fe={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,attachment:s,maximize:c,restore:l,minimize:u,close:d,newConversation:f,emptyTitle:p,emptyHint:m,thinking:h,connecting:g,consultingCode:_,size:v,model:y,history:b,queue:x,receipt:S,queueEdit:C,git:w,provider:T,tier:E,approval:D,project:O,palette:k,mission:A,noProvider:j,degraded:M,toolCard:N,error:P,chip:ne,newAgent:F,switchToAgent:I,switchToKanban:L,search:R,home:z,favoriteMissions:B,untitled:V,workspace:H,attachFile:U,deleteConversation:W,confirmDeleteConversation:G,addFavoriteConversation:K,removeFavoriteConversation:q,confirmShort:J,imagesUnsupported:Y,effort:X,prCard:Z,specDraft:Q,problemFrame:$,refs:re,header:ie,emptyTitleCodeRain:ae,activity:oe,backgroundProcess:se,window:ce,railCard:le,runCard:ue,runFailure:de};export{te as t};
1
+ import{r as ee}from"./rolldown-runtime-CNC7AqOf.js";var te=ee({activity:()=>oe,addFavoriteConversation:()=>K,approval:()=>D,attachFile:()=>U,attachment:()=>s,backgroundProcess:()=>se,chip:()=>ne,close:()=>d,composerPlaceholder:()=>r,confirmDeleteConversation:()=>G,confirmShort:()=>J,connecting:()=>g,consultingCode:()=>_,copy:()=>o,default:()=>fe,degraded:()=>M,deleteConversation:()=>W,effort:()=>X,emptyHint:()=>m,emptyTitle:()=>p,emptyTitleCodeRain:()=>ae,error:()=>P,favoriteMissions:()=>B,git:()=>w,header:()=>ie,history:()=>b,home:()=>z,imagesUnsupported:()=>Y,maximize:()=>c,minimize:()=>u,mission:()=>A,model:()=>y,newAgent:()=>F,newConversation:()=>f,noProvider:()=>j,palette:()=>k,prCard:()=>Z,problemFrame:()=>$,project:()=>O,provider:()=>T,queue:()=>x,queueEdit:()=>C,railCard:()=>le,receipt:()=>S,refs:()=>re,removeFavoriteConversation:()=>q,restore:()=>l,runCard:()=>ue,runFailure:()=>de,search:()=>R,send:()=>i,size:()=>v,specDraft:()=>Q,stop:()=>a,subtitle:()=>t,switchToAgent:()=>I,switchToKanban:()=>L,thinking:()=>h,tier:()=>E,title:()=>e,toolCard:()=>N,trigger:()=>n,untitled:()=>V,window:()=>ce,workspace:()=>H}),e=`Mission Control`,t=`Operate Specrails by chatting`,n=`Mission Control`,r=`Ask the agent to do anything…`,i=`Send`,a=`Stop`,o=`Copy`,s={openPreview:`Preview {{name}}`,openDownload:`Download {{name}}`,previewTitle:`Preview {{name}}`,downloadTitle:`Download file?`,downloadPrompt:`This file cannot be previewed here. Do you want to download it?`,download:`Download`,cancelDownload:`Not now`,loading:`Preparing file…`,loadFailed:`Could not load attachment`,loadError:`Could not load attachment: {{error}}`},c=`Maximize`,l=`Restore`,u=`Minimize`,d=`Close`,f=`New mission`,p=`What's the mission?`,m=`Pick a project, then ask. The board updates live as the agent works.`,h=`Thinking…`,g=`Connecting…`,_=`Consulting the app…`,v={compact:`Compact`,comfortable:`Comfortable`,max:`Maximize`},y={label:`Model`,loading:`Loading models…`,unavailable:`Models unavailable`},b={hint:`Browsing prompt history — type to edit, ↑↓ to navigate`},x={queued:`Queued`,send:`Send message`,sendHint:`Queue for the next turn. Choose Steer on a queued message to submit it without interrupting the model.`,placeholder:`Add a message to the queue…`,delivered:`Delivered to agent`,interrupted:`Delivery unconfirmed`,cancelled:`Cancelled before delivery`,steer:`Steer`,steerHint:`Submit without interrupting the model`,steering:`Sending to agent…`,remove:`Delete queued message`,more:`Message options`,edit:`Edit`,actionConflict:`This message is already being delivered or is no longer queued.`,actionFailed:`Could not update the queued message. Try again.`},S={sent:`Sent to agent`,received:`Delivered to agent`,read:`Read by agent`,interrupted:`Delivery unconfirmed`,cancelled:`Cancelled before delivery`},C={editing:`Editing pending message {{n}} of {{m}}`,hint:`↑↓ to navigate · Enter saves · Esc cancels`,save:`Save pending message`,cancel:`Cancel editing`,dispatched:`That message was already delivered — your text is kept as a draft`,saveFailed:`Couldn’t save the pending message`},w={branch:`Branch`,detached:`(detached)`,dirty:`Uncommitted changes`,switched:`Switched to {{branch}}`,switchFailed:`Couldn't switch branch`,lockedWhileWorking:`Branch locked while the agent works`,searchPlaceholder:`Search branches…`,noMatches:`No branches match`,worktrees:`Worktrees`,worktreePathCopied:`Worktree path copied`,copyWorktreePath:`Copy worktree path`,repository:`Repository`,repositoryUnavailable:`Repository unavailable`,loadFailed:`Git state unavailable`,notGit:`Context folder · no Git`,retry:`Retry`},T={label:`Provider`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},E={cycleHint:`⇧⇥ to change`,observe:{name:`Observe`,desc:`Read only — nothing changes`},edit:{name:`Edit`,desc:`Create and edit (reversible)`},operate:{name:`Operate`,desc:`Launch AI — costs money`},autonomous:{name:`Autonomous`,desc:`Delete and kill — irreversible`},lockedTitle:`Needs a higher level`,lockedBody:`That action needs the "{{level}}" level. You're on "{{current}}".`,raiseHint:`⇧⇥ to raise the level, or ask another way.`},D={title:`Confirm action`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Approve`,cancel:`Cancel`,dontAskAgain:`Don't ask again this session`,approved:`Approved`,cancelled:`Cancelled`},O={home:`Home`,searchPlaceholder:`Talk to Specrails…`,searchProjectsPlaceholder:`Search projects…`,recents:`Recents`,allProjects:`All projects`,searchAll:`Search across all projects`,addProject:`Add project…`,homeHint:`No project selected — operating across all projects.`,askCreateOrSearch:`No project is selected. Do you want to create a new project, or search across all projects?`},k={remove:`Remove {{label}}`,addContextAction:`Add context or action`,filtering:`Filtering "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`No matches`,noMatchesFor:`No matches for "{{query}}"`,mode:{reference:{title:`Reference`,hint:`@ projects, specs, missions`},trace:{title:`Trace`,hint:`# jobs, runs, IDs`},action:{title:`Action`,hint:`/ commands for this context`}},plus:{reference:`Reference`,referenceHint:`Projects, specs, missions`,trace:`Trace`,traceHint:`Jobs, runs, IDs`,action:`Action`,actionHint:`Create, launch, inspect`,fileAttachment:`File attachment`,fileAttachmentHint:`Add docs, images, logs`,browserCapture:`Browser capture`,browserCaptureHint:`Capture a page region into this mission`},railGroup:`Rails`,railGroupInUse:`Rails in use`},A={label:`Switch mission`,untitled:`New mission`,new:`New mission`,searchPlaceholder:`Search missions…`,noMatches:`No missions match`,working:`Agent working`,queuedBadge:`{{n}} queued`,delete:`Delete mission "{{title}}"`,deleteConfirm:`Delete?`,deleteLiveConfirm:`Agent is working — delete anyway?`,confirmDelete:`Confirm delete`,cancelDelete:`Keep mission`,deleteFailed:`Couldn't delete the mission`},j={title:`No AI provider installed`,body:`The agent needs Claude, Codex, Gemini or Kimi on your machine. Install one, then reopen the agent to start chatting.`,placeholder:`Install an AI provider to use the agent…`},M={title:`Specrails MCP is off`,body:`The agent needs the embedded MCP server to operate the app.`,enable:`Enable Specrails MCP`,enabling:`Enabling…`,enabled:`MCP enabled`},N={live:`live`,queued:`queued`,running:`running`,done:`done`,failed:`failed`},P={generic:`Something went wrong. Try again.`,busy:`The agent is busy. Try again in a moment.`},ne={kindAgent:`Agent mission`},F=`New Mission`,I=`Switch to Mission Control`,L=`Switch to Board`,R=`Search`,z=`Home`,B=`Favorite missions`,V=`Untitled`,H={title:`On workspace`,terminal:`Terminal`,files:`Files`,browser:`Browser`,requiresProject:`Select a project to use this tool`,resizeCode:`Resize code pane`,closeFiles:`Close code`,browserConfirm:`Add to agent`,browserSelectStart:`Select to add to mission`,browserCaptured:`Capture added`,uploadFailed:`Upload failed`,requiresConversation:`Start a mission to use this tool`,jobs:`Jobs`,closeJobs:`Close jobs`,resizeJobs:`Resize jobs pane`,noJobs:`No jobs yet — ask the agent to launch one`,analytics:`Analytics`,closeAnalytics:`Close analytics`,resizeAnalytics:`Resize analytics pane`},U=`Attach file`,W=`Delete "{{title}}"`,G=`Confirm delete "{{title}}"`,K=`Add "{{title}}" to favorites`,q=`Remove "{{title}}" from favorites`,J=`confirm?`,Y=`This provider can't read images yet — attach text files instead`,X={label:`Effort`,minimal:`Minimal`,low:`Low`,medium:`Medium`,high:`High`,xhigh:`Extra high`,max:`Max`,ultra:`Ultra`},Z=JSON.parse(`{"operation":{"inProgress":"Action in progress…","create-pr":"Creating PR…","publish":"Publishing…","discard":"Discarding…","dismiss":"Dismissing follow-up…","poll-merge":"Checking merge…","reopen":"Reopening…","merge-local":"Integrating locally…","recover-and-retry":"Committing and retrying the preserved result…","acknowledge-no-changes":"Marking done…"},"rail":"Rail {{index}}","specCount_one":"{{count}} spec","specCount_other":"{{count}} specs","base":"Base branch","openPr":"Open PR","existingPr":"Existing PR","title":{"building":"Implementing in an isolated worktree…","buildingExistingPr":"Applying changes to an existing PR…","paused":"Needs a human decision","on_review":"Implementation ready for review","pr_draft":"Draft PR created","pr_draft_degraded":"PR delivery incomplete","pr_ready":"PR ready for merge","no_changes":"No changes needed","partial":"Partially implemented","delivery_blocked":"Implementation complete — delivery needs attention","update_failed":"Implementation complete — update failed","pr_closed":"PR closed without merge","superseded":"Superseded by a newer run","existing_pr_updated":"Existing PR updated","implementation_failed":"Implementation failed","pr_failed":"PR creation failed","merged":"PR merged","discarded":"Discarded"},"buildingHint":"You'll be asked to create the PR when it settles.","buildingExistingPrHint":"Specrails is working on the existing PR branch and will push the review changes back to that PR.","paused":"Implementation paused","pausedForRun":"Paused on {{ref}}","resume":"Resume","stopExecution":"Stop execution","stopExecutionSent":"Stop signal sent","stopExecutionFailed":"Could not stop execution","partialSummary":"{{succeeded}} of {{total}} completed; {{failed}} failed","unit":{"failed":"implementation failed","blocked":"delivery blocked","noChanges":"no changes","succeeded":"ready"},"createPr":"Create PR","publish":"Publish","checkout":"Checkout","openReview":"Review","openReviewTooltip":"Open the plain-language review","checkoutTooltip":"Check out {{branch}} in the main project folder","checkoutSuccess":"Checked out {{branch}}","checkoutFailed":"Could not check out the implementation branch","checkoutDirtyTitle":"Checkout blocked to protect your changes","checkoutDirtyBody":"The main project folder has uncommitted changes. Commit or stash them, then retry. Nothing was changed.","checkoutSafetyUnknownTitle":"Checkout paused because safety could not be verified","checkoutSafetyUnknownBody":"Specrails could not read the main project folder’s Git status. Nothing was released or changed. Retry after Git is available.","checkoutNotDeliverableTitle":"This branch is not the preserved implementation","checkoutNotDeliverableBody":"No exact delivery commit has been verified yet. Inspect or recover the local result instead.","inspectLocalResult":"Inspect local result","inspectLocalResultTooltip":"Reveal the preserved isolated worktree and copy its path","localResultPathCopied":"Local result path copied","localResultPath":"Preserved local result","localResultUnavailableHere":"No recoverable worktree is available on this computer. Review the run log from the machine where it executed.","recoverAndRetry":"Commit & retry push","recoverAndRetryVerified":"Recovered commit {{sha}} is verified in the PR","recoveryStillBlocked":"Local recovery still needs attention","recheckRecovery":"Check again","recoveryUnavailable":"Recovery could not be verified on this computer","recoveryUnavailableBody":"Specrails could not safely prove one delivery-owned result in this clone. Nothing was changed or removed. Inspect the stage detail and run logs. If the run executed on another computer, open Specrails there, then check again.","recoveryDetailSummary":"Technical recovery detail","retry":"Retry","retryPr":"Retry PR","checkMerge":"Check merge","verifyPr":"Verify PR","discard":"Discard","dismiss":"Dismiss follow-up","discardLocalResult":"Discard local result","markDone":"Mark done","refine":"Refine","retryPush":"Retry push","retryPushVerified":"Push verified · commit {{sha}} is in the PR","commitAlreadyVerified":"Commit {{sha}} is already verified in the PR","deliveryCommit":"commit {{sha}}","reopen":"Reopen","createPartialPr":"Create PR with {{count}}","confirmDiscard":"Confirm discard?","mergedNote":"Merged — specs moved to Done","discardedNote":"Discarded — specs returned to the backlog","supersededNote":"A newer implementation run replaced this card.","completedNote":"Confirmed — specs moved to Done","noChangesExisting":"No new changes were needed; the existing PR is unchanged.","noChangesNote":"No code changes were needed. Mark the specs done or return them to the backlog to refine.","deliveryNeedsAttention":"Implementation complete; delivery needs attention","deliveryBlockedNote":"Implementation succeeded, but delivery is blocked. Review the stage detail and run logs before discarding the local result.","partialDeliveryBlockedNote":"Part of the implementation succeeded, but nothing is safely deliverable yet. Review the per-unit evidence and run logs before choosing the next action.","retryPushNote":"Implementation succeeded and the changes are safe locally. Retry only the push.","cleanupIncomplete_one":"Cleanup is incomplete ({{count}} warning)","cleanupIncomplete_other":"Cleanup is incomplete ({{count}} warnings)","safetyArchiveTitle":"Safety archive ({{count}})","safetyArchiveHint":"Temporary workspace files were preserved outside the PR as a precaution. You can inspect or remove them manually.","implementationFailedNote":"The implementation run failed before there was anything deliverable. Open the run log to inspect the failure, then discard this card before relaunching.","degraded":{"pushed":"The branch was pushed but the PR could not be created — retry to finish.","localOnly":"The changes were assembled locally but not pushed — retry to publish the PR."},"alreadyResolved":"Already resolved elsewhere","actionFailed":"Action failed","notMergedYet":"Not merged yet","commitMissingRetry":"The delivery commit is no longer in the PR. Retry push is available again.","prVerifiedWaiting":"Commit {{sha}} verified · waiting for merge","viewLog":"View run log for {{ref}}","runElapsedAria":"{{elapsed}} elapsed","runCostAria":"{{cost}} spent","pinned":{"label":"Pinned","marker":"Implementation card — pinned above","collapse":"Minimize pinned card","expand":"Expand pinned card","expandCard":"Expand this card","collapseCard":"Minimize this card","collapsed_one":"Implementation card","collapsed_other":"{{count}} implementation cards","state":{"building":"Building","on_review":"Review","pr_draft":"Draft PR","pr_ready":"Published","no_changes":"No changes","completed":"Completed","pr_closed":"Closed","superseded":"Superseded","implementation_failed":"Failed","pr_failed":"Failed","merged":"Merged","discarded":"Discarded"}},"mergeLocal":"Integrate locally","mergeLocalTooltip":"Merge the delivered branches into {{base}} in your local checkout (no GitHub needed)","mergeLocalBlockedDirty":"Cannot integrate: local changes on {{base}} overlap the delivery. Commit or stash those changes, then retry.","mergeLocalBlockedBranch":"Cannot integrate: your checkout is on {{current}}, not {{base}}. Check out {{base}}, then retry.","mergedLocally":"Integrated into {{base}} locally","confirm":{"mergeLocalTitle":"Integrate locally?","mergeLocalBody":"The delivered branches will be merged into {{base}} locally. Existing changes are preserved; overlapping edits may require resolution before integration.","recoverAndRetryTitle":"Commit and push the preserved result?","recoverAndRetryBody":"Specrails will use only the isolated worktree or recorded fast-forward branch for {{branch}}. It will commit deliverable files if needed, then push the exact commit only if the PR is still open on the expected head and base. Your main project folder and its uncommitted changes will not be touched.","recheckRecoveryTitle":"Check this computer again?","recheckRecoveryBody":"Specrails will rescan this clone’s delivery-owned worktree, branch, refs, reflogs, and orphan Git objects for {{branch}}. If it proves one result, it may commit isolated changes and retry the exact push. Your main project folder will not be touched.","freshDiscardTitle":"Discard this delivery?","freshDiscardBody":"The PR will be closed without deleting its remote branch. Only SpecRails-owned local branches and worktrees that are still at their recorded commit will be removed; anything changed will be preserved with a warning. The specs will return to the backlog. Removed local resources cannot be recovered.","implementationFailedDiscardTitle":"Discard this failed delivery?","implementationFailedDiscardBody":"The card will be cleared and its specs will return to the backlog. Local work and branches will be kept for inspection. Only resources proven safe to clean up may be removed.","dismissTitle":"Dismiss this follow-up?","dismissBody":"This follow-up card will be cleared. Its owned worktree will be removed only if it is still safe; otherwise it will be preserved with a warning. The existing PR, its branch, and review state will remain unchanged.","discardLocalTitle":"Discard the local result?","discardLocalBody":"The recoverable local iteration will be removed only if it is still safe; if it changed, it will be preserved with a warning. Any existing PR and its branch will remain unchanged. A removed result cannot be recovered.","noChangesDoneTitle":"Mark these specs done?","noChangesDoneBody":"The implementation confirmed that no code changes are needed. The specs will move to Done and the no-change worktree will be cleaned up.","refineTitle":"Refine these specs?","refineBody":"The no-change result will be closed and the specs will return to the backlog so you can refine them. The run logs remain available."},"discardStackedNote":"Later rails of this milestone were built on this delivery. Discarding it pauses the milestone chain; the later rails keep their work."}`),Q={heading:`Spec draft`,drafting:`Updating draft…`,acceptanceCriteria:`Acceptance criteria`,untitled:`Untitled spec`,expand:`Show full description`,collapse:`Collapse description`},$={heading:`Framing`,framing:`Framing the request…`,restated:`What I understood`,alternative:`It could also mean`,pick:`Reply with this`,touches:`Would touch`,discriminator:`Which is it?`,assumptions:`What I'm assuming`,unknowns:`Still open`},re={openTicket:`Open spec #{{id}}`,openPullRequest:`Open PR #{{id}}`,openJob:`Open job {{id}}`,openLoop:`Open loop {{id}}`,ticketNotFound:`Spec #{{id}} not found — it may have been deleted`,pullRequestUrlMissing:`PR #{{id}} was referenced without a URL`,pullRequestNotFound:`PR #{{id}} could not be found in this project`,jobNotFound:`Job not found — it may have been deleted`,loopNotFound:`Loop not found — it may have been deleted`,lookupFailed:`Couldn't verify the reference — try again`},ie={untitled:`Untitled mission`,menu:`Mission menu`,rename:`Rename`,renamePlaceholder:`Mission name`,renameHint:`Double-click to rename`,renameFailed:`Could not rename`,addFavorite:`Add to favorites`,removeFavorite:`Remove from favorites`,copyName:`Copy mission name`,copyId:`Copy mission ID`,copyProject:`Copy project name`,copyProjectPath:`Copy project path`,copyFailed:`Couldn't copy`,copyTranscript:`Copy transcript`,copyTranscriptSuccess:`Transcript copied`,copyTranscriptFailed:`Could not copy transcript`,exportTranscript:`Export transcript (.txt)`,exportTranscriptSuccess:`Transcript export started`,exportTranscriptFailed:`Could not export transcript`,delete:`Delete mission`,deleteConfirm:`Delete this mission? This cannot be undone.`,deleteFailed:`Could not delete the mission`},ae=`What should we build next?`,oe={title:`Execution log`,live:`Live`,empty:`No tool activity in this turn yet.`,output:`Output`,error:`Error`,copyAll:`Copy full log`,copyEntry:`Copy entry`,copySuccess:`Log copied to clipboard`,copyFailed:`Could not copy the log`,openLog:`View execution log`,close:`Close`},se={open:`View logs for {{command}}`,logsTitle:`Process logs`,logsDescription:`Live output and saved history for this process.`,close:`Close logs`,command:`Command`,directory:`Directory`,exitCode:`Exit code: {{code}}`,signal:`Signal: {{signal}}`,search:`Search logs…`,source:`Output source`,allSources:`All output`,pause:`Pause`,resume:`Resume`,follow:`Follow`,copy:`Copy visible logs`,download:`Download visible logs`,stop:`Stop process`,stopCommand:`Stop {{command}}`,stopFailed:`Could not stop the process. Try again.`,truncated:`Showing a limited log window. Older output or long lines may be omitted. Copy and download include this view only.`,paused:`View paused. The process continues running.`,loadFailed:`Logs could not be loaded. The process may have expired from retention; saved output is still shown.`,retry:`Retry`,copied:`Visible logs copied.`,exportFailed:`Could not export logs. Try again.`,output:`Process output`,loading:`Loading logs…`,noMatches:`No matching output.`,empty:`No output yet.`,lineCount:`{{count}} of {{total}} lines`,exportHint:`Exports include the current filter and retained output only.`,status:{starting:`Starting`,running:`Running`,stopping:`Stopping`,exited:`Exited`,killed:`Stopped`,failed:`Failed`,interrupted:`Disconnected`},repository:`Repository`,history:{button:`Processes`,title:`Mission processes`,open:`View process history`,description:`Browse active processes and saved logs from earlier executions.`,search:`Search command or repository…`,refresh:`Refresh history`,close:`Close process history`,back:`Back to processes`,loading:`Loading process history…`,empty:`No processes have been recorded for this mission.`,noMatches:`No matching processes.`,loadFailed:`Process history could not be loaded. Previously loaded entries remain available.`,showMore:`Show more`,count:`Processes: {{count}}`},interruptedHint:`Specrails stopped supervising this process. Its operating system state is unknown; saved logs remain available.`,persistenceFailed:`The process history could not be saved. Available output remains visible.`},ce={detach:`Open in separate window`,attach:`Return to main window`,detached:`This mission is open in another window.`,focus:`Show mission window`,loading:`Moving mission…`,failed:`Could not move this mission. Your draft is preserved.`,dismiss:`Dismiss`,wrongMission:`Open this mission before moving it.`,finishPending:`Finish the operation in progress, or save or cancel the message or capture before moving the mission.`},le={heading:`Rail launch`,rail:`Rail {{index}}`,newRail:`New rail`,play:`Play`,launching:`Launching…`,dismiss:`Dismiss`,playHint:`Adjust anything, then press Play to launch under your own authority.`,pending:`Preparing a launch proposal…`,unreadable_one:`The agent's launch proposal could not be read.`,unreadable_other:`{{count}} launch proposals could not be read.`,pinnedMarker:`Launch proposal pinned above the composer`,effortDefault:`Default effort`,profileNone:`No profile`,status:{proposal:`Proposal`,ready:`Ready`,blocked:`Needs attention`,loading:`Checking…`},availability:{free:`free`,busy:`running`,pending_decision:`awaiting a decision`,on_review:`on review`},fields:{rail:`Rail`,newRailName:`New rail name (optional)`,railName:`Rail name`,addSpec:`Add spec`,removeSpec:`Remove #{{id}}`,loop:`Loop`,engine:`AI engine`,model:`Model`,effort:`Reasoning effort`,profile:`Agent profile`,targetPr:`Target PR #`,baseBranch:`Base branch`},notes:{railMissing:`Rail {{index}} no longer exists — pick another rail or create one.`,railBusy:`Rail {{index}} is {{state}} — launching there is blocked.`,useFree:`Use Rail {{index}}`,specsDropped:`Not in this project any more: {{ids}}`,engineStale:`{{engine}} is not detected on this machine — using {{fallback}}.`,modelStale:`{{model}} is not available — using {{fallback}}.`},block:{noProject:`This mission is not pinned to a project.`,loadFailed:`Could not load the project's rails.`,noSpecs:`Add at least one spec to launch.`,railLimit:`All {{max}} rails exist and none is free.`},errors:{tickets_in_flight:`One of these specs is already running on another rail.`,pr_decision_pending:`This rail is waiting for a PR decision.`,rail_limit_reached:`The project already has the maximum number of rails.`,invalid_base_branch:`That base branch does not exist locally.`,base_branch_requires_isolation:`A base branch needs worktree isolation (a git repository with commits).`,target_pr_requires_pr_mode:`A target PR needs worktree isolation (a git repository with commits).`,invalid_response:`Unexpected server response.`},stub:{launched:`Launched → Rail {{rail}}`,dismissed:`Proposal dismissed`,viewRun:`View run`,goToCard:`Go to card`,goToCardTitle:`Scroll to this launch's implementation card`,viewRunTitle:`Open the run's live log`},followUp:{title:`Resolve {{count}} review comment(s) on the PR`,excluded:`Do not change`,verification:`Verify`,specUntouched:`The spec and its Jira description are not edited — the scope travels with the run.`,source:{pasted:`pasted`,github:`from GitHub`}},addenda:{rides_one:`{{count}} open addendum rides into this launch:`,rides_other:`{{count}} open addenda ride into this launch:`}},ue={status:{running:`Running`,paused:`Paused`,succeeded:`Succeeded`,failed:`Failed`,stalled:`Stalled`,cancelled:`Cancelled`,unknown:`Unknown`},title:{running:`Implementing in the project checkout…`,paused:`Needs a human decision`,succeeded:`Implementation finished`,failed:`Implementation failed`,stalled:`Implementation stalled`,cancelled:`Run cancelled`,unknown:`Run state unknown`},noDeliveryNote:`No PR phase — this project has no git repository or commits, so the work landed directly in the project folder.`,noDeliveryHint:`Running directly in the project folder (no git repository or commits — no PR will be proposed).`,failure:{title:`Why it stopped`,step:`step {{step}}`,unit:`#{{ticket}} · {{code}}`},actions:{resume:`Resume`,approve:`Approve`,recover:`Recover & retry`,relaunch:`Relaunch`},relaunchSent:`Rail {{index}} relaunched — a new card will follow the run.`,relaunchFailed:`Could not relaunch the rail`,relaunchBlockedActive:`The rail still has an active run`},de={marker:`Rail {{rail}} failed: {{code}}`,openCard:`Open card`,briefing:{title:`Automatic failure briefing`}},fe={title:e,subtitle:t,trigger:n,composerPlaceholder:r,send:i,stop:a,copy:o,attachment:s,maximize:c,restore:l,minimize:u,close:d,newConversation:f,emptyTitle:p,emptyHint:m,thinking:h,connecting:g,consultingCode:_,size:v,model:y,history:b,queue:x,receipt:S,queueEdit:C,git:w,provider:T,tier:E,approval:D,project:O,palette:k,mission:A,noProvider:j,degraded:M,toolCard:N,error:P,chip:ne,newAgent:F,switchToAgent:I,switchToKanban:L,search:R,home:z,favoriteMissions:B,untitled:V,workspace:H,attachFile:U,deleteConversation:W,confirmDeleteConversation:G,addFavoriteConversation:K,removeFavoriteConversation:q,confirmShort:J,imagesUnsupported:Y,effort:X,prCard:Z,specDraft:Q,problemFrame:$,refs:re,header:ie,emptyTitleCodeRain:ae,activity:oe,backgroundProcess:se,window:ce,railCard:le,runCard:ue,runFailure:de};export{te as t};