/** * 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/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 (_) {} }