- Cases/Decisions in der Instanz-DB; CaseDesk fuehrt die Regeln, der Brett-Task traegt den Vorgang zum jeweiligen Halter - Eskalation nur nach oben, eine Ebene je Schritt; die Leitung entscheidet (mit Begruendung, bindet ihren Bereich), erledigt selbst oder reicht mit Einschaetzung weiter - Erst nachsehen: bindende Beschluesse werden vor dem Eskalieren gezeigt; dieselbe Frage aus derselben Einheit schliesst sich dem offenen Vorgang an - Tagesdeckel je Einheit; nach der Frist wird ein Mensch gerufen (Anschluss fuer #644) - Konflikt: zuerst die Gegenseite, dann Zustellung an die niedrigste gemeinsame Leitung; Ebenen dazwischen vermerkt, nicht befragt - Fremdinhalt-Stufe (#715): Eskalation ohne eigenen Text, kein Konflikt mit Position - Jede Ebene haengt an (#697), beim Halter gerahmt als Daten - Escalation ist ein implizites Werkzeug jedes Agenten; Briefing nennt den Weg - Scanner behaelt einen im Lauf gesetzten Status blockiert/abgebrochen Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 lines
674 B
C#
19 lines
674 B
C#
using ClawdDotNet.Core.Config;
|
|
|
|
namespace ClawdDotNet.Core.Security;
|
|
|
|
public sealed class PermissionGate
|
|
{
|
|
public bool IsAllowed(string agentId, string toolName, AgentConfig agentConfig)
|
|
=> agentConfig.Tools.ContainsKey(toolName) || Tools.ToolRegistry.ImplicitTools.Contains(toolName);
|
|
|
|
public void Enforce(string agentId, string toolName, AgentConfig agentConfig)
|
|
{
|
|
if (!IsAllowed(agentId, toolName, agentConfig))
|
|
throw new ToolAccessDeniedException(agentId, toolName);
|
|
}
|
|
}
|
|
|
|
public sealed class ToolAccessDeniedException(string agentId, string toolName)
|
|
: Exception($"Agent '{agentId}' has no access to tool '{toolName}'.");
|