fix: preserve plugin tool state.attachments in UI and materializer (#2367)

* preserve attachments in UI and materializer

* add support for non-image attachments

* preserve attachments in UI and materializer

* improve attachment rendering and state synchronization

* simplify attachment filtering and key handling

* prevent rendering tool attachments without URLs

* require `f.url` in `imageAttachments` to match gallery indices
This commit is contained in:
FrostiDrinks
2026-07-22 10:46:40 +03:00
committed by GitHub
parent 733bd37c37
commit c29b2d0849
13 changed files with 283 additions and 5 deletions
+1
View File
@@ -2069,6 +2069,7 @@ export const dict = {
'chat.toolPart.copiedOutput': 'Copied output',
'chat.toolPart.copyOutputFailed': 'Failed to copy output',
'chat.toolPart.openSubtask': 'Open {type} subtask',
'chat.toolPart.attachmentFallback': 'Attachment',
'chat.todo.total': 'Total',
'chat.todo.inProgress': 'In Progress',
'chat.todo.pending': 'Pending',
+1
View File
@@ -2035,6 +2035,7 @@ export const dict: Record<I18nKey, string> = {
"chat.toolPart.copiedOutput": "Salida copiada",
"chat.toolPart.copyOutputFailed": "No se pudo copiar la salida",
"chat.toolPart.openSubtask": "Abrir subtarea {type}",
"chat.toolPart.attachmentFallback": "Archivo adjunto",
"chat.todo.total": "Total",
"chat.todo.inProgress": "En progreso",
"chat.todo.pending": "Pendiente",
+1
View File
@@ -1838,6 +1838,7 @@ export const dict = {
'chat.toolPart.noOutputProduced': 'Aucune sortie produite',
'chat.toolPart.output': 'Sortie',
'chat.toolPart.openSubtask': 'Ouvrir la sous-tâche {type}',
'chat.toolPart.attachmentFallback': 'Pièce jointe',
'chat.todo.total': 'Total',
'chat.todo.inProgress': 'En cours',
'chat.todo.pending': 'En attente',
+1
View File
@@ -2068,6 +2068,7 @@ export const dict: Record<I18nKey, string> = {
'chat.toolPart.copiedOutput': '出力をコピーしました',
'chat.toolPart.copyOutputFailed': '出力のコピーに失敗しました',
'chat.toolPart.openSubtask': '{type}サブタスクを開く',
'chat.toolPart.attachmentFallback': '添付ファイル',
'chat.todo.total': '合計',
'chat.todo.inProgress': '進行中',
'chat.todo.pending': '保留中',
+1
View File
@@ -2069,6 +2069,7 @@ export const dict: Record<I18nKey, string> = {
'chat.toolPart.copiedOutput': '출력 복사됨',
'chat.toolPart.copyOutputFailed': '출력을 복사하지 못했습니다',
'chat.toolPart.openSubtask': '{type} 하위 작업 열기',
'chat.toolPart.attachmentFallback': '첨부 파일',
'chat.todo.total': '전체',
'chat.todo.inProgress': '진행 중',
'chat.todo.pending': '대기 중',
+1
View File
@@ -1338,6 +1338,7 @@ export const dict: Record<I18nKey, string> = {
'chat.toolPart.moreErrors': '+{count} kolejnych błędów',
'chat.toolPart.noOutputProduced': 'Brak wygenerowanego wyniku',
'chat.toolPart.openSubtask': 'Otwórz podzadanie typu {type}',
'chat.toolPart.attachmentFallback': 'Załącznik',
'chat.toolPart.output': 'Wyjście',
'chat.toolPart.showRawJson': 'Pokaż surowy JSON',
'chat.toolPart.showFormattedJson': 'Pokaż sformatowany JSON',
@@ -2035,6 +2035,7 @@ export const dict: Record<I18nKey, string> = {
"chat.toolPart.copiedOutput": "Saída copiada",
"chat.toolPart.copyOutputFailed": "Falha ao copiar saída",
"chat.toolPart.openSubtask": "Abrir subtarefa {type}",
"chat.toolPart.attachmentFallback": "Anexo",
"chat.todo.total": "Total",
"chat.todo.inProgress": "Em andamento",
"chat.todo.pending": "Pendente",
+1
View File
@@ -2035,6 +2035,7 @@ export const dict: Record<I18nKey, string> = {
"chat.toolPart.copiedOutput": "Вивід скопійовано",
"chat.toolPart.copyOutputFailed": "Не вдалося скопіювати вивід",
"chat.toolPart.openSubtask": "Відкрити підзавдання {type}",
"chat.toolPart.attachmentFallback": "Вкладення",
"chat.todo.total": "Усього",
"chat.todo.inProgress": "В роботі",
"chat.todo.pending": "В очікуванні",
@@ -2035,6 +2035,7 @@ export const dict: Record<I18nKey, string> = {
'chat.toolPart.copiedOutput': '已复制输出',
'chat.toolPart.copyOutputFailed': '复制输出失败',
'chat.toolPart.openSubtask': '打开{type}子任务',
'chat.toolPart.attachmentFallback': '附件',
'chat.todo.total': '总计',
'chat.todo.inProgress': '进行中',
'chat.todo.pending': '待处理',
@@ -2039,6 +2039,7 @@ export const dict: Record<I18nKey, string> = {
'chat.toolPart.copiedOutput': '已複製輸出',
'chat.toolPart.copyOutputFailed': '複製輸出失敗',
'chat.toolPart.openSubtask': '開啟{type}子任務',
'chat.toolPart.attachmentFallback': '附件',
'chat.todo.total': '總計',
'chat.todo.inProgress': '進行中',
'chat.todo.pending': '待處理',