145 lines
3.7 KiB
JavaScript
145 lines
3.7 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 './discord/ws-bootstrap.cjs';
|
|
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 discordCapMod from './capabilities/discord.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(discordCapMod.createDiscordPack(), 'discord (bare-discord-js)');
|
|
ids.push('discord');
|
|
} catch (err) {
|
|
logErr('discord 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/audiogen-ggml');
|
|
} catch (_) {}
|
|
try {
|
|
await import('@qvac/inference/audiogen-ggml/plugin');
|
|
} catch (_) {}
|
|
try {
|
|
await import('@qvac/diffusion-cpp');
|
|
} catch (_) {}
|
|
try {
|
|
await import('@qvac/inference/sdcpp-generation/plugin');
|
|
} catch (_) {}
|
|
try {
|
|
await import('@qvac/inference/models');
|
|
} catch (_) {}
|
|
try {
|
|
await import('bare-gpu-info');
|
|
} catch (_) {}
|
|
try {
|
|
await import('bare-ws');
|
|
} catch (_) {}
|
|
try {
|
|
await import('bare-tls');
|
|
} catch (_) {}
|
|
try {
|
|
await import('bare-https');
|
|
} catch (_) {}
|
|
try {
|
|
await import('bare-form-data');
|
|
} catch (_) {}
|
|
try {
|
|
await import('bare-crypto');
|
|
} catch (_) {}
|
|
try {
|
|
await import('bare-zlib');
|
|
} catch (_) {}
|
|
try {
|
|
await import('discord.js');
|
|
} catch (_) {}
|
|
}
|