tasq/node_modules/@ruvector/ruvllm/dist/esm/native.js

72 lines
11 KiB
JavaScript

/**
* Native bindings loader for RuvLLM
*
* Automatically loads the correct native binary for the current platform.
*/
import { join } from 'path';
// Try to load the native module
let nativeModule = null;
// Platform-specific package names
const PLATFORM_PACKAGES = {
'darwin-x64': '@ruvector/ruvllm-darwin-x64',
'darwin-arm64': '@ruvector/ruvllm-darwin-arm64',
'linux-x64': '@ruvector/ruvllm-linux-x64-gnu',
'linux-arm64': '@ruvector/ruvllm-linux-arm64-gnu',
'win32-x64': '@ruvector/ruvllm-win32-x64-msvc',
};
function getPlatformKey() {
const platform = process.platform;
const arch = process.arch;
return `${platform}-${arch}`;
}
function loadNativeModule() {
if (nativeModule) {
return nativeModule;
}
const platformKey = getPlatformKey();
const packageName = PLATFORM_PACKAGES[platformKey];
if (!packageName) {
// Silently fail - JS fallback will be used
return null;
}
// Try loading from optional dependencies
const attempts = [
// Try the platform-specific package
() => require(packageName),
// Try loading from local .node file (CJS build)
() => require(join(__dirname, '..', '..', 'ruvllm.node')),
// Try loading from local .node file (root)
() => require(join(__dirname, '..', 'ruvllm.node')),
];
for (const attempt of attempts) {
try {
const raw = attempt();
// Normalize: native exports RuvLlmEngine, we expose as RuvLLMEngine
nativeModule = {
RuvLLMEngine: raw.RuvLLMEngine ?? raw.RuvLlmEngine,
SimdOperations: raw.SimdOperations,
version: raw.version,
hasSimdSupport: raw.hasSimdSupport,
};
return nativeModule;
}
catch {
// Continue to next attempt
}
}
// Silently fall back to JS implementation
return null;
}
// Export functions to get native bindings
export function getNativeModule() {
return loadNativeModule();
}
export function version() {
const mod = loadNativeModule();
return mod?.version() ?? '0.1.0-js';
}
export function hasSimdSupport() {
const mod = loadNativeModule();
return mod?.hasSimdSupport() ?? false;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QixnQ0FBZ0M7QUFDaEMsSUFBSSxZQUFZLEdBQXdCLElBQUksQ0FBQztBQThGN0Msa0NBQWtDO0FBQ2xDLE1BQU0saUJBQWlCLEdBQTJCO0lBQ2hELFlBQVksRUFBRSw2QkFBNkI7SUFDM0MsY0FBYyxFQUFFLCtCQUErQjtJQUMvQyxXQUFXLEVBQUUsZ0NBQWdDO0lBQzdDLGFBQWEsRUFBRSxrQ0FBa0M7SUFDakQsV0FBVyxFQUFFLGlDQUFpQztDQUMvQyxDQUFDO0FBRUYsU0FBUyxjQUFjO0lBQ3JCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDbEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUMxQixPQUFPLEdBQUcsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFFRCxTQUFTLGdCQUFnQjtJQUN2QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxjQUFjLEVBQUUsQ0FBQztJQUNyQyxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVuRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsMkNBQTJDO1FBQzNDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxNQUFNLFFBQVEsR0FBRztRQUNmLG9DQUFvQztRQUNwQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQzFCLGdEQUFnRDtRQUNoRCxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3pELDJDQUEyQztRQUMzQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDcEQsQ0FBQztJQUVGLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFxQixDQUFDO1lBQ3pDLG9FQUFvRTtZQUNwRSxZQUFZLEdBQUc7Z0JBQ2IsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDLFlBQWE7Z0JBQ25ELGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztnQkFDbEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO2dCQUNwQixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7YUFDbkMsQ0FBQztZQUNGLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwyQkFBMkI7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sZ0JBQWdCLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU87SUFDckIsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUMvQixPQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjO0lBQzVCLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDL0IsT0FBTyxHQUFHLEVBQUUsY0FBYyxFQUFFLElBQUksS0FBSyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE5hdGl2ZSBiaW5kaW5ncyBsb2FkZXIgZm9yIFJ1dkxMTVxuICpcbiAqIEF1dG9tYXRpY2FsbHkgbG9hZHMgdGhlIGNvcnJlY3QgbmF0aXZlIGJpbmFyeSBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0uXG4gKi9cblxuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuXG4vLyBUcnkgdG8gbG9hZCB0aGUgbmF0aXZlIG1vZHVsZVxubGV0IG5hdGl2ZU1vZHVsZTogTmF0aXZlUnV2TExNIHwgbnVsbCA9IG51bGw7XG5cbmludGVyZmFjZSBOYXRpdmVSdXZMTE0ge1xuICAvLyBOYXRpdmUgZXhwb3J0cyBSdXZMbG1FbmdpbmUgKGNhbWVsQ2FzZSksIHdlIG5vcm1hbGl6ZSB0byBSdXZMTE1FbmdpbmVcbiAgUnV2TExNRW5naW5lOiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xuICBTaW1kT3BlcmF0aW9uczogbmV3ICgpID0+IE5hdGl2ZVNpbWRPcHM7XG4gIHZlcnNpb246ICgpID0+IHN0cmluZztcbiAgaGFzU2ltZFN1cHBvcnQ6ICgpID0+IGJvb2xlYW47XG59XG5cbi8vIFJhdyBuYXRpdmUgbW9kdWxlIGludGVyZmFjZSAoYWN0dWFsIGV4cG9ydCBuYW1lcylcbmludGVyZmFjZSBSYXdOYXRpdmVNb2R1bGUge1xuICBSdXZMbG1FbmdpbmU/OiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xuICBSdXZMTE1FbmdpbmU/OiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xuICBTaW1kT3BlcmF0aW9uczogbmV3ICgpID0+IE5hdGl2ZVNpbWRPcHM7XG4gIHZlcnNpb246ICgpID0+IHN0cmluZztcbiAgaGFzU2ltZFN1cHBvcnQ6ICgpID0+IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBOYXRpdmVDb25maWcge1xuICBlbWJlZGRpbmdfZGltPzogbnVtYmVyO1xuICByb3V0ZXJfaGlkZGVuX2RpbT86IG51bWJlcjtcbiAgaG5zd19tPzogbnVtYmVyO1xuICBobnN3X2VmX2NvbnN0cnVjdGlvbj86IG51bWJlcjtcbiAgaG5zd19lZl9zZWFyY2g/OiBudW1iZXI7XG4gIGxlYXJuaW5nX2VuYWJsZWQ/OiBib29sZWFuO1xuICBxdWFsaXR5X3RocmVzaG9sZD86IG51bWJlcjtcbiAgZXdjX2xhbWJkYT86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZUVuZ2luZSB7XG4gIHF1ZXJ5KHRleHQ6IHN0cmluZywgY29uZmlnPzogTmF0aXZlR2VuQ29uZmlnKTogTmF0aXZlUXVlcnlSZXNwb25zZTtcbiAgZ2VuZXJhdGUocHJvbXB0OiBzdHJpbmcsIGNvbmZpZz86IE5hdGl2ZUdlbkNvbmZpZyk6IHN0cmluZztcbiAgcm91dGUodGV4dDogc3RyaW5nKTogTmF0aXZlUm91dGluZ0RlY2lzaW9uO1xuICBzZWFyY2hNZW1vcnkodGV4dDogc3RyaW5nLCBrPzogbnVtYmVyKTogTmF0aXZlTWVtb3J5UmVzdWx0W107XG4gIGFkZE1lbW9yeShjb250ZW50OiBzdHJpbmcsIG1ldGFkYXRhPzogc3RyaW5nKTogbnVtYmVyO1xuICBmZWVkYmFjayhyZXF1ZXN0SWQ6IHN0cmluZywgcmF0aW5nOiBudW1iZXIsIGNvcnJlY3Rpb24/OiBzdHJpbmcpOiBib29sZWFuO1xuICBzdGF0cygpOiBOYXRpdmVTdGF0cztcbiAgZm9yY2VMZWFybigpOiBzdHJpbmc7XG4gIGVtYmVkKHRleHQ6IHN0cmluZyk6IG51bWJlcltdO1xuICBzaW1pbGFyaXR5KHRleHQxOiBzdHJpbmcsIHRleHQyOiBzdHJpbmcpOiBudW1iZXI7XG4gIGhhc1NpbWQoKTogYm9vbGVhbjtcbiAgc2ltZENhcGFiaWxpdGllcygpOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZUdlbkNvbmZpZyB7XG4gIG1heF90b2tlbnM/OiBudW1iZXI7XG4gIHRlbXBlcmF0dXJlPzogbnVtYmVyO1xuICB0b3BfcD86IG51bWJlcjtcbiAgdG9wX2s/OiBudW1iZXI7XG4gIHJlcGV0aXRpb25fcGVuYWx0eT86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVF1ZXJ5UmVzcG9uc2Uge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbiAgbW9kZWw6IHN0cmluZztcbiAgY29udGV4dF9zaXplOiBudW1iZXI7XG4gIGxhdGVuY3lfbXM6IG51bWJlcjtcbiAgcmVxdWVzdF9pZDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTmF0aXZlUm91dGluZ0RlY2lzaW9uIHtcbiAgbW9kZWw6IHN0cmluZztcbiAgY29udGV4dF9zaXplOiBudW1iZXI7XG4gIHRlbXBlcmF0dXJlOiBudW1iZXI7XG4gIHRvcF9wOiBudW1iZXI7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZU1lbW9yeVJlc3VsdCB7XG4gIGlkOiBudW1iZXI7XG4gIHNjb3JlOiBudW1iZXI7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgbWV0YWRhdGE6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVN0YXRzIHtcbiAgdG90YWxfcXVlcmllczogbnVtYmVyO1xuICBtZW1vcnlfbm9kZXM6IG51bWJlcjtcbiAgdHJhaW5pbmdfc3RlcHM6IG51bWJlcjtcbiAgYXZnX2xhdGVuY3lfbXM6IG51bWJlcjtcbiAgdG90YWxfaW5zZXJ0aW9uczogbnVtYmVyO1xuICB0b3RhbF9zZWFyY2hlczogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgTmF0aXZlU2ltZE9wcyB7XG4gIGRvdFByb2R1Y3QoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKTogbnVtYmVyO1xuICBjb3NpbmVTaW1pbGFyaXR5KGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlcjtcbiAgbDJEaXN0YW5jZShhOiBudW1iZXJbXSwgYjogbnVtYmVyW10pOiBudW1iZXI7XG4gIG1hdHZlYyhtYXRyaXg6IG51bWJlcltdW10sIHZlY3RvcjogbnVtYmVyW10pOiBudW1iZXJbXTtcbiAgc29mdG1heChpbnB1dDogbnVtYmVyW10pOiBudW1iZXJbXTtcbn1cblxuLy8gUGxhdGZvcm0tc3BlY2lmaWMgcGFja2FnZSBuYW1lc1xuY29uc3QgUExBVEZPUk1fUEFDS0FHRVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdkYXJ3aW4teDY0JzogJ0BydXZlY3Rvci9ydXZsbG0tZGFyd2luLXg2NCcsXG4gICdkYXJ3aW4tYXJtNjQnOiAnQHJ1dmVjdG9yL3J1dmxsbS1kYXJ3aW4tYXJtNjQnLFxuICAnbGludXgteDY0JzogJ0BydXZlY3Rvci9ydXZsbG0tbGludXgteDY0LWdudScsXG4gICdsaW51eC1hcm02NCc6ICdAcnV2ZWN0b3IvcnV2bGxtLWxpbnV4LWFybTY0LWdudScsXG4gICd3aW4zMi14NjQnOiAnQHJ1dmVjdG9yL3J1dmxsbS13aW4zMi14NjQtbXN2YycsXG59O1xuXG5mdW5jdGlvbiBnZXRQbGF0Zm9ybUtleSgpOiBzdHJpbmcge1xuICBjb25zdCBwbGF0Zm9ybSA9IHByb2Nlc3MucGxhdGZvcm07XG4gIGNvbnN0IGFyY2ggPSBwcm9jZXNzLmFyY2g7XG4gIHJldHVybiBgJHtwbGF0Zm9ybX0tJHthcmNofWA7XG59XG5cbmZ1bmN0aW9uIGxvYWROYXRpdmVNb2R1bGUoKTogTmF0aXZlUnV2TExNIHwgbnVsbCB7XG4gIGlmIChuYXRpdmVNb2R1bGUpIHtcbiAgICByZXR1cm4gbmF0aXZlTW9kdWxlO1xuICB9XG5cbiAgY29uc3QgcGxhdGZvcm1LZXkgPSBnZXRQbGF0Zm9ybUtleSgpO1xuICBjb25zdCBwYWNrYWdlTmFtZSA9IFBMQVRGT1JNX1BBQ0tBR0VTW3BsYXRmb3JtS2V5XTtcblxuICBpZiAoIXBhY2thZ2VOYW1lKSB7XG4gICAgLy8gU2lsZW50bHkgZmFpbCAtIEpTIGZhbGxiYWNrIHdpbGwgYmUgdXNlZFxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gVHJ5IGxvYWRpbmcgZnJvbSBvcHRpb25hbCBkZXBlbmRlbmNpZXNcbiAgY29uc3QgYXR0ZW1wdHMgPSBbXG4gICAgLy8gVHJ5IHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBwYWNrYWdlXG4gICAgKCkgPT4gcmVxdWlyZShwYWNrYWdlTmFtZSksXG4gICAgLy8gVHJ5IGxvYWRpbmcgZnJvbSBsb2NhbCAubm9kZSBmaWxlIChDSlMgYnVpbGQpXG4gICAgKCkgPT4gcmVxdWlyZShqb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ3J1dmxsbS5ub2RlJykpLFxuICAgIC8vIFRyeSBsb2FkaW5nIGZyb20gbG9jYWwgLm5vZGUgZmlsZSAocm9vdClcbiAgICAoKSA9PiByZXF1aXJlKGpvaW4oX19kaXJuYW1lLCAnLi4nLCAncnV2bGxtLm5vZGUnKSksXG4gIF07XG5cbiAgZm9yIChjb25zdCBhdHRlbXB0IG9mIGF0dGVtcHRzKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhdyA9IGF0dGVtcHQoKSBhcyBSYXdOYXRpdmVNb2R1bGU7XG4gICAgICAvLyBOb3JtYWxpemU6IG5hdGl2ZSBleHBvcnRzIFJ1dkxsbUVuZ2luZSwgd2UgZXhwb3NlIGFzIFJ1dkxMTUVuZ2luZVxuICAgICAgbmF0aXZlTW9kdWxlID0ge1xuICAgICAgICBSdXZMTE1FbmdpbmU6IHJhdy5SdXZMTE1FbmdpbmUgPz8gcmF3LlJ1dkxsbUVuZ2luZSEsXG4gICAgICAgIFNpbWRPcGVyYXRpb25zOiByYXcuU2ltZE9wZXJhdGlvbnMsXG4gICAgICAgIHZlcnNpb246IHJhdy52ZXJzaW9uLFxuICAgICAgICBoYXNTaW1kU3VwcG9ydDogcmF3Lmhhc1NpbWRTdXBwb3J0LFxuICAgICAgfTtcbiAgICAgIHJldHVybiBuYXRpdmVNb2R1bGU7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBDb250aW51ZSB0byBuZXh0IGF0dGVtcHRcbiAgICB9XG4gIH1cblxuICAvLyBTaWxlbnRseSBmYWxsIGJhY2sgdG8gSlMgaW1wbGVtZW50YXRpb25cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8vIEV4cG9ydCBmdW5jdGlvbnMgdG8gZ2V0IG5hdGl2ZSBiaW5kaW5nc1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5hdGl2ZU1vZHVsZSgpOiBOYXRpdmVSdXZMTE0gfCBudWxsIHtcbiAgcmV0dXJuIGxvYWROYXRpdmVNb2R1bGUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcnNpb24oKTogc3RyaW5nIHtcbiAgY29uc3QgbW9kID0gbG9hZE5hdGl2ZU1vZHVsZSgpO1xuICByZXR1cm4gbW9kPy52ZXJzaW9uKCkgPz8gJzAuMS4wLWpzJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1NpbWRTdXBwb3J0KCk6IGJvb2xlYW4ge1xuICBjb25zdCBtb2QgPSBsb2FkTmF0aXZlTW9kdWxlKCk7XG4gIHJldHVybiBtb2Q/Lmhhc1NpbWRTdXBwb3J0KCkgPz8gZmFsc2U7XG59XG5cbi8vIEV4cG9ydCB0eXBlcyBmb3IgaW50ZXJuYWwgdXNlXG5leHBvcnQgdHlwZSB7XG4gIE5hdGl2ZVJ1dkxMTSxcbiAgTmF0aXZlQ29uZmlnLFxuICBOYXRpdmVFbmdpbmUsXG4gIE5hdGl2ZUdlbkNvbmZpZyxcbiAgTmF0aXZlUXVlcnlSZXNwb25zZSxcbiAgTmF0aXZlUm91dGluZ0RlY2lzaW9uLFxuICBOYXRpdmVNZW1vcnlSZXN1bHQsXG4gIE5hdGl2ZVN0YXRzLFxuICBOYXRpdmVTaW1kT3BzLFxufTtcbiJdfQ==