/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. *--------------------------------------------------------------------------------------------*/ package com.github.copilot.sdk.json; import java.util.concurrent.CompletableFuture; /** * Functional interface for handling permission requests from the AI assistant. *
* When the assistant needs permission to perform certain actions (such as * executing tools or accessing resources), this handler is invoked to approve * or deny the request. * *
{@code
* PermissionHandler handler = (request, invocation) -> {
* // Check the permission kind
* if ("dangerous-action".equals(request.getKind())) {
* // Deny dangerous actions
* return CompletableFuture.completedFuture(new PermissionRequestResult().setKind("user-denied"));
* }
*
* // Approve other requests
* return CompletableFuture.completedFuture(new PermissionRequestResult().setKind("user-approved"));
* };
* }
*
* * A pre-built handler that approves all requests is available as * {@link #APPROVE_ALL}. * * @see SessionConfig#setOnPermissionRequest(PermissionHandler) * @see PermissionRequest * @see PermissionRequestResult * @since 1.0.0 */ @FunctionalInterface public interface PermissionHandler { /** * A pre-built handler that approves all permission requests. * * @since 1.0.11 */ PermissionHandler APPROVE_ALL = (request, invocation) -> CompletableFuture .completedFuture(new PermissionRequestResult().setKind(PermissionRequestResultKind.APPROVED)); /** * Handles a permission request from the assistant. *
* The handler should evaluate the request and return a result indicating
* whether the permission is granted or denied.
*
* @param request
* the permission request details
* @param invocation
* the invocation context with session information
* @return a future that completes with the permission decision
*/
CompletableFuture