enhancement
major
minor
defect
critical
major
minor
major
#30149
Einem Chat-Agenten soll es ermöglicht werden, Seitenbefehle auszuführen, die auf der Chat-Seite zulässig sind, z. B. einen Dialog zu öffnen
Problem
Ein Chat-Agent einer Anwendung kann keinen Dialog und keine Ansicht für den Benutzer öffnen. Der einzige Weg, von einem Lauf in die Seite zu gelangen, ist ChatPresentTool (tl-chat): Es schreibt eine Darstellung von Modellobjekten oder Daten in einen Kanal, den ein <chat-conversation present="..."> des Fensters zugelassen hat (ChatViewBinding.presentable), innerhalb von ChatWindowService.inWindow. <open-dialog>, <show-view> und andere Ansichtsaktionen werden nur als Aktionskette eines Befehls ausgeführt, auf den der Benutzer klickt. Kein Tool und keine Java-API führt sie bei einem Aufruf aus.
Beispiel: Der Agent, der Projekte in der Steuerungsanwendung tl-factory (TopLogic/tl-factory#24) einrichtet, darf kein Token über den Chat entgegennehmen, da der Chat gespeichert und an das Modell gesendet wird. Er muss für den Benutzer das vorhandene Formular für eine Git-Verbindung öffnen, wo das Token in den geheimen Speicher gelangt. Derzeit kann er dem Benutzer lediglich mitteilen, wo er klicken soll.
Vorschlag
Seitenbefehle, die die Seite von ihrem Agenten ausführen lässt, standardmäßig verweigert:
- <chat-conversation> erhält eine Liste <agent-commands>. Jeder Eintrag enthält einen Namen, eine Beschreibung für das Modell und eine gewöhnliche Aktionskette (<open-dialog>, <show-view>, …), die wie die Kette eines Befehls ausgeführt wird, einschließlich der Überprüfungen auf Ausführbarkeit und Zugriffsrechte.
- Ein tl-chat-Tool ( Gruppeninteraktion, wie „present“) führt die Kette mit einem bestimmten Namen im Ausführungsfenster über ` ChatWindowService.inWindow` aus, so wie es `ChatPresentTool.deliver ` tut.
- Das Tool wird nur angeboten, solange ein solches Element angezeigt wird (Tool.unavailableReason), und listet die Namen und Beschreibungen der zulässigen Befehle auf.
- Ein unbekannter Name, ein derzeit nicht ausführbarer Befehl oder eine Ausführung ohne Fenster wird mit einer Begründung für das Modell abgelehnt.
Die Seite legt fest, was der Agent öffnen darf, und die Kette führt das Öffnen durch. Nichts, was nicht auf der Seite aufgeführt ist, ist erreichbar.
Test
- Ein <chat-conversation> mit einem Agentenbefehl, der einen Dialog öffnet: Ein Lauf, der das Tool aufruft, öffnet den Dialog im Fenster des Laufs.
- Ein nicht aufgeführter Name wird abgelehnt.
- Ein Lauf, dessen Fenster das Element nicht anzeigt, wird abgelehnt.
- Ein Befehl, dessen Ausführbarkeit „nein“ angibt, wird mit Angabe des Grundes abgelehnt.