UNPKG

naisys

Version:

NAISYS - Autonomous AI agent runner with built-in context management and cost tracking

65 lines 2.36 kB
import { getAllImageModels, getAllLlmModels } from "@naisys/common"; import { loadCustomModels } from "@naisys/common-node"; import { HubEvents, ModelsResponseSchema } from "@naisys/hub-protocol"; /** Provides model lookups, populated from hub (push) or disk (standalone) */ export function createModelService(hubClient) { let llmModels = []; let imageModels = []; let modelsReadyPromise; init(); function init() { if (hubClient) { let resolveModels; let rejectModels; modelsReadyPromise = new Promise((resolve, reject) => { resolveModels = resolve; rejectModels = reject; }); hubClient.registerEvent(HubEvents.MODELS_UPDATED, (data) => { try { const response = ModelsResponseSchema.parse(data); if (!response.success) { rejectModels(new Error(response.error || "Failed to get models from hub")); return; } llmModels = response.llmModels ?? []; imageModels = response.imageModels ?? []; resolveModels(); } catch (error) { rejectModels(error instanceof Error ? error : new Error(String(error))); } }); } else { // Standalone mode: load from disk const custom = loadCustomModels(process.env.NAISYS_FOLDER || ""); llmModels = getAllLlmModels(custom.llmModels); imageModels = getAllImageModels(custom.imageModels); modelsReadyPromise = Promise.resolve(); } } function waitForModels() { return modelsReadyPromise; } function getLlmModel(key) { const model = llmModels.find((m) => m.key === key); if (!model) { throw new Error(`LLM model not found: ${key}`); } return model; } function getImageModel(key) { const model = imageModels.find((m) => m.key === key); if (!model) { throw new Error(`Image model not found: ${key}`); } return model; } return { waitForModels, getLlmModel, getImageModel, }; } //# sourceMappingURL=modelService.js.map