UNPKG

claude-flow-novice

Version:

Claude Flow Novice - Advanced orchestration platform for multi-agent AI workflows with CFN Loop architecture Includes CodeSearch (hybrid SQLite + pgvector), mem0/memgraph specialists, and all CFN skills.

327 lines (253 loc) 8.53 kB
# Transparency Middleware ## Overview The Transparency Middleware is a sophisticated agent interaction tracking system designed to capture, log, and analyze agent activities with comprehensive memory tracking and advanced security features. ## Key Features - **Memory Capture:** Comprehensive logging of agent interactions - **Security:** Built-in data anonymization and payload filtering - **Performance:** Low-overhead, high-throughput event tracking - **Flexibility:** Configurable capture and logging strategies - **SQLite Storage:** Persistent storage of all agent interactions - **Rust Implementation:** High-performance, memory-safe implementation ## Quick Start ### Installation As a Rust crate: ```bash # Add to your Cargo.toml transparency-middleware = "0.1.0" ``` Or build from source: ```bash cd .claude/skills/cfn-transparency-middleware cargo build --release ``` ### Basic Configuration Create a `config.json` in your project: ```json { "capture": { "edit_operations": true, "bash_commands": true, "task_spawning": true, "file_reads": false, "network_requests": false, "error_tracking": true }, "security": { "anonymize_sensitive_data": true, "max_payload_size_bytes": 10240, "exclude_patterns": [], "include_patterns": [], "redaction_patterns": ["password", "token", "secret", "key"] }, "events": { "emit_to_redis": false, "emit_to_sqlite": true, "emit_to_file": false, "batch_size": 100, "flush_interval_ms": 5000 }, "performance": { "max_overhead_percent": 5.0, "queue_size": 1000, "async_logging": true, "compression_enabled": false } } ``` ### Basic Usage (Rust) ```rust use transparency_middleware::{ TransparencyMiddleware, TransparencyConfig }; use anyhow::Result; #[tokio::main] async fn main() -> Result<()> { // Load configuration let config = TransparencyConfig::load_config("config.json")?; // Create middleware instance let mut middleware = TransparencyMiddleware::new( config, "my-agent-id".to_string() ); // Initialize with SQLite database middleware.initialize(Some("my_agent_log.db")).await?; // Set current task middleware.set_task_id("task-123".to_string()); // Capture an agent execution middleware.capture_agent_execution( "backend-dev", "Agent output here...", "task-123", Some(0.95) ).await?; // Capture tool usage use serde_json::json; middleware.capture_tool_usage( "edit", &json!({"file": "src/main.rs", "changes": "..."}), &json!({"success": true}) ).await?; // Cleanup middleware.cleanup().await?; Ok(()) } ``` ### CLI Usage Initialize transparency tracking: ```bash # Build the CLI first cd .claude/skills/cfn-transparency-middleware cargo build --release # Initialize tracking ./target/release/transparency-middleware init \ --agent-id my-agent \ --task-id task-123 \ --database transparency_log.db ``` Query stored interactions: ```bash # Query all entries for an agent ./target/release/transparency-middleware query \ --agent-id my-agent \ --json # Query with filters ./target/release/transparency-middleware query \ --agent-id my-agent \ --task-id task-123 \ --event-type tool_usage \ --limit 50 ``` Manually capture events: ```bash ./target/release/transparency-middleware capture \ --event-type error \ --agent-id my-agent \ --task-id task-123 \ --data '{"error": "Something went wrong", "context": "..."}' ``` ## Shell Scripts The skill includes several shell scripts for common operations: ### invoke-transparency-init.sh Initialize transparency middleware for a new agent session: ```bash ./.claude/skills/cfn-transparency-middleware/invoke-transparency-init.sh \ --level detailed \ --performance-monitoring yes \ --context-filtering yes \ --max-overhead 5 \ --task-id my-task-123 ``` ### invoke-transparency-observe.sh Monitor agent interactions in real-time: ```bash ./.claude/skills/cfn-transparency-middleware/invoke-transparency-observe.sh \ --agent-id my-agent \ --real-time yes ``` ### invoke-transparency-filter.sh Filter and analyze captured interactions: ```bash ./.claude/skills/cfn-transparency-middleware/invoke-transparency-filter.sh \ --agent-id my-agent \ --start-time "2024-01-01T00:00:00Z" \ --end-time "2024-01-02T00:00:00Z" \ --event-type tool_usage ``` ### invoke-transparency-metrics.sh Get performance and usage metrics: ```bash ./.claude/skills/cfn-transparency-middleware/invoke-transparency-metrics.sh \ --agent-id my-agent \ --output json ``` ### invoke-transparency-stop.sh Stop transparency tracking for a session: ```bash ./.claude/skills/cfn-transparency-middleware/invoke-transparency-stop.sh \ --agent-id my-agent \ --task-id my-task-123 \ --cleanup yes ``` ## API Reference ### TransparencyMiddleware The main struct for managing transparency tracking. #### Methods - `new(config: TransparencyConfig, agent_id: String) -> Self` - Create a new middleware instance - `load_config<P: Into<PathBuf>>(path: P) -> Result<TransparencyConfig>` - Load configuration from JSON file - `initialize(&mut self, database_path: Option<&str>) -> Result<()>` - Initialize database connections and other resources - `set_task_id(&mut self, task_id: String)` - Set the current task ID for tracking - `capture_agent_execution(...) -> Result<()>` - Capture an agent execution event - `capture_tool_usage(...) -> Result<()>` - Capture a tool usage event - `capture_error(...) -> Result<()>` - Capture an error event - `query(&self, query: MemoryQuery) -> Result<Vec<MemoryEntry>>` - Query stored entries - `get_metrics(&self) -> TransparencyMetrics` - Get performance metrics - `cleanup(&self) -> Result<()>` - Cleanup resources ### Configuration Options #### Capture Config - `edit_operations`: Track file edit operations - `bash_commands`: Track bash command executions - `task_spawning`: Track agent/task spawning - `file_reads`: Track file read operations - `network_requests`: Track network/API requests - `error_tracking`: Track error events #### Security Config - `anonymize_sensitive_data`: Enable data redaction - `max_payload_size_bytes`: Maximum size for stored payloads - `exclude_patterns`: Patterns to exclude from capture - `include_patterns`: Patterns to include (if specified, others excluded) - `redaction_patterns`: Patterns to redact from captured data #### Events Config - `emit_to_redis`: Enable Redis event emission - `emit_to_sqlite`: Enable SQLite storage - `emit_to_file`: Enable file-based logging - `batch_size`: Number of events to batch together - `flush_interval_ms`: Interval between flushes #### Performance Config - `max_overhead_percent`: Maximum allowed performance overhead - `queue_size`: Size of internal event queue - `async_logging`: Use asynchronous logging - `compression_enabled`: Enable data compression ## Testing Run the test suite: ```bash cd .claude/skills/cfn-transparency-middleware # Unit tests cargo test # Integration tests ./test-e2e.sh # Performance benchmarks ./performance-benchmark.sh ``` ## Security Considerations 1. **Data Redaction**: Sensitive data patterns are automatically redacted 2. **Size Limits**: Payloads are limited to prevent database bloat 3. **Access Control**: Database files should have appropriate permissions 4. **Encryption**: At-rest encryption recommended for sensitive deployments ## Performance - Target overhead: < 5% performance impact - Throughput: 10,000+ events/second - Storage: Efficient SQLite backend with indexes - Memory: Minimal memory footprint with async processing ## Troubleshooting ### Database Lock Issues Ensure only one middleware instance accesses a database file at a time. ### Performance Issues - Adjust `batch_size` and `flush_interval_ms` - Enable `compression_enabled` for large datasets - Use `async_logging` for high-throughput scenarios ### Missing Events - Check `capture` configuration - Verify `exclude_patterns` aren't too broad - Ensure agent IDs match exactly ## License MIT License - see LICENSE file for details.