singularity-forge/rust-engine/README.md
Mikael Hugo d73a73d7f3 chore: node 24 native APIs, import.meta.dirname, parsers rename, dep updates
- Replace fileURLToPath(import.meta.url) with import.meta.dirname across
  scripts and extensions
- Rename parsers-legacy.ts → parsers.ts
- Remove deleted plan/spec docs (cicd-pipeline)
- Update package.json engines and deps across workspace packages
- Update web/package-lock.json

💘 Generated with Crush

Assisted-by: GLM-5.1 via Crush <crush@charm.land>
2026-05-02 06:18:25 +02:00

4.4 KiB

SF Native Engine

Rust N-API addon providing high-performance native modules for SF.

Architecture

JS (packages/native) -> N-API -> Rust crates

rust-engine/crates/
├── engine/  (N-API bindings, cdylib — 20+ modules)
├── grep/    (ripgrep internals, pure Rust lib)
└── ast/     (ast-grep structural search)

Inspired by Oh My Pi's pi-natives, adapted for SF's Node.js runtime.

Prerequisites

Build

# Release build (optimized)
npm run build:native

# Debug build (fast compile, no optimizations)
npm run build:native:dev

The build script compiles the Rust code and copies the .node shared library to rust-engine/addon/.

Test

# Rust unit tests
cd native && cargo test

# Node.js integration tests
npm run test:native

Modules

ast

Structural code search via ast-grep. Provides pattern-based code matching that understands language syntax, enabling searches like "find all functions that return a Promise" rather than raw regex.

clipboard

Native clipboard access for reading and writing system clipboard contents.

diff

Fuzzy text matching and unified diff generation. Provides efficient comparison of text content with configurable matching thresholds.

fd

Fuzzy file path discovery. Locates files by partial name matching across the project tree.

fs_cache

Filesystem caching layer. Caches file metadata and contents to reduce redundant I/O during repeated operations.

git

Libgit2-backed git read operations. Provides fast, direct access to repository status, diffs, blame, and log without shelling out to the git CLI.

glob / glob_util

Gitignore-aware file discovery. Walks directory trees while respecting .gitignore rules, returning matching paths for a given glob pattern.

grep

Ripgrep-backed regex search using the grep-regex, grep-searcher, and grep-matcher crates.

Functions:

  • search(content, options) — Search in-memory Buffer/Uint8Array content
  • grep(options) — Search files on disk with glob filtering and .gitignore support

TypeScript usage:

import { grep, searchContent } from "@sf/native";

// Search files
const result = grep({
  pattern: "TODO",
  path: "./src",
  glob: "*.ts",
  ignoreCase: true,
  maxCount: 100,
});

// Search content
const contentResult = searchContent(Buffer.from(fileContent), {
  pattern: "function\\s+\\w+",
  contextBefore: 2,
  contextAfter: 2,
});

sf_parser

SF file parsing and frontmatter extraction. Reads .sf files and extracts structured metadata from YAML frontmatter blocks.

highlight

Syntect-based syntax highlighting. Tokenizes source code and produces highlighted output for terminal or HTML rendering.

html

HTML-to-Markdown conversion. Transforms HTML content into clean Markdown, useful for importing web content into SF notes and documents.

image

Image decoding, encoding, and resizing. Supports common formats (PNG, JPEG, WebP) and provides efficient thumbnail generation.

json_parse

JSON parsing utilities. Provides streaming and fault-tolerant JSON parsing for large or partially valid payloads.

ps

Cross-platform process tree management. Lists, inspects, and terminates process trees by PID, used for managing spawned subprocesses.

stream_process

Streaming process I/O. Spawns child processes with non-blocking, streamed access to stdout and stderr for real-time output handling.

task

Task-related native operations. Provides low-level primitives for task scheduling and execution within the native layer.

text

ANSI-aware text measurement and wrapping. Correctly measures visible width of strings containing ANSI escape codes and wraps text to terminal column widths.

truncate

Text truncation utilities. Truncates strings to a target length while preserving ANSI sequences and respecting grapheme boundaries.

ttsr

Tool-triggered system rules. Evaluates and applies system-level rules that activate in response to specific tool invocations.

xxhash

xxHash hashing. Provides fast, non-cryptographic hashing via the xxHash algorithm for content deduplication and cache keying.

Adding New Modules

  1. Create a new crate in rust-engine/crates/ (pure Rust library)
  2. Add N-API bindings in rust-engine/crates/engine/src/
  3. Add TypeScript wrapper in package./rust-engine/src/
  4. Add the crate to engine/Cargo.toml dependencies