narrative-graph 0.1.2

Turn prose into candidate relational facts — entity detection, relation labeling, confidence scoring, entirely local.
Documentation
name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

env:
  CARGO_TERM_COLOR: always

permissions:
  contents: read

jobs:
  check:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

    - name: Install Rust
      uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable
      with:
        components: clippy, rustfmt

    - name: Cache cargo
      uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
      with:
        path: |
          ~/.cargo/registry
          ~/.cargo/git
          target
        key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}

    - name: Format Check
      run: cargo fmt -- --check

    - name: Lint (Clippy)
      run: cargo clippy --all-targets --all-features -- -D warnings

    - name: Run Tests
      run: cargo test --all-features --verbose

  msrv:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
    - uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable
      with:
        toolchain: '1.77'
    - run: cargo check

  # The default build is dependency-free by design. Fail if anything but the
  # crate itself appears in the default dependency graph.
  dependency-free:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
    - uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable
    - name: Assert no default dependencies
      run: |
        set -euo pipefail
        deps=$(cargo tree --edges normal --prefix none | sed '/^$/d' | tail -n +2)
        if [ -n "$deps" ]; then
          echo "Default build gained dependencies:"
          echo "$deps"
          exit 1
        fi
        echo "Default build is dependency-free."

  build-napi:
    runs-on: ubuntu-latest
    needs: check
    steps:
    - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

    - name: Install Rust
      uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable

    - name: Install Node.js
      uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6
      with:
        node-version: '20'

    - name: Install dependencies
      run: npm ci --omit=optional

    - name: Build Release
      run: npm run build

    - name: Run Node tests
      run: npm test

    - name: Check TypeScript types
      run: npm run test:types