Expand description
ZAP server implementation
Cap’n Proto RPC server for AI agent communication.
§Example
ⓘ
use zap::{Server, Config};
use zap::server::{ToolHandler, ResourceHandler, PromptHandler, ToolDef};
use std::collections::HashMap;
use std::sync::Arc;
struct MyToolHandler;
impl ToolHandler for MyToolHandler {
fn list(&self) -> std::pin::Pin<Box<dyn std::future::Future<Output = Vec<ToolDef>> + Send + '_>> {
Box::pin(async {
vec![ToolDef {
name: "echo".into(),
description: "Echo input".into(),
schema: b"{}".to_vec(),
annotations: HashMap::new(),
}]
})
}
fn call(
&self,
_name: &str,
args: &[u8],
_metadata: HashMap<String, String>,
) -> std::pin::Pin<Box<dyn std::future::Future<Output = Result<Vec<u8>, String>> + Send + '_>> {
let args = args.to_vec();
Box::pin(async move { Ok(args) })
}
}
#[tokio::main]
async fn main() -> zap::Result<()> {
let mut server = Server::new(Config::default());
server.set_tool_handler(Arc::new(MyToolHandler));
server.run().await
}Structs§
- Noop
Prompt Handler - Default no-op prompt handler
- Noop
Resource Handler - Default no-op resource handler
- Noop
Tool Handler - Default no-op tool handler
- Prompt
Argument - Prompt argument
- Prompt
Def - Prompt definition
- Prompt
Message - Prompt message
- Resource
Content Def - Resource content with metadata
- Resource
Def - Resource definition
- Server
- ZAP Server
- Server
Info Def - Server info
- ToolDef
- Tool definition
- Tracing
LogHandler - Default log handler (uses tracing)
Enums§
- LogLevel
- Log level
- Prompt
Content - Prompt content
- Prompt
Role - Prompt role
- Resource
Content Data - Resource content
Traits§
- LogHandler
- Log handler trait
- Prompt
Handler - Prompt handler trait
- Resource
Handler - Resource handler trait
- Tool
Handler - Tool handler trait