UNPKG

langcode

Version:

A Plugin-Based Framework for Managing and Using LangChain

74 lines (63 loc) 2.43 kB
import chalk from "chalk"; import { plugins } from "../types/enums"; import { Plugin, PluginDescriptions } from "../types/plugins/plugin"; // Her plugin ayrı dosyada default export olacak şekilde tasarlandı export async function getPlugins(): Promise<PluginDescriptions[]> { const availablePlugins: PluginDescriptions[] = []; for (const pluginName of Object.values(plugins)) { try { const pluginModule = await import(`../plugins/${pluginName}/${pluginName}Plugin`); const pluginInstance: Plugin = new pluginModule.default(); const InitConfigExample = pluginInstance.InitConfigExample || {}; const RunConfigExample = pluginInstance.RunConfigExample || {}; availablePlugins.push({ name: pluginInstance.name, description: pluginInstance.description, type:pluginInstance.type, InitConfigExample, RunConfigExample }); } catch (err) { console.warn(`Plugin '${pluginName}' yüklenemedi:`, err); } } return availablePlugins; } export async function getPlugin(pluginName: plugins): Promise<PluginDescriptions | null> { try { const pluginModule = await import(`../plugins/${pluginName}/${pluginName}Plugin`); const pluginInstance: Plugin = new pluginModule.default(); const InitConfigExample = pluginInstance.InitConfigExample || {}; const RunConfigExample = pluginInstance.RunConfigExample || {}; return { name: pluginInstance.name, description: pluginInstance.description, type: pluginInstance.type, InitConfigExample, RunConfigExample }; } catch (err) { console.warn(`Plugin '${pluginName}' yüklenemedi:`, err); return null; } } export async function printPlugins() { const Allplugins:PluginDescriptions[] =await getPlugins() Allplugins.forEach((p, index) => { const border = chalk.gray("═".repeat(50)); console.log("\n" + border); console.log(chalk.bold.cyan(`🔌 Plugin: ${p.name}`)); console.log(chalk.gray("📄 Description:"), chalk.white(p.description)); console.log(chalk.gray("🧪 Example Config:")); console.log( JSON.stringify(p.InitConfigExample, null, 2) .split("\n") .map((line) => " " + chalk.green(line)) .join("\n") ); console.log(border); }); } function capitalize(str: string) { return str.charAt(0).toUpperCase() + str.slice(1); }