Merge commit 'd803bfe2b1fe7f5e219e50ac20d6801a0a58ac75' as 'vendor/ruvector'

This commit is contained in:
ruv
2026-02-28 14:39:40 -05:00
7854 changed files with 3522914 additions and 0 deletions

View File

View File

@@ -0,0 +1,2 @@
# Allow all files to be included in npm package
# (overrides .gitignore which blocks everything)

View File

@@ -0,0 +1,48 @@
/**
* Type declarations for the RVF Solver WASM module exports.
*/
export interface RvfSolverWasmExports {
memory: WebAssembly.Memory;
// Memory management
rvf_solver_alloc(size: number): number;
rvf_solver_free(ptr: number, size: number): void;
// Lifecycle
rvf_solver_create(): number;
rvf_solver_destroy(handle: number): number;
// Training
rvf_solver_train(
handle: number,
count: number,
min_diff: number,
max_diff: number,
seed_lo: number,
seed_hi: number,
): number;
// Acceptance testing
rvf_solver_acceptance(
handle: number,
holdout: number,
training: number,
cycles: number,
budget: number,
seed_lo: number,
seed_hi: number,
): number;
// Result reads
rvf_solver_result_len(handle: number): number;
rvf_solver_result_read(handle: number, out_ptr: number): number;
rvf_solver_policy_len(handle: number): number;
rvf_solver_policy_read(handle: number, out_ptr: number): number;
rvf_solver_witness_len(handle: number): number;
rvf_solver_witness_read(handle: number, out_ptr: number): number;
}
export default function init(
input?: ArrayBuffer | Uint8Array | WebAssembly.Module | string,
): Promise<RvfSolverWasmExports>;

View File

@@ -0,0 +1,62 @@
/**
* @ruvector/rvf-solver — JS glue for the RVF Solver WASM module.
*
* Loads the .wasm binary and re-exports all C-ABI functions plus the
* WASM linear memory object.
*
* Works in Node.js (CJS) and browsers (via bundler).
*/
'use strict';
var wasmInstance = null;
var _isNode = typeof process !== 'undefined' &&
typeof process.versions !== 'undefined' &&
typeof process.versions.node === 'string';
/**
* Initialize the WASM module.
* Returns the exports object with all rvf_solver_* functions and `memory`.
*
* @param {ArrayBuffer|BufferSource|WebAssembly.Module|string} [input]
* Optional pre-loaded bytes, Module, or file path override.
*/
async function init(input) {
if (wasmInstance) return wasmInstance;
var wasmBytes;
if (input instanceof ArrayBuffer || ArrayBuffer.isView(input)) {
wasmBytes = input;
} else if (typeof WebAssembly !== 'undefined' && input instanceof WebAssembly.Module) {
var inst = await WebAssembly.instantiate(input, {});
wasmInstance = inst.exports;
return wasmInstance;
} else if (_isNode) {
// Node.js: use fs.readFileSync with __dirname (CJS) or require.resolve fallback
var fs = require('node:fs');
var path = require('node:path');
var wasmPath;
if (typeof input === 'string') {
wasmPath = input;
} else {
// __dirname is always available in CJS (no import.meta needed)
wasmPath = path.join(__dirname, 'rvf_solver_bg.wasm');
}
wasmBytes = fs.readFileSync(wasmPath);
} else {
// Browser: caller must provide bytes or use a bundler that handles .wasm imports
throw new Error(
'rvf_solver: browser environment detected but no WASM bytes provided. ' +
'Pass an ArrayBuffer or WebAssembly.Module to init(), or use a bundler.'
);
}
var compiled = await WebAssembly.instantiate(wasmBytes, {});
wasmInstance = compiled.instance.exports;
return wasmInstance;
}
// CJS export
init.default = init;
module.exports = init;

Binary file not shown.