#643: Entscheidungen wecken den Agenten nur noch bei Ablehnung oder gescheiterter Ausfuehrung, gesammelt in einer Aufgabe je Agent (5 min Ruhefenster), frisch per @new:agent statt im fortgefuehrten Chatverlauf. Eine einmalige Aufgabe, deren Lauf wegen Budget oder Herunterfahren gar nicht stattfand, bleibt faellig (Wiedervorlage nach 30 min) statt mit gesetztem Marker liegenzubleiben. #641: Rechte stehen in der Werkzeugkonfiguration des Agenten (erlaubt/verboten). Erlaubtes laeuft, Nicht-Erlaubtes wird einzeln vorgelegt statt verweigert, Verbotenes gar nicht erst. "Gleichartiges kuenftig erlauben" erteilt eine widerrufbare Dauerfreigabe je Agent/Werkzeug/Operation; nach drei gleichartigen Freigaben schlaegt die Oberflaeche sie vor. Aenderungen an Agenten bleiben ausnahmslos freigabepflichtig. Database: Operation ist das SQL-Schluesselwort; die eigene Zugriffspruefung greift nur noch ohne Freigabestelle (AgentToolContext.FreigabeGeprueft). WebUI: Rechte-Tabelle je Werkzeug, Dauerfreigaben mit Widerruf. Version 0.1.11. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
38 lines
1.4 KiB
C#
38 lines
1.4 KiB
C#
using ClawdDotNet.Core.Memory;
|
|
using ClawdDotNet.Core.State;
|
|
using ClawdDotNet.Core.Tasks;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace ClawdDotNet.Core.Tools;
|
|
|
|
public sealed record AgentToolContext(
|
|
string AgentId,
|
|
string InstanceId,
|
|
IReadOnlyDictionary<string, object?> ToolConfig,
|
|
IStateStore StateStore,
|
|
ILogger Logger,
|
|
CancellationToken CancellationToken,
|
|
string? WorkspacePath = null,
|
|
string? SharedWorkspacePath = null,
|
|
IAgentMessageRouter? MessageRouter = null,
|
|
IMemoryRepository? Memory = null,
|
|
ITaskRepository? Tasks = null,
|
|
|
|
/// <summary>
|
|
/// Wer an diesem Aufruf schon beteiligt ist. Werkzeuge, die einen anderen Agenten
|
|
/// beauftragen, reichen die Kette weiter — sonst kann die Engine einen Zyklus
|
|
/// nicht von einer neuen Delegation unterscheiden. Siehe <see cref="DelegationChain"/>.
|
|
/// </summary>
|
|
DelegationChain? Delegation = null
|
|
)
|
|
{
|
|
/// <summary>
|
|
/// Die Freigabestelle hat diesen Aufruf geprueft und zugelassen - als erlaubte Operation,
|
|
/// per Dauerfreigabe oder als einzeln freigegebener Vorschlag (#641). Ein Werkzeug darf
|
|
/// seine eigene Rechtepruefung dann auslassen; sonst wuerde ein freigegebenes ALTER eines
|
|
/// Agenten, der nur schreiben darf, erst nach der Freigabe am Werkzeug scheitern.
|
|
/// Ohne Freigabestelle bleibt es <c>false</c>, und das Werkzeug prueft selbst.
|
|
/// </summary>
|
|
public bool FreigabeGeprueft { get; init; }
|
|
}
|