dsh-rewind-plugin 0.19.1 → 0.20.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +30 -30
- package/README.md +27 -25
- package/docs/DETAIL.md +1 -0
- package/docs/DETAIL.zh.md +1 -0
- package/docs/preview.svg +1 -0
- package/docs/preview.zh.svg +1 -0
- package/lib/client.js +264 -24
- package/lib/index.js +231 -1
- package/lib/types/client/hidden.d.ts +22 -3
- package/lib/types/client/locales.d.ts +15 -0
- package/lib/types/client/pending.d.ts +5 -2
- package/lib/types/client/portals.d.ts +3 -4
- package/lib/types/locales.d.ts +15 -0
- package/locale/de.json +7 -0
- package/locale/en.json +2 -1
- package/locale/es.json +7 -0
- package/locale/fr.json +7 -0
- package/locale/ja.json +2 -1
- package/locale/pt.json +7 -0
- package/locale/ru.json +7 -0
- package/locale/zh.json +2 -1
- package/package.json +70 -65
package/lib/index.js
CHANGED
|
@@ -142,7 +142,237 @@ var ja = {
|
|
|
142
142
|
"cleanup.clearFailed": "\u30BB\u30C3\u30B7\u30E7\u30F3 {sessionId} \u3092\u6D88\u53BB\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF1A{detail}\u3002",
|
|
143
143
|
"cleanup.usage": "\u4F7F\u3044\u65B9\uFF1A\n /snapshot-auto-cleanup \u72B6\u614B\u3092\u8868\u793A\n /snapshot-auto-cleanup on|off \u81EA\u52D5\u30AF\u30EA\u30FC\u30F3\u30A2\u30C3\u30D7\u306E\u6709\u52B9/\u7121\u52B9\n /snapshot-auto-cleanup max-age <\u65E5\u6570> \u30A2\u30A4\u30C9\u30EB\u3057\u304D\u3044\u5024\u3092\u8A2D\u5B9A\n /snapshot-auto-cleanup run [--apply] \u30C9\u30E9\u30A4\u30E9\u30F3\u3001\u307E\u305F\u306F --apply \u3067\u5B9F\u884C\n /snapshot-auto-cleanup run --current [--apply] \u30C9\u30E9\u30A4\u30E9\u30F3\uFF0F\u73FE\u5728\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\u3092\u6D88\u53BB"
|
|
144
144
|
};
|
|
145
|
-
var
|
|
145
|
+
var es = {
|
|
146
|
+
"plan.skip": " no restaurado: {path} ({reason})",
|
|
147
|
+
"skipReason.oversized": "supera el l\xEDmite de copias de seguridad de {limit}, por lo que el estado registrado es anterior a los cambios no rastreados",
|
|
148
|
+
"error.invalidTarget": 'No se puede interpretar el destino "{raw}" (se esperaba <index> o @<seq>)',
|
|
149
|
+
"sep.list": ", ",
|
|
150
|
+
"sep.clause": "; ",
|
|
151
|
+
"failures.suffix": "; no se pudieron restaurar {count} archivo(s): {list}",
|
|
152
|
+
"failures.item": "{path} ({message})",
|
|
153
|
+
"inflight": "Ya hay un rebobinado en curso para esta sesi\xF3n; espere por favor.",
|
|
154
|
+
"stopFailed": "No se pudo detener el agente en ejecuci\xF3n; rebobinado cancelado. Int\xE9ntelo de nuevo.",
|
|
155
|
+
"cancelled": "Rebobinado cancelado.",
|
|
156
|
+
"failed": "Error al rebobinar: {error}. La sesi\xF3n no ha cambiado.",
|
|
157
|
+
"restore.count": "{count} archivo(s) restaurado(s)",
|
|
158
|
+
"delete.count": "{count} archivo(s) eliminado(s)",
|
|
159
|
+
"skip.count": "{count} ruta(s) omitida(s)",
|
|
160
|
+
"noRestorable": "; no hay cambios de escritura restaurables despu\xE9s del destino",
|
|
161
|
+
"backupOff": "las copias de seguridad de instant\xE1neas est\xE1n desactivadas, la restauraci\xF3n puede ser incompleta",
|
|
162
|
+
"storeUnsupported": "restauraci\xF3n de archivos no disponible: estas instant\xE1neas usan un formato de almacenamiento m\xE1s reciente (v{version}) que este plugin no entiende; no se ha cambiado nada. Actualice el plugin o borre las instant\xE1neas de esta sesi\xF3n.",
|
|
163
|
+
"success": "Retirado seq {targetSeq} y todo lo posterior (conversaci\xF3n devuelta a un punto anterior){restore}.",
|
|
164
|
+
"noUserMessages": "Esta sesi\xF3n a\xFAn no tiene mensajes de usuario a los que rebobinar.",
|
|
165
|
+
"command.description": "Rebobinar la conversaci\xF3n y/o los archivos a un punto anterior",
|
|
166
|
+
"command.undoDescription": "Alias de /rewind",
|
|
167
|
+
"engine.description": "Comando interno de dsh-rewind",
|
|
168
|
+
"engine.rejected": "Comando interno: use /rewind o /undo.",
|
|
169
|
+
"engine.inputHint": "@<seq> chat|both",
|
|
170
|
+
"cleanup.description": "Gestionar la limpieza autom\xE1tica de las copias de seguridad de instant\xE1neas de sesi\xF3n",
|
|
171
|
+
"cleanup.inputHint": "on | off | max-age <d\xEDas> | run [--apply] [--current]",
|
|
172
|
+
"cleanup.status": "Limpieza autom\xE1tica: {state}. Antig\xFCedad m\xE1xima: {days} d\xEDa(s).",
|
|
173
|
+
"cleanup.enabled": "activada",
|
|
174
|
+
"cleanup.disabled": "desactivada",
|
|
175
|
+
"cleanup.onOk": "Limpieza autom\xE1tica activada.",
|
|
176
|
+
"cleanup.offOk": "Limpieza autom\xE1tica desactivada: se conservan todas las instant\xE1neas.",
|
|
177
|
+
"cleanup.maxAgeOk": "Antig\xFCedad m\xE1xima de la limpieza autom\xE1tica: {days} d\xEDa(s).",
|
|
178
|
+
"cleanup.cfgInvalid": 'Configuraci\xF3n de limpieza de instant\xE1neas no v\xE1lida: {detail}. No se ejecut\xF3 nada; use "on|off|max-age" para restablecer la configuraci\xF3n.',
|
|
179
|
+
"cleanup.saveFailed": "No se pudo guardar la configuraci\xF3n de limpieza: {detail}.",
|
|
180
|
+
"cleanup.runDry": "Simulaci\xF3n: se eliminar\xEDan {deleted} copia(s) de seguridad de instant\xE1neas de sesi\xF3n y se liberar\xEDan {freed} bytes. Vuelva a ejecutar con --apply para eliminar.",
|
|
181
|
+
"cleanup.runApply": "Se eliminaron {deleted} copia(s) de seguridad de instant\xE1neas de sesi\xF3n y se liberaron {freed} bytes; {kept} conservada(s), quedan {remaining} bytes.",
|
|
182
|
+
"cleanup.runFailed": "Error en la limpieza: {detail}.",
|
|
183
|
+
"cleanup.skipped": "({skipped} sesi\xF3n(es) activa(s) omitida(s).)",
|
|
184
|
+
"cleanup.clearDry": "Simulaci\xF3n: se borrar\xEDan {entries} instant\xE1nea(s) de la sesi\xF3n actual y se liberar\xEDan {bytes} bytes. Vuelva a ejecutar con --apply para eliminar.",
|
|
185
|
+
"cleanup.clearApply": "Se borraron {entries} instant\xE1nea(s) de la sesi\xF3n actual y se liberaron {bytes} bytes. La sesi\xF3n ahora registra instant\xE1neas nuevas desde su estado actual.",
|
|
186
|
+
"cleanup.clearActive": "No se pudo borrar la sesi\xF3n {sessionId}: sigue en ejecuci\xF3n y no se pudo detener. Int\xE9ntelo de nuevo cuando est\xE9 inactiva.",
|
|
187
|
+
"cleanup.clearCancelled": "Borrado cancelado.",
|
|
188
|
+
"cleanup.clearFailed": "No se pudo borrar la sesi\xF3n {sessionId}: {detail}.",
|
|
189
|
+
"cleanup.usage": "Uso:\n /snapshot-auto-cleanup mostrar estado\n /snapshot-auto-cleanup on|off activar/desactivar la limpieza autom\xE1tica\n /snapshot-auto-cleanup max-age <d\xEDas> definir el umbral de inactividad\n /snapshot-auto-cleanup run [--apply] simular, o ejecutar con --apply\n /snapshot-auto-cleanup run --current [--apply] simular/borrar las instant\xE1neas de esta sesi\xF3n"
|
|
190
|
+
};
|
|
191
|
+
var fr = {
|
|
192
|
+
"plan.skip": " non restaur\xE9 : {path} ({reason})",
|
|
193
|
+
"skipReason.oversized": "d\xE9passe la limite de {limit} sauvegardes : l\u2019\xE9tat enregistr\xE9 pr\xE9c\xE8de les modifications non suivies",
|
|
194
|
+
"error.invalidTarget": "Impossible d\u2019analyser la cible \xAB {raw} \xBB (attendu : <index> ou @<seq>)",
|
|
195
|
+
"sep.list": ", ",
|
|
196
|
+
"sep.clause": " ; ",
|
|
197
|
+
"failures.suffix": " ; \xE9chec de la restauration de {count} fichier(s) : {list}",
|
|
198
|
+
"failures.item": "{path} ({message})",
|
|
199
|
+
"inflight": "Un rembobinage est d\xE9j\xE0 en cours pour cette session ; veuillez patienter.",
|
|
200
|
+
"stopFailed": "Impossible d\u2019arr\xEAter l\u2019agent en cours ; rembobinage annul\xE9. Veuillez r\xE9essayer.",
|
|
201
|
+
"cancelled": "Rembobinage annul\xE9.",
|
|
202
|
+
"failed": "\xC9chec du rembobinage : {error}. La session est inchang\xE9e.",
|
|
203
|
+
"restore.count": "{count} fichier(s) restaur\xE9(s)",
|
|
204
|
+
"delete.count": "{count} fichier(s) supprim\xE9(s)",
|
|
205
|
+
"skip.count": "{count} chemin(s) ignor\xE9(s)",
|
|
206
|
+
"noRestorable": " ; aucune modification d\u2019\xE9criture restaurable apr\xE8s la cible",
|
|
207
|
+
"backupOff": "les sauvegardes d\u2019instantan\xE9s sont d\xE9sactiv\xE9es, la restauration peut \xEAtre incompl\xE8te",
|
|
208
|
+
"storeUnsupported": "restauration de fichiers indisponible : ces instantan\xE9s utilisent un format de stockage plus r\xE9cent (v{version}) que celui compris par ce plugin ; rien n\u2019a \xE9t\xE9 modifi\xE9. Mettez \xE0 jour le plugin ou effacez les instantan\xE9s de cette session.",
|
|
209
|
+
"success": "Retir\xE9 seq {targetSeq} et tout ce qui suit (conversation revenue \xE0 un point ant\xE9rieur){restore}.",
|
|
210
|
+
"noUserMessages": "Cette session n\u2019a pas encore de messages utilisateur vers lesquels rembobiner.",
|
|
211
|
+
"command.description": "Rembobiner la conversation et/ou les fichiers \xE0 un point ant\xE9rieur",
|
|
212
|
+
"command.undoDescription": "Alias de /rewind",
|
|
213
|
+
"engine.description": "Commande interne de dsh-rewind",
|
|
214
|
+
"engine.rejected": "Commande interne : utilisez /rewind ou /undo.",
|
|
215
|
+
"engine.inputHint": "@<seq> chat|both",
|
|
216
|
+
"cleanup.description": "G\xE9rer le nettoyage automatique des sauvegardes d\u2019instantan\xE9s de session",
|
|
217
|
+
"cleanup.inputHint": "on | off | max-age <jours> | run [--apply] [--current]",
|
|
218
|
+
"cleanup.status": "Nettoyage automatique : {state}. Anciennet\xE9 max. : {days} jour(s).",
|
|
219
|
+
"cleanup.enabled": "activ\xE9",
|
|
220
|
+
"cleanup.disabled": "d\xE9sactiv\xE9",
|
|
221
|
+
"cleanup.onOk": "Nettoyage automatique activ\xE9.",
|
|
222
|
+
"cleanup.offOk": "Nettoyage automatique d\xE9sactiv\xE9 \u2014 tous les instantan\xE9s sont conserv\xE9s.",
|
|
223
|
+
"cleanup.maxAgeOk": "Anciennet\xE9 maximale du nettoyage automatique : {days} jour(s).",
|
|
224
|
+
"cleanup.cfgInvalid": "Configuration de nettoyage des instantan\xE9s non valide : {detail}. Rien n\u2019a \xE9t\xE9 ex\xE9cut\xE9 ; utilisez \xAB on|off|max-age \xBB pour r\xE9initialiser la configuration.",
|
|
225
|
+
"cleanup.saveFailed": "Impossible d\u2019enregistrer la configuration de nettoyage : {detail}.",
|
|
226
|
+
"cleanup.runDry": "Simulation : supprimerait {deleted} sauvegarde(s) d\u2019instantan\xE9s de session et lib\xE9rerait {freed} octets. Relancez avec --apply pour supprimer.",
|
|
227
|
+
"cleanup.runApply": "Suppression de {deleted} sauvegarde(s) d\u2019instantan\xE9s de session, lib\xE9ration de {freed} octets ; {kept} conserv\xE9e(s), {remaining} octets restants.",
|
|
228
|
+
"cleanup.runFailed": "\xC9chec du nettoyage : {detail}.",
|
|
229
|
+
"cleanup.skipped": "({skipped} session(s) active(s) ignor\xE9e(s).)",
|
|
230
|
+
"cleanup.clearDry": "Simulation : effacerait {entries} instantan\xE9(s) de la session courante et lib\xE9rerait {bytes} octets. Relancez avec --apply pour supprimer.",
|
|
231
|
+
"cleanup.clearApply": "Suppression de {entries} instantan\xE9(s) de la session courante, lib\xE9ration de {bytes} octets. Cette session enregistre d\xE9sormais de nouveaux instantan\xE9s \xE0 partir de son \xE9tat actuel.",
|
|
232
|
+
"cleanup.clearActive": "Impossible d\u2019effacer la session {sessionId} : elle est toujours en cours et n\u2019a pas pu \xEAtre arr\xEAt\xE9e. R\xE9essayez une fois qu\u2019elle est inactive.",
|
|
233
|
+
"cleanup.clearCancelled": "Effacement annul\xE9.",
|
|
234
|
+
"cleanup.clearFailed": "Impossible d\u2019effacer la session {sessionId} : {detail}.",
|
|
235
|
+
"cleanup.usage": "Utilisation :\n /snapshot-auto-cleanup afficher l\u2019\xE9tat\n /snapshot-auto-cleanup on|off activer/d\xE9sactiver le nettoyage automatique\n /snapshot-auto-cleanup max-age <jours> d\xE9finir le seuil d\u2019inactivit\xE9\n /snapshot-auto-cleanup run [--apply] simuler, ou ex\xE9cuter avec --apply\n /snapshot-auto-cleanup run --current [--apply] simuler/effacer les instantan\xE9s de cette session"
|
|
236
|
+
};
|
|
237
|
+
var de = {
|
|
238
|
+
"plan.skip": " nicht wiederhergestellt: {path} ({reason})",
|
|
239
|
+
"skipReason.oversized": "\xFCber dem Sicherungslimit von {limit}, daher stammt der aufgezeichnete Stand von vor nicht erfassten \xC4nderungen",
|
|
240
|
+
"error.invalidTarget": 'Ziel "{raw}" kann nicht verarbeitet werden (erwartet: <index> oder @<seq>)',
|
|
241
|
+
"sep.list": ", ",
|
|
242
|
+
"sep.clause": "; ",
|
|
243
|
+
"failures.suffix": "; {count} Datei(en) konnten nicht wiederhergestellt werden: {list}",
|
|
244
|
+
"failures.item": "{path} ({message})",
|
|
245
|
+
"inflight": "F\xFCr diese Sitzung l\xE4uft bereits ein Zur\xFCckspulen; bitte warten.",
|
|
246
|
+
"stopFailed": "Der laufende Agent konnte nicht gestoppt werden; Zur\xFCckspulen abgebrochen. Bitte erneut versuchen.",
|
|
247
|
+
"cancelled": "Zur\xFCckspulen abgebrochen.",
|
|
248
|
+
"failed": "Zur\xFCckspulen fehlgeschlagen: {error}. Die Sitzung ist unver\xE4ndert.",
|
|
249
|
+
"restore.count": "{count} Datei(en) wiederhergestellt",
|
|
250
|
+
"delete.count": "{count} Datei(en) gel\xF6scht",
|
|
251
|
+
"skip.count": "{count} Pfad(e) \xFCbersprungen",
|
|
252
|
+
"noRestorable": "; keine wiederherstellbaren Schreib\xE4nderungen nach dem Ziel",
|
|
253
|
+
"backupOff": "Snapshot-Sicherungen sind deaktiviert, die Wiederherstellung kann unvollst\xE4ndig sein",
|
|
254
|
+
"storeUnsupported": "Dateiwiederherstellung nicht verf\xFCgbar: Diese Snapshots nutzen ein neueres Speicherformat (v{version}), als dieses Plugin versteht; es wurde nichts ge\xE4ndert. Aktualisieren Sie das Plugin oder l\xF6schen Sie die Snapshots dieser Sitzung.",
|
|
255
|
+
"success": "seq {targetSeq} und alles danach zur\xFCckgezogen (Unterhaltung auf einen fr\xFCheren Stand zur\xFCckgesetzt){restore}.",
|
|
256
|
+
"noUserMessages": "Diese Sitzung hat noch keine Benutzernachrichten, zu denen zur\xFCckgespult werden kann.",
|
|
257
|
+
"command.description": "Unterhaltung und/oder Dateien auf einen fr\xFCheren Stand zur\xFCckspulen",
|
|
258
|
+
"command.undoDescription": "Alias von /rewind",
|
|
259
|
+
"engine.description": "Interner Befehl von dsh-rewind",
|
|
260
|
+
"engine.rejected": "Interner Befehl: Verwenden Sie /rewind oder /undo.",
|
|
261
|
+
"engine.inputHint": "@<seq> chat|both",
|
|
262
|
+
"cleanup.description": "Automatische Bereinigung der Snapshot-Sicherungen von Sitzungen verwalten",
|
|
263
|
+
"cleanup.inputHint": "on | off | max-age <Tage> | run [--apply] [--current]",
|
|
264
|
+
"cleanup.status": "Automatische Bereinigung: {state}. Max. Alter: {days} Tag(e).",
|
|
265
|
+
"cleanup.enabled": "aktiviert",
|
|
266
|
+
"cleanup.disabled": "deaktiviert",
|
|
267
|
+
"cleanup.onOk": "Automatische Bereinigung aktiviert.",
|
|
268
|
+
"cleanup.offOk": "Automatische Bereinigung deaktiviert \u2014 alle Snapshots bleiben erhalten.",
|
|
269
|
+
"cleanup.maxAgeOk": "Maximales Alter der automatischen Bereinigung: {days} Tag(e).",
|
|
270
|
+
"cleanup.cfgInvalid": 'Konfiguration der Snapshot-Bereinigung ung\xFCltig: {detail}. Es wurde nichts ausgef\xFChrt; setzen Sie die Konfiguration mit "on|off|max-age" zur\xFCck.',
|
|
271
|
+
"cleanup.saveFailed": "Bereinigungskonfiguration konnte nicht gespeichert werden: {detail}.",
|
|
272
|
+
"cleanup.runDry": "Testlauf: w\xFCrde {deleted} Snapshot-Sicherung(en) von Sitzungen entfernen und {freed} Bytes freigeben. Erneut mit --apply ausf\xFChren, um zu l\xF6schen.",
|
|
273
|
+
"cleanup.runApply": "{deleted} Snapshot-Sicherung(en) von Sitzungen entfernt, {freed} Bytes freigegeben; {kept} behalten, {remaining} Bytes verbleiben.",
|
|
274
|
+
"cleanup.runFailed": "Bereinigung fehlgeschlagen: {detail}.",
|
|
275
|
+
"cleanup.skipped": "({skipped} aktive Sitzung(en) \xFCbersprungen.)",
|
|
276
|
+
"cleanup.clearDry": "Testlauf: w\xFCrde {entries} Snapshot(s) der aktuellen Sitzung l\xF6schen und {bytes} Bytes freigeben. Erneut mit --apply ausf\xFChren, um zu l\xF6schen.",
|
|
277
|
+
"cleanup.clearApply": "{entries} Snapshot(s) der aktuellen Sitzung gel\xF6scht, {bytes} Bytes freigegeben. Diese Sitzung zeichnet Snapshots jetzt neu ab ihrem aktuellen Stand auf.",
|
|
278
|
+
"cleanup.clearActive": "Sitzung {sessionId} konnte nicht gel\xF6scht werden: sie l\xE4uft noch und konnte nicht gestoppt werden. Versuchen Sie es erneut, wenn sie inaktiv ist.",
|
|
279
|
+
"cleanup.clearCancelled": "L\xF6schen abgebrochen.",
|
|
280
|
+
"cleanup.clearFailed": "Sitzung {sessionId} konnte nicht gel\xF6scht werden: {detail}.",
|
|
281
|
+
"cleanup.usage": "Aufruf:\n /snapshot-auto-cleanup Status anzeigen\n /snapshot-auto-cleanup on|off automatische Bereinigung aktivieren/deaktivieren\n /snapshot-auto-cleanup max-age <Tage> Inaktivit\xE4tsschwelle festlegen\n /snapshot-auto-cleanup run [--apply] Testlauf oder mit --apply ausf\xFChren\n /snapshot-auto-cleanup run --current [--apply] Testlauf/Snapshots dieser Sitzung l\xF6schen"
|
|
282
|
+
};
|
|
283
|
+
var ru = {
|
|
284
|
+
"plan.skip": " \u043D\u0435 \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E: {path} ({reason})",
|
|
285
|
+
"skipReason.oversized": "\u043F\u0440\u0435\u0432\u044B\u0448\u0435\u043D \u043F\u0440\u0435\u0434\u0435\u043B \u0440\u0435\u0437\u0435\u0440\u0432\u043D\u044B\u0445 \u043A\u043E\u043F\u0438\u0439 {limit}, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0437\u0430\u043F\u0438\u0441\u0430\u043D\u043D\u043E\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u043F\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043D\u0435\u043E\u0442\u0441\u043B\u0435\u0436\u0438\u0432\u0430\u0435\u043C\u044B\u043C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\u043C",
|
|
286
|
+
"error.invalidTarget": '\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0440\u0430\u0437\u043E\u0431\u0440\u0430\u0442\u044C \u0446\u0435\u043B\u044C "{raw}" (\u043E\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044F <index> \u0438\u043B\u0438 @<seq>)',
|
|
287
|
+
"sep.list": ", ",
|
|
288
|
+
"sep.clause": "; ",
|
|
289
|
+
"failures.suffix": "; {count} \u0444\u0430\u0439\u043B(\u043E\u0432) \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C: {list}",
|
|
290
|
+
"failures.item": "{path} ({message})",
|
|
291
|
+
"inflight": "\u0414\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0441\u0435\u0430\u043D\u0441\u0430 \u0443\u0436\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u043E\u0442\u043A\u0430\u0442; \u043F\u043E\u0434\u043E\u0436\u0434\u0438\u0442\u0435.",
|
|
292
|
+
"stopFailed": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0449\u0438\u0439 \u0430\u0433\u0435\u043D\u0442; \u043E\u0442\u043A\u0430\u0442 \u043E\u0442\u043C\u0435\u043D\u0451\u043D. \u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443.",
|
|
293
|
+
"cancelled": "\u041E\u0442\u043A\u0430\u0442 \u043E\u0442\u043C\u0435\u043D\u0451\u043D.",
|
|
294
|
+
"failed": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043E\u0442\u043A\u0430\u0442: {error}. \u0421\u0435\u0430\u043D\u0441 \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0451\u043D.",
|
|
295
|
+
"restore.count": "\u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0444\u0430\u0439\u043B\u043E\u0432: {count}",
|
|
296
|
+
"delete.count": "\u0443\u0434\u0430\u043B\u0435\u043D\u043E \u0444\u0430\u0439\u043B\u043E\u0432: {count}",
|
|
297
|
+
"skip.count": "\u043F\u0440\u043E\u043F\u0443\u0449\u0435\u043D\u043E \u043F\u0443\u0442\u0435\u0439: {count}",
|
|
298
|
+
"noRestorable": "; \u043F\u043E\u0441\u043B\u0435 \u0446\u0435\u043B\u0438 \u043D\u0435\u0442 \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u043C\u044B\u0445 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u0437\u0430\u043F\u0438\u0441\u0438",
|
|
299
|
+
"backupOff": "\u0440\u0435\u0437\u0435\u0440\u0432\u043D\u044B\u0435 \u043A\u043E\u043F\u0438\u0438 \u0441\u043D\u0438\u043C\u043A\u043E\u0432 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u044B, \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043D\u0435\u043F\u043E\u043B\u043D\u044B\u043C",
|
|
300
|
+
"storeUnsupported": "\u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u0444\u0430\u0439\u043B\u043E\u0432 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E: \u044D\u0442\u0438 \u0441\u043D\u0438\u043C\u043A\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E\u0442 \u0431\u043E\u043B\u0435\u0435 \u043D\u043E\u0432\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0430 (v{version}), \u0447\u0435\u043C \u043F\u043E\u043D\u0438\u043C\u0430\u0435\u0442 \u044D\u0442\u043E\u0442 \u043F\u043B\u0430\u0433\u0438\u043D; \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043E. \u041E\u0431\u043D\u043E\u0432\u0438\u0442\u0435 \u043F\u043B\u0430\u0433\u0438\u043D \u0438\u043B\u0438 \u043E\u0447\u0438\u0441\u0442\u0438\u0442\u0435 \u0441\u043D\u0438\u043C\u043A\u0438 \u044D\u0442\u043E\u0433\u043E \u0441\u0435\u0430\u043D\u0441\u0430.",
|
|
301
|
+
"success": "\u041E\u0442\u043E\u0437\u0432\u0430\u043D\u043E seq {targetSeq} \u0438 \u0432\u0441\u0451 \u043F\u043E\u0441\u043B\u0435 \u043D\u0435\u0433\u043E (\u0431\u0435\u0441\u0435\u0434\u0430 \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0435\u043D\u0430 \u043A \u0431\u043E\u043B\u0435\u0435 \u0440\u0430\u043D\u043D\u0435\u043C\u0443 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044E){restore}.",
|
|
302
|
+
"noUserMessages": "\u0412 \u044D\u0442\u043E\u043C \u0441\u0435\u0430\u043D\u0441\u0435 \u043F\u043E\u043A\u0430 \u043D\u0435\u0442 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0439 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u0434\u043B\u044F \u043E\u0442\u043A\u0430\u0442\u0430.",
|
|
303
|
+
"command.description": "\u041E\u0442\u043A\u0430\u0442\u0438\u0442\u044C \u0431\u0435\u0441\u0435\u0434\u0443 \u0438/\u0438\u043B\u0438 \u0444\u0430\u0439\u043B\u044B \u043A \u0431\u043E\u043B\u0435\u0435 \u0440\u0430\u043D\u043D\u0435\u043C\u0443 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044E",
|
|
304
|
+
"command.undoDescription": "\u041F\u0441\u0435\u0432\u0434\u043E\u043D\u0438\u043C /rewind",
|
|
305
|
+
"engine.description": "\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u0430 dsh-rewind",
|
|
306
|
+
"engine.rejected": "\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u0430: \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 /rewind \u0438\u043B\u0438 /undo.",
|
|
307
|
+
"engine.inputHint": "@<seq> chat|both",
|
|
308
|
+
"cleanup.description": "\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0439 \u043E\u0447\u0438\u0441\u0442\u043A\u043E\u0439 \u0440\u0435\u0437\u0435\u0440\u0432\u043D\u044B\u0445 \u043A\u043E\u043F\u0438\u0439 \u0441\u043D\u0438\u043C\u043A\u043E\u0432 \u0441\u0435\u0430\u043D\u0441\u043E\u0432",
|
|
309
|
+
"cleanup.inputHint": "on | off | max-age <\u0434\u043D\u0435\u0439> | run [--apply] [--current]",
|
|
310
|
+
"cleanup.status": "\u0410\u0432\u0442\u043E\u043E\u0447\u0438\u0441\u0442\u043A\u0430: {state}. \u041C\u0430\u043A\u0441. \u0432\u043E\u0437\u0440\u0430\u0441\u0442: {days} \u0434\u043D.",
|
|
311
|
+
"cleanup.enabled": "\u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0430",
|
|
312
|
+
"cleanup.disabled": "\u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0430",
|
|
313
|
+
"cleanup.onOk": "\u0410\u0432\u0442\u043E\u043E\u0447\u0438\u0441\u0442\u043A\u0430 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0430.",
|
|
314
|
+
"cleanup.offOk": "\u0410\u0432\u0442\u043E\u043E\u0447\u0438\u0441\u0442\u043A\u0430 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0430 \u2014 \u0432\u0441\u0435 \u0441\u043D\u0438\u043C\u043A\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u044B.",
|
|
315
|
+
"cleanup.maxAgeOk": "\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0432\u043E\u0437\u0440\u0430\u0441\u0442 \u0430\u0432\u0442\u043E\u043E\u0447\u0438\u0441\u0442\u043A\u0438: {days} \u0434\u043D.",
|
|
316
|
+
"cleanup.cfgInvalid": '\u041D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u0430\u044F \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F \u043E\u0447\u0438\u0441\u0442\u043A\u0438 \u0441\u043D\u0438\u043C\u043A\u043E\u0432: {detail}. \u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u043E; \u0441\u0431\u0440\u043E\u0441\u044C\u0442\u0435 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044E \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E "on|off|max-age".',
|
|
317
|
+
"cleanup.saveFailed": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044E \u043E\u0447\u0438\u0441\u0442\u043A\u0438: {detail}.",
|
|
318
|
+
"cleanup.runDry": "\u041F\u0440\u043E\u0431\u043D\u044B\u0439 \u0437\u0430\u043F\u0443\u0441\u043A: \u0443\u0434\u0430\u043B\u0438\u0442 \u0440\u0435\u0437\u0435\u0440\u0432\u043D\u044B\u0435 \u043A\u043E\u043F\u0438\u0438 \u0441\u043D\u0438\u043C\u043A\u043E\u0432 \u0441\u0435\u0430\u043D\u0441\u043E\u0432 ({deleted}), \u043E\u0441\u0432\u043E\u0431\u043E\u0434\u0438\u0432 {freed} \u0431\u0430\u0439\u0442. \u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 \u0441 --apply, \u0447\u0442\u043E\u0431\u044B \u0443\u0434\u0430\u043B\u0438\u0442\u044C.",
|
|
319
|
+
"cleanup.runApply": "\u0423\u0434\u0430\u043B\u0435\u043D\u044B \u0440\u0435\u0437\u0435\u0440\u0432\u043D\u044B\u0435 \u043A\u043E\u043F\u0438\u0438 \u0441\u043D\u0438\u043C\u043A\u043E\u0432 \u0441\u0435\u0430\u043D\u0441\u043E\u0432 ({deleted}), \u043E\u0441\u0432\u043E\u0431\u043E\u0436\u0434\u0435\u043D\u043E {freed} \u0431\u0430\u0439\u0442; \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u043E {kept}, \u043E\u0441\u0442\u0430\u043B\u043E\u0441\u044C {remaining} \u0431\u0430\u0439\u0442.",
|
|
320
|
+
"cleanup.runFailed": "\u041E\u0448\u0438\u0431\u043A\u0430 \u043E\u0447\u0438\u0441\u0442\u043A\u0438: {detail}.",
|
|
321
|
+
"cleanup.skipped": "({skipped} \u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0445 \u0441\u0435\u0430\u043D\u0441\u043E\u0432 \u043F\u0440\u043E\u043F\u0443\u0449\u0435\u043D\u043E.)",
|
|
322
|
+
"cleanup.clearDry": "\u041F\u0440\u043E\u0431\u043D\u044B\u0439 \u0437\u0430\u043F\u0443\u0441\u043A: \u043E\u0447\u0438\u0441\u0442\u0438\u0442 \u0441\u043D\u0438\u043C\u043A\u0438 \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u0441\u0435\u0430\u043D\u0441\u0430 ({entries}), \u043E\u0441\u0432\u043E\u0431\u043E\u0434\u0438\u0432 {bytes} \u0431\u0430\u0439\u0442. \u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 \u0441 --apply, \u0447\u0442\u043E\u0431\u044B \u0443\u0434\u0430\u043B\u0438\u0442\u044C.",
|
|
323
|
+
"cleanup.clearApply": "\u041E\u0447\u0438\u0449\u0435\u043D\u044B \u0441\u043D\u0438\u043C\u043A\u0438 \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u0441\u0435\u0430\u043D\u0441\u0430 ({entries}), \u043E\u0441\u0432\u043E\u0431\u043E\u0436\u0434\u0435\u043D\u043E {bytes} \u0431\u0430\u0439\u0442. \u0422\u0435\u043F\u0435\u0440\u044C \u0441\u0435\u0430\u043D\u0441 \u0437\u0430\u043F\u0438\u0441\u044B\u0432\u0430\u0435\u0442 \u0441\u043D\u0438\u043C\u043A\u0438 \u0437\u0430\u043D\u043E\u0432\u043E \u043E\u0442 \u0442\u0435\u043A\u0443\u0449\u0435\u0433\u043E \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F.",
|
|
324
|
+
"cleanup.clearActive": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0441\u0435\u0430\u043D\u0441 {sessionId}: \u043E\u043D \u0432\u0441\u0451 \u0435\u0449\u0451 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F \u0438 \u043D\u0435 \u0431\u044B\u043B \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D. \u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443, \u043A\u043E\u0433\u0434\u0430 \u043E\u043D \u043E\u0441\u0432\u043E\u0431\u043E\u0434\u0438\u0442\u0441\u044F.",
|
|
325
|
+
"cleanup.clearCancelled": "\u041E\u0447\u0438\u0441\u0442\u043A\u0430 \u043E\u0442\u043C\u0435\u043D\u0435\u043D\u0430.",
|
|
326
|
+
"cleanup.clearFailed": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0441\u0435\u0430\u043D\u0441 {sessionId}: {detail}.",
|
|
327
|
+
"cleanup.usage": "\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435:\n /snapshot-auto-cleanup \u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435\n /snapshot-auto-cleanup on|off \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C/\u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0430\u0432\u0442\u043E\u043E\u0447\u0438\u0441\u0442\u043A\u0443\n /snapshot-auto-cleanup max-age <\u0434\u043D\u0435\u0439> \u0437\u0430\u0434\u0430\u0442\u044C \u043F\u043E\u0440\u043E\u0433 \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u0438\n /snapshot-auto-cleanup run [--apply] \u043F\u0440\u043E\u0431\u043D\u044B\u0439 \u0437\u0430\u043F\u0443\u0441\u043A \u0438\u043B\u0438 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u0441 --apply\n /snapshot-auto-cleanup run --current [--apply] \u043F\u0440\u043E\u0431\u043D\u044B\u0439 \u0437\u0430\u043F\u0443\u0441\u043A/\u043E\u0447\u0438\u0441\u0442\u043A\u0430 \u0441\u043D\u0438\u043C\u043A\u043E\u0432 \u044D\u0442\u043E\u0433\u043E \u0441\u0435\u0430\u043D\u0441\u0430"
|
|
328
|
+
};
|
|
329
|
+
var pt = {
|
|
330
|
+
"plan.skip": " n\xE3o restaurado: {path} ({reason})",
|
|
331
|
+
"skipReason.oversized": "acima do limite de {limit} backups, ent\xE3o o estado registrado \xE9 anterior a altera\xE7\xF5es n\xE3o rastreadas",
|
|
332
|
+
"error.invalidTarget": 'N\xE3o foi poss\xEDvel interpretar o destino "{raw}" (esperado <index> ou @<seq>)',
|
|
333
|
+
"sep.list": ", ",
|
|
334
|
+
"sep.clause": "; ",
|
|
335
|
+
"failures.suffix": "; falha ao restaurar {count} arquivo(s): {list}",
|
|
336
|
+
"failures.item": "{path} ({message})",
|
|
337
|
+
"inflight": "J\xE1 h\xE1 um rebobinamento em andamento para esta sess\xE3o; aguarde.",
|
|
338
|
+
"stopFailed": "N\xE3o foi poss\xEDvel parar o agente em execu\xE7\xE3o; rebobinamento cancelado. Tente novamente.",
|
|
339
|
+
"cancelled": "Rebobinamento cancelado.",
|
|
340
|
+
"failed": "Falha no rebobinamento: {error}. A sess\xE3o n\xE3o foi alterada.",
|
|
341
|
+
"restore.count": "{count} arquivo(s) restaurado(s)",
|
|
342
|
+
"delete.count": "{count} arquivo(s) exclu\xEDdo(s)",
|
|
343
|
+
"skip.count": "{count} caminho(s) ignorado(s)",
|
|
344
|
+
"noRestorable": "; nenhuma altera\xE7\xE3o de grava\xE7\xE3o restaur\xE1vel ap\xF3s o destino",
|
|
345
|
+
"backupOff": "os backups de snapshots est\xE3o desativados, a restaura\xE7\xE3o pode ficar incompleta",
|
|
346
|
+
"storeUnsupported": "restaura\xE7\xE3o de arquivos indispon\xEDvel: estes snapshots usam um formato de armazenamento mais novo (v{version}) do que este plugin entende; nada foi alterado. Atualize o plugin ou limpe os snapshots desta sess\xE3o.",
|
|
347
|
+
"success": "Retirado seq {targetSeq} e tudo depois dele (conversa retornada a um ponto anterior){restore}.",
|
|
348
|
+
"noUserMessages": "Esta sess\xE3o ainda n\xE3o tem mensagens de usu\xE1rio para rebobinar.",
|
|
349
|
+
"command.description": "Rebobinar a conversa e/ou os arquivos para um ponto anterior",
|
|
350
|
+
"command.undoDescription": "Alias de /rewind",
|
|
351
|
+
"engine.description": "Comando interno do dsh-rewind",
|
|
352
|
+
"engine.rejected": "Comando interno: use /rewind ou /undo.",
|
|
353
|
+
"engine.inputHint": "@<seq> chat|both",
|
|
354
|
+
"cleanup.description": "Gerenciar a limpeza autom\xE1tica dos backups de snapshots de sess\xE3o",
|
|
355
|
+
"cleanup.inputHint": "on | off | max-age <dias> | run [--apply] [--current]",
|
|
356
|
+
"cleanup.status": "Limpeza autom\xE1tica: {state}. Idade m\xE1xima: {days} dia(s).",
|
|
357
|
+
"cleanup.enabled": "ativada",
|
|
358
|
+
"cleanup.disabled": "desativada",
|
|
359
|
+
"cleanup.onOk": "Limpeza autom\xE1tica ativada.",
|
|
360
|
+
"cleanup.offOk": "Limpeza autom\xE1tica desativada \u2014 todos os snapshots s\xE3o mantidos.",
|
|
361
|
+
"cleanup.maxAgeOk": "Idade m\xE1xima da limpeza autom\xE1tica: {days} dia(s).",
|
|
362
|
+
"cleanup.cfgInvalid": 'Configura\xE7\xE3o de limpeza de snapshots inv\xE1lida: {detail}. Nada foi executado; use "on|off|max-age" para redefinir a configura\xE7\xE3o.',
|
|
363
|
+
"cleanup.saveFailed": "N\xE3o foi poss\xEDvel salvar a configura\xE7\xE3o de limpeza: {detail}.",
|
|
364
|
+
"cleanup.runDry": "Simula\xE7\xE3o: removeria {deleted} backup(s) de snapshots de sess\xE3o, liberando {freed} bytes. Execute novamente com --apply para excluir.",
|
|
365
|
+
"cleanup.runApply": "Removidos {deleted} backup(s) de snapshots de sess\xE3o, liberando {freed} bytes; {kept} mantido(s), restam {remaining} bytes.",
|
|
366
|
+
"cleanup.runFailed": "Falha na limpeza: {detail}.",
|
|
367
|
+
"cleanup.skipped": "({skipped} sess\xE3o(\xF5es) ativa(s) ignorada(s).)",
|
|
368
|
+
"cleanup.clearDry": "Simula\xE7\xE3o: limparia {entries} snapshot(s) da sess\xE3o atual, liberando {bytes} bytes. Execute novamente com --apply para excluir.",
|
|
369
|
+
"cleanup.clearApply": "Limpados {entries} snapshot(s) da sess\xE3o atual, liberando {bytes} bytes. Esta sess\xE3o agora registra snapshots novos a partir do estado atual.",
|
|
370
|
+
"cleanup.clearActive": "N\xE3o foi poss\xEDvel limpar a sess\xE3o {sessionId}: ela ainda est\xE1 em execu\xE7\xE3o e n\xE3o p\xF4de ser parada. Tente novamente quando estiver ociosa.",
|
|
371
|
+
"cleanup.clearCancelled": "Limpeza cancelada.",
|
|
372
|
+
"cleanup.clearFailed": "N\xE3o foi poss\xEDvel limpar a sess\xE3o {sessionId}: {detail}.",
|
|
373
|
+
"cleanup.usage": "Uso:\n /snapshot-auto-cleanup mostrar status\n /snapshot-auto-cleanup on|off ativar/desativar a limpeza autom\xE1tica\n /snapshot-auto-cleanup max-age <dias> definir o limite de inatividade\n /snapshot-auto-cleanup run [--apply] simular, ou executar com --apply\n /snapshot-auto-cleanup run --current [--apply] simular/limpar os snapshots desta sess\xE3o"
|
|
374
|
+
};
|
|
375
|
+
var HOST_DICTS = { en, zh, ja, es, fr, de, ru, pt };
|
|
146
376
|
var DEFAULT_HOST_LOCALE = "en";
|
|
147
377
|
function isHostLocale(tag) {
|
|
148
378
|
return Object.hasOwn(HOST_DICTS, tag);
|
|
@@ -92,8 +92,8 @@ export declare function messageTextAt(chat: HiddenChat | undefined, seq: number)
|
|
|
92
92
|
* A durable image reference carried by an `image` content block in the chat
|
|
93
93
|
* snapshot, read structurally (the harness's `ImageAttachmentRef` from
|
|
94
94
|
* dsh-attachment, without importing it, so the plugin survives harness
|
|
95
|
-
* drift).
|
|
96
|
-
*
|
|
95
|
+
* drift). The fields are optional here so the reader tolerates older or
|
|
96
|
+
* partial snapshots; the image read only runs for a complete reference.
|
|
97
97
|
*/
|
|
98
98
|
export interface MessageImageRef {
|
|
99
99
|
readonly attachmentId: string;
|
|
@@ -103,6 +103,25 @@ export interface MessageImageRef {
|
|
|
103
103
|
readonly height?: number;
|
|
104
104
|
readonly name?: string;
|
|
105
105
|
}
|
|
106
|
+
/** One wire content block that may carry a durable image reference. */
|
|
107
|
+
export interface ImageBlockLike {
|
|
108
|
+
readonly type?: string;
|
|
109
|
+
readonly attachment?: {
|
|
110
|
+
readonly attachmentId?: unknown;
|
|
111
|
+
readonly mediaType?: unknown;
|
|
112
|
+
readonly bytes?: unknown;
|
|
113
|
+
readonly width?: unknown;
|
|
114
|
+
readonly height?: unknown;
|
|
115
|
+
readonly name?: unknown;
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Image references carried by a message's content blocks, in order.
|
|
120
|
+
* Malformed and non-image blocks are skipped; `file` blocks are not restorable.
|
|
121
|
+
* @param content - one message's content blocks.
|
|
122
|
+
* @returns the image references, in message order.
|
|
123
|
+
*/
|
|
124
|
+
export declare function imageRefsOf(content: readonly ImageBlockLike[] | undefined): readonly MessageImageRef[];
|
|
106
125
|
/**
|
|
107
126
|
* The durable image references of the human message at `seq` in the chat
|
|
108
127
|
* snapshot, in message order. The composer-refill counterpart of
|
|
@@ -113,7 +132,7 @@ export interface MessageImageRef {
|
|
|
113
132
|
* Reads the same node kinds as `messageTextAt` (`user` and `steering`).
|
|
114
133
|
* Blocks tolerate malformed or missing references (skipped, never a throw),
|
|
115
134
|
* and `image/offload` projections leave the durable reference in place —
|
|
116
|
-
* which is all the
|
|
135
|
+
* which is all the host image read needs. `file` blocks are intentionally
|
|
117
136
|
* excluded: the harness exposes no client-side file-bytes loader (file
|
|
118
137
|
* uploads go one-way), so a file is not restorable.
|
|
119
138
|
* State absent → undefined; a message without images → [].
|
|
@@ -55,6 +55,16 @@ declare module '@deepseek-ai/dsh-client-ui-slots' {
|
|
|
55
55
|
export declare const zh: Record<RewindKey, string>;
|
|
56
56
|
/** Japanese dictionary, checked complete against the en key set. */
|
|
57
57
|
export declare const ja: Record<RewindKey, string>;
|
|
58
|
+
/** Spanish dictionary, checked complete against the en key set. */
|
|
59
|
+
export declare const es: Record<RewindKey, string>;
|
|
60
|
+
/** French dictionary, checked complete against the en key set. */
|
|
61
|
+
export declare const fr: Record<RewindKey, string>;
|
|
62
|
+
/** German dictionary, checked complete against the en key set. */
|
|
63
|
+
export declare const de: Record<RewindKey, string>;
|
|
64
|
+
/** Russian dictionary, checked complete against the en key set. */
|
|
65
|
+
export declare const ru: Record<RewindKey, string>;
|
|
66
|
+
/** Brazilian Portuguese dictionary, checked complete against the en key set. */
|
|
67
|
+
export declare const pt: Record<RewindKey, string>;
|
|
58
68
|
/**
|
|
59
69
|
* Every dictionary this plugin ships, canonical first. Registration takes this
|
|
60
70
|
* map as a whole, so shipping another language is one dictionary above plus one
|
|
@@ -106,4 +116,9 @@ export declare const CLIENT_DICTS: {
|
|
|
106
116
|
};
|
|
107
117
|
zh: Record<"backup.off" | "backup.on" | "backup.title" | "button.aria" | "button.retract.aria" | "button.retract.title" | "button.title" | "cleanup.auto" | "cleanup.auto.off" | "cleanup.auto.on" | "cleanup.invalid" | "cleanup.maxAge" | "cleanup.maxAge.hint" | "cleanup.overridden" | "cleanup.readonly" | "cleanup.reset" | "cleanup.save" | "cleanup.saveFailed" | "cleanup.saving" | "cleanup.unavailable" | "popover.back" | "popover.backupDisabled" | "popover.both" | "popover.both.hint" | "popover.cancel" | "popover.chat" | "popover.chat.hint" | "popover.checking" | "popover.confirm" | "popover.impact.delete" | "popover.impact.failed" | "popover.impact.loading" | "popover.impact.none" | "popover.impact.restore" | "popover.noChanges" | "popover.noText" | "popover.retract.confirm" | "popover.retract.hint" | "popover.retract.target" | "popover.retract.title" | "popover.title", string>;
|
|
108
118
|
ja: Record<"backup.off" | "backup.on" | "backup.title" | "button.aria" | "button.retract.aria" | "button.retract.title" | "button.title" | "cleanup.auto" | "cleanup.auto.off" | "cleanup.auto.on" | "cleanup.invalid" | "cleanup.maxAge" | "cleanup.maxAge.hint" | "cleanup.overridden" | "cleanup.readonly" | "cleanup.reset" | "cleanup.save" | "cleanup.saveFailed" | "cleanup.saving" | "cleanup.unavailable" | "popover.back" | "popover.backupDisabled" | "popover.both" | "popover.both.hint" | "popover.cancel" | "popover.chat" | "popover.chat.hint" | "popover.checking" | "popover.confirm" | "popover.impact.delete" | "popover.impact.failed" | "popover.impact.loading" | "popover.impact.none" | "popover.impact.restore" | "popover.noChanges" | "popover.noText" | "popover.retract.confirm" | "popover.retract.hint" | "popover.retract.target" | "popover.retract.title" | "popover.title", string>;
|
|
119
|
+
es: Record<"backup.off" | "backup.on" | "backup.title" | "button.aria" | "button.retract.aria" | "button.retract.title" | "button.title" | "cleanup.auto" | "cleanup.auto.off" | "cleanup.auto.on" | "cleanup.invalid" | "cleanup.maxAge" | "cleanup.maxAge.hint" | "cleanup.overridden" | "cleanup.readonly" | "cleanup.reset" | "cleanup.save" | "cleanup.saveFailed" | "cleanup.saving" | "cleanup.unavailable" | "popover.back" | "popover.backupDisabled" | "popover.both" | "popover.both.hint" | "popover.cancel" | "popover.chat" | "popover.chat.hint" | "popover.checking" | "popover.confirm" | "popover.impact.delete" | "popover.impact.failed" | "popover.impact.loading" | "popover.impact.none" | "popover.impact.restore" | "popover.noChanges" | "popover.noText" | "popover.retract.confirm" | "popover.retract.hint" | "popover.retract.target" | "popover.retract.title" | "popover.title", string>;
|
|
120
|
+
fr: Record<"backup.off" | "backup.on" | "backup.title" | "button.aria" | "button.retract.aria" | "button.retract.title" | "button.title" | "cleanup.auto" | "cleanup.auto.off" | "cleanup.auto.on" | "cleanup.invalid" | "cleanup.maxAge" | "cleanup.maxAge.hint" | "cleanup.overridden" | "cleanup.readonly" | "cleanup.reset" | "cleanup.save" | "cleanup.saveFailed" | "cleanup.saving" | "cleanup.unavailable" | "popover.back" | "popover.backupDisabled" | "popover.both" | "popover.both.hint" | "popover.cancel" | "popover.chat" | "popover.chat.hint" | "popover.checking" | "popover.confirm" | "popover.impact.delete" | "popover.impact.failed" | "popover.impact.loading" | "popover.impact.none" | "popover.impact.restore" | "popover.noChanges" | "popover.noText" | "popover.retract.confirm" | "popover.retract.hint" | "popover.retract.target" | "popover.retract.title" | "popover.title", string>;
|
|
121
|
+
de: Record<"backup.off" | "backup.on" | "backup.title" | "button.aria" | "button.retract.aria" | "button.retract.title" | "button.title" | "cleanup.auto" | "cleanup.auto.off" | "cleanup.auto.on" | "cleanup.invalid" | "cleanup.maxAge" | "cleanup.maxAge.hint" | "cleanup.overridden" | "cleanup.readonly" | "cleanup.reset" | "cleanup.save" | "cleanup.saveFailed" | "cleanup.saving" | "cleanup.unavailable" | "popover.back" | "popover.backupDisabled" | "popover.both" | "popover.both.hint" | "popover.cancel" | "popover.chat" | "popover.chat.hint" | "popover.checking" | "popover.confirm" | "popover.impact.delete" | "popover.impact.failed" | "popover.impact.loading" | "popover.impact.none" | "popover.impact.restore" | "popover.noChanges" | "popover.noText" | "popover.retract.confirm" | "popover.retract.hint" | "popover.retract.target" | "popover.retract.title" | "popover.title", string>;
|
|
122
|
+
ru: Record<"backup.off" | "backup.on" | "backup.title" | "button.aria" | "button.retract.aria" | "button.retract.title" | "button.title" | "cleanup.auto" | "cleanup.auto.off" | "cleanup.auto.on" | "cleanup.invalid" | "cleanup.maxAge" | "cleanup.maxAge.hint" | "cleanup.overridden" | "cleanup.readonly" | "cleanup.reset" | "cleanup.save" | "cleanup.saveFailed" | "cleanup.saving" | "cleanup.unavailable" | "popover.back" | "popover.backupDisabled" | "popover.both" | "popover.both.hint" | "popover.cancel" | "popover.chat" | "popover.chat.hint" | "popover.checking" | "popover.confirm" | "popover.impact.delete" | "popover.impact.failed" | "popover.impact.loading" | "popover.impact.none" | "popover.impact.restore" | "popover.noChanges" | "popover.noText" | "popover.retract.confirm" | "popover.retract.hint" | "popover.retract.target" | "popover.retract.title" | "popover.title", string>;
|
|
123
|
+
pt: Record<"backup.off" | "backup.on" | "backup.title" | "button.aria" | "button.retract.aria" | "button.retract.title" | "button.title" | "cleanup.auto" | "cleanup.auto.off" | "cleanup.auto.on" | "cleanup.invalid" | "cleanup.maxAge" | "cleanup.maxAge.hint" | "cleanup.overridden" | "cleanup.readonly" | "cleanup.reset" | "cleanup.save" | "cleanup.saveFailed" | "cleanup.saving" | "cleanup.unavailable" | "popover.back" | "popover.backupDisabled" | "popover.both" | "popover.both.hint" | "popover.cancel" | "popover.chat" | "popover.chat.hint" | "popover.checking" | "popover.confirm" | "popover.impact.delete" | "popover.impact.failed" | "popover.impact.loading" | "popover.impact.none" | "popover.impact.restore" | "popover.noChanges" | "popover.noText" | "popover.retract.confirm" | "popover.retract.hint" | "popover.retract.target" | "popover.retract.title" | "popover.title", string>;
|
|
109
124
|
};
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
*
|
|
18
18
|
* @module dsh-rewind/client/pending
|
|
19
19
|
*/
|
|
20
|
+
import { type ImageBlockLike, type MessageImageRef } from './hidden.ts';
|
|
20
21
|
/** One rendered pending-steering bubble row (only the fields matching reads). */
|
|
21
22
|
export interface PendingRow {
|
|
22
23
|
/** The bubble's message text, excluding the actions container (see module doc). */
|
|
@@ -24,8 +25,8 @@ export interface PendingRow {
|
|
|
24
25
|
/** Message-attachment blocks the row renders; compared against the item's count. */
|
|
25
26
|
readonly attachments: number;
|
|
26
27
|
}
|
|
27
|
-
/** One wire content block of an inbox row
|
|
28
|
-
export interface InboxBlockLike {
|
|
28
|
+
/** One wire content block of an inbox row. */
|
|
29
|
+
export interface InboxBlockLike extends ImageBlockLike {
|
|
29
30
|
/** Wire block type (`text` | `image` | `file` | …). */
|
|
30
31
|
readonly type: string;
|
|
31
32
|
/** The block's text, on a `text` block. */
|
|
@@ -59,6 +60,8 @@ export interface PendingSteeringItem {
|
|
|
59
60
|
readonly text: string | null;
|
|
60
61
|
/** Non-text blocks (image/file/…) the message carries, in prompt order. */
|
|
61
62
|
readonly attachments: number;
|
|
63
|
+
/** Image references the message carries, in prompt order. */
|
|
64
|
+
readonly images: readonly MessageImageRef[];
|
|
62
65
|
/** Space-collapsed preview with image/file blocks excluded (the harness QueueDock rule). */
|
|
63
66
|
readonly preview: string;
|
|
64
67
|
}
|
|
@@ -280,9 +280,8 @@ export declare function composerText(): string;
|
|
|
280
280
|
*
|
|
281
281
|
* 1. Remove the target and its future (steering only; queued stays) through
|
|
282
282
|
* the session's own `updateQueue` channel, oldest first.
|
|
283
|
-
* 2. Put the target's
|
|
284
|
-
*
|
|
285
|
-
* guard, so a draft the user is typing is never clobbered).
|
|
283
|
+
* 2. Put the target's own images back, then its text when the composer is
|
|
284
|
+
* empty (the empty-composer guard, so a draft is never clobbered).
|
|
286
285
|
*
|
|
287
286
|
* The realistic failure is `queue-item-not-found`: a step boundary claimed
|
|
288
287
|
* the whole next-step batch a moment ago, so the message is now durable and
|
|
@@ -290,7 +289,7 @@ export declare function composerText(): string;
|
|
|
290
289
|
* removed then, and the composer is NOT refilled — refilling would invite a
|
|
291
290
|
* duplicate send of a message the model has already received.
|
|
292
291
|
*/
|
|
293
|
-
export declare function retractPending(session: SessionFace, itemId: string, text: string | null, setComposerText: (sessionId: string, text: string) => boolean): Promise<void>;
|
|
292
|
+
export declare function retractPending(session: SessionFace, itemId: string, text: string | null, setComposerText: (sessionId: string, text: string) => boolean, restoreImages?: (sessionId: string, images: readonly MessageImageRef[]) => Promise<void>): Promise<void>;
|
|
294
293
|
/**
|
|
295
294
|
* Build the slot-entry component for the plugin apply(): a tiny bridge that
|
|
296
295
|
* injects the apply-time capabilities (session resolution, locale, rewind
|
package/lib/types/locales.d.ts
CHANGED
|
@@ -82,6 +82,16 @@ export type HostKey = keyof typeof en;
|
|
|
82
82
|
export declare const zh: Record<HostKey, string>;
|
|
83
83
|
/** Japanese dictionary, checked complete against the en key set. */
|
|
84
84
|
export declare const ja: Record<HostKey, string>;
|
|
85
|
+
/** Spanish dictionary, checked complete against the en key set. */
|
|
86
|
+
export declare const es: Record<HostKey, string>;
|
|
87
|
+
/** French dictionary, checked complete against the en key set. */
|
|
88
|
+
export declare const fr: Record<HostKey, string>;
|
|
89
|
+
/** German dictionary, checked complete against the en key set. */
|
|
90
|
+
export declare const de: Record<HostKey, string>;
|
|
91
|
+
/** Russian dictionary, checked complete against the en key set. */
|
|
92
|
+
export declare const ru: Record<HostKey, string>;
|
|
93
|
+
/** Brazilian Portuguese dictionary, checked complete against the en key set. */
|
|
94
|
+
export declare const pt: Record<HostKey, string>;
|
|
85
95
|
/**
|
|
86
96
|
* Every language this plugin ships a host dictionary for. English is first as
|
|
87
97
|
* the canonical dictionary; the rest follow the harness's language order.
|
|
@@ -137,6 +147,11 @@ export declare const HOST_DICTS: {
|
|
|
137
147
|
};
|
|
138
148
|
zh: Record<"backupOff" | "cancelled" | "cleanup.cfgInvalid" | "cleanup.clearActive" | "cleanup.clearApply" | "cleanup.clearCancelled" | "cleanup.clearDry" | "cleanup.clearFailed" | "cleanup.description" | "cleanup.disabled" | "cleanup.enabled" | "cleanup.inputHint" | "cleanup.maxAgeOk" | "cleanup.offOk" | "cleanup.onOk" | "cleanup.runApply" | "cleanup.runDry" | "cleanup.runFailed" | "cleanup.saveFailed" | "cleanup.skipped" | "cleanup.status" | "cleanup.usage" | "command.description" | "command.undoDescription" | "delete.count" | "engine.description" | "engine.inputHint" | "engine.rejected" | "error.invalidTarget" | "failed" | "failures.item" | "failures.suffix" | "inflight" | "noRestorable" | "noUserMessages" | "plan.skip" | "restore.count" | "sep.clause" | "sep.list" | "skip.count" | "skipReason.oversized" | "stopFailed" | "storeUnsupported" | "success", string>;
|
|
139
149
|
ja: Record<"backupOff" | "cancelled" | "cleanup.cfgInvalid" | "cleanup.clearActive" | "cleanup.clearApply" | "cleanup.clearCancelled" | "cleanup.clearDry" | "cleanup.clearFailed" | "cleanup.description" | "cleanup.disabled" | "cleanup.enabled" | "cleanup.inputHint" | "cleanup.maxAgeOk" | "cleanup.offOk" | "cleanup.onOk" | "cleanup.runApply" | "cleanup.runDry" | "cleanup.runFailed" | "cleanup.saveFailed" | "cleanup.skipped" | "cleanup.status" | "cleanup.usage" | "command.description" | "command.undoDescription" | "delete.count" | "engine.description" | "engine.inputHint" | "engine.rejected" | "error.invalidTarget" | "failed" | "failures.item" | "failures.suffix" | "inflight" | "noRestorable" | "noUserMessages" | "plan.skip" | "restore.count" | "sep.clause" | "sep.list" | "skip.count" | "skipReason.oversized" | "stopFailed" | "storeUnsupported" | "success", string>;
|
|
150
|
+
es: Record<"backupOff" | "cancelled" | "cleanup.cfgInvalid" | "cleanup.clearActive" | "cleanup.clearApply" | "cleanup.clearCancelled" | "cleanup.clearDry" | "cleanup.clearFailed" | "cleanup.description" | "cleanup.disabled" | "cleanup.enabled" | "cleanup.inputHint" | "cleanup.maxAgeOk" | "cleanup.offOk" | "cleanup.onOk" | "cleanup.runApply" | "cleanup.runDry" | "cleanup.runFailed" | "cleanup.saveFailed" | "cleanup.skipped" | "cleanup.status" | "cleanup.usage" | "command.description" | "command.undoDescription" | "delete.count" | "engine.description" | "engine.inputHint" | "engine.rejected" | "error.invalidTarget" | "failed" | "failures.item" | "failures.suffix" | "inflight" | "noRestorable" | "noUserMessages" | "plan.skip" | "restore.count" | "sep.clause" | "sep.list" | "skip.count" | "skipReason.oversized" | "stopFailed" | "storeUnsupported" | "success", string>;
|
|
151
|
+
fr: Record<"backupOff" | "cancelled" | "cleanup.cfgInvalid" | "cleanup.clearActive" | "cleanup.clearApply" | "cleanup.clearCancelled" | "cleanup.clearDry" | "cleanup.clearFailed" | "cleanup.description" | "cleanup.disabled" | "cleanup.enabled" | "cleanup.inputHint" | "cleanup.maxAgeOk" | "cleanup.offOk" | "cleanup.onOk" | "cleanup.runApply" | "cleanup.runDry" | "cleanup.runFailed" | "cleanup.saveFailed" | "cleanup.skipped" | "cleanup.status" | "cleanup.usage" | "command.description" | "command.undoDescription" | "delete.count" | "engine.description" | "engine.inputHint" | "engine.rejected" | "error.invalidTarget" | "failed" | "failures.item" | "failures.suffix" | "inflight" | "noRestorable" | "noUserMessages" | "plan.skip" | "restore.count" | "sep.clause" | "sep.list" | "skip.count" | "skipReason.oversized" | "stopFailed" | "storeUnsupported" | "success", string>;
|
|
152
|
+
de: Record<"backupOff" | "cancelled" | "cleanup.cfgInvalid" | "cleanup.clearActive" | "cleanup.clearApply" | "cleanup.clearCancelled" | "cleanup.clearDry" | "cleanup.clearFailed" | "cleanup.description" | "cleanup.disabled" | "cleanup.enabled" | "cleanup.inputHint" | "cleanup.maxAgeOk" | "cleanup.offOk" | "cleanup.onOk" | "cleanup.runApply" | "cleanup.runDry" | "cleanup.runFailed" | "cleanup.saveFailed" | "cleanup.skipped" | "cleanup.status" | "cleanup.usage" | "command.description" | "command.undoDescription" | "delete.count" | "engine.description" | "engine.inputHint" | "engine.rejected" | "error.invalidTarget" | "failed" | "failures.item" | "failures.suffix" | "inflight" | "noRestorable" | "noUserMessages" | "plan.skip" | "restore.count" | "sep.clause" | "sep.list" | "skip.count" | "skipReason.oversized" | "stopFailed" | "storeUnsupported" | "success", string>;
|
|
153
|
+
ru: Record<"backupOff" | "cancelled" | "cleanup.cfgInvalid" | "cleanup.clearActive" | "cleanup.clearApply" | "cleanup.clearCancelled" | "cleanup.clearDry" | "cleanup.clearFailed" | "cleanup.description" | "cleanup.disabled" | "cleanup.enabled" | "cleanup.inputHint" | "cleanup.maxAgeOk" | "cleanup.offOk" | "cleanup.onOk" | "cleanup.runApply" | "cleanup.runDry" | "cleanup.runFailed" | "cleanup.saveFailed" | "cleanup.skipped" | "cleanup.status" | "cleanup.usage" | "command.description" | "command.undoDescription" | "delete.count" | "engine.description" | "engine.inputHint" | "engine.rejected" | "error.invalidTarget" | "failed" | "failures.item" | "failures.suffix" | "inflight" | "noRestorable" | "noUserMessages" | "plan.skip" | "restore.count" | "sep.clause" | "sep.list" | "skip.count" | "skipReason.oversized" | "stopFailed" | "storeUnsupported" | "success", string>;
|
|
154
|
+
pt: Record<"backupOff" | "cancelled" | "cleanup.cfgInvalid" | "cleanup.clearActive" | "cleanup.clearApply" | "cleanup.clearCancelled" | "cleanup.clearDry" | "cleanup.clearFailed" | "cleanup.description" | "cleanup.disabled" | "cleanup.enabled" | "cleanup.inputHint" | "cleanup.maxAgeOk" | "cleanup.offOk" | "cleanup.onOk" | "cleanup.runApply" | "cleanup.runDry" | "cleanup.runFailed" | "cleanup.saveFailed" | "cleanup.skipped" | "cleanup.status" | "cleanup.usage" | "command.description" | "command.undoDescription" | "delete.count" | "engine.description" | "engine.inputHint" | "engine.rejected" | "error.invalidTarget" | "failed" | "failures.item" | "failures.suffix" | "inflight" | "noRestorable" | "noUserMessages" | "plan.skip" | "restore.count" | "sep.clause" | "sep.list" | "skip.count" | "skipReason.oversized" | "stopFailed" | "storeUnsupported" | "success", string>;
|
|
140
155
|
};
|
|
141
156
|
/** Host-side supported locale ids (the registry keys). */
|
|
142
157
|
export type HostLocaleId = keyof typeof HOST_DICTS;
|
package/locale/de.json
ADDED
package/locale/en.json
CHANGED
package/locale/es.json
ADDED
package/locale/fr.json
ADDED
package/locale/ja.json
CHANGED
package/locale/pt.json
ADDED
package/locale/ru.json
ADDED