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 ToolConfig, IStateStore StateStore, ILogger Logger, CancellationToken CancellationToken, string? WorkspacePath = null, string? SharedWorkspacePath = null, IAgentMessageRouter? MessageRouter = null, IMemoryRepository? Memory = null, ITaskRepository? Tasks = null, /// /// 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 . /// DelegationChain? Delegation = null ) { /// /// 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 false, und das Werkzeug prueft selbst. /// public bool FreigabeGeprueft { get; init; } }