Files
BridgeSwarm/native-host/register-default-packs.mjs
T
snxraven 75275d7d91
CI / Build & Test (push) Successful in 28m9s
Fixes
2026-09-02 17:20:58 -04:00

103 lines
2.8 KiB
JavaScript

/**
* Register capability packs that ship in the default host.
* Static imports so bare-pack always includes media / fs / sqlite / net in the graph.
*/
import * as bareMedia from 'bare-media';
import * as bareFfmpeg from 'bare-ffmpeg';
import registry from './capabilities/registry.js';
import mediaMod from './capabilities/media.js';
import fsMod from './capabilities/fs.js';
import sqliteMod from './capabilities/sqlite.js';
import netMod from './capabilities/net.js';
import qvacMod from './capabilities/qvac.js';
import agentMod from './capabilities/agent.js';
import { logErr } from './boot.mjs';
function loadPack(pack, label) {
registry.registerPack(pack);
if (typeof pack.onLoad === 'function') pack.onLoad();
logErr('capability pack registered: ' + label);
}
export function registerDefaultCapabilityPacks() {
const ids = [];
const media = mediaMod.createMediaPack(bareMedia, bareFfmpeg);
loadPack(media, 'media (live encode enabled)');
ids.push('media');
loadPack(fsMod.createFsPack(), 'fs (allowlisted files/)');
ids.push('fs');
try {
loadPack(sqliteMod.createSqlitePack(), 'sqlite');
ids.push('sqlite');
} catch (err) {
logErr('sqlite pack skipped: ' + (err && err.message));
}
try {
loadPack(netMod.createNetPack(), 'net (public http(s) only)');
ids.push('net');
} catch (err) {
logErr('net pack skipped: ' + (err && err.message));
}
try {
if (process.env.BRIDGE_SWARM_SKIP_QVAC === '1') {
logErr('qvac pack registering in skip mode (BRIDGE_SWARM_SKIP_QVAC=1)');
}
loadPack(qvacMod.createQvacPack(), 'qvac (local inference)');
ids.push('qvac');
} catch (err) {
logErr('qvac pack skipped: ' + (err && err.message));
}
try {
loadPack(agentMod.createAgentPack(), 'agent (grok-class harness)');
ids.push('agent');
} catch (err) {
logErr('agent pack skipped: ' + (err && err.message));
}
return ids;
}
/** Touch bundled modules so bare-pack + --extract-addons keep them in the host. */
export async function warmDefaultModules() {
// bare-fetch is a dep of bare-media; import explicitly for the default set.
try {
await import('bare-fetch');
} catch (_) {}
try {
await import('bare-sqlite');
} catch (_) {}
try {
await import('bare-ffmpeg');
} catch (_) {}
try {
await import('@qvac/fabric');
} catch (_) {}
try {
await import('@qvac/llm-llamacpp');
} catch (_) {}
try {
await import('@qvac/embed-llamacpp');
} catch (_) {}
try {
await import('@qvac/inference');
} catch (_) {}
try {
await import('@qvac/inference/plugins');
} catch (_) {}
try {
await import('@qvac/inference/llamacpp-completion/plugin');
} catch (_) {}
try {
await import('@qvac/inference/models');
} catch (_) {}
try {
await import('bare-gpu-info');
} catch (_) {}
}