feat: start use tool permission confirmation struct (#2044)

This commit is contained in:
Yingjie He
2025-04-04 16:39:04 -07:00
committed by GitHub
parent bfed33c5a4
commit 890f266e7b
12 changed files with 88 additions and 29 deletions
+18 -2
View File
@@ -8,10 +8,14 @@ use axum::{
};
use bytes::Bytes;
use futures::{stream::StreamExt, Stream};
use goose::session;
use goose::{
agents::SessionConfig,
message::{Message, MessageContent},
permission::permission_confirmation::PrincipalType,
};
use goose::{
permission::{Permission, PermissionConfirmation},
session,
};
use mcp_core::{role::Role, Content, ToolResult};
use serde::{Deserialize, Serialize};
@@ -385,8 +389,20 @@ async fn confirm_handler(
let agent = state.agent.clone();
let agent = agent.read().await;
let agent = agent.as_ref().ok_or(StatusCode::NOT_FOUND)?;
let permission = if request.confirmed {
Permission::AllowOnce
} else {
Permission::DenyOnce
};
agent
.handle_confirmation(request.id.clone(), request.confirmed)
.handle_confirmation(
request.id.clone(),
PermissionConfirmation {
principal_name: "tool_name_placeholder".to_string(),
principal_type: PrincipalType::Tool,
permission,
},
)
.await;
Ok(Json(Value::Object(serde_json::Map::new())))
}