singularity-forge/native
2026-04-17 17:26:59 +00:00
..
.cargo feat: Rust native engine scaffold with grep module 2026-03-13 12:21:09 -06:00
crates Rename GSD→SF: complete rebrand from fork origin 2026-04-15 18:33:47 +02:00
npm release: v2.75.0 2026-04-17 17:26:59 +00:00
scripts Rename GSD→SF: complete rebrand from fork origin 2026-04-15 18:33:47 +02:00
.gitignore feat: Rust native engine scaffold with grep module 2026-03-13 12:21:09 -06:00
.npmignore fix: include darwin-arm64 native binary in npm tarball (Phase A hotfix) 2026-03-13 14:33:37 -06:00
Cargo.lock chore: update Cargo.lock after native build 2026-04-15 15:43:27 +02:00
Cargo.toml Rename GSD→SF: complete rebrand from fork origin 2026-04-15 18:33:47 +02:00
README.md Rename GSD→SF: complete rebrand from fork origin 2026-04-15 18:33:47 +02:00

SF Native Engine

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

Architecture

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

native/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 native/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 native/crates/ (pure Rust library)
  2. Add N-API bindings in native/crates/engine/src/
  3. Add TypeScript wrapper in packages/native/src/
  4. Add the crate to engine/Cargo.toml dependencies