add permission support

refactoring
This commit is contained in:
milan
2026-04-07 17:53:32 +02:00
parent ee17e74753
commit 94811c5a89
8 changed files with 566 additions and 63 deletions
+12 -4
View File
@@ -1,9 +1,14 @@
mod config;
mod model;
use own_mcp::mcp::chat::{PermissionAnswer, ToolPermission};
use crate::config::Config;
use crate::model::create_model_from_config;
async fn permission_callback(mcp_server_name: String, tool_name:String) -> PermissionAnswer {
PermissionAnswer::Denied // TODO: implement
}
#[tokio::main]
async fn main() {
env_logger::init();
@@ -27,7 +32,8 @@ async fn main() {
let system_prompt = "Du bist ein Assistent, der per Sprache bedient wird. Du erhälst die Transkription. \
Wichtiger als deine Antworten sind deine Aktionen.\
Nutze bitte die tools, falls du sie brauchst um Informationen zu bekommen (z.B: über das aktuelle Datum oder den aktuellen Wochentag). \
Du bist in einem Agent Loop und kannst mehrere Tools hintereinander nutzen.".to_string();
Du bist in einem Agent Loop und kannst mehrere Tools hintereinander nutzen. \
Falls der Nutzer das Nutzen eines Tools ablehnt, sag ihm bescheid, dass du es brauchst.".to_string();
let mut agent_chat = own_mcp::AgentChat::new(ollama, model_name.clone(), mcp_clients, system_prompt).await.inspect_err(
|e| {
@@ -36,10 +42,12 @@ async fn main() {
}
).unwrap();
log::info!("all tools: {:#?}", agent_chat.get_all_tools());
log::info!("all tools: {:#?}", agent_chat.get_all_tools().collect::<Vec<_>>());
let answer = agent_chat.message("Welche Tools kannst du benutzten?".to_string()).await;
let answer = agent_chat.message("Teste beide Server aus. Nutze bei fetch https://example.com/. Melde mir die Ergebnisse zurück.".to_string()).await;
agent_chat.set_permission("mcp-playground-echo-server::echo".to_string(), ToolPermission::Allowed).unwrap();
let answer = agent_chat.message("Welche Tools kannst du benutzten?".to_string(), permission_callback).await;
let answer = agent_chat.message("Teste beide Server aus. Nutze bei fetch https://example.com/. Melde mir die Ergebnisse zurück.".to_string(), permission_callback).await;
dbg!(answer);
}