invariant-core 0.1.0

Multi-language semantic code analysis library — tree-sitter fact extraction for DataGrout Prism
Documentation

Invariant Core - Semantic code analysis library

Fast, multi-language structural code analysis using tree-sitter for parsing. Extracts Prolog-compatible facts from source code and uploads them to DataGrout Prism for server-side semantic enrichment and querying.

Architecture

  • Parser: Tree-sitter based multi-language AST extraction
  • Analyzer: Extracts structural facts (functions, modules, imports, calls)
  • Facts: Prolog-compatible fact generation and formatting
  • Bridge: Conduit SDK client for DataGrout Prism integration

Example

use invariant_core::{Analyzer, Language};

fn main() -> anyhow::Result<()> {
    let mut analyzer = Analyzer::new()?;

    let code = r#"
        def calculate_total(items):
            return sum(item.price for item in items)
    "#;

    let result = analyzer.lens_code(code, Language::Python, "calc.py", "abc123")?;

    println!("Extracted {} facts", result.facts.len());
    Ok(())
}