Trigger: Auftrag, Adressname, Prioritaet, Bearbeiten und neues Token (#725)

Rueckmeldung aus der Testinstanz: Nach dem Anlegen war nicht zu erkennen,
wofuer ein Trigger da ist, der Agent erfuhr nur 'ein Ereignis kam', und
bearbeiten ging nicht.

- Slug aus dem Namen in der Adresse: /hooks/<instanz>/trigger/<slug>;
  ein Token an fremder Adresse oeffnet nichts. Die alte Adresse ohne
  Slug bleibt gueltig.
- Auftrag vom Menschen steht vor den gelieferten Daten (die weiter als
  Fremdinhalt gerahmt sind); ohne Auftrag wird der Agent darauf hingewiesen.
- Prioritaet der erzeugten Aufgaben.
- PUT /api/triggers/{id} (Token bleibt), POST /api/triggers/{id}/token.
- WebUI: Formular fuer Anlegen und Bearbeiten, Adresse und Auftrag je Zeile.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-10-02 10:03:06 +02:00
co-authored by Claude Opus 5.5
parent 44613c2b77
commit e2344f4d33
11 changed files with 518 additions and 93 deletions
+18
View File
@@ -474,6 +474,24 @@ internal static class ManagerEndpoints
await forwarding.ForwardMcpAsync(context, ziel, ct, "/hooks/trigger");
});
// The same with the trigger's name in the address — readable for whoever sets up the sender.
app.MapPost("/hooks/{instanz}/trigger/{name}", async (
HttpContext context, string instanz, string name, InstanceRegistry registry, InstanceForwarding forwarding,
CancellationToken ct) =>
{
if (context.Request.Headers.Origin.Count > 0)
{
context.Response.StatusCode = StatusCodes.Status403Forbidden;
return;
}
if (Find(registry, instanz) is not { } ziel)
{
context.Response.StatusCode = StatusCodes.Status404NotFound;
return;
}
await forwarding.ForwardMcpAsync(context, ziel, ct, "/hooks/trigger/" + Uri.EscapeDataString(name));
});
app.Map("/api/{**pfad}", async (
HttpContext context, InstanceRegistry registry, InstanceForwarding forwarding,
CancellationToken ct) =>