glass-browser 0.2.6

Local, revision-safe Chrome automation runtime for agents, with semantic observation, verified workflows, MCP, CLI, TUI, and Rust APIs
Documentation
use glass::{
    DraftEntity, DraftEntityKind, EXTRACTION_CONTRACT_SCHEMA_VERSION, EvidenceSource,
    ExtractionBudgets, ExtractionRequest, ExtractionScope, GlassWebIrDraft, TASK_COMPILE_OPERATION,
    TASK_VALIDATE_OPERATION, TaskValidationPayload, WEB_IR_CONTINUITY_OPERATION,
    WEB_IR_DIFF_OPERATION, WEB_IR_DRAFT_SCHEMA_VERSION, WEB_IR_INSPECT_OPERATION,
    WEB_IR_VALIDATE_OPERATION, WebIrContinuityPayload, WebIrContinuityResult, WebIrDiffPayload,
    WebIrDiffResult, WebIrDraftPayload, WebIrInspectionResult, WebIrValidationResult,
};

#[test]
fn crate_root_exposes_experimental_extraction_and_web_ir_contracts() {
    let request = ExtractionRequest {
        schema_version: EXTRACTION_CONTRACT_SCHEMA_VERSION,
        scope: ExtractionScope::Document,
        sources: vec![EvidenceSource::Dom, EvidenceSource::Accessibility],
        budgets: ExtractionBudgets::default(),
    };
    request.validate().unwrap();

    let entity = DraftEntity {
        id: "field-1".into(),
        kind: DraftEntityKind::Field,
        role: Some("textbox".into()),
        name: Some("Email".into()),
        quality: glass::EvidenceQuality::Confirmed,
        evidence_sources: vec![EvidenceSource::Dom],
    };
    assert_eq!(
        entity.semantic_identity_key().as_deref(),
        Some("field|textbox|email")
    );

    let _draft_type: Option<GlassWebIrDraft> = None;
    let _inspection_type: Option<WebIrInspectionResult> = None;
    let _validation_type: Option<WebIrValidationResult> = None;
    let _diff_type: Option<WebIrDiffResult> = None;
    let _diff_payload_type: Option<WebIrDiffPayload> = None;
    let _continuity_payload_type: Option<WebIrContinuityPayload> = None;
    let _draft_payload_type: Option<WebIrDraftPayload> = None;
    assert_eq!(WEB_IR_INSPECT_OPERATION, "webIr.inspect");
    assert_eq!(WEB_IR_VALIDATE_OPERATION, "webIr.validate");
    assert_eq!(WEB_IR_DIFF_OPERATION, "webIr.diff");
    assert_eq!(WEB_IR_CONTINUITY_OPERATION, "webIr.continuity");
    let _continuity_type: Option<WebIrContinuityResult> = None;
    assert_eq!(WEB_IR_DRAFT_SCHEMA_VERSION, 1);
    let _task_validation_payload_type: Option<TaskValidationPayload> = None;
    assert_eq!(TASK_COMPILE_OPERATION, "task.compile");
    assert_eq!(TASK_VALIDATE_OPERATION, "task.validate");
}