UNPKG

mindstudio

Version:

Client library for MindStudio AI Workers

56 lines (55 loc) 2.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WorkerLoader = void 0; const manager_1 = require("../config/manager"); const nameFormatter_1 = require("../utils/nameFormatter"); const types_1 = require("./types"); class WorkerLoader { constructor(runFn) { this.runFn = runFn; this.configManager = new manager_1.ConfigManager(); } loadFromConfig() { try { const config = this.configManager.readConfig(); const workers = this.createWorkerWorkflows(config); return this.createWorkerFunctions(workers); } catch (error) { return undefined; } } createWorkerWorkflows(config) { return config.workers.map((worker) => new types_1.Worker(worker.id, worker.name, worker.slug, worker.workflows.map((workflow) => new types_1.Workflow(workflow.id, workflow.name, workflow.slug, workflow.launchVariables, workflow.outputVariables, worker)))); } createWorkerFunctions(workers) { return workers.reduce((acc, worker) => { acc[nameFormatter_1.EntityFormatter.formatWorker(worker)] = worker.workflows.reduce((workflowAcc, workflow) => { workflowAcc[nameFormatter_1.EntityFormatter.formatWorkflow(workflow)] = this.createWorkflowFunction(worker, workflow); return workflowAcc; }, {}); return acc; }, {}); } createWorkflowFunction(worker, workflow) { const fn = async (variables, options) => { return this.runFn({ workerId: worker.id, workflow: workflow.name, variables: variables || {}, ...options, }); }; fn.__info = { ...workflow, worker: { id: worker.id, name: worker.name, slug: worker.slug, }, }; return fn; } } exports.WorkerLoader = WorkerLoader;