Permission requests
Standaardgedrag (deny-all)
Als permission_approve in config/copilot.php op "deny-all" (de standaard) staat, worden permission requests bij Copilot::run() en Copilot::start() automatisch geweigerd.
Voor toepassingen die vooral tekst genereren zijn permissies vaak niet nodig, dus dit is een veilige standaard.
Mogelijke waarden
PermissionHandler::approveAll()
PermissionHandler::approveAll() staat alle requests automatisch toe.
PermissionHandler::approveSafety()
PermissionHandler::approveSafety() weigert alleen permissies met een hoog risico (shell, write) en staat de rest automatisch toe.
$request['kind'].
PermissionHandler::denyAll()
PermissionHandler::denyAll() weigert alles.
De Client direct gebruiken
Als jeCopilotClient direct gebruikt, is het opgeven van onPermissionRequest verplicht, net als in de officiële SDK.
Custom handler
Geef een closure door om toestaan of weigeren per requesttype te bepalen.$request en $invocation zijn arrays zoals hieronder.
$request
De velden buiten kind en toolCallId verschillen afhankelijk van kind.
$invocation
Response
Het resultaat van de permissiebeslissing retourneer je als array. Met de klassePermissionRequestResultKind wordt dit beter leesbaar.
Protocoldetails
In Protocol v3 (de huidige standaard) worden permission requests niet als JSON-RPC-requests maar als session-events (permission.requested) afgeleverd.
De SDK verwerkt dit intern en antwoordt via de RPC session.permissions.handlePendingPermissionRequest.
Het gebruik van SessionConfig verandert niet.
Als je een handler doorgeeft aan onPermissionRequest, vangt de SDK de protocolverschillen op.
PermissionRequestResultKind
Je kunt ook direct de vorm['kind' => 'approve-once'] retourneren, maar met PermissionRequestResultKind wordt het duidelijker.
Beschikbare methodes
Wil je
Laravel\Prompts\select gebruiken, dan kun je de opties ophalen met PermissionRequestResultKind::select().
no-result
Als de handler geen resultaat kan geven (bijvoorbeeld in een niet-interactieve omgeving), kun jeno-result retourneren.
Bij no-result wordt de RPC-aanroep overgeslagen en geldt de standaardweigering aan de kant van de Copilot CLI.
Raadpleeg de GitHub-repository voor de meest actuele informatie.