e-naxosMAF COURSE / COURS
English

MICROSOFT AGENT FRAMEWORK · 0.16.0-rc.1

Demo380 — Role Based Tools

Le défaut accorde review.finish mais pas ticket.read : zéro ToolCall admis et code 2. complete sélectionne une autre fixture hôte, sans connexion d’un administrateur. Les anciens arguments anonymous/support/manager/admin ne sont plus le protocole de cette entrée.

Objectifs

Préparer la démo

Depuis la racine de la distribution complète compilée en Release ; conserver les projets partagés et les fichiers copiés près des exécutables. Transport scripté ou heuristique par défaut : aucun modèle, embedding, secret ou conteneur nécessaire. --live sélectionne explicitement le chat commun, sans fallback cloud.

dotnet build BaseTechnique.slnx -m:1 -c Release
Projets nécessaires
ProjetRôle
demos/Demo380_RoleBasedTools/Demo380.App.csprojApplication
shared/Maf.Control/Maf.Control.csprojImplémentation partagée

Lancer depuis la racine

dotnet run --project demos/Demo380_RoleBasedTools/Demo380.App.csproj -c Release --no-build

Manipulations et variantes

Sans argument, prévoir PermissionDenied. Comparer ensuite complete puis forbidden. Laisser read_ticket visible pour observer le contrôle au moment de l’appel.

var live = args.Contains("--live");
string[] scenarios = ["complete", "repeat", "forbidden", "budget", "incomplete", "deadline", "changing"];
var scenario = args.FirstOrDefault(a => scenarios.Contains(a)) ?? defaultScenario;
using var caller = new CancellationTokenSource();
var capabilities = scenario == "forbidden" ? new[] { "review.finish" } : new[] { "ticket.read", "review.finish" };
var limits = new ExecutionLimits(ModelCalls: scenario == "budget" ? 1 : 6,
    DeadlineSeconds: scenario == "deadline" ? 1 : 120);
using var scope = new ExecutionScope(capabilities, limits, caller.Token);

shared/Maf.Control/ControlDemo.cs · L14–L21 · 9a895c94534c

Code source · Maf.Control · Dossier

dotnet run --project demos/Demo380_RoleBasedTools/Demo380.App.csproj -c Release --no-build -- complete
dotnet run --project demos/Demo380_RoleBasedTools/Demo380.App.csproj -c Release --no-build -- repeat
dotnet run --project demos/Demo380_RoleBasedTools/Demo380.App.csproj -c Release --no-build -- forbidden
dotnet run --project demos/Demo380_RoleBasedTools/Demo380.App.csproj -c Release --no-build -- budget
dotnet run --project demos/Demo380_RoleBasedTools/Demo380.App.csproj -c Release --no-build -- changing
dotnet run --project demos/Demo380_RoleBasedTools/Demo380.App.csproj -c Release --no-build -- deadline
dotnet run --project demos/Demo380_RoleBasedTools/Demo380.App.csproj -c Release --no-build -- incomplete

Résultats, refus et preuves

Le défaut accorde review.finish mais pas ticket.read : zéro ToolCall admis et code 2. complete sélectionne une autre fixture hôte, sans connexion d’un administrateur. Les anciens arguments anonymous/support/manager/admin ne sont plus le protocole de cette entrée.

Limites du contrôle

Les résultats scriptés vérifient orchestration et contrôles réels, sans qualifier un modèle ni toute attaque. Les compteurs sont par run ; aucune idempotence durable ou écriture métier. L’annulation reste coopérative.

dotnet test tests/Maf.Control.Tests/Maf.Control.Tests.csproj -m:1 -c Release --no-build --no-restore

Relier aux contrats et prérequis

Prérequis

Pour poursuivre

Dossier complet de la démo · README

lot010-controls-1 · 2026-10-24 · 9a895c94534cd5fc6f3da883e37e5f7856e588c1