bob-adapters 0.1.1

Adapter implementations for Bob Agent Framework ports
Documentation

bob-adapters

crates.io docs.rs License

Adapter implementations for the Bob Agent Framework ports.

Overview

bob-adapters provides concrete implementations of the port traits defined in bob-core:

  • LLM Adapters: Connect to language models via various providers
  • Tool Adapters: Integrate with external tools and MCP servers
  • Storage Adapters: Persist session state
  • Runtime Extension Adapters: Checkpoints, artifacts, and cost metering
  • Runtime Guardrail Adapters: Tool policy and approval adapters
  • Observability Adapters: Log and monitor agent events

Features

All adapters are feature-gated to minimize dependencies:

  • llm-genai (default): LLM adapter using the genai crate
  • mcp-rmcp (default): Tool adapter for MCP servers via rmcp
  • skills-agent (default): Skill loading and composition via agent-skills
  • store-memory (default): In-memory session storage
  • observe-tracing (default): Event sink using tracing

Usage

Add this to your Cargo.toml:

[dependencies]
bob-adapters = "0.1"

To disable default features and select specific adapters:

[dependencies.bob-adapters]
version = "0.1"
default-features = false
features = ["llm-genai", "mcp-rmcp"]

Example: Creating Adapters

use bob_adapters::{
    llm_genai::GenAiLlmAdapter,
    mcp_rmcp::McpToolAdapter,
    store_memory::InMemorySessionStore,
    observe::TracingEventSink,
};
use genai::Client;

// LLM adapter
let client = Client::default();
let llm = GenAiLlmAdapter::new(client);

// Tool adapter (MCP server)
let tools = McpToolAdapter::connect_stdio(
    "filesystem",
    "npx",
    &["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
    &[], // environment variables
).await?;

// Session store
let store = InMemorySessionStore::new();

// Event sink
let events = TracingEventSink::new();

Example: Using Skills

use bob_adapters::skills_agent::{SkillPromptComposer, SkillSourceConfig};

let sources = vec![SkillSourceConfig {
    path: "./skills".into(),
    recursive: true,
}];

let composer = SkillPromptComposer::from_sources(&sources, 3)?;
let rendered = composer.render_bundle_for_input("write a test");

Adapters

LLM Adapters (llm-genai)

Connects to LLM providers through the genai crate, supporting:

  • OpenAI (GPT-4, GPT-4o-mini, etc.)
  • Anthropic (Claude)
  • Google (Gemini)
  • Groq
  • And more...

Tool Adapters (mcp-rmcp)

Connects to MCP (Model Context Protocol) servers:

  • Filesystem operations
  • Shell commands
  • Database queries
  • Custom tools

Storage Adapters (store-memory)

In-memory session storage for development and testing:

  • Fast in-process storage
  • No external dependencies
  • Suitable for single-instance deployments

Runtime Extension Adapters

  • checkpoint_memory::InMemoryCheckpointStore: per-session turn checkpoints
  • artifact_memory::InMemoryArtifactStore: per-session tool-result artifacts
  • cost_simple::SimpleCostMeter: optional per-session token budget enforcement

Runtime Guardrail Adapters

  • policy_static::StaticToolPolicyPort: merges runtime/request allow/deny lists
  • approval_static::StaticApprovalPort: supports allow_all or deny_all plus tool denylist

Observability (observe-tracing)

Event sink using the tracing ecosystem:

  • Structured logging
  • Integration with observability tools
  • Configurable log levels

Documentation

Full API documentation is available at docs.rs/bob-adapters.

Related Crates

License

Licensed under the Apache License, Version 2.0. See LICENSE for details.