specrails-desktop 2.49.2 → 2.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/dist/assets/{ActivityFeedPage-CyOxof-U.js → ActivityFeedPage-tWhhCACX.js} +1 -1
- package/client/dist/assets/{AgentBrowserCapture-DBGaKW4u.js → AgentBrowserCapture-CZeFRg-Y.js} +1 -1
- package/client/dist/assets/{AgentModeAnalyticsPane-WZpPaNMa.js → AgentModeAnalyticsPane-u4ux0xLJ.js} +2 -2
- package/client/dist/assets/{AgentModeCodePane-nHYnJUdP.js → AgentModeCodePane-wn1RDZ4y.js} +2 -2
- package/client/dist/assets/{AgentModeJobsPane-DkhcBtoZ.js → AgentModeJobsPane-CXLikWKG.js} +1 -1
- package/client/dist/assets/{AgentsPage-CX90q-nY.js → AgentsPage-zjVv7i9S.js} +1 -1
- package/client/dist/assets/{AnalyticsPage-DisrtBr7.js → AnalyticsPage-Bf2kyeeR.js} +1 -1
- package/client/dist/assets/{CodePage-ixqxftCT.js → CodePage-Db7jdyKI.js} +1 -1
- package/client/dist/assets/{DesktopAnalyticsPage-BFB-Pn-D.js → DesktopAnalyticsPage-CnF_SL4h.js} +1 -1
- package/client/dist/assets/{DocsDialog-BwiFrwEJ.js → DocsDialog-DJ0ATgNN.js} +1 -1
- package/client/dist/assets/{DocsPage-ByS0ZCco.js → DocsPage-I5217wRs.js} +1 -1
- package/client/dist/assets/{ExportDropdown-IPutNYvD.js → ExportDropdown-D1JqZXMo.js} +1 -1
- package/client/dist/assets/{InteractiveJobComposer-BEok7ntM.js → InteractiveJobComposer-Ccyfbaj1.js} +1 -1
- package/client/dist/assets/{JobDetailModal-BnO_V8KR.js → JobDetailModal-BV0oXeR1.js} +1 -1
- package/client/dist/assets/{JobDetailPage-BnS8aHKD.js → JobDetailPage-B6muzK7f.js} +1 -1
- package/client/dist/assets/{JobsPage-BC0mq-MF.js → JobsPage-z7YjsSNs.js} +1 -1
- package/client/dist/assets/{LoopBuilderPage-WmqNpDw2.js → LoopBuilderPage-cu6qiv41.js} +1 -1
- package/client/dist/assets/{LoopPreviewModal-BY5dDezY.js → LoopPreviewModal-Cz9CT647.js} +1 -1
- package/client/dist/assets/{LoopsPage-BcegqJyY.js → LoopsPage-C1PYYWno.js} +1 -1
- package/client/dist/assets/{MinimizedChatsContext-CX1i2kQ8.js → MinimizedChatsContext-D-wIfWD7.js} +1 -1
- package/client/dist/assets/{PluginsPage-BhG3qPda.js → PluginsPage-Bib-5fVd.js} +1 -1
- package/client/dist/assets/{ProjectSettingsDialog-JQdLwCy2.js → ProjectSettingsDialog-K5_ufJmm.js} +1 -1
- package/client/dist/assets/{RepositoryDeliveries-DqmlG0Zs.js → RepositoryDeliveries-BVROW9bi.js} +1 -1
- package/client/dist/assets/{RepositoryScopeSelector-DG8KKPrm.js → RepositoryScopeSelector-Qq2dUoCl.js} +1 -1
- package/client/dist/assets/ReviewPacketPage-tvI4dFpw.js +4 -0
- package/client/dist/assets/{TemplatePreviewModal-1AVv-hu4.js → TemplatePreviewModal-CV3fxeb1.js} +1 -1
- package/client/dist/assets/{TicketDetailModalContext-D2MEhRwJ.js → TicketDetailModalContext-BSpIHNsJ.js} +1 -1
- package/client/dist/assets/{Trans-BLljsfHR.js → Trans-BZWwRo1V.js} +1 -1
- package/client/dist/assets/{agent-D3jkMipn.js → agent-1Sh10wFp.js} +1 -1
- package/client/dist/assets/{agent-BII69Nc0.js → agent-BScqU3oM.js} +1 -1
- package/client/dist/assets/{agent-B76BhAyE.js → agent-Crfgp_yl.js} +1 -1
- package/client/dist/assets/{agent-CYFBDwFD.js → agent-CvaTFLGI.js} +1 -1
- package/client/dist/assets/{agent-CVeMLIu4.js → agent-DH5vUrkg.js} +1 -1
- package/client/dist/assets/{agent-BIO4q6b0.js → agent-DUuWo07e.js} +1 -1
- package/client/dist/assets/{agent-DSrflYFL.js → agent-MlnQFv-P.js} +1 -1
- package/client/dist/assets/{agent-ButS6kwl.js → agent-uG7w5crQ.js} +1 -1
- package/client/dist/assets/{formatDistanceToNow-CbQZkD8M.js → formatDistanceToNow-BHeWIeTB.js} +1 -1
- package/client/dist/assets/{getTimezoneOffsetInMilliseconds-pBVK3rJC.js → getTimezoneOffsetInMilliseconds-DTT9YgCB.js} +1 -1
- package/client/dist/assets/index-D7f-4Igx.css +2 -0
- package/client/dist/assets/{index-DEqG4WdV.js → index-DnVIArMT.js} +34 -34
- package/client/dist/assets/{jira-api-f-sYCIuX.js → jira-api-CbYLdWCi.js} +1 -1
- package/client/dist/assets/packet-B8gXENJV.js +1 -0
- package/client/dist/assets/{packet-DF-iwqqY.js → packet-BTfIuMol.js} +1 -1
- package/client/dist/assets/{packet-BsRimSfZ.js → packet-CFjk65pR.js} +1 -1
- package/client/dist/assets/{packet-C8qzvgrZ.js → packet-CYoLyZf9.js} +1 -1
- package/client/dist/assets/{packet-r7J14m89.js → packet-D-v2OxI7.js} +1 -1
- package/client/dist/assets/{packet-DQ_GnT2b.js → packet-Dg7Ij21z.js} +1 -1
- package/client/dist/assets/{packet-C0pcMd6x.js → packet-tLvSufRp.js} +1 -1
- package/client/dist/assets/{packet-Nb8BLI5h.js → packet-zdb1UItU.js} +1 -1
- package/client/dist/assets/{project-repositories-DAjJbFhm.js → project-repositories-DC4nyJi7.js} +1 -1
- package/client/dist/assets/{spending-DJBbdJyD.js → spending-BT4ahFx2.js} +1 -1
- package/client/dist/assets/{useDesktop-BJ8IRBRt.js → useDesktop-DvDdw7oq.js} +1 -1
- package/client/dist/assets/{useRuntimeRuns-Ch1KUc7k.js → useRuntimeRuns-C6qGuPG6.js} +1 -1
- package/client/dist/assets/{useSharedWebSocket-BN3Lmehi.js → useSharedWebSocket-DkwOZsMN.js} +2 -2
- package/client/dist/index.html +17 -17
- package/docs/internals/safe-pr-review-flow.md +72 -0
- package/package.json +1 -1
- package/server/dist/agent-operator-prompt.js +16 -0
- package/server/dist/db.js +11 -0
- package/server/dist/loop-run-manager.js +4 -1
- package/server/dist/mcp/tools/rails.js +24 -0
- package/server/dist/multi-repo-delivery.js +4 -0
- package/server/dist/pr-follow-up-scope.js +224 -0
- package/server/dist/pr-follow-up.js +75 -0
- package/server/dist/rail-isolated-launch.js +3 -0
- package/server/dist/rail-launch-parser.js +12 -0
- package/server/dist/rail-pr-decision.js +20 -3
- package/server/dist/rail-pr-store.js +24 -3
- package/server/dist/rails-router.js +30 -2
- package/server/dist/review-packet.js +41 -0
- package/client/dist/assets/ReviewPacketPage-DSSi3x16.js +0 -4
- package/client/dist/assets/index-UDzndadF.css +0 -2
- package/client/dist/assets/packet-BTRySHoQ.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=`Missionszentrale`,t=`Specrails per Chat bedienen`,n=`Missionszentrale`,r=`Bitte den Agenten um alles…`,i=`Senden`,a=`Stopp`,o=`Kopieren`,s={openPreview:`{{name}} anzeigen`,openDownload:`{{name}} herunterladen`,previewTitle:`Vorschau von {{name}}`,downloadTitle:`Datei herunterladen?`,downloadPrompt:`Diese Datei kann hier nicht in der Vorschau angezeigt werden. Möchtest du sie herunterladen?`,download:`Herunterladen`,cancelDownload:`Jetzt nicht`,loading:`Datei wird vorbereitet…`,loadFailed:`Anhang konnte nicht geladen werden`,loadError:`Anhang konnte nicht geladen werden: {{error}}`},c=`Maximieren`,l=`Wiederherstellen`,u=`Minimieren`,d=`Schließen`,f=`Neue Mission`,p=`Wie lautet die Mission?`,m=`Wähle ein Projekt und frag dann. Das Board aktualisiert sich live, während der Agent arbeitet.`,h=`Denkt nach…`,g=`Verbinden…`,_=`App wird abgefragt…`,v={compact:`Kompakt`,comfortable:`Komfortabel`,max:`Maximieren`},y={label:`Modell`,loading:`Modelle werden geladen…`,unavailable:`Modelle nicht verfügbar`},b={hint:`Verlauf durchsuchen — tippen zum Bearbeiten, ↑↓ zum Navigieren`},x={queued:`In Warteschlange`,send:`Nachricht senden`,sendHint:`Für den nächsten Durchlauf vormerken. Mit „Steuern“ an einer wartenden Nachricht sendest du sie, ohne das Modell zu unterbrechen.`,placeholder:`Nachricht zur Warteschlange hinzufügen…`,delivered:`An Agent übergeben`,interrupted:`Übergabe unbestätigt`,cancelled:`Vor Übergabe abgebrochen`,steer:`Steuern`,steerHint:`Senden, ohne das Modell zu unterbrechen`,steering:`Wird an Agent gesendet…`,remove:`Nachricht aus Warteschlange löschen`,more:`Nachrichtenoptionen`,edit:`Bearbeiten`,actionConflict:`Diese Nachricht wird bereits übergeben oder ist nicht mehr in der Warteschlange.`,actionFailed:`Die wartende Nachricht konnte nicht aktualisiert werden. Versuche es erneut.`},S={sent:`An Agent gesendet`,received:`An Agent übergeben`,read:`Vom Agenten gelesen`,interrupted:`Übergabe unbestätigt`,cancelled:`Vor Übergabe abgebrochen`},C={editing:`Ausstehende Nachricht {{n}} von {{m}} bearbeiten`,hint:`↑↓ zum Navigieren · Enter speichert · Esc bricht ab`,save:`Ausstehende Nachricht speichern`,cancel:`Bearbeitung abbrechen`,dispatched:`Diese Nachricht wurde bereits übergeben; dein Text bleibt als Entwurf erhalten`,saveFailed:`Die ausstehende Nachricht konnte nicht gespeichert werden`},w={branch:`Branch`,detached:`(detached)`,dirty:`Nicht committete Änderungen`,switched:`Zu {{branch}} gewechselt`,switchFailed:`Branch-Wechsel fehlgeschlagen`,lockedWhileWorking:`Branch gesperrt, während der Agent arbeitet`,searchPlaceholder:`Branches durchsuchen…`,noMatches:`Keine passenden Branches`,worktrees:`Worktrees`,worktreePathCopied:`Worktree-Pfad kopiert`,copyWorktreePath:`Worktree-Pfad kopieren`,repository:`Repository`,repositoryUnavailable:`Repository nicht verfügbar`,loadFailed:`Git-Status nicht verfügbar`,notGit:`Kontextordner · ohne Git`,retry:`Erneut versuchen`},T={label:`Anbieter`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},E={cycleHint:`⇧⇥ zum Wechseln`,observe:{name:`Beobachten`,desc:`Nur lesen — nichts ändert sich`},edit:{name:`Bearbeiten`,desc:`Erstellen und bearbeiten (umkehrbar)`},operate:{name:`Ausführen`,desc:`KI starten — kostet Geld`},autonomous:{name:`Autonom`,desc:`Löschen und beenden — unumkehrbar`},lockedTitle:`Höhere Stufe erforderlich`,lockedBody:`Diese Aktion erfordert die Stufe „{{level}}“. Du bist auf „{{current}}“.`,raiseHint:`⇧⇥ um die Stufe zu erhöhen, oder frag anders.`},D={title:`Aktion bestätigen`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Genehmigen`,cancel:`Abbrechen`,dontAskAgain:`In dieser Sitzung nicht mehr fragen`,approved:`Genehmigt`,cancelled:`Abgebrochen`},O={home:`Start`,searchPlaceholder:`Mit Specrails sprechen…`,searchProjectsPlaceholder:`Projekte suchen…`,recents:`Zuletzt verwendet`,allProjects:`Alle Projekte`,searchAll:`In allen Projekten suchen`,addProject:`Projekt hinzufügen…`,homeHint:`Kein Projekt ausgewählt — über alle Projekte hinweg.`,askCreateOrSearch:`Es ist kein Projekt ausgewählt. Möchtest du ein neues Projekt erstellen oder über alle Projekte hinweg suchen?`},k={remove:`{{label}} entfernen`,addContextAction:`Kontext oder Aktion hinzufügen`,filtering:`Filtere "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`Keine Treffer`,noMatchesFor:`Keine Treffer für "{{query}}"`,mode:{reference:{title:`Referenz`,hint:`@ Projekte, Specs, Missionen`},trace:{title:`Trace`,hint:`# Jobs, Läufe, IDs`},action:{title:`Aktion`,hint:`/ Befehle für diesen Kontext`}},plus:{reference:`Referenz`,referenceHint:`Projekte, Specs, Missionen`,trace:`Trace`,traceHint:`Jobs, Läufe, IDs`,action:`Aktion`,actionHint:`Erstellen, starten, prüfen`,fileAttachment:`Dateianhang`,fileAttachmentHint:`Docs, Bilder, Logs hinzufügen`,browserCapture:`Browser-Aufnahme`,browserCaptureHint:`Einen Seitenbereich für diese Mission erfassen`},railGroup:`Rails`,railGroupInUse:`Rails in Verwendung`},A={label:`Mission wechseln`,untitled:`Neue Mission`,new:`Neue Mission`,searchPlaceholder:`Missionen durchsuchen…`,noMatches:`Keine Mission gefunden`,working:`Agent arbeitet`,queuedBadge:`{{n}} in Warteschlange`,delete:`Mission "{{title}}" löschen`,deleteConfirm:`Löschen?`,deleteLiveConfirm:`Der Agent arbeitet — trotzdem löschen?`,confirmDelete:`Löschen bestätigen`,cancelDelete:`Mission behalten`,deleteFailed:`Mission konnte nicht gelöscht werden`},j={title:`Kein KI-Anbieter installiert`,body:`Der Agent benötigt Claude, Codex, Gemini oder Kimi auf deinem Rechner. Installiere einen und öffne den Agenten erneut, um zu chatten.`,placeholder:`Installiere einen KI-Anbieter, um den Agenten zu nutzen…`},M={title:`Specrails MCP ist aus`,body:`Der Agent braucht den eingebetteten MCP-Server, um die App zu bedienen.`,enable:`Specrails MCP aktivieren`,enabling:`Wird aktiviert…`,enabled:`MCP aktiviert`},N={live:`live`,queued:`in Warteschlange`,running:`läuft`,done:`fertig`,failed:`fehlgeschlagen`},P={generic:`Etwas ist schiefgelaufen. Versuch es erneut.`,busy:`Der Agent ist beschäftigt. Versuch es gleich noch einmal.`},F={kindAgent:`Agenten-Mission`},I=`Neue Mission`,L=`Zur Missionszentrale wechseln`,R=`Zum Board wechseln`,z=`Suchen`,B=`Start`,V=`Lieblingsmissionen`,H=`Ohne Titel`,U={title:`Im Workspace`,terminal:`Terminal`,files:`Dateien`,browser:`Browser`,requiresProject:`Wähle ein Projekt, um dieses Tool zu nutzen`,resizeCode:`Code-Bereich anpassen`,closeFiles:`Code schließen`,browserConfirm:`Zum Agenten hinzufügen`,browserSelectStart:`Auswählen, um zur Mission hinzuzufügen`,browserCaptured:`Aufnahme hinzugefügt`,uploadFailed:`Upload fehlgeschlagen`,requiresConversation:`Starte eine Mission, um dieses Werkzeug zu nutzen`,jobs:`Jobs`,closeJobs:`Jobs schließen`,resizeJobs:`Jobs-Bereich anpassen`,noJobs:`Noch keine Jobs — bitte den Agenten, einen zu starten`,analytics:`Analytics`,closeAnalytics:`Analytics schließen`,resizeAnalytics:`Analytics-Bereich anpassen`},W=`Datei anhängen`,G=`„{{title}}“ löschen`,K=`Löschen von „{{title}}“ bestätigen`,q=`„{{title}}“ zu Favoriten hinzufügen`,J=`„{{title}}“ aus Favoriten entfernen`,Y=`bestätigen?`,X=`Dieser Anbieter kann noch keine Bilder lesen — hänge stattdessen Textdateien an`,Z={label:`Aufwand`,minimal:`Minimal`,low:`Niedrig`,medium:`Mittel`,high:`Hoch`,xhigh:`Sehr hoch`,max:`Maximal`,ultra:`Ultra`},Q=JSON.parse(`{"operation":{"inProgress":"Aktion läuft…","create-pr":"PR wird erstellt…","publish":"Wird veröffentlicht…","discard":"Wird verworfen…","dismiss":"Fortsetzung wird geschlossen…","poll-merge":"Merge wird geprüft…","reopen":"Wird erneut geöffnet…","merge-local":"Wird lokal integriert…","recover-and-retry":"Gesichertes Ergebnis wird committet und erneut gepusht…","acknowledge-no-changes":"Wird als erledigt markiert…"},"markDone":"Als erledigt markieren","refine":"Verfeinern","completedNote":"Bestätigt — Specs nach Erledigt verschoben","partialSummary":"{{succeeded}} von {{total}} abgeschlossen; {{failed}} fehlgeschlagen","unit":{"failed":"Implementierung fehlgeschlagen","blocked":"Bereitstellung blockiert","noChanges":"keine Änderungen","succeeded":"bereit"},"rail":"Rail {{index}}","specCount_one":"{{count}} Spec","specCount_other":"{{count}} Specs","base":"Basis-Branch","openPr":"PR öffnen","existingPr":"Bestehender PR","title":{"no_changes":"Keine Änderungen erforderlich","partial":"Teilweise implementiert","delivery_blocked":"Implementierung abgeschlossen — Bereitstellung erfordert Aufmerksamkeit","update_failed":"Implementierung abgeschlossen — Aktualisierung fehlgeschlagen","pr_closed":"PR ohne Merge geschlossen","superseded":"Durch einen neueren Lauf ersetzt","existing_pr_updated":"Bestehender PR aktualisiert","building":"Implementierung in einem isolierten Worktree…","buildingExistingPr":"Änderungen werden auf einen bestehenden PR angewendet…","paused":"Benötigt eine menschliche Entscheidung","on_review":"Implementierung bereit zur Prüfung","pr_draft":"Entwurfs-PR erstellt","pr_draft_degraded":"PR-Auslieferung unvollständig","pr_ready":"PR bereit zum Merge","implementation_failed":"Implementierung fehlgeschlagen","pr_failed":"PR-Erstellung fehlgeschlagen","merged":"PR gemergt","discarded":"Verworfen"},"buildingHint":"Nach Abschluss wirst du gefragt, ob der PR erstellt werden soll.","buildingExistingPrHint":"Specrails arbeitet auf dem Branch des bestehenden PRs und pusht die Review-Änderungen zurück in denselben PR.","paused":"Implementierung pausiert","pausedForRun":"Pausiert bei {{ref}}","resume":"Fortsetzen","stopExecution":"Ausführung stoppen","stopExecutionSent":"Stoppsignal gesendet","stopExecutionFailed":"Ausführung konnte nicht gestoppt werden","createPr":"PR erstellen","publish":"Veröffentlichen","checkout":"Branch auschecken","openReview":"Prüfen","openReviewTooltip":"Die Prüfung in klarer Sprache öffnen","checkoutTooltip":"Den Hauptordner des Projekts auf {{branch}} auschecken","checkoutSuccess":"{{branch}} ausgecheckt","checkoutFailed":"Die Implementierungsbranch konnte nicht ausgecheckt werden","checkoutDirtyTitle":"Checkout zum Schutz deiner Änderungen blockiert","checkoutDirtyBody":"Der Hauptordner des Projekts enthält nicht committete Änderungen. Committe oder stashe sie und versuche es erneut. Es wurde nichts verändert.","checkoutSafetyUnknownTitle":"Checkout pausiert, da die Sicherheit nicht geprüft werden konnte","checkoutSafetyUnknownBody":"Specrails konnte den Git-Status des Projekt-Hauptordners nicht lesen. Es wurde nichts freigegeben oder verändert. Versuche es erneut, sobald Git verfügbar ist.","checkoutNotDeliverableTitle":"Diese Branch enthält nicht die gesicherte Implementierung","checkoutNotDeliverableBody":"Der exakte Liefer-Commit wurde noch nicht verifiziert. Prüfe oder stelle stattdessen das lokale Ergebnis wieder her.","inspectLocalResult":"Lokales Ergebnis prüfen","inspectLocalResultTooltip":"Den gesicherten isolierten Worktree anzeigen und seinen Pfad kopieren","localResultPathCopied":"Pfad des lokalen Ergebnisses kopiert","localResultPath":"Gesichertes lokales Ergebnis","localResultUnavailableHere":"Auf diesem Computer ist kein wiederherstellbarer Worktree verfügbar. Prüfe das Run-Protokoll auf dem Computer, auf dem der Lauf ausgeführt wurde.","recoverAndRetry":"Committen und Push wiederholen","recoverAndRetryVerified":"Der wiederhergestellte Commit {{sha}} wurde im PR verifiziert","recoveryStillBlocked":"Die lokale Wiederherstellung erfordert noch Aufmerksamkeit","recheckRecovery":"Erneut prüfen","recoveryUnavailable":"Die Wiederherstellung konnte auf diesem Computer nicht verifiziert werden","recoveryUnavailableBody":"Specrails konnte in diesem Klon nicht sicher genau ein zur Lieferung gehörendes Ergebnis nachweisen. Nichts wurde geändert oder entfernt. Prüfe das Stufendetail und die Run-Protokolle. Wenn der Run auf einem anderen Computer lief, öffne Specrails dort und prüfe erneut.","recoveryDetailSummary":"Technisches Wiederherstellungsdetail","retry":"Erneut versuchen","retryPr":"PR erneut versuchen","checkMerge":"Merge prüfen","verifyPr":"PR verifizieren","discard":"Verwerfen","confirmDiscard":"Verwerfen bestätigen?","mergedNote":"Gemergt — Specs nach Fertig verschoben","discardedNote":"Verworfen — Specs zurück ins Backlog","implementationFailedNote":"Der Implementierungslauf ist fehlgeschlagen, bevor etwas Auslieferbares entstanden ist. Öffne das Run-Protokoll, um den Fehler zu prüfen, und verwirf diese Karte vor einem erneuten Start.","dismiss":"Fortsetzung schließen","discardLocalResult":"Lokales Ergebnis verwerfen","retryPush":"Push wiederholen","retryPushVerified":"Push verifiziert · Commit {{sha}} ist in der PR","commitAlreadyVerified":"Commit {{sha}} ist bereits in der PR verifiziert","deliveryCommit":"Commit {{sha}}","reopen":"Erneut öffnen","createPartialPr":"PR mit {{count}} erstellen","supersededNote":"Ein neuerer Implementierungslauf hat diese Karte ersetzt.","noChangesExisting":"Es waren keine neuen Änderungen nötig; der bestehende PR bleibt unverändert.","noChangesNote":"Es waren keine Codeänderungen nötig. Markiere die Specs als erledigt oder lege sie zur Verfeinerung zurück in den Backlog.","deliveryNeedsAttention":"Implementierung abgeschlossen; Bereitstellung erfordert Aufmerksamkeit","deliveryBlockedNote":"Die Implementierung war erfolgreich, aber die Bereitstellung ist blockiert. Prüfe Stufendetail und Protokolle, bevor du das lokale Ergebnis verwirfst.","partialDeliveryBlockedNote":"Ein Teil der Implementierung war erfolgreich, aber noch ist nichts sicher auslieferbar. Prüfe die Nachweise pro Einheit und die Protokolle, bevor du die nächste Aktion auswählst.","retryPushNote":"Die Implementierung war erfolgreich und die Änderungen sind lokal sicher. Wiederhole nur den Push.","cleanupIncomplete_one":"Bereinigung unvollständig ({{count}} Warnung)","cleanupIncomplete_other":"Bereinigung unvollständig ({{count}} Warnungen)","safetyArchiveTitle":"Sicherheitsarchiv ({{count}})","safetyArchiveHint":"Temporäre Workspace-Dateien wurden vorsichtshalber außerhalb des PR aufbewahrt. Du kannst sie prüfen oder manuell entfernen.","confirm":{"recoverAndRetryTitle":"Das gesicherte Ergebnis committen und pushen?","recoverAndRetryBody":"Specrails verwendet ausschließlich den isolierten Worktree oder den aufgezeichneten Fast-Forward-Branch für {{branch}}. Falls nötig, werden die lieferbaren Dateien committet. Anschließend wird nur dieser exakte Commit gepusht und auch nur dann, wenn der PR noch mit den erwarteten Quell- und Ziel-Branches geöffnet ist. Der Hauptordner deines Projekts und seine nicht committeten Änderungen bleiben unberührt.","recheckRecoveryTitle":"Diesen Computer erneut prüfen?","recheckRecoveryBody":"Specrails durchsucht in diesem Klon erneut den zur Lieferung gehörenden Worktree, Branch, Refs, Reflogs und verwaiste Git-Objekte für {{branch}}. Wird genau ein Ergebnis bewiesen, kann Specrails isolierte Änderungen committen und den exakten Push wiederholen. Der Hauptprojektordner bleibt unberührt.","noChangesDoneTitle":"Diese Specs als erledigt markieren?","noChangesDoneBody":"Die Implementierung hat bestätigt, dass keine Codeänderungen nötig sind. Die Specs werden nach Erledigt verschoben und der unveränderte Worktree wird bereinigt.","refineTitle":"Diese Specs verfeinern?","refineBody":"Das Ergebnis ohne Änderungen wird geschlossen und die Specs kehren zur Verfeinerung in den Backlog zurück. Die Ausführungsprotokolle bleiben verfügbar.","mergeLocalTitle":"Lokal integrieren?","mergeLocalBody":"Die gelieferten Branches werden lokal in {{base}} zusammengeführt. Vorhandene Änderungen bleiben erhalten; überlappende Änderungen müssen gegebenenfalls vor der Integration aufgelöst werden.","freshDiscardTitle":"Diese Lieferung verwerfen?","freshDiscardBody":"Der PR wird geschlossen, ohne seinen Remote-Branch zu löschen. Nur lokale Branches und Worktrees, die SpecRails gehören und noch auf dem aufgezeichneten Commit stehen, werden entfernt; alles Veränderte bleibt mit einer Warnung erhalten. Die Specs kehren in den Backlog zurück. Entfernte lokale Ressourcen können nicht wiederhergestellt werden.","implementationFailedDiscardTitle":"Diese fehlgeschlagene Lieferung verwerfen?","implementationFailedDiscardBody":"Die Karte wird geschlossen und ihre Specs kehren in den Backlog zurück. Lokale Arbeit und Branches bleiben zur Prüfung erhalten. Nur nachweislich sicher bereinigbare Ressourcen dürfen entfernt werden.","dismissTitle":"Diese Fortsetzung schließen?","dismissBody":"Diese Fortsetzungskarte wird geschlossen. Ihr zugehöriger Worktree wird nur entfernt, wenn dies weiterhin sicher ist; andernfalls bleibt er mit einer Warnung erhalten. Der bestehende PR, sein Branch und der Review-Status bleiben unverändert.","discardLocalTitle":"Lokales Ergebnis verwerfen?","discardLocalBody":"Die wiederherstellbare lokale Iteration wird nur entfernt, wenn dies weiterhin sicher ist; wurde sie verändert, bleibt sie mit einer Warnung erhalten. Ein vorhandener PR und sein Branch bleiben unverändert. Ein entferntes Ergebnis kann nicht wiederhergestellt werden."},"degraded":{"pushed":"Der Branch wurde gepusht, aber die PR konnte nicht erstellt werden — erneut versuchen, um abzuschließen.","localOnly":"Die Änderungen wurden lokal zusammengeführt, aber nicht gepusht — erneut versuchen, um die PR zu veröffentlichen."},"alreadyResolved":"Bereits anderweitig erledigt","actionFailed":"Aktion fehlgeschlagen","notMergedYet":"Noch nicht gemergt","commitMissingRetry":"Der Liefer-Commit ist nicht mehr in der PR enthalten. Der Push kann erneut versucht werden.","prVerifiedWaiting":"Commit {{sha}} verifiziert · wartet auf Merge","viewLog":"Ausführungsprotokoll für {{ref}} anzeigen","runElapsedAria":"{{elapsed}} vergangen","runCostAria":"{{cost}} ausgegeben","pinned":{"label":"Angeheftet","marker":"Implementierungskarte — oben angeheftet","collapse":"Angeheftete Karte minimieren","expand":"Angeheftete Karte ausklappen","expandCard":"Diese Karte ausklappen","collapseCard":"Diese Karte minimieren","collapsed_one":"Implementierungskarte","collapsed_other":"{{count}} Implementierungskarten","state":{"completed":"Erledigt","no_changes":"Keine Änderungen","pr_closed":"Geschlossen","superseded":"Ersetzt","building":"Läuft","on_review":"Review","pr_draft":"Entwurfs-PR","pr_ready":"Veröffentlicht","implementation_failed":"Fehlgeschlagen","pr_failed":"Fehlgeschlagen","merged":"Gemerged","discarded":"Verworfen"}},"mergeLocal":"Lokal integrieren","mergeLocalTooltip":"Führt die gelieferten Branches lokal in {{base}} zusammen (ohne GitHub)","mergeLocalBlockedDirty":"Integration nicht möglich: Lokale Änderungen auf {{base}} überschneiden sich mit der Lieferung. Committe oder stashe diese Änderungen und versuche es erneut.","mergeLocalBlockedBranch":"Integration nicht möglich: dein Checkout steht auf {{current}}, nicht auf {{base}}. Wechsle zu {{base}} und versuche es erneut.","mergedLocally":"Lokal in {{base}} integriert","discardStackedNote":"Spätere Rails dieses Meilensteins bauen auf dieser Lieferung auf. Sie zu verwerfen pausiert die Meilenstein-Kette; die späteren Rails behalten ihre Arbeit."}`),$={heading:`Spec-Entwurf`,drafting:`Entwurf wird aktualisiert…`,acceptanceCriteria:`Akzeptanzkriterien`,untitled:`Spec ohne Titel`,expand:`Vollständige Beschreibung anzeigen`,collapse:`Beschreibung einklappen`},ee={heading:`Rahmen`,framing:`Anfrage wird eingeordnet…`,restated:`Was ich verstanden habe`,alternative:`Es könnte auch bedeuten`,pick:`Damit antworten`,touches:`Würde berühren`,discriminator:`Welches von beiden?`,assumptions:`Was ich annehme`,unknowns:`Noch offen`},te={openTicket:`Spec #{{id}} öffnen`,openPullRequest:`PR #{{id}} öffnen`,openJob:`Job {{id}} öffnen`,openLoop:`Loop {{id}} öffnen`,ticketNotFound:`Spec #{{id}} nicht gefunden — möglicherweise gelöscht`,pullRequestUrlMissing:`PR #{{id}} wurde ohne URL erwähnt`,pullRequestNotFound:`PR #{{id}} wurde in diesem Projekt nicht gefunden`,jobNotFound:`Job nicht gefunden — möglicherweise gelöscht`,loopNotFound:`Loop nicht gefunden — er wurde möglicherweise gelöscht`,lookupFailed:`Referenz konnte nicht geprüft werden — bitte erneut versuchen`},ne={untitled:`Unbenannte Mission`,menu:`Missionsmenü`,rename:`Umbenennen`,renamePlaceholder:`Name der Mission`,renameHint:`Zum Umbenennen doppelklicken`,renameFailed:`Umbenennen fehlgeschlagen`,addFavorite:`Zu Favoriten hinzufügen`,removeFavorite:`Aus Favoriten entfernen`,copyName:`Missionsname kopieren`,copyId:`Missions-ID kopieren`,copyProject:`Projektname kopieren`,copyProjectPath:`Projektpfad kopieren`,copyFailed:`Kopieren fehlgeschlagen`,copyTranscript:`Transkript kopieren`,copyTranscriptSuccess:`Transkript kopiert`,copyTranscriptFailed:`Transkript konnte nicht kopiert werden`,exportTranscript:`Transkript exportieren (.txt)`,exportTranscriptSuccess:`Transkriptexport gestartet`,exportTranscriptFailed:`Transkript konnte nicht exportiert werden`,delete:`Mission löschen`,deleteConfirm:`Diese Mission löschen? Kann nicht rückgängig gemacht werden.`,deleteFailed:`Mission konnte nicht gelöscht werden`},re=`Was sollen wir als Nächstes bauen?`,ie={title:`Ausführungsprotokoll`,live:`Live`,empty:`Noch keine Tool-Aktivität in diesem Zug.`,output:`Ausgabe`,error:`Fehler`,copyAll:`Gesamtes Protokoll kopieren`,copyEntry:`Eintrag kopieren`,copySuccess:`Protokoll in die Zwischenablage kopiert`,copyFailed:`Protokoll konnte nicht kopiert werden`,openLog:`Ausführungsprotokoll anzeigen`,close:`Schließen`},ae={open:`Logs für {{command}} anzeigen`,logsTitle:`Prozesslogs`,logsDescription:`Live-Ausgabe und gespeicherter Verlauf dieses Prozesses.`,close:`Logs schließen`,command:`Befehl`,directory:`Verzeichnis`,exitCode:`Exitcode: {{code}}`,signal:`Signal: {{signal}}`,search:`Logs durchsuchen…`,source:`Ausgabequelle`,allSources:`Alle Ausgaben`,pause:`Pausieren`,resume:`Fortsetzen`,follow:`Folgen`,copy:`Sichtbare Logs kopieren`,download:`Sichtbare Logs herunterladen`,stop:`Prozess stoppen`,stopCommand:`{{command}} stoppen`,stopFailed:`Der Prozess konnte nicht gestoppt werden. Erneut versuchen.`,truncated:`Es wird ein begrenzter Logausschnitt angezeigt. Ältere Ausgaben oder lange Zeilen können fehlen. Kopieren und Herunterladen umfassen nur diese Ansicht.`,paused:`Ansicht pausiert. Der Prozess läuft weiter.`,loadFailed:`Logs konnten nicht geladen werden. Die Aufbewahrungszeit ist möglicherweise abgelaufen; bereits geladene Ausgaben bleiben sichtbar.`,retry:`Erneut versuchen`,copied:`Sichtbare Logs kopiert.`,exportFailed:`Logs konnten nicht exportiert werden. Erneut versuchen.`,output:`Prozessausgabe`,loading:`Logs werden geladen…`,noMatches:`Keine passende Ausgabe.`,empty:`Noch keine Ausgabe.`,lineCount:`{{count}} von {{total}} Zeilen`,exportHint:`Der Export umfasst nur den aktuellen Filter und die aufbewahrte Ausgabe.`,status:{starting:`Startet`,running:`Läuft`,stopping:`Wird gestoppt`,exited:`Beendet`,killed:`Gestoppt`,failed:`Fehlgeschlagen`,interrupted:`Getrennt`},repository:`Repository`,history:{button:`Prozesse`,title:`Prozesse der Mission`,open:`Prozessverlauf anzeigen`,description:`Aktive Prozesse und gespeicherte Protokolle früherer Ausführungen anzeigen.`,search:`Befehl oder Repository suchen…`,refresh:`Verlauf aktualisieren`,close:`Prozessverlauf schließen`,back:`Zurück zu den Prozessen`,loading:`Prozessverlauf wird geladen…`,empty:`Für diese Mission wurden noch keine Prozesse erfasst.`,noMatches:`Keine passenden Prozesse.`,loadFailed:`Der Prozessverlauf konnte nicht geladen werden. Bereits geladene Einträge bleiben verfügbar.`,showMore:`Mehr anzeigen`,count:`Prozesse: {{count}}`},interruptedHint:`Specrails überwacht diesen Prozess nicht mehr. Sein Zustand im Betriebssystem ist unbekannt; gespeicherte Protokolle bleiben verfügbar.`,persistenceFailed:`Der Prozessverlauf konnte nicht gespeichert werden. Die verfügbare Ausgabe bleibt sichtbar.`},oe={detach:`In eigenem Fenster öffnen`,attach:`Zurück ins Hauptfenster`,detached:`Diese Mission ist in einem anderen Fenster geöffnet.`,focus:`Missionsfenster anzeigen`,loading:`Mission wird verschoben…`,failed:`Die Mission konnte nicht verschoben werden. Dein Entwurf bleibt erhalten.`,dismiss:`Schließen`,wrongMission:`Öffne diese Mission, bevor du sie verschiebst.`,finishPending:`Beende den laufenden Vorgang oder speichere oder verwirf die Nachricht oder Aufnahme, bevor du die Mission verschiebst.`},se={heading:`Rail-Start`,rail:`Rail {{index}}`,newRail:`Neuer Rail`,play:`Play`,launching:`Wird gestartet…`,dismiss:`Verwerfen`,playHint:`Passe alles nach Bedarf an und drücke dann Play, um den Start unter deiner eigenen Verantwortung auszulösen.`,pending:`Startvorschlag wird vorbereitet…`,unreadable_one:`Der Startvorschlag des Agenten konnte nicht gelesen werden.`,unreadable_other:`{{count}} Startvorschläge konnten nicht gelesen werden.`,pinnedMarker:`Startvorschlag über dem Composer angeheftet`,effortDefault:`Standard-Aufwand`,profileNone:`Kein Profil`,status:{proposal:`Vorschlag`,ready:`Bereit`,blocked:`Aufmerksamkeit nötig`,loading:`Wird geprüft…`},availability:{free:`frei`,busy:`in Ausführung`,pending_decision:`wartet auf eine Entscheidung`,on_review:`in Review`},fields:{rail:`Rail`,newRailName:`Name des neuen Rails (optional)`,railName:`Rail-Name`,addSpec:`Spec hinzufügen`,removeSpec:`#{{id}} entfernen`,loop:`Loop`,engine:`KI-Engine`,model:`Modell`,effort:`Reasoning-Aufwand`,profile:`Agentenprofil`,targetPr:`Ziel-PR #`,baseBranch:`Basis-Branch`},notes:{railMissing:`Rail {{index}} existiert nicht mehr — wähle einen anderen Rail oder erstelle einen.`,railBusy:`Rail {{index}} ist {{state}} — ein Start dort ist blockiert.`,useFree:`Rail {{index}} verwenden`,specsDropped:`Nicht mehr in diesem Projekt: {{ids}}`,engineStale:`{{engine}} wurde auf diesem Rechner nicht erkannt — {{fallback}} wird verwendet.`,modelStale:`{{model}} ist nicht verfügbar — {{fallback}} wird verwendet.`},block:{noProject:`Diese Mission ist an kein Projekt angeheftet.`,loadFailed:`Die Rails des Projekts konnten nicht geladen werden.`,noSpecs:`Füge mindestens eine Spec hinzu, um zu starten.`,railLimit:`Alle {{max}} Rails existieren bereits und keiner ist frei.`},errors:{tickets_in_flight:`Eine dieser Specs läuft bereits auf einem anderen Rail.`,pr_decision_pending:`Dieser Rail wartet auf eine PR-Entscheidung.`,rail_limit_reached:`Das Projekt hat bereits die maximale Anzahl an Rails.`,invalid_base_branch:`Dieser Basis-Branch existiert lokal nicht.`,base_branch_requires_isolation:`Ein Basis-Branch benötigt Worktree-Isolation (ein Git-Repository mit Commits).`,target_pr_requires_pr_mode:`Ein Ziel-PR benötigt Worktree-Isolation (ein Git-Repository mit Commits).`,invalid_response:`Unerwartete Antwort vom Server.`},stub:{launched:`Gestartet → Rail {{rail}}`,dismissed:`Vorschlag verworfen`,viewRun:`Run anzeigen`,goToCard:`Zur Karte`,goToCardTitle:`Zur Implementierungskarte dieses Starts springen`,viewRunTitle:`Das Live-Log des Runs öffnen`}},ce={status:{running:`Läuft`,paused:`Pausiert`,succeeded:`Erfolgreich`,failed:`Fehlgeschlagen`,stalled:`Festgefahren`,cancelled:`Abgebrochen`,unknown:`Unbekannt`},title:{running:`Implementierung im Projekt-Checkout…`,paused:`Menschliche Entscheidung erforderlich`,succeeded:`Implementierung abgeschlossen`,failed:`Implementierung fehlgeschlagen`,stalled:`Implementierung festgefahren`,cancelled:`Run abgebrochen`,unknown:`Run-Status unbekannt`},noDeliveryNote:`Keine PR-Phase — dieses Projekt hat kein Git-Repository und keine Commits, daher wurde die Arbeit direkt im Projektordner abgelegt.`,noDeliveryHint:`Läuft direkt im Projektordner (kein Git-Repository und keine Commits — es wird kein PR vorgeschlagen).`,failure:{title:`Warum es gestoppt hat`,step:`Schritt {{step}}`,unit:`#{{ticket}} · {{code}}`},actions:{resume:`Fortsetzen`,approve:`Genehmigen`,recover:`Wiederherstellen und erneut versuchen`,relaunch:`Neu starten`},relaunchSent:`Rail {{index}} neu gestartet — eine neue Karte folgt dem Run.`,relaunchFailed:`Der Rail konnte nicht neu gestartet werden`,relaunchBlockedActive:`Der Rail hat noch einen aktiven Run`},le={marker:`Rail {{rail}} fehlgeschlagen: {{code}}`,openCard:`Karte öffnen`,briefing:{title:`Automatischer Fehlerbericht`}},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=`Missionszentrale`,t=`Specrails per Chat bedienen`,n=`Missionszentrale`,r=`Bitte den Agenten um alles…`,i=`Senden`,a=`Stopp`,o=`Kopieren`,s={openPreview:`{{name}} anzeigen`,openDownload:`{{name}} herunterladen`,previewTitle:`Vorschau von {{name}}`,downloadTitle:`Datei herunterladen?`,downloadPrompt:`Diese Datei kann hier nicht in der Vorschau angezeigt werden. Möchtest du sie herunterladen?`,download:`Herunterladen`,cancelDownload:`Jetzt nicht`,loading:`Datei wird vorbereitet…`,loadFailed:`Anhang konnte nicht geladen werden`,loadError:`Anhang konnte nicht geladen werden: {{error}}`},c=`Maximieren`,l=`Wiederherstellen`,u=`Minimieren`,d=`Schließen`,f=`Neue Mission`,p=`Wie lautet die Mission?`,m=`Wähle ein Projekt und frag dann. Das Board aktualisiert sich live, während der Agent arbeitet.`,h=`Denkt nach…`,g=`Verbinden…`,_=`App wird abgefragt…`,v={compact:`Kompakt`,comfortable:`Komfortabel`,max:`Maximieren`},y={label:`Modell`,loading:`Modelle werden geladen…`,unavailable:`Modelle nicht verfügbar`},b={hint:`Verlauf durchsuchen — tippen zum Bearbeiten, ↑↓ zum Navigieren`},x={queued:`In Warteschlange`,send:`Nachricht senden`,sendHint:`Für den nächsten Durchlauf vormerken. Mit „Steuern“ an einer wartenden Nachricht sendest du sie, ohne das Modell zu unterbrechen.`,placeholder:`Nachricht zur Warteschlange hinzufügen…`,delivered:`An Agent übergeben`,interrupted:`Übergabe unbestätigt`,cancelled:`Vor Übergabe abgebrochen`,steer:`Steuern`,steerHint:`Senden, ohne das Modell zu unterbrechen`,steering:`Wird an Agent gesendet…`,remove:`Nachricht aus Warteschlange löschen`,more:`Nachrichtenoptionen`,edit:`Bearbeiten`,actionConflict:`Diese Nachricht wird bereits übergeben oder ist nicht mehr in der Warteschlange.`,actionFailed:`Die wartende Nachricht konnte nicht aktualisiert werden. Versuche es erneut.`},S={sent:`An Agent gesendet`,received:`An Agent übergeben`,read:`Vom Agenten gelesen`,interrupted:`Übergabe unbestätigt`,cancelled:`Vor Übergabe abgebrochen`},C={editing:`Ausstehende Nachricht {{n}} von {{m}} bearbeiten`,hint:`↑↓ zum Navigieren · Enter speichert · Esc bricht ab`,save:`Ausstehende Nachricht speichern`,cancel:`Bearbeitung abbrechen`,dispatched:`Diese Nachricht wurde bereits übergeben; dein Text bleibt als Entwurf erhalten`,saveFailed:`Die ausstehende Nachricht konnte nicht gespeichert werden`},w={branch:`Branch`,detached:`(detached)`,dirty:`Nicht committete Änderungen`,switched:`Zu {{branch}} gewechselt`,switchFailed:`Branch-Wechsel fehlgeschlagen`,lockedWhileWorking:`Branch gesperrt, während der Agent arbeitet`,searchPlaceholder:`Branches durchsuchen…`,noMatches:`Keine passenden Branches`,worktrees:`Worktrees`,worktreePathCopied:`Worktree-Pfad kopiert`,copyWorktreePath:`Worktree-Pfad kopieren`,repository:`Repository`,repositoryUnavailable:`Repository nicht verfügbar`,loadFailed:`Git-Status nicht verfügbar`,notGit:`Kontextordner · ohne Git`,retry:`Erneut versuchen`},T={label:`Anbieter`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},E={cycleHint:`⇧⇥ zum Wechseln`,observe:{name:`Beobachten`,desc:`Nur lesen — nichts ändert sich`},edit:{name:`Bearbeiten`,desc:`Erstellen und bearbeiten (umkehrbar)`},operate:{name:`Ausführen`,desc:`KI starten — kostet Geld`},autonomous:{name:`Autonom`,desc:`Löschen und beenden — unumkehrbar`},lockedTitle:`Höhere Stufe erforderlich`,lockedBody:`Diese Aktion erfordert die Stufe „{{level}}“. Du bist auf „{{current}}“.`,raiseHint:`⇧⇥ um die Stufe zu erhöhen, oder frag anders.`},D={title:`Aktion bestätigen`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`Genehmigen`,cancel:`Abbrechen`,dontAskAgain:`In dieser Sitzung nicht mehr fragen`,approved:`Genehmigt`,cancelled:`Abgebrochen`},O={home:`Start`,searchPlaceholder:`Mit Specrails sprechen…`,searchProjectsPlaceholder:`Projekte suchen…`,recents:`Zuletzt verwendet`,allProjects:`Alle Projekte`,searchAll:`In allen Projekten suchen`,addProject:`Projekt hinzufügen…`,homeHint:`Kein Projekt ausgewählt — über alle Projekte hinweg.`,askCreateOrSearch:`Es ist kein Projekt ausgewählt. Möchtest du ein neues Projekt erstellen oder über alle Projekte hinweg suchen?`},k={remove:`{{label}} entfernen`,addContextAction:`Kontext oder Aktion hinzufügen`,filtering:`Filtere "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`Keine Treffer`,noMatchesFor:`Keine Treffer für "{{query}}"`,mode:{reference:{title:`Referenz`,hint:`@ Projekte, Specs, Missionen`},trace:{title:`Trace`,hint:`# Jobs, Läufe, IDs`},action:{title:`Aktion`,hint:`/ Befehle für diesen Kontext`}},plus:{reference:`Referenz`,referenceHint:`Projekte, Specs, Missionen`,trace:`Trace`,traceHint:`Jobs, Läufe, IDs`,action:`Aktion`,actionHint:`Erstellen, starten, prüfen`,fileAttachment:`Dateianhang`,fileAttachmentHint:`Docs, Bilder, Logs hinzufügen`,browserCapture:`Browser-Aufnahme`,browserCaptureHint:`Einen Seitenbereich für diese Mission erfassen`},railGroup:`Rails`,railGroupInUse:`Rails in Verwendung`},A={label:`Mission wechseln`,untitled:`Neue Mission`,new:`Neue Mission`,searchPlaceholder:`Missionen durchsuchen…`,noMatches:`Keine Mission gefunden`,working:`Agent arbeitet`,queuedBadge:`{{n}} in Warteschlange`,delete:`Mission "{{title}}" löschen`,deleteConfirm:`Löschen?`,deleteLiveConfirm:`Der Agent arbeitet — trotzdem löschen?`,confirmDelete:`Löschen bestätigen`,cancelDelete:`Mission behalten`,deleteFailed:`Mission konnte nicht gelöscht werden`},j={title:`Kein KI-Anbieter installiert`,body:`Der Agent benötigt Claude, Codex, Gemini oder Kimi auf deinem Rechner. Installiere einen und öffne den Agenten erneut, um zu chatten.`,placeholder:`Installiere einen KI-Anbieter, um den Agenten zu nutzen…`},M={title:`Specrails MCP ist aus`,body:`Der Agent braucht den eingebetteten MCP-Server, um die App zu bedienen.`,enable:`Specrails MCP aktivieren`,enabling:`Wird aktiviert…`,enabled:`MCP aktiviert`},N={live:`live`,queued:`in Warteschlange`,running:`läuft`,done:`fertig`,failed:`fehlgeschlagen`},P={generic:`Etwas ist schiefgelaufen. Versuch es erneut.`,busy:`Der Agent ist beschäftigt. Versuch es gleich noch einmal.`},F={kindAgent:`Agenten-Mission`},I=`Neue Mission`,L=`Zur Missionszentrale wechseln`,R=`Zum Board wechseln`,z=`Suchen`,B=`Start`,V=`Lieblingsmissionen`,H=`Ohne Titel`,U={title:`Im Workspace`,terminal:`Terminal`,files:`Dateien`,browser:`Browser`,requiresProject:`Wähle ein Projekt, um dieses Tool zu nutzen`,resizeCode:`Code-Bereich anpassen`,closeFiles:`Code schließen`,browserConfirm:`Zum Agenten hinzufügen`,browserSelectStart:`Auswählen, um zur Mission hinzuzufügen`,browserCaptured:`Aufnahme hinzugefügt`,uploadFailed:`Upload fehlgeschlagen`,requiresConversation:`Starte eine Mission, um dieses Werkzeug zu nutzen`,jobs:`Jobs`,closeJobs:`Jobs schließen`,resizeJobs:`Jobs-Bereich anpassen`,noJobs:`Noch keine Jobs — bitte den Agenten, einen zu starten`,analytics:`Analytics`,closeAnalytics:`Analytics schließen`,resizeAnalytics:`Analytics-Bereich anpassen`},W=`Datei anhängen`,G=`„{{title}}“ löschen`,K=`Löschen von „{{title}}“ bestätigen`,q=`„{{title}}“ zu Favoriten hinzufügen`,J=`„{{title}}“ aus Favoriten entfernen`,Y=`bestätigen?`,X=`Dieser Anbieter kann noch keine Bilder lesen — hänge stattdessen Textdateien an`,Z={label:`Aufwand`,minimal:`Minimal`,low:`Niedrig`,medium:`Mittel`,high:`Hoch`,xhigh:`Sehr hoch`,max:`Maximal`,ultra:`Ultra`},Q=JSON.parse(`{"operation":{"inProgress":"Aktion läuft…","create-pr":"PR wird erstellt…","publish":"Wird veröffentlicht…","discard":"Wird verworfen…","dismiss":"Fortsetzung wird geschlossen…","poll-merge":"Merge wird geprüft…","reopen":"Wird erneut geöffnet…","merge-local":"Wird lokal integriert…","recover-and-retry":"Gesichertes Ergebnis wird committet und erneut gepusht…","acknowledge-no-changes":"Wird als erledigt markiert…"},"markDone":"Als erledigt markieren","refine":"Verfeinern","completedNote":"Bestätigt — Specs nach Erledigt verschoben","partialSummary":"{{succeeded}} von {{total}} abgeschlossen; {{failed}} fehlgeschlagen","unit":{"failed":"Implementierung fehlgeschlagen","blocked":"Bereitstellung blockiert","noChanges":"keine Änderungen","succeeded":"bereit"},"rail":"Rail {{index}}","specCount_one":"{{count}} Spec","specCount_other":"{{count}} Specs","base":"Basis-Branch","openPr":"PR öffnen","existingPr":"Bestehender PR","title":{"no_changes":"Keine Änderungen erforderlich","partial":"Teilweise implementiert","delivery_blocked":"Implementierung abgeschlossen — Bereitstellung erfordert Aufmerksamkeit","update_failed":"Implementierung abgeschlossen — Aktualisierung fehlgeschlagen","pr_closed":"PR ohne Merge geschlossen","superseded":"Durch einen neueren Lauf ersetzt","existing_pr_updated":"Bestehender PR aktualisiert","building":"Implementierung in einem isolierten Worktree…","buildingExistingPr":"Änderungen werden auf einen bestehenden PR angewendet…","paused":"Benötigt eine menschliche Entscheidung","on_review":"Implementierung bereit zur Prüfung","pr_draft":"Entwurfs-PR erstellt","pr_draft_degraded":"PR-Auslieferung unvollständig","pr_ready":"PR bereit zum Merge","implementation_failed":"Implementierung fehlgeschlagen","pr_failed":"PR-Erstellung fehlgeschlagen","merged":"PR gemergt","discarded":"Verworfen"},"buildingHint":"Nach Abschluss wirst du gefragt, ob der PR erstellt werden soll.","buildingExistingPrHint":"Specrails arbeitet auf dem Branch des bestehenden PRs und pusht die Review-Änderungen zurück in denselben PR.","paused":"Implementierung pausiert","pausedForRun":"Pausiert bei {{ref}}","resume":"Fortsetzen","stopExecution":"Ausführung stoppen","stopExecutionSent":"Stoppsignal gesendet","stopExecutionFailed":"Ausführung konnte nicht gestoppt werden","createPr":"PR erstellen","publish":"Veröffentlichen","checkout":"Branch auschecken","openReview":"Prüfen","openReviewTooltip":"Die Prüfung in klarer Sprache öffnen","checkoutTooltip":"Den Hauptordner des Projekts auf {{branch}} auschecken","checkoutSuccess":"{{branch}} ausgecheckt","checkoutFailed":"Die Implementierungsbranch konnte nicht ausgecheckt werden","checkoutDirtyTitle":"Checkout zum Schutz deiner Änderungen blockiert","checkoutDirtyBody":"Der Hauptordner des Projekts enthält nicht committete Änderungen. Committe oder stashe sie und versuche es erneut. Es wurde nichts verändert.","checkoutSafetyUnknownTitle":"Checkout pausiert, da die Sicherheit nicht geprüft werden konnte","checkoutSafetyUnknownBody":"Specrails konnte den Git-Status des Projekt-Hauptordners nicht lesen. Es wurde nichts freigegeben oder verändert. Versuche es erneut, sobald Git verfügbar ist.","checkoutNotDeliverableTitle":"Diese Branch enthält nicht die gesicherte Implementierung","checkoutNotDeliverableBody":"Der exakte Liefer-Commit wurde noch nicht verifiziert. Prüfe oder stelle stattdessen das lokale Ergebnis wieder her.","inspectLocalResult":"Lokales Ergebnis prüfen","inspectLocalResultTooltip":"Den gesicherten isolierten Worktree anzeigen und seinen Pfad kopieren","localResultPathCopied":"Pfad des lokalen Ergebnisses kopiert","localResultPath":"Gesichertes lokales Ergebnis","localResultUnavailableHere":"Auf diesem Computer ist kein wiederherstellbarer Worktree verfügbar. Prüfe das Run-Protokoll auf dem Computer, auf dem der Lauf ausgeführt wurde.","recoverAndRetry":"Committen und Push wiederholen","recoverAndRetryVerified":"Der wiederhergestellte Commit {{sha}} wurde im PR verifiziert","recoveryStillBlocked":"Die lokale Wiederherstellung erfordert noch Aufmerksamkeit","recheckRecovery":"Erneut prüfen","recoveryUnavailable":"Die Wiederherstellung konnte auf diesem Computer nicht verifiziert werden","recoveryUnavailableBody":"Specrails konnte in diesem Klon nicht sicher genau ein zur Lieferung gehörendes Ergebnis nachweisen. Nichts wurde geändert oder entfernt. Prüfe das Stufendetail und die Run-Protokolle. Wenn der Run auf einem anderen Computer lief, öffne Specrails dort und prüfe erneut.","recoveryDetailSummary":"Technisches Wiederherstellungsdetail","retry":"Erneut versuchen","retryPr":"PR erneut versuchen","checkMerge":"Merge prüfen","verifyPr":"PR verifizieren","discard":"Verwerfen","confirmDiscard":"Verwerfen bestätigen?","mergedNote":"Gemergt — Specs nach Fertig verschoben","discardedNote":"Verworfen — Specs zurück ins Backlog","implementationFailedNote":"Der Implementierungslauf ist fehlgeschlagen, bevor etwas Auslieferbares entstanden ist. Öffne das Run-Protokoll, um den Fehler zu prüfen, und verwirf diese Karte vor einem erneuten Start.","dismiss":"Fortsetzung schließen","discardLocalResult":"Lokales Ergebnis verwerfen","retryPush":"Push wiederholen","retryPushVerified":"Push verifiziert · Commit {{sha}} ist in der PR","commitAlreadyVerified":"Commit {{sha}} ist bereits in der PR verifiziert","deliveryCommit":"Commit {{sha}}","reopen":"Erneut öffnen","createPartialPr":"PR mit {{count}} erstellen","supersededNote":"Ein neuerer Implementierungslauf hat diese Karte ersetzt.","noChangesExisting":"Es waren keine neuen Änderungen nötig; der bestehende PR bleibt unverändert.","noChangesNote":"Es waren keine Codeänderungen nötig. Markiere die Specs als erledigt oder lege sie zur Verfeinerung zurück in den Backlog.","deliveryNeedsAttention":"Implementierung abgeschlossen; Bereitstellung erfordert Aufmerksamkeit","deliveryBlockedNote":"Die Implementierung war erfolgreich, aber die Bereitstellung ist blockiert. Prüfe Stufendetail und Protokolle, bevor du das lokale Ergebnis verwirfst.","partialDeliveryBlockedNote":"Ein Teil der Implementierung war erfolgreich, aber noch ist nichts sicher auslieferbar. Prüfe die Nachweise pro Einheit und die Protokolle, bevor du die nächste Aktion auswählst.","retryPushNote":"Die Implementierung war erfolgreich und die Änderungen sind lokal sicher. Wiederhole nur den Push.","cleanupIncomplete_one":"Bereinigung unvollständig ({{count}} Warnung)","cleanupIncomplete_other":"Bereinigung unvollständig ({{count}} Warnungen)","safetyArchiveTitle":"Sicherheitsarchiv ({{count}})","safetyArchiveHint":"Temporäre Workspace-Dateien wurden vorsichtshalber außerhalb des PR aufbewahrt. Du kannst sie prüfen oder manuell entfernen.","confirm":{"recoverAndRetryTitle":"Das gesicherte Ergebnis committen und pushen?","recoverAndRetryBody":"Specrails verwendet ausschließlich den isolierten Worktree oder den aufgezeichneten Fast-Forward-Branch für {{branch}}. Falls nötig, werden die lieferbaren Dateien committet. Anschließend wird nur dieser exakte Commit gepusht und auch nur dann, wenn der PR noch mit den erwarteten Quell- und Ziel-Branches geöffnet ist. Der Hauptordner deines Projekts und seine nicht committeten Änderungen bleiben unberührt.","recheckRecoveryTitle":"Diesen Computer erneut prüfen?","recheckRecoveryBody":"Specrails durchsucht in diesem Klon erneut den zur Lieferung gehörenden Worktree, Branch, Refs, Reflogs und verwaiste Git-Objekte für {{branch}}. Wird genau ein Ergebnis bewiesen, kann Specrails isolierte Änderungen committen und den exakten Push wiederholen. Der Hauptprojektordner bleibt unberührt.","noChangesDoneTitle":"Diese Specs als erledigt markieren?","noChangesDoneBody":"Die Implementierung hat bestätigt, dass keine Codeänderungen nötig sind. Die Specs werden nach Erledigt verschoben und der unveränderte Worktree wird bereinigt.","refineTitle":"Diese Specs verfeinern?","refineBody":"Das Ergebnis ohne Änderungen wird geschlossen und die Specs kehren zur Verfeinerung in den Backlog zurück. Die Ausführungsprotokolle bleiben verfügbar.","mergeLocalTitle":"Lokal integrieren?","mergeLocalBody":"Die gelieferten Branches werden lokal in {{base}} zusammengeführt. Vorhandene Änderungen bleiben erhalten; überlappende Änderungen müssen gegebenenfalls vor der Integration aufgelöst werden.","freshDiscardTitle":"Diese Lieferung verwerfen?","freshDiscardBody":"Der PR wird geschlossen, ohne seinen Remote-Branch zu löschen. Nur lokale Branches und Worktrees, die SpecRails gehören und noch auf dem aufgezeichneten Commit stehen, werden entfernt; alles Veränderte bleibt mit einer Warnung erhalten. Die Specs kehren in den Backlog zurück. Entfernte lokale Ressourcen können nicht wiederhergestellt werden.","implementationFailedDiscardTitle":"Diese fehlgeschlagene Lieferung verwerfen?","implementationFailedDiscardBody":"Die Karte wird geschlossen und ihre Specs kehren in den Backlog zurück. Lokale Arbeit und Branches bleiben zur Prüfung erhalten. Nur nachweislich sicher bereinigbare Ressourcen dürfen entfernt werden.","dismissTitle":"Diese Fortsetzung schließen?","dismissBody":"Diese Fortsetzungskarte wird geschlossen. Ihr zugehöriger Worktree wird nur entfernt, wenn dies weiterhin sicher ist; andernfalls bleibt er mit einer Warnung erhalten. Der bestehende PR, sein Branch und der Review-Status bleiben unverändert.","discardLocalTitle":"Lokales Ergebnis verwerfen?","discardLocalBody":"Die wiederherstellbare lokale Iteration wird nur entfernt, wenn dies weiterhin sicher ist; wurde sie verändert, bleibt sie mit einer Warnung erhalten. Ein vorhandener PR und sein Branch bleiben unverändert. Ein entferntes Ergebnis kann nicht wiederhergestellt werden."},"degraded":{"pushed":"Der Branch wurde gepusht, aber die PR konnte nicht erstellt werden — erneut versuchen, um abzuschließen.","localOnly":"Die Änderungen wurden lokal zusammengeführt, aber nicht gepusht — erneut versuchen, um die PR zu veröffentlichen."},"alreadyResolved":"Bereits anderweitig erledigt","actionFailed":"Aktion fehlgeschlagen","notMergedYet":"Noch nicht gemergt","commitMissingRetry":"Der Liefer-Commit ist nicht mehr in der PR enthalten. Der Push kann erneut versucht werden.","prVerifiedWaiting":"Commit {{sha}} verifiziert · wartet auf Merge","viewLog":"Ausführungsprotokoll für {{ref}} anzeigen","runElapsedAria":"{{elapsed}} vergangen","runCostAria":"{{cost}} ausgegeben","pinned":{"label":"Angeheftet","marker":"Implementierungskarte — oben angeheftet","collapse":"Angeheftete Karte minimieren","expand":"Angeheftete Karte ausklappen","expandCard":"Diese Karte ausklappen","collapseCard":"Diese Karte minimieren","collapsed_one":"Implementierungskarte","collapsed_other":"{{count}} Implementierungskarten","state":{"completed":"Erledigt","no_changes":"Keine Änderungen","pr_closed":"Geschlossen","superseded":"Ersetzt","building":"Läuft","on_review":"Review","pr_draft":"Entwurfs-PR","pr_ready":"Veröffentlicht","implementation_failed":"Fehlgeschlagen","pr_failed":"Fehlgeschlagen","merged":"Gemerged","discarded":"Verworfen"}},"mergeLocal":"Lokal integrieren","mergeLocalTooltip":"Führt die gelieferten Branches lokal in {{base}} zusammen (ohne GitHub)","mergeLocalBlockedDirty":"Integration nicht möglich: Lokale Änderungen auf {{base}} überschneiden sich mit der Lieferung. Committe oder stashe diese Änderungen und versuche es erneut.","mergeLocalBlockedBranch":"Integration nicht möglich: dein Checkout steht auf {{current}}, nicht auf {{base}}. Wechsle zu {{base}} und versuche es erneut.","mergedLocally":"Lokal in {{base}} integriert","discardStackedNote":"Spätere Rails dieses Meilensteins bauen auf dieser Lieferung auf. Sie zu verwerfen pausiert die Meilenstein-Kette; die späteren Rails behalten ihre Arbeit."}`),$={heading:`Spec-Entwurf`,drafting:`Entwurf wird aktualisiert…`,acceptanceCriteria:`Akzeptanzkriterien`,untitled:`Spec ohne Titel`,expand:`Vollständige Beschreibung anzeigen`,collapse:`Beschreibung einklappen`},ee={heading:`Rahmen`,framing:`Anfrage wird eingeordnet…`,restated:`Was ich verstanden habe`,alternative:`Es könnte auch bedeuten`,pick:`Damit antworten`,touches:`Würde berühren`,discriminator:`Welches von beiden?`,assumptions:`Was ich annehme`,unknowns:`Noch offen`},te={openTicket:`Spec #{{id}} öffnen`,openPullRequest:`PR #{{id}} öffnen`,openJob:`Job {{id}} öffnen`,openLoop:`Loop {{id}} öffnen`,ticketNotFound:`Spec #{{id}} nicht gefunden — möglicherweise gelöscht`,pullRequestUrlMissing:`PR #{{id}} wurde ohne URL erwähnt`,pullRequestNotFound:`PR #{{id}} wurde in diesem Projekt nicht gefunden`,jobNotFound:`Job nicht gefunden — möglicherweise gelöscht`,loopNotFound:`Loop nicht gefunden — er wurde möglicherweise gelöscht`,lookupFailed:`Referenz konnte nicht geprüft werden — bitte erneut versuchen`},ne={untitled:`Unbenannte Mission`,menu:`Missionsmenü`,rename:`Umbenennen`,renamePlaceholder:`Name der Mission`,renameHint:`Zum Umbenennen doppelklicken`,renameFailed:`Umbenennen fehlgeschlagen`,addFavorite:`Zu Favoriten hinzufügen`,removeFavorite:`Aus Favoriten entfernen`,copyName:`Missionsname kopieren`,copyId:`Missions-ID kopieren`,copyProject:`Projektname kopieren`,copyProjectPath:`Projektpfad kopieren`,copyFailed:`Kopieren fehlgeschlagen`,copyTranscript:`Transkript kopieren`,copyTranscriptSuccess:`Transkript kopiert`,copyTranscriptFailed:`Transkript konnte nicht kopiert werden`,exportTranscript:`Transkript exportieren (.txt)`,exportTranscriptSuccess:`Transkriptexport gestartet`,exportTranscriptFailed:`Transkript konnte nicht exportiert werden`,delete:`Mission löschen`,deleteConfirm:`Diese Mission löschen? Kann nicht rückgängig gemacht werden.`,deleteFailed:`Mission konnte nicht gelöscht werden`},re=`Was sollen wir als Nächstes bauen?`,ie={title:`Ausführungsprotokoll`,live:`Live`,empty:`Noch keine Tool-Aktivität in diesem Zug.`,output:`Ausgabe`,error:`Fehler`,copyAll:`Gesamtes Protokoll kopieren`,copyEntry:`Eintrag kopieren`,copySuccess:`Protokoll in die Zwischenablage kopiert`,copyFailed:`Protokoll konnte nicht kopiert werden`,openLog:`Ausführungsprotokoll anzeigen`,close:`Schließen`},ae={open:`Logs für {{command}} anzeigen`,logsTitle:`Prozesslogs`,logsDescription:`Live-Ausgabe und gespeicherter Verlauf dieses Prozesses.`,close:`Logs schließen`,command:`Befehl`,directory:`Verzeichnis`,exitCode:`Exitcode: {{code}}`,signal:`Signal: {{signal}}`,search:`Logs durchsuchen…`,source:`Ausgabequelle`,allSources:`Alle Ausgaben`,pause:`Pausieren`,resume:`Fortsetzen`,follow:`Folgen`,copy:`Sichtbare Logs kopieren`,download:`Sichtbare Logs herunterladen`,stop:`Prozess stoppen`,stopCommand:`{{command}} stoppen`,stopFailed:`Der Prozess konnte nicht gestoppt werden. Erneut versuchen.`,truncated:`Es wird ein begrenzter Logausschnitt angezeigt. Ältere Ausgaben oder lange Zeilen können fehlen. Kopieren und Herunterladen umfassen nur diese Ansicht.`,paused:`Ansicht pausiert. Der Prozess läuft weiter.`,loadFailed:`Logs konnten nicht geladen werden. Die Aufbewahrungszeit ist möglicherweise abgelaufen; bereits geladene Ausgaben bleiben sichtbar.`,retry:`Erneut versuchen`,copied:`Sichtbare Logs kopiert.`,exportFailed:`Logs konnten nicht exportiert werden. Erneut versuchen.`,output:`Prozessausgabe`,loading:`Logs werden geladen…`,noMatches:`Keine passende Ausgabe.`,empty:`Noch keine Ausgabe.`,lineCount:`{{count}} von {{total}} Zeilen`,exportHint:`Der Export umfasst nur den aktuellen Filter und die aufbewahrte Ausgabe.`,status:{starting:`Startet`,running:`Läuft`,stopping:`Wird gestoppt`,exited:`Beendet`,killed:`Gestoppt`,failed:`Fehlgeschlagen`,interrupted:`Getrennt`},repository:`Repository`,history:{button:`Prozesse`,title:`Prozesse der Mission`,open:`Prozessverlauf anzeigen`,description:`Aktive Prozesse und gespeicherte Protokolle früherer Ausführungen anzeigen.`,search:`Befehl oder Repository suchen…`,refresh:`Verlauf aktualisieren`,close:`Prozessverlauf schließen`,back:`Zurück zu den Prozessen`,loading:`Prozessverlauf wird geladen…`,empty:`Für diese Mission wurden noch keine Prozesse erfasst.`,noMatches:`Keine passenden Prozesse.`,loadFailed:`Der Prozessverlauf konnte nicht geladen werden. Bereits geladene Einträge bleiben verfügbar.`,showMore:`Mehr anzeigen`,count:`Prozesse: {{count}}`},interruptedHint:`Specrails überwacht diesen Prozess nicht mehr. Sein Zustand im Betriebssystem ist unbekannt; gespeicherte Protokolle bleiben verfügbar.`,persistenceFailed:`Der Prozessverlauf konnte nicht gespeichert werden. Die verfügbare Ausgabe bleibt sichtbar.`},oe={detach:`In eigenem Fenster öffnen`,attach:`Zurück ins Hauptfenster`,detached:`Diese Mission ist in einem anderen Fenster geöffnet.`,focus:`Missionsfenster anzeigen`,loading:`Mission wird verschoben…`,failed:`Die Mission konnte nicht verschoben werden. Dein Entwurf bleibt erhalten.`,dismiss:`Schließen`,wrongMission:`Öffne diese Mission, bevor du sie verschiebst.`,finishPending:`Beende den laufenden Vorgang oder speichere oder verwirf die Nachricht oder Aufnahme, bevor du die Mission verschiebst.`},se={heading:`Rail-Start`,rail:`Rail {{index}}`,newRail:`Neuer Rail`,play:`Play`,launching:`Wird gestartet…`,dismiss:`Verwerfen`,playHint:`Passe alles nach Bedarf an und drücke dann Play, um den Start unter deiner eigenen Verantwortung auszulösen.`,pending:`Startvorschlag wird vorbereitet…`,unreadable_one:`Der Startvorschlag des Agenten konnte nicht gelesen werden.`,unreadable_other:`{{count}} Startvorschläge konnten nicht gelesen werden.`,pinnedMarker:`Startvorschlag über dem Composer angeheftet`,effortDefault:`Standard-Aufwand`,profileNone:`Kein Profil`,status:{proposal:`Vorschlag`,ready:`Bereit`,blocked:`Aufmerksamkeit nötig`,loading:`Wird geprüft…`},availability:{free:`frei`,busy:`in Ausführung`,pending_decision:`wartet auf eine Entscheidung`,on_review:`in Review`},fields:{rail:`Rail`,newRailName:`Name des neuen Rails (optional)`,railName:`Rail-Name`,addSpec:`Spec hinzufügen`,removeSpec:`#{{id}} entfernen`,loop:`Loop`,engine:`KI-Engine`,model:`Modell`,effort:`Reasoning-Aufwand`,profile:`Agentenprofil`,targetPr:`Ziel-PR #`,baseBranch:`Basis-Branch`},notes:{railMissing:`Rail {{index}} existiert nicht mehr — wähle einen anderen Rail oder erstelle einen.`,railBusy:`Rail {{index}} ist {{state}} — ein Start dort ist blockiert.`,useFree:`Rail {{index}} verwenden`,specsDropped:`Nicht mehr in diesem Projekt: {{ids}}`,engineStale:`{{engine}} wurde auf diesem Rechner nicht erkannt — {{fallback}} wird verwendet.`,modelStale:`{{model}} ist nicht verfügbar — {{fallback}} wird verwendet.`},block:{noProject:`Diese Mission ist an kein Projekt angeheftet.`,loadFailed:`Die Rails des Projekts konnten nicht geladen werden.`,noSpecs:`Füge mindestens eine Spec hinzu, um zu starten.`,railLimit:`Alle {{max}} Rails existieren bereits und keiner ist frei.`},errors:{tickets_in_flight:`Eine dieser Specs läuft bereits auf einem anderen Rail.`,pr_decision_pending:`Dieser Rail wartet auf eine PR-Entscheidung.`,rail_limit_reached:`Das Projekt hat bereits die maximale Anzahl an Rails.`,invalid_base_branch:`Dieser Basis-Branch existiert lokal nicht.`,base_branch_requires_isolation:`Ein Basis-Branch benötigt Worktree-Isolation (ein Git-Repository mit Commits).`,target_pr_requires_pr_mode:`Ein Ziel-PR benötigt Worktree-Isolation (ein Git-Repository mit Commits).`,invalid_response:`Unerwartete Antwort vom Server.`},stub:{launched:`Gestartet → Rail {{rail}}`,dismissed:`Vorschlag verworfen`,viewRun:`Run anzeigen`,goToCard:`Zur Karte`,goToCardTitle:`Zur Implementierungskarte dieses Starts springen`,viewRunTitle:`Das Live-Log des Runs öffnen`},followUp:{title:`{{count}} Review-Kommentar(e) der PR beheben`,excluded:`Nicht ändern`,verification:`Prüfen`,specUntouched:`Spec und Jira-Beschreibung werden nicht bearbeitet – der Umfang reist mit dem Lauf.`,source:{pasted:`eingefügt`,github:`aus GitHub`}}},ce={status:{running:`Läuft`,paused:`Pausiert`,succeeded:`Erfolgreich`,failed:`Fehlgeschlagen`,stalled:`Festgefahren`,cancelled:`Abgebrochen`,unknown:`Unbekannt`},title:{running:`Implementierung im Projekt-Checkout…`,paused:`Menschliche Entscheidung erforderlich`,succeeded:`Implementierung abgeschlossen`,failed:`Implementierung fehlgeschlagen`,stalled:`Implementierung festgefahren`,cancelled:`Run abgebrochen`,unknown:`Run-Status unbekannt`},noDeliveryNote:`Keine PR-Phase — dieses Projekt hat kein Git-Repository und keine Commits, daher wurde die Arbeit direkt im Projektordner abgelegt.`,noDeliveryHint:`Läuft direkt im Projektordner (kein Git-Repository und keine Commits — es wird kein PR vorgeschlagen).`,failure:{title:`Warum es gestoppt hat`,step:`Schritt {{step}}`,unit:`#{{ticket}} · {{code}}`},actions:{resume:`Fortsetzen`,approve:`Genehmigen`,recover:`Wiederherstellen und erneut versuchen`,relaunch:`Neu starten`},relaunchSent:`Rail {{index}} neu gestartet — eine neue Karte folgt dem Run.`,relaunchFailed:`Der Rail konnte nicht neu gestartet werden`,relaunchBlockedActive:`Der Rail hat noch einen aktiven Run`},le={marker:`Rail {{rail}} fehlgeschlagen: {{code}}`,openCard:`Karte öffnen`,briefing:{title:`Automatischer Fehlerbericht`}},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=`任务中心`,t=`通过对话操作 Specrails`,n=`任务中心`,r=`让智能体做任何事…`,i=`发送`,a=`停止`,o=`复制`,s={openPreview:`预览 {{name}}`,openDownload:`下载 {{name}}`,previewTitle:`{{name}} 预览`,downloadTitle:`下载文件?`,downloadPrompt:`此文件无法在此处预览。要下载它吗?`,download:`下载`,cancelDownload:`暂不`,loading:`正在准备文件…`,loadFailed:`无法加载附件`,loadError:`无法加载附件:{{error}}`},c=`最大化`,l=`还原`,u=`最小化`,d=`关闭`,f=`新任务`,p=`这次的任务是什么?`,m=`先选择一个项目,然后提问。智能体工作时看板会实时更新。`,h=`思考中…`,g=`连接中…`,_=`正在查询应用…`,v={compact:`紧凑`,comfortable:`舒适`,max:`最大化`},y={label:`模型`,loading:`正在加载模型…`,unavailable:`模型不可用`},b={hint:`浏览提示历史 — 输入以编辑,↑↓ 导航`},x={queued:`已排队`,send:`发送消息`,sendHint:`排队等待下一轮。点击队列中消息的“调整方向”,即可在不中断模型的情况下发送。`,placeholder:`向队列添加消息…`,delivered:`已送达智能体`,interrupted:`送达未确认`,cancelled:`送达前取消`,steer:`调整方向`,steerHint:`在不中断模型的情况下发送`,steering:`正在发送给智能体…`,remove:`删除队列中的消息`,more:`消息选项`,edit:`编辑`,actionConflict:`该消息正在送达或已不在队列中。`,actionFailed:`无法更新队列中的消息,请重试。`},S={sent:`已发送给智能体`,received:`已送达智能体`,read:`智能体已读`,interrupted:`送达未确认`,cancelled:`送达前取消`},C={editing:`正在编辑第 {{n}} 条待送达消息,共 {{m}} 条`,hint:`↑↓ 导航 · 回车保存 · Esc 取消`,save:`保存待送达消息`,cancel:`取消编辑`,dispatched:`该消息已送达;你的文本已保留为草稿`,saveFailed:`无法保存待送达消息`},w={branch:`分支`,detached:`(分离头指针)`,dirty:`有未提交的更改`,switched:`已切换到 {{branch}}`,switchFailed:`无法切换分支`,lockedWhileWorking:`智能体工作时分支已锁定`,searchPlaceholder:`搜索分支…`,noMatches:`没有匹配的分支`,worktrees:`工作树`,worktreePathCopied:`已复制工作树路径`,copyWorktreePath:`复制工作树路径`,repository:`仓库`,repositoryUnavailable:`仓库不可用`,loadFailed:`Git 状态不可用`,notGit:`上下文文件夹 · 无 Git`,retry:`重试`},T={label:`提供方`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},E={cycleHint:`⇧⇥ 切换`,observe:{name:`观察`,desc:`只读 — 不做任何更改`},edit:{name:`编辑`,desc:`创建和编辑(可撤销)`},operate:{name:`操作`,desc:`启动 AI — 会产生费用`},autonomous:{name:`自主`,desc:`删除和终止 — 不可逆`},lockedTitle:`需要更高的级别`,lockedBody:`该操作需要「{{level}}」级别。你当前处于「{{current}}」。`,raiseHint:`⇧⇥ 提升级别,或换一种方式询问。`},D={title:`确认操作`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`批准`,cancel:`取消`,dontAskAgain:`本次会话不再询问`,approved:`已批准`,cancelled:`已取消`},O={home:`主页`,searchPlaceholder:`与 Specrails 对话…`,searchProjectsPlaceholder:`搜索项目…`,recents:`最近`,allProjects:`所有项目`,searchAll:`在所有项目中搜索`,addProject:`添加项目…`,homeHint:`未选择项目 — 正在跨所有项目操作。`,askCreateOrSearch:`未选择任何项目。你想创建一个新项目,还是在所有项目中搜索?`},k={remove:`移除 {{label}}`,addContextAction:`添加上下文或操作`,filtering:`筛选 "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`无匹配结果`,noMatchesFor:`没有 "{{query}}" 的匹配结果`,mode:{reference:{title:`引用`,hint:`@ 项目、规格、任务`},trace:{title:`追踪`,hint:`# 作业、运行、ID`},action:{title:`操作`,hint:`/ 此上下文的命令`}},plus:{reference:`引用`,referenceHint:`项目、规格、任务`,trace:`追踪`,traceHint:`作业、运行、ID`,action:`操作`,actionHint:`创建、启动、检查`,fileAttachment:`文件附件`,fileAttachmentHint:`添加文档、图片、日志`,browserCapture:`浏览器捕获`,browserCaptureHint:`捕获页面区域并添加到此任务`},railGroup:`Rail`,railGroupInUse:`使用中的 Rail`},A={label:`切换任务`,untitled:`新任务`,new:`新任务`,searchPlaceholder:`搜索任务…`,noMatches:`没有匹配的任务`,working:`代理正在工作`,queuedBadge:`{{n}} 条排队`,delete:`删除任务 "{{title}}"`,deleteConfirm:`删除?`,deleteLiveConfirm:`代理正在工作 — 仍要删除?`,confirmDelete:`确认删除`,cancelDelete:`保留任务`,deleteFailed:`无法删除任务`},j={title:`未安装 AI 提供方`,body:`智能体需要在你的机器上安装 Claude、Codex、Gemini 或 Kimi。安装其中之一后重新打开智能体即可开始对话。`,placeholder:`请安装 AI 提供方以使用智能体…`},M={title:`Specrails MCP 已关闭`,body:`智能体需要内置的 MCP 服务器来操作应用。`,enable:`启用 Specrails MCP`,enabling:`正在启用…`,enabled:`MCP 已启用`},N={live:`实时`,queued:`排队中`,running:`运行中`,done:`已完成`,failed:`失败`},P={generic:`出了点问题。请重试。`,busy:`智能体正忙。请稍后重试。`},F={kindAgent:`智能体任务`},I=`新任务`,L=`切换到任务中心`,R=`切换到看板`,z=`搜索`,B=`主页`,V=`收藏任务`,H=`未命名`,U={title:`工作区`,terminal:`终端`,files:`文件`,browser:`浏览器`,requiresProject:`请选择一个项目以使用此工具`,resizeCode:`调整代码面板`,closeFiles:`关闭代码`,browserConfirm:`添加到智能体`,browserSelectStart:`选择以添加到任务`,browserCaptured:`已添加捕获`,uploadFailed:`上传失败`,requiresConversation:`启动任务后才能使用此工具`,jobs:`作业`,closeJobs:`关闭作业`,resizeJobs:`调整作业面板大小`,noJobs:`还没有作业——让智能体启动一个吧`,analytics:`分析`,closeAnalytics:`关闭分析`,resizeAnalytics:`调整分析面板大小`},W=`附加文件`,G=`删除「{{title}}」`,K=`确认删除「{{title}}」`,q=`将「{{title}}」添加到收藏`,J=`从收藏中移除「{{title}}」`,Y=`确认?`,X=`该提供商暂不支持读取图片 — 请附加文本文件`,Z={label:`推理强度`,minimal:`最小`,low:`低`,medium:`中`,high:`高`,xhigh:`极高`,max:`最大`,ultra:`超级`},Q={operation:{inProgress:`操作进行中…`,"create-pr":`正在创建 PR…`,publish:`正在发布…`,discard:`正在丢弃…`,dismiss:`正在关闭后续任务…`,"poll-merge":`正在检查合并…`,reopen:`正在重新打开…`,"merge-local":`正在本地集成…`,"recover-and-retry":`正在提交并重新推送已保留的结果…`,"acknowledge-no-changes":`正在标记完成…`},markDone:`标记为完成`,refine:`细化`,completedNote:`已确认 — spec 已移至完成`,partialSummary:`{{total}} 个中 {{succeeded}} 个完成,{{failed}} 个失败`,unit:{failed:`实现失败`,blocked:`交付受阻`,noChanges:`无更改`,succeeded:`已就绪`},rail:`Rail {{index}}`,specCount_one:`{{count}} 个 Spec`,specCount_other:`{{count}} 个 Spec`,base:`基础分支`,openPr:`打开 PR`,existingPr:`现有 PR`,title:{no_changes:`无需更改`,partial:`部分实现完成`,delivery_blocked:`实现完成 — 交付需要处理`,update_failed:`实现完成 — 更新失败`,pr_closed:`PR 已关闭但未合并`,superseded:`已被较新的运行取代`,existing_pr_updated:`现有 PR 已更新`,building:`正在隔离的 worktree 中实现…`,buildingExistingPr:`正在向现有 PR 应用更改…`,paused:`需要人工决策`,on_review:`实现已完成,待评审`,pr_draft:`已创建草稿 PR`,pr_draft_degraded:`PR 交付未完成`,pr_ready:`PR 已就绪,可合并`,implementation_failed:`实现失败`,pr_failed:`PR 创建失败`,merged:`PR 已合并`,discarded:`已丢弃`},buildingHint:`完成后会询问你是否创建 PR。`,buildingExistingPrHint:`Specrails 正在现有 PR 的分支上工作,并会把 review 更改推送回同一个 PR。`,paused:`实现已暂停`,pausedForRun:`在 {{ref}} 暂停`,resume:`继续`,stopExecution:`停止执行`,stopExecutionSent:`已发送停止信号`,stopExecutionFailed:`无法停止执行`,createPr:`创建 PR`,publish:`发布`,checkout:`检出分支`,openReview:`审阅`,openReviewTooltip:`打开通俗语言的审阅`,checkoutTooltip:`在项目主目录检出 {{branch}}`,checkoutSuccess:`已检出 {{branch}}`,checkoutFailed:`无法检出实现分支`,checkoutDirtyTitle:`为保护你的更改,已阻止检出`,checkoutDirtyBody:`项目主目录中有未提交的更改。请先提交或暂存这些更改,然后重试。本次操作没有修改任何内容。`,checkoutSafetyUnknownTitle:`无法验证安全状态,已暂停检出`,checkoutSafetyUnknownBody:`Specrails 无法读取项目主目录的 Git 状态。没有释放或修改任何内容。请在 Git 恢复可用后重试。`,checkoutNotDeliverableTitle:`此分支不包含保留的实现`,checkoutNotDeliverableBody:`尚未验证本次交付的精确提交。请改为检查或恢复本地结果。`,inspectLocalResult:`检查本地结果`,inspectLocalResultTooltip:`显示已保留的隔离 worktree 并复制其路径`,localResultPathCopied:`已复制本地结果路径`,localResultPath:`已保留的本地结果`,localResultUnavailableHere:`此电脑上没有可恢复的 worktree。请在运行该任务的电脑上查看运行日志。`,recoverAndRetry:`提交并重试推送`,recoverAndRetryVerified:`已恢复的提交 {{sha}} 已在 PR 中验证`,recoveryStillBlocked:`本地恢复仍需处理`,recheckRecovery:`再次检查`,recoveryUnavailable:`无法在此计算机上验证恢复结果`,recoveryUnavailableBody:`Specrails 无法在此克隆中安全证明唯一一个属于此次交付的结果。没有更改或删除任何内容。请检查阶段详情和运行日志。如果 run 在另一台计算机上执行,请在那里打开 Specrails,然后再次检查。`,recoveryDetailSummary:`恢复技术详情`,retry:`重试`,retryPr:`重试 PR`,checkMerge:`检查合并`,verifyPr:`验证 PR`,discard:`丢弃`,confirmDiscard:`确认丢弃?`,mergedNote:`已合并 — Spec 已移至完成`,discardedNote:`已丢弃 — Spec 已退回待办`,implementationFailedNote:`实现运行在生成可交付内容前失败。请打开运行日志查看失败原因,然后在重新启动前丢弃此卡片。`,dismiss:`关闭后续任务`,discardLocalResult:`丢弃本地结果`,retryPush:`重试推送`,retryPushVerified:`推送已验证 · 提交 {{sha}} 已在 PR 中`,commitAlreadyVerified:`提交 {{sha}} 已在 PR 中验证`,deliveryCommit:`提交 {{sha}}`,reopen:`重新打开`,createPartialPr:`用 {{count}} 个结果创建 PR`,supersededNote:`较新的实现运行已取代此卡片。`,noChangesExisting:`无需新的更改;现有 PR 保持不变。`,noChangesNote:`无需更改代码。请将 spec 标记为完成,或退回待办列表继续细化。`,deliveryNeedsAttention:`实现完成;交付需要处理`,deliveryBlockedNote:`实现已成功,但交付受阻。丢弃本地结果前,请查看阶段详情和运行日志。`,partialDeliveryBlockedNote:`部分实现已成功,但目前还没有可安全交付的内容。在选择下一步操作前,请查看各单元的结果和运行日志。`,retryPushNote:`实现已成功,更改安全保存在本地。请仅重试推送。`,cleanupIncomplete_one:`清理未完成({{count}} 条警告)`,cleanupIncomplete_other:`清理未完成({{count}} 条警告)`,safetyArchiveTitle:`安全存档({{count}})`,safetyArchiveHint:`为安全起见,临时工作区文件已保存在 PR 之外。你可以检查或手动删除它们。`,confirm:{recoverAndRetryTitle:`提交并推送已保留的结果?`,recoverAndRetryBody:`Specrails 只会使用 {{branch}} 对应的隔离 worktree 或已记录且可快进的分支。必要时,它会提交可交付文件;仅当 PR 仍以预期的源分支和目标分支保持打开状态时,才会推送这个精确提交。不会触碰项目主目录及其中尚未提交的更改。`,recheckRecoveryTitle:`再次检查此计算机?`,recheckRecoveryBody:`Specrails 将在此克隆中重新扫描属于 {{branch}} 交付的 worktree、分支、refs、reflogs 和孤立 Git 对象。如果能证明唯一结果,它可以提交隔离的更改并重试精确 push。不会触碰主项目文件夹。`,noChangesDoneTitle:`将这些 spec 标记为完成?`,noChangesDoneBody:`实现已确认无需更改代码。spec 将移至完成,并清理无更改的 worktree。`,refineTitle:`细化这些 spec?`,refineBody:`无更改结果将被关闭,spec 会返回待办列表以便细化。运行日志仍可查看。`,mergeLocalTitle:`在本地集成?`,mergeLocalBody:`交付的分支将在本地合并到 {{base}}。现有更改会被保留;重叠的更改可能需要先解决才能集成。`,freshDiscardTitle:`丢弃此交付?`,freshDiscardBody:`PR 将关闭,但不会删除其远程分支。只会删除归 SpecRails 所有且仍停留在已记录提交上的本地分支和 worktree;任何已更改的内容都会保留并显示警告。spec 将返回待办列表。已删除的本地资源无法恢复。`,implementationFailedDiscardTitle:`丢弃此失败的交付?`,implementationFailedDiscardBody:`卡片将被关闭,spec 会返回待办列表。本地工作和分支将保留以供检查。只有确认可安全清理的资源才可能被移除。`,dismissTitle:`关闭此后续任务?`,dismissBody:`此后续卡片将被关闭。仅在仍可安全删除时才会移除其专用 worktree;否则将保留并显示警告。现有 PR、分支和审查状态不会改变。`,discardLocalTitle:`丢弃本地结果?`,discardLocalBody:`仅在仍可安全删除时才会移除可恢复的本地迭代;如果它已发生变化,将保留并显示警告。任何现有 PR 及其分支都不会改变。已删除的结果无法恢复。`},degraded:{pushed:`分支已推送,但无法创建 PR — 请重试以完成。`,localOnly:`更改已在本地组装但未推送 — 请重试以发布 PR。`},alreadyResolved:`已在其他地方处理`,actionFailed:`操作失败`,notMergedYet:`尚未合并`,commitMissingRetry:`交付提交已不在 PR 中。你可以重新尝试推送。`,prVerifiedWaiting:`提交 {{sha}} 已验证 · 等待合并`,viewLog:`查看 {{ref}} 的运行日志`,runElapsedAria:`已运行 {{elapsed}}`,runCostAria:`已花费 {{cost}}`,pinned:{label:`已固定`,marker:`实现卡片 — 已固定在上方`,collapse:`最小化固定卡片`,expand:`展开固定卡片`,expandCard:`展开此卡片`,collapseCard:`最小化此卡片`,collapsed_one:`实现卡片`,collapsed_other:`{{count}} 张实现卡片`,state:{completed:`已完成`,no_changes:`无更改`,pr_closed:`已关闭`,superseded:`已取代`,building:`构建中`,on_review:`待审阅`,pr_draft:`草稿 PR`,pr_ready:`已发布`,implementation_failed:`失败`,pr_failed:`失败`,merged:`已合并`,discarded:`已丢弃`}},mergeLocal:`本地集成`,mergeLocalTooltip:`将交付的分支合并到本地检出的 {{base}}(无需 GitHub)`,mergeLocalBlockedDirty:`无法集成:{{base}} 上的本地更改与交付内容重叠。请先提交或暂存这些更改,然后重试。`,mergeLocalBlockedBranch:`无法集成:当前检出在 {{current}},而不是 {{base}}。请切换到 {{base}} 后重试。`,mergedLocally:`已在本地集成到 {{base}}`,discardStackedNote:`此里程碑的后续轨道基于此交付构建。丢弃它会暂停里程碑链;后续轨道保留其工作。`},$={heading:`规格草稿`,drafting:`正在更新草稿…`,acceptanceCriteria:`验收标准`,untitled:`未命名规格`,expand:`显示完整描述`,collapse:`收起描述`},ee={heading:`理解框架`,framing:`正在梳理需求…`,restated:`我的理解`,alternative:`也可能是指`,pick:`以此回复`,touches:`会涉及`,discriminator:`是哪一种?`,assumptions:`我的假设`,unknowns:`仍待确认`},te={openTicket:`打开 Spec #{{id}}`,openPullRequest:`打开 PR #{{id}}`,openJob:`打开任务 {{id}}`,openLoop:`打开循环 {{id}}`,ticketNotFound:`未找到 Spec #{{id}} — 可能已被删除`,pullRequestUrlMissing:`PR #{{id}} 被引用但没有 URL`,pullRequestNotFound:`在此项目中找不到 PR #{{id}}`,jobNotFound:`未找到任务 — 可能已被删除`,loopNotFound:`未找到循环 — 可能已被删除`,lookupFailed:`无法验证该引用 — 请重试`},ne={untitled:`未命名任务`,menu:`任务菜单`,rename:`重命名`,renamePlaceholder:`任务名称`,renameHint:`双击重命名`,renameFailed:`无法重命名`,addFavorite:`添加到收藏`,removeFavorite:`从收藏中移除`,copyName:`复制任务名称`,copyId:`复制任务 ID`,copyProject:`复制项目名称`,copyProjectPath:`复制项目路径`,copyFailed:`无法复制`,copyTranscript:`复制转录`,copyTranscriptSuccess:`转录已复制`,copyTranscriptFailed:`无法复制转录`,exportTranscript:`导出转录 (.txt)`,exportTranscriptSuccess:`转录导出已开始`,exportTranscriptFailed:`无法导出转录`,delete:`删除任务`,deleteConfirm:`删除此任务?此操作无法撤销。`,deleteFailed:`无法删除任务`},re=`接下来要构建什么?`,ie={title:`执行日志`,live:`实时`,empty:`本回合尚无工具活动。`,output:`输出`,error:`错误`,copyAll:`复制完整日志`,copyEntry:`复制条目`,copySuccess:`日志已复制到剪贴板`,copyFailed:`无法复制日志`,openLog:`查看执行日志`,close:`关闭`},ae={open:`查看 {{command}} 的日志`,logsTitle:`进程日志`,logsDescription:`此进程的实时输出和已保存的历史。`,close:`关闭日志`,command:`命令`,directory:`目录`,exitCode:`退出码:{{code}}`,signal:`信号:{{signal}}`,search:`搜索日志…`,source:`输出来源`,allSources:`全部输出`,pause:`暂停`,resume:`继续`,follow:`跟随`,copy:`复制可见日志`,download:`下载可见日志`,stop:`停止进程`,stopCommand:`停止 {{command}}`,stopFailed:`无法停止进程,请重试。`,truncated:`仅显示有限的日志窗口,较早的输出或过长的行可能被省略。复制和下载仅包含当前视图。`,paused:`视图已暂停,进程仍在运行。`,loadFailed:`无法加载日志,可能已超过保留期限。已加载的输出仍然可见。`,retry:`重试`,copied:`已复制可见日志。`,exportFailed:`无法导出日志,请重试。`,output:`进程输出`,loading:`正在加载日志…`,noMatches:`没有匹配的输出。`,empty:`暂无输出。`,lineCount:`{{count}} / {{total}} 行`,exportHint:`导出仅包含当前筛选结果和保留的输出。`,status:{starting:`启动中`,running:`运行中`,stopping:`正在停止`,exited:`已退出`,killed:`已停止`,failed:`失败`,interrupted:`已断开`},repository:`仓库`,history:{button:`进程`,title:`任务进程`,open:`查看进程历史`,description:`查看正在运行的进程和之前执行时保存的日志。`,search:`搜索命令或仓库…`,refresh:`刷新历史`,close:`关闭进程历史`,back:`返回进程列表`,loading:`正在加载进程历史…`,empty:`此任务尚无进程记录。`,noMatches:`没有匹配的进程。`,loadFailed:`无法加载进程历史。已加载的记录仍然可用。`,showMore:`显示更多`,count:`进程数:{{count}}`},interruptedHint:`Specrails 已停止监控此进程。其在操作系统中的状态未知;已保存的日志仍然可用。`,persistenceFailed:`无法保存进程历史。现有输出仍然可见。`},oe={detach:`在独立窗口中打开`,attach:`返回主窗口`,detached:`此任务已在另一个窗口中打开。`,focus:`显示任务窗口`,loading:`正在移动任务…`,failed:`无法移动此任务。草稿已保留。`,dismiss:`关闭提示`,wrongMission:`请先打开此任务,再移动窗口。`,finishPending:`请先完成当前操作,或保存或取消消息或截图,再移动任务。`},se={heading:`Rail 启动`,rail:`Rail {{index}}`,newRail:`新建 Rail`,play:`Play`,launching:`正在启动…`,dismiss:`忽略`,playHint:`随意调整后,按 Play 以你自己的授权启动。`,pending:`正在准备启动提案…`,unreadable_one:`无法读取代理的启动提案。`,unreadable_other:`无法读取 {{count}} 个启动提案。`,pinnedMarker:`启动提案已固定在输入框上方`,effortDefault:`默认推理强度`,profileNone:`无配置文件`,status:{proposal:`提案`,ready:`就绪`,blocked:`需要关注`,loading:`检查中…`},availability:{free:`空闲`,busy:`运行中`,pending_decision:`等待决定`,on_review:`审核中`},fields:{rail:`Rail`,newRailName:`新 Rail 名称(可选)`,railName:`Rail 名称`,addSpec:`添加 Spec`,removeSpec:`移除 #{{id}}`,loop:`Loop`,engine:`AI 引擎`,model:`模型`,effort:`推理强度`,profile:`代理配置文件`,targetPr:`目标 PR #`,baseBranch:`基础分支`},notes:{railMissing:`Rail {{index}} 已不存在 — 请选择其他 Rail 或新建一个。`,railBusy:`Rail {{index}} 当前{{state}} — 无法在此启动。`,useFree:`使用 Rail {{index}}`,specsDropped:`已不在此项目中:{{ids}}`,engineStale:`本机未检测到 {{engine}} — 将使用 {{fallback}}。`,modelStale:`{{model}} 不可用 — 将使用 {{fallback}}。`},block:{noProject:`此任务未固定到任何项目。`,loadFailed:`无法加载项目的 Rail。`,noSpecs:`至少添加一个 Spec 才能启动。`,railLimit:`{{max}} 个 Rail 已全部存在,且没有空闲的。`},errors:{tickets_in_flight:`其中一个 Spec 已在其他 Rail 上运行。`,pr_decision_pending:`此 Rail 正在等待 PR 决定。`,rail_limit_reached:`项目已达到 Rail 数量上限。`,invalid_base_branch:`该基础分支在本地不存在。`,base_branch_requires_isolation:`基础分支需要 worktree 隔离(带有提交的 git 仓库)。`,target_pr_requires_pr_mode:`目标 PR 需要 worktree 隔离(带有提交的 git 仓库)。`,invalid_response:`服务器返回了意外的响应。`},stub:{launched:`已启动 → Rail {{rail}}`,dismissed:`提案已忽略`,viewRun:`查看运行`,goToCard:`前往卡片`,goToCardTitle:`跳转到此次启动的实现卡片`,viewRunTitle:`打开该 run 的实时日志`}},ce={status:{running:`运行中`,paused:`已暂停`,succeeded:`已成功`,failed:`已失败`,stalled:`已停滞`,cancelled:`已取消`,unknown:`未知`},title:{running:`正在项目检出目录中实现…`,paused:`需要人工决定`,succeeded:`实现已完成`,failed:`实现失败`,stalled:`实现已停滞`,cancelled:`运行已取消`,unknown:`运行状态未知`},noDeliveryNote:`无 PR 阶段 — 此项目没有 git 仓库或提交,因此工作已直接落在项目文件夹中。`,noDeliveryHint:`直接在项目文件夹中运行(没有 git 仓库或提交 — 不会提议 PR)。`,failure:{title:`停止原因`,step:`步骤 {{step}}`,unit:`#{{ticket}} · {{code}}`},actions:{resume:`继续`,approve:`批准`,recover:`恢复并重试`,relaunch:`重新启动`},relaunchSent:`Rail {{index}} 已重新启动 — 新卡片将跟踪此运行。`,relaunchFailed:`无法重新启动该 Rail`,relaunchBlockedActive:`该 Rail 仍有活动的运行`},le={marker:`Rail {{rail}} 失败:{{code}}`,openCard:`打开卡片`,briefing:{title:`自动故障简报`}},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=`任务中心`,t=`通过对话操作 Specrails`,n=`任务中心`,r=`让智能体做任何事…`,i=`发送`,a=`停止`,o=`复制`,s={openPreview:`预览 {{name}}`,openDownload:`下载 {{name}}`,previewTitle:`{{name}} 预览`,downloadTitle:`下载文件?`,downloadPrompt:`此文件无法在此处预览。要下载它吗?`,download:`下载`,cancelDownload:`暂不`,loading:`正在准备文件…`,loadFailed:`无法加载附件`,loadError:`无法加载附件:{{error}}`},c=`最大化`,l=`还原`,u=`最小化`,d=`关闭`,f=`新任务`,p=`这次的任务是什么?`,m=`先选择一个项目,然后提问。智能体工作时看板会实时更新。`,h=`思考中…`,g=`连接中…`,_=`正在查询应用…`,v={compact:`紧凑`,comfortable:`舒适`,max:`最大化`},y={label:`模型`,loading:`正在加载模型…`,unavailable:`模型不可用`},b={hint:`浏览提示历史 — 输入以编辑,↑↓ 导航`},x={queued:`已排队`,send:`发送消息`,sendHint:`排队等待下一轮。点击队列中消息的“调整方向”,即可在不中断模型的情况下发送。`,placeholder:`向队列添加消息…`,delivered:`已送达智能体`,interrupted:`送达未确认`,cancelled:`送达前取消`,steer:`调整方向`,steerHint:`在不中断模型的情况下发送`,steering:`正在发送给智能体…`,remove:`删除队列中的消息`,more:`消息选项`,edit:`编辑`,actionConflict:`该消息正在送达或已不在队列中。`,actionFailed:`无法更新队列中的消息,请重试。`},S={sent:`已发送给智能体`,received:`已送达智能体`,read:`智能体已读`,interrupted:`送达未确认`,cancelled:`送达前取消`},C={editing:`正在编辑第 {{n}} 条待送达消息,共 {{m}} 条`,hint:`↑↓ 导航 · 回车保存 · Esc 取消`,save:`保存待送达消息`,cancel:`取消编辑`,dispatched:`该消息已送达;你的文本已保留为草稿`,saveFailed:`无法保存待送达消息`},w={branch:`分支`,detached:`(分离头指针)`,dirty:`有未提交的更改`,switched:`已切换到 {{branch}}`,switchFailed:`无法切换分支`,lockedWhileWorking:`智能体工作时分支已锁定`,searchPlaceholder:`搜索分支…`,noMatches:`没有匹配的分支`,worktrees:`工作树`,worktreePathCopied:`已复制工作树路径`,copyWorktreePath:`复制工作树路径`,repository:`仓库`,repositoryUnavailable:`仓库不可用`,loadFailed:`Git 状态不可用`,notGit:`上下文文件夹 · 无 Git`,retry:`重试`},T={label:`提供方`,claude:`Claude`,codex:`Codex`,gemini:`Gemini`,kimi:`Kimi`},E={cycleHint:`⇧⇥ 切换`,observe:{name:`观察`,desc:`只读 — 不做任何更改`},edit:{name:`编辑`,desc:`创建和编辑(可撤销)`},operate:{name:`操作`,desc:`启动 AI — 会产生费用`},autonomous:{name:`自主`,desc:`删除和终止 — 不可逆`},lockedTitle:`需要更高的级别`,lockedBody:`该操作需要「{{level}}」级别。你当前处于「{{current}}」。`,raiseHint:`⇧⇥ 提升级别,或换一种方式询问。`},D={title:`确认操作`,costAction:`{{action}} · ~{{cost}} · {{tier}}`,approve:`批准`,cancel:`取消`,dontAskAgain:`本次会话不再询问`,approved:`已批准`,cancelled:`已取消`},O={home:`主页`,searchPlaceholder:`与 Specrails 对话…`,searchProjectsPlaceholder:`搜索项目…`,recents:`最近`,allProjects:`所有项目`,searchAll:`在所有项目中搜索`,addProject:`添加项目…`,homeHint:`未选择项目 — 正在跨所有项目操作。`,askCreateOrSearch:`未选择任何项目。你想创建一个新项目,还是在所有项目中搜索?`},k={remove:`移除 {{label}}`,addContextAction:`添加上下文或操作`,filtering:`筛选 "{{query}}"`,keyboard:`↑↓ Enter Esc`,noMatches:`无匹配结果`,noMatchesFor:`没有 "{{query}}" 的匹配结果`,mode:{reference:{title:`引用`,hint:`@ 项目、规格、任务`},trace:{title:`追踪`,hint:`# 作业、运行、ID`},action:{title:`操作`,hint:`/ 此上下文的命令`}},plus:{reference:`引用`,referenceHint:`项目、规格、任务`,trace:`追踪`,traceHint:`作业、运行、ID`,action:`操作`,actionHint:`创建、启动、检查`,fileAttachment:`文件附件`,fileAttachmentHint:`添加文档、图片、日志`,browserCapture:`浏览器捕获`,browserCaptureHint:`捕获页面区域并添加到此任务`},railGroup:`Rail`,railGroupInUse:`使用中的 Rail`},A={label:`切换任务`,untitled:`新任务`,new:`新任务`,searchPlaceholder:`搜索任务…`,noMatches:`没有匹配的任务`,working:`代理正在工作`,queuedBadge:`{{n}} 条排队`,delete:`删除任务 "{{title}}"`,deleteConfirm:`删除?`,deleteLiveConfirm:`代理正在工作 — 仍要删除?`,confirmDelete:`确认删除`,cancelDelete:`保留任务`,deleteFailed:`无法删除任务`},j={title:`未安装 AI 提供方`,body:`智能体需要在你的机器上安装 Claude、Codex、Gemini 或 Kimi。安装其中之一后重新打开智能体即可开始对话。`,placeholder:`请安装 AI 提供方以使用智能体…`},M={title:`Specrails MCP 已关闭`,body:`智能体需要内置的 MCP 服务器来操作应用。`,enable:`启用 Specrails MCP`,enabling:`正在启用…`,enabled:`MCP 已启用`},N={live:`实时`,queued:`排队中`,running:`运行中`,done:`已完成`,failed:`失败`},P={generic:`出了点问题。请重试。`,busy:`智能体正忙。请稍后重试。`},F={kindAgent:`智能体任务`},I=`新任务`,L=`切换到任务中心`,R=`切换到看板`,z=`搜索`,B=`主页`,V=`收藏任务`,H=`未命名`,U={title:`工作区`,terminal:`终端`,files:`文件`,browser:`浏览器`,requiresProject:`请选择一个项目以使用此工具`,resizeCode:`调整代码面板`,closeFiles:`关闭代码`,browserConfirm:`添加到智能体`,browserSelectStart:`选择以添加到任务`,browserCaptured:`已添加捕获`,uploadFailed:`上传失败`,requiresConversation:`启动任务后才能使用此工具`,jobs:`作业`,closeJobs:`关闭作业`,resizeJobs:`调整作业面板大小`,noJobs:`还没有作业——让智能体启动一个吧`,analytics:`分析`,closeAnalytics:`关闭分析`,resizeAnalytics:`调整分析面板大小`},W=`附加文件`,G=`删除「{{title}}」`,K=`确认删除「{{title}}」`,q=`将「{{title}}」添加到收藏`,J=`从收藏中移除「{{title}}」`,Y=`确认?`,X=`该提供商暂不支持读取图片 — 请附加文本文件`,Z={label:`推理强度`,minimal:`最小`,low:`低`,medium:`中`,high:`高`,xhigh:`极高`,max:`最大`,ultra:`超级`},Q={operation:{inProgress:`操作进行中…`,"create-pr":`正在创建 PR…`,publish:`正在发布…`,discard:`正在丢弃…`,dismiss:`正在关闭后续任务…`,"poll-merge":`正在检查合并…`,reopen:`正在重新打开…`,"merge-local":`正在本地集成…`,"recover-and-retry":`正在提交并重新推送已保留的结果…`,"acknowledge-no-changes":`正在标记完成…`},markDone:`标记为完成`,refine:`细化`,completedNote:`已确认 — spec 已移至完成`,partialSummary:`{{total}} 个中 {{succeeded}} 个完成,{{failed}} 个失败`,unit:{failed:`实现失败`,blocked:`交付受阻`,noChanges:`无更改`,succeeded:`已就绪`},rail:`Rail {{index}}`,specCount_one:`{{count}} 个 Spec`,specCount_other:`{{count}} 个 Spec`,base:`基础分支`,openPr:`打开 PR`,existingPr:`现有 PR`,title:{no_changes:`无需更改`,partial:`部分实现完成`,delivery_blocked:`实现完成 — 交付需要处理`,update_failed:`实现完成 — 更新失败`,pr_closed:`PR 已关闭但未合并`,superseded:`已被较新的运行取代`,existing_pr_updated:`现有 PR 已更新`,building:`正在隔离的 worktree 中实现…`,buildingExistingPr:`正在向现有 PR 应用更改…`,paused:`需要人工决策`,on_review:`实现已完成,待评审`,pr_draft:`已创建草稿 PR`,pr_draft_degraded:`PR 交付未完成`,pr_ready:`PR 已就绪,可合并`,implementation_failed:`实现失败`,pr_failed:`PR 创建失败`,merged:`PR 已合并`,discarded:`已丢弃`},buildingHint:`完成后会询问你是否创建 PR。`,buildingExistingPrHint:`Specrails 正在现有 PR 的分支上工作,并会把 review 更改推送回同一个 PR。`,paused:`实现已暂停`,pausedForRun:`在 {{ref}} 暂停`,resume:`继续`,stopExecution:`停止执行`,stopExecutionSent:`已发送停止信号`,stopExecutionFailed:`无法停止执行`,createPr:`创建 PR`,publish:`发布`,checkout:`检出分支`,openReview:`审阅`,openReviewTooltip:`打开通俗语言的审阅`,checkoutTooltip:`在项目主目录检出 {{branch}}`,checkoutSuccess:`已检出 {{branch}}`,checkoutFailed:`无法检出实现分支`,checkoutDirtyTitle:`为保护你的更改,已阻止检出`,checkoutDirtyBody:`项目主目录中有未提交的更改。请先提交或暂存这些更改,然后重试。本次操作没有修改任何内容。`,checkoutSafetyUnknownTitle:`无法验证安全状态,已暂停检出`,checkoutSafetyUnknownBody:`Specrails 无法读取项目主目录的 Git 状态。没有释放或修改任何内容。请在 Git 恢复可用后重试。`,checkoutNotDeliverableTitle:`此分支不包含保留的实现`,checkoutNotDeliverableBody:`尚未验证本次交付的精确提交。请改为检查或恢复本地结果。`,inspectLocalResult:`检查本地结果`,inspectLocalResultTooltip:`显示已保留的隔离 worktree 并复制其路径`,localResultPathCopied:`已复制本地结果路径`,localResultPath:`已保留的本地结果`,localResultUnavailableHere:`此电脑上没有可恢复的 worktree。请在运行该任务的电脑上查看运行日志。`,recoverAndRetry:`提交并重试推送`,recoverAndRetryVerified:`已恢复的提交 {{sha}} 已在 PR 中验证`,recoveryStillBlocked:`本地恢复仍需处理`,recheckRecovery:`再次检查`,recoveryUnavailable:`无法在此计算机上验证恢复结果`,recoveryUnavailableBody:`Specrails 无法在此克隆中安全证明唯一一个属于此次交付的结果。没有更改或删除任何内容。请检查阶段详情和运行日志。如果 run 在另一台计算机上执行,请在那里打开 Specrails,然后再次检查。`,recoveryDetailSummary:`恢复技术详情`,retry:`重试`,retryPr:`重试 PR`,checkMerge:`检查合并`,verifyPr:`验证 PR`,discard:`丢弃`,confirmDiscard:`确认丢弃?`,mergedNote:`已合并 — Spec 已移至完成`,discardedNote:`已丢弃 — Spec 已退回待办`,implementationFailedNote:`实现运行在生成可交付内容前失败。请打开运行日志查看失败原因,然后在重新启动前丢弃此卡片。`,dismiss:`关闭后续任务`,discardLocalResult:`丢弃本地结果`,retryPush:`重试推送`,retryPushVerified:`推送已验证 · 提交 {{sha}} 已在 PR 中`,commitAlreadyVerified:`提交 {{sha}} 已在 PR 中验证`,deliveryCommit:`提交 {{sha}}`,reopen:`重新打开`,createPartialPr:`用 {{count}} 个结果创建 PR`,supersededNote:`较新的实现运行已取代此卡片。`,noChangesExisting:`无需新的更改;现有 PR 保持不变。`,noChangesNote:`无需更改代码。请将 spec 标记为完成,或退回待办列表继续细化。`,deliveryNeedsAttention:`实现完成;交付需要处理`,deliveryBlockedNote:`实现已成功,但交付受阻。丢弃本地结果前,请查看阶段详情和运行日志。`,partialDeliveryBlockedNote:`部分实现已成功,但目前还没有可安全交付的内容。在选择下一步操作前,请查看各单元的结果和运行日志。`,retryPushNote:`实现已成功,更改安全保存在本地。请仅重试推送。`,cleanupIncomplete_one:`清理未完成({{count}} 条警告)`,cleanupIncomplete_other:`清理未完成({{count}} 条警告)`,safetyArchiveTitle:`安全存档({{count}})`,safetyArchiveHint:`为安全起见,临时工作区文件已保存在 PR 之外。你可以检查或手动删除它们。`,confirm:{recoverAndRetryTitle:`提交并推送已保留的结果?`,recoverAndRetryBody:`Specrails 只会使用 {{branch}} 对应的隔离 worktree 或已记录且可快进的分支。必要时,它会提交可交付文件;仅当 PR 仍以预期的源分支和目标分支保持打开状态时,才会推送这个精确提交。不会触碰项目主目录及其中尚未提交的更改。`,recheckRecoveryTitle:`再次检查此计算机?`,recheckRecoveryBody:`Specrails 将在此克隆中重新扫描属于 {{branch}} 交付的 worktree、分支、refs、reflogs 和孤立 Git 对象。如果能证明唯一结果,它可以提交隔离的更改并重试精确 push。不会触碰主项目文件夹。`,noChangesDoneTitle:`将这些 spec 标记为完成?`,noChangesDoneBody:`实现已确认无需更改代码。spec 将移至完成,并清理无更改的 worktree。`,refineTitle:`细化这些 spec?`,refineBody:`无更改结果将被关闭,spec 会返回待办列表以便细化。运行日志仍可查看。`,mergeLocalTitle:`在本地集成?`,mergeLocalBody:`交付的分支将在本地合并到 {{base}}。现有更改会被保留;重叠的更改可能需要先解决才能集成。`,freshDiscardTitle:`丢弃此交付?`,freshDiscardBody:`PR 将关闭,但不会删除其远程分支。只会删除归 SpecRails 所有且仍停留在已记录提交上的本地分支和 worktree;任何已更改的内容都会保留并显示警告。spec 将返回待办列表。已删除的本地资源无法恢复。`,implementationFailedDiscardTitle:`丢弃此失败的交付?`,implementationFailedDiscardBody:`卡片将被关闭,spec 会返回待办列表。本地工作和分支将保留以供检查。只有确认可安全清理的资源才可能被移除。`,dismissTitle:`关闭此后续任务?`,dismissBody:`此后续卡片将被关闭。仅在仍可安全删除时才会移除其专用 worktree;否则将保留并显示警告。现有 PR、分支和审查状态不会改变。`,discardLocalTitle:`丢弃本地结果?`,discardLocalBody:`仅在仍可安全删除时才会移除可恢复的本地迭代;如果它已发生变化,将保留并显示警告。任何现有 PR 及其分支都不会改变。已删除的结果无法恢复。`},degraded:{pushed:`分支已推送,但无法创建 PR — 请重试以完成。`,localOnly:`更改已在本地组装但未推送 — 请重试以发布 PR。`},alreadyResolved:`已在其他地方处理`,actionFailed:`操作失败`,notMergedYet:`尚未合并`,commitMissingRetry:`交付提交已不在 PR 中。你可以重新尝试推送。`,prVerifiedWaiting:`提交 {{sha}} 已验证 · 等待合并`,viewLog:`查看 {{ref}} 的运行日志`,runElapsedAria:`已运行 {{elapsed}}`,runCostAria:`已花费 {{cost}}`,pinned:{label:`已固定`,marker:`实现卡片 — 已固定在上方`,collapse:`最小化固定卡片`,expand:`展开固定卡片`,expandCard:`展开此卡片`,collapseCard:`最小化此卡片`,collapsed_one:`实现卡片`,collapsed_other:`{{count}} 张实现卡片`,state:{completed:`已完成`,no_changes:`无更改`,pr_closed:`已关闭`,superseded:`已取代`,building:`构建中`,on_review:`待审阅`,pr_draft:`草稿 PR`,pr_ready:`已发布`,implementation_failed:`失败`,pr_failed:`失败`,merged:`已合并`,discarded:`已丢弃`}},mergeLocal:`本地集成`,mergeLocalTooltip:`将交付的分支合并到本地检出的 {{base}}(无需 GitHub)`,mergeLocalBlockedDirty:`无法集成:{{base}} 上的本地更改与交付内容重叠。请先提交或暂存这些更改,然后重试。`,mergeLocalBlockedBranch:`无法集成:当前检出在 {{current}},而不是 {{base}}。请切换到 {{base}} 后重试。`,mergedLocally:`已在本地集成到 {{base}}`,discardStackedNote:`此里程碑的后续轨道基于此交付构建。丢弃它会暂停里程碑链;后续轨道保留其工作。`},$={heading:`规格草稿`,drafting:`正在更新草稿…`,acceptanceCriteria:`验收标准`,untitled:`未命名规格`,expand:`显示完整描述`,collapse:`收起描述`},ee={heading:`理解框架`,framing:`正在梳理需求…`,restated:`我的理解`,alternative:`也可能是指`,pick:`以此回复`,touches:`会涉及`,discriminator:`是哪一种?`,assumptions:`我的假设`,unknowns:`仍待确认`},te={openTicket:`打开 Spec #{{id}}`,openPullRequest:`打开 PR #{{id}}`,openJob:`打开任务 {{id}}`,openLoop:`打开循环 {{id}}`,ticketNotFound:`未找到 Spec #{{id}} — 可能已被删除`,pullRequestUrlMissing:`PR #{{id}} 被引用但没有 URL`,pullRequestNotFound:`在此项目中找不到 PR #{{id}}`,jobNotFound:`未找到任务 — 可能已被删除`,loopNotFound:`未找到循环 — 可能已被删除`,lookupFailed:`无法验证该引用 — 请重试`},ne={untitled:`未命名任务`,menu:`任务菜单`,rename:`重命名`,renamePlaceholder:`任务名称`,renameHint:`双击重命名`,renameFailed:`无法重命名`,addFavorite:`添加到收藏`,removeFavorite:`从收藏中移除`,copyName:`复制任务名称`,copyId:`复制任务 ID`,copyProject:`复制项目名称`,copyProjectPath:`复制项目路径`,copyFailed:`无法复制`,copyTranscript:`复制转录`,copyTranscriptSuccess:`转录已复制`,copyTranscriptFailed:`无法复制转录`,exportTranscript:`导出转录 (.txt)`,exportTranscriptSuccess:`转录导出已开始`,exportTranscriptFailed:`无法导出转录`,delete:`删除任务`,deleteConfirm:`删除此任务?此操作无法撤销。`,deleteFailed:`无法删除任务`},re=`接下来要构建什么?`,ie={title:`执行日志`,live:`实时`,empty:`本回合尚无工具活动。`,output:`输出`,error:`错误`,copyAll:`复制完整日志`,copyEntry:`复制条目`,copySuccess:`日志已复制到剪贴板`,copyFailed:`无法复制日志`,openLog:`查看执行日志`,close:`关闭`},ae={open:`查看 {{command}} 的日志`,logsTitle:`进程日志`,logsDescription:`此进程的实时输出和已保存的历史。`,close:`关闭日志`,command:`命令`,directory:`目录`,exitCode:`退出码:{{code}}`,signal:`信号:{{signal}}`,search:`搜索日志…`,source:`输出来源`,allSources:`全部输出`,pause:`暂停`,resume:`继续`,follow:`跟随`,copy:`复制可见日志`,download:`下载可见日志`,stop:`停止进程`,stopCommand:`停止 {{command}}`,stopFailed:`无法停止进程,请重试。`,truncated:`仅显示有限的日志窗口,较早的输出或过长的行可能被省略。复制和下载仅包含当前视图。`,paused:`视图已暂停,进程仍在运行。`,loadFailed:`无法加载日志,可能已超过保留期限。已加载的输出仍然可见。`,retry:`重试`,copied:`已复制可见日志。`,exportFailed:`无法导出日志,请重试。`,output:`进程输出`,loading:`正在加载日志…`,noMatches:`没有匹配的输出。`,empty:`暂无输出。`,lineCount:`{{count}} / {{total}} 行`,exportHint:`导出仅包含当前筛选结果和保留的输出。`,status:{starting:`启动中`,running:`运行中`,stopping:`正在停止`,exited:`已退出`,killed:`已停止`,failed:`失败`,interrupted:`已断开`},repository:`仓库`,history:{button:`进程`,title:`任务进程`,open:`查看进程历史`,description:`查看正在运行的进程和之前执行时保存的日志。`,search:`搜索命令或仓库…`,refresh:`刷新历史`,close:`关闭进程历史`,back:`返回进程列表`,loading:`正在加载进程历史…`,empty:`此任务尚无进程记录。`,noMatches:`没有匹配的进程。`,loadFailed:`无法加载进程历史。已加载的记录仍然可用。`,showMore:`显示更多`,count:`进程数:{{count}}`},interruptedHint:`Specrails 已停止监控此进程。其在操作系统中的状态未知;已保存的日志仍然可用。`,persistenceFailed:`无法保存进程历史。现有输出仍然可见。`},oe={detach:`在独立窗口中打开`,attach:`返回主窗口`,detached:`此任务已在另一个窗口中打开。`,focus:`显示任务窗口`,loading:`正在移动任务…`,failed:`无法移动此任务。草稿已保留。`,dismiss:`关闭提示`,wrongMission:`请先打开此任务,再移动窗口。`,finishPending:`请先完成当前操作,或保存或取消消息或截图,再移动任务。`},se={heading:`Rail 启动`,rail:`Rail {{index}}`,newRail:`新建 Rail`,play:`Play`,launching:`正在启动…`,dismiss:`忽略`,playHint:`随意调整后,按 Play 以你自己的授权启动。`,pending:`正在准备启动提案…`,unreadable_one:`无法读取代理的启动提案。`,unreadable_other:`无法读取 {{count}} 个启动提案。`,pinnedMarker:`启动提案已固定在输入框上方`,effortDefault:`默认推理强度`,profileNone:`无配置文件`,status:{proposal:`提案`,ready:`就绪`,blocked:`需要关注`,loading:`检查中…`},availability:{free:`空闲`,busy:`运行中`,pending_decision:`等待决定`,on_review:`审核中`},fields:{rail:`Rail`,newRailName:`新 Rail 名称(可选)`,railName:`Rail 名称`,addSpec:`添加 Spec`,removeSpec:`移除 #{{id}}`,loop:`Loop`,engine:`AI 引擎`,model:`模型`,effort:`推理强度`,profile:`代理配置文件`,targetPr:`目标 PR #`,baseBranch:`基础分支`},notes:{railMissing:`Rail {{index}} 已不存在 — 请选择其他 Rail 或新建一个。`,railBusy:`Rail {{index}} 当前{{state}} — 无法在此启动。`,useFree:`使用 Rail {{index}}`,specsDropped:`已不在此项目中:{{ids}}`,engineStale:`本机未检测到 {{engine}} — 将使用 {{fallback}}。`,modelStale:`{{model}} 不可用 — 将使用 {{fallback}}。`},block:{noProject:`此任务未固定到任何项目。`,loadFailed:`无法加载项目的 Rail。`,noSpecs:`至少添加一个 Spec 才能启动。`,railLimit:`{{max}} 个 Rail 已全部存在,且没有空闲的。`},errors:{tickets_in_flight:`其中一个 Spec 已在其他 Rail 上运行。`,pr_decision_pending:`此 Rail 正在等待 PR 决定。`,rail_limit_reached:`项目已达到 Rail 数量上限。`,invalid_base_branch:`该基础分支在本地不存在。`,base_branch_requires_isolation:`基础分支需要 worktree 隔离(带有提交的 git 仓库)。`,target_pr_requires_pr_mode:`目标 PR 需要 worktree 隔离(带有提交的 git 仓库)。`,invalid_response:`服务器返回了意外的响应。`},stub:{launched:`已启动 → Rail {{rail}}`,dismissed:`提案已忽略`,viewRun:`查看运行`,goToCard:`前往卡片`,goToCardTitle:`跳转到此次启动的实现卡片`,viewRunTitle:`打开该 run 的实时日志`},followUp:{title:`解决 PR 上的 {{count}} 条评审意见`,excluded:`不要改动`,verification:`验证`,specUntouched:`不会编辑 spec 及其 Jira 描述——范围随本次运行一起传递。`,source:{pasted:`粘贴`,github:`来自 GitHub`}}},ce={status:{running:`运行中`,paused:`已暂停`,succeeded:`已成功`,failed:`已失败`,stalled:`已停滞`,cancelled:`已取消`,unknown:`未知`},title:{running:`正在项目检出目录中实现…`,paused:`需要人工决定`,succeeded:`实现已完成`,failed:`实现失败`,stalled:`实现已停滞`,cancelled:`运行已取消`,unknown:`运行状态未知`},noDeliveryNote:`无 PR 阶段 — 此项目没有 git 仓库或提交,因此工作已直接落在项目文件夹中。`,noDeliveryHint:`直接在项目文件夹中运行(没有 git 仓库或提交 — 不会提议 PR)。`,failure:{title:`停止原因`,step:`步骤 {{step}}`,unit:`#{{ticket}} · {{code}}`},actions:{resume:`继续`,approve:`批准`,recover:`恢复并重试`,relaunch:`重新启动`},relaunchSent:`Rail {{index}} 已重新启动 — 新卡片将跟踪此运行。`,relaunchFailed:`无法重新启动该 Rail`,relaunchBlockedActive:`该 Rail 仍有活动的运行`},le={marker:`Rail {{rail}} 失败:{{code}}`,openCard:`打开卡片`,briefing:{title:`自动故障简报`}},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`}}},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 +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`}}},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};
|