enhancement
major
minor
defect
critical
major
minor
major
#30054
Screenshots von Agenten gehören zu ihrem Chat: Sie werden zusammen mit diesem gelöscht und im Chat als Miniaturansichten angezeigt.
Follow-up to #29767.
Context
The tool browserScreenshot (tl-ai-core) stores every capture as a tl.ai.screenshots:Screenshot and returns a URL /screenshot/{id} that the chat shows as an image (developer article ai/chat-ui, section "Screenshots"). Reading is owner plus administrators, on the route (ScreenshotService.mayRead) and on the model layer (tl-ai-core.binarySecurity.config.xml, role AiBinaryOwner with a Read grant only).
Problem
A screenshot knows only its owner, not the conversation it was taken in. Deleting a chat (AgentExecutionStore.deleteSession) leaves its screenshots behind; captures of unattended runs have no owner at all and stay readable by administrators only, without any view showing them. No one can remove a screenshot except an administrator.
Lösung
Ein Screenshot ist ein Artefakt des Gesprächs, in dem er entstanden ist:
- Komposition AgentSession#screenshots (tl.ai.execution): browserScreenshot legt die Aufnahme in der Sitzung des laufenden Agentenlaufs ab. Das Löschen eines Chats (AgentExecutionStore.deleteSession) löscht seine Screenshots mit. Aufnahmen unbeaufsichtigter Läufe gehören zu deren Hintergrundsitzung und leben so lange wie diese.
- Lesen bleibt Besitzer plus Administratoren (owner = Besitzer der Sitzung); ein eigenes Löschrecht und eine Listenansicht sind nicht nötig.
- Anzeige im Chat: Bilder in Chat-Nachrichten (tl-chat) erscheinen als Vorschaubild begrenzter Größe; ein Klick öffnet das Bild in voller Größe in einem Dialog.
Migration
Screenshots aus der Zeit vor dieser Änderung gehören zu keiner Sitzung; die Datenmigration löscht sie. Anwendungen müssen nichts tun.