@tunnelbox/core 0.1.9 → 0.1.11

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.
@@ -1,165 +1,166 @@
1
- {
2
- "agent.err.createSession": "Sitzung konnte nicht erstellt werden",
3
- "agent.err.httpClient": "Auf den opencode-HTTP-Client kann nicht zugegriffen werden",
4
- "agent.err.unknownPerm": "Unbekannte Berechtigungsanfrage: {id}",
5
- "agent.err.unknownQuestion": "Unbekannte Frageanfrage: {id}",
6
- "agent.log.fallback404": "Bevorzugter Endpunkt lieferte 404, Fallback auf den anderen: {message}",
7
- "agent.log.gotPermReply": "Berechtigungsantwort vom Telefon erhalten (id={id} {reply} {version})",
8
- "agent.log.gotQuestionReply": "Frageantwort vom Telefon erhalten (id={id} {status} {version})",
9
- "agent.log.handleFailed": "Fehler beim Verarbeiten von {type}: {message}",
10
- "agent.log.msgOk": "Session-Nachrichten OK session={session} data={count} Modus={limited} win={win} ms={ms}",
11
- "agent.log.msgFailed": "Session-Nachrichten fehlgeschlagen session={session} err={err} ms={ms}",
12
- "agent.log.msgLimitFallback": "limit nicht unterstützt, Rückfall auf vollständigen Abruf (session={session})",
13
- "agent.log.httpOk": "opencode HTTP {status} {path}",
14
- "agent.log.pendingResent": "session.pending: {count} ausstehende Anfrage(n) für {session} erneut gesendet",
15
- "agent.log.unhandledType": "Nicht behandelter Nachrichtentyp: {type}",
16
- "events.log.fwdPermission": "Berechtigungsanfrage an Telefon weitergeleitet (id={id} tool={tool} {version})",
17
- "events.log.permissionReplied": "opencode quittierte permission.replied (id={id} {response})",
18
- "events.log.questionRejected": "opencode quittierte question.rejected (id={id})",
19
- "events.log.questionReplied": "opencode quittierte question.replied (id={id})",
20
- "index.error.connectRelay": "Verbindung zum Relay nicht möglich; prüfen Sie die Relay-Adresse und versuchen Sie es erneut",
21
- "index.error.pairTimeout": "Zeitüberschreitung beim Warten auf einen Pairing-Code (Relay antwortet nicht)",
22
- "index.log.claimed": "An Ihr Telefonkonto gebunden. Das Telefon verbindet sich nun direkt über “Meine PCs”; kein erneutes Scannen nötig",
23
- "index.log.connectedRelay": "Mit Relay verbunden {url}",
24
- "index.log.loaded": "tunnelbox-opencode-Plugin gestartet (v{version})",
25
- "index.log.disconnected": "Vom Relay getrennt, verbinde automatisch neu…",
26
- "index.log.exit": "Beendet",
27
- "index.log.pairCode": "Pairing-Code erzeugt: {code}",
28
- "index.log.pairingStillClaimed": "Dieser Pairing-Code dient nur zum erneuten Pairing eines neuen Telefons im selben Konto. Dieser Computer ist bereits verknüpft und bleibt über „Meine Computer“ auf Ihrem Telefon erreichbar.",
29
- "index.log.pairingPreparing": "Verbindung zum Relay wird hergestellt und Pairing-Code generiert…",
30
- "index.log.permissionToPhone": "Berechtigungsanfrage Genehmigung am Telefon (id={id} tool={tool})",
31
- "index.log.permissionTuiFallback": "App offline; Berechtigungsanfrage wird vom opencode-TUI übernommen (id={id} tool={tool})",
32
- "index.log.relayError": "Relay-Fehler: {msg}",
33
- "index.log.resetIdentity": "Vom Konto gelöst; Identität wird zurückgesetzt und ein neuer Pairing-Code erzeugt…",
34
- "index.log.unknown": "Unbekannt",
35
- "install.codeLine": "Pairing-Code: {code}",
36
- "install.commandInstalled": "Befehl installiert: {path}",
37
- "install.done": "Fertig. Versuche, eine Verbindung zum Relay herzustellen und Pairing-Informationen auszugeben:",
38
- "install.failConnect": "(Keine sofortige Verbindung zum Relay zum Drucken der Pairing-Informationen möglich — Relay nicht erreichbar oder Node zu alt.",
39
- "install.failConnectHint": "Nach dem Neustart von opencode den Terminal-QR-Code mit --print-logs anzeigen oder im opencode “Telefon-Pairing-Code anzeigen” bzw. /pair eingeben.)",
40
- "install.hintFresh": "Hinweis: Der Pairing-Code ist einmalig und etwa 10 Minuten gültig. Wenn Sie opencode später starten, nutzen Sie die beim Start gedruckten oder per /pair abgerufenen aktuellen Informationen.",
41
- "install.pluginInstalled": "Plugin installiert: {path}",
42
- "install.qrUnavailable": "(QR-Darstellung nicht verfügbar — nutzen Sie den Code oben)",
43
- "install.qrcodeEnsure": "Installiere qrcode in das opencode-Konfigurationsverzeichnis…",
44
- "install.qrcodeFail": "qrcode-Installation fehlgeschlagen (nicht kritisch — nur der Pairing-Code wird angezeigt): {err}",
45
- "install.relayError": "Relay hat einen Fehler zurückgegeben: {msg}",
46
- "install.scanHint": "Öffnen Sie tunnelbox auf dem Telefon, tippen Sie auf “Zum Pairing scannen” und scannen Sie den QR-Code oben zum Verbinden:",
47
- "pair.heading": "tunnelbox Telefon-Pairing",
48
- "pair.howTo": "Öffnen Sie die tunnelbox-App auf dem Telefon und scannen Sie den QR-Code oben mit “Zum Pairing scannen”, oder geben Sie den Pairing-Code manuell ein.",
49
- "pair.oneTime": "Der Pairing-Code ist einmalig und verfällt nach der Nutzung; für einen neuen Code Pairing-Code aktualisieren” anfordern.",
50
- "pair.promptBody": "Zeigen Sie bitte die Telefon-Pairing-Informationen dieses Computers an: den Pairing-Code und einen scannbaren QR-Code. Behalten Sie den QR-Code in einem Codeblock mit fester Breite und geben Sie ihn zeichengenau wieder, damit mein Telefon ihn scannen kann.",
51
- "pair.promptDescription": "Pairing-Code und scannbaren QR-Code anzeigen",
52
- "pair.scanIntro": "**Per Scan pairen**: Öffnen Sie die tunnelbox-App auf dem Telefon, tippen Sie auf “Zum Pairing scannen” und scannen Sie den QR-Code unten, um sich automatisch zu verbinden.",
53
- "perm.promptAuthorize": "opencode fordert eine Genehmigung an",
54
- "perm.promptPatterns": "opencode fordert Zugriff auf: {list}",
55
- "perm.promptResource": "opencode fordert Zugriff auf Ressourcen: {list}",
56
- "perm.promptTool": "opencode fordert die Ausführung von {tool} an",
57
- "qr.codeLabel": "Pairing-Code",
58
- "qr.fileWritten": "Pairing-Informationen geschrieben in: {path}",
59
- "qr.openHint": "Öffnen Sie die tunnelbox-App auf dem Telefon und scannen Sie den QR-Code oben, oder geben Sie den Pairing-Code manuell in der App ein.",
60
- "qr.titleNoType": "tunnelbox Telefon-Pairing",
61
- "qr.titleWithType": "tunnelbox {type} Telefon-Pairing",
62
- "qr.unavailable": "(qrcode nicht installiert — nutzen Sie den Pairing-Code oben)",
63
- "claude.errBusy": "Diese Sitzung läuft noch; warten Sie auf das Ende oder stoppen Sie sie zuerst",
64
- "claude.errTurn": "Generierungsfehler",
65
- "claude.pairingStillClaimed": "Bereits an ein Telefonkonto gebunden: Dieser Code dient nur zum Koppeln eines neuen Geräts auf demselben Konto; das aktuelle Gerät verbindet sich direkt über „Meine Computer“",
66
- "claude.pairForced": "--pair: Pairing-Code erzwungen (nur dieser Lauf)",
67
- "claude.pairUnclaimed": "Kein gebundenes Konto erkannt; Start der Pairing-Anleitung:",
68
- "claude.claimedHint": "An ein Telefonkonto gebunden: direkt über „Meine Computer“ auf dem Telefon verbinden",
69
- "claude.errStartFailed": "Start fehlgeschlagen:",
70
- "claude.msgStarted": "Claude-Code-Adapter gestartet (Strg+C zum Beenden)",
71
- "claude.warnInvalidMode": "Ungültiges TUNNELBOX_CLAUDE_MODE ignoriert: {raw} (erlaubt {list})",
72
- "claude.warnInvalidThinking": "Ungültiges TUNNELBOX_CLAUDE_THINKING ignoriert: {raw} (off|adaptive|enabled[:budget])",
73
- "claude.cmdNew": "Neue Sitzung",
74
- "claude.cmdHelp": "Hilfe anzeigen",
75
- "claude.errNoRelay": "Keine Relay-URL konfiguriert: Standard mit --env injizieren oder zur Laufzeit per TUNNELBOX_RELAY_URL überschreiben",
76
- "claude.logConnected": "Mit Relay {url} verbunden",
77
- "claude.logMsgUncaught": "Unbehandelte Ausnahme bei der Nachrichtenverarbeitung: {message}",
78
- "claude.reasonDisconnect": "Relay getrennt (fail-closed automatische Ablehnung)",
79
- "claude.reasonUnbind": "Konto entbunden (fail-closed automatische Ablehnung)",
80
- "claude.logDisconnected": "Vom Relay getrennt, verbinde automatisch neu…",
81
- "claude.logPairCode": "Pairing-Code generiert: {code}",
82
- "claude.logUnhandledType": "Unbehandelter Nachrichtentyp: {type}",
83
- "claude.logHandleFailed": "{type} konnte nicht verarbeitet werden: {message}",
84
- "claude.newSessionTitle": "Neue Sitzung",
85
- "claude.helpText": "Unterstützte Befehle:\n- /new neue Sitzung\n- /help Hilfe anzeigen",
86
- "claude.logPromptFailed": "session.prompt fehlgeschlagen: {message}",
87
- "claude.logAbortSent": "Abbruch gesendet (session={session})",
88
- "claude.logAbortFailed": "Abbruch fehlgeschlagen (session={session}): {message}",
89
- "claude.errBadWorkspaceEmpty": "Pfad zum Arbeitsbereich fehlt",
90
- "claude.errBadWorkspaceNotDir": "Verzeichnis existiert nicht oder ist unbrauchbar",
91
- "claude.logWorkspaceSwitched": "Arbeitsbereich gewechselt: {path}",
92
- "claude.logUnknownQuestionReply": "Keine Übereinstimmung für strukturierte Frage-Antwort (id={id})",
93
- "claude.logFlushedQuestions": "{count} ausstehende Frage(n) abgebrochen: {reason}",
94
- "claude.logFlushedApprovals": "{count} ausstehende Anfrage(n) abgelehnt: {reason}",
95
- "claude.logPendingResent": "session.pending: {count} ausstehende(r) Eintrag/Einträge für {session} erneut gesendet",
96
- "claude.logSetModeFailed": "setPermissionMode fehlgeschlagen (session={session}): {message}",
97
- "claude.errWorkspaceMissing": "Arbeitsbereich existiert nicht: {dir}",
98
- "claude.logSessionError": "Sitzungsfehler (session={session}): {message}",
99
- "claude.logOfflineDenyTool": "Relay offline, Tool {tool} automatisch abgelehnt",
100
- "claude.errOfflineDeny": "Relay offline, automatisch abgelehnt (fail-closed)",
101
- "claude.logAuqDisabled": "AskUserQuestion deaktiviert (TUNNELBOX_CLAUDE_ASK_USER_QUESTION=0), automatisch abgelehnt",
102
- "claude.errAuqDisabled": "AskUserQuestion ist nicht aktiviert",
103
- "claude.logAuqParseFailed": "AskUserQuestion-Eingabe konnte nicht geparst werden, automatisch abgelehnt (fail-closed)",
104
- "claude.errAuqParse": "Fragen konnten nicht geparst werden",
105
- "claude.logAuqSkipped": "AskUserQuestion unbeantwortet/abgebrochen (session={session})",
106
- "claude.errAuqCancelled": "Keine Auswahl durch Benutzer (abgebrochen)",
107
- "claude.logAuqDone": "AskUserQuestion beantwortet (session={session})",
108
- "claude.promptRunTool": "Claude Code fordert Ausführung von {tool}",
109
- "claude.errApprovalTimeout": "Genehmigung abgelaufen, automatisch abgelehnt (fail-closed)",
110
- "claude.errUserDenied": "Vom Benutzer abgelehnt",
111
- "claude.errAborted": "Anfrage abgebrochen",
112
- "claude.logPermToPhone": "Berechtigungsanfrage (tool={tool}) → an Telefon gesendet permissionID={id}",
113
- "claude.errRelayUnreachable": "Relay nicht erreichbar, automatisch abgelehnt (fail-closed)",
114
- "claude.logQuestionOffline": "Relay offline, strukturierte Frage automatisch abgebrochen",
115
- "claude.logQuestionToPhone": "Strukturierte Frage ({count}) an Telefon gesendet questionID={id}",
116
- "claude.logDialogOffline": "Relay offline, Dialog automatisch abgebrochen ({tool})",
117
- "claude.logDialogToPhone": "Dialoganfrage (kind={kind} tool={tool}) an Telefon gesendet permissionID={id}",
118
- "claude.logAuqDialogParse": "AskUserQuestion-Payload konnte nicht geparst werden, Standardverhalten beibehalten (session={session})",
119
- "claude.logDialogUnmapped": "request_user_dialog(kind={kind}) ohne Zuordnung, Standardverhalten beibehalten (session={session})",
120
- "claude.promptMcpAuth": "MCP „{server} fordert Autorisierung",
121
- "claude.logElicitUnmapped": "MCP-Elicitation (server={server}, mode={mode}) nicht behandelt, automatisch abgelehnt (session={session})",
122
- "claude.logResetIdentity": "Konto entbunden; Identität wird zurückgesetzt und ein neuer Pairing-Code erzeugt…",
123
- "claude.dialogConfirm": "Claude Code fordert Bestätigung an ({kind})",
124
- "claude.resultTruncated": " (Ergebnis gekürzt)",
125
- "claude.streamError": "claude-Streaming-Fehler",
126
- "claude.errListSessions": "Claude-Sitzungsliste konnte nicht gelesen werden",
127
- "claude.errReadHistory": "Sitzungsverlauf konnte nicht gelesen werden ({id})",
128
- "setup.langSet": "Laufzeitsprache gesetzt auf",
129
- "setup.langHint": "Der Adapter gibt nach dem Neustart in dieser Sprache aus (TUNNELBOX_LANG kann zur Laufzeit überschreiben). Statusdatei:",
130
- "setup.langCurrent": "Aktuelle Laufzeitsprache",
131
- "hermes.errNoRelay": "Keine Relay-URL konfiguriert: mit --env einen Standardwert einfügen oder zur Laufzeit mit TUNNELBOX_RELAY_URL überschreiben",
132
- "hermes.logConnected": "Mit Relay verbunden {url}",
133
- "hermes.logMsgUncaught": "Nicht abgefangene Ausnahme bei der Nachrichtenverarbeitung: {message}",
134
- "hermes.logDisconnected": "Vom Relay getrennt, automatische Neuverbindung…",
135
- "hermes.logPairCode": "Pairing-Code generiert: {code}",
136
- "hermes.logUnhandledType": "Nicht behandelter Nachrichtentyp: {type}",
137
- "hermes.logHandleFailed": "Fehler beim Verarbeiten von {type}: {message}",
138
- "hermes.logClaimed": "An Ihr Telefonkonto gebunden. Das Telefon verbindet sich künftig direkt über Meine Computer",
139
- "hermes.logResetIdentity": "Vom Konto entbunden; Identität wird zurückgesetzt und ein neuer Pairing-Code generiert…",
140
- "hermes.cmdNew": "Neue Sitzung",
141
- "hermes.cmdHelp": "Hilfe anzeigen",
142
- "hermes.newSessionTitle": "Neue Sitzung",
143
- "hermes.helpText": "Unterstützte Befehle:\n- /new neue Sitzung\n- /help Hilfe anzeigen",
144
- "hermes.errBusy": "Diese Sitzung wird gerade generiert; warten Sie auf den Abschluss oder stoppen Sie sie zuerst",
145
- "hermes.errBadWorkspace": "Dieses Verzeichnis existiert nicht oder ist unbrauchbar",
146
- "hermes.logWorkspaceSwitched": "Arbeitsbereich gewechselt: {path}",
147
- "hermes.errWorkspaceMissing": "Arbeitsbereich existiert nicht: {dir}",
148
- "hermes.errStartFailed": "Start fehlgeschlagen: {message}",
149
- "hermes.msgStarted": "Hermes-Adapter gestartet (Strg+C zum Beenden)",
150
- "hermes.logAbortSent": "Abbruch gesendet (session={session})",
151
- "hermes.logPromptFailed": "session.prompt fehlgeschlagen: {message}",
152
- "hermes.logTurnError": "Fehler bei Runde (session={session}): {message}",
153
- "hermes.logPairForced": "--pair: Pairing-Code erzwungen (nur dieser Lauf)",
154
- "hermes.pairingStillClaimed": "Bereits an ein Telefonkonto gebunden: Dieser Code dient nur zum erneuten Pairing eines neuen Geräts desselben Kontos; das aktuelle Gerät verbindet sich direkt über Meine Computer",
155
- "hermes.logPairNoRelay": "Kein Pairing-Code anforderbar: keine Relay-URL konfiguriert",
156
- "hermes.errSpawnHermes": "Hermes ({bin}) kann nicht gestartet werden: bitte Installation prüfen ({err})",
157
- "hermes.errHermesExit": "hermes beendet ({code}): {err}",
158
- "hermes.logSessionUpdated": "Sitzung aktualisiert (session={session})",
159
- "hermes.errNoInject": "Telefon-Nachrichteneinspeisung nicht verfügbar (Sitzung nicht interaktiv oder Prozess nicht bereit)",
160
- "hermes.pairNoRelay": "Relay nicht erreichbar (Relay nicht erreichbar oder websockets fehlt)",
161
- "hermes.pairTimeout": "Zeitüberschreitung bei der Pairing-Code-Anfrage (Relay antwortete nicht)",
162
- "hermes.errToolPair": "tunnelbox_pair fehlgeschlagen: {err}",
163
- "hermes.errToolStatus": "tunnelbox_status fehlgeschlagen: {err}",
164
- "hermes.cliUsage": "Verwendung: /tunnelbox <pair|status>\n pair Pairing-Code anfordern und anzeigen\n status Relay/Bindung/Verbindung anzeigen"
165
- }
1
+ {
2
+ "agent.err.createSession": "Sitzung konnte nicht erstellt werden",
3
+ "agent.err.httpClient": "Auf den opencode-HTTP-Client kann nicht zugegriffen werden",
4
+ "agent.err.unknownPerm": "Unbekannte Berechtigungsanfrage: {id}",
5
+ "agent.err.unknownQuestion": "Unbekannte Frageanfrage: {id}",
6
+ "agent.log.fallback404": "Bevorzugter Endpunkt lieferte 404, Fallback auf den anderen: {message}",
7
+ "agent.log.gotPermReply": "Berechtigungsantwort vom Telefon erhalten (id={id} {reply} {version})",
8
+ "agent.log.gotQuestionReply": "Frageantwort vom Telefon erhalten (id={id} {status} {version})",
9
+ "agent.log.handleFailed": "Fehler beim Verarbeiten von {type}: {message}",
10
+ "agent.log.msgOk": "Session-Nachrichten OK session={session} data={count} Modus={limited} win={win} ms={ms}",
11
+ "agent.log.msgFailed": "Session-Nachrichten fehlgeschlagen session={session} err={err} ms={ms}",
12
+ "agent.log.msgLimitFallback": "limit nicht unterstützt, Rückfall auf vollständigen Abruf (session={session})",
13
+ "agent.log.httpOk": "opencode HTTP {status} {path}",
14
+ "agent.log.pendingResent": "session.pending: {count} ausstehende Anfrage(n) für {session} erneut gesendet",
15
+ "agent.log.unhandledType": "Nicht behandelter Nachrichtentyp: {type}",
16
+ "events.log.fwdPermission": "Berechtigungsanfrage an Telefon weitergeleitet (id={id} tool={tool} {version})",
17
+ "events.log.sessionDeleted": "session.deleted an Telefon weitergeleitet (session={session})",
18
+ "events.log.permissionReplied": "opencode quittierte permission.replied (id={id} {response})",
19
+ "events.log.questionRejected": "opencode quittierte question.rejected (id={id})",
20
+ "events.log.questionReplied": "opencode quittierte question.replied (id={id})",
21
+ "index.error.connectRelay": "Verbindung zum Relay nicht möglich; prüfen Sie die Relay-Adresse und versuchen Sie es erneut",
22
+ "index.error.pairTimeout": "Zeitüberschreitung beim Warten auf einen Pairing-Code (Relay antwortet nicht)",
23
+ "index.log.claimed": "An Ihr Telefonkonto gebunden. Das Telefon verbindet sich nun direkt über “Meine PCs”; kein erneutes Scannen nötig",
24
+ "index.log.connectedRelay": "Mit Relay verbunden {url}",
25
+ "index.log.loaded": "tunnelbox-opencode-Plugin gestartet (v{version})",
26
+ "index.log.disconnected": "Vom Relay getrennt, verbinde automatisch neu…",
27
+ "index.log.exit": "Beendet",
28
+ "index.log.pairCode": "Pairing-Code erzeugt: {code}",
29
+ "index.log.pairingStillClaimed": "Dieser Pairing-Code dient nur zum erneuten Pairing eines neuen Telefons im selben Konto. Dieser Computer ist bereits verknüpft und bleibt über „Meine Computer“ auf Ihrem Telefon erreichbar.",
30
+ "index.log.pairingPreparing": "Verbindung zum Relay wird hergestellt und Pairing-Code generiert…",
31
+ "index.log.permissionToPhone": "Berechtigungsanfrage Genehmigung am Telefon (id={id} tool={tool})",
32
+ "index.log.permissionTuiFallback": "App offline; Berechtigungsanfrage wird vom opencode-TUI übernommen (id={id} tool={tool})",
33
+ "index.log.relayError": "Relay-Fehler: {msg}",
34
+ "index.log.resetIdentity": "Vom Konto gelöst; Identität wird zurückgesetzt und ein neuer Pairing-Code erzeugt…",
35
+ "index.log.unknown": "Unbekannt",
36
+ "install.codeLine": "Pairing-Code: {code}",
37
+ "install.commandInstalled": "Befehl installiert: {path}",
38
+ "install.done": "Fertig. Versuche, eine Verbindung zum Relay herzustellen und Pairing-Informationen auszugeben:",
39
+ "install.failConnect": "(Keine sofortige Verbindung zum Relay zum Drucken der Pairing-Informationen möglich Relay nicht erreichbar oder Node zu alt.",
40
+ "install.failConnectHint": "Nach dem Neustart von opencode den Terminal-QR-Code mit --print-logs anzeigen oder im opencode “Telefon-Pairing-Code anzeigen” bzw. /pair eingeben.)",
41
+ "install.hintFresh": "Hinweis: Der Pairing-Code ist einmalig und etwa 10 Minuten gültig. Wenn Sie opencode später starten, nutzen Sie die beim Start gedruckten oder per /pair abgerufenen aktuellen Informationen.",
42
+ "install.pluginInstalled": "Plugin installiert: {path}",
43
+ "install.qrUnavailable": "(QR-Darstellung nicht verfügbar nutzen Sie den Code oben)",
44
+ "install.qrcodeEnsure": "Installiere qrcode in das opencode-Konfigurationsverzeichnis…",
45
+ "install.qrcodeFail": "qrcode-Installation fehlgeschlagen (nicht kritisch — nur der Pairing-Code wird angezeigt): {err}",
46
+ "install.relayError": "Relay hat einen Fehler zurückgegeben: {msg}",
47
+ "install.scanHint": "Öffnen Sie tunnelbox auf dem Telefon, tippen Sie auf “Zum Pairing scannen” und scannen Sie den QR-Code oben zum Verbinden:",
48
+ "pair.heading": "tunnelbox Telefon-Pairing",
49
+ "pair.howTo": "Öffnen Sie die tunnelbox-App auf dem Telefon und scannen Sie den QR-Code oben mit “Zum Pairing scannen”, oder geben Sie den Pairing-Code manuell ein.",
50
+ "pair.oneTime": "Der Pairing-Code ist einmalig und verfällt nach der Nutzung; für einen neuen Code “Pairing-Code aktualisieren” anfordern.",
51
+ "pair.promptBody": "Zeigen Sie bitte die Telefon-Pairing-Informationen dieses Computers an: den Pairing-Code und einen scannbaren QR-Code. Behalten Sie den QR-Code in einem Codeblock mit fester Breite und geben Sie ihn zeichengenau wieder, damit mein Telefon ihn scannen kann.",
52
+ "pair.promptDescription": "Pairing-Code und scannbaren QR-Code anzeigen",
53
+ "pair.scanIntro": "**Per Scan pairen**: Öffnen Sie die tunnelbox-App auf dem Telefon, tippen Sie auf “Zum Pairing scannen” und scannen Sie den QR-Code unten, um sich automatisch zu verbinden.",
54
+ "perm.promptAuthorize": "opencode fordert eine Genehmigung an",
55
+ "perm.promptPatterns": "opencode fordert Zugriff auf: {list}",
56
+ "perm.promptResource": "opencode fordert Zugriff auf Ressourcen: {list}",
57
+ "perm.promptTool": "opencode fordert die Ausführung von {tool} an",
58
+ "qr.codeLabel": "Pairing-Code",
59
+ "qr.fileWritten": "Pairing-Informationen geschrieben in: {path}",
60
+ "qr.openHint": "Öffnen Sie die tunnelbox-App auf dem Telefon und scannen Sie den QR-Code oben, oder geben Sie den Pairing-Code manuell in der App ein.",
61
+ "qr.titleNoType": "tunnelbox Telefon-Pairing",
62
+ "qr.titleWithType": "tunnelbox {type} Telefon-Pairing",
63
+ "qr.unavailable": "(qrcode nicht installiert nutzen Sie den Pairing-Code oben)",
64
+ "claude.errBusy": "Diese Sitzung läuft noch; warten Sie auf das Ende oder stoppen Sie sie zuerst",
65
+ "claude.errTurn": "Generierungsfehler",
66
+ "claude.pairingStillClaimed": "Bereits an ein Telefonkonto gebunden: Dieser Code dient nur zum Koppeln eines neuen Geräts auf demselben Konto; das aktuelle Gerät verbindet sich direkt über „Meine Computer“",
67
+ "claude.pairForced": "--pair: Pairing-Code erzwungen (nur dieser Lauf)",
68
+ "claude.pairUnclaimed": "Kein gebundenes Konto erkannt; Start der Pairing-Anleitung:",
69
+ "claude.claimedHint": "An ein Telefonkonto gebunden: direkt über „Meine Computer“ auf dem Telefon verbinden",
70
+ "claude.errStartFailed": "Start fehlgeschlagen:",
71
+ "claude.msgStarted": "Claude-Code-Adapter gestartet (Strg+C zum Beenden)",
72
+ "claude.warnInvalidMode": "Ungültiges TUNNELBOX_CLAUDE_MODE ignoriert: {raw} (erlaubt {list})",
73
+ "claude.warnInvalidThinking": "Ungültiges TUNNELBOX_CLAUDE_THINKING ignoriert: {raw} (off|adaptive|enabled[:budget])",
74
+ "claude.cmdNew": "Neue Sitzung",
75
+ "claude.cmdHelp": "Hilfe anzeigen",
76
+ "claude.errNoRelay": "Keine Relay-URL konfiguriert: Standard mit --env injizieren oder zur Laufzeit per TUNNELBOX_RELAY_URL überschreiben",
77
+ "claude.logConnected": "Mit Relay {url} verbunden",
78
+ "claude.logMsgUncaught": "Unbehandelte Ausnahme bei der Nachrichtenverarbeitung: {message}",
79
+ "claude.reasonDisconnect": "Relay getrennt (fail-closed automatische Ablehnung)",
80
+ "claude.reasonUnbind": "Konto entbunden (fail-closed automatische Ablehnung)",
81
+ "claude.logDisconnected": "Vom Relay getrennt, verbinde automatisch neu…",
82
+ "claude.logPairCode": "Pairing-Code generiert: {code}",
83
+ "claude.logUnhandledType": "Unbehandelter Nachrichtentyp: {type}",
84
+ "claude.logHandleFailed": "{type} konnte nicht verarbeitet werden: {message}",
85
+ "claude.newSessionTitle": "Neue Sitzung",
86
+ "claude.helpText": "Unterstützte Befehle:\n- /new neue Sitzung\n- /help Hilfe anzeigen",
87
+ "claude.logPromptFailed": "session.prompt fehlgeschlagen: {message}",
88
+ "claude.logAbortSent": "Abbruch gesendet (session={session})",
89
+ "claude.logAbortFailed": "Abbruch fehlgeschlagen (session={session}): {message}",
90
+ "claude.errBadWorkspaceEmpty": "Pfad zum Arbeitsbereich fehlt",
91
+ "claude.errBadWorkspaceNotDir": "Verzeichnis existiert nicht oder ist unbrauchbar",
92
+ "claude.logWorkspaceSwitched": "Arbeitsbereich gewechselt: {path}",
93
+ "claude.logUnknownQuestionReply": "Keine Übereinstimmung für strukturierte Frage-Antwort (id={id})",
94
+ "claude.logFlushedQuestions": "{count} ausstehende Frage(n) abgebrochen: {reason}",
95
+ "claude.logFlushedApprovals": "{count} ausstehende Anfrage(n) abgelehnt: {reason}",
96
+ "claude.logPendingResent": "session.pending: {count} ausstehende(r) Eintrag/Einträge für {session} erneut gesendet",
97
+ "claude.logSetModeFailed": "setPermissionMode fehlgeschlagen (session={session}): {message}",
98
+ "claude.errWorkspaceMissing": "Arbeitsbereich existiert nicht: {dir}",
99
+ "claude.logSessionError": "Sitzungsfehler (session={session}): {message}",
100
+ "claude.logOfflineDenyTool": "Relay offline, Tool {tool} automatisch abgelehnt",
101
+ "claude.errOfflineDeny": "Relay offline, automatisch abgelehnt (fail-closed)",
102
+ "claude.logAuqDisabled": "AskUserQuestion deaktiviert (TUNNELBOX_CLAUDE_ASK_USER_QUESTION=0), automatisch abgelehnt",
103
+ "claude.errAuqDisabled": "AskUserQuestion ist nicht aktiviert",
104
+ "claude.logAuqParseFailed": "AskUserQuestion-Eingabe konnte nicht geparst werden, automatisch abgelehnt (fail-closed)",
105
+ "claude.errAuqParse": "Fragen konnten nicht geparst werden",
106
+ "claude.logAuqSkipped": "AskUserQuestion unbeantwortet/abgebrochen (session={session})",
107
+ "claude.errAuqCancelled": "Keine Auswahl durch Benutzer (abgebrochen)",
108
+ "claude.logAuqDone": "AskUserQuestion beantwortet (session={session})",
109
+ "claude.promptRunTool": "Claude Code fordert Ausführung von {tool}",
110
+ "claude.errApprovalTimeout": "Genehmigung abgelaufen, automatisch abgelehnt (fail-closed)",
111
+ "claude.errUserDenied": "Vom Benutzer abgelehnt",
112
+ "claude.errAborted": "Anfrage abgebrochen",
113
+ "claude.logPermToPhone": "Berechtigungsanfrage (tool={tool}) an Telefon gesendet permissionID={id}",
114
+ "claude.errRelayUnreachable": "Relay nicht erreichbar, automatisch abgelehnt (fail-closed)",
115
+ "claude.logQuestionOffline": "Relay offline, strukturierte Frage automatisch abgebrochen",
116
+ "claude.logQuestionToPhone": "Strukturierte Frage ({count}) an Telefon gesendet questionID={id}",
117
+ "claude.logDialogOffline": "Relay offline, Dialog automatisch abgebrochen ({tool})",
118
+ "claude.logDialogToPhone": "Dialoganfrage (kind={kind} tool={tool}) an Telefon gesendet permissionID={id}",
119
+ "claude.logAuqDialogParse": "AskUserQuestion-Payload konnte nicht geparst werden, Standardverhalten beibehalten (session={session})",
120
+ "claude.logDialogUnmapped": "request_user_dialog(kind={kind}) ohne Zuordnung, Standardverhalten beibehalten (session={session})",
121
+ "claude.promptMcpAuth": "MCP {server} fordert Autorisierung",
122
+ "claude.logElicitUnmapped": "MCP-Elicitation (server={server}, mode={mode}) nicht behandelt, automatisch abgelehnt (session={session})",
123
+ "claude.logResetIdentity": "Konto entbunden; Identität wird zurückgesetzt und ein neuer Pairing-Code erzeugt…",
124
+ "claude.dialogConfirm": "Claude Code fordert Bestätigung an ({kind})",
125
+ "claude.resultTruncated": "… (Ergebnis gekürzt)",
126
+ "claude.streamError": "claude-Streaming-Fehler",
127
+ "claude.errListSessions": "Claude-Sitzungsliste konnte nicht gelesen werden",
128
+ "claude.errReadHistory": "Sitzungsverlauf konnte nicht gelesen werden ({id})",
129
+ "setup.langSet": "Laufzeitsprache gesetzt auf",
130
+ "setup.langHint": "Der Adapter gibt nach dem Neustart in dieser Sprache aus (TUNNELBOX_LANG kann zur Laufzeit überschreiben). Statusdatei:",
131
+ "setup.langCurrent": "Aktuelle Laufzeitsprache",
132
+ "hermes.errNoRelay": "Keine Relay-URL konfiguriert: mit --env einen Standardwert einfügen oder zur Laufzeit mit TUNNELBOX_RELAY_URL überschreiben",
133
+ "hermes.logConnected": "Mit Relay verbunden {url}",
134
+ "hermes.logMsgUncaught": "Nicht abgefangene Ausnahme bei der Nachrichtenverarbeitung: {message}",
135
+ "hermes.logDisconnected": "Vom Relay getrennt, automatische Neuverbindung…",
136
+ "hermes.logPairCode": "Pairing-Code generiert: {code}",
137
+ "hermes.logUnhandledType": "Nicht behandelter Nachrichtentyp: {type}",
138
+ "hermes.logHandleFailed": "Fehler beim Verarbeiten von {type}: {message}",
139
+ "hermes.logClaimed": "An Ihr Telefonkonto gebunden. Das Telefon verbindet sich künftig direkt über Meine Computer",
140
+ "hermes.logResetIdentity": "Vom Konto entbunden; Identität wird zurückgesetzt und ein neuer Pairing-Code generiert…",
141
+ "hermes.cmdNew": "Neue Sitzung",
142
+ "hermes.cmdHelp": "Hilfe anzeigen",
143
+ "hermes.newSessionTitle": "Neue Sitzung",
144
+ "hermes.helpText": "Unterstützte Befehle:\n- /new neue Sitzung\n- /help Hilfe anzeigen",
145
+ "hermes.errBusy": "Diese Sitzung wird gerade generiert; warten Sie auf den Abschluss oder stoppen Sie sie zuerst",
146
+ "hermes.errBadWorkspace": "Dieses Verzeichnis existiert nicht oder ist unbrauchbar",
147
+ "hermes.logWorkspaceSwitched": "Arbeitsbereich gewechselt: {path}",
148
+ "hermes.errWorkspaceMissing": "Arbeitsbereich existiert nicht: {dir}",
149
+ "hermes.errStartFailed": "Start fehlgeschlagen: {message}",
150
+ "hermes.msgStarted": "Hermes-Adapter gestartet (Strg+C zum Beenden)",
151
+ "hermes.logAbortSent": "Abbruch gesendet (session={session})",
152
+ "hermes.logPromptFailed": "session.prompt fehlgeschlagen: {message}",
153
+ "hermes.logTurnError": "Fehler bei Runde (session={session}): {message}",
154
+ "hermes.logPairForced": "--pair: Pairing-Code erzwungen (nur dieser Lauf)",
155
+ "hermes.pairingStillClaimed": "Bereits an ein Telefonkonto gebunden: Dieser Code dient nur zum erneuten Pairing eines neuen Geräts desselben Kontos; das aktuelle Gerät verbindet sich direkt über Meine Computer",
156
+ "hermes.logPairNoRelay": "Kein Pairing-Code anforderbar: keine Relay-URL konfiguriert",
157
+ "hermes.errSpawnHermes": "Hermes ({bin}) kann nicht gestartet werden: bitte Installation prüfen ({err})",
158
+ "hermes.errHermesExit": "hermes beendet ({code}): {err}",
159
+ "hermes.logSessionUpdated": "Sitzung aktualisiert (session={session})",
160
+ "hermes.errNoInject": "Telefon-Nachrichteneinspeisung nicht verfügbar (Sitzung nicht interaktiv oder Prozess nicht bereit)",
161
+ "hermes.pairNoRelay": "Relay nicht erreichbar (Relay nicht erreichbar oder websockets fehlt)",
162
+ "hermes.pairTimeout": "Zeitüberschreitung bei der Pairing-Code-Anfrage (Relay antwortete nicht)",
163
+ "hermes.errToolPair": "tunnelbox_pair fehlgeschlagen: {err}",
164
+ "hermes.errToolStatus": "tunnelbox_status fehlgeschlagen: {err}",
165
+ "hermes.cliUsage": "Verwendung: /tunnelbox <pair|status>\n pair Pairing-Code anfordern und anzeigen\n status Relay/Bindung/Verbindung anzeigen"
166
+ }