lcsa-core 0.1.0

Local context substrate for AI-native software - typed signals for clipboard, selection, and focus
Documentation
use std::time::Duration;

use lcsa_core::{Capability, ContextApi, PermissionRequest, Scope, SignalType};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut api = ContextApi::new()?;

    api.subscribe(SignalType::Clipboard, |signal| {
        println!(
            "clipboard changed: type={:?}, bytes={}, source={}, sensitive={}, command={}",
            signal.content_type,
            signal.size_bytes,
            signal.source_app,
            signal.likely_sensitive,
            signal.likely_command
        );
    })?;

    api.request_permission(
        PermissionRequest::new(
            Capability::ReadClipboardContent,
            Scope::Session,
            "Show how explicit content access works in the example",
        )
        .with_ttl(Duration::from_secs(300)),
    )?;

    if let Ok(content) = api.read_clipboard_content() {
        println!("initial clipboard preview: {}", content.redacted_preview());
    }

    println!("Monitoring clipboard changes. Press Ctrl+C to exit.");
    api.run_with_signals()?;
    Ok(())
}